Example #1
0
/*****************************************************************************
* Name:
*    printf_usb
* In:
*    s: string to be sent
* Out:
*
* Description:
*    Put one string into tx_buffer.
*
* Assumptions:
*    --
*****************************************************************************/
void printf_usb(char *s)
{
  while(*s)
  {
#if 0      
	  while(*s != (char)cdc_putch(*s)){};
#else
	putchar_usb(*s);
#endif				
      s++;
  }
}
Example #2
0
void Tarefa_GPRS(void)
{
	/* task setup */	
	/* Tarefa do Logger para comunicacao com modem na UART2 a 9600 bps */
	#define SEND_STRING0 "AT+CIPSENDI=0,\"GET node/set.json?nodeid=10&data="
	#define SEND_STRING1 "}&apikey=90a004390f3530d0ba10199ac2b1ac3d HTTP/1.1\\r\\nHost: emon-gpsnetcms.rhcloud.com\\r\\n\\r\\n\\r\\n\""
	
	#define SEND_STRING2 "AT+CIPSENDI=0,\"GET /input/post.json?json={pow:"	
	//#define SEND_STRING3 ("}&" API_KEY " HTTP/1.1\r\nHost: " ESP_TCP_SERVER_NAME "\r\n\r\n\r\n")
	#define SEND_STRING3 "}&apikey=90a004390f3530d0ba10199ac2b1ac3d HTTP/1.1\\r\\nHost: emon-gpsnetcms.rhcloud.com\\r\\n\\r\\n\\r\\n\""

	
	const char resp_200_OK[] = "HTTP/1.1 200 OK";
	#define REPLY_LENGTH  (sizeof(resp_200_OK) + 2)

   char valor[] = "01";
   INT8U cnt = 1;
   volatile char c;
   static char resp_serv[REPLY_LENGTH];
   static INT8U resp_cnt = 0;  
   INT16U tentativas = 0;	
	
    /* init ESP_UART */
   	uart_init(ESP_UART,ESP_BAUD,ESP_UART_BUFSIZE,ESP_UART_PINS,ESP_MUTEX,ESP_MUTEX_PRIO);
   	
   	/* init modem */
	modem_send("AT\r\n");
	modem_wait_reply();
	
	modem_send("AT+CWMODE=3\r\n");
	modem_wait_reply();
	
	modem_send(("AT+CWJAP=\"" ESP_AP "\",\"" ESP_PWD "\"\r\n"));
	modem_wait_reply();
	
	modem_send("AT+CIPCREATE=\"TCP\",10201,2048\r\n");	
	modem_wait_reply();
	
	modem_send("AT+CIPCONNECT=0,\"54.160.189.224\",80\r\n");	
	modem_wait_reply();
   	
	/* task main loop */
	for (;;)
	{
		 
		 DelayTask(5000); /* delay de 5s */
		/*   
		  Comando de envio 
		  GET /input/post.json?json={campo:valor}&apikey=90a004390f3530d0ba10199ac2b1ac3d HTTP/1.1
		  Host:emon-gpsnetcms.rhcloud.com
		  
		  GET /node/set.json?nodeid=10&data=20,20,20,20&apikey=90a004390f3530d0ba10199ac2b1ac3d HTTP/1.1
		  Host:emon-gpsnetcms.rhcloud.com
		  */
		  tentativas++; 
		  modem_send(SEND_STRING2);
		  sprintf(valor,"%d", cnt);
		  modem_send(valor);
		  modem_send(SEND_STRING3);
		  NEWLINE();
		
		  //modem_wait_reply();
		  INT8U keep_data = 0;
		  
		  DelayTask(1000); /* delay de 1s */
		  
			resp_cnt = 0; 
			
			while((c=modem_receive()) != (CHAR8)-1)
			{
				putchar_usb(c);
				
				if (keep_data < 2){
					if (c=='+') 
					{
						keep_data++;
					}
				}else{
					resp_server_ok[resp_cnt++]=c;
					if(resp_cnt == 9) 
					{
						if(c=='1'){
							resp_cnt = 0;
							break;
						}
					}
				}
			}
			
			while((c=modem_receive()) != (CHAR8)-1)
			{
				putchar_usb(c);
			}
		
		  
		  modem_send("AT+CIPRD=0\r\n");
		  
		  DelayTask(10); /* delay de 10ms */
		  
		  /* resposta:
			 HTTP/1.1 200 OK
			.Date: Wed, 03 Dec 2014 18:43:17 GMT
			.Server: Apache/2.2.15 (Red Hat)
			.Content-Length: 2
			.Content-Type: application/json
			.Vary: Accept-Encoding
			.Accept-Ranges: none
			.
			.ok
		  */
			
			while((c=modem_receive()) != (CHAR8)-1)
			{
				putchar_usb(c);
			}
			
			cnt++;
		
		   /* TODO: timeout */
#if 0			
			while(1){
			  		  
			  c=modem_receive();
			  
			  if ((c != '\r') && (c != '\n') && ((resp_cnt < sizeof(resp_serv)-2))){
				 resp_serv[resp_cnt++]=c;      			
			  }else{
				resp_serv[resp_cnt++]='\0';
				if(strcmp (resp_serv,resp_200_OK) == 0){
					cnt = (++cnt)%100;	
				}
				resp_cnt = 0;
				break;
			  }
			}
#endif			
			


	}
}