teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
Diff: main.cpp
- 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;