teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Revision:
2:55b7b466e742
Parent:
1:0e0967c88590
Child:
4:13ff9c81dc10
--- a/main.cpp	Thu Mar 30 19:54:09 2017 +0000
+++ b/main.cpp	Wed May 10 12:57:13 2017 +0000
@@ -19,6 +19,7 @@
     device ** dispositivos = NULL;
     uint8_t devices=0;
     uint8_t alarmes=0;
+    uint8_t leituras=0;
     uint8_t qtdSchedules=0;
 //Devices
 
@@ -55,11 +56,12 @@
 
 CircularBuffer bufModem(maxBufInModem);    
 CircularBuffer bufPC(128);
-CircularBuffer sdCardBuf(2048);
+CircularBuffer sdCardBuf(1024);
 
 uint8_t enviaDadosPorAlarme = 255;
-bool reportaMudancaAoServer;
+//bool reportaMudancaAoServer;
 bool executaComandoServer;
+bool enviaStatusAoServer = false;
 //typeConfig flashConfig;  
 
 Serial pc(USBTX, USBRX); //Instancia de recurso Serial uart pc
@@ -102,7 +104,7 @@
  strcpy(flashConfig.senha[2],"tim");
  strcpy(flashConfig.senha[3],"oi"); 
 
- strcpy(flashConfig.serverAddress,"www.vitaesolucoes.com.br"); 
+ strcpy(flashConfig.serverAddress,serverAddress); 
  
  strcpy(flashConfig.serverPort,"80"); 
  
