teste de publish

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;
 }