teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Revision:
9:cf406384efd9
Parent:
8:9f8ad3dbeb87
Child:
10:263c093f8977
--- a/modem.cpp	Tue Jul 18 20:00:43 2017 +0000
+++ b/modem.cpp	Wed Aug 09 20:38:10 2017 +0000
@@ -11,19 +11,23 @@
 bool enviaSendData;
 char *bufInPtr;
 bool mudaRede = false;
+char webServerBuff[256];
 
 void modemCom::atendeSRING(uint8_t conId){           
             //pc.printf("Atendendo a conexao entrante.\n");
             modemCom::status.socketEntranteAtivo=true;            
             modemCom::status.timeOut = 30;
-            modemCom::timeOutModem = 50;            
+            modemCom::timeOutModem = 10;
+            
+            //pc.printf("Entrei em modemCom::atendeSRING.\r\n");
+            
             while(modemCom::status.timeOut||modemCom::status.NO_CARRIER){
-             modemCom::status.timeOut--;
+             if(modemCom::status.timeOut){modemCom::status.timeOut--;}
              /*//Aqui devo perguntar e pedir os dados em buffer
              */             
-             osDelay(100); 
+             osDelay(100);
             }
-            
+
             //Para parar de colocar dentro do arquivo
             modemCom::status.recebendoArquivoDoServer = false;
             
@@ -65,7 +69,7 @@
         ptr = strtok(NULL,"\"");
         if(ptr) {
             strcpy(modemCom::status.MAC,ptr);
-            pc.printf("Lido MAC <%s>.\n",modemCom::status.MAC);
+            //pc.printf("Lido MAC <%s>.\n",modemCom::status.MAC);
         }
     }
 }
@@ -110,11 +114,11 @@
     switch(tipoDado) {
         case dadosArmazenados:
             if(!sdCard::preparaEnvio()){
-                pc.printf("Nao foi possivel preparar o envio.\n");
+                //pc.printf("Nao foi possivel preparar o envio.\n");
                 return false;                
             }
             sdCard::getFileTam(&sdCard::envio);            
-            pc.printf("Preparado o envio do arquivo com %lu bytes.\n",sdCard::envio.bytes);
+            //pc.printf("Preparado o envio do arquivo com %lu bytes.\n",sdCard::envio.bytes);
             break;
         case dadosStatus:
             modemCom::montaStatus();
@@ -123,10 +127,10 @@
     
     switch(tipoDado) {
         case dadosArmazenados:
-                result = modemCom::postFileCommandMode(serverAddress,"/drome/Parser/",&sdCard::envio);                
+                result = modemCom::postFileCommandMode(modemCom::status.host,"/drome/Parser/",&sdCard::envio);                
             break;
         case dadosStatus:
-                result = modemCom::postFileCommandMode(serverAddress,"/drome/Parser/",&sdCard::status);
+                result = modemCom::postFileCommandMode(modemCom::status.host,"/drome/Parser/",&sdCard::status);
             break;
     }
     
@@ -136,10 +140,10 @@
 
     //Envia uma string nula e faz o processador esperar a resposta do server!
     if(modemCom::status.ServerAck) {
-        pc.printf("Enviado e recebido resposta do server (*ServerAck*).\n");
+        //pc.printf("Enviado e recebido resposta do server (*ServerAck*).\n");
     } else {
-        pc.printf("Enviado mas nao recebido resposta do server (*ServerAck*).\n");
-        pc.printf("Conteudo de getRowBuffer <%s>.\n",bufModem.getRowBuffer());
+        //pc.printf("Enviado mas nao recebido resposta do server (*ServerAck*).\n");
+        //pc.printf("Conteudo de getRowBuffer <%s>.\n",bufModem.getRowBuffer());
     }        
     return result;
 }
@@ -334,6 +338,8 @@
         return 0;
     }
 
+    sdCard::fechaArquivo(arquivo);
+
     //Logica de timeout esperando confirmação modemCom::status.ServerAck 20 segundos
     parteSendoEnviada = 200;    
     while((parteSendoEnviada)&&(!modemCom::status.ServerAck)&&(!modemCom::status.NO_CARRIER)) {
@@ -341,9 +347,7 @@
         parteSendoEnviada--;
     }
 
-    modemCom::status.serverConnected=0;
-    sdCard::fechaArquivo(arquivo);
-    
+    modemCom::status.serverConnected=0;    
     //modemCom::sendToModem("AT+CIPCLOSE=1\r\n",1,&modemCom::status.OK,500,3);    
     modemCom::closeConnection(1);
     modemCom::status.emComunicacao = false;    
