semf
sensorconverter.h
Go to the documentation of this file.
1
10#ifndef SEMF_INPUT_SENSOR_SENSORCONVERTER_H_
11#define SEMF_INPUT_SENSOR_SENSORCONVERTER_H_
12
17
18namespace semf
19{
20template <typename T_RAW, typename T_CONVERTED>
40class SensorConverter : public app::Sensor<T_CONVERTED>
41{
42public:
48 SensorConverter(HardwareSensor<T_RAW>& hardwareSensor, size_t index);
49 virtual ~SensorConverter() = default;
50
51protected:
57 virtual T_CONVERTED convert(T_RAW value) const = 0;
58
59private:
64 void onDataAvailable(size_t index);
65 void update();
66 T_CONVERTED currentValue() const override;
67 T_CONVERTED averageValue() const override;
68
70 HardwareSensor<T_RAW>& m_hardwareSensor;
72 size_t m_index;
74 SEMF_SLOT(m_onDataAvailableSlot, SensorConverter, *this, onDataAvailable, size_t);
75};
76
77template <typename T_RAW, typename T_CONVERTED>
79: m_hardwareSensor(hardwareSensor),
80 m_index(index)
81
82{
83 m_hardwareSensor.dataAvailable.connect(m_onDataAvailableSlot);
84}
85
86template <typename T_RAW, typename T_CONVERTED>
88{
89 if (index == m_index)
91}
92
93template <typename T_RAW, typename T_CONVERTED>
94void SensorConverter<T_RAW, T_CONVERTED>::update()
95{
96 m_hardwareSensor.update();
97}
98
99template <typename T_RAW, typename T_CONVERTED>
100T_CONVERTED SensorConverter<T_RAW, T_CONVERTED>::currentValue() const
101{
102 return convert(m_hardwareSensor.buffer(m_index)[0]);
103}
104
105template <typename T_RAW, typename T_CONVERTED>
106T_CONVERTED SensorConverter<T_RAW, T_CONVERTED>::averageValue() const
107{
108 return convert(Average<T_RAW>::value(m_hardwareSensor.buffer(m_index)));
109}
110} /* namespace semf */
111#endif /* SEMF_INPUT_SENSOR_SENSORCONVERTER_H_ */
static T value(const T data[], size_t dataSize)
Calculates an average out of an array.
Definition: average.cpp:15
Base class for sensor hardware like analog sensor. By calling update(), a measurement cycle gets trig...
Conversion class for raw sensor measurement values from HardwareSensor to converted values for Sensor...
virtual T_CONVERTED convert(T_RAW value) const =0
Converts a raw sensor measurement value from HardwareSensor into the required format.
SensorConverter(HardwareSensor< T_RAW > &hardwareSensor, size_t index)
Constructor.
virtual ~SensorConverter()=default
Application class for a sensor system.
Definition: sensor.h:41
Signal dataAvailable
Definition: sensor.h:62