bool get_apn_by_imsi( ) { u8 retry; u8 respond_str[AT_CMD_LENGTH]; unsigned int i, apn_count ; apn_count = sizeof(apn_list)/sizeof(apn_list[0]); for ( retry = 0 ;retry < 3 ; retry++) { putstring(COM2, "AT+CIMI\r\n");//get imsi memset(respond_str, 0x0, AT_CMD_LENGTH); if ( my_icar.stm32_u2_rx.empty ) {//no data... OSTimeDlyHMSM(0, 0, 0, 100); } while ( !my_icar.stm32_u2_rx.empty ) {//have data ... if ( get_respond(respond_str) ) { if ( (respond_str[0] >= 0x30) && (respond_str[0] <= 0x39) ){ debug_gsm("IMSI: %s\r\n",respond_str); strncpy((char *)my_icar.mg323.imsi, (char *)respond_str, 15); for ( i = 0 ; i < apn_count ; i++ ) { if ( cmpmem(respond_str,(unsigned char *)apn_list[i][0],5 )) { my_icar.mg323.apn_index = i ; return true; } } } } else { debug_gsm("CMD:AT+CIMI no respond, timeout\r\n"); } } OSTimeDlyHMSM(0, 0, 0, 500); } return false ; }
main() { static char b1[] = { "abcda" }; static char b2[] = { "abcda" }; static char b3[] = { "xbada" }; static char b4[] = { "xbadb" }; if (cmpmem(b1, b2, 4)) puts("cmpmem failed 1"); if (cmpmem(b2, b3, 4) >= 0) puts("cmpmem failed 2"); if (cmpmem(b3, b2, 4) <= 0) puts("cmpmem failed 3"); if (cmpmem(b3, b4, 5) >= 0) puts("cmpmem failed 4"); if (cmpmem(b4, b3, 5) <= 0) puts("cmpmem failed 5"); if (cmpmem(b1, b2, 5)) puts("cmpmem failed 6"); }