#ifndef SENSOR_H #define SENSOR_H #include #include /** listen for sensor events */ template class SensorListener { public: /** incoming sensor data */ virtual void onSensorData(const T& data) = 0; }; /** base-class for all sensors */ template class Sensor { private: std::vector*> listeners; public: /** start this sensor */ virtual void start() = 0; /** stop this sensor */ virtual void stop() = 0; /** add the given listener to the sensor */ void addListener(SensorListener* l) { listeners.push_back(l); } protected: /** inform all attached listeners */ void informListeners(const T& sensorData) const { for (SensorListener* l : listeners) { l->onSensorData(sensorData); } } }; #endif // SENSOR_H