int8_t DLGSM::GPRS_check_conn_state() { uint8_t k = 0; char d[15]; get_from_flash(&(gsm_string_table[5]), _gsm_buff); GSM_send(_gsm_buff); GSM_process("STATE:", 20); if (strcmp_P(_gsm_buff, PSTR("STATE:")) >= 0) { for(k=0; k < GPRSS_LEN; k++) { if (strcmp_flash(_gsm_buff+7, &(gprs_state_table[k]), d) == 0) { if (k == GPRSS_IP_INITIAL || k == GPRSS_IP_START || k == GPRSS_IP_CONFIG) { // Reinitialize GPRS GSM_init(); GPRS_init(); } else if (k == GPRSS_IP_GPRSACT) { // Just need to query the local IP... get_from_flash(&(gprs_init_string_table[9]), _gsm_buff); GSM_send(_gsm_buff); GSM_process(NULL, 25); } else if (k == GPRSS_CONNECT_OK) { CONN_set_flag(CONN_CONNECTED, 1); } else if (k == GPRSS_TCP_CLOSED || k == GPRSS_UDP_CLOSED) { CONN_set_flag(CONN_CONNECTED, 0); } else if (k == GPRSS_PDP_DEACT) { // Reinitialize GPRS GSM_init(); GPRS_init(); } return k; } } } return -1; }
/*============================================================================== * GPRS_Socket_Open * * Open a connection with a remote host. Telit specific. *=============================================================================*/ unsigned char GPRS_Socket_Open(void) { static unsigned char socketFailures = 0; //UARTSend((unsigned char *)"AT#SKTD=0,80,\"173.255.209.28\"\r\n",32); //HAR: review hard coded IP addresses -> perhapse swap for replaceable //ip via "ip" API call UARTSend((unsigned char *)"AT#SD=1,0,80,\"173.255.209.28\",0,0,0\r\n",37); unsigned char result = atResponseCheck(15, "CONNECT", "\r\n"); if (result == AT_REPLY_OK) { socketFailures = 0; WriteUILine("Socket Open", LCD_STATUS_LINE); } else { if (result == AT_REPLY_ERROR) WriteUILine("Socket Error", LCD_STATUS_LINE); else WriteUILine("S No response", LCD_STATUS_LINE); if (socketFailures++ > 5) { GPRS_init(); socketFailures = 0; } } return result; }
int8_t DLGSM::GPRS_check_conn_state() { uint8_t k = 0; char d[15]; #ifdef WATCHDOG wdt_reset(); #endif get_from_flash(&(gsm_string_table[5]), _gsm_buff); GSM_send(_gsm_buff); GSM_process("STATE:", 20); if (strcmp_P(_gsm_buff, PSTR("STATE:")) >= 0) { for(k=0; k < GPRSS_LEN; k++) { if (strcmp_flash(_gsm_buff+7, &(gprs_state_table[k]), d) == 0) { switch(k) { case GPRSS_IP_INITIAL: case GPRSS_IP_START: case GPRSS_IP_CONFIG: // Reinitialize GPRS GSM_init(); GPRS_init(); break; case GPRSS_IP_GPRSACT: // Just need to query the local IP... get_from_flash(&(gprs_init_string_table[9]), _gsm_buff); GSM_send(_gsm_buff); GSM_process(NULL, 25); break; case GPRSS_CONNECT_OK: CONN_set_flag(CONN_CONNECTED, 1); break; case GPRSS_TCP_CLOSED: case GPRSS_UDP_CLOSED: CONN_set_flag(CONN_CONNECTED, 0); break; case GPRSS_PDP_DEACT: // Reinitialize GPRS GSM_init(); GPRS_init(); break; default: break; }; return k; } } } return -1; }
/*============================================================================== * Exosite_Start * * This starts our communications with our Internet-capable transport *=============================================================================*/ char Exosite_Start(void) { WriteUILine("Starting Exosite Comm.", LCD_DEBUG_LINE); // Get CIK Exosite_Use_CIK(DEVICE_CIK); //GPRS init GPRS_init(); //FUTURE: Try to provision - if provision denied, used cached CIK return 1; }
/** * @brief AT_init init AT common */ void AT_init(void) { u8 i; //init buffer //connet buffer node to be link for(i=0;i<(RECEIVE_NODE_MAX-1);i++) { ReceiveNode[i].next=&ReceiveNode[i+1]; ReceiveNode[i].size=0; ReceiveNode[i+1].size=0; } ReceiveNode[i].next=&ReceiveNode[0]; ReceiveNode[i].size=0; //set head porter pWriteNode=pReadNode=&ReceiveNode[0]; //init hardware GPRS_init(); }