agrobot_base/Firmware/Modulos/ReleModel.h

72 lines
1.6 KiB
C++

#include "SerialService.h"
#include "Pinout.h"
#include "Utils.h"
#ifndef ReleModel
#define ReleModel
class Rele {
public:
Rele(String _modID, String _id, int _taxaAmostragem = 2000) {
Mod_ID = _modID;
_ID = _id;
}
String Mod_ID;
String _ID;
PinoModel _pino;
bool Iniciado = false;
Estado _Status = Desligado;
void Inicializar() {
if (Iniciado) {
//EnviarDadosSerial(_ID + " ja inicializado");
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
return;
}
if (_pino.Definido()) {
_pino.Conectar(false);
Iniciado = true;
}
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
}
void Desligar() {
if (!Iniciado) {
//EnviarDadosSerial(_ID + " nao esta inicializado");
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
return;
}
// Redefinir as configurações para os valores iniciais
_pino.Desconectar();
//EnviarDadosSerial(_ID + " Desligado");
Iniciado = false;
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
}
void AtualizarStatus(Estado novoEstado) {
bool status = novoEstado == Ligado;
_pino.set(status);
_Status = (Estado)_pino.get();
}
void AtualizarLeitura() {
_Status = (Estado)_pino.get();
}
void RequisitarDados() {
AtualizarLeitura();
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sRLE, _ID, MontarDadosProtocoloRele(Iniciado, _Status)));
}
};
#endif