aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2013-11-13 22:56:13 +1000
committerinmarket <andrewh@inmarket.com.au>2013-11-13 22:56:13 +1000
commit6ab135a6e546b45b60cf442c9ad3af8ae4622364 (patch)
treef159150123b8a0fb3c08d1e0ca99eb9e5f7e9935 /drivers
parente1721a922627830e42618e1dd30db8cd418059cc (diff)
downloaduGFX-6ab135a6e546b45b60cf442c9ad3af8ae4622364.tar.gz
uGFX-6ab135a6e546b45b60cf442c9ad3af8ae4622364.tar.bz2
uGFX-6ab135a6e546b45b60cf442c9ad3af8ae4622364.zip
uGFXnet driver: Initialise the sockets layer correctly under Win32
Added a KILL command that can be send from the display to the device.
Diffstat (limited to 'drivers')
-rw-r--r--drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c b/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c
index 96bb6d8d..3f9ad8e8 100644
--- a/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c
+++ b/drivers/multiple/uGFXnet/gdisp_lld_uGFXnet.c
@@ -33,6 +33,17 @@
#if defined(WIN32) || GFX_USE_OS_WIN32
#include <winsock.h>
+
+ static void StopSockets(void) {
+ WSACleanup();
+ }
+ static void StartSockets(void) {
+ WSADATA wsaData;
+ if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
+ gfxHalt("GDISP: uGFXnet - WSAStartup failed");
+ atexit(StopSockets);
+ }
+
#else
#include <sys/types.h>
#include <sys/socket.h>
@@ -42,6 +53,7 @@
#define closesocket(fd) close(fd)
#define ioctlsocket(fd,cmd,arg) ioctl(fd,cmd,arg)
+ #define StartSockets()
#ifndef SOCKET
#define SOCKET int
#endif
@@ -72,6 +84,7 @@
#define GNETCODE_MOUSE_X 0x0007 // This is only ever received - never sent. Response is 0x0007,x
#define GNETCODE_MOUSE_Y 0x0008 // This is only ever received - never sent. Response is 0x0008,y
#define GNETCODE_MOUSE_B 0x0009 // This is only ever received - never sent. Response is 0x0009,buttons
+#define GNETCODE_KILL 0xFFFE // This is only ever received - never sent. Response is 0xFFFE,retcode
#define GNETCODE_VERSION 0x0100 // V1.0
@@ -88,7 +101,7 @@ typedef struct netPriv {
static gfxThreadHandle hThread;
static GDisplay * mouseDisplay;
-static DECLARE_THREAD_STACK(waNetThread, 256);
+static DECLARE_THREAD_STACK(waNetThread, 512);
static DECLARE_THREAD_FUNCTION(NetThread, param) {
SOCKET listenfd, fdmax, i, clientfd;
int len;
@@ -100,6 +113,9 @@ static DECLARE_THREAD_FUNCTION(NetThread, param) {
netPriv * priv;
(void)param;
+ // Start the sockets layer
+ StartSockets();
+
/* clear the master and temp sets */
FD_ZERO(&master);
FD_ZERO(&read_fds);
@@ -237,6 +253,10 @@ static DECLARE_THREAD_FUNCTION(NetThread, param) {
priv->databytes = 0;
g->flags |= GDISP_FLG_HAVEDATA;
break;
+ case GNETCODE_KILL:
+ gfxHalt("GDISP: uGFXnet - Display sent KILL command");
+ break;
+
default:
// Just ignore unrecognised data
break;