@@ -408,7 +412,7 @@
 bool modemCom::closeConnection(uint8_t id){
     char command[20];
     sprintf(command,"AT+CIPCLOSE=%u\r\n",id);
-    return modemCom::sendToModem(command,1,&modemCom::status.OK,NULL,500,3,1);
+    return modemCom::sendToModem(command,1,NULL,",CLOSED",500,3,1);
 }
 
 char modemCom::cipSend(uint8_t connID,char *buffer,uint16_t len){
@@ -434,18 +438,136 @@
     return 2;
 }
 
-void modemCom::webServer(void){
+void modemCom::webServer(void){    
+    //char auxMsg[50];
+    bool encontrado=0;
+    char buf[512];
+    //uint32_t aux_int;    
+    
+    if(strstr(webServerBuff,"favicon.ico")){        
+        //sprintf(buf,"<!DOCTYPE html><html><body><h1>DROME-Seu processo na palma da sua mao!</h1><img src='http://criandoriquezaimagens.s3.amazonaws.com/wp-content/uploads/2014/12/casaPropria.png' width='200' height='210'><br><p><a href='/lecomandocontrole.htm'>Ler comando do controle.</a></p><br></body></html>");
+        sprintf(buf,"<!DOCTYPE html><html><link rel=\"icon\" href=\"http://%s/drome/assets/local/images/favicon/favicon.ico\" type=\"image/x-icon\"></html>",modemCom::status.host);
+        if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
+            printf("Requisicao enviada!\n");    
+        }else{
+            printf("Requisicao nao enviada 1!!\n");
+        }        
+        encontrado = 1;
+    }
+    
+    if(strstr(webServerBuff,"comandos.htm")&&(!encontrado)){
+        
+        //sprintf(buf,"<!DOCTYPE html><html><body><h1>DROME-Seu processo na palma da sua mao!</h1><img src='http://criandoriquezaimagens.s3.amazonaws.com/wp-content/uploads/2014/12/casaPropria.png' width='200' height='210'><br><p><a href='/lecomandocontrole.htm'>Ler comando do controle.</a></p><br></body></html>");
+        sprintf(buf,"<!DOCTYPE html><html><body><h1>DROME-Dispositivo Remoto de Operacao e Monitoramento de Equipamentos</h1><br><p><a href='/lecomandocontrole.htm'>Ler comando do controle.</a><a href='/configRede.htm'><br>Configurar rede.</a></p><br></body></html>");
+        if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
+            printf("Requisicao enviada!\n");    
+        }else{
+            printf("Requisicao nao enviada 1!!\n");
+        }        
+        encontrado = 1;
+    }
+        
+    if(strstr(webServerBuff,"configRede.htm")&&(!encontrado)){        
+        //Pegando o IP
+        modemCom::leIP();
+        //sprintf(buf,"<!DOCTYPE html><form action='cwjap.htm' method='GET'><fieldset><legend>Parametros de Configuracao da rede:</legend>SSID WiFi:<br><input type='text' name='ssid' value=''><br>Senha WiFi:<br><input type='text' name='password' value=''><br>IP:(0 para DHCP)<br><input type='text' name='ip' value='0'><br>Porta:<br><input type='text' name='port' value=''><br><input type='submit' value='Configurar'></fieldset></form>");
+        sprintf(buf,"<!DOCTYPE html>IP Atual = %s.<br><form action='cwjap.htm' method='GET'><fieldset><legend>Parametros de Configuracao da rede:</legend>SSID WiFi:<br><input type='text' name='ssid' value='%s'><br>Senha WiFi:<br><input type='text' name='password' value='%s'><br>PORTA:<br><input type='text' name='porta' value='%s'><br>Host:<br><input type='text' name='host' value='%s'><br>Periodo<br><input type='text' name='periodo' value='%lu'><br><input type='submit' value='Configurar'></fieldset></form>",modemCom::status.STAIP,modemCom::status.ssid,modemCom::status.password,modemCom::status.port,modemCom::status.host,modemCom::status.periodo);        
+        cipSend(modemCom::status.connIDWebServer,buf,0);
+        encontrado = 1;
+    }
+    
+    
+
+    if(strstr(webServerBuff,"lecomandocontrole.htm")&&(!encontrado)){        
+        
+        uint16_t timeout = 5000;
+        IrDetect.reset();
+        IrDetect.start();
+        
+        while((IrDetect.read_ms()<timeout) && (!detectaIRIn()));
+        if(IrDetect.read_ms()<timeout){
+            serializaPacoteIR(modemCom::status.connIDWebServer);            
+        }else{
+            sprintf(buf,"erro");   
+            if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
+                printf("Requisicao enviada!\n");    
+            }
+         }
+        IrDetect.stop();
+        encontrado = 1;        
+    }
+    
+    if(strstr(webServerBuff,"cwjap.htm")&&(!encontrado)){
+        //cwjap.htm?ssid=VSA&password=vitaeBBYP&porta=4000&host=www.vitaesolucoes.com.br&periodo=60
+        
+        strtok(webServerBuff,"=");
+        strcpy(modemCom::status.ssid,strtok(NULL,"&")); //pegando ssid        
+        
+        strtok(NULL,"=");
+        strcpy(modemCom::status.password,strtok(NULL,"&")); //pegando password
+        
+        //strtok(NULL,"=");
+        //strcpy(modemStatus.STAIP,strtok(NULL,"&")); //pegando ip
+        
+        strtok(NULL,"=");
+        strcpy(modemCom::status.port,strtok(NULL,"&")); //pegando port
+        
+        strtok(NULL,"=");
+        strcpy(modemCom::status.host,strtok(NULL,"&")); //pegando host
+        
+        strtok(NULL,"=");
+        strcpy(buf,strtok(NULL," ")); //pegando periodo
+        modemCom::status.periodo = atoi(buf);
+        
+        pc.printf("Antes <%s>.\r\n",modemCom::status.ssid);
+        diversos::strReplace(modemCom::status.ssid,"%20"," ");
+        pc.printf("Tirado %%20 <%s>.\r\n",modemCom::status.ssid);
+        diversos::strReplace(modemCom::status.ssid,"+"," ");
+        pc.printf("Tirado + <%s>.\r\n",modemCom::status.ssid);        
+        
+        if((modemCom::status.ssid[0]!=0) && (modemCom::status.password[0]!=0)){
+            sprintf(buf,"HTTP/1.1 200 OK\n\nACK");                      
+            mudaRede = true;
+        }else{
+            sprintf(buf,"HTTP/1.1 200 OK\n\nNACK");
+        }
+        cipSend(modemCom::status.connIDWebServer,buf,0);
+        encontrado = 1;
+    }
+    
+    if(!encontrado){        
+        sprintf(buf,"Pagina Nao Encontrada.");
+        if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
+            printf("Requisicao enviada!\n");    
+        }else{
+            printf("Requisicao nao enviada 3!!\n");
+        }         
+    }    
+    
+    modemCom::closeConnection(modemCom::status.connIDWebServer);    
+    if(mudaRede){            
+        mudaRede = false;
+        modemCom::sendToModem("AT+CIPSERVER=0\r\n",1,&modemCom::status.OK,NULL,2000,1,1);        
+        pc.printf("Mudando para rede:\r\nSSID:%s\r\nPASSWORD:%S\r\nPORTA:%s\r\nHOST:%s\r\nPERIODO:%lu\r\n\r\n",modemCom::status.ssid,modemCom::status.password,modemCom::status.port,modemCom::status.host,modemCom::status.periodo);
+        if(sdCard::abreArquivo(&sdCard::config,"w")){
+            pc.printf("Guardando config.\r\n");
+            fprintf(sdCard::config.fp,"SSID:%s\r\nPASSWORD:%s\r\nPORT:%s\r\nHOST:%s\r\nPERIODO:%lu",modemCom::status.ssid,modemCom::status.password,modemCom::status.port,modemCom::status.host,modemCom::status.periodo);
+            sdCard::fechaArquivo(&sdCard::config);
+            modemCom::conectaWiFi();
+        }    
+    }
+}
+
+/*void modemCom::webServer(void){
     char buf[512];
     //char auxMsg[50];
     bool encontrado=0;
-    //uint32_t aux_int;
-    
-    
+    //uint32_t aux_int;    
     
     if(strstr(bufInPtr,"favicon.ico")){        
         //sprintf(buf,"<!DOCTYPE html><html><body><h1>DROME-Seu processo na palma da sua mao!</h1><img src='http://criandoriquezaimagens.s3.amazonaws.com/wp-content/uploads/2014/12/casaPropria.png' width='200' height='210'><br><p><a href='/lecomandocontrole.htm'>Ler comando do controle.</a></p><br></body></html>");
         sprintf(buf,"<!DOCTYPE html><html><link rel=\"icon\" href=\"http://vitaesolucoes.com.br/drome/assets/local/images/favicon/favicon.ico\" type=\"image/x-icon\"></html>");
-        if(cipSend(connID,buf,0)==1){
+        if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
             printf("Requisicao enviada!\n");    
         }else{
             printf("Requisicao nao enviada 1!!\n");
@@ -457,7 +579,7 @@
         
         //sprintf(buf,"<!DOCTYPE html><html><body><h1>DROME-Seu processo na palma da sua mao!</h1><img src='http://criandoriquezaimagens.s3.amazonaws.com/wp-content/uploads/2014/12/casaPropria.png' width='200' height='210'><br><p><a href='/lecomandocontrole.htm'>Ler comando do controle.</a></p><br></body></html>");
         sprintf(buf,"<!DOCTYPE html><html><body><h1>DROME-Dispositivo Remoto de Operacao e Monitoramento de Equipamentos</h1><br><p><a href='/lecomandocontrole.htm'>Ler comando do controle.</a><a href='/configRede.htm'><br>Configurar rede.</a></p><br></body></html>");
-        if(cipSend(connID,buf,0)==1){
+        if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
             printf("Requisicao enviada!\n");    
         }else{
             printf("Requisicao nao enviada 1!!\n");
@@ -473,7 +595,7 @@
         //sprintf(buf,"<!DOCTYPE html><form action='cwjap.htm' method='GET'><fieldset><legend>Parametros de Configuracao da rede:</legend>SSID WiFi:<br><input type='text' name='ssid' value=''><br>Senha WiFi:<br><input type='text' name='password' value=''><br>IP:(0 para DHCP)<br><input type='text' name='ip' value='0'><br>Porta:<br><input type='text' name='port' value=''><br><input type='submit' value='Configurar'></fieldset></form>");
         sprintf(buf,"<!DOCTYPE html>IP Atual = %s.<br><form action='cwjap.htm' method='GET'><fieldset><legend>Parametros de Configuracao da rede:</legend>SSID WiFi:<br><input type='text' name='ssid' value='%s'><br>Senha WiFi:<br><input type='text' name='password' value='%s'><br>PORTA:<br><input type='text' name='porta' value='%s'><br><input type='submit' value='Configurar'></fieldset></form>",modemCom::status.STAIP,modemCom::status.ssid,modemCom::status.password,modemCom::status.port);
         
-        cipSend(connID,buf,0);
+        cipSend(modemCom::status.connIDWebServer,buf,0);
         encontrado = 1;
     }
     
@@ -504,46 +626,14 @@
         }else{
             sprintf(buf,"HTTP/1.1 200 OK\n\nNACK");
         }
-        cipSend(connID,buf,0);
+        cipSend(modemCom::status.connIDWebServer,buf,0);
         encontrado = 1;
     }    
         
-    /*if(strstr(bufInPtr,"leTemperaturas.htm")){
-        
-        
-        
-            strtok(bufInPtr,"=");
-            bufInPtr = strtok(NULL,NULL);
-            //sprintf(buf,"%s",bufInPtr);
-            aux_int = atoi(bufInPtr);
-            aux_int--;
-        */
-        
-        /*if(num_temperatureSensors){            
-            //Zerano conteudo de buff
-            sprintf(buf,"callback({\"response\":\"");     
-            probe[0]->convertTemperature(true, DS1820::all_devices);         //Start temperature conversion, wait until ready            
-            for (int i = 0; i<num_temperatureSensors; i++){                                
-                sprintf(auxMsg,"%3.1f;",probe[i]->temperature());                
-                strcat(buf,auxMsg);
-            }
-            buf[strlen(buf)-1]=0;
-            sprintf(auxMsg,"\"})");
-            strcat(buf,auxMsg);
-        }else{
-            sprintf(buf,"callback({\"response\":\"Sensor_ERROR\"})");   
-         }        
-        if(cipSend(connID,buf,0)==1){
-            printf("Requisicao enviada!\n");    
-        }else{
-            printf("Requisicao nao enviada 1!!\n");
-        }        
-        encontrado = 1;
-    }*/
     
     
     
