Beispiel #1
0
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;
}
Beispiel #3
0
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; 
}
Beispiel #5
0
/**
 * @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();
}