ThingPlug GMMP library for mbed

Dependents:   ThingPlug_WiFi_Example

Committer:
lesmin
Date:
Thu Aug 13 07:04:29 2015 +0000
Revision:
4:bb6c1ee1d5f0
Parent:
0:32c20cfb2b30
added NTP error return

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lesmin 0:32c20cfb2b30 1 /** TCP Socket 통신을 위한 모듈
lesmin 0:32c20cfb2b30 2 * @file Network.cpp
lesmin 0:32c20cfb2b30 3 * @date 2015/07/20
lesmin 0:32c20cfb2b30 4 * @version 0.0.1.0
lesmin 0:32c20cfb2b30 5 **/
lesmin 0:32c20cfb2b30 6
lesmin 0:32c20cfb2b30 7 #include "Client.h"
lesmin 0:32c20cfb2b30 8
lesmin 0:32c20cfb2b30 9 #include "Network.h"
lesmin 0:32c20cfb2b30 10 #include "GMMP_Operation.h"
lesmin 0:32c20cfb2b30 11
lesmin 0:32c20cfb2b30 12 int g_socket = -1;
lesmin 0:32c20cfb2b30 13
lesmin 0:32c20cfb2b30 14 //Client client;
lesmin 0:32c20cfb2b30 15 Client *pClient = NULL;
lesmin 0:32c20cfb2b30 16
lesmin 0:32c20cfb2b30 17 void CloseSocket()
lesmin 0:32c20cfb2b30 18 {
lesmin 0:32c20cfb2b30 19 if (g_socket <= 0) return;
lesmin 0:32c20cfb2b30 20
lesmin 0:32c20cfb2b30 21 g_socket = -1;
lesmin 0:32c20cfb2b30 22
lesmin 0:32c20cfb2b30 23 delete pClient;
lesmin 0:32c20cfb2b30 24 pClient = NULL;
lesmin 0:32c20cfb2b30 25
lesmin 0:32c20cfb2b30 26 return;
lesmin 0:32c20cfb2b30 27 }
lesmin 0:32c20cfb2b30 28
lesmin 0:32c20cfb2b30 29 int CheckSocket()
lesmin 0:32c20cfb2b30 30 {
lesmin 0:32c20cfb2b30 31 return 0;
lesmin 0:32c20cfb2b30 32 }
lesmin 0:32c20cfb2b30 33
lesmin 0:32c20cfb2b30 34 int Connect()
lesmin 0:32c20cfb2b30 35 {
lesmin 0:32c20cfb2b30 36 int ret = GMMP_SUCCESS;
lesmin 0:32c20cfb2b30 37
lesmin 0:32c20cfb2b30 38 if(pClient == NULL)
lesmin 0:32c20cfb2b30 39 pClient = new Client;
lesmin 0:32c20cfb2b30 40
lesmin 0:32c20cfb2b30 41 //delay(2000);
lesmin 0:32c20cfb2b30 42 infoln("Connecting...");
lesmin 0:32c20cfb2b30 43 INFO("server ip: %d.%d.%d.%d:%d", g_serverIp[0], g_serverIp[1], g_serverIp[2], g_serverIp[3], g_nServerPort);
lesmin 0:32c20cfb2b30 44
lesmin 0:32c20cfb2b30 45 char szServerIp[24];
lesmin 0:32c20cfb2b30 46 sprintf(szServerIp, "%d.%d.%d.%d", g_serverIp[0], g_serverIp[1], g_serverIp[2], g_serverIp[3]);
lesmin 0:32c20cfb2b30 47
lesmin 0:32c20cfb2b30 48 if (/*client.)*/pClient->connect((char *)szServerIp, g_nServerPort)) {
lesmin 0:32c20cfb2b30 49 infoln("Connected!!");
lesmin 0:32c20cfb2b30 50 } else {
lesmin 0:32c20cfb2b30 51 infoln("connection failed!");
lesmin 0:32c20cfb2b30 52 ret = SERVER_CONNECT_ERROR;
lesmin 0:32c20cfb2b30 53 }
lesmin 0:32c20cfb2b30 54
lesmin 0:32c20cfb2b30 55 return ret;
lesmin 0:32c20cfb2b30 56 }
lesmin 0:32c20cfb2b30 57
lesmin 0:32c20cfb2b30 58 int WriteTCP(char* pBuf, int nLen)
lesmin 0:32c20cfb2b30 59 {
lesmin 0:32c20cfb2b30 60 DBG("WriteTCP(): %d", nLen);
lesmin 0:32c20cfb2b30 61
lesmin 0:32c20cfb2b30 62 if (pBuf == NULL || nLen <= 0) return LIB_PARAM_ERROR;
lesmin 0:32c20cfb2b30 63
lesmin 0:32c20cfb2b30 64 /*client.*/pClient->write(pBuf, nLen);
lesmin 0:32c20cfb2b30 65
lesmin 0:32c20cfb2b30 66 return GMMP_SUCCESS;
lesmin 0:32c20cfb2b30 67 }
lesmin 0:32c20cfb2b30 68
lesmin 0:32c20cfb2b30 69 int ReadTCP(char* pBuf, const int nMaxlen)
lesmin 0:32c20cfb2b30 70 {
lesmin 0:32c20cfb2b30 71 return ReadTCP2(pBuf, nMaxlen, 1);
lesmin 0:32c20cfb2b30 72 }
lesmin 0:32c20cfb2b30 73
lesmin 0:32c20cfb2b30 74 int ReadTCPAsync(char* pBuf, const int nMaxlen);
lesmin 0:32c20cfb2b30 75
lesmin 0:32c20cfb2b30 76 int ReadTCP2(char* pBuf, const int nMaxlen, byte blocking)
lesmin 0:32c20cfb2b30 77 {
lesmin 0:32c20cfb2b30 78 //blocking = 0;
lesmin 0:32c20cfb2b30 79
lesmin 0:32c20cfb2b30 80 if (!blocking) {
lesmin 0:32c20cfb2b30 81 return ReadTCPAsync(pBuf, nMaxlen);
lesmin 0:32c20cfb2b30 82 }
lesmin 0:32c20cfb2b30 83
lesmin 0:32c20cfb2b30 84 if (pBuf == NULL || nMaxlen <= 0) return LIB_PARAM_ERROR;
lesmin 0:32c20cfb2b30 85
lesmin 0:32c20cfb2b30 86 int idx = 0;
lesmin 0:32c20cfb2b30 87
lesmin 0:32c20cfb2b30 88 memset(pBuf, 0, nMaxlen);
lesmin 0:32c20cfb2b30 89
lesmin 0:32c20cfb2b30 90 while(idx < nMaxlen)
lesmin 0:32c20cfb2b30 91 {
lesmin 0:32c20cfb2b30 92 if (/*client.*/pClient->available()) {
lesmin 0:32c20cfb2b30 93 pBuf[idx] = /*client.*/pClient->read();
lesmin 0:32c20cfb2b30 94 DBG("%d", idx);
lesmin 0:32c20cfb2b30 95 DBG(" %c",(byte)pBuf[idx]);
lesmin 0:32c20cfb2b30 96 idx++;
lesmin 0:32c20cfb2b30 97 } else {
lesmin 0:32c20cfb2b30 98 debugln("E_WOULDBLOCK");
lesmin 0:32c20cfb2b30 99 return E_WOULDBLOCK;
lesmin 0:32c20cfb2b30 100 }
lesmin 0:32c20cfb2b30 101 }
lesmin 0:32c20cfb2b30 102
lesmin 0:32c20cfb2b30 103 return GMMP_SUCCESS;
lesmin 0:32c20cfb2b30 104 }
lesmin 0:32c20cfb2b30 105
lesmin 0:32c20cfb2b30 106 int ReadTCPAsync(char* pBuf, const int nMaxlen)
lesmin 0:32c20cfb2b30 107 {
lesmin 0:32c20cfb2b30 108 if (pBuf == NULL || nMaxlen <= 0) return LIB_PARAM_ERROR;
lesmin 0:32c20cfb2b30 109
lesmin 0:32c20cfb2b30 110 int idx = 0;
lesmin 0:32c20cfb2b30 111 char val = -1;
lesmin 0:32c20cfb2b30 112
lesmin 0:32c20cfb2b30 113 memset(pBuf, 0, nMaxlen);
lesmin 0:32c20cfb2b30 114
lesmin 0:32c20cfb2b30 115 while(idx < nMaxlen)
lesmin 0:32c20cfb2b30 116 {
lesmin 0:32c20cfb2b30 117 val = /*client.*/pClient->read();
lesmin 0:32c20cfb2b30 118
lesmin 0:32c20cfb2b30 119 if (val != -1) {
lesmin 0:32c20cfb2b30 120 pBuf[idx++] = (byte)val;
lesmin 0:32c20cfb2b30 121
lesmin 0:32c20cfb2b30 122 /*
lesmin 0:32c20cfb2b30 123 pBuf[idx] = (byte)val;
lesmin 0:32c20cfb2b30 124 debug(idx);
lesmin 0:32c20cfb2b30 125 debug(" ");
lesmin 0:32c20cfb2b30 126 debugln((byte)pBuf[idx]);
lesmin 0:32c20cfb2b30 127 idx++;
lesmin 0:32c20cfb2b30 128 */
lesmin 0:32c20cfb2b30 129 } else {
lesmin 0:32c20cfb2b30 130 return E_WOULDBLOCK;
lesmin 0:32c20cfb2b30 131 }
lesmin 0:32c20cfb2b30 132 }
lesmin 0:32c20cfb2b30 133
lesmin 0:32c20cfb2b30 134 return GMMP_SUCCESS;
lesmin 0:32c20cfb2b30 135 }