Modified for W5500 Ethernet initialize
Fork of GMMP_mbed by
Network/Network.cpp@0:7e575e5f88ec, 2015-08-09 (annotated)
- Committer:
- lesmin
- Date:
- Sun Aug 09 14:11:35 2015 +0000
- Revision:
- 0:7e575e5f88ec
- Child:
- 3:6b4536e1962f
forked from GMMP
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lesmin | 0:7e575e5f88ec | 1 | /** TCP Socket 통신을 위한 모듈 |
lesmin | 0:7e575e5f88ec | 2 | * @file Network.cpp |
lesmin | 0:7e575e5f88ec | 3 | * @date 2015/07/20 |
lesmin | 0:7e575e5f88ec | 4 | * @version 0.0.1.0 |
lesmin | 0:7e575e5f88ec | 5 | **/ |
lesmin | 0:7e575e5f88ec | 6 | |
lesmin | 0:7e575e5f88ec | 7 | #include "Client.h" |
lesmin | 0:7e575e5f88ec | 8 | |
lesmin | 0:7e575e5f88ec | 9 | #include "Network.h" |
lesmin | 0:7e575e5f88ec | 10 | #include "GMMP_Operation.h" |
lesmin | 0:7e575e5f88ec | 11 | |
lesmin | 0:7e575e5f88ec | 12 | int g_socket = -1; |
lesmin | 0:7e575e5f88ec | 13 | |
lesmin | 0:7e575e5f88ec | 14 | //Client client; |
lesmin | 0:7e575e5f88ec | 15 | extern Client *g_pClient; //lesmin |
lesmin | 0:7e575e5f88ec | 16 | |
lesmin | 0:7e575e5f88ec | 17 | void CloseSocket() |
lesmin | 0:7e575e5f88ec | 18 | { |
lesmin | 0:7e575e5f88ec | 19 | if (g_socket <= 0) return; |
lesmin | 0:7e575e5f88ec | 20 | |
lesmin | 0:7e575e5f88ec | 21 | g_socket = -1; |
lesmin | 0:7e575e5f88ec | 22 | |
lesmin | 0:7e575e5f88ec | 23 | return; |
lesmin | 0:7e575e5f88ec | 24 | } |
lesmin | 0:7e575e5f88ec | 25 | |
lesmin | 0:7e575e5f88ec | 26 | int CheckSocket() |
lesmin | 0:7e575e5f88ec | 27 | { |
lesmin | 0:7e575e5f88ec | 28 | return 0; |
lesmin | 0:7e575e5f88ec | 29 | } |
lesmin | 0:7e575e5f88ec | 30 | |
lesmin | 0:7e575e5f88ec | 31 | int Connect() |
lesmin | 0:7e575e5f88ec | 32 | { |
lesmin | 0:7e575e5f88ec | 33 | int ret = GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 34 | |
lesmin | 0:7e575e5f88ec | 35 | //delay(2000); |
lesmin | 0:7e575e5f88ec | 36 | infoln("Connecting..."); |
lesmin | 0:7e575e5f88ec | 37 | INFO("server ip: %d.%d.%d.%d:%d", g_serverIp[0], g_serverIp[1], g_serverIp[2], g_serverIp[3], g_nServerPort); |
lesmin | 0:7e575e5f88ec | 38 | |
lesmin | 0:7e575e5f88ec | 39 | char szServerIp[24]; |
lesmin | 0:7e575e5f88ec | 40 | sprintf(szServerIp, "%d.%d.%d.%d", g_serverIp[0], g_serverIp[1], g_serverIp[2], g_serverIp[3]); |
lesmin | 0:7e575e5f88ec | 41 | |
lesmin | 0:7e575e5f88ec | 42 | if(g_pClient == NULL) { |
lesmin | 0:7e575e5f88ec | 43 | ERR("pClient is NULL!!!"); |
lesmin | 0:7e575e5f88ec | 44 | return LIB_PARAM_ERROR; |
lesmin | 0:7e575e5f88ec | 45 | } |
lesmin | 0:7e575e5f88ec | 46 | |
lesmin | 0:7e575e5f88ec | 47 | // if (client.connect((char *)szServerIp, g_nServerPort)) { |
lesmin | 0:7e575e5f88ec | 48 | if (g_pClient->connect((char *)szServerIp, g_nServerPort)) { |
lesmin | 0:7e575e5f88ec | 49 | infoln("Connected!!"); |
lesmin | 0:7e575e5f88ec | 50 | } else { |
lesmin | 0:7e575e5f88ec | 51 | infoln("connection failed!"); |
lesmin | 0:7e575e5f88ec | 52 | ret = SERVER_CONNECT_ERROR; |
lesmin | 0:7e575e5f88ec | 53 | } |
lesmin | 0:7e575e5f88ec | 54 | |
lesmin | 0:7e575e5f88ec | 55 | return ret; |
lesmin | 0:7e575e5f88ec | 56 | } |
lesmin | 0:7e575e5f88ec | 57 | |
lesmin | 0:7e575e5f88ec | 58 | int WriteTCP(char* pBuf, int nLen) |
lesmin | 0:7e575e5f88ec | 59 | { |
lesmin | 0:7e575e5f88ec | 60 | DBG("WriteTCP(): %d", nLen); |
lesmin | 0:7e575e5f88ec | 61 | |
lesmin | 0:7e575e5f88ec | 62 | if (pBuf == NULL || nLen <= 0) return LIB_PARAM_ERROR; |
lesmin | 0:7e575e5f88ec | 63 | |
lesmin | 0:7e575e5f88ec | 64 | if(g_pClient == NULL) { |
lesmin | 0:7e575e5f88ec | 65 | ERR("pClient is NULL!!!"); |
lesmin | 0:7e575e5f88ec | 66 | return LIB_PARAM_ERROR; |
lesmin | 0:7e575e5f88ec | 67 | } |
lesmin | 0:7e575e5f88ec | 68 | // client.write(pBuf, nLen); |
lesmin | 0:7e575e5f88ec | 69 | g_pClient->write(pBuf, nLen); |
lesmin | 0:7e575e5f88ec | 70 | |
lesmin | 0:7e575e5f88ec | 71 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 72 | } |
lesmin | 0:7e575e5f88ec | 73 | |
lesmin | 0:7e575e5f88ec | 74 | int ReadTCP(char* pBuf, const int nMaxlen) |
lesmin | 0:7e575e5f88ec | 75 | { |
lesmin | 0:7e575e5f88ec | 76 | return ReadTCP2(pBuf, nMaxlen, 1); |
lesmin | 0:7e575e5f88ec | 77 | } |
lesmin | 0:7e575e5f88ec | 78 | |
lesmin | 0:7e575e5f88ec | 79 | int ReadTCPAsync(char* pBuf, const int nMaxlen); |
lesmin | 0:7e575e5f88ec | 80 | |
lesmin | 0:7e575e5f88ec | 81 | int ReadTCP2(char* pBuf, const int nMaxlen, byte blocking) |
lesmin | 0:7e575e5f88ec | 82 | { |
lesmin | 0:7e575e5f88ec | 83 | //blocking = 0; |
lesmin | 0:7e575e5f88ec | 84 | |
lesmin | 0:7e575e5f88ec | 85 | if (!blocking) { |
lesmin | 0:7e575e5f88ec | 86 | return ReadTCPAsync(pBuf, nMaxlen); |
lesmin | 0:7e575e5f88ec | 87 | } |
lesmin | 0:7e575e5f88ec | 88 | |
lesmin | 0:7e575e5f88ec | 89 | if (pBuf == NULL || nMaxlen <= 0) return LIB_PARAM_ERROR; |
lesmin | 0:7e575e5f88ec | 90 | |
lesmin | 0:7e575e5f88ec | 91 | if(g_pClient == NULL) { |
lesmin | 0:7e575e5f88ec | 92 | ERR("pClient is NULL!!!"); |
lesmin | 0:7e575e5f88ec | 93 | return LIB_PARAM_ERROR; |
lesmin | 0:7e575e5f88ec | 94 | } |
lesmin | 0:7e575e5f88ec | 95 | |
lesmin | 0:7e575e5f88ec | 96 | int idx = 0; |
lesmin | 0:7e575e5f88ec | 97 | memset(pBuf, 0, nMaxlen); |
lesmin | 0:7e575e5f88ec | 98 | |
lesmin | 0:7e575e5f88ec | 99 | while(idx < nMaxlen) |
lesmin | 0:7e575e5f88ec | 100 | { |
lesmin | 0:7e575e5f88ec | 101 | // if (client.available()) { |
lesmin | 0:7e575e5f88ec | 102 | if (g_pClient->available()) { |
lesmin | 0:7e575e5f88ec | 103 | // pBuf[idx] = client.read(); |
lesmin | 0:7e575e5f88ec | 104 | pBuf[idx] = g_pClient->read(); |
lesmin | 0:7e575e5f88ec | 105 | DBG("%d", idx); |
lesmin | 0:7e575e5f88ec | 106 | DBG(" %c",(byte)pBuf[idx]); |
lesmin | 0:7e575e5f88ec | 107 | idx++; |
lesmin | 0:7e575e5f88ec | 108 | } else { |
lesmin | 0:7e575e5f88ec | 109 | //debugln("E_WOULDBLOCK"); |
lesmin | 0:7e575e5f88ec | 110 | return E_WOULDBLOCK; |
lesmin | 0:7e575e5f88ec | 111 | } |
lesmin | 0:7e575e5f88ec | 112 | } |
lesmin | 0:7e575e5f88ec | 113 | |
lesmin | 0:7e575e5f88ec | 114 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 115 | } |
lesmin | 0:7e575e5f88ec | 116 | |
lesmin | 0:7e575e5f88ec | 117 | int ReadTCPAsync(char* pBuf, const int nMaxlen) |
lesmin | 0:7e575e5f88ec | 118 | { |
lesmin | 0:7e575e5f88ec | 119 | if (pBuf == NULL || nMaxlen <= 0) return LIB_PARAM_ERROR; |
lesmin | 0:7e575e5f88ec | 120 | |
lesmin | 0:7e575e5f88ec | 121 | if(g_pClient == NULL) { |
lesmin | 0:7e575e5f88ec | 122 | ERR("pClient is NULL!!!"); |
lesmin | 0:7e575e5f88ec | 123 | return LIB_PARAM_ERROR; |
lesmin | 0:7e575e5f88ec | 124 | } |
lesmin | 0:7e575e5f88ec | 125 | |
lesmin | 0:7e575e5f88ec | 126 | int idx = 0; |
lesmin | 0:7e575e5f88ec | 127 | char val = -1; |
lesmin | 0:7e575e5f88ec | 128 | |
lesmin | 0:7e575e5f88ec | 129 | memset(pBuf, 0, nMaxlen); |
lesmin | 0:7e575e5f88ec | 130 | |
lesmin | 0:7e575e5f88ec | 131 | while(idx < nMaxlen) |
lesmin | 0:7e575e5f88ec | 132 | { |
lesmin | 0:7e575e5f88ec | 133 | // val = client.read(); |
lesmin | 0:7e575e5f88ec | 134 | val = g_pClient->read(); |
lesmin | 0:7e575e5f88ec | 135 | |
lesmin | 0:7e575e5f88ec | 136 | if (val != -1) { |
lesmin | 0:7e575e5f88ec | 137 | pBuf[idx++] = (byte)val; |
lesmin | 0:7e575e5f88ec | 138 | |
lesmin | 0:7e575e5f88ec | 139 | /* |
lesmin | 0:7e575e5f88ec | 140 | pBuf[idx] = (byte)val; |
lesmin | 0:7e575e5f88ec | 141 | debug(idx); |
lesmin | 0:7e575e5f88ec | 142 | debug(" "); |
lesmin | 0:7e575e5f88ec | 143 | debugln((byte)pBuf[idx]); |
lesmin | 0:7e575e5f88ec | 144 | idx++; |
lesmin | 0:7e575e5f88ec | 145 | */ |
lesmin | 0:7e575e5f88ec | 146 | } else { |
lesmin | 0:7e575e5f88ec | 147 | return E_WOULDBLOCK; |
lesmin | 0:7e575e5f88ec | 148 | } |
lesmin | 0:7e575e5f88ec | 149 | } |
lesmin | 0:7e575e5f88ec | 150 | |
lesmin | 0:7e575e5f88ec | 151 | return GMMP_SUCCESS; |
lesmin | 0:7e575e5f88ec | 152 | } |