Modified for W5500 Ethernet initialize

Fork of GMMP_mbed by SKTelecom_ThingPlug

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?

UserRevisionLine numberNew 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 }