From e793ee2be51837651e8553a4b1df114eb76831ac Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sat, 16 Apr 2016 12:50:23 -0600 Subject: [PATCH] Add framework to support framebuffer/security negotiation --- graphics/vnc/server/Kconfig | 13 ++++ graphics/vnc/server/Make.defs | 2 +- graphics/vnc/server/vnc_negotiate.c | 105 ++++++++++++++++++++++++++++ graphics/vnc/server/vnc_server.h | 9 +++ 4 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 graphics/vnc/server/vnc_negotiate.c diff --git a/graphics/vnc/server/Kconfig b/graphics/vnc/server/Kconfig index 02fba2b63a..35b2953d8a 100644 --- a/graphics/vnc/server/Kconfig +++ b/graphics/vnc/server/Kconfig @@ -12,6 +12,19 @@ menuconfig VNCSERVER if VNCSERVER +choice + prompt "VNC server protocol" + default VNCSERVER_PROTO3p3 + +config VNCSERVER_PROTO3p3 + bool "Version 3.3" + +config VNCSERVER_PROTO3p3 + bool "Version 3.8" + depends on EXPERIMENTAL + +endchoice # VNC server protocol + config VNCSERVER_NDISPLAYS int "Number of displays" default 1 diff --git a/graphics/vnc/server/Make.defs b/graphics/vnc/server/Make.defs index 830e840c44..4e86bfeda1 100644 --- a/graphics/vnc/server/Make.defs +++ b/graphics/vnc/server/Make.defs @@ -35,7 +35,7 @@ ifeq ($(CONFIG_VNCSERVER),y) -CSRCS += vnc_server.c vnc_session.c vnc_fbdev.c +CSRCS += vnc_server.c vnc_session.c vnc_negotiate.c vnc_fbdev.c ifeq ($(CONFIG_NX_KBD),y) CSRCS += vnc_keymap.c diff --git a/graphics/vnc/server/vnc_negotiate.c b/graphics/vnc/server/vnc_negotiate.c new file mode 100644 index 0000000000..8f11218549 --- /dev/null +++ b/graphics/vnc/server/vnc_negotiate.c @@ -0,0 +1,105 @@ +/**************************************************************************** + * graphics/vnc/vnc_negotiate.c + * + * Copyright (C) 2016 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include + +#include "vnc_server.h" + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nvc_xyz + * + * Description: + * [Re-]initialize a VNC session + * + * Input Parameters: + * session - the VNC session to be initialized + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void nvc_xyz(FAR struct vnc_session_s *session) +{ +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: vnc_negotiate + * + * Description: + * Perform the VNC initialize sequency after a client has sucessfully + * connected to the server. Negotiate security, framebuffer and color + * properties. + * + * Input Parameters: + * session - An instance of the session structure allocated by + * vnc_create_session(). + * + * Returned Value: + * Returns zero (OK) on success; a negated errno value on failure. + * + ****************************************************************************/ + +#ifdef CONFIG_VNCSERVER_PROTO3p3 +int vnc_negotiate(FAR struct vnc_session_s *session) +{ + return OK; +} +#endif + +#ifdef CONFIG_VNCSERVER_PROTO3p8 +int vnc_negotiate(FAR struct vnc_session_s *session) +{ + return OK; +} +#endif diff --git a/graphics/vnc/server/vnc_server.h b/graphics/vnc/server/vnc_server.h index e2bf4c40fc..79012d5d6b 100644 --- a/graphics/vnc/server/vnc_server.h +++ b/graphics/vnc/server/vnc_server.h @@ -52,8 +52,17 @@ /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ + /* Configuration */ +#if !defined(CONFIG_VNCSERVER_PROTO3p3) && !defined(CONFIG_VNCSERVER_PROTO3p8) +# error No VNC protocol selected +#endif + +#if defined(CONFIG_VNCSERVER_PROTO3p3) && defined(CONFIG_VNCSERVER_PROTO3p8) +# error Too many VNC protocols selected +#endif + #ifndef CONFIG_VNCSERVER_NDISPLAYS # define CONFIG_VNCSERVER_NDISPLAYS 1 #endif