@@ -181,7 +183,7 @@
         osSignalWait(0x1,1000); //Executo compulsoriamente mesmo que não haja sinal num periodo de 1 segundo
         if(serialPC::startTimer_pacote){
           serialPC::startTimer_pacote = false;
-          osTimerStart(serialPC::timer_pacote,250);            
+          osTimerStart(serialPC::timer_pacote,2000);            
         }
         if(serialModem::startTimer_pacote){
           serialModem::startTimer_pacote = false;
@@ -205,7 +207,7 @@
 osThreadDef(threadProcessaPacote, osPriorityNormal, DEFAULT_STACK_SIZE);
 
 
-//Thread que gerencia as comunicacoes (RAD - SERVER)
+//Thread que gerencia as comunicacoes (DROME - SERVER)
 osThreadId idThreadComunicacoes;
 void threadComunicacoes(void const *args){
     //Esta thread faz todo o tratamento de comunicação.    
@@ -236,6 +238,17 @@
             diversos::wdt.kick(90.0);
             modemCom::status.emComunicacao = false;
             eventosRTC::rotina15Minutos = false;
+        }
+        
+        if(enviaStatusAoServer){
+            //Faço aqui o que for devido.
+            enviaStatusAoServer = false;
+            pc.printf("Enviando status ao server.\n");            
+            modemCom::status.emComunicacao = true;            
+            diversos::wdt.kick(300.0);
+            modemCom::enviaDados(dadosStatus);
+            diversos::wdt.kick(90.0);
+            modemCom::status.emComunicacao = false;            
         }        
         
         if(sdCard::deleteSentFiles){
@@ -245,7 +258,7 @@
         
         if(arquivoEnvioPointer!=NULL){            
             pc.printf("Enviando o arquivo <%s> ao server.\n",arquivoEnvioPointer->nome);
-            if(modemCom::postFileCommandMode("www.vitaesolucoes.com.br","/drome/parser/index.php",arquivoEnvioPointer)){
+            if(modemCom::postFileCommandMode(serverAddress,"/drome/parser/index.php",arquivoEnvioPointer)){
                 pc.printf("Enviado o arquivo <%s>.\n",arquivoEnvioPointer->nome);
                 arquivoEnvioPointer = NULL;        
             }else{
@@ -297,10 +310,10 @@
         criaDevices(sdCard::devices.fp);
         if(devices){
             configuraDevices(sdCard::devices.fp);
-            printf("Dispositivos configurados.\n");
-            testaTudoDevices();
+            printf("Dispositivos configurados.\n");            
         }
         sdCard::fechaArquivo(&sdCard::devices);
+        if(devices){testaTudoDevices();}
     }    
 }
 
@@ -359,6 +372,11 @@
 
 void verificaSaidasDigitais(){
     SD_OE_R = 1;
+    /*if(SD_FAULT){
+        pc.printf("Fault\r\n");
+    }else{
+        pc.printf("No Fault\r\n");
+     }*/
 }
 
 Serial modem(P0_10,P0_11); //Instancia de recurso Serial uart Modem 
@@ -384,7 +402,7 @@
     ESP_RESET = 1;    
     
     
-    reportaMudancaAoServer = true;
+    //reportaMudancaAoServer = true;
     modemCom::status.emComunicacao=false;       
     
     wait(5);    
@@ -394,49 +412,54 @@
     wait(2);
     //modemCom::enviaDados(dadosStatus);
     
-    pc.printf("Lido um RSSI de %d.\r\n",modemCom::getRSSI());
+    //pc.printf("Lido um RSSI de %d.\r\n",modemCom::getRSSI());
+    
+    //pc.printf("Size of schedules %lu, alarms %lu, readings %lu.\r\n",sizeof(schedule),sizeof(alarm),sizeof(reading));    
+    
+    eventosRTC::rotina15Minutos = true;    
     
     while(true){            
-        
-        if(eventosRTC::minutos){
-            //Executo abaixo a rotina de 1 minuto
-            writeReadingsToSD();
-            
-            eventosRTC::minutos = false;
-        }
-        
-        if(eventosRTC::rotina1segundo){
-            eventosRTC::rotina1segundo = false;    
-            
-            refreshSensoresTemperatura();            
+        if(!modemCom::status.recebendoArquivoDoServer){
+            if(eventosRTC::minutos){
+                //Executo abaixo a rotina de 1 minuto
+                writeReadingsToSD();
+                
+                eventosRTC::minutos = false;
+            }
             
-            if(enviaDadosPorAlarme!=255){
-                enviaDadosPorAlarme--;
-                if(enviaDadosPorAlarme==0){
-                    eventosRTC::rotina15Minutos=true;
-                    enviaDadosPorAlarme=255;
-                }
-            }            
-            leiturasAnalogicas();            
-            leiturasDigitais();            
-            verifyAlarms();
-            verificaSaidasDigitais();                  
-            pc.printf("\nMemoria RAM disponivel = %lu\n",diversos::memAvailable());
-            time_t seconds = time(NULL);
-            printf("%s\n", ctime(&seconds));            
-            pc.printf("\nEntrada 3 = %lu.\nEntrada 2 = %lu.\nEntrada 1 = %lu.\n\n",aiFiltrada[2],aiFiltrada[1],aiFiltrada[0]);            
-        }                
-        
-        if(eventosRTC::rotina10Segundos){                                    
-            //Executo abaixo a rotina de 10 segundos                                      
-            verifySchedules();
-            eventosRTC::rotina10Segundos = false;
-        }                
-        
-        /*if(eventosRTC::rotina15Minutos){
-            eventosRTC::rotina15Minutos = false;
-            //modemCom::writeStatusToSD();
-        }*/
+            if(eventosRTC::rotina1segundo){
+                eventosRTC::rotina1segundo = false;    
+                
+                refreshSensoresTemperatura();            
+                
+                if(enviaDadosPorAlarme!=255){
+                    enviaDadosPorAlarme--;
+                    if(enviaDadosPorAlarme==0){
+                        eventosRTC::rotina15Minutos=true;
+                        enviaDadosPorAlarme=255;
+                    }
+                }            
+                leiturasAnalogicas();            
+                leiturasDigitais();            
+                verifyAlarms();
+                verificaSaidasDigitais();                  
+                //pc.printf("\nMemoria RAM disponivel = %lu\n",diversos::memAvailable());
+                time_t seconds = time(NULL);
+                printf("%s\n", ctime(&seconds));            
+                //pc.printf("\nEntrada 3 = %lu.\nEntrada 2 = %lu.\nEntrada 1 = %lu.\n\n",aiFiltrada[2],aiFiltrada[1],aiFiltrada[0]);            
+            }                
+            
+            if(eventosRTC::rotina10Segundos){                                    
+                //Executo abaixo a rotina de 10 segundos                                      
+                verifySchedules();
+                eventosRTC::rotina10Segundos = false;
+            }                
+            
+            /*if(eventosRTC::rotina15Minutos){
+                eventosRTC::rotina15Minutos = false;
+                //modemCom::writeStatusToSD();
+            }*/
+        }
         
         if(executaComandoServer){
             executaComandoServer = false;
@@ -447,13 +470,8 @@
                 modemCom::atendendoWebServer = false;
                 pc.printf("Atendendo webServer.\r\n");
                 modemCom::webServer();                
-        }
-        /*
-        if(enviaSendData){
-            enviaSendData = false;
-            modemCom::sendBufferCommandMode(connID,"sendData\r\n",10);    
-        }
-        */      
+        }             
+        
         /*if(eventosRTC::rotina1hora){                        
             osDelay(1000); //Para dar tempo de a threadComunicações ver que tinha uma rotina de 1 hora agendada.
             eventosRTC::rotina1hora = false;