teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Revision:
15:0f78bf9c13ec
Parent:
14:c0162ab2a951
Child:
16:9a19ac33957e
--- a/modem.cpp	Thu Nov 09 12:53:41 2017 +0000
+++ b/modem.cpp	Wed Dec 27 13:10:09 2017 +0000
@@ -15,6 +15,12 @@
 
 void modemCom::atendeSRING(uint8_t conId){           
             //pc.printf("Atendendo a conexao entrante.\n");
+            
+            if(modemCom::status.emComunicacao){
+                modemCom::cipSend(conId,"ocupado",7);
+                modemCom::closeConnection(conId);
+            }
+            
             modemCom::status.socketEntranteAtivo=true;            
             modemCom::status.timeOut = 30;
             modemCom::timeOutModem = 10;
@@ -154,7 +160,7 @@
         case 2:
                 pc.printf("modemCom::enviaDados[10].\r\n");
                 modemCom::status.emComunicacao = false;
-                return false;
+                result = false;
             break;
     }    
     return result;
@@ -447,6 +453,8 @@
 
 bool modemCom::closeConnection(uint8_t id){
     char command[20];
+    pc.printf("Lido %u como sendo o id em closeConnection.\r\n",id);
+    
     sprintf(command,"AT+CIPCLOSE=%u\r\n",id);
     return modemCom::sendToModem(command,1,NULL,",CLOSED",500,3,1);
 }
@@ -474,7 +482,7 @@
     return 2;
 }
 
-void modemCom::webServer(void){    
+void modemCom::webServer(uint8_t id){    
     //char auxMsg[50];
     bool encontrado=0;
     char buf[512];
@@ -483,7 +491,7 @@
     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){
+        if(cipSend(id,buf,0)==1){
             printf("Requisicao enviada!\n");    
         }else{
             printf("Requisicao nao enviada 1!!\n");
@@ -495,7 +503,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(modemCom::status.connIDWebServer,buf,0)==1){
+        if(cipSend(id,buf,0)==1){
             printf("Requisicao enviada!\n");    
         }else{
             printf("Requisicao nao enviada 1!!\n");
@@ -508,7 +516,7 @@
         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);
+        cipSend(id,buf,0);
         encontrado = 1;
     }
     
@@ -525,7 +533,7 @@
             serializaPacoteIR(modemCom::status.connIDWebServer);            
         }else{
             sprintf(buf,"erro");   
-            if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
+            if(cipSend(id,buf,0)==1){
                 printf("Requisicao enviada!\n");    
             }
          }
@@ -567,20 +575,20 @@
         }else{
             sprintf(buf,"HTTP/1.1 200 OK\n\nNACK");
         }
-        cipSend(modemCom::status.connIDWebServer,buf,0);
+        cipSend(id,buf,0);
         encontrado = 1;
     }
     
     if(!encontrado){        
         sprintf(buf,"Pagina Nao Encontrada.");
-        if(cipSend(modemCom::status.connIDWebServer,buf,0)==1){
+        if(cipSend(id,buf,0)==1){
             printf("Requisicao enviada!\n");    
         }else{
             printf("Requisicao nao enviada 3!!\n");
         }         
     }    
     
-    modemCom::closeConnection(modemCom::status.connIDWebServer);    
+    modemCom::closeConnection(id);    
     if(mudaRede){            
         mudaRede = false;
         modemCom::sendToModem("AT+CIPSERVER=0\r\n",1,&modemCom::status.OK,NULL,2000,1,1);        
@@ -589,128 +597,12 @@
             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::inicializaModem();
             modemCom::conectaWiFi();
         }    
     }
 }
 
-/*void modemCom::webServer(void){
-    char buf[512];
-    //char auxMsg[50];
-    bool encontrado=0;
-    //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(modemCom::status.connIDWebServer,buf,0)==1){
-            printf("Requisicao enviada!\n");    
-        }else{
-            printf("Requisicao nao enviada 1!!\n");
-        }        
-        encontrado = 1;
-    }
-    
-    if(strstr(bufInPtr,"comandos.htm")){
-        
-        //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(bufInPtr,"configRede.htm")){        
-        //Pegando o IP
-        modemCom::leIP();        
-        //sprintf(buf,"<script>window.location.href = 'http://www.vitaesolucoes.com.br/controladorawifi/config.php?ip=%s'</script>",modemStatus.STAIP);
-        
-        //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(modemCom::status.connIDWebServer,buf,0);
-        encontrado = 1;
-    }
-    
-    if(strstr(bufInPtr,"cwjap.htm")){
-        //cwjap.htm?ssid=VSA&password=vitaeBBYP&ip=0&port=80
-        
-        strtok(bufInPtr,"=");
-        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
-        
-        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(strstr(webServerBuff,"lecomandocontrole.htm")){        
-        
-        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(!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\n\r\n",modemCom::status.ssid,modemCom::status.password,modemCom::status.port);
-        if(sdCard::abreArquivo(&sdCard::config,"w")){
-            pc.printf("Guardando config.\r\n");
-            fprintf(sdCard::config.fp,"SSID:%s\r\nPASSWORD:%s\r\nPORT:%s",modemCom::status.ssid,modemCom::status.password,modemCom::status.port);
-            sdCard::fechaArquivo(&sdCard::config);
-            modemCom::conectaWiFi();
-        }    
-    }
-}*/
-
 bool modemCom::leIP(void){    
     char *ptr;    
     sendToModem("AT+CIFSR\r\n",1,NULL,"+CIFSR:STAIP,",200,1,1);
@@ -726,14 +618,15 @@
 
 int16_t modemCom::getRSSI(void){
     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,NULL,10000,2,1000)){
+    int16_t RSSI = 255;
+        
+    if(modemCom::sendToModem("AT+CWJAP?\r\n",1,&modemCom::status.OK,NULL,10000,2,1000)){
         ptr = strstr(modemCom::bufIn,(const char*)modemCom::status.ssid);
         if(ptr){
-            ptr = strtok(ptr,",");            
-            ptr = strtok(NULL,",");            
+            ptr = strtok(ptr,",");  //Descarta SSID
+            ptr = strtok(NULL,","); //Descarta MAC
+            ptr = strtok(NULL,","); //Descarta Canal
+            ptr = strtok(NULL,","); //Captura RSSI
             RSSI = atoi(ptr);
         }
     }
@@ -744,8 +637,10 @@
 bool modemCom::verificaConexao(void){
     uint8_t i = 1;
     while(i){
-        if(!modemCom::sendToModem("AT+CWJAP?\r\n",1,NULL,"+CWJAP:",100,10,1000)){
-            modemCom::conectaWiFi();
+        if(modemCom::getRSSI()==255){
+            if(modemCom::conectaWiFi()){            
+                return true;
+            }
             i--;    
         }else{
             return true;
@@ -754,8 +649,186 @@
     return false;
 }
     
-void modemCom::conectaWiFi(void){
+bool modemCom::conectaWiFi(void){
     //Função para mudança de rede
+    
+    char aux[128];    
+    modemCom::leParametrosConexaoSDCard();    
+    //AT+CWJAP=\"\",\"\"\r\n
+    sprintf(aux,"AT+CWJAP=\"%s\",\"%s\"\r\n",modemCom::status.ssid,modemCom::status.password);
+    if(modemCom::sendToModem(aux,1,&modemCom::status.OK,NULL,10000,1,1)) {
+        pc.printf("WiFi Conectado.\n");
+        return true;
+    }else{
+            return false;
+        }            
+}
+
+void modemCom::processaPacote(void const *args){
+    char *ptr,*scanPtr;            
+    uint16_t bufInLength = bufModem.getLength();
+    uint16_t timeOut;
+    //bool getFound=false;
+    modemCom::bufIn = bufModem.get();
+    
+    modemCom::status.modemResponse=true;
+    
+    pc.printf("Vem do modem <%s>.\r\n",modemCom::bufIn);   
+    
+    //Reconhecimento dos status
+    modemCom::status.PROMPT_ENVIO_COMMAND_MODE=0;
+    ptr=strstr(modemCom::bufIn,"> ");
+    if(ptr) {
+        
+        modemCom::status.serverConnected=1;
+        modemCom::status.commandMode=1;
+        modemCom::status.NO_CARRIER=0;
+        modemCom::status.PROMPT_ENVIO_COMMAND_MODE=1;
+    }
+    modemCom::status.OK=0;
+    ptr=strstr(modemCom::bufIn,"OK\r");
+    if(ptr) {        
+        modemCom::status.OK=1;
+    }        
+
+    
+
+    modemCom::status.busy=false;
+    ptr=strstr(modemCom::bufIn,"busy s...");
+    if(ptr) {
+        
+        modemCom::status.busy=1;
+    }
+    
+    modemCom::status.SEND_OK=0;
+    ptr=strstr(modemCom::bufIn,"SEND OK");
+    if(ptr) {
+        
+        modemCom::status.SEND_OK=1;
+    }
+
+    modemCom::status.ERROR=0;
+    ptr=strstr(modemCom::bufIn,"ERROR");
+    if(ptr) {
+        
+        modemCom::status.ERROR=1;
+        modemCom::status.OK=0;
+    }
+    
+    ptr=strstr(modemCom::bufIn,"FAIL");
+    if(ptr) {
+        
+        modemCom::status.ERROR=1;
+        modemCom::status.OK=0;
+    }
+    
+    ptr=strstr(modemCom::bufIn,"DNS Fail");
+    if(ptr) {
+        modemCom::status.dnsError=1;
+        modemCom::status.ERROR=1;
+        modemCom::status.OK=0;
+    }    
+   
+    //modemCom::status.CLOSED=false;    
+    ptr=strstr(modemCom::bufIn,"CLOSED");
+    if(ptr) {        
+        modemCom::status.CLOSED=1;
+    }
+    
+    /*if(strstr(modemCom::bufIn,"GET /")){
+        getFound = true;
+    }*/
+    
+    //Buscando connect
+    /*if(!modemCom::atendendoWebServer){
+        ptr=strstr(modemCom::bufIn,"CONNECT\r\n");        
+        if(ptr) {                
+            ptr = strstr(ptr,"+IPD");
+            ptr = strtok(ptr,",");
+            ptr = strtok(NULL,",");
+            connID = atoi(ptr);
+            modemCom::status.connIDServerCommand = connID;
+            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.emComunicacao=true;
+            modemCom::bufIn = strtok(NULL,"");
+        }    
+    }*/
+    
+    IPDNumBytes = 0;
+    ptr = strstr(modemCom::bufIn,"+IPD");
+    if(ptr!=NULL){
+        //+IPD,0,480:GET
+        strtok(ptr,",");           //Separando +IPD
+        
+        ptr = strtok(NULL,",");    //Pegando o numero da conexão
+        connID = atoi(ptr);
+        
+        ptr = strtok(NULL,":");    //Pegando o numero de caracteres IPD
+        IPDNumBytes = atoi(ptr);
+        
+        modemCom::bufIn = strtok(NULL,"");
+        
+        //printf("Recebido pacote via conexao %u com %lu bytes.\n",connID,IPDNumBytes);
+        
+    }     
+    
+    if(IPDNumBytes && modemCom::status.recebendoArquivoDoServer && (strstr(modemCom::bufIn,"CONNECT")==NULL) && (strstr(modemCom::bufIn,"*ServerCommand*")==NULL) ){
+
+        sdCard::insereDadosArquivoHex(&sdCard::tempFile,modemCom::bufIn,IPDNumBytes);
+        //sdCard::insereDadosArquivo(&sdCard::tempFile,modemCom::bufIn,IPDNumBytes);
+        sdCard::nBytesArquivoRecebidos+=IPDNumBytes;
+        bufModem.del();
+        sprintf(modemCom::bufIn,"AT+CIPSEND=%u,%lu\r\n",connID,10);
+        modem.puts(modemCom::bufIn);
+        timeOut = 5000;
+        while(timeOut && (strstr(bufModem.getRowBuffer(),">")==NULL)){
+            osDelay(1);
+            timeOut--;
+        }
+        modemCom::status.timeOut = 30;
+        modem.puts("sendData\r\n");
+        pc.printf("sendData recebidos %lu bytes\n",sdCard::nBytesArquivoRecebidos/2);
+        diversos::wdt.kick();
+        return;
+    }
+    
+    //Reconhecendo GET HTTP e atendendo com um servidor web    
+    if(strstr(modemCom::bufIn,"HTTP/1.1")){
+        ptr=strstr(modemCom::bufIn,"GET /");
+        if(ptr) {            
+            ptr = strtok(ptr,"/");
+            ptr = strtok(NULL," ");
+            bufInPtr = ptr;
+            strcpy(webServerBuff,ptr);
+            modemCom::atendendoWebServer = true;
+            modemCom::status.connIDWebServer = connID;
+        }
+    }
+    
+    ptr=strstr(modemCom::bufIn,"*ServerAck*");
+    if(ptr) {        
+        modemCom::status.ServerAck=1;        
+    }    
+    
+    ptr=strstr(modemCom::bufIn,"*ServerCommand*");
+    if(ptr) {        
+        scanPtr = strtok (ptr,"\\");
+        scanPtr = strtok (NULL,">");        
+        strcpy(commands::buffer,scanPtr);
+        pc.printf("Comandos <%s>.\n",commands::buffer);
+        modemCom::status.connIDServerCommand = connID;
+        executaComandoServer = true;
+    }
+}
+
+bool modemCom::leParametrosConexaoSDCard(){
     char *ptr;
     char aux[128];
     if(sdCard::abreArquivo(&sdCard::config,"r")){
@@ -802,228 +875,66 @@
          }
         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\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");        
+        pc.printf("Iniciando conexao wifi.\r\n");
+        return true;        
     }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;
+            return false;
          }           
-        
-        //Mudando mode para AP e Station
-        if(modemCom::sendToModem("AT+CWMODE=3\r\n",1,&modemCom::status.OK,NULL,10000,1,1)) {
-            pc.printf("Modo AP+STATION aceito.\n");
-        }
-        
-        //AT+CWJAP=\"\",\"\"\r\n
-        sprintf(aux,"AT+CWJAP=\"%s\",\"%s\"\r\n",modemCom::status.ssid,modemCom::status.password);
-        if(modemCom::sendToModem(aux,1,&modemCom::status.OK,NULL,10000,1,1)) {
-            pc.printf("WiFi Conectado.\n");
-        }
-            
-        //AT+CIPSERVER=1,80
-        if(modemCom::sendToModem("AT+CIPMUX=1\r\n",1,&modemCom::status.OK,NULL,250,4,1)) {
-            pc.printf("Recebeu o comando AT+CIPMUX=1.\n");
-        }
-        
-        //AT+CIPSERVER=1,80
-        sprintf(aux,"AT+CIPSERVER=1,%s\r\n",modemCom::status.port);
-        if(modemCom::sendToModem(aux,1,&modemCom::status.OK,NULL,250,4,1)) {
-            pc.printf("Recebeu o comando <%s>.\n",aux);
-        }
-    
-        if(modemCom::sendToModem("AT+CIPSTO=60\r\n",1,&modemCom::status.OK,NULL,250,4,1)) {
-            pc.printf("Recebeu o comando AT+CIPSTO=60.\n");
-        }        
-        
-        sprintf(aux,"AT+CWSAP_CUR=\"DROME_WIFI_%s\",\"VsaDROME\",5,3\r\n",modemCom::status.MAC);
-        if(modemCom::sendToModem(aux,1,&modemCom::status.OK,NULL,250,4,1)) {
-            pc.printf("Recebeu o comando %s.\n",aux);
-        }
-
-        
-        if(modemCom::sendToModem("AT+CIPAP_CUR=\"192.168.4.1\",\"192.168.4.1\",\"255.255.255.0\"\r\n",1,&modemCom::status.OK,NULL,250,4,1)) {
-            pc.printf("Recebeu o comando AT+CIPAP_CUR=\"192.168.4.1\",\"192.168.4.1\",\"255.255.255.0\".\n");
-        }    
-        
-        if(modemCom::sendToModem("AT+CWDHCP_CUR=2,1\r\n",1,&modemCom::status.OK,NULL,250,4,1)) {
-            pc.printf("Recebeu o comando AT+CWDHCP_CUR=2,1.\n");
-        }
-
-}
-
-void modemCom::processaPacote(void const *args){
-    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);   
-    
-    //Reconhecimento dos status
-    modemCom::status.PROMPT_ENVIO_COMMAND_MODE=0;
-    ptr=strstr(modemCom::bufIn,"> ");
-    if(ptr) {
-        
-        modemCom::status.serverConnected=1;
-        modemCom::status.commandMode=1;
-        modemCom::status.NO_CARRIER=0;
-        modemCom::status.PROMPT_ENVIO_COMMAND_MODE=1;
-    }
-    modemCom::status.OK=0;
-    ptr=strstr(modemCom::bufIn,"OK\r");
-    if(ptr) {        
-        modemCom::status.OK=1;
-    }        
-
-    
-
-    modemCom::status.busy=false;
-    ptr=strstr(modemCom::bufIn,"busy s...");
-    if(ptr) {
-        
-        modemCom::status.busy=1;
-    }
-    
-    modemCom::status.SEND_OK=0;
-    ptr=strstr(modemCom::bufIn,"SEND OK");
-    if(ptr) {
-        
-        modemCom::status.SEND_OK=1;
-    }
-
-    modemCom::status.ERROR=0;
-    ptr=strstr(modemCom::bufIn,"ERROR");
-    if(ptr) {
-        
-        modemCom::status.ERROR=1;
-        modemCom::status.OK=0;
-    }    
-    ptr=strstr(modemCom::bufIn,"DNS Fail");
-    if(ptr) {
-        modemCom::status.dnsError=1;
-        modemCom::status.ERROR=1;
-        modemCom::status.OK=0;
-    }    
-   
-    //modemCom::status.CLOSED=false;    
-    ptr=strstr(modemCom::bufIn,"CLOSED");
-    if(ptr) {        
-        modemCom::status.CLOSED=1;
-    }
-    
-    if(strstr(modemCom::bufIn,"GET /")){
-        getFound = true;
-    }
-    
-    //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,"");
-        }    
-    }    
-    
-    IPDNumBytes = 0;
-    ptr = strstr(modemCom::bufIn,"+IPD");
-    if(ptr!=NULL){
-        //+IPD,0,480:GET
-        strtok(ptr,",");           //Separando +IPD
-        
-        ptr = strtok(NULL,",");    //Pegando o numero da conexão
-        connID = atoi(ptr);
-        
-        ptr = strtok(NULL,":");    //Pegando o numero de caracteres IPD
-        IPDNumBytes = atoi(ptr);
-        
-        modemCom::bufIn = strtok(NULL,"");
-        
-        //printf("Recebido pacote via conexao %u com %lu bytes.\n",connID,IPDNumBytes);
-        
-    }     
-    
-    if(IPDNumBytes && modemCom::status.recebendoArquivoDoServer && (strstr(modemCom::bufIn,"CONNECT")==NULL) && (strstr(modemCom::bufIn,"*ServerCommand*")==NULL) ){
-
-        sdCard::insereDadosArquivoHex(&sdCard::tempFile,modemCom::bufIn,IPDNumBytes);
-        //sdCard::insereDadosArquivo(&sdCard::tempFile,modemCom::bufIn,IPDNumBytes);
-        sdCard::nBytesArquivoRecebidos+=IPDNumBytes;
-        bufModem.del();
-        sprintf(modemCom::bufIn,"AT+CIPSEND=%u,%lu\r\n",connID,10);
-        modem.puts(modemCom::bufIn);
-        timeOut = 5000;
-        while(timeOut && (strstr(bufModem.getRowBuffer(),">")==NULL)){
-            osDelay(1);
-            timeOut--;
-        }
-        modemCom::status.timeOut = 30;
-        modem.puts("sendData\r\n");
-        pc.printf("sendData recebidos %lu bytes\n",sdCard::nBytesArquivoRecebidos/2);
-        diversos::wdt.kick();
-        return;
-    }
-    
-    //Reconhecendo GET HTTP e atendendo com um servidor web    
-    if(getFound && strstr(modemCom::bufIn,"HTTP/1.1")){
-        ptr=strstr(modemCom::bufIn,"GET /");
-        if(ptr) {            
-            ptr = strtok(ptr,"/");
-            ptr = strtok(NULL," ");
-            bufInPtr = ptr;
-            strcpy(webServerBuff,ptr);
-            modemCom::atendendoWebServer = true;
-            modemCom::status.connIDWebServer = connID;
-        }
-    }
-    
-    ptr=strstr(modemCom::bufIn,"*ServerAck*");
-    if(ptr) {        
-        modemCom::status.ServerAck=1;        
-    }    
-    
-    ptr=strstr(modemCom::bufIn,"*ServerCommand*");
-    if(ptr) {        
-        scanPtr = strtok (ptr,"\\");
-        scanPtr = strtok (NULL,">");        
-        strcpy(commands::buffer,scanPtr);
-        pc.printf("Comandos <%s>.\n",commands::buffer);
-        executaComandoServer = true;
-    }
 }
 
 uint8_t modemCom::inicializaModem(void)
