ThingPlug GMMP library for mbed
Dependents: ThingPlug_WiFi_Example
Network/Network.cpp@4:bb6c1ee1d5f0, 2015-08-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |