void basicTests() { int n1 = 10; Partition prtn(n1); string s; cout << "writing initial partition: " << prtn.toString(s); Utest::assertEqual(prtn.toString(s), "[a*] [b*] [c*] [d*] [e*] " "[f*] [g*] [h*] [i*] [j*] \n", "initial partition not correct"); prtn.link(1,2); prtn.link(3,4); prtn.link(5,6); cout << "writing new partition: " << prtn.toString(s); Utest::assertEqual(prtn.toString(s), "[a b*] [c d*] [e f*] " "[g*] [h*] [i*] [j*] \n", "mismatch after 3 links"); prtn.link(2,4); prtn.link(4,7); prtn.link(6,8); cout << "writing new partition: " << prtn.toString(s); Utest::assertEqual(prtn.toString(s), "[a b c d* g] [e f* h] [i*] [j*] " "\n", "mismatch after 3 more links"); prtn.link(9,10); prtn.link(6,10); prtn.link(10,4); cout << "writing new partition: " << prtn.toString(s); Utest::assertEqual(prtn.toString(s), "[a b c d* e f g h i j] \n", "mismatch after last 3 links"); }
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; }
char *readCommand(const char *COMMAND, const char *EOM1, const char *EOM2, const char *STARTCOMP, const char *ENDCOMP, lua_State *L) { size_t i; uint32_t now = 0; char ret[BUFFER_SZ]; char *ptr; char *end; size_t TIMEOUT = luaL_checkinteger(L, 1); int min_sz = 0; //size_t echo = luaL_checkinteger(L, 2); if( COMMAND != NULL ) prtn(COMMAND, strlen(COMMAND)); now = system_get_time() + (TIMEOUT * 1000000); i = 0; min_sz = strlen(EOM1); c_memset(ret, 0 , BUFFER_SZ); while( now > system_get_time() ) { system_soft_wdt_feed (); if( uart_getc(&ret[i & BUFFER_MSK]) ) { if( ret[i] == 0 ) i--; i++; if( i >= min_sz ) { if( c_strstr(ret,EOM1) != NULL || c_strstr(ret,EOM2) != NULL) { if( (ptr = c_strstr(ret,STARTCOMP)) != NULL ) { ptr += strlen(STARTCOMP); if( (end = c_strstr(ptr,ENDCOMP)) != NULL ) { *end = 0; return ptr; } }else break; } } } } return NULL; }
static int gprs_rssi( lua_State* L ) { uint32_t timeout = luaL_checkinteger(L, 1) * 1000000; uint32_t now = system_get_time() + timeout; uint32_t i = 0; char Aux[BUFFER_SZ]; char *ptr; char *ret; char *ptrEnd; int16_t val = 0; c_memset(Aux, 0, BUFFER_SZ); prtn(RSSI,strlen(RSSI)); while( now > system_get_time() ) { system_soft_wdt_feed (); if( uart_getc(&Aux[i & BUFFER_MSK]) ) { i++; if( (ptrEnd = strstr(Aux,MSG_OK)) != NULL ) { if( (ptr = strstr(Aux,"+CSQ: ")) != NULL ) { ret = strstr(ptr," ") + 1; ptrEnd = strstr(ret,","); *ptrEnd = 0; val = (2*atoi(ret)) - 113; lua_pushinteger(L, val ); if( val < -100 ) lua_pushstring(L, "Poor"); else if( val <= -91 ) lua_pushstring(L, "Low"); else if( val <=-76 ) lua_pushstring(L, "Medium"); else lua_pushstring(L, "High"); return 2; } } }else if( (ptrEnd = strstr(Aux,MSG_NOK)) != NULL ) break; } return 0; }
char *gprs_ReadCommand(const char *COMMAND,const char *STARTCOMP, const char *ENDCOMP, lua_State *L) { size_t i; uint32_t now = 0; char ret[BUFFER_SZ]; char *ptr; char *end; size_t TIMEOUT = luaL_checkinteger(L, 1); if( COMMAND == NULL ) return NULL; prtn(COMMAND, strlen(COMMAND)); now = system_get_time() + (TIMEOUT * 1000000); i = 0; c_memset(ret, 0 , BUFFER_SZ); while( now > system_get_time() ) { system_soft_wdt_feed (); if( uart_getc(&ret[i & 0x1FF]) ) { if( ret[i] == 0 ) i--; i++; if( strstr(ret,GPRS_A[0]) != NULL ) { if( (ptr = strstr(ret,STARTCOMP)) != NULL ) { ptr += strlen(STARTCOMP); if( (end = strstr(ptr,ENDCOMP)) != NULL ) { *end = 0; return ptr; } }else break; }else if( strstr(ret,GPRS_A[1]) != NULL ) return (char*)GPRS_A[1]; } } return NULL; }
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 ); }