Alex Pirciu
/
BFMC
a
Embed:
(wiki syntax)
Show/hide line numbers
sensortask.cpp
00001 /** 00002 ****************************************************************************** 00003 * @file SensorTask.cpp 00004 * @author RBRO/PJ-IU 00005 * @version V1.0.0 00006 * @date day-month-year 00007 * @brief This file contains the class implementation for the sensor task 00008 * functionality. 00009 ****************************************************************************** 00010 */ 00011 #include <Examples/Sensors/sensortask.hpp> 00012 00013 namespace examples 00014 { 00015 00016 namespace sensors{ 00017 00018 00019 /** \brief Constructor for the CCounter class 00020 * 00021 * Constructor method 00022 * 00023 * @param f_period period value 00024 * @param f_serial reference to the serial object 00025 */ 00026 CDISTFTest::CDISTFTest(uint32_t f_period 00027 ,Serial& f_serial) 00028 :task::CTask(f_period) 00029 ,m_serial(f_serial) 00030 ,m_tf() 00031 { 00032 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})}); 00033 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})}); 00034 m_tf.setNum(l_num); 00035 m_tf.setDen(l_den); 00036 } 00037 00038 /** \brief Method called each f_period 00039 * 00040 * 00041 * 00042 */ 00043 void CDISTFTest::_run() 00044 { 00045 float l_input=1.0; 00046 float l_output=m_tf(l_input); 00047 m_serial.printf("%.4f\n",l_output); 00048 } 00049 00050 /** \brief Constructor for the CCounter class 00051 * 00052 * Constructor method 00053 * 00054 * @param f_period period value 00055 * @param f_encoder reference to encoder object 00056 * @param f_serial reference to the serial object 00057 */ 00058 CEncoderSender::CEncoderSender(uint32_t f_period 00059 ,encoders::IEncoderGetter& f_encoder 00060 ,Serial& f_serial) 00061 :task::CTask(f_period) 00062 ,m_isActived(false) 00063 ,m_encoder(f_encoder) 00064 ,m_serial(f_serial) 00065 { 00066 } 00067 00068 /** \brief Serial callback method 00069 * 00070 * Serial callback attaching serial callback to controller object 00071 * 00072 * @param obj PID controller object 00073 * @param a string to read data from 00074 * @param b string to write data to 00075 * 00076 */ 00077 void CEncoderSender::staticSerialCallback(void* obj,char const * a, char * b){ 00078 examples::sensors::CEncoderSender* self = static_cast<CEncoderSender*>(obj); 00079 self->serialCallback(a,b); 00080 } 00081 00082 /** \brief Serial callback actions 00083 * 00084 * Serial callback method setting controller to values received 00085 * 00086 * @param a string to read data from 00087 * @param b string to write data to 00088 * 00089 */ 00090 void CEncoderSender::serialCallback(char const * a, char * b){ 00091 int l_isActivate=0; 00092 uint32_t l_res = sscanf(a,"%d",&l_isActivate); 00093 if(l_res==1){ 00094 m_isActived=(l_isActivate>=1); 00095 sprintf(b,"ack;;"); 00096 }else{ 00097 sprintf(b,"sintax error;;"); 00098 } 00099 } 00100 00101 /** \brief Method called each f_period 00102 * 00103 * 00104 * 00105 */ 00106 void CEncoderSender::_run() 00107 { 00108 if(!m_isActived) return; 00109 float l_filtRps=m_encoder.getSpeedRps(); 00110 m_serial.printf("@ENPB:%.2f;;\r\n",l_filtRps); 00111 } 00112 00113 }; // namespace sensors 00114 }; // namespace examples 00115
Generated on Tue Jul 12 2022 22:40:51 by 1.7.2