Skip to content
Snippets Groups Projects
Commit 0be53e33 authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

union variables local to thread

parent 1e89354b
No related branches found
No related tags found
1 merge request!1Sergi
......@@ -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);
......
......@@ -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;
......
......@@ -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;
}
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment