Loading TS.ITS_TTF_T036.code-workspace +3 −22 Original line number Diff line number Diff line Loading @@ -3,32 +3,11 @@ { "path": "." }, { "path": "../../tmp/crypto-test-vectors" }, { "path": "../../frameworks/openssl" }, { "path": "../../frameworks/titan/titan.core" }, { "path": "../../frameworks/fsmsggen" }, { "path": "../../tmp/titan_etsi_its_per_issue" }, { "path": "../../tmp/titan_5gngap_per_issue" }, { "path": "../../tmp/test_cpp" }, { "path": "../TS.ITS.pipeline-scripts" }, { "path": "../itscertgen-r2" } ], "settings": { Loading Loading @@ -113,7 +92,9 @@ "msggen_comm.h": "c", "time.h": "c", "pthread.h": "c", "msggen.h": "c" "msggen.h": "c", "uri_port_utils.h": "c", "uppertester.h": "c" }, "java.compile.nullAnalysis.mode": "automatic" }, Loading ccsrc/Ports/LibIts_ports/CPS_ports/UpperTesterPort_CPS.hh +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ //============================================================================= #include "LibItsCps_TestSystem.hh" namespace LibItsCps__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { Loading ccsrc/Ports/LibIts_ports/UpperTesterPort.hh +2 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ #ifdef AtsCPS #include "BTP_ports/UpperTesterPort_BTP.hh" #include "CAM_ports/UpperTesterPort_CAM.hh" #include "CPS_ports/UpperTesterPort_CPS.hh" #include "GN_ports/UpperTesterPort_GN.hh" #endif Loading Loading @@ -158,6 +159,7 @@ #ifdef AtsCPS #include "UpperTesterPort_BTP.hh" #include "UpperTesterPort_CAM.hh" #include "UpperTesterPort_CPS.hh" #include "UpperTesterPort_GN.hh" #endif Loading ccsrc/Protocols/UpperTester/uppertester_cps_codec.cc +75 −11 Original line number Diff line number Diff line Loading @@ -37,19 +37,29 @@ int uppertester_cps_codec::encode(const LibItsCps__TypesAndValues::UtCpmTrigger encoding_buffer.put_c(static_cast<const uint8_t>(uppertester_cps_codec::c_utCpmTrigger)); uint8_t flags = 0x00; OCTETSTRING val; if (r.setVehicleRole().is_present()) { if (r.ischosen(LibItsCps__TypesAndValues::UtCpmTrigger::ALT_setVehicleRole)) { flags |= 0x80; val = int2oct(r.setVehicleRole(), 1); // } else if (r.leaveClusterWithCause().is_present()) { // flags |= 0x40; // val = int2oct(r.leaveClusterWithCause(), 1); // } else if (r.setVbsState().is_present()) { // flags |= 0x20; // val = int2oct(r.setVbsState(), 1); val = int2oct(r.setVehicleType(), 1); } else { val = int2oct(0, 1); } if (r.ischosen(LibItsCps__TypesAndValues::UtCpmTrigger::ALT_setPerceivedObjects)) { flags |= 0x40; OCTETSTRING os; encode(r.setPerceivedObjects(), os); val += int2oct(os.lengthof(), 2); // PerceivedObjectsLen set to real length val += os; } else { val += int2oct(0, 2); // PerceivedObjectsLen set to 0 } if (r.ischosen(LibItsCps__TypesAndValues::UtCpmTrigger::ALT_segmentedCpm)) { flags |= 0x20; val += int2oct(r.segmentedCpm(), 2); } encoding_buffer.put_c(flags); encoding_buffer.put_string(val); data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); loggers::get_instance().log_msg("<<< uppertester_cps_codec::encode: data=", data); return 0; } Loading @@ -61,21 +71,75 @@ int uppertester_cps_codec::encode(const Record_Type &msg, OCTETSTRING &data) { TTCN_Buffer encoding_buffer; if (std::string(msg.get_descriptor()->name).compare("@LibItsCps_TypesAndValues.UtCpmInitialize") == 0) { encoding_buffer.put_c(static_cast<const uint8_t>(uppertester_cps_codec::c_utCpmInitialize)); } else if (std::string(msg.get_descriptor()->name).compare("@LibItsCps_TypesAndValues.UtCpmPerceivedObjects") == 0) { encode_(msg, *msg.get_descriptor(), encoding_buffer); } else { // Error data = OCTETSTRING(0, nullptr); loggers::get_instance().warning("<<< uppertester_cps_codec::encode: Failed to encode UT message"); return -1; } encode_(msg, *msg.get_descriptor(), encoding_buffer); data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); loggers::get_instance().log_msg("<<< uppertester_cps_codec::encode: data=", data); return 0; } int uppertester_cps_codec::encode_(const Record_Of_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer) { loggers::get_instance().log_msg(">>> uppertester_cps_codec::encode_ (2): ", type); for (int i = 0; i < type.size_of(); i++) { const Base_Type& t = *type.get_at(i); if (encode_(t, *t.get_descriptor(), encoding_buffer) == -1) { loggers::get_instance().warning("uppertester_cps_codec::encode_ (2): -1 result code returned"); return -1; } } // End of 'for' statement loggers::get_instance().log_to_hexa("<<<uppertester_cps_codec::encode_ (2): encoding_buffer=", encoding_buffer); return 0; } int uppertester_cps_codec::encode_(const Base_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer) { loggers::get_instance().error(">>> uppertester_cps_codec::encode (3)"); loggers::get_instance().log(">>> uppertester_cps_codec::encode_: processing %s/%s/%p", type.get_descriptor()->name, field_descriptor.name, dynamic_cast<const Record_Type *>(&type)); loggers::get_instance().log_msg(">>> uppertester_cps_codec::encode_: ", type); if (dynamic_cast<const Record_Type *>(&type) != NULL) { const Record_Type &r = (const Record_Type &)type; loggers::get_instance().log("uppertester_cps_codec::encode_: processing Record_Type %s", r.get_descriptor()->name); for (int i = 0; i < r.get_count(); i++) { loggers::get_instance().log("uppertester_cps_codec::encode_: processing %s/%s/%s - %d (1 ==> use dynamic_cast<const OPTIONAL<...>) - %d", r.fld_name(i), r.fld_descr(i)->name, r.get_at(i)->get_descriptor()->name, r.get_at(i)->is_optional(), r.get_at(i)->is_present()); if (std::string(r.fld_name(i)).compare("perceivedObjects") == 0) { loggers::get_instance().log("uppertester_cps_codec::encode_: Calling encode_ (2) for %s", r.fld_name(i)); if (encode_(static_cast<const Record_Of_Type&>(*r.get_at(i)), *r.fld_descr(i), encoding_buffer) == -1) { loggers::get_instance().warning("uppertester_cps_codec::encode_: -1 result code returned"); return -1; } } else { loggers::get_instance().log("uppertester_cps_codec::encode_: Calling encode_ for %s", r.fld_name(i)); if (encode_(*r.get_at(i), *r.fld_descr(i), encoding_buffer) == -1) { loggers::get_instance().warning("uppertester_cps_codec::encode_: -1 result code returned"); return -1; } } } // End of 'for' statement } else { std::string s(field_descriptor.name); loggers::get_instance().log("uppertester_cps_codec::encode_: field to process %s", s.c_str()); if ((s.rfind(".measurementDeltaTime") != string::npos) || (s.rfind(".latitude") != string::npos) || (s.rfind(".longitude") != string::npos) || (s.rfind(".altitude") != string::npos) || (s.rfind(".confidence") != string::npos) || (s.rfind(".objectId") != string::npos)) { const INTEGER &i = static_cast<const INTEGER &>(type); encoding_buffer.put_string(int2oct(i, 4)); } else { loggers::get_instance().log("uppertester_cps_codec::encode_ (else): processing type %s/%s", type.get_descriptor()->name, field_descriptor.name); type.encode(field_descriptor, encoding_buffer, TTCN_EncDec::CT_RAW); } } loggers::get_instance().log_to_hexa("<<<uppertester_cps_codec::encode_: encoding_buffer=", encoding_buffer); return 0; } int uppertester_cps_codec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); Loading ccsrc/Protocols/UpperTester/uppertester_cps_codec.hh +1 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ static uint8_t c_utCpmEventInd; private: int encode_(const Base_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer); int encode_(const Record_Of_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer); public: uppertester_cps_codec() : codec<Record_Type, Record_Type>(){}; Loading Loading
TS.ITS_TTF_T036.code-workspace +3 −22 Original line number Diff line number Diff line Loading @@ -3,32 +3,11 @@ { "path": "." }, { "path": "../../tmp/crypto-test-vectors" }, { "path": "../../frameworks/openssl" }, { "path": "../../frameworks/titan/titan.core" }, { "path": "../../frameworks/fsmsggen" }, { "path": "../../tmp/titan_etsi_its_per_issue" }, { "path": "../../tmp/titan_5gngap_per_issue" }, { "path": "../../tmp/test_cpp" }, { "path": "../TS.ITS.pipeline-scripts" }, { "path": "../itscertgen-r2" } ], "settings": { Loading Loading @@ -113,7 +92,9 @@ "msggen_comm.h": "c", "time.h": "c", "pthread.h": "c", "msggen.h": "c" "msggen.h": "c", "uri_port_utils.h": "c", "uppertester.h": "c" }, "java.compile.nullAnalysis.mode": "automatic" }, Loading
ccsrc/Ports/LibIts_ports/CPS_ports/UpperTesterPort_CPS.hh +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ //============================================================================= #include "LibItsCps_TestSystem.hh" namespace LibItsCps__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { Loading
ccsrc/Ports/LibIts_ports/UpperTesterPort.hh +2 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ #ifdef AtsCPS #include "BTP_ports/UpperTesterPort_BTP.hh" #include "CAM_ports/UpperTesterPort_CAM.hh" #include "CPS_ports/UpperTesterPort_CPS.hh" #include "GN_ports/UpperTesterPort_GN.hh" #endif Loading Loading @@ -158,6 +159,7 @@ #ifdef AtsCPS #include "UpperTesterPort_BTP.hh" #include "UpperTesterPort_CAM.hh" #include "UpperTesterPort_CPS.hh" #include "UpperTesterPort_GN.hh" #endif Loading
ccsrc/Protocols/UpperTester/uppertester_cps_codec.cc +75 −11 Original line number Diff line number Diff line Loading @@ -37,19 +37,29 @@ int uppertester_cps_codec::encode(const LibItsCps__TypesAndValues::UtCpmTrigger encoding_buffer.put_c(static_cast<const uint8_t>(uppertester_cps_codec::c_utCpmTrigger)); uint8_t flags = 0x00; OCTETSTRING val; if (r.setVehicleRole().is_present()) { if (r.ischosen(LibItsCps__TypesAndValues::UtCpmTrigger::ALT_setVehicleRole)) { flags |= 0x80; val = int2oct(r.setVehicleRole(), 1); // } else if (r.leaveClusterWithCause().is_present()) { // flags |= 0x40; // val = int2oct(r.leaveClusterWithCause(), 1); // } else if (r.setVbsState().is_present()) { // flags |= 0x20; // val = int2oct(r.setVbsState(), 1); val = int2oct(r.setVehicleType(), 1); } else { val = int2oct(0, 1); } if (r.ischosen(LibItsCps__TypesAndValues::UtCpmTrigger::ALT_setPerceivedObjects)) { flags |= 0x40; OCTETSTRING os; encode(r.setPerceivedObjects(), os); val += int2oct(os.lengthof(), 2); // PerceivedObjectsLen set to real length val += os; } else { val += int2oct(0, 2); // PerceivedObjectsLen set to 0 } if (r.ischosen(LibItsCps__TypesAndValues::UtCpmTrigger::ALT_segmentedCpm)) { flags |= 0x20; val += int2oct(r.segmentedCpm(), 2); } encoding_buffer.put_c(flags); encoding_buffer.put_string(val); data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); loggers::get_instance().log_msg("<<< uppertester_cps_codec::encode: data=", data); return 0; } Loading @@ -61,21 +71,75 @@ int uppertester_cps_codec::encode(const Record_Type &msg, OCTETSTRING &data) { TTCN_Buffer encoding_buffer; if (std::string(msg.get_descriptor()->name).compare("@LibItsCps_TypesAndValues.UtCpmInitialize") == 0) { encoding_buffer.put_c(static_cast<const uint8_t>(uppertester_cps_codec::c_utCpmInitialize)); } else if (std::string(msg.get_descriptor()->name).compare("@LibItsCps_TypesAndValues.UtCpmPerceivedObjects") == 0) { encode_(msg, *msg.get_descriptor(), encoding_buffer); } else { // Error data = OCTETSTRING(0, nullptr); loggers::get_instance().warning("<<< uppertester_cps_codec::encode: Failed to encode UT message"); return -1; } encode_(msg, *msg.get_descriptor(), encoding_buffer); data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); loggers::get_instance().log_msg("<<< uppertester_cps_codec::encode: data=", data); return 0; } int uppertester_cps_codec::encode_(const Record_Of_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer) { loggers::get_instance().log_msg(">>> uppertester_cps_codec::encode_ (2): ", type); for (int i = 0; i < type.size_of(); i++) { const Base_Type& t = *type.get_at(i); if (encode_(t, *t.get_descriptor(), encoding_buffer) == -1) { loggers::get_instance().warning("uppertester_cps_codec::encode_ (2): -1 result code returned"); return -1; } } // End of 'for' statement loggers::get_instance().log_to_hexa("<<<uppertester_cps_codec::encode_ (2): encoding_buffer=", encoding_buffer); return 0; } int uppertester_cps_codec::encode_(const Base_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer) { loggers::get_instance().error(">>> uppertester_cps_codec::encode (3)"); loggers::get_instance().log(">>> uppertester_cps_codec::encode_: processing %s/%s/%p", type.get_descriptor()->name, field_descriptor.name, dynamic_cast<const Record_Type *>(&type)); loggers::get_instance().log_msg(">>> uppertester_cps_codec::encode_: ", type); if (dynamic_cast<const Record_Type *>(&type) != NULL) { const Record_Type &r = (const Record_Type &)type; loggers::get_instance().log("uppertester_cps_codec::encode_: processing Record_Type %s", r.get_descriptor()->name); for (int i = 0; i < r.get_count(); i++) { loggers::get_instance().log("uppertester_cps_codec::encode_: processing %s/%s/%s - %d (1 ==> use dynamic_cast<const OPTIONAL<...>) - %d", r.fld_name(i), r.fld_descr(i)->name, r.get_at(i)->get_descriptor()->name, r.get_at(i)->is_optional(), r.get_at(i)->is_present()); if (std::string(r.fld_name(i)).compare("perceivedObjects") == 0) { loggers::get_instance().log("uppertester_cps_codec::encode_: Calling encode_ (2) for %s", r.fld_name(i)); if (encode_(static_cast<const Record_Of_Type&>(*r.get_at(i)), *r.fld_descr(i), encoding_buffer) == -1) { loggers::get_instance().warning("uppertester_cps_codec::encode_: -1 result code returned"); return -1; } } else { loggers::get_instance().log("uppertester_cps_codec::encode_: Calling encode_ for %s", r.fld_name(i)); if (encode_(*r.get_at(i), *r.fld_descr(i), encoding_buffer) == -1) { loggers::get_instance().warning("uppertester_cps_codec::encode_: -1 result code returned"); return -1; } } } // End of 'for' statement } else { std::string s(field_descriptor.name); loggers::get_instance().log("uppertester_cps_codec::encode_: field to process %s", s.c_str()); if ((s.rfind(".measurementDeltaTime") != string::npos) || (s.rfind(".latitude") != string::npos) || (s.rfind(".longitude") != string::npos) || (s.rfind(".altitude") != string::npos) || (s.rfind(".confidence") != string::npos) || (s.rfind(".objectId") != string::npos)) { const INTEGER &i = static_cast<const INTEGER &>(type); encoding_buffer.put_string(int2oct(i, 4)); } else { loggers::get_instance().log("uppertester_cps_codec::encode_ (else): processing type %s/%s", type.get_descriptor()->name, field_descriptor.name); type.encode(field_descriptor, encoding_buffer, TTCN_EncDec::CT_RAW); } } loggers::get_instance().log_to_hexa("<<<uppertester_cps_codec::encode_: encoding_buffer=", encoding_buffer); return 0; } int uppertester_cps_codec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); Loading
ccsrc/Protocols/UpperTester/uppertester_cps_codec.hh +1 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ static uint8_t c_utCpmEventInd; private: int encode_(const Base_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer); int encode_(const Record_Of_Type &type, const TTCN_Typedescriptor_t &field_descriptor, TTCN_Buffer &encoding_buffer); public: uppertester_cps_codec() : codec<Record_Type, Record_Type>(){}; Loading