| # |
| # For a description of the syntax of this configuration file, |
| # see the file kconfig-language.txt in the NuttX tools repository. |
| # |
| |
| menuconfig VNCSERVER |
| bool "VNC server" |
| default n |
| depends on NET_TCP |
| select FB_UPDATE |
| ---help--- |
| Enable support for a VNC Remote Frame Buffer (RFB) server. |
| |
| if VNCSERVER |
| |
| choice |
| prompt "VNC server protocol" |
| default VNCSERVER_PROTO3p8 |
| |
| config VNCSERVER_PROTO3p3 |
| bool "Version 3.3" |
| depends on EXPERIMENTAL |
| |
| config VNCSERVER_PROTO3p8 |
| bool "Version 3.8" |
| |
| endchoice # VNC server protocol |
| |
| config VNCSERVER_NDISPLAYS |
| int "Number of displays" |
| default 1 |
| range 1 99 |
| ---help--- |
| Specifies the number of RFB displays supported by the server. |
| Normally this should be one. |
| |
| config VNCSERVER_NAME |
| string "VNC display name" |
| default "NuttX" |
| |
| config VNCSERVER_PRIO |
| int "VNC server task priority" |
| default 100 |
| |
| config VNCSERVER_STACKSIZE |
| int "VNC server stack size" |
| default DEFAULT_TASK_STACKSIZE |
| |
| config VNCSERVER_UPDATER_PRIO |
| int "VNC updater thread priority" |
| default 100 |
| |
| config VNCSERVER_UPDATER_STACKSIZE |
| int "VNC updater thread stack size" |
| default DEFAULT_TASK_STACKSIZE |
| |
| choice |
| prompt "VNC color format" |
| default VNCSERVER_COLORFMT_RGB16 |
| |
| config VNCSERVER_COLORFMT_RGB8 |
| bool "RGB8 3:3:2" |
| |
| config VNCSERVER_COLORFMT_RGB16 |
| bool "RGB16 5:6:5" |
| |
| config VNCSERVER_COLORFMT_RGB32 |
| bool "RGB32 8:8:8" |
| |
| endchoice # VNC color format |
| |
| config VNCSERVER_SCREENWIDTH |
| int "Framebuffer width (pixels)" |
| default 320 |
| ---help--- |
| This setting defines the width in pixels of the local framebuffer. |
| |
| Memory usage: PixelWidth * ScreenWidth * ScreenHeight |
| |
| So, for example, a 320x240 screen with RGB16 pixels would require |
| 2x320x240 = 150 KB of RAM. |
| |
| config VNCSERVER_SCREENHEIGHT |
| int "Framebuffer height (rows)" |
| default 240 |
| ---help--- |
| This setting defines the height in rows of the local framebuffer. |
| |
| Memory usage: PixelWidth * ScreenWidth * ScreenHeight |
| |
| So, for example, a 320x240 screen with RGB16 pixels would require |
| 2x320x240 = 150 KB of RAM. |
| |
| config VNCSERVER_NUPDATES |
| int "Number of pre-allocate update structures" |
| default 48 |
| ---help--- |
| This setting provides the number of pre-allocated update structures |
| that will be used. Dynamic memory allocations are never made. In |
| the likely event that we run out of update structures, the graphics |
| subsystem will pause and wait for the next structures to be released. |
| |
| Overhead is 12-bytes per update structure. |
| |
| config VNCSERVER_UPDATE_BUFSIZE |
| int "Max update buffer size (bytes)" |
| default 1024 |
| ---help--- |
| A single buffer is pre-allocated for rendering updates. This |
| setting specifies the maximum in bytes of that update buffer. For |
| example, an update buffers of 32 pixels at 8-bits per pixel and |
| 32-rows would yield a buffer size of 1024! |
| |
| There is a very strong interaction with this setting and the network MTU. |
| Ideally, this buffer should fit in one network packet to avoid accessive |
| re-assembly of partial TCP packets. |
| |
| REVISIT: In fact, if the buffer does not fit in one network packet, |
| then there appears to be reliability issues in the connection. I am |
| not sure why that is; TCP is a stream so it should not matter how |
| many packets are in a transfer. |
| |
| Example: Negotiated pixel depth = 8 BPP, window width = 800 pixels. |
| CONFIG_VNCSERVER_UPDATE_BUFSIZE needs to be the payload size (MSS) |
| of the transfer or 800 bytes. The MTU is then: |
| |
| MSS = MTU - sizeof(IP Header) - sizeof(VNC FramebufferUpdate Header) |
| |
| For IPv4, the IP Header is 20 bytes; 40 bytes for IPv6. The |
| FramebufferUpdate header is 16 bytes so. The desired MSS is 800 bytes |
| so MTU = 836 or 856. For Ethernet, this is a total packet size of 870 |
| bytes. |
| |
| config VNCSERVER_KBDENCODE |
| bool "Encode keyboard input" |
| default n |
| depends on LIBC_KBDCODEC |
| ---help--- |
| Use a special encoding of keyboard characters as defined in |
| include/nuttx/input/kbd_codec.h. |
| |
| config VNCSERVER_TOUCH |
| bool "Enable touch input" |
| default n |
| select INPUT |
| select INPUT_TOUCHSCREEN |
| ---help--- |
| Use touchscreen based input driver |
| |
| config VNCSERVER_TOUCH_DEVNAME |
| string "Touch input device name prefix" |
| default "/dev/input" |
| depends on VNCSERVER_TOUCH |
| ---help--- |
| Touch device name prefix, final devi name is /dev/inputX by default, |
| X is display number |
| |
| config VNCSERVER_KBD |
| bool "Enable keyboard input" |
| default n |
| select INPUT |
| select INPUT_KEYBOARD |
| ---help--- |
| Use keyboard based input driver |
| |
| config VNCSERVER_KBD_DEVNAME |
| string "Keyboard input device name prefix" |
| default "/dev/kbd" |
| depends on VNCSERVER_KBD |
| ---help--- |
| Keyboard device name prefix, final devi name is /dev/kbdX by default, |
| X is display number |
| |
| config VNCSERVER_INBUFFER_SIZE |
| int "Input buffer size" |
| default 80 |
| |
| config VNCSERVER_DEBUG |
| bool "VNC Server debug" |
| default n |
| depends on DEBUG_FEATURES && !DEBUG_GRAPHICS |
| ---help--- |
| Normally VNC debug output is selected with DEBUG_GRAPHICS. The |
| VNC server support this special option to enable GRAPHICS debug |
| output for the VNC server while GRAPHICS debug is disabled. This |
| provides an cleaner, less cluttered output when you only wish to |
| debug the VNC server versus enabling DEBUG_GRAPHICS globally. |
| |
| config VNCSERVER_UPDATE_DEBUG |
| bool "Detailed updater debug" |
| default n |
| depends on DEBUG_GRAPHICS || VNCSERVER_DEBUG |
| |
| endif # VNCSERVER |