From 564394efd8e3b34aa3771065420ec887879c9ce3 Mon Sep 17 00:00:00 2001 From: jwillmartin Date: Mon, 25 Mar 2024 13:34:56 -0400 Subject: [PATCH] modified: src/tmx/TmxUtils/test/J2735MessageTest.cpp --- src/tmx/TmxUtils/test/J2735MessageTest.cpp | 110 ++++++++++++++------- 1 file changed, 72 insertions(+), 38 deletions(-) diff --git a/src/tmx/TmxUtils/test/J2735MessageTest.cpp b/src/tmx/TmxUtils/test/J2735MessageTest.cpp index 65ab115ee..96449a363 100644 --- a/src/tmx/TmxUtils/test/J2735MessageTest.cpp +++ b/src/tmx/TmxUtils/test/J2735MessageTest.cpp @@ -610,22 +610,23 @@ TEST_F(J2735MessageTest, EncodePersonalSafetyMessage){ TEST_F(J2735MessageTest, EncodeRoadSafetyMessage) { - // string rsm=" 0.1.3.6.1 01 0C 0C 0A 12 2024 3 19 15 30 45 0 "; - // std::stringstream ss; - // RsmMessage rsmmessage; - // RsmEncodedMessage rsmENC; - // tmx::message_container_type container; - // ss<(ss); - // rsmmessage.set_contents(container.get_storage().get_tree()); - // rsmENC.encode_j2735_message(rsmmessage); - // std::cout << rsmENC.get_payload_str() << std::endl; - // ASSERT_EQ(33, rsmENC.get_msgId()); - - - //*********************************************************************************** - + // Encode RSM XML + string rsm=" 0.1.3.6.1 01 0C 0C 0A 12 2024 3 19 15 30 45 7 38954961 -77149303 390 Wrong Way Driver 38954961 -77149303 390 "; + std::stringstream ss; + RsmMessage rsmmessage; + RsmEncodedMessage rsmENC; + tmx::message_container_type container; + ss<(ss); + rsmmessage.set_contents(container.get_storage().get_tree()); + rsmENC.encode_j2735_message(rsmmessage); + std::cout << rsmENC.get_payload_str() << std::endl; + ASSERT_EQ(33, rsmENC.get_msgId()); + + /** + * Populate RSM + */ auto message = (RoadSafetyMessage_t*) calloc(1, sizeof(RoadSafetyMessage_t)); auto commonContainer = (CommonContainer_t*) calloc(1, sizeof(CommonContainer_t)); auto eventInfo = (EventInfo_t*) calloc(1, sizeof(EventInfo_t)); @@ -692,38 +693,67 @@ TEST_F(J2735MessageTest, EncodeRoadSafetyMessage) asn_sequence_add(&rsmAffectedVehicles->list.array, affectedVehCnt); eventInfo->affectedVehicles = rsmAffectedVehicles; + commonContainer->eventInfo = *eventInfo; + // Region info auto regionInfo = (CommonContainer::CommonContainer__regionInfo*) calloc(1, sizeof(CommonContainer::CommonContainer__regionInfo)); - auto referencePointCnt = (Position3D_t*) calloc(1, sizeof(Position3D_t)); - referencePointCnt->lat = 38954961; - referencePointCnt->Long = -77149303; + auto regionInfoCnt = (RegionInfo_t*) calloc(1, sizeof(RegionInfo_t)); + // auto referencePointCnt = (Position3D_t*) calloc(1, sizeof(Position3D_t)); + regionInfoCnt->referencePoint.lat = 38954961; + regionInfoCnt->referencePoint.Long = -77149303; auto elev = (Common_Elevation_t*) calloc(1, sizeof(Common_Elevation_t)); *elev = 390; - referencePointCnt->elevation = elev; + regionInfoCnt->referencePoint.elevation = elev; // // 3D regional info - auto rsmRegional = (Position3D::Position3D__regional*) calloc(1, sizeof(Position3D::Position3D__regional)); - auto regionalPosCnt = (Reg_Position3D_t*) calloc(1, sizeof(Reg_Position3D_t)); - regionalPosCnt->regionId = 1; - - // Final 3D Pos Struct - auto regExtValue = (Reg_Position3D::Reg_Position3D__regExtValue*) calloc(1, sizeof(Reg_Position3D::Reg_Position3D__regExtValue)); - // regExtVal->present = Reg_Position3D__regExtValue_PR_NOTHING; - asn_sequence_add(&rsmRegional->list.array, referencePointCnt); - + // auto rsmRegional = (Position3D::Position3D__regional*) calloc(1, sizeof(Position3D::Position3D__regional)); + // auto regionalPosCnt = (Reg_Position3D_t*) calloc(1, sizeof(Reg_Position3D_t)); + // regionalPosCnt->regionId = 1; + // regionalPosCnt->regExtValue.present = Reg_Position3D__regExtValue_PR_Position3D_addGrpB; + + // auto addGrpB = (Position3D_addGrpB_t*) calloc(1, sizeof(Position3D_addGrpB_t)); + // addGrpB->latitude.d = 38; + // addGrpB->latitude.m = 57; + // addGrpB->latitude.s = 178596; + // addGrpB->longitude.d = 77; + // addGrpB->longitude.m = 8; + // addGrpB->longitude.s = 574908; + // addGrpB->elevation = 390; + // regionalPosCnt->regExtValue.choice.Position3D_addGrpB = *addGrpB; + // asn_sequence_add(&rsmRegional->list.array, regionalPosCnt); + // regionInfoCnt->referencePoint.regional = rsmRegional; + + asn_sequence_add(®ionInfo->list.array, regionInfoCnt); - referencePointCnt->regional = rsmRegional; - asn_sequence_add(®ionInfo->list.array, referencePointCnt); + commonContainer->regionInfo = *regionInfo; + message->commonContainer = *commonContainer; // Content auto content = (RoadSafetyMessage::RoadSafetyMessage__content*) calloc(1, sizeof(RoadSafetyMessage::RoadSafetyMessage__content)); - - - commonContainer->eventInfo = *eventInfo; - commonContainer->regionInfo = *regionInfo; - message->commonContainer = *commonContainer; + auto contentCnt = (ContentContainer_t*) calloc(1, sizeof(ContentContainer_t)); + contentCnt->present = ContentContainer_PR_dynamicInfoContainer; + + auto dynamicInfoContainer = (DynamicInfoContainer_t*) calloc(1, sizeof(DynamicInfoContainer_t)); + dynamicInfoContainer->priority = 3; + auto dmsString = (DynamicInfoContainer::DynamicInfoContainer__dmsSignString*) calloc(1, sizeof(DynamicInfoContainer::DynamicInfoContainer__dmsSignString)); + auto myString = (ShortString_t*) calloc(1, sizeof(ShortString_t)); + char* my_str = (char *) "Wrong Way Driver"; + uint8_t* my_bytes = reinterpret_cast(my_str); + myString->buf = my_bytes; + myString->size = strlen(my_str); + asn_sequence_add(&dmsString->list.array, myString); + dynamicInfoContainer->dmsSignString = *dmsString; + dynamicInfoContainer->applicableRegion.referencePoint.lat = 38954961; + dynamicInfoContainer->applicableRegion.referencePoint.Long = -77149303; + auto appElev = (Common_Elevation_t*) calloc(1, sizeof(Common_Elevation_t)); + *appElev = 390; + dynamicInfoContainer->applicableRegion.referencePoint.elevation = appElev; + + contentCnt->choice.dynamicInfoContainer = *dynamicInfoContainer; + asn_sequence_add(&content->list.array, contentCnt); message->content = *content; + xer_fprint(stdout, &asn_DEF_RoadSafetyMessage, message); //Encode RSM @@ -735,12 +765,16 @@ TEST_F(J2735MessageTest, EncodeRoadSafetyMessage) free(frame_msg.get_j2735_data().get()); std::cout << RsmEncodeMessage.get_payload_str() << std::endl; ASSERT_EQ(33, RsmEncodeMessage.get_msgId()); - // std::string expectedRSMEncHex = ""; - // ASSERT_EQ(expectedRSMEncHex, RsmEncodeMessage.get_payload_str()); + std::string expectedRSMEncHex = "00213e0500802060c020218181431f9fa0e6f7800b400fe0e000009bfba868b3584ec408c306c1f5f96fdd9d057c3e5044e5a7b65e4026feea1a2cd613b10230c0"; + ASSERT_EQ(expectedRSMEncHex, RsmEncodeMessage.get_payload_str()); + + //Decode RSM + auto rsm_ptr = RsmEncodeMessage.decode_j2735_message().get_j2735_data(); + ASSERT_EQ(12, rsm_ptr->commonContainer.eventInfo.eventUpdate); } TEST_F(J2735MessageTest, EncodeTrafficControlRequest){ - string tsm4str="C7C9A13FE6AC464E00.327493419-8183494722811186773760376132001320 "; + string tsm4str="C7C9A13FE6AC464E0027493419-8183494722811186773760376132001320 "; std::stringstream ss; tsm4Message tsm4msg; tsm4EncodedMessage tsm4Enc;