#include "mydevices.h" //int luminosite_environnement = 200; using namespace std; //DigitalDevice /////////////////// DigitalDevice::DigitalDevice(int temps) : Device(), state(0), temps(temps) {} int DigitalDevice::getState() const { return state; } int DigitalDevice::getTemps() const { return temps; } //AnalogDevice /////////////////// AnalogDevice::AnalogDevice(int val, int temps) : Device(), val(val), temps(temps) {} int AnalogDevice::getVal() const { return val; } int AnalogDevice::getTemps() const { return temps; } //classe AnalogSensorTemperature AnalogSensorTemperature::AnalogSensorTemperature(int val,int temps):AnalogDevice(val,temps){ alea=1; } void AnalogSensorTemperature::run(){ while(1){ alea=1-alea; if(ptrmem!=NULL) *ptrmem=val+alea; sleep(temps); } } //AnalogSensorLuminosity /////////////////////////// AnalogSensorLuminosity::AnalogSensorLuminosity(int temps):AnalogDevice(200, temps){} void AnalogSensorLuminosity::run(){ while(1){ val = luminosite_environnement; if(ptrmem!=NULL){ *ptrmem = val; } sleep(temps); } } // IntelligentDigitalActuatorLED ////////////////// IntelligentDigitalActuatorLED::IntelligentDigitalActuatorLED(int t):DigitalDevice(t){ } void IntelligentDigitalActuatorLED::run(){ int previousState = LOW; //initialisee a eteint while(1){ if(ptrmem!=NULL) { state = *ptrmem; if (state == LOW) { cout << "((((eteint))))\n"; if (state != previousState) { luminosite_environnement -= 50; } previousState = state; } else { //state == HIGH cout << "((((allume))))\n"; if (state != previousState) { luminosite_environnement += 50; } previousState = state; } } sleep(temps); } } // classe I2CActuatorScreen I2CActuatorScreen::I2CActuatorScreen ():Device(){ } void I2CActuatorScreen::run(){ while(1){ if ( (i2cbus!=NULL)&&!(i2cbus->isEmptyRegister(i2caddr))){ Device::i2cbus->requestFrom(i2caddr, buf, I2C_BUFFER_SIZE); cout << "---screen :"<< buf << endl; } sleep(1); } } //ExternalDigDevice///////////////////////// ExternalDigitalSensorButton::ExternalDigitalSensorButton(int temps):DigitalDevice(temps) {} int ExternalDigitalSensorButton::getState(){ setState(); //determine if on.txt exists before getting state return state; } void ExternalDigitalSensorButton::setState() { if (ifstream("on.txt")){ state = 1; } else { state = 0; } } void ExternalDigitalSensorButton::run() { while (1) { *ptrmem = this->getState(); sleep(temps); } } //TODO Capteur de temperature a revoir avec conditions //TODO Electrovanne / moteur (a voir food) //TODO Radiateur rechauffer terrarium //TODO PHmetre pour qualite de l'eau //TODO regarder les manometre //TODO Electrovanne pour remplir la piscine //TODO Ecran d'affichage avec infos de temps, derniere bouffe, infos sur tortues //TODO Bouton pour sauter prochaine bouffe (I2C)