a

Dependencies:   mbed mbed-rtos

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers sensorpublisher.inl Source File

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