117 lines
2.5 KiB
C++
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
|