BE_CPP_BERTA_NUNES/src/mydevices.h~
2020-05-26 14:20:42 +02:00

205 lines
3.8 KiB
C

#ifndef MYDEVICES_H
#define MYDEVICES_H
#include <iostream>
#include <thread>
#include <unistd.h>
#include <string.h>
#include <fstream>
#include "core_simulation.h"
#include "detection.h"
//Classe Actionneur
class Actionneur : public Device{
protected:
int type; // 1-> Bouton
int temps;
int state; //0-> OFF 1-> ON
int nbrTotal=0;
public:
//constructeur
Actionneur(int ty, int t,int s);
//Methodes
//Pour recuperer le nombre total d'actionneurs crees.
int getNbrTotal();
//Pour changer l'etat de l'actionneur
//0 ->OFF 1 -> ON
void setState(int s);
//Pour avoir l'etat actuel de l'actionneur
//0-> OFF 1-> ON
int getState();
//Pour changer le temps
void setTemps(int t);
//Pour avoir le temps
int getTemps();
//Pour avoir le type
int getType();
//Methode Run redefinir pour chaque type de Bouton
void run();
};
class Capteur : public Device{
protected:
int type;
int temps;
int valeur;
int alea; //De base il est 1
int nbrTotal;
public:
Capteur(int ty, int t);
//Pour recuperer le nombre total de capteurs crees.
int getNbrTotal();
//Pour changer le temps
void setTemps(int t);
//Pour avoir le temps
int getTemps();
//Pour actualiser la valeur
void setValeur(int va);
//Pour avoir la valeur du capteur
int getValeur();
//Pour changer l'alea
void setAlea(int al);
//Pour avor l'alea
int getAlea();
//Pour avoir le type de capteur
int getType();
virtual void run();
};
// exemple de capteur analogique de temperature, ne pas oublier d'heriter de Device
class AnalogSensorTemperature: public Capteur {
public:
//constructeur ne pas oublier d'initialiser la classe mere
AnalogSensorTemperature(int d);
// thread representant le capteur et permettant de fonctionner independamment de la board
void run();
};
//Capteur de Luminosite
class AnalogSensorLuminosity : public Capteur {
public:
AnalogSensorLuminosity (int d);
virtual void run();
};
//Capteur de mouvement
class AnalogSensorMovement:public Capteur{
private:
int mode;
string nom;
string path;
public:
//Constructeur
AnalogSensorMovement(int d);
void setPath(string p);
void run();
};
//LED intelligente
class IntelligentDigitalActuatorLED : public Device{
private:
int state;
int temps;
public:
IntelligentDigitalActuatorLED(int i);
virtual void run();
};
// exemple d'actionneur digital : une led, ne pas oublier d'heriter de Device
class DigitalActuatorAlarm: public Device {
private:
// etat de l'alarme
int state;
// temps entre 2 affichage de l etat de l'alarme
int temps;
public:
// initialisation du temps de rafraichiisement
DigitalActuatorAlarm(int t);
// thread representant l'actionneur et permettant de fonctionner independamment de la board
virtual void run();
};
//Interaction Exterieure
class ExternalDigitalSensorButton: public Actionneur{
public:
ExternalDigitalSensorButton(int t);
virtual void run();
};
// exemple d'actionneur digital : une led, ne pas oublier d'heriter de Device
class DigitalActuatorLED: public Device {
private:
// etat de la LED
int state;
// temps entre 2 affichage de l etat de la led
int temps;
public:
// initialisation du temps de rafraichiisement
DigitalActuatorLED(int t);
// thread representant l'actionneur et permettant de fonctionner independamment de la board
virtual void run();
};
// exemple d'actionneur sur le bus I2C permettant d'echanger des tableaux de caracteres : un ecran, ne pas oublier d'heriter de Device
class I2CActuatorScreen : public Device{
protected:
// memorise l'affichage de l'ecran
char buf[I2C_BUFFER_SIZE];
public:
// constructeur
I2CActuatorScreen ();
// thread representant le capteur et permettant de fonctionner independamment de la board
virtual void run();
};
#endif