Alex Pirciu
/
BFMC
a
include/SHARP_IR_distance/drivertask.hpp
- Committer:
- alexpirciu
- Date:
- 2019-03-28
- Revision:
- 1:ceee5a608e7c
File content as of revision 1:ceee5a608e7c:
#ifndef DRIVER_TASK_H #define DRIVER_TASK_H #include <TaskManager.h> #include <DistanceDriver.h> #include <filter.h> template<class T> class CDriverTask: public task::CTask { public: using FilterFunc=filter::CFilterFunction<T>; CDriverTask( uint32_t f_period ,PinName f_pin ,FilterFunc& f_filter ,Serial& f_serial) :CTask(f_period) ,m_filter(f_filter) ,m_distanceDriver(f_pin) ,m_val_brut(0.0) ,m_val_filtrat(0.0) ,m_serial(f_serial) ,idx(0) { } T getDistanceFiltered(){ return m_val_filtrat; } T getDistanceMeasured(){ return m_val_brut; } private: virtual void _run(){ m_val_brut=m_distanceDriver.ReadDistance(); m_val_filtrat=m_filter(m_val_brut); } FilterFunc& m_filter; DistanceDriver m_distanceDriver; T m_val_brut; T m_val_filtrat; Serial& m_serial; int idx; }; #endif