|
@@ -1,1255 +1,169 @@
|
|
-//#include "canrecv_consumer.h"
|
|
|
|
-
|
|
|
|
-//#include "math.h"
|
|
|
|
-
|
|
|
|
-//extern setupConfig_t setupConfig;
|
|
|
|
-//extern iv::msgunit shmSonar;
|
|
|
|
-
|
|
|
|
-//CANRecv_Consumer::CANRecv_Consumer(CAN_Producer_Consumer *pBuf)
|
|
|
|
-//{
|
|
|
|
-// pBuffer = pBuf;
|
|
|
|
-
|
|
|
|
-// QObject::connect(this,&CANRecv_Consumer::RadarObjectArray_Ready,this,&CANRecv_Consumer::RadarObjectArray_Ready_Slot);
|
|
|
|
-
|
|
|
|
-// iv::radar::radarobject xradarObj;
|
|
|
|
-// vradarObj.fill(xradarObj,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//CANRecv_Consumer::~CANRecv_Consumer()
|
|
|
|
-//{
|
|
|
|
-// requestInterruption();
|
|
|
|
-// while(this->isFinished() == false);
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Clear_CAN_PrivateTempVariable(void)
|
|
|
|
-//{
|
|
|
|
-// CAN_ID = 0x000u;
|
|
|
|
-// CAN_DLC = 0;
|
|
|
|
-// for(int i=0;i<8;i++) CAN_data[i] = 0x00;
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//uint32_t CANRecv_Consumer::Trans_From_CANRaw(const iv::can::canraw &xraw) //only for standard data frame, return can id
|
|
|
|
-//{
|
|
|
|
-// this->Clear_CAN_PrivateTempVariable();
|
|
|
|
-// CAN_ID = xraw.id();
|
|
|
|
-// CAN_DLC = xraw.len();
|
|
|
|
-// char tempData[8];
|
|
|
|
-// int tempLen = (xraw.data().size() > 8) ? 8 : xraw.data().size();
|
|
|
|
-// strncpy(tempData,xraw.data().data(),tempLen);
|
|
|
|
-// for(int i=0;i<tempLen;i++)
|
|
|
|
-// {
|
|
|
|
-// CAN_data[i] = (uint8_t)tempData[i];
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// return CAN_ID;
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Pack_Info_To_SHM_ch0(uint32_t can_id)
|
|
|
|
-//{
|
|
|
|
-// std::string major,minor,patch;
|
|
|
|
-// iv::radar::radarobject *pobj;
|
|
|
|
-// iv::radar::radarobject xradarObj_null;
|
|
|
|
-// double tempDX,tempDY,tempVX,tempVY,tempAX,tempAY,tempOri;
|
|
|
|
-// uint8_t tempObjID;
|
|
|
|
-
|
|
|
|
-// switch (can_id) {
|
|
|
|
-// case 0x201:
|
|
|
|
-// persistent_Error = ars408_can_database_ch0_rx.RadarState_ch0.RadarState_Persistent_Error;
|
|
|
|
-// interference_Error = ars408_can_database_ch0_rx.RadarState_ch0.RadarState_Interference;
|
|
|
|
-// temperature_Error = ars408_can_database_ch0_rx.RadarState_ch0.RadarState_Temperature_Error;
|
|
|
|
-// temporary_Error = ars408_can_database_ch0_rx.RadarState_ch0.RadarState_Temporary_Error;
|
|
|
|
-// voltage_Error = ars408_can_database_ch0_rx.RadarState_ch0.RadarState_Voltage_Error;
|
|
|
|
-// speed_Loss = ars408_can_database_ch0_rx.RadarState_ch0.RadarState_MotionRxState & 0x01;
|
|
|
|
-// yaw_Rate_Loss = (ars408_can_database_ch0_rx.RadarState_ch0.RadarState_MotionRxState >> 1) & 0x01;
|
|
|
|
-// break;
|
|
|
|
-// case 0x700:
|
|
|
|
-// major = std::to_string((unsigned int)ars408_can_database_ch0_rx.VersionID_ch0.Version_MajorRelease);
|
|
|
|
-// minor = std::to_string((unsigned int)ars408_can_database_ch0_rx.VersionID_ch0.Version_MinorRelease);
|
|
|
|
-// patch = std::to_string((unsigned int)ars408_can_database_ch0_rx.VersionID_ch0.Version_PatchLevel);
|
|
|
|
-// radar_Version = major + "." + minor + "." + patch;
|
|
|
|
-// break;
|
|
|
|
-// case 0x60A:
|
|
|
|
-// if(ars408_can_database_ch0_rx.Obj_0_Status_ch0.Obj_NofObjects == 0)
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// for(int i=0;i<RADAR_OBJ_MAX_NUM;i++)
|
|
|
|
-// {
|
|
|
|
-// if(radarObjFreshFlag[i] == true)
|
|
|
|
-// {
|
|
|
|
-// pobj = xradarObjArray.add_obj();
|
|
|
|
-// pobj->CopyFrom(vradarObj[i]);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//// std::cout<<radarObjArray_send.obj_size()<<std::endl;
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// //clear the obj vector and flag vector
|
|
|
|
-// vradarObj.fill(xradarObj_null,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60B:
|
|
|
|
-// tempObjID = ars408_can_database_ch0_rx.Obj_1_General_ch0.Obj_ID;
|
|
|
|
-// radarObjFreshFlag[tempObjID] = true;
|
|
|
|
-// tempDX = -ars408_can_database_ch0_rx.Obj_1_General_ch0.Obj_DistLat_phys;
|
|
|
|
-// tempDY = ars408_can_database_ch0_rx.Obj_1_General_ch0.Obj_DistLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempDX,tempDY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_x(tempDX);
|
|
|
|
-// vradarObj[tempObjID].set_y(tempDY);
|
|
|
|
-// tempVX = -ars408_can_database_ch0_rx.Obj_1_General_ch0.Obj_VrelLat_phys;
|
|
|
|
-// tempVY = ars408_can_database_ch0_rx.Obj_1_General_ch0.Obj_VrelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempVX,tempVY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_vx(tempVX);
|
|
|
|
-// vradarObj[tempObjID].set_vy(tempVY);
|
|
|
|
-// vradarObj[tempObjID].set_vel(sqrt(tempVX*tempVX+tempVY*tempVY));
|
|
|
|
-// vradarObj[tempObjID].set_bvalid(true);
|
|
|
|
-// vradarObj[tempObjID].set_id(tempObjID);
|
|
|
|
-// vradarObj[tempObjID].set_dynamic_property(ars408_can_database_ch0_rx.Obj_1_General_ch0.Obj_DynProp);
|
|
|
|
-// vradarObj[tempObjID].set_rcs_radarcrosssection(ars408_can_database_ch0_rx.Obj_1_General_ch0.Obj_RCS_phys);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60C:
|
|
|
|
-// tempObjID = ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_ID;
|
|
|
|
-// vradarObj[tempObjID].set_distlong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_DistLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_distlat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_DistLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_VrelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_VrelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellatrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_ArelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellongrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_ArelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationrms(this->Trans_Ori_RMS_Ro_To_Phy(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_Orientation_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_measurestate(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_MeasState);
|
|
|
|
-// vradarObj[tempObjID].set_object_probofexist(this->Trans_ProbOfExist_Ro_To_Phy(ars408_can_database_ch0_rx.Obj_2_Quality_ch0.Obj_ProbOfExist));
|
|
|
|
-// break;
|
|
|
|
-// case 0x60D:
|
|
|
|
-// tempObjID = ars408_can_database_ch0_rx.Obj_3_Extended_ch0.Obj_ID;
|
|
|
|
-// tempAX = -ars408_can_database_ch0_rx.Obj_3_Extended_ch0.Obj_ArelLat_phys;
|
|
|
|
-// tempAY = ars408_can_database_ch0_rx.Obj_3_Extended_ch0.Obj_ArelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempAX,tempAY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellong(tempAY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellat(tempAX);
|
|
|
|
-// tempOri = ars408_can_database_ch0_rx.Obj_3_Extended_ch0.Obj_OrientationAngle_phys + setupConfig.radarAzimuth;
|
|
|
|
-// if(tempOri > 180.0)tempOri = tempOri - 360.0;
|
|
|
|
-// if(tempOri < -180.0)tempOri = tempOri + 360.0;
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationangle(tempOri);
|
|
|
|
-// vradarObj[tempObjID].set_object_class(ars408_can_database_ch0_rx.Obj_3_Extended_ch0.Obj_Class);
|
|
|
|
-// vradarObj[tempObjID].set_object_length(ars408_can_database_ch0_rx.Obj_3_Extended_ch0.Obj_Length_phys);
|
|
|
|
-// vradarObj[tempObjID].set_object_width(ars408_can_database_ch0_rx.Obj_3_Extended_ch0.Obj_Width_phys);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Pack_Info_To_SHM_ch1(uint32_t can_id)
|
|
|
|
-//{
|
|
|
|
-// std::string major,minor,patch;
|
|
|
|
-// iv::radar::radarobject *pobj;
|
|
|
|
-// iv::radar::radarobject xradarObj_null;
|
|
|
|
-// double tempDX,tempDY,tempVX,tempVY,tempAX,tempAY,tempOri;
|
|
|
|
-// uint8_t tempObjID;
|
|
|
|
-
|
|
|
|
-// switch (can_id - 0x010) {
|
|
|
|
-// case 0x201:
|
|
|
|
-// persistent_Error = ars408_can_database_ch1_rx.RadarState_ch1.RadarState_Persistent_Error;
|
|
|
|
-// interference_Error = ars408_can_database_ch1_rx.RadarState_ch1.RadarState_Interference;
|
|
|
|
-// temperature_Error = ars408_can_database_ch1_rx.RadarState_ch1.RadarState_Temperature_Error;
|
|
|
|
-// temporary_Error = ars408_can_database_ch1_rx.RadarState_ch1.RadarState_Temporary_Error;
|
|
|
|
-// voltage_Error = ars408_can_database_ch1_rx.RadarState_ch1.RadarState_Voltage_Error;
|
|
|
|
-// speed_Loss = ars408_can_database_ch1_rx.RadarState_ch1.RadarState_MotionRxState & 0x01;
|
|
|
|
-// yaw_Rate_Loss = (ars408_can_database_ch1_rx.RadarState_ch1.RadarState_MotionRxState >> 1) & 0x01;
|
|
|
|
-// break;
|
|
|
|
-// case 0x700:
|
|
|
|
-// major = std::to_string((unsigned int)ars408_can_database_ch1_rx.VersionID_ch1.Version_MajorRelease);
|
|
|
|
-// minor = std::to_string((unsigned int)ars408_can_database_ch1_rx.VersionID_ch1.Version_MinorRelease);
|
|
|
|
-// patch = std::to_string((unsigned int)ars408_can_database_ch1_rx.VersionID_ch1.Version_PatchLevel);
|
|
|
|
-// radar_Version = major + "." + minor + "." + patch;
|
|
|
|
-// break;
|
|
|
|
-// case 0x60A:
|
|
|
|
-// if(ars408_can_database_ch1_rx.Obj_0_Status_ch1.Obj_NofObjects == 0)
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// for(int i=0;i<RADAR_OBJ_MAX_NUM;i++)
|
|
|
|
-// {
|
|
|
|
-// if(radarObjFreshFlag[i] == true)
|
|
|
|
-// {
|
|
|
|
-// pobj = xradarObjArray.add_obj();
|
|
|
|
-// pobj->CopyFrom(vradarObj[i]);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//// std::cout<<radarObjArray_send.obj_size()<<std::endl;
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// //clear the obj vector and flag vector
|
|
|
|
-// vradarObj.fill(xradarObj_null,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60B:
|
|
|
|
-// tempObjID = ars408_can_database_ch1_rx.Obj_1_General_ch1.Obj_ID;
|
|
|
|
-// radarObjFreshFlag[tempObjID] = true;
|
|
|
|
-// tempDX = -ars408_can_database_ch1_rx.Obj_1_General_ch1.Obj_DistLat_phys;
|
|
|
|
-// tempDY = ars408_can_database_ch1_rx.Obj_1_General_ch1.Obj_DistLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempDX,tempDY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_x(tempDX);
|
|
|
|
-// vradarObj[tempObjID].set_y(tempDY);
|
|
|
|
-// tempVX = -ars408_can_database_ch1_rx.Obj_1_General_ch1.Obj_VrelLat_phys;
|
|
|
|
-// tempVY = ars408_can_database_ch1_rx.Obj_1_General_ch1.Obj_VrelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempVX,tempVY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_vx(tempVX);
|
|
|
|
-// vradarObj[tempObjID].set_vy(tempVY);
|
|
|
|
-// vradarObj[tempObjID].set_vel(sqrt(tempVX*tempVX+tempVY*tempVY));
|
|
|
|
-// vradarObj[tempObjID].set_bvalid(true);
|
|
|
|
-// vradarObj[tempObjID].set_id(tempObjID);
|
|
|
|
-// vradarObj[tempObjID].set_dynamic_property(ars408_can_database_ch1_rx.Obj_1_General_ch1.Obj_DynProp);
|
|
|
|
-// vradarObj[tempObjID].set_rcs_radarcrosssection(ars408_can_database_ch1_rx.Obj_1_General_ch1.Obj_RCS_phys);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60C:
|
|
|
|
-// tempObjID = ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_ID;
|
|
|
|
-// vradarObj[tempObjID].set_distlong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_DistLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_distlat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_DistLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_VrelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_VrelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellatrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_ArelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellongrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_ArelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationrms(this->Trans_Ori_RMS_Ro_To_Phy(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_Orientation_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_measurestate(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_MeasState);
|
|
|
|
-// vradarObj[tempObjID].set_object_probofexist(this->Trans_ProbOfExist_Ro_To_Phy(ars408_can_database_ch1_rx.Obj_2_Quality_ch1.Obj_ProbOfExist));
|
|
|
|
-// break;
|
|
|
|
-// case 0x60D:
|
|
|
|
-// tempObjID = ars408_can_database_ch1_rx.Obj_3_Extended_ch1.Obj_ID;
|
|
|
|
-// tempAX = -ars408_can_database_ch1_rx.Obj_3_Extended_ch1.Obj_ArelLat_phys;
|
|
|
|
-// tempAY = ars408_can_database_ch1_rx.Obj_3_Extended_ch1.Obj_ArelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempAX,tempAY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellong(tempAY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellat(tempAX);
|
|
|
|
-// tempOri = ars408_can_database_ch1_rx.Obj_3_Extended_ch1.Obj_OrientationAngle_phys + setupConfig.radarAzimuth;
|
|
|
|
-// if(tempOri > 180.0)tempOri = tempOri - 360.0;
|
|
|
|
-// if(tempOri < -180.0)tempOri = tempOri + 360.0;
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationangle(tempOri);
|
|
|
|
-// vradarObj[tempObjID].set_object_class(ars408_can_database_ch1_rx.Obj_3_Extended_ch1.Obj_Class);
|
|
|
|
-// vradarObj[tempObjID].set_object_length(ars408_can_database_ch1_rx.Obj_3_Extended_ch1.Obj_Length_phys);
|
|
|
|
-// vradarObj[tempObjID].set_object_width(ars408_can_database_ch1_rx.Obj_3_Extended_ch1.Obj_Width_phys);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Pack_Info_To_SHM_ch2(uint32_t can_id)
|
|
|
|
-//{
|
|
|
|
-// std::string major,minor,patch;
|
|
|
|
-// iv::radar::radarobject *pobj;
|
|
|
|
-// iv::radar::radarobject xradarObj_null;
|
|
|
|
-// double tempDX,tempDY,tempVX,tempVY,tempAX,tempAY,tempOri;
|
|
|
|
-// uint8_t tempObjID;
|
|
|
|
-
|
|
|
|
-// switch (can_id - 0x020) {
|
|
|
|
-// case 0x201:
|
|
|
|
-// persistent_Error = ars408_can_database_ch2_rx.RadarState_ch2.RadarState_Persistent_Error;
|
|
|
|
-// interference_Error = ars408_can_database_ch2_rx.RadarState_ch2.RadarState_Interference;
|
|
|
|
-// temperature_Error = ars408_can_database_ch2_rx.RadarState_ch2.RadarState_Temperature_Error;
|
|
|
|
-// temporary_Error = ars408_can_database_ch2_rx.RadarState_ch2.RadarState_Temporary_Error;
|
|
|
|
-// voltage_Error = ars408_can_database_ch2_rx.RadarState_ch2.RadarState_Voltage_Error;
|
|
|
|
-// speed_Loss = ars408_can_database_ch2_rx.RadarState_ch2.RadarState_MotionRxState & 0x01;
|
|
|
|
-// yaw_Rate_Loss = (ars408_can_database_ch2_rx.RadarState_ch2.RadarState_MotionRxState >> 1) & 0x01;
|
|
|
|
-// break;
|
|
|
|
-// case 0x700:
|
|
|
|
-// major = std::to_string((unsigned int)ars408_can_database_ch2_rx.VersionID_ch2.Version_MajorRelease);
|
|
|
|
-// minor = std::to_string((unsigned int)ars408_can_database_ch2_rx.VersionID_ch2.Version_MinorRelease);
|
|
|
|
-// patch = std::to_string((unsigned int)ars408_can_database_ch2_rx.VersionID_ch2.Version_PatchLevel);
|
|
|
|
-// radar_Version = major + "." + minor + "." + patch;
|
|
|
|
-// break;
|
|
|
|
-// case 0x60A:
|
|
|
|
-// if(ars408_can_database_ch2_rx.Obj_0_Status_ch2.Obj_NofObjects == 0)
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// for(int i=0;i<RADAR_OBJ_MAX_NUM;i++)
|
|
|
|
-// {
|
|
|
|
-// if(radarObjFreshFlag[i] == true)
|
|
|
|
-// {
|
|
|
|
-// pobj = xradarObjArray.add_obj();
|
|
|
|
-// pobj->CopyFrom(vradarObj[i]);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//// std::cout<<radarObjArray_send.obj_size()<<std::endl;
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// //clear the obj vector and flag vector
|
|
|
|
-// vradarObj.fill(xradarObj_null,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60B:
|
|
|
|
-// tempObjID = ars408_can_database_ch2_rx.Obj_1_General_ch2.Obj_ID;
|
|
|
|
-// radarObjFreshFlag[tempObjID] = true;
|
|
|
|
-// tempDX = -ars408_can_database_ch2_rx.Obj_1_General_ch2.Obj_DistLat_phys;
|
|
|
|
-// tempDY = ars408_can_database_ch2_rx.Obj_1_General_ch2.Obj_DistLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempDX,tempDY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_x(tempDX);
|
|
|
|
-// vradarObj[tempObjID].set_y(tempDY);
|
|
|
|
-// tempVX = -ars408_can_database_ch2_rx.Obj_1_General_ch2.Obj_VrelLat_phys;
|
|
|
|
-// tempVY = ars408_can_database_ch2_rx.Obj_1_General_ch2.Obj_VrelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempVX,tempVY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_vx(tempVX);
|
|
|
|
-// vradarObj[tempObjID].set_vy(tempVY);
|
|
|
|
-// vradarObj[tempObjID].set_vel(sqrt(tempVX*tempVX+tempVY*tempVY));
|
|
|
|
-// vradarObj[tempObjID].set_bvalid(true);
|
|
|
|
-// vradarObj[tempObjID].set_id(tempObjID);
|
|
|
|
-// vradarObj[tempObjID].set_dynamic_property(ars408_can_database_ch2_rx.Obj_1_General_ch2.Obj_DynProp);
|
|
|
|
-// vradarObj[tempObjID].set_rcs_radarcrosssection(ars408_can_database_ch2_rx.Obj_1_General_ch2.Obj_RCS_phys);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60C:
|
|
|
|
-// tempObjID = ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_ID;
|
|
|
|
-// vradarObj[tempObjID].set_distlong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_DistLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_distlat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_DistLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_VrelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_VrelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellatrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_ArelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellongrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_ArelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationrms(this->Trans_Ori_RMS_Ro_To_Phy(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_Orientation_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_measurestate(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_MeasState);
|
|
|
|
-// vradarObj[tempObjID].set_object_probofexist(this->Trans_ProbOfExist_Ro_To_Phy(ars408_can_database_ch2_rx.Obj_2_Quality_ch2.Obj_ProbOfExist));
|
|
|
|
-// break;
|
|
|
|
-// case 0x60D:
|
|
|
|
-// tempObjID = ars408_can_database_ch2_rx.Obj_3_Extended_ch2.Obj_ID;
|
|
|
|
-// tempAX = -ars408_can_database_ch2_rx.Obj_3_Extended_ch2.Obj_ArelLat_phys;
|
|
|
|
-// tempAY = ars408_can_database_ch2_rx.Obj_3_Extended_ch2.Obj_ArelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempAX,tempAY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellong(tempAY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellat(tempAX);
|
|
|
|
-// tempOri = ars408_can_database_ch2_rx.Obj_3_Extended_ch2.Obj_OrientationAngle_phys + setupConfig.radarAzimuth;
|
|
|
|
-// if(tempOri > 180.0)tempOri = tempOri - 360.0;
|
|
|
|
-// if(tempOri < -180.0)tempOri = tempOri + 360.0;
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationangle(tempOri);
|
|
|
|
-// vradarObj[tempObjID].set_object_class(ars408_can_database_ch2_rx.Obj_3_Extended_ch2.Obj_Class);
|
|
|
|
-// vradarObj[tempObjID].set_object_length(ars408_can_database_ch2_rx.Obj_3_Extended_ch2.Obj_Length_phys);
|
|
|
|
-// vradarObj[tempObjID].set_object_width(ars408_can_database_ch2_rx.Obj_3_Extended_ch2.Obj_Width_phys);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Pack_Info_To_SHM_ch3(uint32_t can_id)
|
|
|
|
-//{
|
|
|
|
-// std::string major,minor,patch;
|
|
|
|
-// iv::radar::radarobject *pobj;
|
|
|
|
-// iv::radar::radarobject xradarObj_null;
|
|
|
|
-// double tempDX,tempDY,tempVX,tempVY,tempAX,tempAY,tempOri;
|
|
|
|
-// uint8_t tempObjID;
|
|
|
|
-
|
|
|
|
-// switch (can_id - 0x030) {
|
|
|
|
-// case 0x201:
|
|
|
|
-// persistent_Error = ars408_can_database_ch3_rx.RadarState_ch3.RadarState_Persistent_Error;
|
|
|
|
-// interference_Error = ars408_can_database_ch3_rx.RadarState_ch3.RadarState_Interference;
|
|
|
|
-// temperature_Error = ars408_can_database_ch3_rx.RadarState_ch3.RadarState_Temperature_Error;
|
|
|
|
-// temporary_Error = ars408_can_database_ch3_rx.RadarState_ch3.RadarState_Temporary_Error;
|
|
|
|
-// voltage_Error = ars408_can_database_ch3_rx.RadarState_ch3.RadarState_Voltage_Error;
|
|
|
|
-// speed_Loss = ars408_can_database_ch3_rx.RadarState_ch3.RadarState_MotionRxState & 0x01;
|
|
|
|
-// yaw_Rate_Loss = (ars408_can_database_ch3_rx.RadarState_ch3.RadarState_MotionRxState >> 1) & 0x01;
|
|
|
|
-// break;
|
|
|
|
-// case 0x700:
|
|
|
|
-// major = std::to_string((unsigned int)ars408_can_database_ch3_rx.VersionID_ch3.Version_MajorRelease);
|
|
|
|
-// minor = std::to_string((unsigned int)ars408_can_database_ch3_rx.VersionID_ch3.Version_MinorRelease);
|
|
|
|
-// patch = std::to_string((unsigned int)ars408_can_database_ch3_rx.VersionID_ch3.Version_PatchLevel);
|
|
|
|
-// radar_Version = major + "." + minor + "." + patch;
|
|
|
|
-// break;
|
|
|
|
-// case 0x60A:
|
|
|
|
-// if(ars408_can_database_ch3_rx.Obj_0_Status_ch3.Obj_NofObjects == 0)
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// for(int i=0;i<RADAR_OBJ_MAX_NUM;i++)
|
|
|
|
-// {
|
|
|
|
-// if(radarObjFreshFlag[i] == true)
|
|
|
|
-// {
|
|
|
|
-// pobj = xradarObjArray.add_obj();
|
|
|
|
-// pobj->CopyFrom(vradarObj[i]);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//// std::cout<<radarObjArray_send.obj_size()<<std::endl;
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// //clear the obj vector and flag vector
|
|
|
|
-// vradarObj.fill(xradarObj_null,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60B:
|
|
|
|
-// tempObjID = ars408_can_database_ch3_rx.Obj_1_General_ch3.Obj_ID;
|
|
|
|
-// radarObjFreshFlag[tempObjID] = true;
|
|
|
|
-// tempDX = -ars408_can_database_ch3_rx.Obj_1_General_ch3.Obj_DistLat_phys;
|
|
|
|
-// tempDY = ars408_can_database_ch3_rx.Obj_1_General_ch3.Obj_DistLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempDX,tempDY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_x(tempDX);
|
|
|
|
-// vradarObj[tempObjID].set_y(tempDY);
|
|
|
|
-// tempVX = -ars408_can_database_ch3_rx.Obj_1_General_ch3.Obj_VrelLat_phys;
|
|
|
|
-// tempVY = ars408_can_database_ch3_rx.Obj_1_General_ch3.Obj_VrelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempVX,tempVY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_vx(tempVX);
|
|
|
|
-// vradarObj[tempObjID].set_vy(tempVY);
|
|
|
|
-// vradarObj[tempObjID].set_vel(sqrt(tempVX*tempVX+tempVY*tempVY));
|
|
|
|
-// vradarObj[tempObjID].set_bvalid(true);
|
|
|
|
-// vradarObj[tempObjID].set_id(tempObjID);
|
|
|
|
-// vradarObj[tempObjID].set_dynamic_property(ars408_can_database_ch3_rx.Obj_1_General_ch3.Obj_DynProp);
|
|
|
|
-// vradarObj[tempObjID].set_rcs_radarcrosssection(ars408_can_database_ch3_rx.Obj_1_General_ch3.Obj_RCS_phys);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60C:
|
|
|
|
-// tempObjID = ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_ID;
|
|
|
|
-// vradarObj[tempObjID].set_distlong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_DistLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_distlat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_DistLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_VrelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_VrelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellatrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_ArelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellongrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_ArelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationrms(this->Trans_Ori_RMS_Ro_To_Phy(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_Orientation_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_measurestate(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_MeasState);
|
|
|
|
-// vradarObj[tempObjID].set_object_probofexist(this->Trans_ProbOfExist_Ro_To_Phy(ars408_can_database_ch3_rx.Obj_2_Quality_ch3.Obj_ProbOfExist));
|
|
|
|
-// break;
|
|
|
|
-// case 0x60D:
|
|
|
|
-// tempObjID = ars408_can_database_ch3_rx.Obj_3_Extended_ch3.Obj_ID;
|
|
|
|
-// tempAX = -ars408_can_database_ch3_rx.Obj_3_Extended_ch3.Obj_ArelLat_phys;
|
|
|
|
-// tempAY = ars408_can_database_ch3_rx.Obj_3_Extended_ch3.Obj_ArelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempAX,tempAY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellong(tempAY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellat(tempAX);
|
|
|
|
-// tempOri = ars408_can_database_ch3_rx.Obj_3_Extended_ch3.Obj_OrientationAngle_phys + setupConfig.radarAzimuth;
|
|
|
|
-// if(tempOri > 180.0)tempOri = tempOri - 360.0;
|
|
|
|
-// if(tempOri < -180.0)tempOri = tempOri + 360.0;
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationangle(tempOri);
|
|
|
|
-// vradarObj[tempObjID].set_object_class(ars408_can_database_ch3_rx.Obj_3_Extended_ch3.Obj_Class);
|
|
|
|
-// vradarObj[tempObjID].set_object_length(ars408_can_database_ch3_rx.Obj_3_Extended_ch3.Obj_Length_phys);
|
|
|
|
-// vradarObj[tempObjID].set_object_width(ars408_can_database_ch3_rx.Obj_3_Extended_ch3.Obj_Width_phys);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Pack_Info_To_SHM_ch4(uint32_t can_id)
|
|
|
|
-//{
|
|
|
|
-// std::string major,minor,patch;
|
|
|
|
-// iv::radar::radarobject *pobj;
|
|
|
|
-// iv::radar::radarobject xradarObj_null;
|
|
|
|
-// double tempDX,tempDY,tempVX,tempVY,tempAX,tempAY,tempOri;
|
|
|
|
-// uint8_t tempObjID;
|
|
|
|
-
|
|
|
|
-// switch (can_id - 0x040) {
|
|
|
|
-// case 0x201:
|
|
|
|
-// persistent_Error = ars408_can_database_ch4_rx.RadarState_ch4.RadarState_Persistent_Error;
|
|
|
|
-// interference_Error = ars408_can_database_ch4_rx.RadarState_ch4.RadarState_Interference;
|
|
|
|
-// temperature_Error = ars408_can_database_ch4_rx.RadarState_ch4.RadarState_Temperature_Error;
|
|
|
|
-// temporary_Error = ars408_can_database_ch4_rx.RadarState_ch4.RadarState_Temporary_Error;
|
|
|
|
-// voltage_Error = ars408_can_database_ch4_rx.RadarState_ch4.RadarState_Voltage_Error;
|
|
|
|
-// speed_Loss = ars408_can_database_ch4_rx.RadarState_ch4.RadarState_MotionRxState & 0x01;
|
|
|
|
-// yaw_Rate_Loss = (ars408_can_database_ch4_rx.RadarState_ch4.RadarState_MotionRxState >> 1) & 0x01;
|
|
|
|
-// break;
|
|
|
|
-// case 0x700:
|
|
|
|
-// major = std::to_string((unsigned int)ars408_can_database_ch4_rx.VersionID_ch4.Version_MajorRelease);
|
|
|
|
-// minor = std::to_string((unsigned int)ars408_can_database_ch4_rx.VersionID_ch4.Version_MinorRelease);
|
|
|
|
-// patch = std::to_string((unsigned int)ars408_can_database_ch4_rx.VersionID_ch4.Version_PatchLevel);
|
|
|
|
-// radar_Version = major + "." + minor + "." + patch;
|
|
|
|
-// break;
|
|
|
|
-// case 0x60A:
|
|
|
|
-// if(ars408_can_database_ch4_rx.Obj_0_Status_ch4.Obj_NofObjects == 0)
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// for(int i=0;i<RADAR_OBJ_MAX_NUM;i++)
|
|
|
|
-// {
|
|
|
|
-// if(radarObjFreshFlag[i] == true)
|
|
|
|
-// {
|
|
|
|
-// pobj = xradarObjArray.add_obj();
|
|
|
|
-// pobj->CopyFrom(vradarObj[i]);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//// std::cout<<radarObjArray_send.obj_size()<<std::endl;
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// //clear the obj vector and flag vector
|
|
|
|
-// vradarObj.fill(xradarObj_null,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60B:
|
|
|
|
-// tempObjID = ars408_can_database_ch4_rx.Obj_1_General_ch4.Obj_ID;
|
|
|
|
-// radarObjFreshFlag[tempObjID] = true;
|
|
|
|
-// tempDX = -ars408_can_database_ch4_rx.Obj_1_General_ch4.Obj_DistLat_phys;
|
|
|
|
-// tempDY = ars408_can_database_ch4_rx.Obj_1_General_ch4.Obj_DistLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempDX,tempDY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_x(tempDX);
|
|
|
|
-// vradarObj[tempObjID].set_y(tempDY);
|
|
|
|
-// tempVX = -ars408_can_database_ch4_rx.Obj_1_General_ch4.Obj_VrelLat_phys;
|
|
|
|
-// tempVY = ars408_can_database_ch4_rx.Obj_1_General_ch4.Obj_VrelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempVX,tempVY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_vx(tempVX);
|
|
|
|
-// vradarObj[tempObjID].set_vy(tempVY);
|
|
|
|
-// vradarObj[tempObjID].set_vel(sqrt(tempVX*tempVX+tempVY*tempVY));
|
|
|
|
-// vradarObj[tempObjID].set_bvalid(true);
|
|
|
|
-// vradarObj[tempObjID].set_id(tempObjID);
|
|
|
|
-// vradarObj[tempObjID].set_dynamic_property(ars408_can_database_ch4_rx.Obj_1_General_ch4.Obj_DynProp);
|
|
|
|
-// vradarObj[tempObjID].set_rcs_radarcrosssection(ars408_can_database_ch4_rx.Obj_1_General_ch4.Obj_RCS_phys);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60C:
|
|
|
|
-// tempObjID = ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_ID;
|
|
|
|
-// vradarObj[tempObjID].set_distlong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_DistLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_distlat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_DistLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_VrelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_VrelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellatrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_ArelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellongrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_ArelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationrms(this->Trans_Ori_RMS_Ro_To_Phy(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_Orientation_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_measurestate(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_MeasState);
|
|
|
|
-// vradarObj[tempObjID].set_object_probofexist(this->Trans_ProbOfExist_Ro_To_Phy(ars408_can_database_ch4_rx.Obj_2_Quality_ch4.Obj_ProbOfExist));
|
|
|
|
-// break;
|
|
|
|
-// case 0x60D:
|
|
|
|
-// tempObjID = ars408_can_database_ch4_rx.Obj_3_Extended_ch4.Obj_ID;
|
|
|
|
-// tempAX = -ars408_can_database_ch4_rx.Obj_3_Extended_ch4.Obj_ArelLat_phys;
|
|
|
|
-// tempAY = ars408_can_database_ch4_rx.Obj_3_Extended_ch4.Obj_ArelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempAX,tempAY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellong(tempAY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellat(tempAX);
|
|
|
|
-// tempOri = ars408_can_database_ch4_rx.Obj_3_Extended_ch4.Obj_OrientationAngle_phys + setupConfig.radarAzimuth;
|
|
|
|
-// if(tempOri > 180.0)tempOri = tempOri - 360.0;
|
|
|
|
-// if(tempOri < -180.0)tempOri = tempOri + 360.0;
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationangle(tempOri);
|
|
|
|
-// vradarObj[tempObjID].set_object_class(ars408_can_database_ch4_rx.Obj_3_Extended_ch4.Obj_Class);
|
|
|
|
-// vradarObj[tempObjID].set_object_length(ars408_can_database_ch4_rx.Obj_3_Extended_ch4.Obj_Length_phys);
|
|
|
|
-// vradarObj[tempObjID].set_object_width(ars408_can_database_ch4_rx.Obj_3_Extended_ch4.Obj_Width_phys);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Pack_Info_To_SHM_ch5(uint32_t can_id)
|
|
|
|
-//{
|
|
|
|
-// std::string major,minor,patch;
|
|
|
|
-// iv::radar::radarobject *pobj;
|
|
|
|
-// iv::radar::radarobject xradarObj_null;
|
|
|
|
-// double tempDX,tempDY,tempVX,tempVY,tempAX,tempAY,tempOri;
|
|
|
|
-// uint8_t tempObjID;
|
|
|
|
-
|
|
|
|
-// switch (can_id - 0x050) {
|
|
|
|
-// case 0x201:
|
|
|
|
-// persistent_Error = ars408_can_database_ch5_rx.RadarState_ch5.RadarState_Persistent_Error;
|
|
|
|
-// interference_Error = ars408_can_database_ch5_rx.RadarState_ch5.RadarState_Interference;
|
|
|
|
-// temperature_Error = ars408_can_database_ch5_rx.RadarState_ch5.RadarState_Temperature_Error;
|
|
|
|
-// temporary_Error = ars408_can_database_ch5_rx.RadarState_ch5.RadarState_Temporary_Error;
|
|
|
|
-// voltage_Error = ars408_can_database_ch5_rx.RadarState_ch5.RadarState_Voltage_Error;
|
|
|
|
-// speed_Loss = ars408_can_database_ch5_rx.RadarState_ch5.RadarState_MotionRxState & 0x01;
|
|
|
|
-// yaw_Rate_Loss = (ars408_can_database_ch5_rx.RadarState_ch5.RadarState_MotionRxState >> 1) & 0x01;
|
|
|
|
-// break;
|
|
|
|
-// case 0x700:
|
|
|
|
-// major = std::to_string((unsigned int)ars408_can_database_ch5_rx.VersionID_ch5.Version_MajorRelease);
|
|
|
|
-// minor = std::to_string((unsigned int)ars408_can_database_ch5_rx.VersionID_ch5.Version_MinorRelease);
|
|
|
|
-// patch = std::to_string((unsigned int)ars408_can_database_ch5_rx.VersionID_ch5.Version_PatchLevel);
|
|
|
|
-// radar_Version = major + "." + minor + "." + patch;
|
|
|
|
-// break;
|
|
|
|
-// case 0x60A:
|
|
|
|
-// if(ars408_can_database_ch5_rx.Obj_0_Status_ch5.Obj_NofObjects == 0)
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// for(int i=0;i<RADAR_OBJ_MAX_NUM;i++)
|
|
|
|
-// {
|
|
|
|
-// if(radarObjFreshFlag[i] == true)
|
|
|
|
-// {
|
|
|
|
-// pobj = xradarObjArray.add_obj();
|
|
|
|
-// pobj->CopyFrom(vradarObj[i]);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//// std::cout<<radarObjArray_send.obj_size()<<std::endl;
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// //clear the obj vector and flag vector
|
|
|
|
-// vradarObj.fill(xradarObj_null,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60B:
|
|
|
|
-// tempObjID = ars408_can_database_ch5_rx.Obj_1_General_ch5.Obj_ID;
|
|
|
|
-// radarObjFreshFlag[tempObjID] = true;
|
|
|
|
-// tempDX = -ars408_can_database_ch5_rx.Obj_1_General_ch5.Obj_DistLat_phys;
|
|
|
|
-// tempDY = ars408_can_database_ch5_rx.Obj_1_General_ch5.Obj_DistLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempDX,tempDY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_x(tempDX);
|
|
|
|
-// vradarObj[tempObjID].set_y(tempDY);
|
|
|
|
-// tempVX = -ars408_can_database_ch5_rx.Obj_1_General_ch5.Obj_VrelLat_phys;
|
|
|
|
-// tempVY = ars408_can_database_ch5_rx.Obj_1_General_ch5.Obj_VrelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempVX,tempVY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_vx(tempVX);
|
|
|
|
-// vradarObj[tempObjID].set_vy(tempVY);
|
|
|
|
-// vradarObj[tempObjID].set_vel(sqrt(tempVX*tempVX+tempVY*tempVY));
|
|
|
|
-// vradarObj[tempObjID].set_bvalid(true);
|
|
|
|
-// vradarObj[tempObjID].set_id(tempObjID);
|
|
|
|
-// vradarObj[tempObjID].set_dynamic_property(ars408_can_database_ch5_rx.Obj_1_General_ch5.Obj_DynProp);
|
|
|
|
-// vradarObj[tempObjID].set_rcs_radarcrosssection(ars408_can_database_ch5_rx.Obj_1_General_ch5.Obj_RCS_phys);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60C:
|
|
|
|
-// tempObjID = ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_ID;
|
|
|
|
-// vradarObj[tempObjID].set_distlong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_DistLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_distlat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_DistLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_VrelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_VrelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellatrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_ArelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellongrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_ArelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationrms(this->Trans_Ori_RMS_Ro_To_Phy(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_Orientation_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_measurestate(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_MeasState);
|
|
|
|
-// vradarObj[tempObjID].set_object_probofexist(this->Trans_ProbOfExist_Ro_To_Phy(ars408_can_database_ch5_rx.Obj_2_Quality_ch5.Obj_ProbOfExist));
|
|
|
|
-// break;
|
|
|
|
-// case 0x60D:
|
|
|
|
-// tempObjID = ars408_can_database_ch5_rx.Obj_3_Extended_ch5.Obj_ID;
|
|
|
|
-// tempAX = -ars408_can_database_ch5_rx.Obj_3_Extended_ch5.Obj_ArelLat_phys;
|
|
|
|
-// tempAY = ars408_can_database_ch5_rx.Obj_3_Extended_ch5.Obj_ArelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempAX,tempAY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellong(tempAY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellat(tempAX);
|
|
|
|
-// tempOri = ars408_can_database_ch5_rx.Obj_3_Extended_ch5.Obj_OrientationAngle_phys + setupConfig.radarAzimuth;
|
|
|
|
-// if(tempOri > 180.0)tempOri = tempOri - 360.0;
|
|
|
|
-// if(tempOri < -180.0)tempOri = tempOri + 360.0;
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationangle(tempOri);
|
|
|
|
-// vradarObj[tempObjID].set_object_class(ars408_can_database_ch5_rx.Obj_3_Extended_ch5.Obj_Class);
|
|
|
|
-// vradarObj[tempObjID].set_object_length(ars408_can_database_ch5_rx.Obj_3_Extended_ch5.Obj_Length_phys);
|
|
|
|
-// vradarObj[tempObjID].set_object_width(ars408_can_database_ch5_rx.Obj_3_Extended_ch5.Obj_Width_phys);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Pack_Info_To_SHM_ch6(uint32_t can_id)
|
|
|
|
-//{
|
|
|
|
-// std::string major,minor,patch;
|
|
|
|
-// iv::radar::radarobject *pobj;
|
|
|
|
-// iv::radar::radarobject xradarObj_null;
|
|
|
|
-// double tempDX,tempDY,tempVX,tempVY,tempAX,tempAY,tempOri;
|
|
|
|
-// uint8_t tempObjID;
|
|
|
|
-
|
|
|
|
-// switch (can_id - 0x060) {
|
|
|
|
-// case 0x201:
|
|
|
|
-// persistent_Error = ars408_can_database_ch6_rx.RadarState_ch6.RadarState_Persistent_Error;
|
|
|
|
-// interference_Error = ars408_can_database_ch6_rx.RadarState_ch6.RadarState_Interference;
|
|
|
|
-// temperature_Error = ars408_can_database_ch6_rx.RadarState_ch6.RadarState_Temperature_Error;
|
|
|
|
-// temporary_Error = ars408_can_database_ch6_rx.RadarState_ch6.RadarState_Temporary_Error;
|
|
|
|
-// voltage_Error = ars408_can_database_ch6_rx.RadarState_ch6.RadarState_Voltage_Error;
|
|
|
|
-// speed_Loss = ars408_can_database_ch6_rx.RadarState_ch6.RadarState_MotionRxState & 0x01;
|
|
|
|
-// yaw_Rate_Loss = (ars408_can_database_ch6_rx.RadarState_ch6.RadarState_MotionRxState >> 1) & 0x01;
|
|
|
|
-// break;
|
|
|
|
-// case 0x700:
|
|
|
|
-// major = std::to_string((unsigned int)ars408_can_database_ch6_rx.VersionID_ch6.Version_MajorRelease);
|
|
|
|
-// minor = std::to_string((unsigned int)ars408_can_database_ch6_rx.VersionID_ch6.Version_MinorRelease);
|
|
|
|
-// patch = std::to_string((unsigned int)ars408_can_database_ch6_rx.VersionID_ch6.Version_PatchLevel);
|
|
|
|
-// radar_Version = major + "." + minor + "." + patch;
|
|
|
|
-// break;
|
|
|
|
-// case 0x60A:
|
|
|
|
-// if(ars408_can_database_ch6_rx.Obj_0_Status_ch6.Obj_NofObjects == 0)
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// for(int i=0;i<RADAR_OBJ_MAX_NUM;i++)
|
|
|
|
-// {
|
|
|
|
-// if(radarObjFreshFlag[i] == true)
|
|
|
|
-// {
|
|
|
|
-// pobj = xradarObjArray.add_obj();
|
|
|
|
-// pobj->CopyFrom(vradarObj[i]);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//// std::cout<<radarObjArray_send.obj_size()<<std::endl;
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// //clear the obj vector and flag vector
|
|
|
|
-// vradarObj.fill(xradarObj_null,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60B:
|
|
|
|
-// tempObjID = ars408_can_database_ch6_rx.Obj_1_General_ch6.Obj_ID;
|
|
|
|
-// radarObjFreshFlag[tempObjID] = true;
|
|
|
|
-// tempDX = -ars408_can_database_ch6_rx.Obj_1_General_ch6.Obj_DistLat_phys;
|
|
|
|
-// tempDY = ars408_can_database_ch6_rx.Obj_1_General_ch6.Obj_DistLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempDX,tempDY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_x(tempDX);
|
|
|
|
-// vradarObj[tempObjID].set_y(tempDY);
|
|
|
|
-// tempVX = -ars408_can_database_ch6_rx.Obj_1_General_ch6.Obj_VrelLat_phys;
|
|
|
|
-// tempVY = ars408_can_database_ch6_rx.Obj_1_General_ch6.Obj_VrelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempVX,tempVY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_vx(tempVX);
|
|
|
|
-// vradarObj[tempObjID].set_vy(tempVY);
|
|
|
|
-// vradarObj[tempObjID].set_vel(sqrt(tempVX*tempVX+tempVY*tempVY));
|
|
|
|
-// vradarObj[tempObjID].set_bvalid(true);
|
|
|
|
-// vradarObj[tempObjID].set_id(tempObjID);
|
|
|
|
-// vradarObj[tempObjID].set_dynamic_property(ars408_can_database_ch6_rx.Obj_1_General_ch6.Obj_DynProp);
|
|
|
|
-// vradarObj[tempObjID].set_rcs_radarcrosssection(ars408_can_database_ch6_rx.Obj_1_General_ch6.Obj_RCS_phys);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60C:
|
|
|
|
-// tempObjID = ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_ID;
|
|
|
|
-// vradarObj[tempObjID].set_distlong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_DistLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_distlat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_DistLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_VrelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_VrelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellatrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_ArelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellongrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_ArelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationrms(this->Trans_Ori_RMS_Ro_To_Phy(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_Orientation_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_measurestate(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_MeasState);
|
|
|
|
-// vradarObj[tempObjID].set_object_probofexist(this->Trans_ProbOfExist_Ro_To_Phy(ars408_can_database_ch6_rx.Obj_2_Quality_ch6.Obj_ProbOfExist));
|
|
|
|
-// break;
|
|
|
|
-// case 0x60D:
|
|
|
|
-// tempObjID = ars408_can_database_ch6_rx.Obj_3_Extended_ch6.Obj_ID;
|
|
|
|
-// tempAX = -ars408_can_database_ch6_rx.Obj_3_Extended_ch6.Obj_ArelLat_phys;
|
|
|
|
-// tempAY = ars408_can_database_ch6_rx.Obj_3_Extended_ch6.Obj_ArelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempAX,tempAY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellong(tempAY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellat(tempAX);
|
|
|
|
-// tempOri = ars408_can_database_ch6_rx.Obj_3_Extended_ch6.Obj_OrientationAngle_phys + setupConfig.radarAzimuth;
|
|
|
|
-// if(tempOri > 180.0)tempOri = tempOri - 360.0;
|
|
|
|
-// if(tempOri < -180.0)tempOri = tempOri + 360.0;
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationangle(tempOri);
|
|
|
|
-// vradarObj[tempObjID].set_object_class(ars408_can_database_ch6_rx.Obj_3_Extended_ch6.Obj_Class);
|
|
|
|
-// vradarObj[tempObjID].set_object_length(ars408_can_database_ch6_rx.Obj_3_Extended_ch6.Obj_Length_phys);
|
|
|
|
-// vradarObj[tempObjID].set_object_width(ars408_can_database_ch6_rx.Obj_3_Extended_ch6.Obj_Width_phys);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Pack_Info_To_SHM_ch7(uint32_t can_id)
|
|
|
|
-//{
|
|
|
|
-// std::string major,minor,patch;
|
|
|
|
-// iv::radar::radarobject *pobj;
|
|
|
|
-// iv::radar::radarobject xradarObj_null;
|
|
|
|
-// double tempDX,tempDY,tempVX,tempVY,tempAX,tempAY,tempOri;
|
|
|
|
-// uint8_t tempObjID;
|
|
|
|
-
|
|
|
|
-// switch (can_id - 0x070) {
|
|
|
|
-// case 0x201:
|
|
|
|
-// persistent_Error = ars408_can_database_ch7_rx.RadarState_ch7.RadarState_Persistent_Error;
|
|
|
|
-// interference_Error = ars408_can_database_ch7_rx.RadarState_ch7.RadarState_Interference;
|
|
|
|
-// temperature_Error = ars408_can_database_ch7_rx.RadarState_ch7.RadarState_Temperature_Error;
|
|
|
|
-// temporary_Error = ars408_can_database_ch7_rx.RadarState_ch7.RadarState_Temporary_Error;
|
|
|
|
-// voltage_Error = ars408_can_database_ch7_rx.RadarState_ch7.RadarState_Voltage_Error;
|
|
|
|
-// speed_Loss = ars408_can_database_ch7_rx.RadarState_ch7.RadarState_MotionRxState & 0x01;
|
|
|
|
-// yaw_Rate_Loss = (ars408_can_database_ch7_rx.RadarState_ch7.RadarState_MotionRxState >> 1) & 0x01;
|
|
|
|
-// break;
|
|
|
|
-// case 0x700:
|
|
|
|
-// major = std::to_string((unsigned int)ars408_can_database_ch7_rx.VersionID_ch7.Version_MajorRelease);
|
|
|
|
-// minor = std::to_string((unsigned int)ars408_can_database_ch7_rx.VersionID_ch7.Version_MinorRelease);
|
|
|
|
-// patch = std::to_string((unsigned int)ars408_can_database_ch7_rx.VersionID_ch7.Version_PatchLevel);
|
|
|
|
-// radar_Version = major + "." + minor + "." + patch;
|
|
|
|
-// break;
|
|
|
|
-// case 0x60A:
|
|
|
|
-// if(ars408_can_database_ch7_rx.Obj_0_Status_ch7.Obj_NofObjects == 0)
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// xradarObjArray.Clear();
|
|
|
|
-// for(int i=0;i<RADAR_OBJ_MAX_NUM;i++)
|
|
|
|
-// {
|
|
|
|
-// if(radarObjFreshFlag[i] == true)
|
|
|
|
-// {
|
|
|
|
-// pobj = xradarObjArray.add_obj();
|
|
|
|
-// pobj->CopyFrom(vradarObj[i]);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// xradarObjArray.set_mstime(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
-// xradarObjArray.set_persistent_error(persistent_Error);
|
|
|
|
-// xradarObjArray.set_interference_error(interference_Error);
|
|
|
|
-// xradarObjArray.set_temperature_error(temperature_Error);
|
|
|
|
-// xradarObjArray.set_temporary_error(temporary_Error);
|
|
|
|
-// xradarObjArray.set_voltage_error(voltage_Error);
|
|
|
|
-// xradarObjArray.set_speed_loss(speed_Loss);
|
|
|
|
-// xradarObjArray.set_yaw_rate_loss(yaw_Rate_Loss);
|
|
|
|
-// xradarObjArray.set_radar_version(radar_Version);
|
|
|
|
-
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// radarObjArray_send.CopyFrom(xradarObjArray);
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//// std::cout<<radarObjArray_send.obj_size()<<std::endl;
|
|
|
|
-// emit RadarObjectArray_Ready();
|
|
|
|
-// }
|
|
|
|
-// //clear the obj vector and flag vector
|
|
|
|
-// vradarObj.fill(xradarObj_null,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// radarObjFreshFlag.fill(false,RADAR_OBJ_MAX_NUM);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60B:
|
|
|
|
-// tempObjID = ars408_can_database_ch7_rx.Obj_1_General_ch7.Obj_ID;
|
|
|
|
-// radarObjFreshFlag[tempObjID] = true;
|
|
|
|
-// tempDX = -ars408_can_database_ch7_rx.Obj_1_General_ch7.Obj_DistLat_phys;
|
|
|
|
-// tempDY = ars408_can_database_ch7_rx.Obj_1_General_ch7.Obj_DistLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempDX,tempDY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_x(tempDX);
|
|
|
|
-// vradarObj[tempObjID].set_y(tempDY);
|
|
|
|
-// tempVX = -ars408_can_database_ch7_rx.Obj_1_General_ch7.Obj_VrelLat_phys;
|
|
|
|
-// tempVY = ars408_can_database_ch7_rx.Obj_1_General_ch7.Obj_VrelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempVX,tempVY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_vx(tempVX);
|
|
|
|
-// vradarObj[tempObjID].set_vy(tempVY);
|
|
|
|
-// vradarObj[tempObjID].set_vel(sqrt(tempVX*tempVX+tempVY*tempVY));
|
|
|
|
-// vradarObj[tempObjID].set_bvalid(true);
|
|
|
|
-// vradarObj[tempObjID].set_id(tempObjID);
|
|
|
|
-// vradarObj[tempObjID].set_dynamic_property(ars408_can_database_ch7_rx.Obj_1_General_ch7.Obj_DynProp);
|
|
|
|
-// vradarObj[tempObjID].set_rcs_radarcrosssection(ars408_can_database_ch7_rx.Obj_1_General_ch7.Obj_RCS_phys);
|
|
|
|
-// break;
|
|
|
|
-// case 0x60C:
|
|
|
|
-// tempObjID = ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_ID;
|
|
|
|
-// vradarObj[tempObjID].set_distlong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_DistLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_distlat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_DistLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellong_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_VrelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_vrellat_rms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_VrelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellatrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_ArelLat_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_arellongrms(this->Trans_DVA_RMS_Ro_To_Phy(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_ArelLong_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationrms(this->Trans_Ori_RMS_Ro_To_Phy(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_Orientation_rms));
|
|
|
|
-// vradarObj[tempObjID].set_object_measurestate(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_MeasState);
|
|
|
|
-// vradarObj[tempObjID].set_object_probofexist(this->Trans_ProbOfExist_Ro_To_Phy(ars408_can_database_ch7_rx.Obj_2_Quality_ch7.Obj_ProbOfExist));
|
|
|
|
-// break;
|
|
|
|
-// case 0x60D:
|
|
|
|
-// tempObjID = ars408_can_database_ch7_rx.Obj_3_Extended_ch7.Obj_ID;
|
|
|
|
-// tempAX = -ars408_can_database_ch7_rx.Obj_3_Extended_ch7.Obj_ArelLat_phys;
|
|
|
|
-// tempAY = ars408_can_database_ch7_rx.Obj_3_Extended_ch7.Obj_ArelLong_phys;
|
|
|
|
-// this->Rotate_Translate(tempAX,tempAY,setupConfig.radarAzimuth,setupConfig.radarOffsetX,setupConfig.radarOffsetY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellong(tempAY);
|
|
|
|
-// vradarObj[tempObjID].set_object_arellat(tempAX);
|
|
|
|
-// tempOri = ars408_can_database_ch7_rx.Obj_3_Extended_ch7.Obj_OrientationAngle_phys + setupConfig.radarAzimuth;
|
|
|
|
-// if(tempOri > 180.0)tempOri = tempOri - 360.0;
|
|
|
|
-// if(tempOri < -180.0)tempOri = tempOri + 360.0;
|
|
|
|
-// vradarObj[tempObjID].set_object_orientationangle(tempOri);
|
|
|
|
-// vradarObj[tempObjID].set_object_class(ars408_can_database_ch7_rx.Obj_3_Extended_ch7.Obj_Class);
|
|
|
|
-// vradarObj[tempObjID].set_object_length(ars408_can_database_ch7_rx.Obj_3_Extended_ch7.Obj_Length_phys);
|
|
|
|
-// vradarObj[tempObjID].set_object_width(ars408_can_database_ch7_rx.Obj_3_Extended_ch7.Obj_Width_phys);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//double CANRecv_Consumer::Trans_DVA_RMS_Ro_To_Phy(uint8_t data)
|
|
|
|
-//{
|
|
|
|
-// double phy;
|
|
|
|
-// switch (data) {
|
|
|
|
-// case 0x0: phy = 0.005;break;
|
|
|
|
-// case 0x1: phy = 0.006;break;
|
|
|
|
-// case 0x2: phy = 0.008;break;
|
|
|
|
-// case 0x3: phy = 0.011;break;
|
|
|
|
-// case 0x4: phy = 0.014;break;
|
|
|
|
-// case 0x5: phy = 0.018;break;
|
|
|
|
-// case 0x6: phy = 0.023;break;
|
|
|
|
-// case 0x7: phy = 0.029;break;
|
|
|
|
-// case 0x8: phy = 0.038;break;
|
|
|
|
-// case 0x9: phy = 0.049;break;
|
|
|
|
-// case 0xA: phy = 0.063;break;
|
|
|
|
-// case 0xB: phy = 0.081;break;
|
|
|
|
-// case 0xC: phy = 0.105;break;
|
|
|
|
-// case 0xD: phy = 0.135;break;
|
|
|
|
-// case 0xE: phy = 0.174;break;
|
|
|
|
-// case 0xF: phy = 0.224;break;
|
|
|
|
-// case 0x10: phy = 0.288;break;
|
|
|
|
-// case 0x11: phy = 0.371;break;
|
|
|
|
-// case 0x12: phy = 0.478;break;
|
|
|
|
-// case 0x13: phy = 0.616;break;
|
|
|
|
-// case 0x14: phy = 0.794;break;
|
|
|
|
-// case 0x15: phy = 1.023;break;
|
|
|
|
-// case 0x16: phy = 1.317;break;
|
|
|
|
-// case 0x17: phy = 1.697;break;
|
|
|
|
-// case 0x18: phy = 2.187;break;
|
|
|
|
-// case 0x19: phy = 2.817;break;
|
|
|
|
-// case 0x1A: phy = 3.630;break;
|
|
|
|
-// case 0x1B: phy = 4.676;break;
|
|
|
|
-// case 0x1C: phy = 6.025;break;
|
|
|
|
-// case 0x1D: phy = 7.762;break;
|
|
|
|
-// case 0x1E: phy = 10.000;break;
|
|
|
|
-// case 0x1F: phy = -1.0;break;
|
|
|
|
-// default:
|
|
|
|
-// phy = -1.0;
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// return phy;
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//double CANRecv_Consumer::Trans_Ori_RMS_Ro_To_Phy(uint8_t data)
|
|
|
|
-//{
|
|
|
|
-// double phy;
|
|
|
|
-// switch (data) {
|
|
|
|
-// case 0x0: phy = 0.005;break;
|
|
|
|
-// case 0x1: phy = 0.007;break;
|
|
|
|
-// case 0x2: phy = 0.010;break;
|
|
|
|
-// case 0x3: phy = 0.014;break;
|
|
|
|
-// case 0x4: phy = 0.020;break;
|
|
|
|
-// case 0x5: phy = 0.029;break;
|
|
|
|
-// case 0x6: phy = 0.041;break;
|
|
|
|
-// case 0x7: phy = 0.058;break;
|
|
|
|
-// case 0x8: phy = 0.082;break;
|
|
|
|
-// case 0x9: phy = 0.116;break;
|
|
|
|
-// case 0xA: phy = 0.165;break;
|
|
|
|
-// case 0xB: phy = 0.234;break;
|
|
|
|
-// case 0xC: phy = 0.332;break;
|
|
|
|
-// case 0xD: phy = 0.471;break;
|
|
|
|
-// case 0xE: phy = 0.669;break;
|
|
|
|
-// case 0xF: phy = 0.949;break;
|
|
|
|
-// case 0x10: phy = 1.346;break;
|
|
|
|
-// case 0x11: phy = 1.909;break;
|
|
|
|
-// case 0x12: phy = 2.709;break;
|
|
|
|
-// case 0x13: phy = 3.843;break;
|
|
|
|
-// case 0x14: phy = 5.451;break;
|
|
|
|
-// case 0x15: phy = 7.734;break;
|
|
|
|
-// case 0x16: phy = 10.971;break;
|
|
|
|
-// case 0x17: phy = 15.565;break;
|
|
|
|
-// case 0x18: phy = 22.081;break;
|
|
|
|
-// case 0x19: phy = 31.325;break;
|
|
|
|
-// case 0x1A: phy = 44.439;break;
|
|
|
|
-// case 0x1B: phy = 63.044;break;
|
|
|
|
-// case 0x1C: phy = 89.437;break;
|
|
|
|
-// case 0x1D: phy = 126.881;break;
|
|
|
|
-// case 0x1E: phy = 180.000;break;
|
|
|
|
-// case 0x1F: phy = -1.0;break;
|
|
|
|
-// default:
|
|
|
|
-// phy = -1.0;
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// return phy;
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//double CANRecv_Consumer::Trans_ProbOfExist_Ro_To_Phy(uint8_t data)
|
|
|
|
-//{
|
|
|
|
-// double phy;
|
|
|
|
-// switch (data) {
|
|
|
|
-// case 0x0:
|
|
|
|
-// phy = -1.0;
|
|
|
|
-// break;
|
|
|
|
-// case 0x1:
|
|
|
|
-// phy = 25.0;
|
|
|
|
-// break;
|
|
|
|
-// case 0x2:
|
|
|
|
-// phy = 50.0;
|
|
|
|
-// break;
|
|
|
|
-// case 0x3:
|
|
|
|
-// phy = 75.0;
|
|
|
|
-// break;
|
|
|
|
-// case 0x4:
|
|
|
|
-// phy = 90.0;
|
|
|
|
-// break;
|
|
|
|
-// case 0x5:
|
|
|
|
-// phy = 99.0;
|
|
|
|
-// break;
|
|
|
|
-// case 0x6:
|
|
|
|
-// phy = 99.9;
|
|
|
|
-// break;
|
|
|
|
-// case 0x7:
|
|
|
|
-// phy = 100.0;
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// phy = 0.0;
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// return phy;
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::Rotate_Translate(double &x,double &y,double theta,double offset_x,double offset_y) //RFU,deg
|
|
|
|
-//{
|
|
|
|
-// double tempX = x;
|
|
|
|
-// double tempY = y;
|
|
|
|
-// double tempTheta = theta / 180.0 * M_PI;
|
|
|
|
-// double tempSinTheta = sin(tempTheta);
|
|
|
|
-// double tempCosTheta = cos(tempTheta);
|
|
|
|
-
|
|
|
|
-// x = (tempX * tempCosTheta + tempY * tempSinTheta) + offset_x;
|
|
|
|
-// y = (tempY * tempCosTheta - tempX * tempSinTheta) + offset_y;
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::run()
|
|
|
|
-//{
|
|
|
|
-// radarType = setupConfig.radarType;
|
|
|
|
-
|
|
|
|
-// uint32_t tempCANID = 0x000u;
|
|
|
|
-
|
|
|
|
-// while (!QThread::isInterruptionRequested())
|
|
|
|
-// {
|
|
|
|
-// switch (setupConfig.radarID) {
|
|
|
|
-// case 0:
|
|
|
|
-// this->Trans_From_CANRaw(pBuffer->Consume_Element());
|
|
|
|
-// tempCANID = ars408_can_database_ch0_Receive(&ars408_can_database_ch0_rx,CAN_data,CAN_ID,CAN_DLC);
|
|
|
|
-// Pack_Info_To_SHM_ch0(tempCANID);
|
|
|
|
-// break;
|
|
|
|
-// case 1:
|
|
|
|
-// this->Trans_From_CANRaw(pBuffer->Consume_Element());
|
|
|
|
-// tempCANID = ars408_can_database_ch1_Receive(&ars408_can_database_ch1_rx,CAN_data,CAN_ID,CAN_DLC);
|
|
|
|
-// Pack_Info_To_SHM_ch1(tempCANID);
|
|
|
|
-// break;
|
|
|
|
-// case 2:
|
|
|
|
-// this->Trans_From_CANRaw(pBuffer->Consume_Element());
|
|
|
|
-// tempCANID = ars408_can_database_ch2_Receive(&ars408_can_database_ch2_rx,CAN_data,CAN_ID,CAN_DLC);
|
|
|
|
-// Pack_Info_To_SHM_ch2(tempCANID);
|
|
|
|
-// break;
|
|
|
|
-// case 3:
|
|
|
|
-// this->Trans_From_CANRaw(pBuffer->Consume_Element());
|
|
|
|
-// tempCANID = ars408_can_database_ch3_Receive(&ars408_can_database_ch3_rx,CAN_data,CAN_ID,CAN_DLC);
|
|
|
|
-// Pack_Info_To_SHM_ch3(tempCANID);
|
|
|
|
-// break;
|
|
|
|
-// case 4:
|
|
|
|
-// this->Trans_From_CANRaw(pBuffer->Consume_Element());
|
|
|
|
-// tempCANID = ars408_can_database_ch4_Receive(&ars408_can_database_ch4_rx,CAN_data,CAN_ID,CAN_DLC);
|
|
|
|
-// Pack_Info_To_SHM_ch4(tempCANID);
|
|
|
|
-// break;
|
|
|
|
-// case 5:
|
|
|
|
-// this->Trans_From_CANRaw(pBuffer->Consume_Element());
|
|
|
|
-// tempCANID = ars408_can_database_ch5_Receive(&ars408_can_database_ch5_rx,CAN_data,CAN_ID,CAN_DLC);
|
|
|
|
-// Pack_Info_To_SHM_ch5(tempCANID);
|
|
|
|
-// break;
|
|
|
|
-// case 6:
|
|
|
|
-// this->Trans_From_CANRaw(pBuffer->Consume_Element());
|
|
|
|
-// tempCANID = ars408_can_database_ch6_Receive(&ars408_can_database_ch6_rx,CAN_data,CAN_ID,CAN_DLC);
|
|
|
|
-// Pack_Info_To_SHM_ch6(tempCANID);
|
|
|
|
-// break;
|
|
|
|
-// case 7:
|
|
|
|
-// this->Trans_From_CANRaw(pBuffer->Consume_Element());
|
|
|
|
-// tempCANID = ars408_can_database_ch7_Receive(&ars408_can_database_ch7_rx,CAN_data,CAN_ID,CAN_DLC);
|
|
|
|
-// Pack_Info_To_SHM_ch7(tempCANID);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
-
|
|
|
|
-//void CANRecv_Consumer::RadarObjectArray_Ready_Slot()
|
|
|
|
-//{
|
|
|
|
-// radarObjArraySend_lock.lock();
|
|
|
|
-// int ndatasize = radarObjArray_send.ByteSize();
|
|
|
|
-// char * strser = new char[ndatasize];
|
|
|
|
-// std::shared_ptr<char> pstrser;
|
|
|
|
-// pstrser.reset(strser);
|
|
|
|
-// if(radarObjArray_send.SerializePartialToArray(strser,ndatasize))
|
|
|
|
-// {
|
|
|
|
-// iv::modulecomm::ModuleSendMsg(shmSonar.mpa,strser,ndatasize);
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// std::cout<<"RadarObjectArray serialize error."<<std::endl;
|
|
|
|
-// }
|
|
|
|
-// radarObjArraySend_lock.unlock();
|
|
|
|
-//}
|
|
|
|
|
|
+#include "canrecv_consumer.h"
|
|
|
|
+
|
|
|
|
+#include "math.h"
|
|
|
|
+
|
|
|
|
+extern setupConfig_t setupConfig;
|
|
|
|
+extern iv::msgunit shmSonar;
|
|
|
|
+
|
|
|
|
+CANRecv_Consumer::CANRecv_Consumer(CAN_Producer_Consumer *pBuf)
|
|
|
|
+{
|
|
|
|
+ pBuffer = pBuf;
|
|
|
|
+
|
|
|
|
+ QObject::connect(this,&CANRecv_Consumer::UltrasonicData_Ready,this,&CANRecv_Consumer::UltrasonicData_Ready_Slot);
|
|
|
|
+
|
|
|
|
+ objDist.fill(DIST_ERROR,NUM_OF_SENSOR_MAX);
|
|
|
|
+ sensorStatus.fill(false,NUM_OF_SENSOR_MAX);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+CANRecv_Consumer::~CANRecv_Consumer()
|
|
|
|
+{
|
|
|
|
+ requestInterruption();
|
|
|
|
+ while(this->isFinished() == false);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void CANRecv_Consumer::Clear_CAN_PrivateTempVariable(void)
|
|
|
|
+{
|
|
|
|
+ CAN_ID = 0x000u;
|
|
|
|
+ CAN_DLC = 0;
|
|
|
|
+ for(int i=0;i<8;i++) CAN_data[i] = 0x00;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+uint32_t CANRecv_Consumer::Trans_From_CANRaw(const iv::can::canraw &xraw) //only for standard data frame, return can id
|
|
|
|
+{
|
|
|
|
+ this->Clear_CAN_PrivateTempVariable();
|
|
|
|
+ CAN_ID = xraw.id();
|
|
|
|
+ CAN_DLC = xraw.len();
|
|
|
|
+ char tempData[8];
|
|
|
|
+ int tempLen = (xraw.data().size() > 8) ? 8 : xraw.data().size();
|
|
|
|
+ strncpy(tempData,xraw.data().data(),tempLen);
|
|
|
|
+ for(int i=0;i<tempLen;i++)
|
|
|
|
+ {
|
|
|
|
+ CAN_data[i] = (uint8_t)tempData[i];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return CAN_ID;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void CANRecv_Consumer::run()
|
|
|
|
+{
|
|
|
|
+ iv::can::canraw tempCANRaw;
|
|
|
|
+ uint8_t tempSensorID = 0;
|
|
|
|
+ decodeTimer.start();
|
|
|
|
+
|
|
|
|
+ while (!QThread::isInterruptionRequested())
|
|
|
|
+ {
|
|
|
|
+ tempCANRaw.CopyFrom(pBuffer->Consume_Element(1));
|
|
|
|
+ if(decodeEnableFlag == true)
|
|
|
|
+ {
|
|
|
|
+ if(decodeTimer.elapsed() >= 25)
|
|
|
|
+ {
|
|
|
|
+ decodeEnableFlag = false;
|
|
|
|
+ objDist[decodeSensorID] = DIST_ERROR;
|
|
|
|
+ sensorStatus[decodeSensorID] = false;
|
|
|
|
+ tempSensorID = decodeSensorID + 1;
|
|
|
|
+ if(tempSensorID >= NUM_OF_SENSOR_MAX)
|
|
|
|
+ {
|
|
|
|
+ //copy and send
|
|
|
|
+ sonarSend_Lock.lock();
|
|
|
|
+ objDist_Send.clear();
|
|
|
|
+ sensorStatus_Send.clear();
|
|
|
|
+ objDist_Send.swap(objDist);
|
|
|
|
+ sensorStatus_Send.swap(sensorStatus);
|
|
|
|
+ sonarSend_Lock.unlock();
|
|
|
|
+ emit UltrasonicData_Ready();
|
|
|
|
+ //clear
|
|
|
|
+ objDist.fill(DIST_ERROR,NUM_OF_SENSOR_MAX);
|
|
|
|
+ sensorStatus.fill(false,NUM_OF_SENSOR_MAX);
|
|
|
|
+ tempSensorID = 0;
|
|
|
|
+ }
|
|
|
|
+ emit Enable_Ask(true,tempSensorID);
|
|
|
|
+ decodeTimer.restart();
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ this->Trans_From_CANRaw(tempCANRaw);
|
|
|
|
+ if(CAN_ID == setupConfig.sonarCAN_ID && CAN_DLC == 2)
|
|
|
|
+ {
|
|
|
|
+ uint16_t tempDist = (CAN_data[0] << 8) | CAN_data[1];
|
|
|
|
+ if(tempDist <= 0x1493 && tempDist >= 0x88)
|
|
|
|
+ {
|
|
|
|
+ decodeEnableFlag = false;
|
|
|
|
+ objDist[decodeSensorID] = tempDist;
|
|
|
|
+ sensorStatus[decodeSensorID] = true;
|
|
|
|
+ tempSensorID = decodeSensorID + 1;
|
|
|
|
+ if(tempSensorID >= NUM_OF_SENSOR_MAX)
|
|
|
|
+ {
|
|
|
|
+ //copy and send
|
|
|
|
+ sonarSend_Lock.lock();
|
|
|
|
+ objDist_Send.clear();
|
|
|
|
+ sensorStatus_Send.clear();
|
|
|
|
+ objDist_Send.swap(objDist);
|
|
|
|
+ sensorStatus_Send.swap(sensorStatus);
|
|
|
|
+ sonarSend_Lock.unlock();
|
|
|
|
+ emit UltrasonicData_Ready();
|
|
|
|
+ //clear
|
|
|
|
+ objDist.fill(DIST_ERROR,NUM_OF_SENSOR_MAX);
|
|
|
|
+ sensorStatus.fill(false,NUM_OF_SENSOR_MAX);
|
|
|
|
+ tempSensorID = 0;
|
|
|
|
+ }
|
|
|
|
+ emit Enable_Ask(true,tempSensorID);
|
|
|
|
+ decodeTimer.restart();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void CANRecv_Consumer::Enable_DecodeResult_Slot(bool enableFlag,uint8_t sensorID)
|
|
|
|
+{
|
|
|
|
+ decodeEnableFlag = enableFlag;
|
|
|
|
+ decodeSensorID = sensorID;
|
|
|
|
+ decodeTimer.restart();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void CANRecv_Consumer::UltrasonicData_Ready_Slot(void)
|
|
|
|
+{
|
|
|
|
+ iv::ultrasonic::ultrasonic xmsg;
|
|
|
|
+ sonarSend_Lock.lock();
|
|
|
|
+ xmsg.set_sigobjdist_flside(objDist_Send[0]);
|
|
|
|
+ xmsg.set_sigobjdist_flcorner(objDist_Send[1]);
|
|
|
|
+ xmsg.set_sigobjdist_flmiddle(objDist_Send[2]);
|
|
|
|
+ xmsg.set_sigobjdist_frmiddle(objDist_Send[3]);
|
|
|
|
+ xmsg.set_sigobjdist_frcorner(objDist_Send[4]);
|
|
|
|
+ xmsg.set_sigobjdist_frside(objDist_Send[5]);
|
|
|
|
+ xmsg.set_sigobjdist_rrside(objDist_Send[6]);
|
|
|
|
+ xmsg.set_sigobjdist_rrcorner(objDist_Send[7]);
|
|
|
|
+ xmsg.set_sigobjdist_rrmiddle(objDist_Send[8]);
|
|
|
|
+ xmsg.set_sigobjdist_rlmiddle(objDist_Send[9]);
|
|
|
|
+ xmsg.set_sigobjdist_rlcorner(objDist_Send[10]);
|
|
|
|
+ xmsg.set_sigobjdist_rlside(objDist_Send[11]);
|
|
|
|
+
|
|
|
|
+ xmsg.set_sigsensor_front_ls(sensorStatus_Send[0]);
|
|
|
|
+ xmsg.set_sigsensor_front_l(sensorStatus_Send[1]);
|
|
|
|
+ xmsg.set_sigsensor_front_lm(sensorStatus_Send[2]);
|
|
|
|
+ xmsg.set_sigsensor_front_rm(sensorStatus_Send[3]);
|
|
|
|
+ xmsg.set_sigsensor_front_r(sensorStatus_Send[4]);
|
|
|
|
+ xmsg.set_sigsensor_front_rs(sensorStatus_Send[5]);
|
|
|
|
+ xmsg.set_sigsensor_rear_rs(sensorStatus_Send[6]);
|
|
|
|
+ xmsg.set_sigsensor_rear_r(sensorStatus_Send[7]);
|
|
|
|
+ xmsg.set_sigsensor_rear_rm(sensorStatus_Send[8]);
|
|
|
|
+ xmsg.set_sigsensor_rear_lm(sensorStatus_Send[9]);
|
|
|
|
+ xmsg.set_sigsensor_rear_l(sensorStatus_Send[10]);
|
|
|
|
+ xmsg.set_sigsensor_rear_ls(sensorStatus_Send[11]);
|
|
|
|
+ sonarSend_Lock.unlock();
|
|
|
|
+
|
|
|
|
+ xmsg.set_timestamp(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
+ int ndatasize = xmsg.ByteSize();
|
|
|
|
+ char * strser = new char[ndatasize];
|
|
|
|
+ std::shared_ptr<char> pstrser;
|
|
|
|
+ pstrser.reset(strser);
|
|
|
|
+ if(xmsg.SerializePartialToArray(strser,ndatasize))
|
|
|
|
+ {
|
|
|
|
+ iv::modulecomm::ModuleSendMsg(shmSonar.mpa,strser,ndatasize);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ std::cout<<"ultrasonic data serialize error."<<std::endl;
|
|
|
|
+ }
|
|
|
|
+}
|