163 lines
4.5 KiB
Plaintext
163 lines
4.5 KiB
Plaintext
#
|
|
# 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 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 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
|