# # 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 && !NX_LCDDRIVER select NX_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 LIB_KBDCODEC ---help--- Use a special encoding of keyboard characters as defined in include/nuttx/input/kbd_coded.h. 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