Loading ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorLayer.cc +101 −60 Original line number Diff line number Diff line Loading @@ -886,34 +886,99 @@ int ConfigRsuSimulatorLayer::process_ut_ivim_trigger(const OCTETSTRING& data, pa LibItsIvim__TypesAndValues::UtIvimTrigger trigger; // See ETSI TR 103 34 099 Cause C.4.1 GenerateIvimEvent // Decode ValidityFrom if ((flag & 0x8000) == 0x8000) { trigger.validFrom() = oct2int(OCTETSTRING(6, p)); trigger.validFrom() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { trigger.validFrom().set_to_omit(); } p += 6; // Decode ValidityTo if ((flag & 0x4000) == 0x4000) { trigger.validTo() = oct2int(OCTETSTRING(6, p)); trigger.validTo() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { trigger.validTo().set_to_omit(); } p += 6; // Decode RepetitionInterval if ((flag & 0x2000) == 0x2000) { trigger.repetitionInterval() = oct2int(OCTETSTRING(6, p)); trigger.repetitionInterval() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { trigger.repetitionInterval().set_to_omit(); } p += 6; // Decode zoneIds if ((flag & 0x1000) == 0x1000) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(1, p++)); } trigger.zoneIds() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { trigger.zoneIds().set_to_omit(); p += 1; } // Decode laneNumber if ((flag & 0x0800) == 0x0800) { trigger.laneNumber() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(1, p))); } else { trigger.laneNumber().set_to_omit(); } p += 1; // Decode relavanceZoneIds if ((flag & 0x0400) == 0x0400) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(1, p++)); } trigger.relavanceZoneIds() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { trigger.relavanceZoneIds().set_to_omit(); p += 1; } // Decode detectionZoneIds if ((flag & 0x0200) == 0x0200) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(1, p++)); } trigger.detectionZoneIds() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { trigger.detectionZoneIds().set_to_omit(); p += 1; } // Decode driverAwarenesZoneIds if ((flag & 0x0100) == 0x0100) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(1, p++)); } trigger.driverAwarenesZoneIds() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { trigger.driverAwarenesZoneIds().set_to_omit(); p += 1; } if ((flag & 0x0080) == 0x0080) { CITSapplMgmtIDs::VarLengthNumber v; v.content() = oct2int(OCTETSTRING(1, p)); trigger.itsRrid() = OPTIONAL<CITSapplMgmtIDs::VarLengthNumber>(v); } else { trigger.itsRrid().set_to_omit(); } p += 1; if ((flag & 0x0040) == 0x0040) { trigger.directionGic() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(1, p))); } else { trigger.directionGic().set_to_omit(); } p += 1; if ((flag & 0x0020) == 0x0020) { trigger.layoutId() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(1, p))); } else { trigger.layoutId().set_to_omit(); } loggers::get_instance().log_msg("ConfigRsuSimulatorLayer::process_ut_ivim_trigger: ", trigger); // Pass it to the ports if any Loading Loading @@ -942,69 +1007,45 @@ int ConfigRsuSimulatorLayer::process_ut_ivim_update(const OCTETSTRING& data, par unsigned char flag = *p++; loggers::get_instance().log("ConfigRsuSimulatorLayer::process_ut_ivim_update: flag=%02x", flag); LibItsIvim__TypesAndValues::UtIvimUpdate update; // See ETSI TR 103 34 099 Cause C.4.1 GenerateIvimEvent /* // Statuion ID update.actionId().originatingStationID() = oct2int(OCTETSTRING(4, p)); p += 4; // SequenceNumber update.actionId().sequenceNumber() = oct2int(OCTETSTRING(2, p)); // IviIdentificationNumber update.iviIdentificationNumber() = oct2int(OCTETSTRING(2, p)); p += 2; // Decode detectionTime update.detectionTime() = oct2int(OCTETSTRING(6, p)); p += 6; // validFrom if ((flag & 0x80) == 0x80) { update.validityDuration() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(3, p))); update.validFrom() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { update.validityDuration().set_to_omit(); update.validFrom().set_to_omit(); } p += 3; // Situation p += 6; // validTo if ((flag & 0x40) == 0x40) { DENM__PDU__Descriptions::SituationContainer& s = static_cast<DENM__PDU__Descriptions::SituationContainer &>(*update.get_opt_value()); s.informationQuality() = oct2int(OCTETSTRING(1, p++)); s.eventType().causeCode() = oct2int(OCTETSTRING(1, p++)); s.eventType().subCauseCode() = oct2int(OCTETSTRING(1, p++)); s.linkedCause().set_to_omit(); s.eventHistory().set_to_omit(); update.situation() = OPTIONAL<DENM__PDU__Descriptions::SituationContainer>(s); update.validTo() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { update.situation().set_to_omit(); update.validTo().set_to_omit(); } // Location update.location().set_to_omit(); // RelevanceDistance p += 6; // timeStamp if ((flag & 0x20) == 0x20) { update.relevanceDistance() = oct2int(OCTETSTRING(1, p++)); } else { update.relevanceDistance().set_to_omit(); } // RelevanceTrafficDirection if ((flag & 0x10) == 0x10) { update.relevanceTrafficDirection() = oct2int(OCTETSTRING(1, p++)); update.timeStamp() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { update.relevanceTrafficDirection().set_to_omit(); update.timeStamp().set_to_omit(); } if ((flag & 0x08) == 0x08) { update.transmissionInterval() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(2, p))); } else { update.transmissionInterval().set_to_omit(); p += 6; // connectedIviStructures if ((flag & 0x01) == 0x01) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(4, p)); p += 4; } p += 2; if ((flag & 0x04) == 0x04) { update.repetitionInterval() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(2, p))); update.connectedIviStructures() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { update.repetitionInterval().set_to_omit(); } p += 2; // alacarteLength INTEGER alacarte_length = oct2int(OCTETSTRING(1, p)); if (static_cast<int>(alacarte_length) != 0) { update.connectedIviStructures().set_to_omit(); p += 1; // FIXME AlacarteContainer alacarte optional } else { update.alacarte().set_to_omit(); } loggers::get_instance().log_msg("ConfigRsuSimulatorLayer::process_ut_ivim_update: ", update); */ // Pass it to the ports if any to_all_upper_ports(update, params); } else { Loading ccsrc/Protocols/CAM/cam_layer.cc +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ void cam_layer::receive_data(OCTETSTRING& data, params& params) // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime() = std::stoll(it->second); p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } Loading ccsrc/Protocols/DENM/denm_layer.cc +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ void denm_layer::receive_data(OCTETSTRING& data, params& params) // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime() = std::stoll(it->second); p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } Loading ccsrc/Protocols/IVIM/ivim_layer.cc +1 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ void ivim_layer::receive_data(OCTETSTRING& data, params& params) // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime() = std::stoll(it->second); p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } Loading ccsrc/Protocols/MapemSpatem/mapem_spatem_layer.cc +9 −2 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ void mapem_spatem_layer::receive_data(OCTETSTRING& data, params& params) // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime() = std::stoll(it->second); p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } Loading Loading @@ -144,8 +144,15 @@ void mapem_spatem_layer::receive_data(OCTETSTRING& data, params& params) return; } // else, continue // Process lower layer data // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader params::const_iterator it = params.find(params::gn_next_header); it = params.find(params::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { Loading Loading
ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorLayer.cc +101 −60 Original line number Diff line number Diff line Loading @@ -886,34 +886,99 @@ int ConfigRsuSimulatorLayer::process_ut_ivim_trigger(const OCTETSTRING& data, pa LibItsIvim__TypesAndValues::UtIvimTrigger trigger; // See ETSI TR 103 34 099 Cause C.4.1 GenerateIvimEvent // Decode ValidityFrom if ((flag & 0x8000) == 0x8000) { trigger.validFrom() = oct2int(OCTETSTRING(6, p)); trigger.validFrom() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { trigger.validFrom().set_to_omit(); } p += 6; // Decode ValidityTo if ((flag & 0x4000) == 0x4000) { trigger.validTo() = oct2int(OCTETSTRING(6, p)); trigger.validTo() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { trigger.validTo().set_to_omit(); } p += 6; // Decode RepetitionInterval if ((flag & 0x2000) == 0x2000) { trigger.repetitionInterval() = oct2int(OCTETSTRING(6, p)); trigger.repetitionInterval() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { trigger.repetitionInterval().set_to_omit(); } p += 6; // Decode zoneIds if ((flag & 0x1000) == 0x1000) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(1, p++)); } trigger.zoneIds() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { trigger.zoneIds().set_to_omit(); p += 1; } // Decode laneNumber if ((flag & 0x0800) == 0x0800) { trigger.laneNumber() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(1, p))); } else { trigger.laneNumber().set_to_omit(); } p += 1; // Decode relavanceZoneIds if ((flag & 0x0400) == 0x0400) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(1, p++)); } trigger.relavanceZoneIds() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { trigger.relavanceZoneIds().set_to_omit(); p += 1; } // Decode detectionZoneIds if ((flag & 0x0200) == 0x0200) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(1, p++)); } trigger.detectionZoneIds() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { trigger.detectionZoneIds().set_to_omit(); p += 1; } // Decode driverAwarenesZoneIds if ((flag & 0x0100) == 0x0100) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(1, p++)); } trigger.driverAwarenesZoneIds() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { trigger.driverAwarenesZoneIds().set_to_omit(); p += 1; } if ((flag & 0x0080) == 0x0080) { CITSapplMgmtIDs::VarLengthNumber v; v.content() = oct2int(OCTETSTRING(1, p)); trigger.itsRrid() = OPTIONAL<CITSapplMgmtIDs::VarLengthNumber>(v); } else { trigger.itsRrid().set_to_omit(); } p += 1; if ((flag & 0x0040) == 0x0040) { trigger.directionGic() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(1, p))); } else { trigger.directionGic().set_to_omit(); } p += 1; if ((flag & 0x0020) == 0x0020) { trigger.layoutId() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(1, p))); } else { trigger.layoutId().set_to_omit(); } loggers::get_instance().log_msg("ConfigRsuSimulatorLayer::process_ut_ivim_trigger: ", trigger); // Pass it to the ports if any Loading Loading @@ -942,69 +1007,45 @@ int ConfigRsuSimulatorLayer::process_ut_ivim_update(const OCTETSTRING& data, par unsigned char flag = *p++; loggers::get_instance().log("ConfigRsuSimulatorLayer::process_ut_ivim_update: flag=%02x", flag); LibItsIvim__TypesAndValues::UtIvimUpdate update; // See ETSI TR 103 34 099 Cause C.4.1 GenerateIvimEvent /* // Statuion ID update.actionId().originatingStationID() = oct2int(OCTETSTRING(4, p)); p += 4; // SequenceNumber update.actionId().sequenceNumber() = oct2int(OCTETSTRING(2, p)); // IviIdentificationNumber update.iviIdentificationNumber() = oct2int(OCTETSTRING(2, p)); p += 2; // Decode detectionTime update.detectionTime() = oct2int(OCTETSTRING(6, p)); p += 6; // validFrom if ((flag & 0x80) == 0x80) { update.validityDuration() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(3, p))); update.validFrom() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { update.validityDuration().set_to_omit(); update.validFrom().set_to_omit(); } p += 3; // Situation p += 6; // validTo if ((flag & 0x40) == 0x40) { DENM__PDU__Descriptions::SituationContainer& s = static_cast<DENM__PDU__Descriptions::SituationContainer &>(*update.get_opt_value()); s.informationQuality() = oct2int(OCTETSTRING(1, p++)); s.eventType().causeCode() = oct2int(OCTETSTRING(1, p++)); s.eventType().subCauseCode() = oct2int(OCTETSTRING(1, p++)); s.linkedCause().set_to_omit(); s.eventHistory().set_to_omit(); update.situation() = OPTIONAL<DENM__PDU__Descriptions::SituationContainer>(s); update.validTo() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { update.situation().set_to_omit(); update.validTo().set_to_omit(); } // Location update.location().set_to_omit(); // RelevanceDistance p += 6; // timeStamp if ((flag & 0x20) == 0x20) { update.relevanceDistance() = oct2int(OCTETSTRING(1, p++)); } else { update.relevanceDistance().set_to_omit(); } // RelevanceTrafficDirection if ((flag & 0x10) == 0x10) { update.relevanceTrafficDirection() = oct2int(OCTETSTRING(1, p++)); update.timeStamp() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(6, p))); } else { update.relevanceTrafficDirection().set_to_omit(); update.timeStamp().set_to_omit(); } if ((flag & 0x08) == 0x08) { update.transmissionInterval() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(2, p))); } else { update.transmissionInterval().set_to_omit(); p += 6; // connectedIviStructures if ((flag & 0x01) == 0x01) { PreGenRecordOf::PREGEN__RECORD__OF__INTEGER rov; rov.set_size(*p++); for (int i = 0; i < rov.size_of(); i++) { rov[i] = oct2int(OCTETSTRING(4, p)); p += 4; } p += 2; if ((flag & 0x04) == 0x04) { update.repetitionInterval() = OPTIONAL<INTEGER>(oct2int(OCTETSTRING(2, p))); update.connectedIviStructures() = OPTIONAL<PreGenRecordOf::PREGEN__RECORD__OF__INTEGER>(rov); } else { update.repetitionInterval().set_to_omit(); } p += 2; // alacarteLength INTEGER alacarte_length = oct2int(OCTETSTRING(1, p)); if (static_cast<int>(alacarte_length) != 0) { update.connectedIviStructures().set_to_omit(); p += 1; // FIXME AlacarteContainer alacarte optional } else { update.alacarte().set_to_omit(); } loggers::get_instance().log_msg("ConfigRsuSimulatorLayer::process_ut_ivim_update: ", update); */ // Pass it to the ports if any to_all_upper_ports(update, params); } else { Loading
ccsrc/Protocols/CAM/cam_layer.cc +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ void cam_layer::receive_data(OCTETSTRING& data, params& params) // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime() = std::stoll(it->second); p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } Loading
ccsrc/Protocols/DENM/denm_layer.cc +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ void denm_layer::receive_data(OCTETSTRING& data, params& params) // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime() = std::stoll(it->second); p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } Loading
ccsrc/Protocols/IVIM/ivim_layer.cc +1 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ void ivim_layer::receive_data(OCTETSTRING& data, params& params) // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime() = std::stoll(it->second); p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } Loading
ccsrc/Protocols/MapemSpatem/mapem_spatem_layer.cc +9 −2 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ void mapem_spatem_layer::receive_data(OCTETSTRING& data, params& params) // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime() = std::stoll(it->second); p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } Loading Loading @@ -144,8 +144,15 @@ void mapem_spatem_layer::receive_data(OCTETSTRING& data, params& params) return; } // else, continue // Process lower layer data // recvTime params::const_iterator it = params.find(params::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader params::const_iterator it = params.find(params::gn_next_header); it = params.find(params::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { Loading