From 58f6aa17ff1c83c5d0e4ced79c6610b0342e3c30 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sun, 30 Aug 2009 09:43:10 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1141 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/ports/GCC/Win32/simcom.c | 227 ------------------------------------ os/ports/GCC/Win32/simio.c | 201 ------------------------------- 2 files changed, 428 deletions(-) delete mode 100644 os/ports/GCC/Win32/simcom.c delete mode 100644 os/ports/GCC/Win32/simio.c diff --git a/os/ports/GCC/Win32/simcom.c b/os/ports/GCC/Win32/simcom.c deleted file mode 100644 index 1b676b1f7..000000000 --- a/os/ports/GCC/Win32/simcom.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. - - This file is part of ChibiOS/RT. - - ChibiOS/RT is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/RT is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * Win32 COM port simulator (on socket). - */ - -#include - -#include -#include - -#undef CDECL - -#include - -#define COM1PORT 29001 -#define COM2PORT 29002 - -struct simcom { - - uint8_t com_ib[1024]; - uint8_t com_ob[1024]; - SOCKET com_listen; - SOCKET com_data; -}; - -FullDuplexDriver COM1; -static struct simcom sc1; -FullDuplexDriver COM2; -static struct simcom sc2; -static u_long nb = 1; - -static void init(char *name, FullDuplexDriver *sd, - struct simcom *sc, unsigned short port) { - struct sockaddr_in sad; - struct protoent *prtp; - - chFDDInit(sd, - sc->com_ib, sizeof(sc->com_ib), NULL, - sc->com_ob, sizeof(sc->com_ob), NULL); - - sc->com_listen = INVALID_SOCKET; - sc->com_data = INVALID_SOCKET; - - if ((prtp = getprotobyname("tcp")) == NULL) { - printf("%s: Error mapping protocol name to protocol number\n", name); - goto abort; - } - - sc->com_listen = socket(PF_INET, SOCK_STREAM, prtp->p_proto); - if (sc->com_listen == INVALID_SOCKET) { - printf("%s: Error creating simulator socket\n", name); - goto abort; - } - - if (ioctlsocket(sc->com_listen, FIONBIO, &nb) != 0) { - printf("%s: Unable to setup non blocking mode on socket\n", name); - goto abort; - } - - memset(&sad, 0, sizeof(sad)); - sad.sin_family = AF_INET; - sad.sin_addr.s_addr = INADDR_ANY; - sad.sin_port = htons(port); - if (bind(sc->com_listen, (struct sockaddr *)&sad, sizeof(sad))) { - printf("%s: Error binding socket\n", name); - goto abort; - } - - if (listen(sc->com_listen, 1) != 0) { - printf("%s: Error binding socket\n", name); - goto abort; - } - printf("Full Duplex Channel %s listening on port %d\n", name, port); - return; - -abort: - if (sc->com_listen != INVALID_SOCKET) - closesocket(sc->com_listen); - WSACleanup(); - exit(1); -} - -void InitSimCom1(void) { - - init("COM1", &COM1, &sc1, COM1PORT); -} - -void InitSimCom2(void) { - - init("COM2", &COM2, &sc2, COM2PORT); -} - -static bool_t connint(char *name, FullDuplexDriver *sd, struct simcom *sc) { - - if (sc->com_data == INVALID_SOCKET) { - struct sockaddr addr; - int addrlen = sizeof(addr); - - if ((sc->com_data = accept(sc->com_listen, &addr, &addrlen)) == INVALID_SOCKET) - return FALSE; - - if (ioctlsocket(sc->com_data, FIONBIO, &nb) != 0) { - printf("%s: Unable to setup non blocking mode on data socket\n", name); - goto abort; - } - chFDDAddFlagsI(sd, SD_CONNECTED); - return TRUE; - } - return FALSE; -abort: - if (sc->com_listen != INVALID_SOCKET) - closesocket(sc->com_listen); - if (sc->com_data != INVALID_SOCKET) - closesocket(sc->com_data); - WSACleanup(); - exit(1); -} - -bool_t Com1ConnInterruptSimCom(void) { - - return connint("COM1", &COM1, &sc1); -} - -bool_t Com2ConnInterruptSimCom(void) { - - return connint("COM2", &COM2, &sc2); -} - -static bool_t inint(char *name, FullDuplexDriver *sd, struct simcom *sc) { - - if (sc->com_data != INVALID_SOCKET) { - int i; - uint8_t data[32]; - - /* - * Input. - */ - int n = recv(sc->com_data, data, sizeof(data), 0); - switch (n) { - case 0: - closesocket(sc->com_data); - sc->com_data = INVALID_SOCKET; - chFDDAddFlagsI(sd, SD_DISCONNECTED); - return FALSE; - case SOCKET_ERROR: - if (WSAGetLastError() == WSAEWOULDBLOCK) - return FALSE; - closesocket(sc->com_data); - sc->com_data = INVALID_SOCKET; - return FALSE; - } - for (i = 0; i < n; i++) - chFDDIncomingDataI(sd, data[i]); - return TRUE; - } - return FALSE; -} - -bool_t Com1InInterruptSimCom(void) { - - return inint("COM1", &COM1, &sc1); -} - -bool_t Com2InInterruptSimCom(void) { - - return inint("COM2", &COM2, &sc2); -} - -static bool_t outint(char *name, FullDuplexDriver *sd, struct simcom *sc) { - - if (sc->com_data != INVALID_SOCKET) { - int n; - uint8_t data[1]; - - /* - * Input. - */ - n = chFDDRequestDataI(sd); - if (n < 0) - return FALSE; - data[0] = (uint8_t)n; - n = send(sc->com_data, data, sizeof(data), 0); - switch (n) { - case 0: - closesocket(sc->com_data); - sc->com_data = INVALID_SOCKET; - chFDDAddFlagsI(sd, SD_DISCONNECTED); - return FALSE; - case SOCKET_ERROR: - if (WSAGetLastError() == WSAEWOULDBLOCK) - return FALSE; - closesocket(sc->com_data); - sc->com_data = INVALID_SOCKET; - return FALSE; - } - return TRUE; - } - return FALSE; -} - -bool_t Com1OutInterruptSimCom(void) { - - return outint("COM1", &COM1, &sc1); -} - -bool_t Com2OutInterruptSimCom(void) { - - return outint("COM2", &COM2, &sc2); -} diff --git a/os/ports/GCC/Win32/simio.c b/os/ports/GCC/Win32/simio.c deleted file mode 100644 index 7d72194c0..000000000 --- a/os/ports/GCC/Win32/simio.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. - - This file is part of ChibiOS/RT. - - ChibiOS/RT is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/RT is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * Win32 ISO7816 port simulator (on socket). - */ - -#include - -#include -#include - -#undef CDECL - -#include - -#define ISO7816PORT1 29021 - -typedef struct { - - BYTE8 io_b[16]; - SOCKET io_listen; - SOCKET io_data; -} sim7816; - -HalfDuplexDriver ISO1; -static sim7816 sim1; -static u_long nb = 1; - -static void init(char *name, HalfDuplexDriver *sd, sim7816 *simp, unsigned short port) { - - struct sockaddr_in sad; - struct protoent *prtp; - - chHDDInit(sd, simp->io_b, sizeof(simp->io_b), NULL, NULL); - - simp->io_listen = INVALID_SOCKET; - simp->io_data = INVALID_SOCKET; - - if ((prtp = getprotobyname("tcp")) == NULL) { - printf("%s: Error mapping protocol name to protocol number\n", name); - goto abort; - } - - simp->io_listen = socket(PF_INET, SOCK_STREAM, prtp->p_proto); - if (simp->io_listen == INVALID_SOCKET) { - printf("%s: Error creating simulator socket\n", name); - goto abort; - } - - if (ioctlsocket(simp->io_listen, FIONBIO, &nb) != 0) { - printf("%s: Unable to setup non blocking mode on socket\n", name); - goto abort; - } - - memset(&sad, 0, sizeof(sad)); - sad.sin_family = AF_INET; - sad.sin_addr.s_addr = INADDR_ANY; - sad.sin_port = htons(port); - if (bind(simp->io_listen, (struct sockaddr *)&sad, sizeof(sad))) { - printf("%s: Error binding socket\n", name); - goto abort; - } - - if (listen(simp->io_listen, 1) != 0) { - printf("%s: Error binding socket\n", name); - goto abort; - } - printf("Half Duplex channel %s listening on port %d\n", name, port); - return; - -abort: - if (simp->io_listen != INVALID_SOCKET) - closesocket(simp->io_listen); - WSACleanup(); - exit(1); -} - -void InitSimIso1(void) { - - init("ISO1", &ISO1, &sim1, ISO7816PORT1); -} - -static BOOL connint(char *name, HalfDuplexDriver *sd, sim7816 *simp) { - - if (simp->io_data == INVALID_SOCKET) { - struct sockaddr addr; - int addrlen = sizeof(addr); - - if ((simp->io_data = accept(simp->io_listen, &addr, &addrlen)) == INVALID_SOCKET) - return FALSE; - - if (ioctlsocket(simp->io_data, FIONBIO, &nb) != 0) { - printf("%s: Unable to setup non blocking mode on data socket\n", name); - goto abort; - } - chHDDAddFlagsI(sd, SD_CONNECTED); - return TRUE; - } - return FALSE; -abort: - if (simp->io_listen != INVALID_SOCKET) - closesocket(simp->io_listen); - if (simp->io_data != INVALID_SOCKET) - closesocket(simp->io_data); - WSACleanup(); - exit(1); -} - -BOOL Iso1ConnInterrupt(void) { - - return connint("ISO1", &ISO1, &sim1); -} - -static BOOL inint(char *name, HalfDuplexDriver *sd, sim7816 *simp) { - - if (simp->io_data != INVALID_SOCKET) { - int i; - BYTE8 data[4]; - - /* - * Input. - */ - int n = recv(simp->io_data, data, sizeof(data), 0); - switch (n) { - case 0: - closesocket(simp->io_data); - simp->io_data = INVALID_SOCKET; - chHDDAddFlagsI(sd, SD_DISCONNECTED); - return FALSE; - case SOCKET_ERROR: - if (WSAGetLastError() == WSAEWOULDBLOCK) - return FALSE; - closesocket(simp->io_data); - simp->io_data = INVALID_SOCKET; - return FALSE; - } - for (i = 0; i < n; i++) - chHDDIncomingDataI(sd, data[i]); - return TRUE; - } - return FALSE; -} - -BOOL Iso1InInterrupt(void) { - - return inint("ISO", &ISO1, &sim1); -} - -static BOOL outint(char *name, HalfDuplexDriver *sd, sim7816 *simp) { - - if (simp->io_data != INVALID_SOCKET) { - short n; - BYTE8 data[1]; - - /* - * Input. - */ - n = chHDDRequestDataI(sd); - if (n < 0) - return FALSE; - data[0] = (BYTE8)n; - n = send(simp->io_data, data, sizeof(data), 0); - switch (n) { - case 0: - closesocket(simp->io_data); - simp->io_data = INVALID_SOCKET; - chHDDAddFlagsI(sd, SD_DISCONNECTED); - return FALSE; - case SOCKET_ERROR: - if (WSAGetLastError() == WSAEWOULDBLOCK) - return FALSE; - closesocket(simp->io_data); - simp->io_data = INVALID_SOCKET; - return FALSE; - } - return TRUE; - } - return FALSE; -} - -BOOL Iso1OutInterrupt(void) { - - return outint("ISO1", &ISO1, &sim1); -}