a

Dependencies:   mbed mbed-rtos

Committer:
alexpirciu
Date:
Thu Mar 28 07:44:42 2019 +0000
Revision:
1:ceee5a608e7c
assa

Who changed what in which revision?

UserRevisionLine numberNew 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