Alex Pirciu
/
BFMC
a
Embed:
(wiki syntax)
Show/hide line numbers
sensorpublisher.inl
00001 namespace examples{ 00002 namespace sensors{ 00003 /** \brief Constructor for the CEncoderFilter class 00004 * 00005 * Constructor method 00006 * 00007 * @param f_period period value 00008 * @param f_sensors sensor array 00009 * @param f_serial reference to the serial object 00010 */ 00011 template <class C_Sensor,uint Nr_Senrsor> 00012 ProximityPublisher<C_Sensor,Nr_Senrsor>::ProximityPublisher(uint32_t f_period 00013 ,SensorArrayT f_sensors 00014 ,Serial& f_serial) 00015 :CTask(f_period) 00016 ,m_sensors(f_sensors) 00017 ,m_serial(f_serial) 00018 ,m_isActivate(false) 00019 { 00020 } 00021 00022 /** \brief Serial callback method 00023 * 00024 * Serial callback attaching serial callback to controller object 00025 * 00026 * @param obj PID controller object 00027 * @param a string to read data from 00028 * @param b string to write data to 00029 * 00030 */ 00031 template <class C_Sensor,uint Nr_Senrsor> 00032 void ProximityPublisher<C_Sensor,Nr_Senrsor>::staticSerialCallback(void* obj,char const * a, char * b) 00033 { 00034 ProximityPublisher* self = static_cast<ProximityPublisher*>(obj); 00035 self->serialCallback(a,b); 00036 } 00037 00038 /** \brief Serial callback actions 00039 * 00040 * Serial callback 00041 * 00042 * @param a string to read data from 00043 * @param b string to write data to 00044 * 00045 */ 00046 template <class C_Sensor,uint Nr_Senrsor> 00047 void ProximityPublisher<C_Sensor,Nr_Senrsor>::serialCallback(char const * a, char * b){ 00048 int l_isActivate=0; 00049 uint32_t l_res = sscanf(a,"%d",&l_isActivate); 00050 if(l_res==1){ 00051 m_isActivate=(l_isActivate>=1); 00052 sprintf(b,"ack;;"); 00053 }else{ 00054 sprintf(b,"sintax error;;"); 00055 } 00056 } 00057 00058 /** \brief Method called each f_period 00059 * 00060 * 00061 * 00062 */ 00063 template <class C_Sensor,uint Nr_Senrsor> 00064 void ProximityPublisher<C_Sensor,Nr_Senrsor>::_run(){ 00065 if(!m_isActivate) return; 00066 char l_buf[100]; 00067 sprintf(l_buf,"@DSPB:"); 00068 for(uint8_t i=0;i<Nr_Senrsor;++i){ 00069 00070 sprintf(l_buf,"%s%2.2f;",l_buf,m_sensors[i]->getValue()); 00071 } 00072 sprintf(l_buf,"%s;\n\r",l_buf); 00073 m_serial.printf("%s",l_buf); 00074 00075 } 00076 }; // namespace sensors 00077 }; // namespace examples 00078
Generated on Tue Jul 12 2022 22:40:51 by 1.7.2