Kconfig 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. #
  2. # For a description of the syntax of this configuration file,
  3. # see the file kconfig-language.txt in the NuttX tools repository.
  4. #
  5. menuconfig VNCSERVER
  6. bool "VNC server"
  7. default n
  8. depends on NET_TCP && !NX_LCDDRIVER
  9. select NET_TCP_READAHEAD
  10. select NX_UPDATE
  11. ---help---
  12. Enable support for a VNC Remote Frame Buffer (RFB) server.
  13. if VNCSERVER
  14. choice
  15. prompt "VNC server protocol"
  16. default VNCSERVER_PROTO3p8
  17. config VNCSERVER_PROTO3p3
  18. bool "Version 3.3"
  19. depends on EXPERIMENTAL
  20. config VNCSERVER_PROTO3p8
  21. bool "Version 3.8"
  22. endchoice # VNC server protocol
  23. config VNCSERVER_NDISPLAYS
  24. int "Number of displays"
  25. default 1
  26. range 1 99
  27. ---help---
  28. Specifies the number of RFB displays supported by the server.
  29. Normally this should be one.
  30. config VNCSERVER_NAME
  31. string "VNC display name"
  32. default "NuttX"
  33. config VNCSERVER_PRIO
  34. int "VNC server task priority"
  35. default 100
  36. config VNCSERVER_STACKSIZE
  37. int "VNC server stack size"
  38. default 2048
  39. config VNCSERVER_UPDATER_PRIO
  40. int "VNC updater thread priority"
  41. default 100
  42. config VNCSERVER_UPDATER_STACKSIZE
  43. int "VNC updater thread stack size"
  44. default 2048
  45. choice
  46. prompt "VNC color format"
  47. default VNCSERVER_COLORFMT_RGB16
  48. config VNCSERVER_COLORFMT_RGB8
  49. bool "RGB8 3:3:2"
  50. config VNCSERVER_COLORFMT_RGB16
  51. bool "RGB16 5:6:5"
  52. config VNCSERVER_COLORFMT_RGB32
  53. bool "RGB32 8:8:8"
  54. endchoice # VNC color format
  55. config VNCSERVER_SCREENWIDTH
  56. int "Framebuffer width (pixels)"
  57. default 320
  58. ---help---
  59. This setting defines the width in pixels of the local framebuffer.
  60. Memory usage: PixelWidth * ScreenWidth * ScreenHeight
  61. So, for example, a 320x240 screen with RGB16 pixels would require
  62. 2x320x240 = 150 KB of RAM.
  63. config VNCSERVER_SCREENHEIGHT
  64. int "Framebuffer height (rows)"
  65. default 240
  66. ---help---
  67. This setting defines the height in rows of the local framebuffer.
  68. Memory usage: PixelWidth * ScreenWidth * ScreenHeight
  69. So, for example, a 320x240 screen with RGB16 pixels would require
  70. 2x320x240 = 150 KB of RAM.
  71. config VNCSERVER_NUPDATES
  72. int "Number of pre-allocate update structures"
  73. default 48
  74. ---help---
  75. This setting provides the number of pre-allocated update structures
  76. that will be used. Dynamic memory allocations are never made. In
  77. the likely event that we run out of update structures, the graphics
  78. subsystem will pause and wait for the next structures to be released.
  79. Overhead is 12-bytes per update structure.
  80. config VNCSERVER_UPDATE_BUFSIZE
  81. int "Max update buffer size (bytes)"
  82. default 1024
  83. ---help---
  84. A single buffer is pre-allocated for rendering updates. This
  85. setting specifies the maximum in bytes of that update buffer. For
  86. example, an update buffers of 32 pixels at 8-bits per pixel and
  87. 32-rows would yield a buffer size of 1024!
  88. There is a very strong interaction with this setting and the network MTU.
  89. Ideally, this buffer should fit in one network packet to avoid accessive
  90. re-assembly of partial TCP packets.
  91. REVISIT: In fact, if the buffer does not fit in one network packet,
  92. then there appears to be reliability issues in the connection. I am
  93. not sure why that is; TCP is a stream so it should not matter how
  94. many packets are in a transfer.
  95. Example: Negotiated pixel depth = 8 BPP, window width = 800 pixels.
  96. CONFIG_VNCSERVER_UPDATE_BUFSIZE needs to be the payload size (MSS)
  97. of the transfer or 800 bytes. The MTU is then:
  98. MSS = MTU - sizeof(IP Header) - sizeof(VNC FramebufferUpdate Header)
  99. For IPv4, the IP Header is 20 bytes; 40 bytes for IPv6. The
  100. FramebufferUpdate header is 16 bytes so. The desired MSS is 800 bytes
  101. so MTU = 836 or 856. For Ethernet, this is a total packet size of 870
  102. bytes.
  103. config VNCSERVER_KBDENCODE
  104. bool "Encode keyboard input"
  105. default n
  106. depends on LIB_KBDCODEC
  107. ---help---
  108. Use a special encoding of keyboard characters as defined in
  109. include/nuttx/input/kbd_coded.h.
  110. config VNCSERVER_INBUFFER_SIZE
  111. int "Input buffer size"
  112. default 80
  113. config VNCSERVER_DEBUG
  114. bool "VNC Server debug"
  115. default n
  116. depends on DEBUG_FEATURES && !DEBUG_GRAPHICS
  117. ---help---
  118. Normally VNC debug output is selected with DEBUG_GRAPHICS. The VNC
  119. server server support this special option to enable GRAPHICS debug
  120. output for the VNC server while GRAPHICS debug is disabled. This
  121. provides an cleaner, less cluttered output when you only wish to
  122. debug the VNC server versus enabling DEBUG_GRAPHICS globally.
  123. config VNCSERVER_UPDATE_DEBUG
  124. bool "Detailed updater debug"
  125. default n
  126. depends on DEBUG_GRAPHICS || VNCSERVER_DEBUG
  127. endif # VNCSERVER