Переглянути джерело

change driver_radar_4d_ars548. decode code is complete. not all complete.

yuchuli 9 місяців тому
батько
коміт
0bf17e8352

+ 172 - 0
src/driver/driver_radar_4d_ars548/ar548pac.cpp

@@ -365,6 +365,8 @@ void ars548pac::DecodeDetect()
         break;
     }
 
+    mpactype = ars548pactype::TypeDectect;
+
 }
 
 void ars548pac::DecodeObj()
@@ -465,7 +467,177 @@ void ars548pac::DecodeObj()
         unsigned char u_Shape_Width_Edge_InvalidFlags;SetMotoData(ppayload,nPos2,(char *)&u_Shape_Width_Edge_InvalidFlags,1);nPos2 = nPos2 + 1;
         float u_Shape_Width_Edge_Mean;SetMotoData(ppayload,nPos2,(char *)&u_Shape_Width_Edge_Mean,4);nPos2 = nPos2 + 4;
         float u_Shape_Width_Edge_STD;SetMotoData(ppayload,nPos2,(char *)&u_Shape_Width_Edge_STD,4);nPos2 = nPos2 + 4;
+
+        iv::radar::radar4dobject xobj;
+        xobj.set_u_statussensor(u_StatusSensor);
+        xobj.set_u_id(u_ID);
+        xobj.set_u_age(u_Age);
+        switch(u_StatusMeasurement)
+        {
+        case 0:
+            xobj.set_u_statusmeasurement(iv::radar::radar4dobject::MeasurementMeasured);
+            break;
+        case 1:
+            xobj.set_u_statusmeasurement(iv::radar::radar4dobject::MeasurementNew);
+            break;
+        case 2:
+            xobj.set_u_statusmeasurement(iv::radar::radar4dobject::MeasurementPredicted);
+            break;
+        case 255:
+            xobj.set_u_statusmeasurement(iv::radar::radar4dobject::MeasurementInvalid);
+            break;
+        default:
+            std::cout<<" u_StatusMeasurement have error value: "<<u_StatusMeasurement<<std::endl;
+            xobj.set_u_statusmeasurement(iv::radar::radar4dobject::MeasurementInvalid);
+            break;
+        }
+        switch (u_StatusMovement) {
+        case 0:
+            xobj.set_u_statusmovement(iv::radar::radar4dobject::MovementMoved);
+            break;
+        case 1:
+            xobj.set_u_statusmovement(iv::radar::radar4dobject::MovementStationary);
+            break;
+        case 255:
+            xobj.set_u_statusmovement(iv::radar::radar4dobject::MovementInvalid);
+            break;
+        default:
+            std::cout<<" u_StatusMovement have error value: "<<u_StatusMovement<<std::endl;
+            xobj.set_u_statusmovement(iv::radar::radar4dobject::MovementInvalid);
+            break;
+        }
+        xobj.set_u_position_invalidflags(u_Position_InvalidFlags);
+        switch (u_Position_Reference) {
+        case 0:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::CornerFrontLeft);
+            break;
+        case 1:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::MiddleFront);
+            break;
+        case 2:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::CornerFrontRight);
+            break;
+        case 3:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::MiddleSideRight);
+            break;
+        case 4:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::CornerRearRight);
+            break;
+        case 5:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::MiddleRear);
+            break;
+        case 6:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::CornerRearLeft);
+            break;
+        case 7:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::MiddleSideLeft);
+            break;
+        case 255:
+            xobj.set_u_position_reference(iv::radar::radar4dobject::SignalUnfilled);
+            break;
+        default:
+            std::cout<<" u_Position_Reference have error value: "<<u_Position_Reference<<std::endl;
+            xobj.set_u_position_reference(iv::radar::radar4dobject::SignalUnfilled);
+            break;
+        }
+        xobj.set_u_position_x(u_Position_X);
+        xobj.set_u_position_x_std(u_Position_X_STD);
+        xobj.set_u_position_y(u_Position_Y);
+        xobj.set_u_position_y_std(u_Position_Y_STD);
+        xobj.set_u_position_z(u_Position_Z);
+        xobj.set_u_position_z_std(u_Position_Z_STD);
+        xobj.set_u_position_covariancexy(u_Position_CovarianceXY);
+        xobj.set_u_position_orientation(u_Position_Orientation);
+        xobj.set_u_position_orientation_std(u_Position_Orientation_STD);
+        xobj.set_u_existence_invalidflags(u_Existence_InvalidFlags);
+        xobj.set_u_existence_probability(u_Existence_Probability);
+        xobj.set_u_existence_ppv(u_Existence_PPV);
+        xobj.set_u_classification_car(u_Classification_Car);
+        xobj.set_u_classification_truck(u_Classification_Truck);
+        xobj.set_u_classification_motorcycle(u_Classification_Motorcycle);
+        xobj.set_u_classification_bicycle(u_Classification_Bicycle);
+        xobj.set_u_classification_pedestrian(u_Classification_Pedestrian);
+        xobj.set_u_classification_animal(u_Classification_Animal);
+        xobj.set_u_classification_hazard(u_Classification_Hazard);
+        xobj.set_u_classification_unknown(u_Classification_Unknown);
+        xobj.set_u_classification_overdrivable(u_Classification_Overdrivable);
+        xobj.set_u_classification_underdrivable(u_Classification_Underdrivable);
+        xobj.set_u_dynamics_absvel_invalidflags(u_Dynamics_AbsVel_InvalidFlags);
+        xobj.set_f_dynamics_absvel_x(f_Dynamics_AbsVel_X);
+        xobj.set_f_dynamics_absvel_x_std(f_Dynamics_AbsVel_X_STD);
+        xobj.set_f_dynamics_absvel_y(f_Dynamics_AbsVel_Y);
+        xobj.set_f_dynamics_absvel_y_std(f_Dynamics_AbsVel_Y_STD);
+        xobj.set_f_dynamics_absvel_covariancexy(f_Dynamics_AbsVel_CovarianceXY);
+        xobj.set_u_dynamics_relvel_invalidflags(u_Dynamics_RelVel_InvalidFlags);
+        xobj.set_f_dynamics_relvel_x(f_Dynamics_RelVel_X);
+        xobj.set_f_dynamics_relvel_x_std(f_Dynamics_RelVel_X_STD);
+        xobj.set_f_dynamics_relvel_y(f_Dynamics_RelVel_Y);
+        xobj.set_f_dynamics_relvel_y_std(f_Dynamics_RelVel_Y_STD);
+        xobj.set_f_dynamics_relvel_covariancexy(f_Dynamics_RelVel_CovarianceXY);
+        xobj.set_u_dynamics_absaccel_invalidflags(u_Dynamics_AbsAccel_InvalidFlags);
+        xobj.set_f_dynamics_absaccel_x(f_Dynamics_AbsAccel_X);
+        xobj.set_f_dynamics_absaccel_x_std(f_Dynamics_AbsAccel_X_STD);
+        xobj.set_f_dynamics_absaccel_y(f_Dynamics_AbsAccel_Y);
+        xobj.set_f_dynamics_absaccel_y_std(f_Dynamics_AbsAccel_Y_STD);
+        xobj.set_f_dynamics_absaccel_covariancexy(f_Dynamics_AbsAccel_CovarianceXY);
+        xobj.set_u_dynamics_relaccel_invalidflags(u_Dynamics_RelAccel_InvalidFlags);
+        xobj.set_f_dynamics_relaccel_x(f_Dynamics_RelAccel_X);
+        xobj.set_f_dynamics_relaccel_x_std(f_Dynamics_RelAccel_X_STD);
+        xobj.set_f_dynamics_relaccel_y(f_Dynamics_RelAccel_Y);
+        xobj.set_f_dynamics_relaccel_y_std(f_Dynamics_RelAccel_Y_STD);
+        xobj.set_f_dynamics_relaccel_covariancexy(f_Dynamics_RelAccel_CovarianceXY);
+        xobj.set_u_dynamics_orientation_invalidflags(u_Dynamics_Orientation_InvalidFlags);
+        xobj.set_u_dynamics_orientation_rate_mean(u_Dynamics_Orientation_Rate_Mean);
+        xobj.set_u_dynamics_orientation_rate_std(u_Dynamics_Orientation_Rate_STD);
+        switch (u_Shape_Length_Status) {
+        case 0:
+            xobj.set_u_shape_length_status(iv::radar::radar4dobject::LengthCompletelyVisible);
+            break;
+        case 1:
+            xobj.set_u_shape_length_status(iv::radar::radar4dobject::LengthPartiallOccluded);
+            break;
+        case 2:
+            xobj.set_u_shape_length_status(iv::radar::radar4dobject::LengthCompletelyOccluded);
+            break;
+        case 255:
+            xobj.set_u_shape_length_status(iv::radar::radar4dobject::ShapeLengthStatusInvalid);
+            break;
+        default:
+            std::cout<<" u_Shape_Length_Status have error value:  "<<u_Shape_Length_Status<<std::endl;
+            xobj.set_u_shape_length_status(iv::radar::radar4dobject::ShapeLengthStatusInvalid);
+            break;
+        }
+        xobj.set_u_shape_length_edge_invalidflags(u_Shape_Length_Edge_InvalidFlags);
+        xobj.set_u_shape_length_edge_mean(u_Shape_Length_Edge_Mean);
+        xobj.set_u_shape_length_edge_std(u_Shape_Length_Edge_STD);
+        switch (u_Shape_Width_Status) {
+        case 0:
+            xobj.set_u_shape_width_status(iv::radar::radar4dobject::WidthCompletelyVisible);
+            break;
+        case 1:
+            xobj.set_u_shape_width_status(iv::radar::radar4dobject::WidthPartiallOccluded);
+            break;
+        case 2:
+            xobj.set_u_shape_width_status(iv::radar::radar4dobject::WidthCompletelyOccluded);
+            break;
+        case 255:
+            xobj.set_u_shape_width_status(iv::radar::radar4dobject::ShapeWidthStatusInvalid);
+            break;
+        default:
+            std::cout<<" u_Shape_Width_Status have error value:  "<<u_Shape_Width_Status<<std::endl;
+            xobj.set_u_shape_width_status(iv::radar::radar4dobject::ShapeWidthStatusInvalid);
+            break;
+        }
+        xobj.set_u_shape_width_edge_invalidflags(u_Shape_Width_Edge_InvalidFlags);
+        xobj.set_u_shape_length_edge_mean(u_Shape_Length_Edge_Mean);
+        xobj.set_u_shape_width_edge_std(u_Shape_Width_Edge_STD);
+
+        iv::radar::radar4dobject * pobj = mobjarray.add_mobj();
+        pobj->CopyFrom(xobj);
+
     }
+
+    mpactype = ars548pactype::TypeObject;
 }
 
 void ars548pac::SetMotoData(char * pdata, int npos, char * pvalue,int nvaluelen)

+ 1 - 1
src/include/proto/radar4dobjectarray.proto

@@ -8,7 +8,7 @@ import "radar4dobject.proto";
 message radar4dobjectarray
 {
   optional int64 mnsTime = 1; //nano seconds since 1970
-  repeated radar4dobject mobjarray = 2;
+  repeated radar4dobject mobj = 2;
   optional uint64 CRC = 3; //Checksum (E2E Profile 7) (Reserved),uint64,-
   optional uint32 Length = 4; //Len (E2E Profile 7) (Reserved),uint32,-
   optional uint32 SQC = 5; //SQC (E2E Profile 7) (Reserved),uint32,-