a

Dependencies:   mbed mbed-rtos

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers drivertask.hpp Source File

drivertask.hpp

00001 #ifndef DRIVER_TASK_H
00002 #define DRIVER_TASK_H
00003 
00004 #include <TaskManager.h>
00005 #include <DistanceDriver.h>
00006 #include <filter.h>
00007 
00008 
00009 
00010 
00011 template<class T>
00012 class CDriverTask: public task::CTask
00013 {
00014     public:
00015         using FilterFunc=filter::CFilterFunction<T>;
00016         CDriverTask( uint32_t f_period
00017                     ,PinName f_pin
00018                     ,FilterFunc& f_filter
00019                     ,Serial& f_serial)
00020                     :CTask(f_period)
00021                     ,m_filter(f_filter)
00022                     ,m_distanceDriver(f_pin)
00023                     ,m_val_brut(0.0)
00024                     ,m_val_filtrat(0.0)
00025                     ,m_serial(f_serial)
00026                     ,idx(0)
00027         {
00028         }
00029     
00030         T getDistanceFiltered(){
00031             return m_val_filtrat;
00032         }
00033 
00034         T getDistanceMeasured(){
00035             return m_val_brut;
00036         }
00037 
00038         
00039     
00040     private:
00041         virtual void _run(){
00042             m_val_brut=m_distanceDriver.ReadDistance();
00043             m_val_filtrat=m_filter(m_val_brut);
00044         }
00045 
00046         FilterFunc&     m_filter;
00047         DistanceDriver  m_distanceDriver;
00048         T               m_val_brut;
00049         T               m_val_filtrat;
00050         Serial& m_serial;
00051         int idx;
00052 };
00053 #endif