-    if(strstr(bufInPtr,"lecomandocontrole.htm")){        
+    if(strstr(webServerBuff,"lecomandocontrole.htm")){        
         
         uint16_t timeout = 5000;
         IrDetect.reset();
@@ -551,10 +641,10 @@
         
         while((IrDetect.read_ms()<timeout) && (!detectaIRIn()));
         if(IrDetect.read_ms()<timeout){
-            serializaPacoteIR(connID);            
+            serializaPacoteIR(modemCom::status.connIDWebServer);            
         }else{
             sprintf(buf,"erro");   
-            if(cipSend(connID,buf,0)==1){
+            if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
                 printf("Requisicao enviada!\n");    
             }
          }
@@ -564,17 +654,14 @@
     
     if(!encontrado){        
         sprintf(buf,"Pagina Nao Encontrada.");
-        if(cipSend(connID,buf,0)==1){
+        if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
             printf("Requisicao enviada!\n");    
         }else{
             printf("Requisicao nao enviada 3!!\n");
         }         
-    }
+    }    
     
-    modemCom::closeConnection(connID);
-    /*sprintf(buf,"AT+CIPCLOSE=%u\r\n",connID);
-    sendToModem(buf,1,&modemCom::status.OK,300,1);*/
-    
+    modemCom::closeConnection(modemCom::status.connIDWebServer);    
     if(mudaRede){            
         mudaRede = false;
         modemCom::sendToModem("AT+CIPSERVER=0\r\n",1,&modemCom::status.OK,NULL,2000,1,1);        
@@ -586,7 +673,7 @@
             modemCom::conectaWiFi();
         }    
     }
