Some refactoring

This commit is contained in:
Ziver Koc 2016-05-10 16:04:39 +02:00
parent 78317d6c4f
commit 1273bcae49
11 changed files with 182 additions and 234 deletions

View file

@ -3,7 +3,11 @@
#include "HalConfiguration.h"
// Utility functions
#ifdef ENABLE_DEBUG
#include <Arduino.h>
#define DEBUG(msg) \
Serial.println(msg); \
Serial.flush();
@ -18,60 +22,81 @@
#endif
inline void pulse(short pin, short count)
{
while (--count >= 0)
{
digitalWrite(INDICATOR_PIN, HIGH);
delay(150);
digitalWrite(INDICATOR_PIN, LOW);
if (count != 0) delay(200);
}
}
///////////////////////////////////////////////////////////////////////////
// INTERFACES
class Sensor
{
public:
virtual void setup() = 0;
};
class SensorPowerConsumption : public Sensor
{
public:
// returns number of pulses from power meter
virtual unsigned int getConsumption() = 0;
virtual void reset() = 0;
};
class SensorTemperature : public Sensor
{
public:
virtual int getTemperature() = 0;
virtual int getHumidity() = 0;
};
class SensorLight : public Sensor
{
public:
virtual void setup() = 0;
virtual unsigned int getLuminosity() = 0;
};
class Protocol
{
public:
virtual void setup() = 0;
virtual void send() = 0;
};
struct PowerData
{
unsigned int consumption;
};
class SensorPowerConsumption : public Sensor
{
public:
// returns number of pulses from power meter
virtual void read(PowerData& data) = 0;
};
class ProtocolPowerConsumption : public Protocol
{
public:
virtual void setConsumption(unsigned int cons) = 0;
virtual void send(const PowerData& data) = 0;
};
struct TemperatureData
{
float temperature;
short humidity;
};
class SensorTemperature : public Sensor
{
public:
virtual void read(TemperatureData& data) = 0;
};
class ProtocolTemperature : public Protocol
{
public:
virtual void setTemperature(float temp) = 0;
virtual void setHumidity(unsigned char humidity) = 0;
virtual void send(const TemperatureData& data) = 0;
};
struct LightData
{
unsigned int lumen;
};
class SensorLight : public Sensor
{
public:
virtual void read(LightData& data) = 0;
};
class ProtocolLight : public Protocol
{
public:
virtual void setLuminosity(int lumen) = 0;
virtual void send(const LightData& data) = 0;
};
#endif // HALINTERFACES_H