Alex Pirciu
/
BFMC
a
src/Examples/Sensors/sensortask.cpp@1:ceee5a608e7c, 2019-03-28 (annotated)
- Committer:
- alexpirciu
- Date:
- Thu Mar 28 07:44:42 2019 +0000
- Revision:
- 1:ceee5a608e7c
assa
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alexpirciu | 1:ceee5a608e7c | 1 | /** |
alexpirciu | 1:ceee5a608e7c | 2 | ****************************************************************************** |
alexpirciu | 1:ceee5a608e7c | 3 | * @file SensorTask.cpp |
alexpirciu | 1:ceee5a608e7c | 4 | * @author RBRO/PJ-IU |
alexpirciu | 1:ceee5a608e7c | 5 | * @version V1.0.0 |
alexpirciu | 1:ceee5a608e7c | 6 | * @date day-month-year |
alexpirciu | 1:ceee5a608e7c | 7 | * @brief This file contains the class implementation for the sensor task |
alexpirciu | 1:ceee5a608e7c | 8 | * functionality. |
alexpirciu | 1:ceee5a608e7c | 9 | ****************************************************************************** |
alexpirciu | 1:ceee5a608e7c | 10 | */ |
alexpirciu | 1:ceee5a608e7c | 11 | #include <Examples/Sensors/sensortask.hpp> |
alexpirciu | 1:ceee5a608e7c | 12 | |
alexpirciu | 1:ceee5a608e7c | 13 | namespace examples |
alexpirciu | 1:ceee5a608e7c | 14 | { |
alexpirciu | 1:ceee5a608e7c | 15 | |
alexpirciu | 1:ceee5a608e7c | 16 | namespace sensors{ |
alexpirciu | 1:ceee5a608e7c | 17 | |
alexpirciu | 1:ceee5a608e7c | 18 | |
alexpirciu | 1:ceee5a608e7c | 19 | /** \brief Constructor for the CCounter class |
alexpirciu | 1:ceee5a608e7c | 20 | * |
alexpirciu | 1:ceee5a608e7c | 21 | * Constructor method |
alexpirciu | 1:ceee5a608e7c | 22 | * |
alexpirciu | 1:ceee5a608e7c | 23 | * @param f_period period value |
alexpirciu | 1:ceee5a608e7c | 24 | * @param f_serial reference to the serial object |
alexpirciu | 1:ceee5a608e7c | 25 | */ |
alexpirciu | 1:ceee5a608e7c | 26 | CDISTFTest::CDISTFTest(uint32_t f_period |
alexpirciu | 1:ceee5a608e7c | 27 | ,Serial& f_serial) |
alexpirciu | 1:ceee5a608e7c | 28 | :task::CTask(f_period) |
alexpirciu | 1:ceee5a608e7c | 29 | ,m_serial(f_serial) |
alexpirciu | 1:ceee5a608e7c | 30 | ,m_tf() |
alexpirciu | 1:ceee5a608e7c | 31 | { |
alexpirciu | 1:ceee5a608e7c | 32 | std::array<std::array<float,1>,3> l_num({std::array<float,1>({3}),std::array<float,1>({-5.897}),std::array<float,1>({2.9})}); |
alexpirciu | 1:ceee5a608e7c | 33 | std::array<std::array<float,1>,3> l_den({std::array<float,1>({1}),std::array<float,1>({-1.949}),std::array<float,1>({0.9512})}); |
alexpirciu | 1:ceee5a608e7c | 34 | m_tf.setNum(l_num); |
alexpirciu | 1:ceee5a608e7c | 35 | m_tf.setDen(l_den); |
alexpirciu | 1:ceee5a608e7c | 36 | } |
alexpirciu | 1:ceee5a608e7c | 37 | |
alexpirciu | 1:ceee5a608e7c | 38 | /** \brief Method called each f_period |
alexpirciu | 1:ceee5a608e7c | 39 | * |
alexpirciu | 1:ceee5a608e7c | 40 | * |
alexpirciu | 1:ceee5a608e7c | 41 | * |
alexpirciu | 1:ceee5a608e7c | 42 | */ |
alexpirciu | 1:ceee5a608e7c | 43 | void CDISTFTest::_run() |
alexpirciu | 1:ceee5a608e7c | 44 | { |
alexpirciu | 1:ceee5a608e7c | 45 | float l_input=1.0; |
alexpirciu | 1:ceee5a608e7c | 46 | float l_output=m_tf(l_input); |
alexpirciu | 1:ceee5a608e7c | 47 | m_serial.printf("%.4f\n",l_output); |
alexpirciu | 1:ceee5a608e7c | 48 | } |
alexpirciu | 1:ceee5a608e7c | 49 | |
alexpirciu | 1:ceee5a608e7c | 50 | /** \brief Constructor for the CCounter class |
alexpirciu | 1:ceee5a608e7c | 51 | * |
alexpirciu | 1:ceee5a608e7c | 52 | * Constructor method |
alexpirciu | 1:ceee5a608e7c | 53 | * |
alexpirciu | 1:ceee5a608e7c | 54 | * @param f_period period value |
alexpirciu | 1:ceee5a608e7c | 55 | * @param f_encoder reference to encoder object |
alexpirciu | 1:ceee5a608e7c | 56 | * @param f_serial reference to the serial object |
alexpirciu | 1:ceee5a608e7c | 57 | */ |
alexpirciu | 1:ceee5a608e7c | 58 | CEncoderSender::CEncoderSender(uint32_t f_period |
alexpirciu | 1:ceee5a608e7c | 59 | ,encoders::IEncoderGetter& f_encoder |
alexpirciu | 1:ceee5a608e7c | 60 | ,Serial& f_serial) |
alexpirciu | 1:ceee5a608e7c | 61 | :task::CTask(f_period) |
alexpirciu | 1:ceee5a608e7c | 62 | ,m_isActived(false) |
alexpirciu | 1:ceee5a608e7c | 63 | ,m_encoder(f_encoder) |
alexpirciu | 1:ceee5a608e7c | 64 | ,m_serial(f_serial) |
alexpirciu | 1:ceee5a608e7c | 65 | { |
alexpirciu | 1:ceee5a608e7c | 66 | } |
alexpirciu | 1:ceee5a608e7c | 67 | |
alexpirciu | 1:ceee5a608e7c | 68 | /** \brief Serial callback method |
alexpirciu | 1:ceee5a608e7c | 69 | * |
alexpirciu | 1:ceee5a608e7c | 70 | * Serial callback attaching serial callback to controller object |
alexpirciu | 1:ceee5a608e7c | 71 | * |
alexpirciu | 1:ceee5a608e7c | 72 | * @param obj PID controller object |
alexpirciu | 1:ceee5a608e7c | 73 | * @param a string to read data from |
alexpirciu | 1:ceee5a608e7c | 74 | * @param b string to write data to |
alexpirciu | 1:ceee5a608e7c | 75 | * |
alexpirciu | 1:ceee5a608e7c | 76 | */ |
alexpirciu | 1:ceee5a608e7c | 77 | void CEncoderSender::staticSerialCallback(void* obj,char const * a, char * b){ |
alexpirciu | 1:ceee5a608e7c | 78 | examples::sensors::CEncoderSender* self = static_cast<CEncoderSender*>(obj); |
alexpirciu | 1:ceee5a608e7c | 79 | self->serialCallback(a,b); |
alexpirciu | 1:ceee5a608e7c | 80 | } |
alexpirciu | 1:ceee5a608e7c | 81 | |
alexpirciu | 1:ceee5a608e7c | 82 | /** \brief Serial callback actions |
alexpirciu | 1:ceee5a608e7c | 83 | * |
alexpirciu | 1:ceee5a608e7c | 84 | * Serial callback method setting controller to values received |
alexpirciu | 1:ceee5a608e7c | 85 | * |
alexpirciu | 1:ceee5a608e7c | 86 | * @param a string to read data from |
alexpirciu | 1:ceee5a608e7c | 87 | * @param b string to write data to |
alexpirciu | 1:ceee5a608e7c | 88 | * |
alexpirciu | 1:ceee5a608e7c | 89 | */ |
alexpirciu | 1:ceee5a608e7c | 90 | void CEncoderSender::serialCallback(char const * a, char * b){ |
alexpirciu | 1:ceee5a608e7c | 91 | int l_isActivate=0; |
alexpirciu | 1:ceee5a608e7c | 92 | uint32_t l_res = sscanf(a,"%d",&l_isActivate); |
alexpirciu | 1:ceee5a608e7c | 93 | if(l_res==1){ |
alexpirciu | 1:ceee5a608e7c | 94 | m_isActived=(l_isActivate>=1); |
alexpirciu | 1:ceee5a608e7c | 95 | sprintf(b,"ack;;"); |
alexpirciu | 1:ceee5a608e7c | 96 | }else{ |
alexpirciu | 1:ceee5a608e7c | 97 | sprintf(b,"sintax error;;"); |
alexpirciu | 1:ceee5a608e7c | 98 | } |
alexpirciu | 1:ceee5a608e7c | 99 | } |
alexpirciu | 1:ceee5a608e7c | 100 | |
alexpirciu | 1:ceee5a608e7c | 101 | /** \brief Method called each f_period |
alexpirciu | 1:ceee5a608e7c | 102 | * |
alexpirciu | 1:ceee5a608e7c | 103 | * |
alexpirciu | 1:ceee5a608e7c | 104 | * |
alexpirciu | 1:ceee5a608e7c | 105 | */ |
alexpirciu | 1:ceee5a608e7c | 106 | void CEncoderSender::_run() |
alexpirciu | 1:ceee5a608e7c | 107 | { |
alexpirciu | 1:ceee5a608e7c | 108 | if(!m_isActived) return; |
alexpirciu | 1:ceee5a608e7c | 109 | float l_filtRps=m_encoder.getSpeedRps(); |
alexpirciu | 1:ceee5a608e7c | 110 | m_serial.printf("@ENPB:%.2f;;\r\n",l_filtRps); |
alexpirciu | 1:ceee5a608e7c | 111 | } |
alexpirciu | 1:ceee5a608e7c | 112 | |
alexpirciu | 1:ceee5a608e7c | 113 | }; // namespace sensors |
alexpirciu | 1:ceee5a608e7c | 114 | }; // namespace examples |
alexpirciu | 1:ceee5a608e7c | 115 |