-{
-    //uint8_t maxTentativas=0;
-
-    //char config[255];
-    //char *ptr;
-    //char *buf;
-    //buf = bufModem.getRowBuffer();
-    
+{    
+    char aux[255];
     modemCom::timeOutModem = 10;
     modemCom::status.emComunicacao = true;    
-
     if(modemCom::sendToModem("ATE0\r\n",1,&modemCom::status.OK,NULL,1000,10,1)) {
         pc.printf("Recebeu o comando ATE0.\n");
     }
 
-    modemCom::leMAC();    
+    modemCom::leMAC();
+    
+    modemCom::leParametrosConexaoSDCard();
+    
+    //Colocando aqui o conteudo de conectaWiFi
+    //Mudando mode para AP e Station
+    if(modemCom::sendToModem("AT+CWMODE=3\r\n",1,&modemCom::status.OK,NULL,10000,1,1)) {
+        pc.printf("Modo AP+STATION aceito.\n");
+    }    
+        
+    
+    if(modemCom::sendToModem("AT+CIPMUX=1\r\n",1,&modemCom::status.OK,NULL,250,4,1)) {
+        pc.printf("Recebeu o comando AT+CIPMUX=1.\n");
+    }
+    
+        
+    //AT+CIPSERVER=1,portaLidaDoSDCard
+    sprintf(aux,"AT+CIPSERVER=1,%s\r\n",modemCom::status.port);
+    if(modemCom::sendToModem(aux,1,&modemCom::status.OK,NULL,250,4,1)) {
+        pc.printf("Recebeu o comando <%s>.\n",aux);
+    }
+
+    if(modemCom::sendToModem("AT+CIPSTO=60\r\n",1,&modemCom::status.OK,NULL,250,4,1)) {
+        pc.printf("Recebeu o comando AT+CIPSTO=60.\n");
+    }        
+    
+    sprintf(aux,"AT+CWSAP_CUR=\"DROME_WIFI_%s\",\"VsaDROME\",5,3\r\n",modemCom::status.MAC);
+    if(modemCom::sendToModem(aux,1,&modemCom::status.OK,NULL,250,4,1)) {
+        pc.printf("Recebeu o comando %s.\n",aux);
+    }
+
+    
+    if(modemCom::sendToModem("AT+CIPAP_CUR=\"192.168.4.1\",\"192.168.4.1\",\"255.255.255.0\"\r\n",1,&modemCom::status.OK,NULL,250,4,1)) {
+        pc.printf("Recebeu o comando AT+CIPAP_CUR=\"192.168.4.1\",\"192.168.4.1\",\"255.255.255.0\".\n");
+    }    
+    
+    if(modemCom::sendToModem("AT+CWDHCP_CUR=2,1\r\n",1,&modemCom::status.OK,NULL,250,4,1)) {
+        pc.printf("Recebeu o comando AT+CWDHCP_CUR=2,1.\n");
+    }
         
     modemCom::status.emComunicacao = false;
     return 1;