int gprs_SendSocket( lua_State *L, char *REQ) { int timeout = luaL_checkinteger(L, 1)*1000000; const char *DATA = luaL_checkstring( L, 4 ); if( gprs_SendHeader(L, REQ) == 1 ) { sendCommand(DATA, EOL, EOL, strlen(DATA), timeout); prtn("\x1A",1); return waitAnswer(3*timeout, MSG_OK, MSG_NOK ); } return 0; }
/* * Return: 1 --> ok * 2 --> nok * 0 --> timeout */ static int gprs_isReady( lua_State* L ) { char time; size_t TIMEOUT = luaL_checkinteger(L, 1) * 1000000; time = (int)waitAnswer(TIMEOUT, MSG_RDY, MSG_NSIM); if( time == 0 ) time = gprs_Attach(L); if( time == -1 ) time = 0; lua_pushinteger(L,time); return 1; }
/* * Return: * 0 --> OK * 2 --> false * 3 --> http 30x * 4 --> http 40x * 5 --> http 50x */ static int gprs_send( lua_State* L ) { uint8_t result = 3; int timeout = luaL_checkinteger(L, 1)*1000000; if( gprs_StartSocket(L) == 1 ) { result = 4; if( gprs_SendSocket(L,"POST") == 1 ) { if( (result = waitAnswer(3*timeout, HTTP_OK, HTTP_NOK )) == 1 ) { sendCommand((char*)CIPCLOSE, MSG_OK, MSG_NOK, strlen(CIPCLOSE), timeout/10); result = 0; } } } lua_pushinteger(L,result); return 1; }
//gprs.register(_10S, URL, PATH, DATA) static int gprs_register( lua_State* L ) { uint32_t timeout = luaL_checkinteger(L, 1) * 1000000; char reg[BUFFER_SZ]; if( gprs_StartSocket(L) == 1 ) { if( gprs_SendSocket(L,"POST") == 1 ) { if( waitAnswer(3*timeout, HTTP_OK, HTTP_NOK ) == 1 ) { readFrame("}\r\n","}\r\n","\n{",reg,BUFFER_SZ,timeout); if( strlen(reg) > 0 ) { lua_pushstring(L, reg); return 1; } } } } return 0; }
void* PingProcessor::run(){ int i = 0; //régler le i adéquat while(true){ if(i==10){ std::stringstream ss; ss<<*id; ss<<";"; ss<<"r"; ss<<";"; ss<<pos->getX(); ss<<";"; ss<<pos->getY(); ss<<";"; ss<<pos->getZ(); ss<<";"; ss<<*alt; ss<<";"; ss<<speed->getX(); ss<<";"; ss<<speed->getY(); ss<<";"; ss<<speed->getZ(); ss<<";"; ss<<angles->getX(); ss<<";"; ss<<angles->getY(); ss<<";"; ss<<angles->getZ(); ss<<";"; ss<<*charge; ss<<";"; std::string message = ss.str(); Message* msg = new Message(Message::PING, message, 0); moduleCom->addtsMsg(msg); waitAnswer(*id); *id = *id+1; sleep(1); }else{ std::stringstream ss; ss<<*id; ss<<";"; ss<<"i"; ss<<";"; ss<<posincr->getX(); ss<<";"; ss<<posincr->getY(); ss<<";"; ss<<posincr->getZ(); ss<<";"; ss<<*altincr; ss<<";"; ss<<speedincr->getX(); ss<<";"; ss<<speedincr->getY(); ss<<";"; ss<<speedincr->getZ(); ss<<";"; ss<<angleincr->getX(); ss<<";"; ss<<angleincr->getY(); ss<<";"; ss<<angleincr->getZ(); ss<<";"; ss<<*chargeincr; ss<<";"; std::string message = ss.str(); Message* msg = new Message(Message::PING, message, 0); moduleCom->addtsMsg(msg); waitAnswer(*id); *id = *id+1; sleep(1); } } return 0; };
unsigned char sendCommand(const char *COMMAND, const char *OK, const char *NOK, int len, uint32_t TIMEOUT) { prtn(COMMAND,len); return waitAnswer(TIMEOUT, OK, NOK ); }