VNC: First few lines of initialization code

This commit is contained in:
Gregory Nutt 2016-04-16 13:06:39 -06:00
parent e793ee2be5
commit 9b42bf65f0
3 changed files with 79 additions and 0 deletions

View File

@ -49,4 +49,8 @@ config VNCSERVER_KBDENCODE
Use a special encoding of keyboard characters as defined in
include/nuttx/input/kbd_coded.h.
config VNCSERVER_IOBUFFER_SIZE
int "I/O buffer size
default 80
endif # VNCSERVER

View File

@ -47,6 +47,16 @@
#include "vnc_server.h"
/****************************************************************************
* Private Data
****************************************************************************/
#if defined(CONFIG_VNCSERVER_PROTO3p3)
static const char g_vncproto[] = RFB_PROTOCOL_VERSION_3p3;
#elif defined(CONFIG_VNCSERVER_PROTO3p8)
static const char g_vncproto[] = RFB_PROTOCOL_VERSION_3p8;
#endif
/****************************************************************************
* Private Functions
****************************************************************************/
@ -93,13 +103,60 @@ static void nvc_xyz(FAR struct vnc_session_s *session)
#ifdef CONFIG_VNCSERVER_PROTO3p3
int vnc_negotiate(FAR struct vnc_session_s *session)
{
ssize_t nrecvd;
size_t len;
int errcode;
/* Inform the client of the VNC protocol */
len = strlen(g_vncproto);
nrecvd = psock_send(&session->connect, g_vncproto, len, 0);
if (nrecvd < 0)
{
goto errout_with_errno;
}
nrecvd = psock_recv(&session->connect, session->iobuf, len, 0);
if (nrecvd <= 0)
{
goto errout_with_errno;
}
/* Tell the client that we won't use any stinkin' security */
return OK;
errout_with_errno:
errcode = get_errno();
errout_with_errcode:
DEBUGASSERT(errcode > 0);
return -errcode;
}
#endif
#ifdef CONFIG_VNCSERVER_PROTO3p8
int vnc_negotiate(FAR struct vnc_session_s *session)
{
ssize_t nbytes;
/* Inform the client of the VNC protocol */
len = strlen(g_vncproto);
nrecvd = psock_send(&session->connect, g_vncproto, len, 0);
if (nrecvd < 0)
{
goto errout_with_errno;
}
nrecvd = psock_recv(&session->connect, session->iobuf, len, 0);
if (nrecvd <= 0)
{
goto errout_with_errno;
}
/* Offer the client a choice of security -- where None is the only option. */
return OK;
}
#endif

View File

@ -75,12 +75,26 @@
# define CONFIG_VNCSERVER_STACKSIZE 2048
#endif
#ifndef CONFIG_VNCSERVER_IOBUFFER_SIZE
# define CONFIG_VNCSERVER_IOBUFFER_SIZE 80
#endif
/* RFB Port Number */
#define RFB_PORT_BASE 5900
#define RFB_MAX_DISPLAYS CONFIG_VNCSERVER_NDISPLAYS
#define RFB_DISPLAY_PORT(d) (RFB_PORT_BASE + (d))
/* Miscellaneous */
#ifndef MIN
# define MIN(a,b) (((a) < (b)) ? (a) : (b))
#endif
#ifndef MAX
# define MAX(a,b) (((a) > (b)) ? (a) : (b))
#endif
/****************************************************************************
* Public Types
****************************************************************************/
@ -115,6 +129,10 @@ struct vnc_session_s
uint8_t bpp; /* Bits per pixel */
struct nxgl_size_s screen; /* Size of the screen in pixels x rows */
FAR uint8_t *fb; /* Allocated local frame buffer */
/* I/O buffer for misc network send/receive */
uint8_t iobuf[CONFIG_VNCSERVER_IOBUFFER_SIZE];
};
/****************************************************************************