diff --git a/src/model_car_driver_base.cpp b/src/model_car_driver_base.cpp index 57d0ac724ab25603b1683df6dd1a3edbfc8958c1..3456bd8e4e4bfec1ce80afc8f3c90b73ae40c0e5 100644 --- a/src/model_car_driver_base.cpp +++ b/src/model_car_driver_base.cpp @@ -349,11 +349,11 @@ uint8_t CModelCarDriverBase::get_id(void) std::list<std::string> events; events.push_back(this->new_info_event_id); - this->send_request(ID_ARD_ACT_REQUEST,0,NULL); try{ + this->send_request(ID_ARD_ACT_REQUEST,0,NULL); this->event_server->wait_all(events,100); } - catch(CEventTimeoutException &e){ + catch(...){ return -1; } @@ -362,7 +362,7 @@ uint8_t CModelCarDriverBase::get_id(void) void CModelCarDriverBase::send_request(uint8_t id, uint8_t data_length, uint8_t *data) { - uint8_t req_frame_size=sizeof(uint8_t)+sizeof(uint8_t)+sizeof(TTimeStampUnion)+data_length+sizeof(uint16_t),stuffed_frame_size; + uint8_t req_frame_size=sizeof(uint8_t)+sizeof(uint8_t)+sizeof(TTimeStampUnion)+data_length+sizeof(uint16_t),stuffed_frame_size,num_written; uint16_t crc_value; uint8_t *frame=NULL,*stuffed_frame=NULL; @@ -376,10 +376,12 @@ void CModelCarDriverBase::send_request(uint8_t id, uint8_t data_length, uint8_t this->stuff_frame(frame,req_frame_size,&stuffed_frame,stuffed_frame_size); this->port_mutex.enter(); - this->serial_port->write(stuffed_frame,stuffed_frame_size); + num_written=this->serial_port->write(stuffed_frame,stuffed_frame_size); this->port_mutex.exit(); delete[] stuffed_frame; delete[] frame; + if(num_written!=stuffed_frame_size) + throw CException(_HERE_,"Failed to send request"); } void CModelCarDriverBase::stuff_frame(uint8_t *frame_in, uint8_t size_in, uint8_t **frame_out, uint8_t & size_out)