teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Committer:
brunofgc
Date:
Fri Jun 08 22:14:21 2018 +0000
Revision:
38:07d3907b74e5
Parent:
37:0e95c85f0160
teste de publish para compilar no mbed-cli

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brunofgc 0:1c0a769988ee 1 #include "diversos.h"
brunofgc 18:1eefda1f7736 2 // - 09/01/2018
brunofgc 0:1c0a769988ee 3 bool eventosRTC::segundos;
brunofgc 0:1c0a769988ee 4 bool eventosRTC::minutos;
brunofgc 0:1c0a769988ee 5 bool eventosRTC::rotina10Segundos;
brunofgc 18:1eefda1f7736 6 char eventosRTC::rotinaEnvioDeDados;
brunofgc 0:1c0a769988ee 7 bool eventosRTC::rotina1hora;
brunofgc 0:1c0a769988ee 8 bool eventosRTC::rotina1segundo;
brunofgc 0:1c0a769988ee 9 WatchdogTimer diversos::wdt;
brunofgc 0:1c0a769988ee 10 char commands::buffer[tamBufferCommands];
brunofgc 0:1c0a769988ee 11
brunofgc 0:1c0a769988ee 12
brunofgc 0:1c0a769988ee 13 uint32_t diversos::memAvailable(){
brunofgc 0:1c0a769988ee 14 char stackVariable;
brunofgc 0:1c0a769988ee 15 char *heap;
brunofgc 0:1c0a769988ee 16 uint32_t result;
brunofgc 0:1c0a769988ee 17 heap = (char*)malloc(1);
brunofgc 0:1c0a769988ee 18 result = (uint32_t) ((&stackVariable) - heap);
brunofgc 0:1c0a769988ee 19 free(heap);
brunofgc 0:1c0a769988ee 20 return result;
brunofgc 0:1c0a769988ee 21 }
brunofgc 0:1c0a769988ee 22
brunofgc 0:1c0a769988ee 23 void WatchdogTimer::kick(float s) {
brunofgc 0:1c0a769988ee 24 LPC_WDT->WDCLKSEL = 0x1; // Set CLK src to PCLK
brunofgc 0:1c0a769988ee 25 uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4
brunofgc 0:1c0a769988ee 26 LPC_WDT->WDTC = s * (float)clk;
brunofgc 0:1c0a769988ee 27 LPC_WDT->WDMOD = 0x3; // Enabled and Reset
brunofgc 0:1c0a769988ee 28 kick();
brunofgc 0:1c0a769988ee 29 }
brunofgc 0:1c0a769988ee 30 // "kick" or "feed" the dog - reset the watchdog timer
brunofgc 0:1c0a769988ee 31 // by writing this required bit pattern
brunofgc 0:1c0a769988ee 32 void WatchdogTimer::kick() {
brunofgc 0:1c0a769988ee 33 LPC_WDT->WDFEED = 0xAA;
brunofgc 0:1c0a769988ee 34 LPC_WDT->WDFEED = 0x55;
brunofgc 0:1c0a769988ee 35 }
brunofgc 0:1c0a769988ee 36
brunofgc 0:1c0a769988ee 37 /*double diversos::stringToFloat(char *p,uint16_t max){
brunofgc 0:1c0a769988ee 38 uint16_t caractere=0;
brunofgc 0:1c0a769988ee 39 double iPart=0.0,dPart=0.0,f=0.0,mult=0.1;
brunofgc 0:1c0a769988ee 40 while(*p != '.') {
brunofgc 0:1c0a769988ee 41 caractere++;
brunofgc 0:1c0a769988ee 42 if(caractere>(max-1)){return 0.0;}
brunofgc 0:1c0a769988ee 43 iPart = (iPart*10) + (double)((*(p++)-'0'));
brunofgc 0:1c0a769988ee 44 }
brunofgc 0:1c0a769988ee 45 p++;
brunofgc 0:1c0a769988ee 46 while(*p!= '\0') {
brunofgc 0:1c0a769988ee 47 if(caractere>(max-1)){return 0.0;}
brunofgc 0:1c0a769988ee 48 dPart += (double)(((*(p++)-'0'))*mult);
brunofgc 0:1c0a769988ee 49 mult /= 10;
brunofgc 0:1c0a769988ee 50 }
brunofgc 0:1c0a769988ee 51 f = iPart + dPart;
brunofgc 0:1c0a769988ee 52 return f;
brunofgc 0:1c0a769988ee 53 }*/
brunofgc 0:1c0a769988ee 54
brunofgc 0:1c0a769988ee 55 /*double diversos::stringToFloat(char *p,uint16_t max){
brunofgc 0:1c0a769988ee 56 uint16_t caractere=0;
brunofgc 0:1c0a769988ee 57 double iPart=0.0,dPart=0.0,f=0.0,mult=0.1;
brunofgc 0:1c0a769988ee 58 while(p[caractere] != '.'){
brunofgc 0:1c0a769988ee 59 caractere++;
brunofgc 0:1c0a769988ee 60 if(caractere>(max-1)){return 0.0;}
brunofgc 0:1c0a769988ee 61 iPart = (iPart*10) + (((uint8_t)p[caractere])-30);
brunofgc 0:1c0a769988ee 62 }
brunofgc 0:1c0a769988ee 63 caractere++;
brunofgc 0:1c0a769988ee 64 while(p[caractere]!= '\0'){
brunofgc 0:1c0a769988ee 65 if(caractere>(max-1)){return 0.0;}
brunofgc 0:1c0a769988ee 66 dPart += (((uint8_t)p[caractere])-30)*mult;
brunofgc 0:1c0a769988ee 67 mult /= 10;
brunofgc 0:1c0a769988ee 68 }
brunofgc 0:1c0a769988ee 69 f = iPart + dPart;
brunofgc 0:1c0a769988ee 70 return f;
brunofgc 0:1c0a769988ee 71 }*/
brunofgc 0:1c0a769988ee 72
brunofgc 3:9598af355293 73 void diversos::strReplace(char *str, char *find, char *replace){
brunofgc 3:9598af355293 74 char aux[100];
brunofgc 3:9598af355293 75 char *ptr;
brunofgc 3:9598af355293 76 char replaced = 0;
brunofgc 3:9598af355293 77 char maxIterations = 0;
brunofgc 3:9598af355293 78 replaced = 0;
brunofgc 3:9598af355293 79 strcpy(aux,"");
brunofgc 3:9598af355293 80 ptr = strtok(str,find);
brunofgc 3:9598af355293 81 while((ptr!=NULL)&&(maxIterations<9)){
brunofgc 3:9598af355293 82 replaced = 1;
brunofgc 3:9598af355293 83 maxIterations++;
brunofgc 3:9598af355293 84 strcat(aux,ptr);
brunofgc 3:9598af355293 85 strcat(aux,replace);
brunofgc 3:9598af355293 86 ptr = strtok(NULL,find);
brunofgc 3:9598af355293 87 pc.printf("Tirando <%s> em <%s>.\r\n",find,str);
brunofgc 3:9598af355293 88 }
brunofgc 3:9598af355293 89 if(replaced){
brunofgc 3:9598af355293 90 aux[strlen(aux)-1]=0;
brunofgc 3:9598af355293 91 strcpy(str,aux);
brunofgc 3:9598af355293 92 }
brunofgc 3:9598af355293 93 //--------------------
brunofgc 3:9598af355293 94 }
brunofgc 3:9598af355293 95
brunofgc 25:a6da63ed025b 96 bool isxdigit(char c){
brunofgc 25:a6da63ed025b 97 if((c>47)&&(c<58)){return true;}
brunofgc 25:a6da63ed025b 98 if((c>64)&&(c<71)){return true;}
brunofgc 25:a6da63ed025b 99 if((c>96)&&(c<103)){return true;}
brunofgc 25:a6da63ed025b 100 return false;
brunofgc 25:a6da63ed025b 101 }
brunofgc 25:a6da63ed025b 102
brunofgc 25:a6da63ed025b 103 void diversos::urldecode2(char *dst, const char *src){
brunofgc 25:a6da63ed025b 104 char a, b;
brunofgc 25:a6da63ed025b 105 while (*src) {
brunofgc 25:a6da63ed025b 106 if ((*src == '%') &&
brunofgc 25:a6da63ed025b 107 ((a = src[1]) && (b = src[2])) &&
brunofgc 25:a6da63ed025b 108 (isxdigit(a) && isxdigit(b))) {
brunofgc 25:a6da63ed025b 109 if (a >= 'a')
brunofgc 25:a6da63ed025b 110 a -= 'a'-'A';
brunofgc 25:a6da63ed025b 111 if (a >= 'A')
brunofgc 25:a6da63ed025b 112 a -= ('A' - 10);
brunofgc 25:a6da63ed025b 113 else
brunofgc 25:a6da63ed025b 114 a -= '0';
brunofgc 25:a6da63ed025b 115 if (b >= 'a')
brunofgc 25:a6da63ed025b 116 b -= 'a'-'A';
brunofgc 25:a6da63ed025b 117 if (b >= 'A')
brunofgc 25:a6da63ed025b 118 b -= ('A' - 10);
brunofgc 25:a6da63ed025b 119 else
brunofgc 25:a6da63ed025b 120 b -= '0';
brunofgc 25:a6da63ed025b 121 *dst++ = 16*a+b;
brunofgc 25:a6da63ed025b 122 src+=3;
brunofgc 25:a6da63ed025b 123 } else if (*src == '+') {
brunofgc 25:a6da63ed025b 124 *dst++ = ' ';
brunofgc 25:a6da63ed025b 125 src++;
brunofgc 25:a6da63ed025b 126 } else {
brunofgc 25:a6da63ed025b 127 *dst++ = *src++;
brunofgc 25:a6da63ed025b 128 }
brunofgc 25:a6da63ed025b 129 }
brunofgc 25:a6da63ed025b 130 *dst++ = '\0';
brunofgc 25:a6da63ed025b 131 }
brunofgc 25:a6da63ed025b 132
brunofgc 4:13ff9c81dc10 133 void diversos::processaPulsosEDs(){
brunofgc 6:d4ebbaaba295 134 if(ED1){pulsosEDs[0]++;}
brunofgc 6:d4ebbaaba295 135 if(ED2){pulsosEDs[1]++;}
brunofgc 6:d4ebbaaba295 136 if(ED3){pulsosEDs[2]++;}
brunofgc 4:13ff9c81dc10 137 }
brunofgc 4:13ff9c81dc10 138
brunofgc 0:1c0a769988ee 139 void diversos::progressBar(uint32_t progresso,uint32_t total){
brunofgc 0:1c0a769988ee 140 int i,j;
brunofgc 0:1c0a769988ee 141 char maxTam = 20;
brunofgc 0:1c0a769988ee 142 char engrenagem[4]={179,0x2F,0x2D,0x5C};
brunofgc 0:1c0a769988ee 143
brunofgc 0:1c0a769988ee 144 j=((double)progresso/(double)total)*maxTam;
brunofgc 0:1c0a769988ee 145 pc.printf("%c%c%c<",179,engrenagem[(unsigned int)progresso%4],179);
brunofgc 0:1c0a769988ee 146 for(i=0;i<maxTam;i++){
brunofgc 0:1c0a769988ee 147 if(i<=j){
brunofgc 0:1c0a769988ee 148 pc.printf("%c",178);
brunofgc 0:1c0a769988ee 149 }else{
brunofgc 0:1c0a769988ee 150 pc.printf("%c",176);
brunofgc 0:1c0a769988ee 151 }
brunofgc 0:1c0a769988ee 152 }
brunofgc 0:1c0a769988ee 153 pc.printf("> %3.0f%% Progresso %5lu de %5lu\r ",((double)progresso/(double)total)*100,progresso,total);
brunofgc 0:1c0a769988ee 154 }
brunofgc 0:1c0a769988ee 155
brunofgc 13:b9183b4bc049 156
brunofgc 0:1c0a769988ee 157 void commands::exec(uint8_t idConnection){
brunofgc 0:1c0a769988ee 158 char *ptr,*pCharFile,*ptrComando;
brunofgc 0:1c0a769988ee 159 char msg[100];
brunofgc 0:1c0a769988ee 160 uint16_t currentCur,totalLengthCommands;
brunofgc 0:1c0a769988ee 161 static uint16_t fileCheckSum16BIT,checkSum16BIT_Lido;
brunofgc 7:ae9c47f62946 162
brunofgc 0:1c0a769988ee 163 totalLengthCommands = strlen(commands::buffer);
brunofgc 0:1c0a769988ee 164 ptrComando = strtok(commands::buffer,";");
brunofgc 0:1c0a769988ee 165
brunofgc 0:1c0a769988ee 166 do{
brunofgc 2:55b7b466e742 167
brunofgc 2:55b7b466e742 168
brunofgc 2:55b7b466e742 169
brunofgc 0:1c0a769988ee 170 ptr=strstr(ptrComando,"DELETE_SENT_FILES");
brunofgc 11:631bea162800 171 if(ptr) {
brunofgc 0:1c0a769988ee 172 sdCard::deleteSentFiles = true;
brunofgc 0:1c0a769988ee 173 }
brunofgc 0:1c0a769988ee 174
brunofgc 0:1c0a769988ee 175 ptr=strstr(ptrComando,"SET_RTC:");
brunofgc 0:1c0a769988ee 176 if(ptr) {
brunofgc 0:1c0a769988ee 177 ptr = strtok(ptr,":");
brunofgc 0:1c0a769988ee 178 ptr = strtok(NULL,";");
brunofgc 0:1c0a769988ee 179 set_time(atoi(ptr));
brunofgc 0:1c0a769988ee 180 time_t seconds = time(NULL);
brunofgc 0:1c0a769988ee 181 pc.printf("Horario atualizado pelo server %s",ctime(&seconds));
brunofgc 0:1c0a769988ee 182 }
brunofgc 0:1c0a769988ee 183
brunofgc 0:1c0a769988ee 184 ptr=strstr(ptrComando,"sendArmazenamento");
brunofgc 33:a60abda630f7 185 if(ptr) {
brunofgc 29:823a9da3696b 186 sprintf(msg,"sendArmazenamento_ack");
brunofgc 29:823a9da3696b 187 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 33:a60abda630f7 188 eventosRTC::rotinaEnvioDeDados=maxTentativasEnvioDados;
brunofgc 33:a60abda630f7 189 modemCom::timeOutEnvioDados=maxTimeEnvioDados;
brunofgc 29:823a9da3696b 190 }
brunofgc 29:823a9da3696b 191
brunofgc 29:823a9da3696b 192 ptr=strstr(ptrComando,"deleteArmazenamento");
brunofgc 29:823a9da3696b 193 if(ptr) {
brunofgc 29:823a9da3696b 194 sdCard::deleteBanks(2);
brunofgc 29:823a9da3696b 195 sprintf(msg,"deleteArmazenamento_ack");
brunofgc 29:823a9da3696b 196 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 197 }
brunofgc 0:1c0a769988ee 198
brunofgc 0:1c0a769988ee 199 ptr=strstr(ptrComando,"StartSendFile");
brunofgc 0:1c0a769988ee 200 if(ptr){
brunofgc 0:1c0a769988ee 201 modemCom::status.timeOut=100;
brunofgc 13:b9183b4bc049 202 sdCard::nBytesArquivoRecebidos = 0;
brunofgc 14:c0162ab2a951 203 sdCard::checkSum = 0;
brunofgc 0:1c0a769988ee 204 strtok(ptr,",");//Descartando inicio
brunofgc 0:1c0a769988ee 205 pCharFile = strtok(NULL,",");//Selecionando nome do arquivo
brunofgc 0:1c0a769988ee 206 strcpy(sdCard::nomeArquivoEmRecebimento,pCharFile);
brunofgc 0:1c0a769988ee 207 pCharFile = strtok(NULL,";");//Selecionando string checkSum16BIT
brunofgc 0:1c0a769988ee 208 fileCheckSum16BIT = atoi(pCharFile);
brunofgc 0:1c0a769988ee 209 remove("/sd/RAD/tempFile.bin");
brunofgc 0:1c0a769988ee 210 pc.printf("Iniciando recepcao do server arquivo deviceCfg.\n");
brunofgc 33:a60abda630f7 211 modemCom::status.recebendoArquivoDoServer = 250;
brunofgc 34:348991c54ff3 212 diversos::wdt.kick(180.0);
brunofgc 22:cb832a9bc704 213
brunofgc 22:cb832a9bc704 214
brunofgc 29:823a9da3696b 215 /*
brunofgc 22:cb832a9bc704 216 sprintf(msg,"AT+CIPSEND=%u,%lu\r\n",idConnection,10);
brunofgc 22:cb832a9bc704 217 if(modemCom::sendToModem(msg,1,&modemCom::status.OK,NULL,20,3,1000)){
brunofgc 22:cb832a9bc704 218 modemCom::sendToModem("sendData\r\n",0,NULL,NULL,20,3,1000);
brunofgc 22:cb832a9bc704 219 }
brunofgc 29:823a9da3696b 220 */
brunofgc 29:823a9da3696b 221 sprintf(msg,"sendData\r\n");
brunofgc 29:823a9da3696b 222 modemCom::cipSend(idConnection,msg,10);
brunofgc 22:cb832a9bc704 223 /*
brunofgc 0:1c0a769988ee 224 modem.puts(modemCom::bufIn);
brunofgc 0:1c0a769988ee 225 osDelay(100);
brunofgc 22:cb832a9bc704 226 modem.puts("sendData\r\n");*/
brunofgc 0:1c0a769988ee 227
brunofgc 22:cb832a9bc704 228 //pc.printf("sendData\n");
brunofgc 29:823a9da3696b 229 modemCom::timeOutModem = 150;
brunofgc 0:1c0a769988ee 230 return;
brunofgc 0:1c0a769988ee 231 }
brunofgc 0:1c0a769988ee 232
brunofgc 0:1c0a769988ee 233 ptr=strstr(ptrComando,"StopSendFile");
brunofgc 0:1c0a769988ee 234 if(ptr){
brunofgc 14:c0162ab2a951 235 pc.printf("Finalizando recepcao de arquivo.\n");
brunofgc 14:c0162ab2a951 236 checkSum16BIT_Lido = sdCard::checkSum;//sdCard::calcCheckSum16BITFile("/sd/RAD/tempFile.bin");
brunofgc 14:c0162ab2a951 237 pc.printf("Feito o calculo de CRC = %lu.\n",checkSum16BIT_Lido);
brunofgc 0:1c0a769988ee 238 if(fileCheckSum16BIT == checkSum16BIT_Lido){
brunofgc 29:823a9da3696b 239 if(sdCard::file_rename("/sd/RAD/tempFile.bin",sdCard::nomeArquivoEmRecebimento)){
brunofgc 0:1c0a769988ee 240 sprintf(msg,"File Received checkSum16BIT_Lido <%lu>.\r\n",checkSum16BIT_Lido);
brunofgc 0:1c0a769988ee 241 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 242 pc.printf("File Received checkSum16BIT_Lido <%lu>.\r\n",checkSum16BIT_Lido);
brunofgc 0:1c0a769988ee 243
brunofgc 21:b9315cdd9275 244 if(strstr(sdCard::nomeArquivoEmRecebimento,"config.bin")!=NULL){
brunofgc 21:b9315cdd9275 245 pc.printf("Resetando o drome.\r\n");
brunofgc 21:b9315cdd9275 246 hardwareReset=true;
brunofgc 21:b9315cdd9275 247 }
brunofgc 21:b9315cdd9275 248
brunofgc 0:1c0a769988ee 249 if(strstr(sdCard::nomeArquivoEmRecebimento,"devices.cfg")!=NULL){
brunofgc 10:263c093f8977 250 sdCard::deleteBanks(2);
brunofgc 0:1c0a769988ee 251 pc.printf("Resetando o drome.\r\n");
brunofgc 0:1c0a769988ee 252 hardwareReset=true;
brunofgc 0:1c0a769988ee 253 }
brunofgc 0:1c0a769988ee 254
brunofgc 13:b9183b4bc049 255 if(strstr(sdCard::nomeArquivoEmRecebimento,"firmware.bin")!=NULL){
brunofgc 14:c0162ab2a951 256 pc.printf("Chamando bootloader.\r\n");
brunofgc 13:b9183b4bc049 257 callBootLoader = true;
brunofgc 13:b9183b4bc049 258 }
brunofgc 0:1c0a769988ee 259 }else{
brunofgc 0:1c0a769988ee 260 //modemCom::sendBufferCommandMode(2,"FileCorrupted.\r\n",strlen("FileCorrupted.\r\n"));
brunofgc 4:13ff9c81dc10 261 sprintf(msg,"erro");
brunofgc 0:1c0a769988ee 262 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 263 pc.printf("Recebido correto mas n foi possivel renomear arquivo.\r\n");
brunofgc 17:9b0eecbacbaa 264 }
brunofgc 0:1c0a769988ee 265 }else{
brunofgc 0:1c0a769988ee 266 /*sprintf(diversos::msg,"File Corrupted checkSum16BIT_Lido <%lu>.\r\n",checkSum16BIT_Lido);
brunofgc 0:1c0a769988ee 267 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 20:da1b8d80ba00 268 sprintf(msg,"erro");
brunofgc 0:1c0a769988ee 269 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 270 pc.printf("File Corrupted checkSum16BIT_Lido <%lu>.\r\n",checkSum16BIT_Lido);
brunofgc 0:1c0a769988ee 271 }
brunofgc 29:823a9da3696b 272 modemCom::status.recebendoArquivoDoServer = 0;
brunofgc 9:cf406384efd9 273 modemCom::timeOutModem = 50;
brunofgc 29:823a9da3696b 274 modemCom::status.timeOut = 30;
brunofgc 0:1c0a769988ee 275 }
brunofgc 0:1c0a769988ee 276
brunofgc 0:1c0a769988ee 277 /*ptr=strstr(ptrComando,"requestFile,");
brunofgc 0:1c0a769988ee 278 if(ptr){
brunofgc 0:1c0a769988ee 279 FILE *fp;
brunofgc 0:1c0a769988ee 280 char c;
brunofgc 0:1c0a769988ee 281 strtok(ptr,",");
brunofgc 0:1c0a769988ee 282 pCharFile = strtok(NULL,";");
brunofgc 0:1c0a769988ee 283
brunofgc 0:1c0a769988ee 284 fp = fopen(pCharFile,"r");
brunofgc 0:1c0a769988ee 285 if(fp!=NULL){
brunofgc 0:1c0a769988ee 286 do{
brunofgc 0:1c0a769988ee 287 c = fgetc(fp);
brunofgc 0:1c0a769988ee 288 if(!feof(fp)){modem.printf("%c",c);}
brunofgc 0:1c0a769988ee 289 modemCom::status.timeOut=10;
brunofgc 0:1c0a769988ee 290 }while(!feof(fp));
brunofgc 0:1c0a769988ee 291 fclose(fp);
brunofgc 0:1c0a769988ee 292 }else{
brunofgc 0:1c0a769988ee 293 modem.printf("Nao foi possivel abrir o arquivo.\n");
brunofgc 0:1c0a769988ee 294 }
brunofgc 0:1c0a769988ee 295 }*/
brunofgc 0:1c0a769988ee 296
brunofgc 1:0e0967c88590 297 ptr=strstr(ptrComando,"execAct:");
brunofgc 1:0e0967c88590 298 if(ptr){
brunofgc 1:0e0967c88590 299 char *pChar;
brunofgc 1:0e0967c88590 300 uint32_t actId;
brunofgc 1:0e0967c88590 301 pChar = strtok(ptr,":");
brunofgc 1:0e0967c88590 302 pChar = strtok(NULL,"");
brunofgc 1:0e0967c88590 303 actId = atoi(pChar);
brunofgc 30:8a06a85d8807 304 if(execAct(actId)){
brunofgc 1:0e0967c88590 305 sprintf(msg,"execAct_ack");
brunofgc 1:0e0967c88590 306 }else{
brunofgc 1:0e0967c88590 307 sprintf(msg,"execAct_nack");
brunofgc 1:0e0967c88590 308 }
brunofgc 1:0e0967c88590 309 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 7:ae9c47f62946 310 }
brunofgc 1:0e0967c88590 311
brunofgc 33:a60abda630f7 312 if(strstr(ptr,"enviaDadosAoServer")){
brunofgc 2:55b7b466e742 313 sprintf(msg,"ack");
brunofgc 2:55b7b466e742 314 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 33:a60abda630f7 315 eventosRTC::rotinaEnvioDeDados=maxTentativasEnvioDados;
brunofgc 33:a60abda630f7 316 modemCom::timeOutEnvioDados=maxTimeEnvioDados;
brunofgc 2:55b7b466e742 317 }
brunofgc 2:55b7b466e742 318
brunofgc 0:1c0a769988ee 319 ptr=strstr(ptrComando,"mbwrite:");
brunofgc 0:1c0a769988ee 320 if(ptr){
brunofgc 0:1c0a769988ee 321 uint8_t addr;
brunofgc 0:1c0a769988ee 322 uint16_t reg;
brunofgc 0:1c0a769988ee 323 uint32_t auxMod;
brunofgc 0:1c0a769988ee 324 char *pChar;
brunofgc 0:1c0a769988ee 325
brunofgc 1:0e0967c88590 326 //IR
brunofgc 1:0e0967c88590 327 if(strstr(ptr,"IR,")){
brunofgc 1:0e0967c88590 328 uint8_t freq=38,porta=0;
brunofgc 20:da1b8d80ba00 329 pChar = strtok(ptr,",");
brunofgc 1:0e0967c88590 330 freq = atoi(strtok(NULL,","));
brunofgc 20:da1b8d80ba00 331 porta = atoi(strtok(NULL,","));
brunofgc 1:0e0967c88590 332
brunofgc 7:ae9c47f62946 333 pChar = strtok(NULL,"S");
brunofgc 20:da1b8d80ba00 334 deserializaPacoteIR(pChar);
brunofgc 1:0e0967c88590 335 enviaComandoIR(freq,porta);
brunofgc 1:0e0967c88590 336 sprintf(msg,"WriteIR_ack");
brunofgc 1:0e0967c88590 337 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 1:0e0967c88590 338 }
brunofgc 1:0e0967c88590 339
brunofgc 0:1c0a769988ee 340 //Float
brunofgc 0:1c0a769988ee 341 if(strstr(ptr,"float,")){
brunofgc 0:1c0a769988ee 342 float v_float;
brunofgc 0:1c0a769988ee 343
brunofgc 0:1c0a769988ee 344 //Capturando parametros comuns
brunofgc 0:1c0a769988ee 345 pChar = strtok(ptr,",");
brunofgc 0:1c0a769988ee 346
brunofgc 0:1c0a769988ee 347 //Parametro 1
brunofgc 0:1c0a769988ee 348 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 349 addr = atoi(pChar);
brunofgc 0:1c0a769988ee 350
brunofgc 0:1c0a769988ee 351 //Parametro 2
brunofgc 0:1c0a769988ee 352 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 353 reg = atoi(pChar);
brunofgc 0:1c0a769988ee 354
brunofgc 0:1c0a769988ee 355 //Parametro 3
brunofgc 0:1c0a769988ee 356 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 357 //v_float = diversos::stringToFloat(pChar,50);
brunofgc 0:1c0a769988ee 358 v_float = atof(pChar);
brunofgc 1:0e0967c88590 359
brunofgc 1:0e0967c88590 360 //Envio o dado via Modbus
brunofgc 1:0e0967c88590 361 if(!modBusMaster1::writeFloat(addr,reg,1,&v_float)){
brunofgc 37:0e95c85f0160 362 //pc.printf("Valor <%f> escrito no registrador %lu do endereco modbus %u.\n",v_float,reg,addr);
brunofgc 0:1c0a769988ee 363 /*sprintf(diversos::msg,"WriteFloat_ack");
brunofgc 0:1c0a769988ee 364 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 0:1c0a769988ee 365
brunofgc 1:0e0967c88590 366 sprintf(msg,"WriteFloat_ack");
brunofgc 1:0e0967c88590 367 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 1:0e0967c88590 368 }else{
brunofgc 37:0e95c85f0160 369 //pc.printf("Erro ao escrever valor <%f> no registrador %lu do endereco modbus %u.\n",v_float,reg,addr);
brunofgc 1:0e0967c88590 370 /*sprintf(diversos::msg,"WriteFloat_nack");
brunofgc 1:0e0967c88590 371 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 1:0e0967c88590 372
brunofgc 1:0e0967c88590 373 sprintf(msg,"WriteFloat_nack");
brunofgc 0:1c0a769988ee 374 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 1:0e0967c88590 375 }
brunofgc 1:0e0967c88590 376 }
brunofgc 1:0e0967c88590 377
brunofgc 1:0e0967c88590 378 //PWM
brunofgc 1:0e0967c88590 379 if(strstr(ptr,"PWM,")){
brunofgc 1:0e0967c88590 380 float v_float;
brunofgc 1:0e0967c88590 381
brunofgc 1:0e0967c88590 382 //Capturando parametros comuns
brunofgc 1:0e0967c88590 383 pChar = strtok(ptr,",");
brunofgc 1:0e0967c88590 384
brunofgc 1:0e0967c88590 385 //Parametro 1
brunofgc 1:0e0967c88590 386 pChar = strtok(NULL,",");
brunofgc 1:0e0967c88590 387 addr = atoi(pChar);
brunofgc 1:0e0967c88590 388
brunofgc 1:0e0967c88590 389 //Parametro 2
brunofgc 1:0e0967c88590 390 pChar = strtok(NULL,",");
brunofgc 1:0e0967c88590 391 reg = atoi(pChar);
brunofgc 1:0e0967c88590 392
brunofgc 1:0e0967c88590 393 //Parametro 3
brunofgc 1:0e0967c88590 394 pChar = strtok(NULL,",");
brunofgc 1:0e0967c88590 395 //v_float = diversos::stringToFloat(pChar,50);
brunofgc 1:0e0967c88590 396 v_float = atof(pChar);
brunofgc 1:0e0967c88590 397
brunofgc 1:0e0967c88590 398 pc.printf("\r\n\r\nVerificando conteudo de pChar antes de converter para float <%s>.\r\n",pChar);
brunofgc 1:0e0967c88590 399
brunofgc 1:0e0967c88590 400 //Retirando a parte inteira referente ao periodo em us do pwm
brunofgc 1:0e0967c88590 401
brunofgc 1:0e0967c88590 402 auxMod = v_float/10;
brunofgc 1:0e0967c88590 403 v_float = v_float-(auxMod*10);
brunofgc 1:0e0967c88590 404 SD1.period_us(auxMod);
brunofgc 1:0e0967c88590 405 pwmPeriod = auxMod;
brunofgc 1:0e0967c88590 406 switch(reg){
brunofgc 1:0e0967c88590 407 case 0:
brunofgc 1:0e0967c88590 408 SD1.write(v_float);
brunofgc 1:0e0967c88590 409 break;
brunofgc 1:0e0967c88590 410 case 1:
brunofgc 1:0e0967c88590 411 SD2.write(v_float);
brunofgc 1:0e0967c88590 412 break;
brunofgc 1:0e0967c88590 413 case 2:
brunofgc 1:0e0967c88590 414 SD3.write(v_float);
brunofgc 1:0e0967c88590 415 break;
brunofgc 1:0e0967c88590 416 case 3:
brunofgc 1:0e0967c88590 417 SD4.write(v_float);
brunofgc 1:0e0967c88590 418 break;
brunofgc 1:0e0967c88590 419 case 4:
brunofgc 1:0e0967c88590 420 SD5.write(v_float);
brunofgc 1:0e0967c88590 421 break;
brunofgc 1:0e0967c88590 422 case 5:
brunofgc 1:0e0967c88590 423 SD6.write(v_float);
brunofgc 1:0e0967c88590 424 break;
brunofgc 0:1c0a769988ee 425 }
brunofgc 37:0e95c85f0160 426 //pc.printf("Valor puro %f, %lu escrito como periodo e %f como duty no reg %u.\n",v_float,auxMod,v_float,reg);
brunofgc 1:0e0967c88590 427 /*sprintf(diversos::msg,"WriteFloat_ack");
brunofgc 1:0e0967c88590 428 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 1:0e0967c88590 429
brunofgc 1:0e0967c88590 430 sprintf(msg,"WritePWM_ack");
brunofgc 1:0e0967c88590 431 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 432 }
brunofgc 0:1c0a769988ee 433
brunofgc 0:1c0a769988ee 434 //uint32_t
brunofgc 0:1c0a769988ee 435 if(strstr(ptr,"uint32_t,")){
brunofgc 0:1c0a769988ee 436 uint32_t v_uint32_t;
brunofgc 0:1c0a769988ee 437
brunofgc 0:1c0a769988ee 438 //Capturando parametros comuns
brunofgc 0:1c0a769988ee 439 pChar = strtok(ptr,",");
brunofgc 0:1c0a769988ee 440
brunofgc 0:1c0a769988ee 441 //Parametro 1
brunofgc 0:1c0a769988ee 442 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 443 addr = atoi(pChar);
brunofgc 0:1c0a769988ee 444
brunofgc 0:1c0a769988ee 445 //Parametro 2
brunofgc 0:1c0a769988ee 446 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 447 reg = atoi(pChar);
brunofgc 0:1c0a769988ee 448
brunofgc 0:1c0a769988ee 449 //Parametro 3
brunofgc 0:1c0a769988ee 450 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 451 v_uint32_t = atoi(pChar);
brunofgc 0:1c0a769988ee 452
brunofgc 0:1c0a769988ee 453 if(!modBusMaster1::writeRegister32BIT(addr,reg,1,&v_uint32_t)){
brunofgc 0:1c0a769988ee 454 pc.printf("Valor <%lu> escrito no registrador %lu do endereco modbus %u.\n",v_uint32_t,reg,addr);
brunofgc 0:1c0a769988ee 455 /*sprintf(diversos::msg,"Write_uint32_t_ack");
brunofgc 0:1c0a769988ee 456 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 0:1c0a769988ee 457
brunofgc 1:0e0967c88590 458 sprintf(msg,"Write_uint32_t_ack");
brunofgc 0:1c0a769988ee 459 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 460 }else{
brunofgc 0:1c0a769988ee 461 pc.printf("Erro ao escrever valor <%lu> no registrador %lu do endereco modbus %u.\n",v_uint32_t,reg,addr);
brunofgc 0:1c0a769988ee 462 /*sprintf(diversos::msg,"Write_uint32_t_nack");
brunofgc 0:1c0a769988ee 463 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 0:1c0a769988ee 464
brunofgc 1:0e0967c88590 465 sprintf(msg,"Write_uint32_t_nack");
brunofgc 0:1c0a769988ee 466 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 467 }
brunofgc 0:1c0a769988ee 468 }
brunofgc 0:1c0a769988ee 469
brunofgc 0:1c0a769988ee 470 //uint16_t
brunofgc 0:1c0a769988ee 471 if(strstr(ptr,"uint16_t,")){
brunofgc 0:1c0a769988ee 472 uint16_t v_uint16_t;
brunofgc 0:1c0a769988ee 473
brunofgc 0:1c0a769988ee 474 //Capturando parametros comuns
brunofgc 0:1c0a769988ee 475 pChar = strtok(ptr,",");
brunofgc 0:1c0a769988ee 476
brunofgc 0:1c0a769988ee 477 //Parametro 1
brunofgc 0:1c0a769988ee 478 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 479 addr = atoi(pChar);
brunofgc 0:1c0a769988ee 480
brunofgc 0:1c0a769988ee 481 //Parametro 2
brunofgc 0:1c0a769988ee 482 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 483 reg = atoi(pChar);
brunofgc 0:1c0a769988ee 484
brunofgc 0:1c0a769988ee 485 //Parametro 3
brunofgc 0:1c0a769988ee 486 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 487 v_uint16_t = atoi(pChar);
brunofgc 0:1c0a769988ee 488
brunofgc 0:1c0a769988ee 489 if(!modBusMaster1::writeRegister16BIT(addr,reg,1,&v_uint16_t)){
brunofgc 0:1c0a769988ee 490 pc.printf("Valor <%lu> escrito no registrador %lu do endereco modbus %u.\n",v_uint16_t,reg,addr);
brunofgc 0:1c0a769988ee 491 /*sprintf(diversos::msg,"Write_uint16_t_ack");
brunofgc 0:1c0a769988ee 492 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 0:1c0a769988ee 493
brunofgc 1:0e0967c88590 494 sprintf(msg,"Write_uint16_t_ack");
brunofgc 0:1c0a769988ee 495 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 496 }else{
brunofgc 0:1c0a769988ee 497 pc.printf("Erro ao escrever valor <%lu> no registrador %lu do endereco modbus %u.\n",v_uint16_t,reg,addr);
brunofgc 0:1c0a769988ee 498 /*sprintf(diversos::msg,"Write_uint16_t_nack");
brunofgc 0:1c0a769988ee 499 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg)); */
brunofgc 0:1c0a769988ee 500
brunofgc 1:0e0967c88590 501 sprintf(msg,"Write_uint16_t_nack");
brunofgc 0:1c0a769988ee 502 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 503 }
brunofgc 0:1c0a769988ee 504 }
brunofgc 0:1c0a769988ee 505
brunofgc 0:1c0a769988ee 506 //bit
brunofgc 0:1c0a769988ee 507 if(strstr(ptr,"bit,")){
brunofgc 0:1c0a769988ee 508 bool v_bool;
brunofgc 0:1c0a769988ee 509
brunofgc 0:1c0a769988ee 510 //Capturando parametros comuns
brunofgc 0:1c0a769988ee 511 pChar = strtok(ptr,",");
brunofgc 0:1c0a769988ee 512
brunofgc 0:1c0a769988ee 513 //Parametro 1
brunofgc 0:1c0a769988ee 514 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 515 addr = atoi(pChar);
brunofgc 0:1c0a769988ee 516
brunofgc 0:1c0a769988ee 517 //Parametro 2
brunofgc 0:1c0a769988ee 518 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 519 reg = atoi(pChar);
brunofgc 0:1c0a769988ee 520
brunofgc 0:1c0a769988ee 521 //Parametro 3
brunofgc 0:1c0a769988ee 522 pChar = strtok(NULL,",");
brunofgc 0:1c0a769988ee 523 v_bool = (atoi(pChar) > 0);
brunofgc 0:1c0a769988ee 524
brunofgc 5:7801f913384e 525 if(addr != enderecoControladoraVirtual){
brunofgc 0:1c0a769988ee 526 //writeSingleCoil(uint8_t,uint16_t,bool); //Endereço slave, registrador, bool
brunofgc 0:1c0a769988ee 527 if(!modBusMaster1::writeSingleCoil(addr,reg,v_bool)){
brunofgc 0:1c0a769988ee 528 pc.printf("Valor <%u> escrito no registrador %lu do endereco modbus %u.\n",v_bool,reg,addr);
brunofgc 0:1c0a769988ee 529 /*sprintf(diversos::msg,"Write_bool_ack");
brunofgc 0:1c0a769988ee 530 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 0:1c0a769988ee 531
brunofgc 1:0e0967c88590 532 sprintf(msg,"Write_bool_ack");
brunofgc 0:1c0a769988ee 533 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 534 }else{
brunofgc 0:1c0a769988ee 535 pc.printf("Erro ao escrever valor <%u> no registrador %lu do endereco modbus %u.\n",v_bool,reg,addr);
brunofgc 0:1c0a769988ee 536 /*sprintf(diversos::msg,"Write_bool_nack");
brunofgc 0:1c0a769988ee 537 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 0:1c0a769988ee 538
brunofgc 1:0e0967c88590 539 sprintf(msg,"Write_bool_nack");
brunofgc 0:1c0a769988ee 540 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 541 }
brunofgc 0:1c0a769988ee 542 }else{
brunofgc 0:1c0a769988ee 543 switch(reg){
brunofgc 0:1c0a769988ee 544 case 0:
brunofgc 0:1c0a769988ee 545 SD1.write(v_bool*1.0f);
brunofgc 0:1c0a769988ee 546 break;
brunofgc 0:1c0a769988ee 547 case 1:
brunofgc 0:1c0a769988ee 548 SD2.write(v_bool*1.0f);
brunofgc 0:1c0a769988ee 549 break;
brunofgc 0:1c0a769988ee 550 case 2:
brunofgc 0:1c0a769988ee 551 SD3.write(v_bool*1.0f);
brunofgc 0:1c0a769988ee 552 break;
brunofgc 0:1c0a769988ee 553 case 3:
brunofgc 0:1c0a769988ee 554 SD4.write(v_bool*1.0f);
brunofgc 0:1c0a769988ee 555 break;
brunofgc 0:1c0a769988ee 556 case 4:
brunofgc 0:1c0a769988ee 557 SD5.write(v_bool*1.0f);
brunofgc 0:1c0a769988ee 558 break;
brunofgc 0:1c0a769988ee 559 case 5:
brunofgc 0:1c0a769988ee 560 SD6.write(v_bool*1.0f);
brunofgc 0:1c0a769988ee 561 break;
brunofgc 0:1c0a769988ee 562 case 6:
brunofgc 0:1c0a769988ee 563 SD7 = v_bool;
brunofgc 0:1c0a769988ee 564 break;
brunofgc 0:1c0a769988ee 565 case 7:
brunofgc 0:1c0a769988ee 566 SD8 = v_bool;
brunofgc 0:1c0a769988ee 567 break;
brunofgc 0:1c0a769988ee 568 }
brunofgc 0:1c0a769988ee 569 pc.printf("Valor <%u> escrito no registrador %lu do endereco modbus %u.\n",v_bool,reg,addr);
brunofgc 0:1c0a769988ee 570 /*sprintf(diversos::msg,"Write_bool_ack");
brunofgc 0:1c0a769988ee 571 modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/
brunofgc 0:1c0a769988ee 572
brunofgc 1:0e0967c88590 573 sprintf(msg,"Write_bool_ack");
brunofgc 0:1c0a769988ee 574 modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg));
brunofgc 0:1c0a769988ee 575 }
brunofgc 0:1c0a769988ee 576 }
brunofgc 9:cf406384efd9 577 modemCom::status.timeOut=5;
brunofgc 0:1c0a769988ee 578 }
brunofgc 0:1c0a769988ee 579
brunofgc 0:1c0a769988ee 580 currentCur = strlen(ptrComando) + 1; //Aqui eu pego onde devo buscar novamente mais algum comando.
brunofgc 0:1c0a769988ee 581 if(currentCur>=totalLengthCommands){
brunofgc 0:1c0a769988ee 582 //modemCom::status.timeOut=10;
brunofgc 0:1c0a769988ee 583 ptrComando = NULL;
brunofgc 0:1c0a769988ee 584 }else{
brunofgc 0:1c0a769988ee 585 ptrComando = strtok(&ptrComando[currentCur],";");
brunofgc 0:1c0a769988ee 586 }
brunofgc 0:1c0a769988ee 587 }while(ptrComando != NULL);//Este loop executa cada instrução.
brunofgc 0:1c0a769988ee 588 pc.printf("Atendidos todos os comandos.\n");
brunofgc 0:1c0a769988ee 589 }