Projet_VictorAvecUnK/mydevices.h

117 lines
2.5 KiB
C++

#ifndef MYDEVICES_H
#define MYDEVICES_H
#include <iostream>
#include <thread>
#include <unistd.h>
#include <string.h>
#include <fstream>
#include "core_simulation.h"
static int luminosite_environnement = 200;
class DigitalDevice : public Device {
protected:
int state;
int temps;
public:
DigitalDevice(int temps);
int getState() const;
int getTemps() const;
};
class AnalogDevice : public Device{
protected:
int val;
// temps entre 2 prises de valeurs
int temps;
// valeur de temperature mesuree
public:
AnalogDevice(int val, int temps);
int getVal() const;
int getTemps() const;
};
// exemple de capteur analogique de temperature, ne pas oublier d'heriter de Device
class AnalogSensorTemperature: public AnalogDevice {
private:
// fait osciller la valeur du cpateur de 1
int alea;
public:
//constructeur ne pas oublier d'initialiser la classe mere
AnalogSensorTemperature(int d,int t);
// thread representant le capteur et permettant de fonctionner independamment de la board
virtual void run();
};
class AnalogSensorLuminosity: public AnalogDevice{
public:
AnalogSensorLuminosity(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();
};
class IntelligentDigitalActuatorLED: public DigitalDevice{
public:
// initialisation du temps de rafraichiisement
IntelligentDigitalActuatorLED(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();
};
class ExternalDigitalSensorButton : public DigitalDevice{
public:
ExternalDigitalSensorButton(int temps);
int getState();
void setState();
virtual void run();
};
//class ExternalDigitalSensorButton: public Device
#endif