#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SERVER_IP "115.29.140.xxx"
#define SERVER_PORT "8082"
#define BUFF_LEN 64
char aUart5RxBuffer[BUFF_LEN];
static int gprs_init_ok= 0;
static int ppp_config_ok = 0;
void gprs_init(void)
{
if((strstr(aUart5RxBuffer, "command ready") == NULL)
/*||(strstr(aUart5RxBuffer, "+SIM READY") == NULL)*/)
{
gprs_init_ok = 0;
}
else
{
gprs_init_ok = 1;
}
}
void reset_gprs(void)
{
memset(aUart5RxBuffer, 0, BUFF_LEN);
gprs_init_ok= 0;
ppp_config_ok = 0;
//reset 3g module;
}
void ppp_config(void)
{
static uint32_t ppp_config_step = 0;
static uint32_t gprs_tick = 0;
switch (ppp_config_step)
{
case 0:
gprs_puts("AT+GTSET=\"LPMMODE\",0\r\n");
gprs_tick = msTicks;
ppp_config_step = 1;
break;
case 1:
if((msTicks - gprs_tick) > 500)
{
if(strstr(aUart5RxBuffer, "OK") == NULL)
{
ppp_config_step = 0;
}
else
{
ppp_config_step = 2;
}
memset(aUart5RxBuffer, 0, BUFF_LEN);
}
break;
case 2:
gprs_puts("AT+CPIN?\r\n");
ppp_config_step = 3;
gprs_tick = msTicks;
break;
case 3:
if((msTicks - gprs_tick) > 500)
{
if((strstr(aUart5RxBuffer, "OK") == NULL) || (strstr(aUart5RxBuffer, "+CPIN: READY") == NULL))
{
ppp_config_step = 2;
}
else
{
ppp_config_step = 4;
}
memset(aUart5RxBuffer, 0, BUFF_LEN);
}
break;
case 4:
gprs_puts("AT+CSQ\r\n");
ppp_config_step = 5;
gprs_tick = msTicks;
break;
case 5:
if((msTicks - gprs_tick) > 500)
{
if(strstr(aUart5RxBuffer, "OK") == NULL)
{
ppp_config_step = 4;
}
else
{
ppp_config_step = 6;
}
memset(aUart5RxBuffer, 0, BUFF_LEN);
}
break;
case 6:
gprs_puts("AT+CREG?\r\n");
ppp_config_step = 7;
gprs_tick = msTicks;
break;
case 7:
if((msTicks - gprs_tick) > 500)
{
if(strstr(aUart5RxBuffer, "+CREG: 0,0") == NULL)
{
ppp_config_step = 8;
}
else
{
ppp_config_step = 6;
}
memset(aUart5RxBuffer, 0, BUFF_LEN);
}
break;
case 8:
//gprs_puts("AT+MIPCALL=1,\"3GNET\"\r\n");
gprs_puts("AT+MIPCALL=1,\"xagfzqx.ydoa.snapn\"\r\n");
ppp_config_step = 9;
gprs_tick = msTicks;
break;
case 9:
if((msTicks - gprs_tick) > 3000)
{
if(strstr(aUart5RxBuffer, "+MIPCALL: 0") == NULL)
{
ppp_config_step = 0;
ppp_config_ok = 1;
}
else
{
ppp_config_step = 8;
}
memset(aUart5RxBuffer, 0, BUFF_LEN);
}
break;
default:
break;
}
}
void http_Send_test(char *data)
{
static unsigned char http_send_step = 0;
static int send_err_cnt = 0;
switch (http_send_step)
{
case 0:
memset(data_tx_buf, 0, sizeof(data_tx_buf));
strcat(data_tx_buf, data);
gprs_puts("GET /app/pulse-wave/commit?");
gprs_puts("%s",data_tx_buf);
gprs_puts("\r\n");
http_send_step = 1;
gprs_tick = msTicks;
break;
case 1:
if((strstr(aUart5RxBuffer, "{\"msg\":\"commit pulse-wave data success.\",\"result\":true}") != NULL)
&&(strstr(aUart5RxBuffer, "+MIPSTAT: 1,1") != NULL)
&&((msTicks - gprs_tick) < 1000))
{
}
else
{
if(++send_err_cnt > 3) {
reset_gprs();
send_err_cnt = 0;
}
}
memset(aUart5RxBuffer, 0, BUFF_LEN);
http_send_step = 0;
break;
default:
break;
}
}
void main(void)
{
while(1)
{
if(!gprs_init_ok) { gprs_init(); }
if((gprs_init_ok)&&(!ppp_config_ok)) { ppp_config(); }
if(ppp_config_ok) { http_Send_test("hello,world"); }
}
}