-}
+}*/
 
 bool modemCom::leIP(void){    
     char *ptr;    
@@ -602,9 +689,11 @@
 }
 
 int16_t modemCom::getRSSI(void){
-    /*char *ptr;
+    char *ptr;
     int16_t RSSI = 0;
-    if(modemCom::sendToModem("AT+CWLAP\r\n",1,&modemCom::status.OK,1000,1)){        
+    
+    //if(modemCom::sendToModem("AT+CWLAP\r\n",1,&modemCom::status.OK,1000,1)){        
+    if(modemCom::sendToModem("AT+CWLAP\r\n",1,&modemCom::status.OK,NULL,10000,2,1000)){
         ptr = strstr(modemCom::bufIn,(const char*)modemCom::status.ssid);
         if(ptr){
             ptr = strtok(ptr,",");            
@@ -612,8 +701,8 @@
             RSSI = atoi(ptr);
         }
     }
-    return RSSI;*/
-    return -50;
+    return RSSI;
+    //return -50;
 }
 
 bool modemCom::verificaConexao(void){
@@ -655,19 +744,35 @@
             fgets(modemCom::status.port,20,sdCard::config.fp);
             ptr = strtok(modemCom::status.port,":");
             ptr = strtok(NULL,"\r\n");        
-            strcpy(modemCom::status.port,ptr);
+            strcpy(modemCom::status.port,ptr);            
+            
+            //Pegando host
+            fgets(modemCom::status.host,50,sdCard::config.fp);
+            ptr = strtok(modemCom::status.host,":");
+            ptr = strtok(NULL,"\r\n");
+            strcpy(modemCom::status.host,ptr);
+            
+            //Pegando periodo
+            fgets(aux,20,sdCard::config.fp);
+            ptr = strtok(aux,":");
+            ptr = strtok(NULL,"\r\n");        
+            modemCom::status.periodo = atoi(ptr);
         }else{
-            strcpy(modemCom::status.ssid,"VSA");
+            strcpy(modemCom::status.ssid,"VSE");
             strcpy(modemCom::status.password,"vitaeBBYP");
             strcpy(modemCom::status.port,"80");
+            strcpy(modemCom::status.host,"www.vitaesolucoes.com.br");
+            modemCom::status.periodo = 900;
          }
         sdCard::fechaArquivo(&sdCard::config);
