diff --git a/include/model_car_driver_base.h b/include/model_car_driver_base.h index d207d9217fbe24641f80f9939a1d7c015ea2b07c..b2cd771a01f89ec71cd25741585198829dec8e78 100644 --- a/include/model_car_driver_base.h +++ b/include/model_car_driver_base.h @@ -44,9 +44,6 @@ class CModelCarDriverBase uint id; uint sw_version; - tCRCUnion crc_union; - TDataUnion data_union; - THeader header; /* event attributes */ CEventServer *event_server; @@ -62,7 +59,7 @@ class CModelCarDriverBase CMutex data_mutex; static void *data_thread(void *param); - bool process_byte(unsigned char byte); + bool process_byte(THeader &header, TDataUnion &data_union, tCRCUnion &crc_union, unsigned char byte); bool get_id(uint8_t & id); void send_request(uint8_t id, uint8_t data_length, uint8_t *data); sm_state process_data(THeader & header, TDataUnion & data_union, tCRCUnion & crc_union); diff --git a/src/examples/model_car_egomotion_test.cpp b/src/examples/model_car_egomotion_test.cpp index d75268eaff3bc24eb46f328c3cb0be8a5f6b6efe..dafd7a87f988d3bf7c329a20707f6a809c7805c5 100644 --- a/src/examples/model_car_egomotion_test.cpp +++ b/src/examples/model_car_egomotion_test.cpp @@ -24,38 +24,38 @@ int main(int argc, char *argv[]) bool lwheel_dir=false; if(egomotion_driver->get_left_wheel(lwheel_tach, lwheel_dir)) { - std::cout << "Left wheel tachometer: " << lwheel_tach << std::endl; - std::cout << "Left wheel direction: " << lwheel_dir << std::endl; + std::cout << " Left wheel tachometer: " << lwheel_tach << std::endl; + std::cout << " Left wheel direction: " << lwheel_dir << std::endl; } int rwheel_tach=0; bool rwheel_dir=false; if(egomotion_driver->get_right_wheel(rwheel_tach,rwheel_dir)) { - std::cout << "Right wheel tachometer: " << rwheel_tach << std::endl; - std::cout << "Right wheel direction: " << rwheel_dir << std::endl; + std::cout << " Right wheel tachometer: " << rwheel_tach << std::endl; + std::cout << " Right wheel direction: " << rwheel_dir << std::endl; } float ax=0.0 ,ay=.0 ,az=0.0 ,gx=0.0 ,gy=0.0 ,gz=0.0 ,mx=0.0 ,my=0.0 ,mz=0.0; if(egomotion_driver->get_imu_accel(ax,ay,az)) { - std::cout << "Imu ax: " << ax << std::endl; - std::cout << "Imu ay: " << ay << std::endl; - std::cout << "Imu az: " << az << std::endl; + std::cout << " Imu ax: " << ax << std::endl; + std::cout << " Imu ay: " << ay << std::endl; + std::cout << " Imu az: " << az << std::endl; } if(egomotion_driver->get_imu_gyro(gx,gy,gz)) { - std::cout << "Imu gx: " << gx << std::endl; - std::cout << "Imu gy: " << gy << std::endl; - std::cout << "Imu gz: " << gz << std::endl; + std::cout << " Imu gx: " << gx << std::endl; + std::cout << " Imu gy: " << gy << std::endl; + std::cout << " Imu gz: " << gz << std::endl; } if(egomotion_driver->get_imu_magn(mx,my,mz)) { - std::cout << "Imu mx: " << mx << std::endl; - std::cout << "Imu my: " << my << std::endl; - std::cout << "Imu mz: " << mz << std::endl; + std::cout << " Imu mx: " << mx << std::endl; + std::cout << " Imu my: " << my << std::endl; + std::cout << " Imu mz: " << mz << std::endl; } std::cout <<" ---" <<std::endl; diff --git a/src/examples/model_car_ultrasounds_test.cpp b/src/examples/model_car_ultrasounds_test.cpp index 3458bfe6ebdc655f271a4e8336ecf190594059cd..cfb9cf71806edd63f5f71e8497ad729caa6b2708 100644 --- a/src/examples/model_car_ultrasounds_test.cpp +++ b/src/examples/model_car_ultrasounds_test.cpp @@ -22,15 +22,15 @@ int main(int argc, char *argv[]) event_server->wait_all(events,1000); float us_value; if(uss_driver->get_uss(ID_ARD_SENS_US_SIDE_RIGHT, us_value)) - std::cout << " ID_ARD_SENS_US_SIDE_RIGHT value: " << us_value << std::endl; + std::cout << " ID_ARD_SENS_US_SIDE_RIGHT: " << us_value << std::endl; if(uss_driver->get_uss(ID_ARD_SENS_US_REAR_CENTER_RIGHT, us_value)) - std::cout << " ID_ARD_SENS_US_REAR_CENTER_RIGHT value: " << us_value << std::endl; + std::cout << " ID_ARD_SENS_US_REAR_CENTER_RIGHT: " << us_value << std::endl; if(uss_driver->get_uss(ID_ARD_SENS_US_REAR_CENTER, us_value)) - std::cout << " ID_ARD_SENS_US_REAR_CENTER value: " << us_value << std::endl; + std::cout << " ID_ARD_SENS_US_REAR_CENTER: " << us_value << std::endl; if(uss_driver->get_uss(ID_ARD_SENS_US_REAR_CENTER_LEFT, us_value)) - std::cout << " ID_ARD_SENS_US_REAR_CENTER_LEFT value: " << us_value << std::endl; + std::cout << " ID_ARD_SENS_US_REAR_CENTER_LEFT: " << us_value << std::endl; if(uss_driver->get_uss(ID_ARD_SENS_US_SIDE_LEFT, us_value)) - std::cout << " ID_ARD_SENS_US_SIDE_LEFT value: " << us_value << std::endl; + std::cout << " ID_ARD_SENS_US_SIDE_LEFT: " << us_value << std::endl; std::cout <<" ---" <<std::endl; } diff --git a/src/model_car_driver_base.cpp b/src/model_car_driver_base.cpp index b25c970c1df38176908c0da5928a8cb7a2bffe2e..80199946b06ad5f0337703b25215f752da0fa2c5 100644 --- a/src/model_car_driver_base.cpp +++ b/src/model_car_driver_base.cpp @@ -168,6 +168,11 @@ void *CModelCarDriverBase::data_thread(void *param) unsigned char * frame_data=NULL; unsigned int num; + + THeader header; + TDataUnion data_union; + tCRCUnion crc_union; + std::list<std::string> events; events.push_back(driver->serial_port->get_rx_event_id()); @@ -192,9 +197,9 @@ void *CModelCarDriverBase::data_thread(void *param) for(unsigned int i=0; i<num; i++) { - bool frame_ready = driver->process_byte(frame_data[i]); + bool frame_ready = driver->process_byte(header, data_union, crc_union, frame_data[i]); if(frame_ready) - driver->process_data(driver->header, driver->data_union, driver->crc_union); + driver->process_data(header, data_union, crc_union); else { if(i==num-1) @@ -221,7 +226,7 @@ void *CModelCarDriverBase::data_thread(void *param) -bool CModelCarDriverBase::process_byte(unsigned char byte) +bool CModelCarDriverBase::process_byte(THeader &header, TDataUnion &data_union, tCRCUnion &crc_union, unsigned char byte) { bool frame_ready=false;