diff -r 45647136ec95 -r 3cc32f97410c components/vnc_server/vnc-server.c --- a/components/vnc_server/vnc-server.c Mon Oct 29 12:16:37 2018 +0100 +++ b/components/vnc_server/vnc-server.c Mon Oct 29 19:37:14 2018 +0100 @@ -33,46 +33,46 @@ static const char *TAG = "vnc-server"; -#define BACKLOG 5 /* Number of pending connections queue will hold */ -#define MESSAGE_BUFFER_SIZE 60 /* Was 50, but I have seen 52 bytes length */ -#define TILE_SIZE 16 -#define TRUE_COLOUR_FLAG 1 /* True colour is set */ -#define BIG_ENDIAN_FLAG 1 /* Always send colour data big endian */ +#define BACKLOG 5 ///< Number of pending connections queue will hold +#define MESSAGE_BUFFER_SIZE 60 ///< Was 50, but I have seen 52 bytes length +#define TILE_SIZE 16 ///< Tile dimension +#define TRUE_COLOUR_FLAG 1 ///< True colour is set +#define BIG_ENDIAN_FLAG 1 ///< Always send colour data big endian /* Default display parameters */ -#define BITS_PER_PIXEL 8 /* Bits per pixel */ -#define PIXEL_DEPTH 8 /* Usefull bits per pixel */ -#define RED_MAX 7 -#define GREEN_MAX 7 -#define BLUE_MAX 3 -#define RED_SHIFT 5 -#define GREEN_SHIFT 2 -#define BLUE_SHIFT 0 +#define BITS_PER_PIXEL 8 ///< Bits per pixel +#define PIXEL_DEPTH 8 ///< Usefull bits per pixel +#define RED_MAX 7 ///< Red maximum +#define GREEN_MAX 7 ///< Green maximum +#define BLUE_MAX 3 ///< Blue maximum, together 8 bits. +#define RED_SHIFT 5 ///< Red shift in color byte +#define GREEN_SHIFT 2 ///< Green shift in color byte +#define BLUE_SHIFT 0 ///< Blue shift in color byte /* Initial default RGB332 */ -uint8_t Bits_Per_Pixel = 8; +uint8_t Bits_Per_Pixel = 8; ///< Current number of bits per pixel -uint16_t Red_Max = RED_MAX; -uint16_t Green_Max = GREEN_MAX; -uint16_t Blue_Max = BLUE_MAX; -uint8_t Red_Shift = RED_SHIFT; -uint8_t Green_Shift = GREEN_SHIFT; -uint8_t Blue_Shift = BLUE_SHIFT; -bool AltPixels = false; +uint16_t Red_Max = RED_MAX; ///< Current Red maxmimum +uint16_t Green_Max = GREEN_MAX; ///< Current Green maximum +uint16_t Blue_Max = BLUE_MAX; ///< Current Blue maximum +uint8_t Red_Shift = RED_SHIFT; ///< Current Red bits shift +uint8_t Green_Shift = GREEN_SHIFT; ///< Current Green bits shift +uint8_t Blue_Shift = BLUE_SHIFT; ///< Current Blue bits shift +bool AltPixels = false; ///< Alternate the pixels /* Client to Server message types */ -#define SET_PIXEL_FORMAT 0 -#define FIX_COLOUR_MAP_ENTRIES 1 -#define SET_ENCODINGS 2 -#define FRAME_BUFFER_UPDATE_REQ 3 -#define KEY_EVENT 4 -#define POINTER_EVENT 5 -#define CLIENT_CUT_TEXT 6 +#define SET_PIXEL_FORMAT 0 ///< Set pixel format +#define FIX_COLOUR_MAP_ENTRIES 1 ///< Fix color map entries (not used) +#define SET_ENCODINGS 2 ///< Set encodings +#define FRAME_BUFFER_UPDATE_REQ 3 ///< Request frame buffer update +#define KEY_EVENT 4 ///< Keyboard event (not used) +#define POINTER_EVENT 5 ///< Pointer event, translated to touch events +#define CLIENT_CUT_TEXT 6 ///< Text editing, not used. /* Macros to split colour to bytes */ -#define COLOUR2BYTE1(col) ((col>>8)&0xFF) -#define COLOUR2BYTE0(col) (col&0xFF) +#define COLOUR2BYTE1(col) ((col>>8)&0xFF) ///< High part +#define COLOUR2BYTE0(col) (col&0xFF) ///< Low part /* Thread function prototypes */ @@ -94,23 +94,27 @@ }; -uint8_t VNC_pointer_button = 0; -uint16_t VNC_pointer_x = 0; -uint16_t VNC_pointer_y = 0; +uint8_t VNC_pointer_button = 0; ///< Button mask for the mouse pointer +uint16_t VNC_pointer_x = 0; ///< Mouse position X +uint16_t VNC_pointer_y = 0; ///< Mouse position Y /* Define size of each thread's stack */ -#define MIN_STACK_SIZE 3072 +#define MIN_STACK_SIZE 3072 ///< Minimal task stack size -/* Messages */ -char server_ProtocolVersion[] = "RFB 003.003\n"; -char bad_protocol[] = "Unsupported ProtocolVersion"; -char server_busy[] = "Server is Busy"; -char sound_bell[] = "\2"; -char desktop_name[] = "MBSE BrewBoard"; // Hardcoded, don't change or the VNC webclient breaks. +/** + * @brief Messages + */ +static char server_ProtocolVersion[] = "RFB 003.003\n"; +static char bad_protocol[] = "Unsupported ProtocolVersion"; +static char server_busy[] = "Server is Busy"; +static char sound_bell[] = "\2"; +static char desktop_name[] = "MBSE BrewBoard"; // Hardcoded, don't change or the VNC webclient breaks. -/* Frame Buffer */ +/** + * @brief Frame Buffer + */ vnc_color_t frame_buffer[CONFIG_VNC_SERVER_FRAME_HEIGHT+1][CONFIG_VNC_SERVER_FRAME_WIDTH+1]; /* Calculate the number of tiles in the X and Y directions */ @@ -118,37 +122,36 @@ #define NUM_TILES_Y_AXIS (CONFIG_VNC_SERVER_FRAME_HEIGHT/TILE_SIZE + 1) #define LAST_TILE_HEIGHT (CONFIG_VNC_SERVER_FRAME_HEIGHT % TILE_SIZE) #else -#define NUM_TILES_Y_AXIS (CONFIG_VNC_SERVER_FRAME_HEIGHT/TILE_SIZE) -#define LAST_TILE_HEIGHT TILE_SIZE +#define NUM_TILES_Y_AXIS (CONFIG_VNC_SERVER_FRAME_HEIGHT/TILE_SIZE) ///< Nr of tiles on the Y axis. +#define LAST_TILE_HEIGHT TILE_SIZE ///< Height of the last tile. #endif #if (CONFIG_VNC_SERVER_FRAME_WIDTH % TILE_SIZE) != 0 #define NUM_TILES_X_AXIS (CONFIG_VNC_SERVER_FRAME_WIDTH/TILE_SIZE + 1) #define LAST_TILE_WIDTH (CONFIG_VNC_SERVER_FRAME_WIDTH % TILE_SIZE) #else -#define NUM_TILES_X_AXIS (CONFIG_VNC_SERVER_FRAME_WIDTH/TILE_SIZE) -#define LAST_TILE_WIDTH TILE_SIZE +#define NUM_TILES_X_AXIS (CONFIG_VNC_SERVER_FRAME_WIDTH/TILE_SIZE) ///< Nr of tiles on the X axis. +#define LAST_TILE_WIDTH TILE_SIZE ///< Width of the last tile. #endif -/* Array for marking tiles that have been updated */ +/** + * @brief Array for marking tiles that have been updated + */ int tile_updated[NUM_TILES_Y_AXIS+1][NUM_TILES_X_AXIS+1]; -/* Conditional variable to signal that a client is connected and initialised */ -EventGroupHandle_t xEventGroupVNC; -const int VNC_CLIENT_UPDATE_REQ = BIT0; -int vnc_client_sock = -1; -bool vnc_client_connected = false; - -/* Variable for sounding the client's bell */ -int SoundBellCount; - -/* Variables for the Websocket client */ -bool VNC_WS_run = false; -int VNC_WS_num = -1; +EventGroupHandle_t xEventGroupVNC; ///< Variable to signal that a client is connected and initialised +const int VNC_CLIENT_UPDATE_REQ = BIT0; ///< Client update request event +int vnc_client_sock = -1; ///< Client network socket +bool vnc_client_connected = false; ///< Client connected? +int SoundBellCount; ///< Count the client's bell +bool VNC_WS_run = false; ///< Websocket running +int VNC_WS_num = -1; ///< Websocket connection number -/* Variable to hold the frame format details */ +/** + * @brief Variable to hold the frame format details + */ vnc_frame_format_t frame_format = {CONFIG_VNC_SERVER_FRAME_WIDTH, CONFIG_VNC_SERVER_FRAME_HEIGHT, frame_buffer, 1, // RGB332 server native. 0, // RGB555 @@ -177,7 +180,9 @@ #endif -/* Structure to hold the encoding type details */ +/** + * @brief Structure to hold the encoding type details + */ volatile struct encoding_type_struct { uint8_t raw;