-        pc.printf("Lidos os parametros de configuracao de wifi como sendo:\r\nSSID:<%s>\r\nPASSWORD:<%s>\r\nPORT:<%s>\r\n\r\n",modemCom::status.ssid,modemCom::status.password,modemCom::status.port);        
+        pc.printf("Lidos os parametros de configuracao de wifi como sendo:\r\nSSID:<%s>\r\nPASSWORD:<%s>\r\nPORT:<%s>\r\nHOST:<%s>\r\nPERIODO:%lu\r\n",modemCom::status.ssid,modemCom::status.password,modemCom::status.port,modemCom::status.host,modemCom::status.periodo);
         pc.printf("Iniciando conexao wifi.\r\n");        
     }else{
             strcpy(modemCom::status.ssid,"VSE");
             strcpy(modemCom::status.password,"vitaeBBYP");
             strcpy(modemCom::status.port,"4000");
+            strcpy(modemCom::status.host,"www.vitaesolucoes.com.br");
+            modemCom::status.periodo = 900;
          }           
         
         //Mudando mode para AP e Station
@@ -716,30 +821,36 @@
     char *ptr,*scanPtr;            
     uint16_t bufInLength = bufModem.getLength();
     uint16_t timeOut;
+    bool getFound;
     modemCom::bufIn = bufModem.get();
     
     modemCom::status.modemResponse=true;
     
