bool CApoxObj::setBaudrate( uint8_t rate ) { uint8_t command; switch (rate) { case 0: command = SET_BAUD_1MEG; break; case 1: command = SET_BAUD_500K; break; case 2: command = SET_BAUD_250K; break; case 3: command = SET_BAUD_125K; break; } responseMsg msg; if ( !sendCommandWait( command, &msg, 1000 ) ) return false; if ( msg.command != ( command | 0x80 ) ) return false; return true; }
int closeNet(Serial *serial) { delayMs(1100); putsCell(serial, "+++"); delayMs(1100); return sendCommandWait(serial, "AT+CIPCLOSE\r", "OK", SHORT_TIMEOUT); }
short CApoxObj::getAdapterCOMSTAT( void ) { responseMsg msg; if ( USB_OK != sendCommandWait( GET_COMSTAT, &msg, 1000 ) ) { return -1; } return msg.data[ 0 ]; }
short CApoxObj::getRxErrorCount( void ) { responseMsg msg; if ( USB_OK != sendCommandWait( GET_RX_ERR_CNT, &msg, 1000 ) ) { return -1; } return msg.data[ 0 ]; }
int CApoxObj::getAdapterRunMode( void ) { responseMsg msg; if ( !sendCommandWait( WHICH_CODE_IS_RUNNING, &msg, 1000 ) ) return -1; if ( 0xcc == msg.data[ 0 ] ) return RUNMODE_MAIN; // Main code if ( 0x55 == msg.data[0] ) return RUNMODE_BOOT; // Boot code return -1; }
int configureNet(Serial *serial, const char *apnHost, const char *apnUser, const char *apnPass) { if (!sendCommandOK(serial, "AT+CIPMUX=0\r")) return -1; //TODO enable for SIM900 if (!sendCommandOK(serial, "AT+CIPMODE=1\r")) return -1; //if (!sendCommand("AT+CIPCCFG=3,2,256,1\r")) return -1; flushModem(serial); putsCell(serial, "AT+CSTT=\""); putsCell(serial, apnHost); putsCell(serial, "\",\""); putsCell(serial, apnUser); putsCell(serial, "\",\""); putsCell(serial, apnPass); putsCell(serial, "\"\r"); if (!waitCommandResponse(serial, "OK", READ_TIMEOUT)) { return -2; } // if (!sendCommand("AT+CIPHEAD=1\r")) return -2; if (sendCommandWait(serial, "AT+CIICR\r", "OK", CONNECT_TIMEOUT) != 1) { return -3; } if (getIpAddress(serial) !=0 ) { return -4; } // Configure DNS to use Google DNS const char dnsCmd[] = "AT+CDNSCFG=\"8.8.8.8\",\"8.8.4.4\"\r"; if (sendCommandWait(serial, dnsCmd, "OK", READ_TIMEOUT) != 1) { return -5; } return 0; }
static int sendCommand(Serial *serial, const char * cmd, const char *expectedRsp) { return sendCommandWait(serial, cmd, expectedRsp, READ_TIMEOUT); }