teste de publish

devices.h

Committer:
brunofgc
Date:
2017-06-07
Revision:
4:3f92979d1ffb
Parent:
2:ca3723da6668
Child:
5:8efd609dea7d

File content as of revision 4:3f92979d1ffb:

#include "mbed.h"
#include "funcoesSDCard.h"
#include "modbusMaster1.h"
#ifndef _devices_h_
#define _devices_h_
#define maxCaractereLeLinha 40
#include <cstdlib>

#define enderecoControladoraVirtual 0

enum {        
    modBusType_float=1,
    modBusType_bit,
    modBusType_uint8_t,
    modBusType_uint16_t,
    modBusType_uint32_t,
    IrCommandType,
    PWMCommandType
};

typedef struct _alarm{
    uint32_t id;
    //Tempos de confirmação
    uint32_t seconds;
    //Var Read block
    uint8_t type;
    uint16_t addrModbusRead;
    uint8_t funcModbusRead;
    uint16_t regModbusRead;             
    uint8_t max; //1 Max; 0 Min
    uint8_t value[4];
    
    //Act block
    uint32_t idAct;    

    //Maquina de estados alarme    
    uint32_t secAlarm;    
    bool alarmFound;
}alarm;



typedef struct _reading{    
    uint8_t type;
    uint8_t addr;
    uint8_t func;
    uint16_t reg;               
    uint8_t numRegs;        
}reading;

typedef struct _scheduleException{
    uint32_t id_schedule;
    uint32_t timestamp;
}scheduleException;

typedef struct _schedule{    
    uint32_t id;
    uint8_t weekday;
    uint16_t minute; // Minuto do dia em que será executada a ação programada
    
    //Act block
    uint32_t idAct;
    //Maquina de estados alarme
    bool actSent;
}schedule;

class device{
    private:
        uint8_t execActAlarm(uint32_t);                        
    public: 
        uint8_t execAct(uint32_t);
        uint8_t numAlarms;
        uint8_t numSchedules;
        uint8_t numScheduleExceptions;                
        uint16_t numReadings;
        alarm *alarms;
        reading *readings;
        schedule *schedules;
        scheduleException *scheduleExceptions;
        //uint32_t id;
        
        device();
        
        void floatToBin(uint8_t,float *,uint8_t *);                
        void uint32_t_ToBin(uint8_t,uint32_t *,uint8_t *);
        void uint16_t_ToBin(uint8_t,uint16_t *,uint8_t *);
        void setAlarm(char *);
        void setReading(char *);
        void setSchedule(char *);
        void setScheduleException(char *);        
        void verifyAlarms();
        void verifySchedules();        
        void writeReadingsToSD();        
};

int criaDevices(FILE *);
int configuraDevices(FILE *); 
//uint8_t resizeArray(uint32_t,uint32_t,char **,uint16_t);
void testaTudoDevices();
void writeReadingsToSD();
void verifyAlarms();
void verifySchedules();
#endif