Own fork of MbedSmartRestMain
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
util/SmartRestSocket.cpp
- Committer:
- xinlei
- Date:
- 2015-04-27
- Revision:
- 96:ea056f6be2e8
- Parent:
- 93:61d44636f020
- Child:
- 98:e369fc75c000
File content as of revision 96:ea056f6be2e8:
#include <string.h> #include "SmartRestSocket.h" #include "SmartRestConf.h" //memset((void*)SmartRestSocket::cachedIP, 0, sizeof(SmartRestSocket::cachedIP)); char SmartRestSocket::cachedIP[16] = {0}; int SmartRestSocket::connect() { extern MDMSerial *pMdm; int n = -1; ipLock.lock(); for (size_t i = 0; i < 3; ++i) { if (cachedIP[0] == '\0') { MDMParser::IP ip = pMdm->gethostbyname(getHost()); if (ip == NOIP) continue; const unsigned char *c = (const unsigned char*)&ip; snprintf(cachedIP, sizeof(cachedIP), "%u.%u.%u.%u", c[3], c[2], c[1], c[0]); } n = TCPSocketConnection::connect(cachedIP, getPort()); if (n >= 0) { break; } else { cachedIP[0] = '\0'; } } ipLock.unlock(); return n; } int SmartRestSocket::sendOnly(char *buf, int size) { int l = connect(); if (l < 0) return -3; l = send(buf, size); close(); if (l < 0) { return -2; } else { return l; } } int SmartRestSocket::sendAndReceive(char *buf, int size, int maxSize) { int l = connect(); if (l < 0) return -3; l = send(buf, size); if (l < 0) { close(); return -2; } else { l = receive(buf, maxSize); close(); return l; } }