-    //pc.printf("Vem do modem <%s>.\r\n",modemCom::bufIn);    
+    pc.printf("Vem do modem <%s>.\r\n",modemCom::bufIn);    
+    
+    if(strstr(modemCom::bufIn,"GET /")){
+        getFound = true;
+    }
     
-    if(strstr(modemCom::bufIn,"WIFI")==NULL){    
-        //Buscando connect
-        if(!modemCom::atendendoWebServer){
-            ptr=strstr(modemCom::bufIn,"CONNECT\r\n");
-            //if(strstr(modemCom::bufIn,"WIFI")){ptr=NULL;}
-            if(ptr) {
-                ptr = strtok(modemCom::bufIn,",");
-                connID = atoi(ptr);                                    
-                modemCom::status.serverConnected=1;        
-                pc.printf("Recebido string CONNECT socket na conexao %u.\n",connID);
-                if(!modemCom::status.emComunicacao){                            
+    //Buscando connect
+    if(!modemCom::atendendoWebServer){
+        ptr=strstr(modemCom::bufIn,"CONNECT\r\n");
+        //if(strstr(modemCom::bufIn,"WIFI")){ptr=NULL;}
+        if(ptr) {                
+            ptr = strtok(modemCom::bufIn,",");
+            connID = atoi(ptr);                                    
+            modemCom::status.serverConnected=1;        
+            pc.printf("Recebido string CONNECT socket na conexao %u.\n",connID);
+            if(!modemCom::status.emComunicacao){                                                
+                if(!getFound){
                     pc.printf("Atendendo socket entrante na conexao %u.\n",connID);
                     modemCom::status.SRINGsockEntrante = true;
+                    modemCom::status.connIDServerCommand = connID;
                 }
-                modemCom::status.emComunicacao=true;
-                modemCom::bufIn = strtok(NULL,"");
-            }    
-        }
+            }
+            modemCom::status.emComunicacao=true;
+            modemCom::bufIn = strtok(NULL,"");
+        }    
     }
     
     IPDNumBytes = 0;
@@ -761,13 +872,15 @@
     }
     
     //Reconhecendo GET HTTP e atendendo com um servidor web    
-    if(strstr(modemCom::bufIn,"GET /") && strstr(modemCom::bufIn,"HTTP/1.1")){
+    if(getFound && strstr(modemCom::bufIn,"HTTP/1.1")){
         ptr=strstr(modemCom::bufIn,"GET /");
         if(ptr) {            
             ptr = strtok(ptr,"/");
             ptr = strtok(NULL," ");
-            bufInPtr = ptr;        
-            modemCom::atendendoWebServer = true;            
+            bufInPtr = ptr;
+            strcpy(webServerBuff,ptr);
+            modemCom::atendendoWebServer = true;
+            modemCom::status.connIDWebServer = connID;
         }
     }
     
@@ -787,11 +900,9 @@
     
     //if(modemCom::status.recebendoArquivoDoServer){
     if(IPDNumBytes && modemCom::status.recebendoArquivoDoServer && (strstr(modemCom::bufIn,"CONNECT")==NULL) && (strstr(modemCom::bufIn,"*ServerCommand*")==NULL) ){
+    
         sdCard::insereDadosArquivo(&sdCard::tempFile,modemCom::bufIn,IPDNumBytes);
-        //modemCom::status.timeOut=100;        
-        
         bufModem.del();
-        
         sprintf(modemCom::bufIn,"AT+CIPSEND=%u,%lu\r\n",connID,10);
         modem.puts(modemCom::bufIn);
         timeOut = 5000;
@@ -799,8 +910,9 @@
             osDelay(1);
             timeOut--;
         }
+        modemCom::status.timeOut = 30;
         modem.puts("sendData\r\n");
-        pc.printf("sendData\n");
+        pc.printf("sendData\n");        
         return;
     }