teste de publish
Diff: devices.cpp
- Revision:
- 2:ca3723da6668
- Parent:
- 1:3f9e5b86d9e4
- Child:
- 3:75223647cf3d
--- a/devices.cpp Thu Mar 30 19:53:22 2017 +0000 +++ b/devices.cpp Wed May 10 12:56:46 2017 +0000 @@ -35,7 +35,7 @@ } */ -uint8_t resizeArray(uint32_t atual, uint32_t novo, char **array,uint16_t sizeUnit) +/*uint8_t resizeArray(uint32_t atual, uint32_t novo, char **array,uint16_t sizeUnit) { uint32_t i; char *p = (char *) malloc(sizeUnit*novo); @@ -54,7 +54,7 @@ *array = p; return 1; -} +}*/ void writeReadingsToSD(){ int i; @@ -657,12 +657,7 @@ return; } - //printf("O tamanho da struct eh <%lu>.\n",sizeof(reading)); - - - if(resizeArray(this->numReadings, this->numReadings+1, (char **)&this->readings,sizeof(reading))) { - this->numReadings++; - } + this->numReadings++; if(strstr(linha,"float,")) { this->readings[this->numReadings-1].type=modBusType_float; @@ -720,17 +715,13 @@ char *pChar; if(strstr(linha,"alarmSet")) { - if(resizeArray(this->numAlarms, this->numAlarms+1, (char **)&this->alarms,sizeof(alarm))) { - + //Inicialização de contadores de alarme + //É necessário inicializar estes dados para quando a máquina de alarmes rodar ter um inicio correto. + this->alarms[this->numAlarms].secAlarm=0; + this->alarms[this->numAlarms].idAct=0; + this->alarms[this->numAlarms].alarmFound = false; //Inicialização de contadores de alarme - //É necessário inicializar estes dados para quando a máquina de alarmes rodar ter um inicio correto. - this->alarms[this->numAlarms].secAlarm=0; - this->alarms[this->numAlarms].idAct=0; - this->alarms[this->numAlarms].alarmFound = false; - //Inicialização de contadores de alarme - this->numAlarms++; - } } if(strstr(linha,"id:")) { @@ -875,14 +866,12 @@ //uint16_t aux16_t; char *pChar; - if(strstr(linha,"scheduleSet")) { - if(resizeArray(this->numSchedules, this->numSchedules+1, (char **)&this->schedules,sizeof(schedule))) { + if(strstr(linha,"scheduleSet")) { //Inicialização de contadores de schedules - //É necessário inicializar estes dados para quando a máquina de schedules rodar ter um inicio correto. - this->schedules[this->numSchedules].actSent = false; - //Inicialização de contadores de schedules - this->numSchedules++; - } + //É necessário inicializar estes dados para quando a máquina de schedules rodar ter um inicio correto. + this->schedules[this->numSchedules].actSent = false; + //Inicialização de contadores de schedules + this->numSchedules++; } if(strstr(linha,"id:")) { @@ -1341,22 +1330,60 @@ //dispositivos[i]->id=i; } - rewind(devicesCfg); + rewind(devicesCfg); return 1; } - - - int configuraDevices(FILE *devicesCfg) { uint16_t linhas=0; //uint16_t leituras = 0; - char linha[40]; + char linha[maxCaractereLeLinha]; uint8_t estadoConfiguracao=estadoConfiguracao_idle; - int8_t dispositivoEmConfiguracao = -1; + int8_t dispositivoEmConfiguracao = -1; + + while(fgets(linha,maxCaractereLeLinha,devicesCfg)){ + if(strstr(linha,"alarmSet")) { + //printf("Criando alarme no dispositivo de indice %u.\n",dispositivoEmConfiguracao); + alarmes++; + estadoConfiguracao = estadoConfiguracao_alarmSet; + } + + if(strstr(linha,"readingsEnd")) { + //printf("Criando leituras no dispositivo de indice %u.\n",dispositivoEmConfiguracao); + estadoConfiguracao = estadoConfiguracao_idle; + } + + if(estadoConfiguracao == estadoConfiguracao_readingsSet){ + leituras++; + } + if(strstr(linha,"readingsSet")) { + //printf("Criando leituras no dispositivo de indice %u.\n",dispositivoEmConfiguracao); + estadoConfiguracao = estadoConfiguracao_readingsSet; + } + + if(strstr(linha,"scheduleSet")) { + //printf("Criando leituras no dispositivo de indice %u.\n",dispositivoEmConfiguracao); + qtdSchedules++; + estadoConfiguracao = estadoConfiguracao_scheduleSet; + } + + linhas++; + } + printf("Contei %u linha(s), configurei %u dispositivo(s), instalei %u alarme(s), %u leituras(s) e %u schedule(s) nos dispositivo(s).\n",linhas,devices,alarmes,leituras,qtdSchedules); + //Reservar memoria aqui. + + //if(resizeArray(this->numReadings, this->numReadings+1, (char **)&this->readings,sizeof(reading))) { + //(char *) malloc(sizeUnit*novo); + dispositivos[0]->readings = (reading*) malloc(sizeof(reading)*leituras); + dispositivos[0]->alarms = (alarm*) malloc(sizeof(alarm)*alarmes); + dispositivos[0]->schedules = (schedule*) malloc(sizeof(schedule)*qtdSchedules); + + //Retornando ao inicio o arquivo + rewind(devicesCfg); + while(fgets(linha,maxCaractereLeLinha,devicesCfg)) { if(strstr(linha,"deviceCreate\\")) { dispositivoEmConfiguracao++; @@ -1372,6 +1399,7 @@ if(strstr(linha,"readingsSet")) { //printf("Criando leituras no dispositivo de indice %u.\n",dispositivoEmConfiguracao); + leituras++; estadoConfiguracao = estadoConfiguracao_readingsSet; } @@ -1415,10 +1443,8 @@ dispositivos[dispositivoEmConfiguracao]->setSchedule(linha); break; } - - linhas++; } - printf("Contei %u linha(s), configurei %u dispositivo(s), instalei %u alarme(s) e %u schedule(s) nos dispositivo(s).\n",linhas,devices,alarmes,qtdSchedules); + return 1; }