bool GPRS::join() { char cmd[64]; char ipAddr[32]; //Select multiple connection sendCmdAndWaitForResp("AT+CIPMUX=1\r\n","OK",DEFAULT_TIMEOUT,CMD); //set APN snprintf(cmd,sizeof(cmd),"AT+CSTT=\"%s\",\"%s\",\"%s\"\r\n",_apn,_userName,_passWord); sendCmdAndWaitForResp(cmd, "OK", DEFAULT_TIMEOUT,CMD); //Brings up wireless connection sendCmdAndWaitForResp("AT+CIICR\r\n","OK",DEFAULT_TIMEOUT,CMD); //Get local IP address sendCmd("AT+CIFSR\r\n"); readBuffer(ipAddr,32,2); if(NULL != strstr(ipAddr,"AT+CIFSR")) { _ip = str_to_ip(ipAddr+12); if(_ip != 0) { return true; } } return false; }
int GPRS::send(int socket, const char * str, int len) { if (socket < 0 || socket > MAX_SOCK_NUM-1) { return -1; } char cmd[32]; char resp[16]; delay(1000); if(len > 0){ snprintf(cmd,sizeof(cmd),"AT+CIPSEND=%d,%d\r\n",socket,len); if(0 != sendCmdAndWaitForResp(cmd,">",DEFAULT_TIMEOUT,CMD)) { return false; } snprintf(resp,sizeof(resp),"%d, SEND OK",socket); if(0 != sendCmdAndWaitForResp(str,resp,DEFAULT_TIMEOUT+2,DATA)) { return -1; } } return len; }
bool GPRS::close(int socket) { char cmd[16]; char resp[16]; if (socket < 0 || socket > MAX_SOCK_NUM-1) { return false; } // if not connected, return if (is_connected(socket) == false) { return true; } snprintf(cmd, sizeof(cmd),"AT+CIPCLOSE=%d\r\n",socket); snprintf(resp,sizeof(resp),"%d, CLOSE OK",socket); if(0 != sendCmdAndWaitForResp(cmd, resp, DEFAULT_TIMEOUT,CMD)) { return false; } return true; }
void SIM800::sendATTest(void) { sendCmdAndWaitForResp("AT\r\n","OK",DEFAULT_TIMEOUT); }