Reorganisation classes

This commit is contained in:
Cameron Bray 2020-05-13 16:12:29 +02:00
parent 3b0cdae871
commit e006311022
2 changed files with 72 additions and 50 deletions

View file

@ -4,8 +4,31 @@
using namespace std; using namespace std;
//DigitalDevice ///////////////////
DigitalDevice::DigitalDevice(int temps) : temps(temps), state(0) {}
int DigitalDevice::getState() const {
return state;
}
int DigitalDevice::getTemps() const {
return temps;
}
//AnalogDevice ///////////////////
AnalogDevice::AnalogDevice(int val, int temps) : val(val), temps(temps),Device() {}
int AnalogDevice::getVal() const {
return val;
}
int AnalogDevice::getTemps() const {
return temps;
}
//classe AnalogSensorTemperature //classe AnalogSensorTemperature
AnalogSensorTemperature::AnalogSensorTemperature(int d,int t):Device(),val(t),temps(d){ AnalogSensorTemperature::AnalogSensorTemperature(int val,int temps):AnalogDevice(val,temps){
alea=1; alea=1;
} }
@ -33,26 +56,8 @@ void AnalogSensorLuminosity::run(){
} }
} }
// IntelligentDigitalActuatorLED //////////////////
//classe DigitalActuatorLED IntelligentDigitalActuatorLED::IntelligentDigitalActuatorLED(int t):DigitalDevice(t){
DigitalActuatorLED::DigitalActuatorLED(int t):Device(),state(LOW),temps(t){
}
void DigitalActuatorLED::run(){
while(1){
if(ptrmem!=NULL)
state=*ptrmem;
if (state==LOW)
cout << "((((eteint))))\n";
else
cout << "((((allume))))\n";
sleep(temps);
}
}
IntelligentDigitalActuatorLED::IntelligentDigitalActuatorLED(int t):Device(),state(LOW),temps(t){
} }
void IntelligentDigitalActuatorLED::run(){ void IntelligentDigitalActuatorLED::run(){
@ -96,19 +101,23 @@ void I2CActuatorScreen::run(){
} }
//ExternalDigDevice/////////////////////////
ExternalDigitalSensorButton::ExternalDigitalSensorButton(int temps):DigitalDevice(temps) {}
int ExternalDigitalSensorButton::getState(){ int ExternalDigitalSensorButton::getState(){
setState(); //determine if on.txt exists before getting state
return state;
}
void ExternalDigitalSensorButton::setState() {
if (ifstream("on.txt")){ if (ifstream("on.txt")){
state = 1; state = 1;
} else { } else {
state = 0; state = 0;
} }
return state;
} }
ExternalDigitalSensorButton::ExternalDigitalSensorButton(int temps) {
state = 0;
this->temps = temps;
}
void ExternalDigitalSensorButton::run() { void ExternalDigitalSensorButton::run() {
while (1) { while (1) {
@ -116,3 +125,8 @@ void ExternalDigitalSensorButton::run() {
sleep(temps); sleep(temps);
} }
} }
//

View file

@ -10,16 +10,36 @@
static int luminosite_environnement = 200; 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 // exemple de capteur analogique de temperature, ne pas oublier d'heriter de Device
class AnalogSensorTemperature: public Device { class AnalogSensorTemperature: public AnalogDevice {
private: private:
// fait osciller la valeur du cpateur de 1 // fait osciller la valeur du cpateur de 1
int alea; int alea;
// valeur de temperature mesuree
int val;
// temps entre 2 prises de valeurs
int temps;
public: public:
//constructeur ne pas oublier d'initialiser la classe mere //constructeur ne pas oublier d'initialiser la classe mere
@ -40,13 +60,6 @@ public:
virtual void run(); virtual void run();
}; };
// exemple d'actionneur digital : une led, ne pas oublier d'heriter de Device // exemple d'actionneur digital : une led, ne pas oublier d'heriter de Device
class DigitalActuatorLED: public Device { class DigitalActuatorLED: public Device {
private: private:
@ -64,13 +77,8 @@ public:
class IntelligentDigitalActuatorLED: public Device{ class IntelligentDigitalActuatorLED: public DigitalDevice{
private:
// etat de la LED
int state;
// temps entre 2 affichage de l etat de la led
int temps;
public: public:
// initialisation du temps de rafraichiisement // initialisation du temps de rafraichiisement
IntelligentDigitalActuatorLED(int t); IntelligentDigitalActuatorLED(int t);
@ -94,14 +102,14 @@ public:
virtual void run(); virtual void run();
}; };
class ExternalDigitalSensorButton : public Device{ class ExternalDigitalSensorButton : public DigitalDevice{
private:
int state;
int temps;
public: public:
ExternalDigitalSensorButton(int temps); ExternalDigitalSensorButton(int temps);
virtual void run();
int getState(); int getState();
void setState();
virtual void run();
}; };