Implemented first Hangar-Service
Dependencies: CalibrateMagneto QuaternionMath
Fork of SML2 by
Diff: Sensor.h
- Revision:
- 8:cba37530d480
- Parent:
- 7:604a8369b801
- Child:
- 12:1632d7391453
--- a/Sensor.h Tue Feb 17 16:53:50 2015 +0000 +++ b/Sensor.h Wed Feb 18 15:13:41 2015 +0000 @@ -1,24 +1,16 @@ #ifndef _H_SENSOR_H #define _H_SENSOR_H +#include "Vector3.h" + /// Base class for I2C-connected sensors. Defines functionality supported by all sensors. class Sensor { public: - /// Base class for sensor data frame. Sensors may derive from this and add their own data fields. - class Data { - public: - int16_t x; ///< x-axis sensor data - int16_t y; ///< y-axis sensor data - int16_t z; ///< z-axis sensor data - int16_t reserved; ///< (reserved, do not use) - float timestamp; ///< Timestamp in sec - }; - /// Defines protocol used to send data back to owner. Derive from this class and use Sensor.setDelegate() to receive sensor updates. class Delegate { public: /// A new sensor data frame, might be called several (hundred) times a second. - virtual void sensorUpdate(Sensor* source, Data frame) = 0; + virtual void sensorUpdate(Sensor* source, Vector3 data) = 0; }; virtual void setDelegate(Delegate &d) { @@ -35,11 +27,11 @@ virtual void start() = 0; ///< Start continuous data capture. If a delegate is set, its sensorUpdate() method will be called for each data frame. virtual void stop() = 0; ///< Stop capturing data. - virtual Data read() = 0; ///< Read and return instantaneous (current) sensor data. No need to start the sensor. + virtual Vector3 read() = 0; ///< Read and return instantaneous (current) sensor data. No need to start the sensor. protected: /// Derived classes should use this method to pass sensor data to their owner. Delegate existence check is automatically done before dispatching. - void sendData(Data frame) { + void sendData(Vector3 frame) { if (_delegate) _delegate->sensorUpdate(this, frame); }