From fb25e8af26594cc79fef830845d6f49423d49516 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Fri, 23 Sep 2022 08:51:10 +0200 Subject: [PATCH 1/3] Reorganize modules before to link with titan-test-system-framework --- ccsrc/EncDec/LibItsHttp_Encdec.cc | 28 - ccsrc/EncDec/module.mk | 4 +- ccsrc/Externals/LibItsSecurity_externals.cc | 2 +- ccsrc/Framework/include/base_time.hh | 73 -- ccsrc/Framework/include/codec_factory.hh | 45 -- .../Framework/include/codec_stack_builder.hh | 75 -- ccsrc/Framework/include/converter.hh | 387 --------- ccsrc/Framework/include/layer.hh | 143 ---- ccsrc/Framework/include/layer_factory.hh | 121 --- .../Framework/include/layer_stack_builder.hh | 66 -- ccsrc/Framework/include/oer_codec.hh | 48 -- ccsrc/Framework/include/per_codec.hh | 50 -- ccsrc/Framework/include/per_codec.t.hh | 26 - ccsrc/Framework/include/registration.hh | 58 -- ccsrc/Framework/include/t_layer.hh | 70 -- ccsrc/Framework/module.mk | 6 - ccsrc/Framework/src/base_time.cc | 13 - ccsrc/Framework/src/codec_stack_builder.cc | 4 - ccsrc/Framework/src/converter.cc | 195 ----- ccsrc/Framework/src/layer_factory.cc | 61 -- ccsrc/Framework/src/params.cc | 152 ---- ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.cc | 8 +- ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.hh | 8 +- ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.cc | 12 +- ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.hh | 8 +- .../CAM_ports/UpperTesterPort_CAM.cc | 2 +- .../CAM_ports/UpperTesterPort_CAM.hh | 6 +- .../Ports/LibIts_ports/DENM_ports/DenmPort.cc | 6 +- .../Ports/LibIts_ports/DENM_ports/DenmPort.hh | 2 +- .../DENM_ports/UpperTesterPort_DENM.cc | 2 +- .../DENM_ports/UpperTesterPort_DENM.hh | 6 +- .../GN_ports/GeoNetworkingPort.cc | 10 +- .../GN_ports/GeoNetworkingPort.hh | 8 +- .../GN_ports/UpperTesterPort_GN.cc | 2 +- .../GN_ports/UpperTesterPort_GN.hh | 6 +- .../Ports/LibIts_ports/Http_ports/HttpPort.cc | 12 +- .../Ports/LibIts_ports/Http_ports/HttpPort.hh | 12 +- .../Ports/LibIts_ports/IVIM_ports/IvimPort.cc | 8 +- .../Ports/LibIts_ports/IVIM_ports/IvimPort.hh | 2 +- .../IVIM_ports/UpperTesterPort_IVIM.cc | 2 +- .../IVIM_ports/UpperTesterPort_IVIM.hh | 8 +- .../MapemSpatem_ports/MapemSpatemPort.cc | 6 +- .../UpperTesterPort_MapemSpatem.cc | 2 +- .../UpperTesterPort_MapemSpatem.hh | 6 +- .../Pki_ports/UpperTesterPkiPort.cc | 2 +- .../ConfigRsuSimulatorCodec.cc | 2 +- .../ConfigRsuSimulatorCodec.hh | 4 +- .../ConfigRsuSimulatorPort.cc | 2 +- .../LibIts_ports/Rtcmem_ports/RtcmemPort.cc | 4 +- .../Rtcmem_ports/UpperTesterPort_Rtcmem.cc | 4 +- .../Rtcmem_ports/UpperTesterPort_Rtcmem.hh | 8 +- .../SremSsem_ports/SremSsemPort.cc | 6 +- .../UpperTesterPort_SremSsem.cc | 2 +- .../UpperTesterPort_SremSsem.hh | 6 +- ccsrc/Protocols/BTP/btp_codec.cc | 14 +- ccsrc/Protocols/BTP/btp_codec.hh | 4 +- ccsrc/Protocols/BTP/btp_layer.cc | 56 +- ccsrc/Protocols/BTP/btp_layer.hh | 10 +- ccsrc/Protocols/CAM/cam_codec.cc | 2 +- ccsrc/Protocols/CAM/cam_codec.hh | 4 +- ccsrc/Protocols/CAM_layers/cam_layer.cc | 26 +- ccsrc/Protocols/CAM_layers/cam_layer.hh | 10 +- .../Protocols/Commsignia/commsignia_layer.cc | 12 +- .../Protocols/Commsignia/commsignia_layer.hh | 8 +- ccsrc/Protocols/DENM/denm_codec.cc | 2 +- ccsrc/Protocols/DENM/denm_codec.hh | 4 +- ccsrc/Protocols/DENM_layers/denm_layer.cc | 24 +- ccsrc/Protocols/DENM_layers/denm_layer.hh | 8 +- ccsrc/Protocols/ETH/ethernet_layer.cc | 82 -- ccsrc/Protocols/ETH/ethernet_layer.hh | 48 -- ccsrc/Protocols/ETH/ethernet_layer_factory.hh | 42 - ccsrc/Protocols/ETH/module.mk | 3 - .../GeoNetworking/geonetworking_codec.cc | 20 +- .../GeoNetworking/geonetworking_codec.hh | 4 +- .../GeoNetworking/geonetworking_layer.cc | 114 +-- .../GeoNetworking/geonetworking_layer.hh | 22 +- ccsrc/Protocols/Http/http_codec.cc | 754 ------------------ ccsrc/Protocols/Http/http_codec.hh | 72 -- ccsrc/Protocols/Http/http_layer.cc | 128 --- ccsrc/Protocols/Http/http_layer.hh | 83 -- ccsrc/Protocols/Http/http_layer_factory.hh | 42 - ccsrc/Protocols/Http/module.mk | 3 - ccsrc/Protocols/IVIM/ivim_codec.cc | 2 +- ccsrc/Protocols/IVIM/ivim_codec.hh | 4 +- ccsrc/Protocols/IVIM_layers/ivim_layer.cc | 30 +- ccsrc/Protocols/IVIM_layers/ivim_layer.hh | 10 +- ccsrc/Protocols/LTE/lte_layer.cc | 12 +- ccsrc/Protocols/LTE/lte_layer.hh | 8 +- ccsrc/Protocols/LTE/lte_tcp_layer.cc | 13 +- ccsrc/Protocols/LTE/lte_tcp_layer.hh | 6 +- ccsrc/Protocols/LTE/lte_udp_layer.cc | 4 +- ccsrc/Protocols/LTE/lte_udp_layer.hh | 6 +- ccsrc/Protocols/LTE/uu_amqp.cc | 10 +- ccsrc/Protocols/LTE/uu_amqp.hh | 10 +- ccsrc/Protocols/LTE/uu_interface.hh | 6 +- ccsrc/Protocols/LTE/uu_mqtt.cc | 32 +- ccsrc/Protocols/LTE/uu_mqtt.hh | 18 +- ccsrc/Protocols/LTE/uu_raw.cc | 10 +- ccsrc/Protocols/LTE/uu_raw.hh | 10 +- ccsrc/Protocols/MapemSpatem/mapem_codec.cc | 2 +- ccsrc/Protocols/MapemSpatem/mapem_codec.hh | 4 +- ccsrc/Protocols/MapemSpatem/spatem_codec.cc | 2 +- ccsrc/Protocols/MapemSpatem/spatem_codec.hh | 4 +- .../MapemSpatem_layers/mapem_spatem_layer.cc | 50 +- .../MapemSpatem_layers/mapem_spatem_layer.hh | 10 +- ccsrc/Protocols/Pcap/module.mk | 3 - ccsrc/Protocols/Pcap/pcap_cygwin_layer.cc | 265 ------ ccsrc/Protocols/Pcap/pcap_cygwin_layer.hh | 79 -- ccsrc/Protocols/Pcap/pcap_layer.cc | 276 ------- ccsrc/Protocols/Pcap/pcap_layer.hh | 5 - ccsrc/Protocols/Pcap/pcap_layer_factory.hh | 42 - ccsrc/Protocols/Pcap/pcap_linux_layer.cc | 198 ----- ccsrc/Protocols/Pcap/pcap_linux_layer.hh | 62 -- ccsrc/Protocols/Pcap/pcap_offline_layer.cc | 227 ------ ccsrc/Protocols/Pcap/pcap_offline_layer.hh | 80 -- .../Pcap/pcap_offline_layer_factory.hh | 42 - .../etsi_ts102941_trust_lists_ctl_format.cc | 2 +- .../etsi_ts102941_trust_lists_ctl_format.hh | 4 +- ccsrc/Protocols/Qualcomm/qualcomm_layer.cc | 4 +- ccsrc/Protocols/Qualcomm/qualcomm_layer.hh | 11 +- ccsrc/Protocols/Rtcmem/RtcmemCodec.cc | 2 +- ccsrc/Protocols/Rtcmem/RtcmemCodec.hh | 4 +- ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.cc | 28 +- ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.hh | 8 +- .../etsi_ts102941_base_types_public_keys.hh | 6 +- .../Security/etsi_ts102941_data_codec.hh | 6 +- .../etsi_ts102941_data_content_codec.hh | 6 +- ...02941_types_authorization_inner_request.hh | 6 +- ...2941_types_authorization_inner_response.hh | 6 +- ...1_types_authorization_shared_at_request.hh | 6 +- ..._types_authorization_validation_request.hh | 6 +- ...types_authorization_validation_response.hh | 6 +- ..._ts102941_types_enrolment_inner_request.hh | 6 +- ...ts102941_types_enrolment_inner_response.hh | 6 +- .../etsi_ts103097_certificate_codec.hh | 9 +- .../Security/etsi_ts103097_data_codec.hh | 8 +- ...i_ts103097_tobesigned_certificate_codec.hh | 8 +- .../etsi_ts103097_tobesigned_data_codec.hh | 8 +- .../Security/http_etsi_ieee1609dot2_codec.cc | 2 +- .../Security/http_etsi_ieee1609dot2_codec.hh | 6 +- .../http_etsi_ieee1609dot2_codec_factory.hh | 2 +- ...09dot2_base_types_public_encryption_key.hh | 6 +- ...dot2_base_types_public_verification_key.hh | 6 +- ccsrc/Protocols/Security/security_services.cc | 120 +-- ccsrc/Protocols/Security/security_services.hh | 42 +- ccsrc/Protocols/SremSsem/SremCodec.cc | 2 +- ccsrc/Protocols/SremSsem/SremCodec.hh | 4 +- ccsrc/Protocols/SremSsem/SsemCodec.cc | 2 +- ccsrc/Protocols/SremSsem/SsemCodec.hh | 4 +- .../SremSsem_layers/SremSsemLayer.cc | 54 +- .../SremSsem_layers/SremSsemLayer.hh | 14 +- ccsrc/Protocols/Tcp/module.mk | 3 - ccsrc/Protocols/Tcp/tcp_layer.cc | 259 ------ ccsrc/Protocols/Tcp/tcp_layer.hh | 108 --- ccsrc/Protocols/Tcp/tcp_layer_factory.hh | 41 - ccsrc/Protocols/UDP/module.mk | 4 - ccsrc/Protocols/UDP/udp_layer.cc | 196 ----- ccsrc/Protocols/UDP/udp_layer.hh | 84 -- ccsrc/Protocols/UDP/udp_layer_factory.hh | 42 - .../UpperTester/UpperTesterRtcmemCodec.cc | 8 +- .../UpperTester/UpperTesterRtcmemCodec.hh | 8 +- .../UpperTester/UpperTesterRtcmemLayer.cc | 20 +- .../UpperTester/UpperTesterRtcmemLayer.hh | 16 +- .../UpperTester/UpperTesterSremSsemCodec.cc | 10 +- .../UpperTester/UpperTesterSremSsemCodec.hh | 10 +- .../UpperTester/UpperTesterSremSsemLayer.cc | 18 +- .../UpperTester/UpperTesterSremSsemLayer.hh | 14 +- ccsrc/Protocols/UpperTester/module.mk | 2 +- .../UpperTester/uppertester_cam_codec.cc | 8 +- .../UpperTester/uppertester_cam_codec.hh | 8 +- .../UpperTester/uppertester_cam_layer.cc | 10 +- .../UpperTester/uppertester_cam_layer.hh | 12 +- .../UpperTester/uppertester_debug_layer.cc | 4 +- .../UpperTester/uppertester_debug_layer.hh | 6 +- .../UpperTester/uppertester_denm_codec.cc | 8 +- .../UpperTester/uppertester_denm_codec.hh | 8 +- .../UpperTester/uppertester_denm_layer.cc | 44 +- .../UpperTester/uppertester_denm_layer.hh | 18 +- .../uppertester_geonetworking_codec.cc | 8 +- .../uppertester_geonetworking_codec.hh | 8 +- .../uppertester_geonetworking_layer.cc | 12 +- .../uppertester_geonetworking_layer.hh | 14 +- .../UpperTester/uppertester_ivim_codec.cc | 8 +- .../UpperTester/uppertester_ivim_codec.hh | 8 +- .../UpperTester/uppertester_ivim_layer.cc | 12 +- .../UpperTester/uppertester_ivim_layer.hh | 14 +- .../uppertester_mapem_spatem_codec.cc | 10 +- .../uppertester_mapem_spatem_codec.hh | 10 +- .../uppertester_mapem_spatem_layer.cc | 16 +- .../uppertester_mapem_spatem_layer.hh | 10 +- .../UpperTester/uppertester_pki_codec.cc | 4 +- .../UpperTester/uppertester_pki_codec.hh | 4 +- .../UpperTester/uppertester_pki_layer.hh | 10 +- .../{Framework => framework}/include/codec.hh | 10 +- .../include/data_event_notifier.hh | 4 +- .../include/data_event_observer.hh | 2 +- .../include/params_its.hh} | 73 +- ccsrc/framework/module.mk | 2 + ccsrc/framework/src/params_its.cc | 69 ++ ccsrc/loggers/loggers.cc | 4 - ccsrc/loggers/loggers.hh | 273 ------- ccsrc/loggers/module.mk | 3 - data/certificates/profiles/CERT_IUT_A_RCA.xml | 19 +- etc/AtsPki/AtsPki_Atos.cfg_ | 4 +- etc/AtsPki/AtsPki_Autocrypt.cfg_ | 2 +- etc/AtsPki/AtsPki_Commsignia.cfg_ | 4 +- etc/AtsPki/AtsPki_Ctag.cfg_ | 4 +- etc/AtsPki/AtsPki_Etas.cfg_ | 13 +- etc/AtsPki/AtsPki_Microsec.cfg_ | 4 +- etc/AtsPki/AtsPki_Simu.cfg_ | 6 +- etc/AtsSecurity/AtsSecurity.cfg | 20 +- 211 files changed, 933 insertions(+), 6074 deletions(-) delete mode 100644 ccsrc/EncDec/LibItsHttp_Encdec.cc delete mode 100644 ccsrc/Framework/include/base_time.hh delete mode 100644 ccsrc/Framework/include/codec_factory.hh delete mode 100644 ccsrc/Framework/include/codec_stack_builder.hh delete mode 100644 ccsrc/Framework/include/converter.hh delete mode 100644 ccsrc/Framework/include/layer.hh delete mode 100644 ccsrc/Framework/include/layer_factory.hh delete mode 100644 ccsrc/Framework/include/layer_stack_builder.hh delete mode 100644 ccsrc/Framework/include/oer_codec.hh delete mode 100644 ccsrc/Framework/include/per_codec.hh delete mode 100644 ccsrc/Framework/include/per_codec.t.hh delete mode 100644 ccsrc/Framework/include/registration.hh delete mode 100644 ccsrc/Framework/include/t_layer.hh delete mode 100644 ccsrc/Framework/module.mk delete mode 100644 ccsrc/Framework/src/base_time.cc delete mode 100644 ccsrc/Framework/src/codec_stack_builder.cc delete mode 100644 ccsrc/Framework/src/converter.cc delete mode 100644 ccsrc/Framework/src/layer_factory.cc delete mode 100644 ccsrc/Framework/src/params.cc delete mode 100644 ccsrc/Protocols/ETH/ethernet_layer.cc delete mode 100644 ccsrc/Protocols/ETH/ethernet_layer.hh delete mode 100644 ccsrc/Protocols/ETH/ethernet_layer_factory.hh delete mode 100644 ccsrc/Protocols/ETH/module.mk delete mode 100644 ccsrc/Protocols/Http/http_codec.cc delete mode 100644 ccsrc/Protocols/Http/http_codec.hh delete mode 100644 ccsrc/Protocols/Http/http_layer.cc delete mode 100644 ccsrc/Protocols/Http/http_layer.hh delete mode 100644 ccsrc/Protocols/Http/http_layer_factory.hh delete mode 100644 ccsrc/Protocols/Http/module.mk delete mode 100644 ccsrc/Protocols/Pcap/module.mk delete mode 100644 ccsrc/Protocols/Pcap/pcap_cygwin_layer.cc delete mode 100644 ccsrc/Protocols/Pcap/pcap_cygwin_layer.hh delete mode 100644 ccsrc/Protocols/Pcap/pcap_layer.cc delete mode 100644 ccsrc/Protocols/Pcap/pcap_layer.hh delete mode 100644 ccsrc/Protocols/Pcap/pcap_layer_factory.hh delete mode 100644 ccsrc/Protocols/Pcap/pcap_linux_layer.cc delete mode 100644 ccsrc/Protocols/Pcap/pcap_linux_layer.hh delete mode 100644 ccsrc/Protocols/Pcap/pcap_offline_layer.cc delete mode 100644 ccsrc/Protocols/Pcap/pcap_offline_layer.hh delete mode 100644 ccsrc/Protocols/Pcap/pcap_offline_layer_factory.hh delete mode 100644 ccsrc/Protocols/Tcp/module.mk delete mode 100644 ccsrc/Protocols/Tcp/tcp_layer.cc delete mode 100644 ccsrc/Protocols/Tcp/tcp_layer.hh delete mode 100644 ccsrc/Protocols/Tcp/tcp_layer_factory.hh delete mode 100644 ccsrc/Protocols/UDP/module.mk delete mode 100644 ccsrc/Protocols/UDP/udp_layer.cc delete mode 100644 ccsrc/Protocols/UDP/udp_layer.hh delete mode 100644 ccsrc/Protocols/UDP/udp_layer_factory.hh rename ccsrc/{Framework => framework}/include/codec.hh (86%) rename ccsrc/{Framework => framework}/include/data_event_notifier.hh (65%) rename ccsrc/{Framework => framework}/include/data_event_observer.hh (93%) rename ccsrc/{Framework/include/params.hh => framework/include/params_its.hh} (61%) create mode 100644 ccsrc/framework/module.mk create mode 100644 ccsrc/framework/src/params_its.cc delete mode 100644 ccsrc/loggers/loggers.cc delete mode 100644 ccsrc/loggers/loggers.hh delete mode 100644 ccsrc/loggers/module.mk diff --git a/ccsrc/EncDec/LibItsHttp_Encdec.cc b/ccsrc/EncDec/LibItsHttp_Encdec.cc deleted file mode 100644 index 89fe0d1..0000000 --- a/ccsrc/EncDec/LibItsHttp_Encdec.cc +++ /dev/null @@ -1,28 +0,0 @@ - -#include "LibItsHttp_MessageBodyTypes.hh" - -#include "http_codec.hh" - -#include "loggers.hh" - -namespace LibItsHttp__EncdecDeclarations { - - BITSTRING fx__enc__http__message(const LibItsHttp__TypesAndValues::HttpMessage& p) { - loggers::get_instance().log_msg(">>> fx__enc__http__message: ", (const Base_Type&)p); - - OCTETSTRING os; - http_codec codec; - codec.encode(p, os); - - return oct2bit(os); - } - INTEGER fx__dec__http__message(BITSTRING& pdu, LibItsHttp__TypesAndValues::HttpMessage& p) { - loggers::get_instance().log_msg(">>> fx__dec__http__message: ", pdu); - - OCTETSTRING os = bit2oct(pdu); - http_codec codec; - codec.decode(os, p); - - return 0; - } -} // End of namespace LibItsHttp__EncdecDeclarations diff --git a/ccsrc/EncDec/module.mk b/ccsrc/EncDec/module.mk index 890f857..e99d90e 100644 --- a/ccsrc/EncDec/module.mk +++ b/ccsrc/EncDec/module.mk @@ -25,7 +25,7 @@ sources += \ LibItsBtp_Encdec.cc \ LibItsCam_Encdec.cc \ LibItsDenm_Encdec.cc \ - LibItsHttp_Encdec.cc \ + LibHttp_Encdec.cc \ LibItsMapemSpatem_Encdec.cc \ LibItsSremSsem_Encdec.cc \ LibItsRtcmem_Encdec.cc \ @@ -55,5 +55,5 @@ sources += \ LibItsBtp_Encdec.cc \ LibItsPki_Encdec.cc \ LibItsCam_Encdec.cc \ - LibItsHttp_Encdec.cc + LibHttp_Encdec.cc endif diff --git a/ccsrc/Externals/LibItsSecurity_externals.cc b/ccsrc/Externals/LibItsSecurity_externals.cc index bad96ff..36d0f67 100644 --- a/ccsrc/Externals/LibItsSecurity_externals.cc +++ b/ccsrc/Externals/LibItsSecurity_externals.cc @@ -1369,7 +1369,7 @@ namespace LibItsSecurity__Functions { str += "/"; str += std::string(static_cast(p__configId)); } - params params; + params_its params; params.insert(std::pair(std::string("sec_db_path"), str)); if (security_services::get_instance().setup(params) == -1) { return FALSE; diff --git a/ccsrc/Framework/include/base_time.hh b/ccsrc/Framework/include/base_time.hh deleted file mode 100644 index 03fa8f6..0000000 --- a/ccsrc/Framework/include/base_time.hh +++ /dev/null @@ -1,73 +0,0 @@ -/*! - * \file base_time.hh - * \brief Header file for the control port base_time functionality. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include - -/** - * \class base_time - * \brief This class provides time tools such as getting current time - */ -class base_time { - const unsigned long long its_base_time_ms = 1072915200000L; //! Base time 01/01/2004 12:00am in millseconds - - unsigned long long leap_delay; - - static base_time *_instance; - -private: - base_time() : leap_delay{0} {}; //! Can not be created manually -public: - static inline base_time &get_instance(); - - virtual ~base_time() { - if (_instance != nullptr) - delete _instance; - }; - -public: - inline const unsigned long long get_current_time_ms() const; - inline const unsigned long long get_its_base_time_ms() const; - inline const unsigned long long get_its_current_time_ms() const; - inline const unsigned long long get_its_current_time_us() const; - inline const unsigned long long get_its_current_time_mod_ms() const; - inline void set_leap_delay_us(const unsigned long long p_leap_delay); - inline const unsigned long long get_leap_delay_us() const; -}; // End of class base_time - -// static functions -base_time &base_time::get_instance() { return (_instance != nullptr) ? *_instance : *(_instance = new base_time()); } - -const unsigned long long base_time::get_current_time_ms() const { - return (leap_delay / 1000) + std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); -} - -const unsigned long long base_time::get_its_base_time_ms() const { return base_time::its_base_time_ms; } - -const unsigned long long base_time::get_its_current_time_ms() const { - return (leap_delay / 1000) + std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count() - - base_time::its_base_time_ms; -} - -const unsigned long long base_time::get_its_current_time_us() const { - return leap_delay + std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count() - - base_time::its_base_time_ms * 1000; -} - -const unsigned long long base_time::get_its_current_time_mod_ms() const { - return ((leap_delay / 1000) + std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count() - - base_time::its_base_time_ms) % - 65536; -} - -void base_time::set_leap_delay_us(const unsigned long long p_leap_delay) { leap_delay = p_leap_delay; } - -inline const unsigned long long base_time::get_leap_delay_us() const { return leap_delay; } diff --git a/ccsrc/Framework/include/codec_factory.hh b/ccsrc/Framework/include/codec_factory.hh deleted file mode 100644 index 037247a..0000000 --- a/ccsrc/Framework/include/codec_factory.hh +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * \file codec_factory.hh - * \brief Header file for ITS abstract protocol codec definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include - -#include "codec.hh" - -class Record_Type; //! TITAN forward declaration - -/*! - * \class codec_factory - * \brief This class provides a factory class to create codec class instances - * \abstract - */ -class codec_factory { -public: //! \publicsection - /*! - * \fn codec(); - * \brief Default constructor - */ - codec_factory(){}; - /*! - * \fn codec* create_codec(const std::string & type, const std::string & param); - * \brief Create the codecs stack based on the provided codecs stack description (cf. remark) - * \param[in] p_type The provided codecs stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \remark The description below introduces codecs stack in case of ITS project: - * HTTP(codecs=xml:held_codec;html:html_codec,json:json_codec)/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) - * \pure - */ - virtual codec *create_codec() = 0; -}; // End of class codec_factory diff --git a/ccsrc/Framework/include/codec_stack_builder.hh b/ccsrc/Framework/include/codec_stack_builder.hh deleted file mode 100644 index e3440de..0000000 --- a/ccsrc/Framework/include/codec_stack_builder.hh +++ /dev/null @@ -1,75 +0,0 @@ -/*! - * \file codec_stack_builder.hh - * \brief Header file for ITS protocol stack builder. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "codec_factory.hh" - -class Record_Type; //! TITAN forward declaration - -/*! - * \class codec_stack_builder - * \brief This class provides a factory class to create Codec class instances - */ -class codec_stack_builder { -private: //! \privatesection - static codec_stack_builder * _instance; //! Smart pointer to the unique instance of the logger framework - std::map _codecs; //! The list of the registered \see t_codec factories - - /*! - * \brief Default constructor - * Create a new instance of the codec_stack_builder class - * \private - */ - codec_stack_builder(){}; // can not be created manually -public: //! \publicsection - /*! - * \fn codec_stack_builder* get_instance(); - * \brief Accessor for the unique instance of the logger framework - * \static - */ - static codec_stack_builder *get_instance() { return _instance ? _instance : _instance = new codec_stack_builder(); }; - - /*! - * \fn void register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory); - * \brief Add a new codec factory - * \param[in] p_type The codec identifier (e.g. GN for the GeoNetworking codec...) - * \param[in] p_codec_factory A reference to the \see codec_factory - * \static - */ - static void register_codec_factory(const std::string &p_type, codec_factory *p_codec_factory) { - codec_stack_builder::get_instance()->_register_codec_factory(p_type, p_codec_factory); - }; - -private: //! \privatesection - /*! - * \fn void _register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory); - * \brief Add a new codec factory - * \param[in] p_type The codec identifier (e.g. GN for the GeoNetworking codec...) - * \param[in] p_codec_factory A reference to the \see codec_factory - */ - void _register_codec_factory(const std::string &p_type, codec_factory *p_codec_factory) { _codecs[p_type] = p_codec_factory; }; - -public: //! \publicsection - /*! - * \fn codec* get_codec(const char* p_codec_name); - * \brief Retrieve the specified codec name from the list of the registered codecs - * \param[in] p_codec_name The codec indentifier - * \return The pointer to the codec object on success, nullptr otherwise - */ - inline codec *get_codec(const char *p_codec_name) { // NOTE A virtual method cannot not be a template ==> polymorphism required here - typename std::map::const_iterator it = _codecs.find(p_codec_name); - if (it != _codecs.cend()) { - return it->second->create_codec(); - } - - return nullptr; - } -}; // End of class codec_stack_builder diff --git a/ccsrc/Framework/include/converter.hh b/ccsrc/Framework/include/converter.hh deleted file mode 100644 index 6070f2d..0000000 --- a/ccsrc/Framework/include/converter.hh +++ /dev/null @@ -1,387 +0,0 @@ -/*! - * \file converter.hh - * \brief Helper class for types converter. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include - -#include -#include -#include - -#include -#include // LONG_MAX, LLONG_MAX -#include -#include // time_t, struct tm, difftime, time, mktime - -/*! - * \class converter - * \brief This class provide a set of methods for types conversions - * \remark Singleton pattern - */ -class converter { - - /*! - * \brief Unique static object reference of this class - */ - static converter *instance; - - /*! - * \brief Default private ctor - */ - converter(){}; - /*! - * \brief Default private dtor - */ - ~converter() { - if (instance != NULL) { - delete instance; - instance = NULL; - } - }; - -public: /*! \publicsection */ - /*! - * \brief Public accessor to the single object reference - */ - inline static converter &get_instance() { - if (instance == NULL) - instance = new converter(); - return *instance; - }; - -public: - /*! - * \enum endian_t - * \brief Endianess style - */ - typedef enum { big_endian, little_endian } endian_t; - -public: - /*! - * \brief Convert a Binary Coded Decimal value into a binary value - * \param[in] p_value The BDC value - * \return The binary value - * \inline - */ - inline uint8_t bcd_to_bin(const uint8_t p_value) { return ((p_value / 16 * 10) + (p_value % 16)); }; - - /*! - * \brief Convert a binary value into a Binary Coded Decimal value - * \param[in] p_value The binary value - * \return The BCD value - * \inline - */ - inline uint8_t bin_to_bcd(const uint8_t p_value) { return ((p_value / 10 * 16) + (p_value % 10)); }; - - /*! - * \brief Swap two bytes length value (e.g. 0xCAFE becomes 0xFECA) - * \param[in] p_value The value to swap - * \return The swapped value - * \inline - */ - uint16_t swap(const uint16_t p_value); - inline int16_t swap(const int16_t p_value) { return static_cast(swap(static_cast(p_value))); }; - /*! - * \brief Swap four bytes length value (used for littel endian / big endian) - * \param[in] p_value The value to swap - * \return The swapped value - */ - uint32_t swap(const uint32_t p_value); - inline int32_t swap(const int32_t p_value) { return static_cast(swap(static_cast(p_value))); }; - - /*! - * \brief Convert a string into an hexadecimal string - * \param[in] p_value The string value - * \return The hexadecimal value - */ - std::string string_to_hexa(const std::string &p_value, const bool p_uppercase = false); - /*! - * \brief Convert a bytes array int32_t an hexadecimal string - * \param[in] p_value The bytes array value - * \return The hexadecimal value - */ - std::string bytes_to_hexa(const std::vector &p_value, const bool p_uppercase = false); - /*! - * \brief Convert an hexadecimal string into a bytes array - * \param[in] p_value The hexadecimal value - * \return The bytes array value - */ - std::vector hexa_to_bytes(const std::string &p_value); - - /*! - * \brief Convert a time in time_t format into a string formated according to RFC 822, 1036, 1123, 2822 - * \param[in] p_time The time to convert in time_t format - * \return The time string formated - * \see http://www.unixtimestamp.com/ - * @code - * std::string result = time_to_string(1489755780); - * result.compare("Fri, 17 Mar 2017 13:03:00 +0000") == 0 // When time zone is set to UTC - * @endcode - * \remark Use commands 1) timedatectl to change your machine timezone (e.g. sudo timedatectl set-timezone UTC to change machine timezone to UTC, 2) - * timedatectl list-timezones to get the list of the timezones) - */ - std::string time_to_string(const time_t p_time); - /*! - * \brief Convert a time in struct tm format into a string formated according to RFC 822, 1036, 1123, 2822 - * \param[in] p_time The time to convert in struct tm format - * \return The time string formated - * \see http://www.unixtimestamp.com/ - */ - std::string time_to_string(const struct tm &p_time); - - /*! - * \brief Convert a 16-bits integer (int16_t) into a bytes array - * \param[in] p_value The 16-bits integer value - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The bytes array value - */ - inline std::vector short_to_bytes(const int16_t p_value, const endian_t p_endianess = big_endian) const { - std::vector result(sizeof(short), 0x00); - for (int i = sizeof(short) - 1; i >= 0; i--) { - int offset = (sizeof(short) - 1 - i) * 8; - result[i] = static_cast((p_value >> offset) & 0xFF); - } // End of 'for' statement - return result; - }; // End of short_to_bytes - - /*! - * \brief Convert a bytes array into a 16-bits integer (int16_t) - * \param[in] p_value The bytes array - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The 16-bits integer on success, SHRT_MAX on error (wrong bytes array size) - */ - inline int16_t bytes_to_short(const std::vector &p_value, const endian_t p_endianess = big_endian) const { - // Sanity check - if (p_value.size() > sizeof(short)) { - return SHRT_MAX; - } - int16_t value = 0; - for (size_t i = 0; i < p_value.size(); i++) { - value = (value << 8) + (p_value[i] & 0xff); - } // End of 'for' statement - return value; - }; // End of bytes_to_short - - /*! - * \brief Convert a 32-bits integer (int32_t) into a bytes array - * \param[in] p_value The 32-bits integer value - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The bytes array value - */ - inline std::vector int_to_bytes(const int32_t p_value, const endian_t p_endianess = big_endian) const { - /*uint8_t bytes[sizeof(p_value)]; - std::copy( - static_cast(static_cast(&p_value)), - static_cast(static_cast(&p_value)) + sizeof(p_value), - bytes - ); - std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t));*/ - std::vector result(sizeof(int), 0x00); - for (int i = sizeof(int) - 1; i >= 0; i--) { - int offset = (sizeof(int) - 1 - i) * 8; - result[i] = static_cast((p_value >> offset) & 0xFF); - } // End of 'for' statement - return result; - }; // End of int_to_bytes - - /*! - * \brief Convert a bytes array into a 32-bits integer (int32_t) - * \param[in] p_value The bytes array - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The 32-bits integer on success, LONG_MAX on error (wrong bytes array size) - */ - inline int32_t bytes_to_int(const std::vector &p_value, const endian_t p_endianess = big_endian) const { - // Sanity check - if (p_value.size() > sizeof(int)) { - return INT_MAX; - } - int32_t value = 0; - for (size_t i = 0; i < p_value.size(); i++) { - value = (value << 8) + (p_value[i] & 0xff); - } // End of 'for' statement - return value; - // return *((int *)(&p_value[0])); - }; // End of bytes_to_int - - /*! - * \brief Convert a 64-bits integer (int64_t) into a bytes array - * \param[in] p_value The 64-bits integer value - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The bytes array value - */ - inline std::vector long_to_bytes(const int64_t p_value, const endian_t p_endianess = big_endian) const { - /*uint8_t bytes[sizeof(p_value)]; - std::copy( - static_cast(static_cast(&p_value)), - static_cast(static_cast(&p_value)) + sizeof(p_value), - bytes - ); - std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t));*/ - std::vector result(sizeof(int64_t), 0x00); - for (int i = sizeof(int64_t) - 1; i >= 0; i--) { - int offset = (sizeof(int64_t) - 1 - i) * 8; - result[i] = static_cast((p_value >> offset) & 0xFF); - } // End of 'for' statement - return result; - }; // End of long_to_bytes - - /*! - * \brief Convert a bytes array into a 64-bits integer (int64_t) - * \param[in] p_value The bytes array - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The 64-bits integer on success, LLONG_MAX on error (wrong bytes array size) - */ - inline int64_t bytes_to_long(const std::vector &p_value, const endian_t p_endianess = big_endian) const { - // Sanity check - if (p_value.size() > sizeof(int64_t)) { - return LLONG_MAX; - } - int64_t value = 0; - for (size_t i = 0; i < p_value.size(); i++) { - value = (value << 8) + (p_value[i] & 0xff); - } // End of 'for' statement - return value; - // return *((long *)(&p_value[0])); - }; // End of bytes_to_long - - /*! - * \brief Convert a float value into a bytes array - * \param[in] p_value The float value - * \return The bytes array value - */ - inline std::vector float_to_bytes(const float p_value) const { - uint8_t bytes[sizeof(p_value)]; - std::copy(static_cast(static_cast(&p_value)), - static_cast(static_cast(&p_value)) + sizeof(p_value), bytes); - std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t)); - return result; - }; // End of float_to_long - - /*! - * \brief Convert a bytes array into a float - * \param[in] p_value The bytes array - * \return The float value - */ - inline float bytes_to_float(const std::vector &p_value) const { return *((float *)(&p_value[0])); }; // End of bytes_to_float - - /*! - * \brief Convert a string into a bytes array - * \param[in] p_value The string value - * \return The bytes array value - */ - inline std::vector string_to_bytes(const std::string &p_value) const { - return std::vector(p_value.begin(), p_value.end()); - }; // End of string_to_bytes - - /*! - * \brief Convert a bytes array into a string - * \param[in] p_value The bytes array value - * \return The string value - */ - inline std::string bytes_to_string(const std::vector &p_value) const { - return std::string(p_value.begin(), p_value.end()); - }; // End of bytes_to_string - -public: - /*! - * \brief Convert a string into an integer - * \param[in] p_value The string value - * \return The integer value - */ - inline int32_t string_to_int(const std::string &p_value) const { - return std::stoi(p_value); - // return atoi(p_value.c_str()); - }; // End of string_to_int - - /*! - * \brief Convert an integer into a string - * \param[in] p_value The integer value - * \return The string value - */ - inline std::string int_to_string(const int32_t &p_value) const { - std::ostringstream ss; - ss << p_value; - return ss.str(); - }; // End of string_to_bytes - - /*! - * \brief Convert a string in to lower case - * \param[in/out] p_value The string value to convert - */ - inline void to_lower(std::string &p_value) { std::transform(p_value.begin(), p_value.end(), p_value.begin(), ::tolower); } - - /*! - * \brief Convert a string in to upper case - * \param[in/out] p_value The string value to convert - */ - inline void to_upper(std::string &p_value) { std::transform(p_value.begin(), p_value.end(), p_value.begin(), ::toupper); } - -public: - /*! - * \brief Returns a copy of the string, with leading and trailing special characters omitted - * \param[in] p_value The string value - * \param[in] p_trim_chars The special characters to be omitted. Default: ' ' and TAB - * \return The new string value - */ - std::string trim(const std::string &p_value, const std::string &p_trim_chars = " \t"); - - /*! - * \brief Convert the provided string into a list of arguments - * \param[in] p_value The string value - * \param[in] p_separator The separator sequence to use for the spliting process - * \return The item list - * \code{.cc} - * std::string str = "This is a test for spliting a string with a white spave"; - * std::vector tokens = converter::get_instance().split(str, " "); - * std::clog << "Tokens: " << std::endl; - * for (auto it = tokens.begin(); it != tokens.end(); ++it) { - * std::clog << " " << *it << std::endl; - * } - * \endcode - */ - std::vector split(const std::string &p_value, const std::string &p_separator); - - /*! - * \brief Convert the provided string into a list of arguments - * \param[in] p_value The string value - * \return The arguments list - * \code{.cc} - * std::string str = "--host localhost --port 12345 --duration -1"; - * std::vector tokens = converter::get_instance().split_arguments_line(str); - * std::clog << "Tokens: " << std::endl; - * for (auto it = tokens.begin(); it != tokens.end(); ++it) { - * std::clog << " " << *it << std::endl; - * } - * \endcode - */ - std::vector split_arguments_line(const std::string &p_value); - - /*! - * \brief Convert the provided buffer into a Base64 - * \param[in] p_value The buffer value - * \return The Base64 encoded buffert - */ - std::vector buffer_to_base64(const std::vector &p_value); - - /*! - * \brief Convert the provided Base64 buffer - * \param[in] p_value The buffer value - * \return The Base64 encoded buffert - */ - std::vector base64_to_buffer(const std::vector &p_value); - - static const std::string lut_u; - static const std::string lut_l; - static const std::string base64_enc_map; - -}; // End of class converter diff --git a/ccsrc/Framework/include/layer.hh b/ccsrc/Framework/include/layer.hh deleted file mode 100644 index d964e4d..0000000 --- a/ccsrc/Framework/include/layer.hh +++ /dev/null @@ -1,143 +0,0 @@ -/*! - * \file layer.hh - * \brief Header file for ITS abstract protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include - -#include "params.hh" - -class OCTETSTRING; //! Forward declaration of TITAN class -class BITSTRING; //! Forward declaration of TITAN class -class CHARSTRING; //! Forward declaration of TITAN class -class INTEGER; //! Forward declaration of TITAN class - -/*! - * \class layer - * \brief This class provides basic description of an ITS protocol layer - */ -class layer { - std::vector upperLayers; //! List of the upper protocol layers - std::vector lowerLayers; //! List of the lower protocol layers - -protected: - std::string type; //! Type description, it indicates the protocol type (e.g. CAM, DENM, GN, ETH, PCAP...) - -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the layer class - */ - explicit layer() : upperLayers(), lowerLayers(), type(std::string("")){}; - - /*! - * \brief Specialized constructor - * Create a new instance of the layer class with its type description - * \param[in] p_type The port type name (e.g. GN for the GeoNetworking layer) - * \remark This constructor is called by the layer factory - * \see layer_factory - */ - explicit layer(const std::string &p_type) : upperLayers(), lowerLayers(), type(std::string(p_type.begin(), p_type.end())){}; - - /*! - * \brief Default destructor - * \todo Remove logs - */ - virtual ~layer() { - // Double linked list, only remove layers in lowerLayers from the lowest one - std::for_each(lowerLayers.rbegin(), lowerLayers.rend(), [](layer *it) { delete it; }); - lowerLayers.clear(); - upperLayers.clear(); - }; - - /*! - * \fn void delete_layer(); - * \brief Delete this layer - * \todo To be implemented - */ - void delete_layer(){}; - -public: //! \publicsection - /*! - * \inline - * \fn void add_upper_layer(layer* p_layer); - * \brief Add a new layer in the list of the upper layer - * \param[in] p_layer The layer protocol to be removed - */ - inline void add_upper_layer(layer *p_layer) { - if (p_layer != NULL) { - upperLayers.push_back(p_layer); - p_layer->lowerLayers.push_back(this); - }; - }; - - /*! - * \fn void remove_upper_layer(layer* p_layer); - * \brief Remove the specified upper layer protocol from the list of the upper layer - * \param[in] p_layer The layer protocol to be removed - * \todo To be implemented - */ - void remove_upper_layer(layer *p_layer){}; - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - * \todo Remove the logs - * \virtual - */ - virtual void send_data(OCTETSTRING &p_data, params &p_params){}; - - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - * \todo Remove the logs - * \virtual - */ - virtual void receive_data(OCTETSTRING &p_data, params &p_params) {} - - /*! - * \inline - * \fn const std::string& to_string(); - * \brief Remove the specified upper layer protocol from the list of the upper layer - * \param[in] The layer protocol to be removed - */ - inline const std::string &to_string() const { return type; }; - -protected: //! \protectedsection - inline void to_all_layers(std::vector &layers, OCTETSTRING &data, params ¶ms) { - for (std::vector::const_iterator it = layers.cbegin(); it != layers.cend(); ++it) { - layer *p = *it; - p->receive_data(data, params); // FIXME BUG I - } // End of 'for' statement - }; - - inline void receive_to_all_layers(OCTETSTRING &data, params ¶ms) { - for (std::vector::const_iterator it = upperLayers.cbegin(); it != upperLayers.cend(); ++it) { - layer *p = *it; - p->receive_data(data, params); - } // End of 'for' statement - }; - - inline void send_to_all_layers(OCTETSTRING &data, params ¶ms) { - for (std::vector::const_iterator it = lowerLayers.cbegin(); it != lowerLayers.cend(); ++it) { - layer *p = *it; - p->send_data(data, params); - } // End of 'for' statement - }; -}; // End of class layer diff --git a/ccsrc/Framework/include/layer_factory.hh b/ccsrc/Framework/include/layer_factory.hh deleted file mode 100644 index 7b8ac35..0000000 --- a/ccsrc/Framework/include/layer_factory.hh +++ /dev/null @@ -1,121 +0,0 @@ -/*! - * \file layer_factory.hh - * \brief Header file for ITS abstract protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include - -#include "layer.hh" - -/*! - * \class layer_factory - * \brief This class provides a factory class to create layer class instances - * \abstract - */ -class layer_factory { -public: //! \publicsection - /*! - * \fn codec(); - * \brief Default constructor - */ - layer_factory(){}; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description (cf. remark) - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \remark The description below introduces layers stack in case of ITS project: - * CAM layer - * next_header : btpA|btpB (overwrite BTP.type) - * header_type : tsb|gbc - * header_sub_type : sh (single hop) - * DENM layer - * next_header : btpA|btpB (overwrite BTP.type) - * header_type : tsb|gbc - * BTP layer - * type : btpA|btpB - * destination port: dst_port - * source port : src_port - * device_mode : Set to 1 if the layer shall encapsulate upper layer PDU - * GN layer - * its_aid : ITS AID as defined by ETSI TS 102 965 V1.2.1. Default: 141 - * ll_address : GeoNetworking address of the Test System - * latitude : latitude of the Test System - * longitude : longitude of the Test System - * beaconing : Set to 1 if GnLayer shall start beaconing - * Beaconing timer expiry : expiry (ms) - * device_mode : Set to 1 if the layer shall encapsulate upper layer PDU - * secured_mode : Set to 1 if message exchanges shall be signed - * encrypted_mode : Set to 1 if message exchanges shall be encrypted - * NOTE: For signed & encrypted message exchanges, both secured_mode and encrypted_mode shall be set to 1 - * certificate : Certificate identifier the Test Adapter shall use - * secure_db_path : Path to the certificates and keys storage location - * hash : Hash algorithm to be used when secured mode is set - * Authorized values are SHA-256 or SHA-384 - * Default: SHA-256 - * signature : Signature algorithm to be used when secured mode is set - * Authorized values are NISTP-256, BP-256 and BP-384 - * Default: NISTP-256 - * cypher : Cyphering algorithm to be used when secured mode is set - * Ethernet layer - * mac_src :Source MAC address - * mac_bc :Broadcast address - * eth_type : Ethernet type - * Commsignia layer - * mac_src : Device MAC address, used to discard packets - * To indicate no filering, use the value 000000000000 - * mac_bc : Broadcast address - * eth_type : Ethernet type, used to discard packets - * target_host : Device address - * target_port : Device port - * source_port : Test System port - * interface_id: Interface id, used to discard packets - * tx_power : TX power (dB) - * UDP layer (IP/UDP based on Pcap) - * dst_ip : destination IPv4 address (aa.bb.cc.dd) - * dst_port: destination port - * src_ip : source IPv4 address (aa.bb.cc.dd) - * src_port: source port - * Pcap layer - * mac_src : Source MAC address, used to exclude from capture the acket sent by the Test System - * filter : Pcap filter (compliant with tcpdump syntax) - * E.g. filter=and ether src 04e548000001 - * Online mode: - * nic: Local NIC - * If set, online mode is used - * Offline mode (nic is present but not set): - * file : File to read - * frame_offset: Frame offset, used to skip packets with frame number < frame_offset - * time_offset : Time offset, used to skip packets with time offset < time_offset - * save_mode : 1 to save sent packet, 0 otherwise - * Here are some examples: - * GeoNetworking multiple component case: - * NodeB.geoNetworkingPort.params := -"GN(ll_address=04e548000001,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/COMMSIGNIA(mac_src=04e548000001,mac_bc=FFFFFFFFFFFF,eth_type=8947,target_host=10.200.1.101,target_port=7942,source_port=7943,its_aid=141,interface_id=2,tx_power=-32)/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=04e548000001,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=04e548000001,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01_short.pcap,filter=and -(udp port 30000 or udp port 7943))" NodeC.geoNetworkingPort.params := -"GN(ll_address=70b3d5791b48,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/COMMSIGNIA(mac_src=70b3d5791b48,mac_bc=FFFFFFFFFFFF,eth_type=8947,target_host=10.200.1.101,target_port=7942,source_port=7943,its_aid=141,interface_id=2,tx_power=-32)/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=70b3d5791b48,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=70b3d5791b48,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01_short.pcap,filter=and -(udp port 30000 or udp port 7943))" - * NodeB.geoNetworkingPort.params := -"GN(ll_address=04e548000001,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=04e548000001,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=04e548000001,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01.pcap,filter=and -ether src 04e548000001)" #NodeC.geoNetworkingPort.params := -"GN(ll_address=70b3d5791b48,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=70b3d5791b48,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=70b3d5791b48,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01.pcap,filter=and -ether src 70b3d5791b48)" - * UpperTester port based on UDP - * system.utPort.params := -"UT_GN/UDP(dst_ip=192.168.1.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=026f8338c1e5,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=0800275c4959,nic=enp0s8,filter=and -udp port 12346)" - * \pure - */ - virtual layer *create_layer(const std::string &p_type, const std::string &p_params) = 0; -}; // End of class layer_factory diff --git a/ccsrc/Framework/include/layer_stack_builder.hh b/ccsrc/Framework/include/layer_stack_builder.hh deleted file mode 100644 index 2d1b25a..0000000 --- a/ccsrc/Framework/include/layer_stack_builder.hh +++ /dev/null @@ -1,66 +0,0 @@ -/*! - * \file layer_stack_builder.hh - * \brief Header file for ITS protocol stack builder. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_factory.hh" - -/*! - * \class layer_stack_builder - * \brief This class provides a factory class to create Layer class instances - */ -class layer_stack_builder { -private: //! \privatesection - typedef std::map LayerFactoryMap; - - static layer_stack_builder * _instance; //! Smart pointer to the unique instance of the logger framework - std::map _layer_factories; //! The list of the registered \see t_layer factories - - /*! - * \brief Default constructor - * Create a new instance of the layer_stack_builder class - * \private - */ - layer_stack_builder(); // can not be created manually -public: //! \publicsection - /*! - * \fn layer_stack_builder* get_instance(); - * \brief Accessor for the unique instance of the logger framework - * \static - */ - static layer_stack_builder *get_instance(); - - /*! - * \fn void register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); - * \brief Add a new layer factory - * \param[in] p_type The layer identifier (e.g. GN for the GeoNetworking layer...) - * \param[in] p_layer_factory A reference to the \see layer_factory - * \static - */ - static void register_layer_factory(const std::string &p_type, layer_factory *p_layer_factory); - -private: //! \privatesection - /*! - * \fn void _register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); - * \brief Add a new layer factory - * \param[in] p_type The layer identifier (e.g. GN for the GeoNetworking layer...) - * \param[in] p_layer_factory A reference to the \see layer_factory - */ - void _register_layer_factory(const std::string &p_type, layer_factory *p_layer_factory); - -public: //! \publicsection - /*! - * \fn layer* create_layer_stack(const char* p_layer_stack_description); - * \brief Add a new layer factory - * \param[in] p_layer_stack_description A textual description of the layer to create - * \return The created layer object on success, nullptr otherwise - */ - layer *create_layer_stack(const char *p_layer_stack_description); -}; // End of class layer_stack_builder diff --git a/ccsrc/Framework/include/oer_codec.hh b/ccsrc/Framework/include/oer_codec.hh deleted file mode 100644 index 51a32cd..0000000 --- a/ccsrc/Framework/include/oer_codec.hh +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include "params.hh" - -class OCTETSTRING; -class CHARSTRING; -class BITSTRING; - -struct asn_TYPE_descriptor_s; -class asn1_recode_oer { -protected: - int xer2oer(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf); - int oer2xer(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf); - int recode(const asn_TYPE_descriptor_s &td, int from, int to, TTCN_Buffer &buf); -}; - -template class oer_codec : public asn1_recode_oer { -public: - virtual int encode(const TPDU &msg, BITSTRING &bits) = 0; - virtual int decode(const BITSTRING &bits, TPDU &msg) = 0; - -protected: - inline int _decode(const TTCN_Typedescriptor_t &ttcn, const asn_TYPE_descriptor_s &td, const BITSTRING &p_data, TPDU &msg) { - TTCN_Buffer buf(bit2oct(p_data)); - TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING); - int rc = oer2xer(td, buf); - if (rc > 0) { - msg.decode(ttcn, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); - rc = buf.get_len(); - } - return rc; - } - inline int _encode(const TTCN_Typedescriptor_t &ttcn, const asn_TYPE_descriptor_s &td, const TPDU &msg, BITSTRING &p_data) { - int rc = -1; - TTCN_Buffer buf; - TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING); - msg.encode(ttcn, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); - if (buf.get_len() > 0) { - rc = xer2oer(td, buf); - if (rc > 0) { - p_data = oct2bit(OCTETSTRING(buf.get_len(), buf.get_data())); - } - } - return rc; - } -}; - -#endif diff --git a/ccsrc/Framework/include/per_codec.hh b/ccsrc/Framework/include/per_codec.hh deleted file mode 100644 index 077d74a..0000000 --- a/ccsrc/Framework/include/per_codec.hh +++ /dev/null @@ -1,50 +0,0 @@ -/*! - * \file per_codec.hh - * \brief Header file for TITAN message to ASN.1 PER message codec. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "asn1_recode_per.hh" -#include "params.hh" - -class BITSTRING; //! Forward declaration of TITAN class -class TTCN_Typedescriptor_t; //! Forward declaration of TITAN class - -struct asn_TYPE_descriptor_s; //! Declare asn1c class - -/*! - * \class per_codec - * \brief This class provides the interface for all ASN.1 PER codecs. - * \remark This class uses asn1c external tool - */ -template class per_codec : public asn1_recode_per { -public: //! \publicsection - /*! - * \fn int encode(const TPDU& p_message, BITSTRING& p_bitstring); - * \brief Encode TITAN message into ASN.1 PER message - * \param[in] p_message The PDU message to encode - * \param[out] p_bitstring The encoded PDU message in bit string format - * \pure - */ - virtual int encode(const TPDU &p_message, BITSTRING &p_bitstring) = 0; - /*! - * \fn int decode(const BITSTRING& p_bitstring, TPDU& p_message); - * \brief Decode ASN.1 PER message into TITAN message - * \param[in] p_bitstring The network message in bit string format to decode - * \param[out] p_message The PDU message - * \pure - */ - virtual int decode(const BITSTRING &p_bitstring, TPDU &p_message) = 0; - -protected: //! \protectedsection - int _decode(const TTCN_Typedescriptor_t &ttcn, const asn_TYPE_descriptor_s &td, const BITSTRING &p_data, TPDU &msg); - int _encode(const TTCN_Typedescriptor_t &ttcn, const asn_TYPE_descriptor_s &td, const TPDU &msg, BITSTRING &p_data); -}; // End of class per_codec - -#include "per_codec.t.hh" diff --git a/ccsrc/Framework/include/per_codec.t.hh b/ccsrc/Framework/include/per_codec.t.hh deleted file mode 100644 index 6973dc6..0000000 --- a/ccsrc/Framework/include/per_codec.t.hh +++ /dev/null @@ -1,26 +0,0 @@ -#include - -template int per_codec::_decode(const TTCN_Typedescriptor_t &ttcn, const asn_TYPE_descriptor_s &td, const BITSTRING &p_data, TPDU &msg) { - TTCN_Buffer buf(bit2oct(p_data)); - TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING); - int rc = per2ber(td, buf); - if (rc > 0) { - msg.decode(ttcn, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); - rc = buf.get_len(); - } - return rc; -} - -template int per_codec::_encode(const TTCN_Typedescriptor_t &ttcn, const asn_TYPE_descriptor_s &td, const TPDU &msg, BITSTRING &p_data) { - int rc = -1; - TTCN_Buffer buf; - TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING); - msg.encode(ttcn, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); - if (buf.get_len() > 0) { - rc = ber2per(td, buf); - if (rc > 0) { - p_data = oct2bit(OCTETSTRING(buf.get_len(), buf.get_data())); - } - } - return rc; -} diff --git a/ccsrc/Framework/include/registration.hh b/ccsrc/Framework/include/registration.hh deleted file mode 100644 index df24ea1..0000000 --- a/ccsrc/Framework/include/registration.hh +++ /dev/null @@ -1,58 +0,0 @@ -/*! - * \file registration.hh - * \brief Header file for the control port registration functionality. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include - -/** - * \class registration - * \brief This class provides a way to register items and its object reference - * The registered items are accessible from any object (singleton pattern) - * \remark There is one limitation: each item is uniquely defined in the process - */ -template class registration { // TODO Refine the naming, derive from std::map - std::map _items; - - static registration *_instance; - -private: - registration() : _items(){}; // can not be created manually -public: - static registration &get_instance(); - - virtual ~registration() { - if (_instance != nullptr) - delete _instance; - }; - -public: - void add_item(const std::string &type, TItem *f); - TItem *get_item(const std::string &type); -}; // End of class registration - -template registration *registration::_instance = nullptr; - -// static functions -template registration ®istration::get_instance() { - return (_instance != nullptr) ? *_instance : *(_instance = new registration()); -} - -template void registration::add_item(const std::string &type, TItem *f) { _items[type] = f; } - -template TItem *registration::get_item(const std::string &type) { - typename std::map::const_iterator it = _items.find(type); - if (it == _items.cend()) { - return nullptr; - } - - return it->second; -} // End of class registration diff --git a/ccsrc/Framework/include/t_layer.hh b/ccsrc/Framework/include/t_layer.hh deleted file mode 100644 index 2934952..0000000 --- a/ccsrc/Framework/include/t_layer.hh +++ /dev/null @@ -1,70 +0,0 @@ -/*! - * \file t_layer.hh - * \brief Header file for ITS abstract protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer.hh" - -/*! - * \class t_layer - * \brief This class provides basic description of an ITS port protocol layer. - * A port protocol layer is the final layer which provides the access to the physical communication channel - * A port protocol layer derives from both a layer class and a template port class - */ -template class t_layer : public layer { - typedef std::vector TPortList; - typedef typename std::vector::iterator TPortListIterator; - - TPortList upperPorts; //! The list of the upper ports - -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the t_layer class - * \todo Remove logs - */ - explicit t_layer() : layer(), upperPorts(){}; - - /*! - * \brief Specialized constructor - * Create a new instance of the layer class with its type description - * \param[in] p_type The port type name (e.g. TCP for the TCP sockect based layer) - * \remark This constructor is called by the layer factory - * \see layer_factory - */ - explicit t_layer(const std::string &p_type) : layer(p_type), upperPorts(){}; - /*! - * \inline - * \fn void add_upper_port(TPort * p_port); - * \brief Add a new upper port layer - * \todo To be done - */ - inline void add_upper_port(TPort *p_port) { upperPorts.push_back(p_port); }; - /*! - * \fn void remove_upper_port(TPort*); - * \brief Remove the specified upper layer port protocol from the list of the upper layers - * \param[in] p_layer The layer protocol to be removed - */ - void remove_upper_port(TPort *); - -protected: //! \protectedsection - /*! - * \inline - * \fn void to_all_upper_ports(const TMessage& m, const params& param); - * \brief Forward the message to all available upper port layers - * \param[in] p_message The message to be forwarded - * \param[in] p_params Some lower layers parameters values when data was received - */ - template inline void to_all_upper_ports(const TMessage &p_message, const params &p_params) { - for (TPortListIterator it = upperPorts.begin(); it < upperPorts.end(); ++it) { - (*it)->receiveMsg(p_message, p_params); - } - } -}; // End of class t_layer diff --git a/ccsrc/Framework/module.mk b/ccsrc/Framework/module.mk deleted file mode 100644 index 8592d3c..0000000 --- a/ccsrc/Framework/module.mk +++ /dev/null @@ -1,6 +0,0 @@ -sources := src/base_time.cc \ - src/codec_stack_builder.cc \ - src/converter.cc \ - src/layer_factory.cc \ - src/params.cc -includes += ./include diff --git a/ccsrc/Framework/src/base_time.cc b/ccsrc/Framework/src/base_time.cc deleted file mode 100644 index 3833119..0000000 --- a/ccsrc/Framework/src/base_time.cc +++ /dev/null @@ -1,13 +0,0 @@ -/*! - * \file base_time.cc - * \brief Source file for the control port base_time functionality. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#include "base_time.hh" - -base_time* base_time::_instance = nullptr; diff --git a/ccsrc/Framework/src/codec_stack_builder.cc b/ccsrc/Framework/src/codec_stack_builder.cc deleted file mode 100644 index bb5a706..0000000 --- a/ccsrc/Framework/src/codec_stack_builder.cc +++ /dev/null @@ -1,4 +0,0 @@ -#include "codec_stack_builder.hh" - -codec_stack_builder* codec_stack_builder::_instance = NULL; - diff --git a/ccsrc/Framework/src/converter.cc b/ccsrc/Framework/src/converter.cc deleted file mode 100644 index e9ad4d1..0000000 --- a/ccsrc/Framework/src/converter.cc +++ /dev/null @@ -1,195 +0,0 @@ -#include "converter.hh" -#include -converter *converter::instance = NULL; - -uint16_t converter::swap(const uint16_t p_value) { - uint8_t *ptr = (uint8_t *)&p_value; - return (ptr[0] << 8) | ptr[1]; -} - -uint32_t converter::swap(const uint32_t p_value) { - uint8_t *ptr = (uint8_t *)&p_value; - return (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3]; -} - -const std::string converter::lut_u = "0123456789ABCDEF"; -const std::string converter::lut_l = "0123456789abcdef"; -std::string converter::string_to_hexa(const std::string &p_value, const bool p_uppercase) { - - std::string input(p_value); - std::for_each(input.begin(), input.end(), [](char &c) { c = std::toupper(c); }); - - std::string output; - uint32_t length = p_value.length(); - output.reserve(2 * length); - if (p_uppercase) { // TODO Use pointer to reduce code size - for (uint32_t i = 0; i < length; ++i) { - const uint8_t c = input[i]; - output.push_back(lut_u[c >> 4]); - output.push_back(lut_u[c & 15]); - } // End of 'for' statement - } else { - for (uint32_t i = 0; i < length; ++i) { - const uint8_t c = input[i]; - output.push_back(lut_l[c >> 4]); - output.push_back(lut_l[c & 15]); - } // End of 'for' statement - } - - return output; -} - -std::string converter::bytes_to_hexa(const std::vector &p_value, const bool p_uppercase) { - std::string ret; - ret.assign(p_value.size() * 2, ' '); - if (p_uppercase) { // TODO Use pointer to reduce code size - for (size_t i = 0; i < p_value.size(); i++) { - uint8_t c = p_value[i]; - ret[i * 2] = lut_u[c >> 4]; - ret[i * 2 + 1] = lut_u[c & 0xF]; - } - } else { - for (size_t i = 0; i < p_value.size(); i++) { - uint8_t c = p_value[i]; - ret[i * 2] = lut_l[c >> 4]; - ret[i * 2 + 1] = lut_l[c & 0xF]; - } - } - return ret; -} - -inline uint8_t char2byte(const char p_ch) { - size_t s = converter::lut_l.find(p_ch); - if (s == std::string::npos) { - if ((s = converter::lut_u.find(p_ch)) == std::string::npos) { - throw(std::length_error("")); - } - } - return s; -} - -std::vector converter::hexa_to_bytes(const std::string &p_value) { - // Sanity check - std::vector output; - size_t i = 0, idx = 0, outlen = (p_value.length() + 1) / 2; - - output.assign(outlen, 0x00); - try { - if (p_value.length() & 1) - output[idx++] = char2byte(p_value[i++]); - for (; idx < outlen; idx++) { - uint8_t b0 = char2byte(p_value[i++]); - uint8_t b1 = char2byte(p_value[i++]); - output[idx] = (b0 << 4) | b1; - } - } catch (const std::length_error &le) { - output.clear(); - } - return output; -} - -std::string converter::time_to_string(const time_t p_time) { - struct tm *t = std::localtime(&p_time); - return time_to_string(*t); -} - -std::string converter::time_to_string(const struct tm &p_time) { - char buffer[64] = {0}; - // Format: RFC 822, 1036, 1123, 2822 - std::strftime(buffer, 64, "%a, %d %b %Y %H:%M:%S %z", &p_time); - return std::string(buffer); -} - -std::string converter::trim(const std::string &str, const std::string &whitespace) { - size_t strBegin = str.find_first_not_of(whitespace); - if (strBegin == std::string::npos) - return ""; // no content - - size_t strEnd = str.find_last_not_of(whitespace); - size_t strRange = strEnd - strBegin + 1; - - return str.substr(strBegin, strRange); -} - -std::vector converter::split(const std::string &p_value, const std::string &p_separator) { - std::vector output; - std::size_t current, previous = 0; - current = p_value.find(p_separator); - while (current != std::string::npos) { - output.push_back(p_value.substr(previous, current - previous)); - previous = current + 1; - current = p_value.find(p_separator, previous); - } - output.push_back(p_value.substr(previous, current - previous)); - - return output; -} - -std::vector converter::split_arguments_line(const std::string &p_value) { - std::vector output; - std::string line = trim(p_value); - if (!line.empty() && (line[0] == '-')) { // Valid command line - size_t current = 0; - size_t next = (size_t)-1; - size_t pos = 0; - do { - if (line[pos + 1] == '-') { // -- - current = pos + 2; - } else { - current = pos + 1; - } - next = line.find("-", current); - std::string str(line.substr(pos, next - pos)); - output.push_back(str); - pos = next; - } while (next != std::string::npos); - } // else, invalid command line - return output; -} - -const std::string converter::base64_enc_map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -std::vector converter::buffer_to_base64(const std::vector &p_value) { - std::vector out; - - int val = 0, valb = -6; - for (unsigned char c : p_value) { - val = (val << 8) + c; - valb += 8; - while (valb >= 0) { - out.push_back(converter::base64_enc_map[(val >> valb) & 0x3F]); - valb -= 6; - } // End of 'while' statement - } // End of 'for' statement - if (valb > -6) { - out.push_back(converter::base64_enc_map[((val << 8) >> (valb + 8)) & 0x3F]); - } - while (out.size() % 4) { - out.push_back('='); - } // End of 'while' statement - - return out; -} - -std::vector converter::base64_to_buffer(const std::vector &p_value) { - std::vector out; - - std::vector T(256, -1); - for (int i = 0; i < 64; i++) { - T[converter::base64_enc_map[i]] = i; - } - - int val = 0, valb = -8; - for (unsigned char c : p_value) { - if (T[c] == -1) { - break; - } - val = (val << 6) + T[c]; - valb += 6; - if (valb >= 0) { - out.push_back((unsigned char)char((val >> valb) & 0xFF)); - valb -= 8; - } - } // End of 'for' statement - return out; -} diff --git a/ccsrc/Framework/src/layer_factory.cc b/ccsrc/Framework/src/layer_factory.cc deleted file mode 100644 index ef3ad21..0000000 --- a/ccsrc/Framework/src/layer_factory.cc +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include - -#include "layer_stack_builder.hh" - -#include "loggers.hh" - -layer_stack_builder *layer_stack_builder::_instance = NULL; - -// static functions -layer_stack_builder *layer_stack_builder::get_instance() { return _instance ? _instance : _instance = new layer_stack_builder(); } - -void layer_stack_builder::register_layer_factory(const std::string &p_type, layer_factory *p_layer_factory) { - layer_stack_builder::get_instance()->_register_layer_factory(p_type, p_layer_factory); -} - -// member functions -layer_stack_builder::layer_stack_builder() {} - -void layer_stack_builder::_register_layer_factory(const std::string &p_type, layer_factory *p_layer_factory) { _layer_factories[p_type] = p_layer_factory; } - -layer *layer_stack_builder::create_layer_stack(const char *p_layer_stack_description) { - loggers::get_instance().log(">>> layer_stack_builder::create_layer_stack: %s", p_layer_stack_description); - - layer *entry = NULL; // Initial layer (the first declared) - layer *up = NULL; // Upper layer - // Parse the layer description - try { - std::regex rgx("(\\w+)(\\((.*?)\\))?(\\/|$)"); - std::string str = p_layer_stack_description; - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::sregex_iterator end = std::sregex_iterator(); - for (std::sregex_iterator it = begin; it != end; ++it) { - std::smatch m = *it; - loggers::get_instance().log("layer_stack_builder::create_layer_stack: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), - m[2].str().c_str(), m[3].str().c_str()); - LayerFactoryMap::iterator i = _layer_factories.find(m[1].str()); - if (i == _layer_factories.end()) { - loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Unknown layer type", m[1].str().c_str()); - } - loggers::get_instance().log("layer_stack_builder::create_layer_stack: Create layer %s, %s", m[1].str().c_str(), m[3].str().c_str()); - layer *l = i->second->create_layer(m[1].str(), m[3].str()); - if (NULL == l) { - loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Layer creation error", m[1].str().c_str()); - } - - loggers::get_instance().log("layer_stack_builder::create_layer_stack: Setup layers for %s", l->to_string().c_str()); - l->add_upper_layer(up); - if (entry == NULL) { // Set the first declared layer - entry = l; - } - up = l; // Build the linked list of layers - } // End of 'for' statement - } catch (const std::logic_error &e) { - if (up) { // FIXME To be reviewed - up->delete_layer(); - up = NULL; - } - } - return entry; -} diff --git a/ccsrc/Framework/src/params.cc b/ccsrc/Framework/src/params.cc deleted file mode 100644 index 7ca6566..0000000 --- a/ccsrc/Framework/src/params.cc +++ /dev/null @@ -1,152 +0,0 @@ -/*! - * \file params.cc - * \brief Source file for the parameter dictionary. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#include -#include - -#include "loggers.hh" -#include "params.hh" - -const std::string& params::debug = std::string("debug"); - -const std::string& params::loopback = std::string("loopback"); - -const std::string& params::mac_src = std::string("mac_src"); -const std::string& params::mac_dst = std::string("mac_dst"); -const std::string& params::mac_bc = std::string("mac_bc"); -const std::string& params::eth_type = std::string("eth_type"); -const std::string& params::filter = std::string("filter"); -const std::string& params::beaconing = std::string("beaconing"); -const std::string& params::timestamp = std::string("timestamp"); -const std::string& params::station_type = std::string("station_type"); -const std::string& params::country = std::string("country"); -const std::string& params::type_of_address = std::string("type_of_address"); -const std::string& params::its_aid = std::string("its_aid"); -const std::string& params::ssp = std::string("ssp"); -const std::string& params::gn_payload = std::string("gn_payload"); -const std::string& params::gn_next_header = std::string("gnNextHeader"); -const std::string& params::gn_header_type = std::string("gnHeaderType"); -const std::string& params::gn_header_sub_type = std::string("gnHeaderSubtype"); -const std::string& params::gn_lifetime = std::string("gnLifetime"); -const std::string& params::gn_traffic_class = std::string("gnTrafficClass"); -const std::string& params::btp_type = std::string("btp_type"); -const std::string& params::btp_payload = std::string("btp_payload"); -const std::string& params::btp_destination_port = std::string("dst_port"); -const std::string& params::btp_info = std::string("btp_info"); - -const std::string& params::nic = std::string("nic"); -const std::string& params::latitude = std::string("latitude"); -const std::string& params::longitude = std::string("longitude"); -const std::string& params::ll_address = std::string("ll_address"); -const std::string& params::expiry = std::string("expiry"); - -const std::string& params::station_id = std::string("station_id"); - -const std::string& params::device_mode = std::string("device_mode"); -const std::string& params::secured_mode = std::string("secured_mode"); -const std::string& params::encrypted_mode = std::string("encrypted_mode"); -const std::string& params::enable_security_checks = std::string("enable_security_checks"); -const std::string& params::force_certificate = std::string("force_certificate"); -const std::string& params::certificate = std::string("certificate"); -const std::string& params::peer_certificate = std::string("peer_certificate"); -const std::string& params::sec_db_path = std::string("sec_db_path"); -const std::string& params::hash = std::string("hash"); -const std::string& params::signature = std::string("signature"); -const std::string& params::cypher = std::string("cypher"); -const std::string& params::distanceA = std::string("distanceA"); -const std::string& params::distanceB = std::string("distanceB"); -const std::string& params::angle = std::string("angle"); - -const std::string& params::payload_type = std::string("payload_type"); - -const std::string& params::next_header = std::string("next_header"); -const std::string& params::header_type = std::string("header_type"); -const std::string& params::header_sub_type = std::string("header_sub_type"); - -const std::string& params::interface_id = std::string("interface_id"); - -const std::string& params::uu_protocol = std::string("uu_protocol"); -const std::string& params::uu_transport = std::string("uu_transport"); -const std::string& params::pc5_layer = std::string("pc5_layer"); -const std::string& params::mqtt_topics = std::string("mqtt_topics"); -const std::string& params::mqtt_protocol = std::string("mqtt_protocol"); -const std::string& params::mqtt_client_id = std::string("mqtt_client_id"); - -const std::string& params::server = std::string("server"); -const std::string& params::port = std::string("port"); -const std::string& params::use_ssl = std::string("use_ssl"); -const std::string& params::mutual_auth = std::string("mutual_auth"); -const std::string& params::trusted_ca_list = std::string("trusted_ca_list"); - -const std::string& params::server_mode = std::string("server_mode"); -const std::string& params::local_port = std::string("local_port"); - -const std::string& params::method = std::string("method"); -const std::string& params::uri = std::string("uri"); -const std::string& params::host = std::string("host"); -const std::string& params::content_type = std::string("content_type"); - -// const std::string& params::sip_url = std::string("sip_url"); -// const std::string& params::sip_version = std::string("sip_version"); -// const std::string& params::payload = std::string("payload"); - -const std::string& params::codecs = std::string("codecs"); - -void params::convert(params &p_param, const std::string p_parameters) { - // Sanity checks - if (p_parameters.length() == 0) { - return; - } - loggers::get_instance().log(">>> params::convert: %s", p_parameters.c_str()); - // Extract parameters - try { - std::regex rgx("(\\w+)=(.*?)(,|$)"); - std::sregex_iterator begin(p_parameters.cbegin(), p_parameters.cend(), rgx); - std::sregex_iterator end = std::sregex_iterator(); - for (std::sregex_iterator it = begin; it != end; ++it) { - std::smatch m = *it; - loggers::get_instance().log("params::convert: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), - m[3].str().c_str()); - p_param.insert(std::pair(m[1].str(), m[2].str())); - } // End of 'for' statement - } catch (const std::logic_error &e) { - p_param.clear(); - } - loggers::get_instance().log("<<< params::convert"); -} - -void params::log() const { - loggers::get_instance().log("params::log"); - if (size() == 0) { - loggers::get_instance().log("\tEmpty"); - } else { - for (const_iterator it = cbegin(); it != cend(); ++it) { - loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str()); - } // End of 'for' statement - } -} - -void params::log() { - loggers::get_instance().log("params::log"); - if (size() == 0) { - loggers::get_instance().log("\tEmpty"); - } else { - for (const_iterator it = cbegin(); it != cend(); ++it) { - loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str()); - } // End of 'for' statement - } -} - -void params::reset() { - loggers::get_instance().log("params::reset"); - for (iterator it = begin(); it != end(); ++it) { - it->second.clear(); - } // End of 'for' statement -} diff --git a/ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.cc b/ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.cc index 6146ed7..eb9f647 100644 --- a/ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.cc +++ b/ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.cc @@ -41,11 +41,11 @@ namespace LibItsBtp__TestSystem { void BtpPort::user_map(const char *system_port) { loggers::get_instance().log(">>> BtpPort::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("BtpPort::user_map: %s", it->second.c_str()); // Setup parameters - params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + params_its::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless // Create layer _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); if (static_cast(_layer) == NULL) { @@ -78,8 +78,10 @@ namespace LibItsBtp__TestSystem { loggers::get_instance().set_stop_time(_time_key, duration); } - void BtpPort::receiveMsg(const LibItsBtp__TypesAndValues::BtpInd &p_ind, const params &p_params) { + void BtpPort::receiveMsg(const LibItsBtp__TypesAndValues::BtpInd& p_ind, const params& p_params) { // loggers::get_instance().log_msg(">>> BtpPort::receive_msg: ", p_ind); + const params_its& p = static_cast(p_params); + loggers::get_instance().log(">>> BtpPort::receive_msg: %s", p.btp_destination_port.c_str()); incoming_message(p_ind); } diff --git a/ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.hh b/ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.hh index cb00d76..21c8b0d 100644 --- a/ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.hh +++ b/ccsrc/Ports/LibIts_ports/BTP_ports/BtpPort.hh @@ -13,13 +13,13 @@ #include "LibItsBtp_TestSystem.hh" #include "layer.hh" -#include "params.hh" +#include "params_its.hh" namespace LibItsBtp__TestSystem { class BtpPort : public BtpPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; @@ -29,7 +29,7 @@ namespace LibItsBtp__TestSystem { void set_parameter(const char *parameter_name, const char *parameter_value); - void receiveMsg(const LibItsBtp__TypesAndValues::BtpInd &, const params &); + void receiveMsg(const LibItsBtp__TypesAndValues::BtpInd&, const params&); private: /* void Handle_Fd_Event(int fd, boolean is_readable, diff --git a/ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.cc b/ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.cc index d8fa778..8188d95 100644 --- a/ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.cc +++ b/ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.cc @@ -41,11 +41,11 @@ namespace LibItsCam__TestSystem { void CamPort::user_map(const char *system_port) { loggers::get_instance().log(">>> CamPort::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("CamPort::user_map: %s", it->second.c_str()); // Setup parameters - params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + params_its::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless // Create layer _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); if (static_cast(_layer) == NULL) { @@ -74,13 +74,15 @@ namespace LibItsCam__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } - void CamPort::receiveMsg(const LibItsCam__TypesAndValues::CamInd &p_ind, const params &p_params) { - loggers::get_instance().log_msg(">>> CamPort::receive_msg: ", p_ind); + void CamPort::receiveMsg(const LibItsCam__TypesAndValues::CamInd &p_ind, const params& p_params) { + //loggers::get_instance().log_msg(">>> CamPort::receive_msg: ", p_ind); + const params_its& p = static_cast(p_params); + loggers::get_instance().log(">>> CamPort::receive_msg: %s", p.station_id.c_str()); incoming_message(p_ind); } diff --git a/ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.hh b/ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.hh index f358382..9fd64d9 100644 --- a/ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.hh +++ b/ccsrc/Ports/LibIts_ports/CAM_ports/CamPort.hh @@ -13,13 +13,13 @@ #include "LibItsCam_TestSystem.hh" #include "layer.hh" -#include "params.hh" +#include "params_its.hh" namespace LibItsCam__TestSystem { class CamPort : public CamPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; @@ -29,7 +29,7 @@ namespace LibItsCam__TestSystem { void set_parameter(const char *parameter_name, const char *parameter_value); - void receiveMsg(const LibItsCam__TypesAndValues::CamInd &, const params &); + void receiveMsg(const LibItsCam__TypesAndValues::CamInd&, const params&); private: /* void Handle_Fd_Event(int fd, boolean is_readable, diff --git a/ccsrc/Ports/LibIts_ports/CAM_ports/UpperTesterPort_CAM.cc b/ccsrc/Ports/LibIts_ports/CAM_ports/UpperTesterPort_CAM.cc index 1d88b48..3b2b77a 100644 --- a/ccsrc/Ports/LibIts_ports/CAM_ports/UpperTesterPort_CAM.cc +++ b/ccsrc/Ports/LibIts_ports/CAM_ports/UpperTesterPort_CAM.cc @@ -37,7 +37,7 @@ namespace LibItsCam__TestSystem { void UpperTesterPort::user_map(const char *system_port) { loggers::get_instance().log(">>> UpperTesterPort_Cam::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("UpperTesterPort_Cam::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); diff --git a/ccsrc/Ports/LibIts_ports/CAM_ports/UpperTesterPort_CAM.hh b/ccsrc/Ports/LibIts_ports/CAM_ports/UpperTesterPort_CAM.hh index 1afc996..e8cd585 100644 --- a/ccsrc/Ports/LibIts_ports/CAM_ports/UpperTesterPort_CAM.hh +++ b/ccsrc/Ports/LibIts_ports/CAM_ports/UpperTesterPort_CAM.hh @@ -2,15 +2,15 @@ #define UpperTesterPort_CAM_HH #include "layer.hh" -#include "params.hh" +#include "params_its.hh" //============================================================================= #include "LibItsCam_TestSystem.hh" namespace LibItsCam__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; diff --git a/ccsrc/Ports/LibIts_ports/DENM_ports/DenmPort.cc b/ccsrc/Ports/LibIts_ports/DENM_ports/DenmPort.cc index b5266bd..6248727 100644 --- a/ccsrc/Ports/LibIts_ports/DENM_ports/DenmPort.cc +++ b/ccsrc/Ports/LibIts_ports/DENM_ports/DenmPort.cc @@ -69,17 +69,17 @@ namespace LibItsDenm__TestSystem { void DenmPort::user_stop() {} - void DenmPort::outgoing_send(const LibItsDenm__TypesAndValues::DenmReq &send_par) { + void DenmPort::outgoing_send(const LibItsDenm__TypesAndValues::DenmReq& send_par) { // loggers::get_instance().log_msg(">>> DenmPort::outgoing_send: payload=", send_par); float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } - void DenmPort::receiveMsg(const LibItsDenm__TypesAndValues::DenmInd &p_ind, const params &p_params) { + void DenmPort::receiveMsg(const LibItsDenm__TypesAndValues::DenmInd& p_ind, const params& p_params) { // loggers::get_instance().log_msg(">>> DenmPort::receive_msg: ", p_ind); incoming_message(p_ind); diff --git a/ccsrc/Ports/LibIts_ports/DENM_ports/DenmPort.hh b/ccsrc/Ports/LibIts_ports/DENM_ports/DenmPort.hh index 8d45dbd..c60c6df 100644 --- a/ccsrc/Ports/LibIts_ports/DENM_ports/DenmPort.hh +++ b/ccsrc/Ports/LibIts_ports/DENM_ports/DenmPort.hh @@ -29,7 +29,7 @@ namespace LibItsDenm__TestSystem { void set_parameter(const char *parameter_name, const char *parameter_value); - void receiveMsg(const LibItsDenm__TypesAndValues::DenmInd &, const params &); + void receiveMsg(const LibItsDenm__TypesAndValues::DenmInd&, const params&); private: /* void Handle_Fd_Event(int fd, boolean is_readable, diff --git a/ccsrc/Ports/LibIts_ports/DENM_ports/UpperTesterPort_DENM.cc b/ccsrc/Ports/LibIts_ports/DENM_ports/UpperTesterPort_DENM.cc index d24aa72..e3d59f3 100644 --- a/ccsrc/Ports/LibIts_ports/DENM_ports/UpperTesterPort_DENM.cc +++ b/ccsrc/Ports/LibIts_ports/DENM_ports/UpperTesterPort_DENM.cc @@ -36,7 +36,7 @@ namespace LibItsDenm__TestSystem { void UpperTesterPort::user_map(const char *system_port) { loggers::get_instance().log(">>> UpperTesterPort_Denm::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("UpperTesterPort_Denm::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); diff --git a/ccsrc/Ports/LibIts_ports/DENM_ports/UpperTesterPort_DENM.hh b/ccsrc/Ports/LibIts_ports/DENM_ports/UpperTesterPort_DENM.hh index d4f95ed..f0f9837 100644 --- a/ccsrc/Ports/LibIts_ports/DENM_ports/UpperTesterPort_DENM.hh +++ b/ccsrc/Ports/LibIts_ports/DENM_ports/UpperTesterPort_DENM.hh @@ -2,15 +2,15 @@ #define UpperTesterPort_DENM_HH #include "layer.hh" -#include "params.hh" +#include "params_its.hh" //============================================================================= #include "LibItsDenm_TestSystem.hh" namespace LibItsDenm__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; diff --git a/ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.cc b/ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.cc index c146944..929b376 100644 --- a/ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.cc +++ b/ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.cc @@ -45,7 +45,7 @@ namespace LibItsGeoNetworking__TestSystem { void GeoNetworkingPort::user_map(const char *system_port) { loggers::get_instance().log(">>> GeoNetworkingPort::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("GeoNetworkingPort::user_map: %s", it->second.c_str()); // Setup parameters @@ -81,13 +81,15 @@ namespace LibItsGeoNetworking__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } - void GeoNetworkingPort::receiveMsg(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingInd &p_ind, const params &p_params) { - loggers::get_instance().log_msg(">>> GeoNetworkingPort::receive_msg: ", p_ind); + void GeoNetworkingPort::receiveMsg(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingInd &p_ind, const params& p_params) { + //loggers::get_instance().log_msg(">>> GeoNetworkingPort::receive_msg: ", p_ind); + const params_its& p = static_cast(p_params); + loggers::get_instance().log(">>> GeoNetworkingPort::receive_msg: %s", p.ll_address.c_str()); // Sanity check if (!p_ind.is_bound()) { return; diff --git a/ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.hh b/ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.hh index 10dca94..1ef9d04 100644 --- a/ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.hh +++ b/ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.hh @@ -12,13 +12,13 @@ #include "LibItsGeoNetworking_TestSystem.hh" #include "layer.hh" -#include "params.hh" +#include "params_its.hh" namespace LibItsGeoNetworking__TestSystem { class GeoNetworkingPort : public GeoNetworkingPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; @@ -27,7 +27,7 @@ namespace LibItsGeoNetworking__TestSystem { ~GeoNetworkingPort(); void set_parameter(const char *parameter_name, const char *parameter_value); - void receiveMsg(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingInd &, const params &); + void receiveMsg(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingInd&, const params&); private: /* void Handle_Fd_Event(int fd, boolean is_readable, diff --git a/ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.cc b/ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.cc index 69bfcec..3903537 100644 --- a/ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.cc +++ b/ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.cc @@ -36,7 +36,7 @@ namespace LibItsGeoNetworking__TestSystem { void UpperTesterPort::user_map(const char *system_port) { loggers::get_instance().log(">>> UpperTesterPort_Gn::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("UpperTesterPort_Gn::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); diff --git a/ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.hh b/ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.hh index a6d9b80..108b5cb 100644 --- a/ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.hh +++ b/ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.hh @@ -1,15 +1,15 @@ #ifndef UpperTesterPort_GN_HH #define UpperTesterPort_GN_HH #include "layer.hh" -#include "params.hh" +#include "params_its.hh" //============================================================================= #include "LibItsGeoNetworking_TestSystem.hh" namespace LibItsGeoNetworking__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; diff --git a/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.cc b/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.cc index d28e93a..0696d26 100644 --- a/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.cc +++ b/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.cc @@ -2,9 +2,11 @@ #include "http_layer_factory.hh" #include "loggers.hh" -#include "LibItsHttp_TypesAndValues.hh" +#include "LibHttp_TypesAndValues.hh" -namespace LibItsHttp__TestSystem { +#include "params.hh" + +namespace LibHttp__TestSystem { HttpPort::HttpPort(const char *par_port_name) : HttpPort_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("HttpPort::outgoing_send") { @@ -69,7 +71,7 @@ namespace LibItsHttp__TestSystem { void HttpPort::user_stop() { loggers::get_instance().log(">>> HttpPort::user_stop"); } // End of user_stop method - void HttpPort::outgoing_send(const LibItsHttp__TypesAndValues::HttpMessage &send_par) { + void HttpPort::outgoing_send(const LibHttp__TypesAndValues::HttpMessage &send_par) { loggers::get_instance().log_msg(">>> HttpPort::outgoing_send: payload=", send_par); float duration; @@ -79,7 +81,7 @@ namespace LibItsHttp__TestSystem { loggers::get_instance().set_stop_time(_time_key, duration); } - void HttpPort::receiveMsg(const LibItsHttp__TypesAndValues::HttpMessage &p_ind, const params &p_params) { + void HttpPort::receiveMsg(const LibHttp__TypesAndValues::HttpMessage &p_ind, const params &p_params) { loggers::get_instance().log_msg(">>> HttpPort::receive_msg: ", p_ind); // Sanity check if (!p_ind.is_bound()) { @@ -89,4 +91,4 @@ namespace LibItsHttp__TestSystem { incoming_message(p_ind); } -} // namespace LibItsHttp__TestSystem +} // namespace LibHttp__TestSystem diff --git a/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.hh b/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.hh index 48024dd..b0e70a5 100644 --- a/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.hh +++ b/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.hh @@ -1,15 +1,15 @@ #pragma once -#include "LibItsHttp_TestSystem.hh" +#include "LibHttp_TestSystem.hh" #include "layer.hh" #include "params.hh" -namespace LibItsHttp__TypesAndValues { +namespace LibHttp__TypesAndValues { class HttpMessage; } -namespace LibItsHttp__TestSystem { +namespace LibHttp__TestSystem { class HttpPort : public HttpPort_BASE { params _cfg_params; @@ -22,7 +22,7 @@ namespace LibItsHttp__TestSystem { ~HttpPort(); void set_parameter(const char *parameter_name, const char *parameter_value); - void receiveMsg(const LibItsHttp__TypesAndValues::HttpMessage &p_ind, const params &p_params); + void receiveMsg(const LibHttp__TypesAndValues::HttpMessage &p_ind, const params &p_params); private: /* void Handle_Fd_Event(int fd, boolean is_readable, @@ -40,7 +40,7 @@ namespace LibItsHttp__TestSystem { void user_stop(); protected: - void outgoing_send(const LibItsHttp__TypesAndValues::HttpMessage &send_par); + void outgoing_send(const LibHttp__TypesAndValues::HttpMessage &send_par); }; // End of class HttpPort -} // namespace LibItsHttp__TestSystem +} // namespace LibHttp__TestSystem diff --git a/ccsrc/Ports/LibIts_ports/IVIM_ports/IvimPort.cc b/ccsrc/Ports/LibIts_ports/IVIM_ports/IvimPort.cc index 8a2d75d..4c5932d 100644 --- a/ccsrc/Ports/LibIts_ports/IVIM_ports/IvimPort.cc +++ b/ccsrc/Ports/LibIts_ports/IVIM_ports/IvimPort.cc @@ -41,7 +41,7 @@ namespace LibItsIvim__TestSystem { void IvimPort::user_map(const char *system_port) { loggers::get_instance().log(">>> IvimPort::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("IvimPort::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); @@ -71,7 +71,7 @@ namespace LibItsIvim__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } @@ -81,12 +81,12 @@ namespace LibItsIvim__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } - void IvimPort::receiveMsg(const LibItsIvim__TypesAndValues::IvimInd &p_ind, const params &p_params) { + void IvimPort::receiveMsg(const LibItsIvim__TypesAndValues::IvimInd& p_ind, const params& p_params) { loggers::get_instance().log_msg(">>> IvimPort::receive_msg: ", p_ind); incoming_message(p_ind); diff --git a/ccsrc/Ports/LibIts_ports/IVIM_ports/IvimPort.hh b/ccsrc/Ports/LibIts_ports/IVIM_ports/IvimPort.hh index 778592c..4048c4d 100644 --- a/ccsrc/Ports/LibIts_ports/IVIM_ports/IvimPort.hh +++ b/ccsrc/Ports/LibIts_ports/IVIM_ports/IvimPort.hh @@ -29,7 +29,7 @@ namespace LibItsIvim__TestSystem { void set_parameter(const char *parameter_name, const char *parameter_value); - void receiveMsg(const LibItsIvim__TypesAndValues::IvimInd &, const params &); + void receiveMsg(const LibItsIvim__TypesAndValues::IvimInd&, const params&); private: /* void Handle_Fd_Event(int fd, boolean is_readable, diff --git a/ccsrc/Ports/LibIts_ports/IVIM_ports/UpperTesterPort_IVIM.cc b/ccsrc/Ports/LibIts_ports/IVIM_ports/UpperTesterPort_IVIM.cc index 1d2a5f8..be1fdeb 100644 --- a/ccsrc/Ports/LibIts_ports/IVIM_ports/UpperTesterPort_IVIM.cc +++ b/ccsrc/Ports/LibIts_ports/IVIM_ports/UpperTesterPort_IVIM.cc @@ -36,7 +36,7 @@ namespace LibItsIvim__TestSystem { void UpperTesterPort::user_map(const char *system_port) { loggers::get_instance().log(">>> UpperTesterPort_Ivim::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("UpperTesterPort_Ivim::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); diff --git a/ccsrc/Ports/LibIts_ports/IVIM_ports/UpperTesterPort_IVIM.hh b/ccsrc/Ports/LibIts_ports/IVIM_ports/UpperTesterPort_IVIM.hh index 0e530eb..3015307 100644 --- a/ccsrc/Ports/LibIts_ports/IVIM_ports/UpperTesterPort_IVIM.hh +++ b/ccsrc/Ports/LibIts_ports/IVIM_ports/UpperTesterPort_IVIM.hh @@ -3,14 +3,14 @@ #define UpperTesterPort_IVIM_HH #include "layer.hh" -#include "params.hh" +#include "params_its.hh" #include "LibItsIvim_TestSystem.hh" namespace LibItsIvim__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; @@ -46,4 +46,4 @@ namespace LibItsIvim__TestSystem { }; } // namespace LibItsIvim__TestSystem -#endif \ No newline at end of file +#endif diff --git a/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/MapemSpatemPort.cc b/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/MapemSpatemPort.cc index d878041..9b335d5 100644 --- a/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/MapemSpatemPort.cc +++ b/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/MapemSpatemPort.cc @@ -41,7 +41,7 @@ namespace LibItsMapemSpatem__TestSystem { void MapemSpatemPort::user_map(const char *system_port) { loggers::get_instance().log(">>> MapemSpatemPort::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("MapemSpatemPort::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); @@ -71,7 +71,7 @@ namespace LibItsMapemSpatem__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } @@ -81,7 +81,7 @@ namespace LibItsMapemSpatem__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } diff --git a/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/UpperTesterPort_MapemSpatem.cc b/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/UpperTesterPort_MapemSpatem.cc index 7e11080..af0caa3 100644 --- a/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/UpperTesterPort_MapemSpatem.cc +++ b/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/UpperTesterPort_MapemSpatem.cc @@ -36,7 +36,7 @@ namespace LibItsMapemSpatem__TestSystem { void UpperTesterPort::user_map(const char *system_port) { loggers::get_instance().log(">>> UpperTesterPort_MapemSpatem::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("UpperTesterPort_MapemSpatem::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); diff --git a/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/UpperTesterPort_MapemSpatem.hh b/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/UpperTesterPort_MapemSpatem.hh index 4195d03..ed626c5 100644 --- a/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/UpperTesterPort_MapemSpatem.hh +++ b/ccsrc/Ports/LibIts_ports/MapemSpatem_ports/UpperTesterPort_MapemSpatem.hh @@ -5,13 +5,13 @@ #include "LibItsMapemSpatem_TestSystem.hh" #include "layer.hh" -#include "params.hh" +#include "params_its.hh" namespace LibItsMapemSpatem__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; diff --git a/ccsrc/Ports/LibIts_ports/Pki_ports/UpperTesterPkiPort.cc b/ccsrc/Ports/LibIts_ports/Pki_ports/UpperTesterPkiPort.cc index b516042..b93f873 100644 --- a/ccsrc/Ports/LibIts_ports/Pki_ports/UpperTesterPkiPort.cc +++ b/ccsrc/Ports/LibIts_ports/Pki_ports/UpperTesterPkiPort.cc @@ -41,7 +41,7 @@ namespace LibItsPki__TestSystem { void UpperTesterPkiPort::user_map(const char *system_port) { loggers::get_instance().log(">>> UpperTesterPkiPort_Pki::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("UpperTesterPkiPort_Pki::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); diff --git a/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorCodec.cc b/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorCodec.cc index 682a5e7..88dac5c 100644 --- a/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorCodec.cc +++ b/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorCodec.cc @@ -44,7 +44,7 @@ int ConfigRsuSimulatorCodec::encode_(const Base_Type &type, const TTCN_Typedescr return 0; } -int ConfigRsuSimulatorCodec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int ConfigRsuSimulatorCodec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); _params = params; diff --git a/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorCodec.hh b/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorCodec.hh index 7b31e47..1db3a34 100644 --- a/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorCodec.hh +++ b/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorCodec.hh @@ -1,7 +1,7 @@ #pragma once #include "codec.hh" -#include "params.hh" +#include "params_its.hh" class Record_Type; class Base_Type; @@ -20,5 +20,5 @@ public: virtual ~ConfigRsuSimulatorCodec(){}; virtual int encode(const Record_Type &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); }; // End of class ConfigRsuSimulatorCodec diff --git a/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorPort.cc b/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorPort.cc index f397e21..7975ba6 100644 --- a/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorPort.cc +++ b/ccsrc/Ports/LibIts_ports/RSUsSimulator_ports/ConfigRsuSimulatorPort.cc @@ -36,7 +36,7 @@ namespace ItsRSUsSimulator__TestSystem { void ConfigRsuSimulatorPort::user_map(const char *system_port) { loggers::get_instance().log(">>> ConfigRsuSimulatorPort::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("ConfigRsuSimulatorPort::user_map: %s", it->second.c_str()); // Setup parameters diff --git a/ccsrc/Ports/LibIts_ports/Rtcmem_ports/RtcmemPort.cc b/ccsrc/Ports/LibIts_ports/Rtcmem_ports/RtcmemPort.cc index 377289d..b276d95 100644 --- a/ccsrc/Ports/LibIts_ports/Rtcmem_ports/RtcmemPort.cc +++ b/ccsrc/Ports/LibIts_ports/Rtcmem_ports/RtcmemPort.cc @@ -41,7 +41,7 @@ namespace LibItsRtcmem__TestSystem { void RtcmemPort::user_map(const char *system_port) { loggers::get_instance().log(">>> RtcmemPort::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("RtcmemPort::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); @@ -71,7 +71,7 @@ namespace LibItsRtcmem__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } diff --git a/ccsrc/Ports/LibIts_ports/Rtcmem_ports/UpperTesterPort_Rtcmem.cc b/ccsrc/Ports/LibIts_ports/Rtcmem_ports/UpperTesterPort_Rtcmem.cc index 5ff19f8..231387c 100644 --- a/ccsrc/Ports/LibIts_ports/Rtcmem_ports/UpperTesterPort_Rtcmem.cc +++ b/ccsrc/Ports/LibIts_ports/Rtcmem_ports/UpperTesterPort_Rtcmem.cc @@ -36,7 +36,7 @@ namespace LibItsRtcmem__TestSystem { void UpperTesterPort::user_map(const char *system_port) { loggers::get_instance().log(">>> UpperTesterPort_Rtcmem::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("UpperTesterPort_Rtcmem::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); @@ -97,7 +97,7 @@ namespace LibItsRtcmem__TestSystem { loggers::get_instance().set_stop_time(_time_key, duration); } - void UpperTesterPort::receiveMsg(const Base_Type &p_ind, const params &p_params) { + void UpperTesterPort::receiveMsg(const Base_Type& p_ind, const params& p_params) { loggers::get_instance().log_msg(">>> UpperTesterPort_Rtcmem::receive_msg: ", p_ind); // Sanity check if (!p_ind.is_bound()) { diff --git a/ccsrc/Ports/LibIts_ports/Rtcmem_ports/UpperTesterPort_Rtcmem.hh b/ccsrc/Ports/LibIts_ports/Rtcmem_ports/UpperTesterPort_Rtcmem.hh index 7db3b7c..791cf8c 100644 --- a/ccsrc/Ports/LibIts_ports/Rtcmem_ports/UpperTesterPort_Rtcmem.hh +++ b/ccsrc/Ports/LibIts_ports/Rtcmem_ports/UpperTesterPort_Rtcmem.hh @@ -2,15 +2,15 @@ #define UpperTesterPort_Rtcmem_HH #include "layer.hh" -#include "params.hh" +#include "params_its.hh" //============================================================================= #include "LibItsRtcmem_TestSystem.hh" namespace LibItsRtcmem__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; @@ -20,7 +20,7 @@ namespace LibItsRtcmem__TestSystem { void set_parameter(const char *parameter_name, const char *parameter_value); - void receiveMsg(const Base_Type &, const params &); + void receiveMsg(const Base_Type&, const params&); private: /* void Handle_Fd_Event(int fd, boolean is_readable, diff --git a/ccsrc/Ports/LibIts_ports/SremSsem_ports/SremSsemPort.cc b/ccsrc/Ports/LibIts_ports/SremSsem_ports/SremSsemPort.cc index 365debd..80eca24 100644 --- a/ccsrc/Ports/LibIts_ports/SremSsem_ports/SremSsemPort.cc +++ b/ccsrc/Ports/LibIts_ports/SremSsem_ports/SremSsemPort.cc @@ -41,7 +41,7 @@ namespace LibItsSremSsem__TestSystem { void SremSsemPort::user_map(const char *system_port) { loggers::get_instance().log(">>> SremSsemPort::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("SremSsemPort::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); @@ -71,7 +71,7 @@ namespace LibItsSremSsem__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } @@ -81,7 +81,7 @@ namespace LibItsSremSsem__TestSystem { float duration; loggers::get_instance().set_start_time(_time_key); - params params; + params_its params; static_cast(_layer)->sendMsg(send_par, params); loggers::get_instance().set_stop_time(_time_key, duration); } diff --git a/ccsrc/Ports/LibIts_ports/SremSsem_ports/UpperTesterPort_SremSsem.cc b/ccsrc/Ports/LibIts_ports/SremSsem_ports/UpperTesterPort_SremSsem.cc index 96e48e3..3f597f9 100644 --- a/ccsrc/Ports/LibIts_ports/SremSsem_ports/UpperTesterPort_SremSsem.cc +++ b/ccsrc/Ports/LibIts_ports/SremSsem_ports/UpperTesterPort_SremSsem.cc @@ -36,7 +36,7 @@ namespace LibItsSremSsem__TestSystem { void UpperTesterPort::user_map(const char *system_port) { loggers::get_instance().log(">>> UpperTesterPort_SremSsem::user_map: %s", system_port); // Build layer stack - params::iterator it = _cfg_params.find(std::string("params")); + params_its::iterator it = _cfg_params.find(std::string("params")); if (it != _cfg_params.end()) { loggers::get_instance().log("UpperTesterPort_SremSsem::user_map: %s", it->second.c_str()); _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); diff --git a/ccsrc/Ports/LibIts_ports/SremSsem_ports/UpperTesterPort_SremSsem.hh b/ccsrc/Ports/LibIts_ports/SremSsem_ports/UpperTesterPort_SremSsem.hh index 8a55043..aaaadf9 100644 --- a/ccsrc/Ports/LibIts_ports/SremSsem_ports/UpperTesterPort_SremSsem.hh +++ b/ccsrc/Ports/LibIts_ports/SremSsem_ports/UpperTesterPort_SremSsem.hh @@ -5,13 +5,13 @@ #include "LibItsSremSsem_TestSystem.hh" #include "layer.hh" -#include "params.hh" +#include "params_its.hh" namespace LibItsSremSsem__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { - params _cfg_params; - params _layer_params; + params_its _cfg_params; + params_its _layer_params; layer * _layer; std::string _time_key; diff --git a/ccsrc/Protocols/BTP/btp_codec.cc b/ccsrc/Protocols/BTP/btp_codec.cc index 4746644..5e29b82 100644 --- a/ccsrc/Protocols/BTP/btp_codec.cc +++ b/ccsrc/Protocols/BTP/btp_codec.cc @@ -57,7 +57,7 @@ int btp_codec::encode_(const Base_Type &type, const TTCN_Typedescriptor_t &field return 0; } -int btp_codec::decode(const OCTETSTRING &data, LibItsBtp__TypesAndValues::BtpPacket &msg, params *params) { +int btp_codec::decode(const OCTETSTRING &data, LibItsBtp__TypesAndValues::BtpPacket &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); _params = params; @@ -91,15 +91,15 @@ int btp_codec::decode_(Base_Type &type, const TTCN_Typedescriptor_t &field_descr if (_type == btp_codec::btpA) { decode_(b.btpAHeader(), *b.btpAHeader().get_descriptor(), decoding_buffer); if (_params != NULL) { - (*_params)[params::btp_type] = std::string("btpA"); - (*_params)[params::btp_destination_port] = std::to_string(static_cast(b.btpAHeader().destinationPort())); + (*_params)[params_its::btp_type] = std::string("btpA"); + (*_params)[params_its::btp_destination_port] = std::to_string(static_cast(b.btpAHeader().destinationPort())); } } else if (_type == btp_codec::btpB) { decode_(b.btpBHeader(), *b.btpBHeader().get_descriptor(), decoding_buffer); if (_params != NULL) { - (*_params)[params::btp_type] = std::string("btpB"); - (*_params)[params::btp_destination_port] = std::to_string(static_cast(b.btpBHeader().destinationPort())); - (*_params)[params::btp_info] = std::to_string(static_cast(b.btpBHeader().destinationPortInfo())); + (*_params)[params_its::btp_type] = std::string("btpB"); + (*_params)[params_its::btp_destination_port] = std::to_string(static_cast(b.btpBHeader().destinationPort())); + (*_params)[params_its::btp_info] = std::to_string(static_cast(b.btpBHeader().destinationPortInfo())); } } else { // loggers::get_instance().error("btp_codec::decode_: Invalid BTP type"); // Cannot be reached @@ -114,7 +114,7 @@ int btp_codec::decode_(Base_Type &type, const TTCN_Typedescriptor_t &field_descr OCTETSTRING os(decoding_buffer.get_len() - decoding_buffer.get_pos(), decoding_buffer.get_data() + decoding_buffer.get_pos()); // loggers::get_instance().log_msg("btp_codec::decode_: s=", os); if (_params != NULL) { - (*_params)[params::btp_payload] = std::string(static_cast(oct2str(os))); + (*_params)[params_its::btp_payload] = std::string(static_cast(oct2str(os))); } if (os.lengthof() != 0) { dynamic_cast &>(type) = OPTIONAL(os); diff --git a/ccsrc/Protocols/BTP/btp_codec.hh b/ccsrc/Protocols/BTP/btp_codec.hh index e4570f6..e895543 100644 --- a/ccsrc/Protocols/BTP/btp_codec.hh +++ b/ccsrc/Protocols/BTP/btp_codec.hh @@ -2,7 +2,7 @@ #define BTPCODEC_H #include "codec.hh" -#include "params.hh" +#include "params_its.hh" class Base_Type; class TTCN_Typedescriptor_t; @@ -28,7 +28,7 @@ public: virtual ~btp_codec(){}; virtual int encode(const LibItsBtp__TypesAndValues::BtpPacket &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, LibItsBtp__TypesAndValues::BtpPacket &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, LibItsBtp__TypesAndValues::BtpPacket &, params_its *params = NULL); inline void set_btp_type(const btp_codec::BtpType p_btp_type) { _type = p_btp_type; }; diff --git a/ccsrc/Protocols/BTP/btp_layer.cc b/ccsrc/Protocols/BTP/btp_layer.cc index 33d6376..58000b9 100644 --- a/ccsrc/Protocols/BTP/btp_layer.cc +++ b/ccsrc/Protocols/BTP/btp_layer.cc @@ -10,28 +10,28 @@ btp_layer::btp_layer(const std::string &p_type, const std::string ¶m) : t_layer(p_type), _params(), _codec(), _device_mode{true} { loggers::get_instance().log(">>> btp_layer::btp_layer: %s, %s", to_string().c_str(), param.c_str()); // Setup parameters - params::convert(_params, param); + params_its::convert(_params, param); // Sanity check - params::const_iterator it = _params.find(params::btp_type); + params_its::const_iterator it = _params.find(params_its::btp_type); if (it == _params.cend()) { - _params[params::btp_type] = std::string("btpB"); + _params[params_its::btp_type] = std::string("btpB"); } - it = _params.find(params::btp_destination_port); + it = _params.find(params_its::btp_destination_port); if (it == _params.cend()) { - _params[params::btp_destination_port] = std::to_string(2001); + _params[params_its::btp_destination_port] = std::to_string(2001); } - it = _params.find(params::btp_info); + it = _params.find(params_its::btp_info); if (it == _params.cend()) { - _params[params::btp_info] = std::to_string(0); + _params[params_its::btp_info] = std::to_string(0); } - it = _params.find(params::device_mode); + it = _params.find(params_its::device_mode); if (it != _params.cend()) { _device_mode = (1 == converter::get_instance().string_to_int(it->second)); } } -void btp_layer::sendMsg(const LibItsBtp__TypesAndValues::BtpReq &p, params ¶ms) { +void btp_layer::sendMsg(const LibItsBtp__TypesAndValues::BtpReq &p, params_its ¶ms) { loggers::get_instance().log(">>> btp_layer::sendMsg"); // params.log(); @@ -41,7 +41,7 @@ void btp_layer::sendMsg(const LibItsBtp__TypesAndValues::BtpReq &p, params ¶ send_data(data, params); } -void btp_layer::send_data(OCTETSTRING &data, params ¶ms) { +void btp_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> btp_layer::send_data: ", data); params.log(); // TODO To be removed _params.log(); // TODO To be removed @@ -49,23 +49,23 @@ void btp_layer::send_data(OCTETSTRING &data, params ¶ms) { if (_device_mode) { LibItsBtp__TypesAndValues::BtpHeader header; std::string btp_type; - params::const_iterator it = params.find(params::next_header); + params_its::const_iterator it = params.find(params_its::next_header); if (it != params.cend()) { btp_type = it->second; } else { - btp_type = _params[params::btp_type]; + btp_type = _params[params_its::btp_type]; } loggers::get_instance().log("btp_layer::send_data: btp_type=%s", btp_type.c_str()); - int btp_destination_port = std::stoi(_params[params::btp_destination_port]); // Default value - it = params.find(params::btp_destination_port); + int btp_destination_port = std::stoi(_params[params_its::btp_destination_port]); // Default value + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { - btp_destination_port = std::stoi(params[params::btp_destination_port]); // Overwritting default value + btp_destination_port = std::stoi(params[params_its::btp_destination_port]); // Overwritting default value } loggers::get_instance().log("btp_layer::send_data: btp_destination_port=%d", btp_destination_port); if (btp_type.compare("btpA") == 0) { - header.btpAHeader() = LibItsBtp__TypesAndValues::BtpAHeader(btp_destination_port, std::stoi(_params[params::btp_info])); + header.btpAHeader() = LibItsBtp__TypesAndValues::BtpAHeader(btp_destination_port, std::stoi(_params[params_its::btp_info])); } else { - header.btpBHeader() = LibItsBtp__TypesAndValues::BtpBHeader(btp_destination_port, std::stoi(_params[params::btp_info])); + header.btpBHeader() = LibItsBtp__TypesAndValues::BtpBHeader(btp_destination_port, std::stoi(_params[params_its::btp_info])); } LibItsBtp__TypesAndValues::BtpPacket p(header, data); loggers::get_instance().log_msg("btp_layer::send_data: ", p); @@ -79,32 +79,32 @@ void btp_layer::send_data(OCTETSTRING &data, params ¶ms) { send_to_all_layers(data, params); } -void btp_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void btp_layer::receive_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> btp_layer::receive_data: ", data); - params.log(); + //p_params.log(); // Decode the payload LibItsBtp__TypesAndValues::BtpInd p; - loggers::get_instance().log("btp_layer::receive_data: Looking for %s", params::gn_next_header.c_str()); - params::const_iterator it = params.find(params::gn_next_header); - if (it != params.cend()) { + loggers::get_instance().log("btp_layer::receive_data: Looking for %s", params_its::gn_next_header.c_str()); + params_its::const_iterator it = p_params.find(params_its::gn_next_header); + if (it != p_params.cend()) { loggers::get_instance().log("btp_layer::receive_data: Call set_btp_type with %s/%d", it->second.c_str(), (it->second.compare("2") == 0) ? btp_codec::btpB : btp_codec::btpA); _codec.set_btp_type((it->second.compare("2") == 0) ? btp_codec::btpB : btp_codec::btpA); } - _codec.decode(data, p.msgIn(), ¶ms); + _codec.decode(data, p.msgIn(), &p_params); // Pass the BTP raw payload to the upper layers if any - it = params.find(params::btp_payload); - if (it != params.cend()) { + it = p_params.find(params_its::btp_payload); + if (it != p_params.cend()) { loggers::get_instance().log("btp_layer::receive_data: btp_payload=%s", it->second.c_str()); OCTETSTRING os(str2oct(CHARSTRING(it->second.c_str()))); - receive_to_all_layers(os, params); + receive_to_all_layers(os, p_params); } else { loggers::get_instance().warning("btp_layer::receive_data: No payload to pass to upper layers"); } // Pass it to the ports if any - // params.log(); - to_all_upper_ports(p, params); + // p_params.log(); + to_all_upper_ports(p, static_cast(p_params)); } btp_layer_factory btp_layer_factory::_f; diff --git a/ccsrc/Protocols/BTP/btp_layer.hh b/ccsrc/Protocols/BTP/btp_layer.hh index daaef45..de1426e 100644 --- a/ccsrc/Protocols/BTP/btp_layer.hh +++ b/ccsrc/Protocols/BTP/btp_layer.hh @@ -24,7 +24,7 @@ namespace LibItsBtp__TestSystem { * \brief This class provides description of ITS BTP protocol layer */ class btp_layer : public t_layer { - params _params; //! Layer parameters + params_its _params; //! Layer parameters btp_codec _codec; //! BTP codec bool _device_mode; //! Set to true if the BTP layer shall encapsulate the upper layer PDU public: //! \publicsection @@ -43,12 +43,12 @@ public: //! \publicsection virtual ~btp_layer(){}; /*! - * \fn void sendMsg(const LibItsBtp__TestSystem::BtpReq& p_btp_req, params& p_param); + * \fn void sendMsg(const LibItsBtp__TestSystem::BtpReq& p_btp_req, params_its& p_param); * \brief Send BTP message to the lower layers * \param[in] p_btp_req The BTP message to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - void sendMsg(const LibItsBtp__TypesAndValues::BtpReq &p_btp_req, params &p_param); + void sendMsg(const LibItsBtp__TypesAndValues::BtpReq &p_btp_req, params_its &p_param); /*! * \virtual @@ -57,7 +57,7 @@ public: //! \publicsection * \param[in] p_data The data to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - virtual void send_data(OCTETSTRING &data, params ¶ms); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); /*! * \virtual * \fn void receive_data(OCTETSTRING& data, params& params); @@ -65,5 +65,5 @@ public: //! \publicsection * \param[in] p_data The bytes formated data received * \param[in] p_params Some lower layers parameters values when data was received */ - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void receive_data(OCTETSTRING &data, params_its &info); }; // End of class btp_layer diff --git a/ccsrc/Protocols/CAM/cam_codec.cc b/ccsrc/Protocols/CAM/cam_codec.cc index 274f283..5dc0dae 100644 --- a/ccsrc/Protocols/CAM/cam_codec.cc +++ b/ccsrc/Protocols/CAM/cam_codec.cc @@ -15,7 +15,7 @@ int cam_codec::encode(const CAM__PDU__Descriptions::CAM &cam, OCTETSTRING &data) return rc; } -int cam_codec::decode(const OCTETSTRING &data, CAM__PDU__Descriptions::CAM &cam, params *params) { +int cam_codec::decode(const OCTETSTRING &data, CAM__PDU__Descriptions::CAM &cam, params_its *params) { loggers::get_instance().log_msg(">>> cam_codec::decode: ", data); int rc = asn_codec.decode(oct2bit(data), cam); diff --git a/ccsrc/Protocols/CAM/cam_codec.hh b/ccsrc/Protocols/CAM/cam_codec.hh index 0e5b5e4..cea9846 100644 --- a/ccsrc/Protocols/CAM/cam_codec.hh +++ b/ccsrc/Protocols/CAM/cam_codec.hh @@ -2,7 +2,7 @@ #include "cam_pdu_codec.hh" #include "codec.hh" -#include "params.hh" +#include "params_its.hh" class BITSTRING; //! Forward declaration of TITAN class class OCTETSTRING; //! Forward declaration of TITAN class @@ -19,5 +19,5 @@ public: virtual ~cam_codec(){}; virtual int encode(const CAM__PDU__Descriptions::CAM &cam, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, CAM__PDU__Descriptions::CAM &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, CAM__PDU__Descriptions::CAM &, params_its *params = NULL); }; diff --git a/ccsrc/Protocols/CAM_layers/cam_layer.cc b/ccsrc/Protocols/CAM_layers/cam_layer.cc index d5c6645..32f77d3 100644 --- a/ccsrc/Protocols/CAM_layers/cam_layer.cc +++ b/ccsrc/Protocols/CAM_layers/cam_layer.cc @@ -21,7 +21,7 @@ cam_layer::cam_layer(const std::string &p_type, const std::string ¶m) : t_la registration::get_instance().add_item(p_type, this); } -void cam_layer::sendMsg(const LibItsCam__TypesAndValues::CamReq &p, params ¶ms) { +void cam_layer::sendMsg(const LibItsCam__TypesAndValues::CamReq &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> cam_layer::sendMsg: ", p); // Encode CAM PDU @@ -34,13 +34,13 @@ void cam_layer::sendMsg(const LibItsCam__TypesAndValues::CamReq &p, params ¶ send_data(data, _params); } -void cam_layer::send_data(OCTETSTRING &data, params ¶ms) { +void cam_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> cam_layer::send_data: ", data); send_to_all_layers(data, params); } -void cam_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void cam_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> cam_layer::receive_data: ", data); // Sanity check @@ -60,63 +60,63 @@ void cam_layer::receive_data(OCTETSTRING &data, params ¶ms) { // Process lower layer data // recvTime - params::const_iterator it = params.find(params::timestamp); + params_its::const_iterator it = params.find(params_its::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader - it = params.find(params::gn_next_header); + it = params.find(params_its::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { p.gnNextHeader().set_to_omit(); } // gnHeaderType - it = params.find(params::gn_header_type); + it = params.find(params_its::gn_header_type); if (it != params.cend()) { p.gnHeaderType() = std::stoi(it->second); } else { p.gnHeaderType().set_to_omit(); } // gnHeaderSubtype - it = params.find(params::gn_header_sub_type); + it = params.find(params_its::gn_header_sub_type); if (it != params.cend()) { p.gnHeaderSubtype() = std::stoi(it->second); } else { p.gnHeaderSubtype().set_to_omit(); } // gnLifetime - it = params.find(params::gn_lifetime); + it = params.find(params_its::gn_lifetime); if (it != params.cend()) { p.gnLifetime() = std::stoi(it->second); } else { p.gnLifetime().set_to_omit(); } // gnTrafficClass - it = params.find(params::gn_traffic_class); + it = params.find(params_its::gn_traffic_class); if (it != params.cend()) { p.gnTrafficClass() = std::stoi(it->second); } else { p.gnTrafficClass().set_to_omit(); } // btpDestinationPort - it = params.find(params::btp_destination_port); + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { p.btpDestinationPort() = std::stoi(it->second); } else { p.btpDestinationPort().set_to_omit(); } // btpInfo - it = params.find(params::btp_info); + it = params.find(params_its::btp_info); if (it != params.cend()) { p.btpInfo() = std::stoi(it->second); } else { p.btpInfo().set_to_omit(); } // ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("cam_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -124,7 +124,7 @@ void cam_layer::receive_data(OCTETSTRING &data, params ¶ms) { p.ssp().set_to_omit(); } // its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { p.its__aid() = std::stoi(it->second); } else { diff --git a/ccsrc/Protocols/CAM_layers/cam_layer.hh b/ccsrc/Protocols/CAM_layers/cam_layer.hh index 12ef6a5..1f94911 100644 --- a/ccsrc/Protocols/CAM_layers/cam_layer.hh +++ b/ccsrc/Protocols/CAM_layers/cam_layer.hh @@ -24,8 +24,8 @@ namespace LibItsCam__TestSystem { * \brief This class provides description of ITS CAM protocol layer */ class cam_layer : public t_layer { - params _params; //! Layer parameters - cam_codec _codec; //! CAM codec + params_its _params; //! Layer parameters + cam_codec _codec; //! CAM codec public: //! \publicsection /*! * \brief Default constructor @@ -50,7 +50,7 @@ public: //! \publicsection * \param[in] p_cam_req The CA message to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - void sendMsg(const LibItsCam__TypesAndValues::CamReq &p_cam_req, params &p_params); + void sendMsg(const LibItsCam__TypesAndValues::CamReq &p_cam_req, params_its &p_params); /*! * \virtual @@ -59,7 +59,7 @@ public: //! \publicsection * \param[in] p_data The data to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - virtual void send_data(OCTETSTRING &data, params ¶ms); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); /*! * \virtual * \fn void receive_data(OCTETSTRING& data, params& params); @@ -67,7 +67,7 @@ public: //! \publicsection * \param[in] p_data The bytes formated data received * \param[in] p_params Some lower layers parameters values when data was received */ - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void receive_data(OCTETSTRING &data, params_its &info); int enable_secured_mode(const std::string &p_certificate_id, const boolean p_enforce_security); diff --git a/ccsrc/Protocols/Commsignia/commsignia_layer.cc b/ccsrc/Protocols/Commsignia/commsignia_layer.cc index 81fd554..dd36b98 100644 --- a/ccsrc/Protocols/Commsignia/commsignia_layer.cc +++ b/ccsrc/Protocols/Commsignia/commsignia_layer.cc @@ -29,7 +29,7 @@ commsignia_layer::commsignia_layer(const std::string &p_type, const std::string _params.insert(std::pair(std::string("eth_type"), "8947")); } _eth_type = converter::get_instance().hexa_to_bytes(_params[params::eth_type]); - it = _params.find(params::interface_id); + it = _params.find(params_its::interface_id); if (it == _params.cend()) { _params.insert(std::pair(std::string("interface_id"), "1")); // The interfce id for filtering & to send on } @@ -52,7 +52,7 @@ commsignia_layer::commsignia_layer(const std::string &p_type, const std::string //_params.log(); } -void commsignia_layer::send_data(OCTETSTRING &data, params ¶ms) { +void commsignia_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> commsignia_layer::send_data: ", data); OCTETSTRING buffer = OCTETSTRING(0, nullptr); @@ -65,7 +65,7 @@ void commsignia_layer::send_data(OCTETSTRING &data, params ¶ms) { } buffer += int2oct(0, 1); // Fix loggers::get_instance().log_msg("commsignia_layer::send_data: buffer: Injection=", buffer); - buffer += int2oct(std::stoi(_params[params::interface_id]), 4); + buffer += int2oct(std::stoi(_params[params_its::interface_id]), 4); loggers::get_instance().log_msg("commsignia_layer::send_data: buffer: Interface=", buffer); buffer += int2oct(std::stoi(_params[std::string("data_rate")]), 2); loggers::get_instance().log_msg("commsignia_layer::send_data: buffer: data_rate=", buffer); @@ -109,7 +109,7 @@ void commsignia_layer::send_data(OCTETSTRING &data, params ¶ms) { send_to_all_layers(buffer, params); } -void commsignia_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void commsignia_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> commsignia_layer::receive_data: ", data); const unsigned char *p = static_cast(data); @@ -169,8 +169,8 @@ void commsignia_layer::receive_data(OCTETSTRING &data, params ¶ms) { loggers::get_instance().log("commsignia_layer::receive_data: cbr_ant_2=%04x", r.u16_cbr_ant_2); // Filtering on antenna index loggers::get_instance().log("commsignia_layer::receive_data: compare %02x with %02x", r.u8_antenna, - static_cast(std::stoi(_params[params::interface_id]))); - if (r.u8_antenna != std::stoi(_params[params::interface_id])) { + static_cast(std::stoi(_params[params_its::interface_id]))); + if (r.u8_antenna != std::stoi(_params[params_its::interface_id])) { // Discard packet loggers::get_instance().warning("commsignia_layer::receive_data: Discard packet due to wrong antenna id"); // TODO return; diff --git a/ccsrc/Protocols/Commsignia/commsignia_layer.hh b/ccsrc/Protocols/Commsignia/commsignia_layer.hh index 5b2d52d..75e5e1b 100644 --- a/ccsrc/Protocols/Commsignia/commsignia_layer.hh +++ b/ccsrc/Protocols/Commsignia/commsignia_layer.hh @@ -10,7 +10,7 @@ */ #pragma once -#include "params.hh" +#include "params_its.hh" #include "t_layer.hh" class OCTETSTRING; //! Forward declaration of TITAN class @@ -108,7 +108,7 @@ class commsignia_layer : public layer { unsigned short type; } __attribute__((__packed__)) c2p_llc_hdr; - params _params; //! Layer parameters + params_its _params; //! Layer parameters std::vector _mac_src; //! Used to optimize filtering on source mac address in \see commsignia_layer::receive_data method std::vector _eth_type; //! Used to optimize filtering on ethernet type in \see commsignia_layer::receive_data method @@ -131,6 +131,6 @@ public: */ virtual ~commsignia_layer(){}; - virtual void send_data(OCTETSTRING &data, params ¶ms); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); + virtual void receive_data(OCTETSTRING &data, params_its &info); }; // End of class commsignia_layer diff --git a/ccsrc/Protocols/DENM/denm_codec.cc b/ccsrc/Protocols/DENM/denm_codec.cc index 2a70c8f..86a53bb 100644 --- a/ccsrc/Protocols/DENM/denm_codec.cc +++ b/ccsrc/Protocols/DENM/denm_codec.cc @@ -15,7 +15,7 @@ int denm_codec::encode(const DENM__PDU__Descriptions::DENM &p_denm, OCTETSTRING return rc; } -int denm_codec::decode(const OCTETSTRING &p_data, DENM__PDU__Descriptions::DENM &p_denm, params *params) { +int denm_codec::decode(const OCTETSTRING &p_data, DENM__PDU__Descriptions::DENM &p_denm, params_its *params) { loggers::get_instance().log_msg(">>> denm_codec::decode:", p_data); int rc = asn_codec.decode(oct2bit(p_data), p_denm); diff --git a/ccsrc/Protocols/DENM/denm_codec.hh b/ccsrc/Protocols/DENM/denm_codec.hh index 9590674..2490cb0 100644 --- a/ccsrc/Protocols/DENM/denm_codec.hh +++ b/ccsrc/Protocols/DENM/denm_codec.hh @@ -2,7 +2,7 @@ #include "codec.hh" #include "denm_pdu_codec.hh" -#include "params.hh" +#include "params_its.hh" class BITSTRING; class OCTETSTRING; @@ -22,5 +22,5 @@ public: virtual ~denm_codec(){}; virtual int encode(const DENM__PDU__Descriptions::DENM &denm, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, DENM__PDU__Descriptions::DENM &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, DENM__PDU__Descriptions::DENM &, params_its *params = NULL); }; diff --git a/ccsrc/Protocols/DENM_layers/denm_layer.cc b/ccsrc/Protocols/DENM_layers/denm_layer.cc index 921194f..535f0ed 100644 --- a/ccsrc/Protocols/DENM_layers/denm_layer.cc +++ b/ccsrc/Protocols/DENM_layers/denm_layer.cc @@ -19,7 +19,7 @@ denm_layer::denm_layer(const std::string &p_type, const std::string ¶m) : t_ registration::get_instance().add_item(p_type, this); } -void denm_layer::sendMsg(const LibItsDenm__TypesAndValues::DenmReq &p, params ¶ms) { +void denm_layer::sendMsg(const LibItsDenm__TypesAndValues::DenmReq &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> denm_layer::sendMsg: ", p); // Encode DENM PDU @@ -32,13 +32,13 @@ void denm_layer::sendMsg(const LibItsDenm__TypesAndValues::DenmReq &p, params &p send_data(data, _params); } -void denm_layer::send_data(OCTETSTRING &data, params ¶ms) { +void denm_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> denm_layer::send_data: ", data); // params.log(); send_to_all_layers(data, params); } -void denm_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void denm_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> denm_layer::receive_data: ", data); // Sanity check @@ -65,56 +65,56 @@ void denm_layer::receive_data(OCTETSTRING &data, params ¶ms) { p.recvTime().set_to_omit(); } // gnNextHeader - it = params.find(params::gn_next_header); + it = params.find(params_its::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { p.gnNextHeader().set_to_omit(); } // gnHeaderType - it = params.find(params::gn_header_type); + it = params.find(params_its::gn_header_type); if (it != params.cend()) { p.gnHeaderType() = std::stoi(it->second); } else { p.gnHeaderType().set_to_omit(); } // gnHeaderSubtype - it = params.find(params::gn_header_sub_type); + it = params.find(params_its::gn_header_sub_type); if (it != params.cend()) { p.gnHeaderSubtype() = std::stoi(it->second); } else { p.gnHeaderSubtype().set_to_omit(); } // gnLifetime - it = params.find(params::gn_lifetime); + it = params.find(params_its::gn_lifetime); if (it != params.cend()) { p.gnLifetime() = std::stoi(it->second); } else { p.gnLifetime().set_to_omit(); } // gnTrafficClass - it = params.find(params::gn_traffic_class); + it = params.find(params_its::gn_traffic_class); if (it != params.cend()) { p.gnTrafficClass() = std::stoi(it->second); } else { p.gnTrafficClass().set_to_omit(); } // btpDestinationPort - it = params.find(params::btp_destination_port); + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { p.btpDestinationPort() = std::stoi(it->second); } else { p.btpDestinationPort().set_to_omit(); } // btpInfo - it = params.find(params::btp_info); + it = params.find(params_its::btp_info); if (it != params.cend()) { p.btpInfo() = std::stoi(it->second); } else { p.btpInfo().set_to_omit(); } // ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("denm_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -122,7 +122,7 @@ void denm_layer::receive_data(OCTETSTRING &data, params ¶ms) { p.ssp().set_to_omit(); } // its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { p.its__aid() = std::stoi(it->second); } else { diff --git a/ccsrc/Protocols/DENM_layers/denm_layer.hh b/ccsrc/Protocols/DENM_layers/denm_layer.hh index 8997e67..d5a095c 100644 --- a/ccsrc/Protocols/DENM_layers/denm_layer.hh +++ b/ccsrc/Protocols/DENM_layers/denm_layer.hh @@ -24,7 +24,7 @@ namespace LibItsDenm__TestSystem { * \brief This class provides description of ITS DENM protocol layer */ class denm_layer : public t_layer { - params _params; //! Layer parameters + params_its _params; //! Layer parameters denm_codec _codec; //! DENM codec public: //! \publicsection /*! @@ -50,7 +50,7 @@ public: //! \publicsection * \param[in] p_denm_req The DEN message to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - void sendMsg(const LibItsDenm__TypesAndValues::DenmReq &p_denm_req, params ¶ms); + void sendMsg(const LibItsDenm__TypesAndValues::DenmReq &p_denm_req, params_its ¶ms); /*! * \virtual @@ -59,7 +59,7 @@ public: //! \publicsection * \param[in] p_data The data to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - virtual void send_data(OCTETSTRING &data, params ¶ms); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); /*! * \virtual * \fn void receive_data(OCTETSTRING& data, params& params); @@ -67,7 +67,7 @@ public: //! \publicsection * \param[in] p_data The bytes formated data received * \param[in] p_params Some lower layers parameters values when data was received */ - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void receive_data(OCTETSTRING &data, params_its &info); int enable_secured_mode(const std::string &p_certificate_id, const boolean p_enforce_security); diff --git a/ccsrc/Protocols/ETH/ethernet_layer.cc b/ccsrc/Protocols/ETH/ethernet_layer.cc deleted file mode 100644 index f4004de..0000000 --- a/ccsrc/Protocols/ETH/ethernet_layer.cc +++ /dev/null @@ -1,82 +0,0 @@ -#include "ethernet_layer_factory.hh" - -#include "loggers.hh" - -ethernet_layer::ethernet_layer(const std::string & p_type, const std::string & param) : layer(p_type), _params() { - loggers::get_instance().log(">>> ethernet_layer::ethernet_layer: %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - params::const_iterator it = _params.find("mac_src"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("mac_src"), "000000000000")); - } - it = _params.find("mac_bc"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("mac_bc"), "FFFFFFFFFFFF")); - } - it = _params.find("eth_type"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("eth_type"), "8947")); - } - //_params.log(); -} - -void ethernet_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> ethernet_layer::send_data: ", data); - - OCTETSTRING eth; - // Destination MAC address - params::const_iterator it = params.find(params::mac_dst); // Find in provided parameters, params - if (it != params.cend()) { - eth = str2oct(CHARSTRING(it->second.c_str())); - } else { - it = _params.find(params::mac_dst); - if (it != _params.cend()) { - eth = str2oct(CHARSTRING(it->second.c_str())); - } else { - eth = str2oct(CHARSTRING(_params[params::mac_bc].c_str())); - } - } - // Source MAC address - it = params.find(params::mac_src); // Find in provided parameters, params - if (it != params.cend()) { - eth += str2oct(CHARSTRING(it->second.c_str())); - } else { - eth += str2oct(CHARSTRING(_params[params::mac_src].c_str())); - } - // Ethernet type - it = params.find(params::eth_type); // Find in layer parameters - if (it != params.cend()) { - eth += str2oct(CHARSTRING(it->second.c_str())); - } else { - eth += str2oct(CHARSTRING(_params[params::eth_type].c_str())); - } - - eth += data; - send_to_all_layers(eth, params); -} - -void ethernet_layer::receive_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> ethernet_layer::receive_data: ", data); - - // Extract dest MAC Address - OCTETSTRING dst = OCTETSTRING(6, static_cast(data)); - //loggers::get_instance().log_msg("ethernet_layer::receive_data: dst: ", dst); - // Extract source MAC Address - OCTETSTRING src = OCTETSTRING(6, 6 + static_cast(data)); - //loggers::get_instance().log_msg("ethernet_layer::receive_data: src: ", src); - // Extract ethertype - OCTETSTRING proto = OCTETSTRING(2, 2 + static_cast(data)); - //loggers::get_instance().log_msg("ethernet_layer::receive_data: proto: ", proto); - data = OCTETSTRING(data.lengthof() - 14, 14 + static_cast(data)); - // Update params - CHARSTRING s = oct2str(dst); - params.insert(std::pair(params::mac_dst, std::string(static_cast(s)))); - s = oct2str(src); - params.insert(std::pair(params::mac_src, std::string(static_cast(s)))); - //loggers::get_instance().log_msg("ethernet_layer::receive_data: payload for upper layer:", data); - - receive_to_all_layers(data, params); -} - -ethernet_layer_factory ethernet_layer_factory::_f; diff --git a/ccsrc/Protocols/ETH/ethernet_layer.hh b/ccsrc/Protocols/ETH/ethernet_layer.hh deleted file mode 100644 index e4d8b35..0000000 --- a/ccsrc/Protocols/ETH/ethernet_layer.hh +++ /dev/null @@ -1,48 +0,0 @@ -/*! - * \file udp_layer.hh - * \brief Header file for ITS UDP/IP protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "params.hh" -#include "t_layer.hh" - -class ethernet_layer : public layer { - params _params; //! Layer parameters - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the ethernet_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - ethernet_layer(const std::string &p_type, const std::string ¶m); - /*! - * \brief Default destructor - */ - virtual ~ethernet_layer(){}; - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING &data, params ¶ms); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING &data, params &info); -}; // End of class ethernet_layer diff --git a/ccsrc/Protocols/ETH/ethernet_layer_factory.hh b/ccsrc/Protocols/ETH/ethernet_layer_factory.hh deleted file mode 100644 index 7adf9f4..0000000 --- a/ccsrc/Protocols/ETH/ethernet_layer_factory.hh +++ /dev/null @@ -1,42 +0,0 @@ -/*! - * \file ethernet_layer_factory.hh - * \brief Header file for ITS Ethernet protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "ethernet_layer.hh" - -/*! - * \class ethernet_layer_factory - * \brief This class provides a factory class to create an ethernet_layer class instance - */ -class ethernet_layer_factory : public layer_factory { - static ethernet_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the ethernet_layer_factory class - * \remark The ETH layer identifier is ETH - */ - ethernet_layer_factory() { - // register factory - layer_stack_builder::register_layer_factory("ETH", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer *create_layer(const std::string &p_type, const std::string &p_param) { return new ethernet_layer(p_type, p_param); }; -}; // End of class ethernet_layer_factory diff --git a/ccsrc/Protocols/ETH/module.mk b/ccsrc/Protocols/ETH/module.mk deleted file mode 100644 index eb2f4a8..0000000 --- a/ccsrc/Protocols/ETH/module.mk +++ /dev/null @@ -1,3 +0,0 @@ -sources := ethernet_layer.cc -includes := . - diff --git a/ccsrc/Protocols/GeoNetworking/geonetworking_codec.cc b/ccsrc/Protocols/GeoNetworking/geonetworking_codec.cc index b883063..be8b6b8 100644 --- a/ccsrc/Protocols/GeoNetworking/geonetworking_codec.cc +++ b/ccsrc/Protocols/GeoNetworking/geonetworking_codec.cc @@ -144,7 +144,7 @@ int geonetworking_codec::encode_(const Base_Type &type, const TTCN_Typedescripto return 0; } -int geonetworking_codec::decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu &msg, params *params) { +int geonetworking_codec::decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); @@ -157,11 +157,11 @@ int geonetworking_codec::decode(const OCTETSTRING &data, LibItsGeoNetworking__Ty loggers::get_instance().log("geonetworking_codec::decode: After decoding, payload: plLength=%d", _dc.get_length()); // Set layer parameters if (_params != NULL) { - (*_params)[params::gn_next_header] = std::to_string((unsigned int)_dc.get_next_header()); - (*_params)[params::gn_header_type] = std::to_string((unsigned int)_dc.get_header_type()); - (*_params)[params::gn_header_sub_type] = std::to_string((unsigned int)_dc.get_header_sub_type()); - (*_params)[params::gn_traffic_class] = std::to_string((unsigned int)_dc.get_traffic_class()); - (*_params)[params::gn_lifetime] = std::to_string(_dc.get_lifetime()); + (*_params)[params_its::gn_next_header] = std::to_string((unsigned int)_dc.get_next_header()); + (*_params)[params_its::gn_header_type] = std::to_string((unsigned int)_dc.get_header_type()); + (*_params)[params_its::gn_header_sub_type] = std::to_string((unsigned int)_dc.get_header_sub_type()); + (*_params)[params_its::gn_traffic_class] = std::to_string((unsigned int)_dc.get_traffic_class()); + (*_params)[params_its::gn_lifetime] = std::to_string(_dc.get_lifetime()); params->log(); } @@ -247,17 +247,17 @@ int geonetworking_codec::decode_(Base_Type &type, const TTCN_Typedescriptor_t &f if (_dc.get_length() != 0) { if ((unsigned char)s.lengthof() <= _dc.get_length()) { os = OCTETSTRING(s.lengthof(), p); - (*_params)[params::gn_payload] = static_cast(oct2str(os)); + (*_params)[params_its::gn_payload] = static_cast(oct2str(os)); } else { os = OCTETSTRING(_dc.get_length(), p); - (*_params)[params::gn_payload] = static_cast(oct2str(os)); + (*_params)[params_its::gn_payload] = static_cast(oct2str(os)); } } else { os = OCTETSTRING(0, nullptr); - (*_params)[params::gn_payload] = ""; + (*_params)[params_its::gn_payload] = ""; } // loggers::get_instance().log_msg("geonetworking_codec::decode_: Payload: os: ", os); - // loggers::get_instance().log("geonetworking_codec::decode_: Payload: '%s'", (*_params)[params::gn_payload].c_str()); + // loggers::get_instance().log("geonetworking_codec::decode_: Payload: '%s'", (*_params)[params_its::gn_payload].c_str()); if (os.lengthof() != 0) { dynamic_cast &>(type) = OPTIONAL(os); // loggers::get_instance().log_msg("geonetworking_codec::decode_: Set OPTIONAL to ", type); diff --git a/ccsrc/Protocols/GeoNetworking/geonetworking_codec.hh b/ccsrc/Protocols/GeoNetworking/geonetworking_codec.hh index 1cca7ec..c63b5ec 100644 --- a/ccsrc/Protocols/GeoNetworking/geonetworking_codec.hh +++ b/ccsrc/Protocols/GeoNetworking/geonetworking_codec.hh @@ -3,7 +3,7 @@ #include #include "codec.hh" -#include "params.hh" +#include "params_its.hh" #include "decoding_context.hh" #include "encoding_context.hh" @@ -42,7 +42,7 @@ public: virtual ~geonetworking_codec(){}; virtual int encode(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu &msg, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu &msg, params *params = NULL); + virtual int decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu &msg, params_its *params = NULL); int encode(const LibItsGeoNetworking__TypesAndValues::GnNonSecuredPacket &p_gnNonSecuredPacket, OCTETSTRING & data); // TODO Duplicate code with virtual encode, to be enhanced diff --git a/ccsrc/Protocols/GeoNetworking/geonetworking_layer.cc b/ccsrc/Protocols/GeoNetworking/geonetworking_layer.cc index 7349a20..5692eb5 100644 --- a/ccsrc/Protocols/GeoNetworking/geonetworking_layer.cc +++ b/ccsrc/Protocols/GeoNetworking/geonetworking_layer.cc @@ -59,81 +59,81 @@ void geonetworking_layer::init(const std::string &p_type, const std::string &p_p loggers::get_instance().log(">>> geonetworking_layer::init: %s, %s", to_string().c_str(), p_param.c_str()); // Setup parameters - params::convert(_params, p_param); + params_its::convert(_params, p_param); // Sanity checks - params::const_iterator it = _params.find(params::latitude); + params_its::const_iterator it = _params.find(params_its::latitude); if (it != _params.cend()) { _latitude = converter::get_instance().string_to_int(it->second); } - it = _params.find(params::longitude); + it = _params.find(params_its::longitude); if (it != _params.cend()) { _longitude = converter::get_instance().string_to_int(it->second); } OCTETSTRING ll_address; - it = _params.find(params::ll_address); + it = _params.find(params_its::ll_address); if (it != _params.cend()) { ll_address = str2oct(CHARSTRING(it->second.c_str())); } INTEGER distanceA = 1000; // 1km - it = _params.find(params::distanceA); + it = _params.find(params_its::distanceA); if (it != _params.cend()) { distanceA = converter::get_instance().string_to_int(it->second); } INTEGER distanceB = 1000; // 1Km - it = _params.find(params::distanceB); + it = _params.find(params_its::distanceB); if (it != _params.cend()) { distanceB = converter::get_instance().string_to_int(it->second); } INTEGER angle = 0; - it = _params.find(params::angle); + it = _params.find(params_its::angle); if (it != _params.cend()) { angle = converter::get_instance().string_to_int(it->second); } INTEGER station_type = 5; // passangerCar - it = _params.find(params::station_type); + it = _params.find(params_its::station_type); if (it != _params.cend()) { station_type = converter::get_instance().string_to_int(it->second); } INTEGER country = 0; - it = _params.find(params::country); + it = _params.find(params_its::country); if (it != _params.cend()) { country = converter::get_instance().string_to_int(it->second); } INTEGER type_of_address = 1; // Manual - it = _params.find(params::type_of_address); + it = _params.find(params_its::type_of_address); if (it != _params.cend()) { type_of_address = converter::get_instance().string_to_int(it->second); } - it = _params.find(params::device_mode); + it = _params.find(params_its::device_mode); if (it != _params.cend()) { _device_mode = (1 == converter::get_instance().string_to_int(it->second)); } - it = _params.find(params::secured_mode); + it = _params.find(params_its::secured_mode); if (it != _params.cend()) { _secured_mode = (1 == converter::get_instance().string_to_int(it->second)); } else { - _params.insert(std::pair(params::secured_mode, "0")); + _params.insert(std::pair(params_its::secured_mode, "0")); } - it = _params.find(params::encrypted_mode); + it = _params.find(params_its::encrypted_mode); if (it != _params.cend()) { _encrypted_mode = (1 == converter::get_instance().string_to_int(it->second)); } else { - _params.insert(std::pair(params::encrypted_mode, "0")); + _params.insert(std::pair(params_its::encrypted_mode, "0")); } - it = _params.find(params::enable_security_checks); + it = _params.find(params_its::enable_security_checks); if (it != _params.cend()) { _enable_security_checks = (1 == converter::get_instance().string_to_int(it->second)); } // Add broadcast address if needed - it = _params.find(params::its_aid); + it = _params.find(params_its::its_aid); if (it == _params.cend()) { - _params.insert(std::pair(params::its_aid, "141")); + _params.insert(std::pair(params_its::its_aid, "141")); } - it = _params.find(params::mac_bc); + it = _params.find(params_its::mac_bc); if (it == _params.cend()) { - _params.insert(std::pair(params::its_aid, "FFFFFFFFFFFF")); + _params.insert(std::pair(params_its::its_aid, "FFFFFFFFFFFF")); } // Set up default security parameters value @@ -144,7 +144,7 @@ void geonetworking_layer::init(const std::string &p_type, const std::string &p_p // Automatic beaconing mode fill_beacon(ll_address, station_type, country, type_of_address); - params::const_iterator i = _params.find(params::beaconing); + params_its::const_iterator i = _params.find(params_its::beaconing); if ((i != _params.cend()) && (i->second.compare("1") == 0)) { // Immediate beaconing was requested // Prepare beaconing operation start_beaconing(); @@ -166,27 +166,27 @@ void geonetworking_layer::init(const std::string &p_type, const std::string &p_p base_time::get_instance().set_leap_delay_us(4 * 1000000); // TODO Set it as parameter } // End of init_params -void geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingReq &p, params &p_params) { +void geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingReq &p, params_its &p_params) { loggers::get_instance().log(">>> geonetworking_layer::sendMsg"); - params param(_params); + params_its param(_params); // Encode GeoNetworking PDU OCTETSTRING data; _codec.encode(p.msgOut(), data); - params::const_iterator it = param.find(params::its_aid); + params_its::const_iterator it = param.find(params_its::its_aid); if (it != param.cend()) { - int aid = std::stoi(param[params::its_aid]); + int aid = std::stoi(param[params_its::its_aid]); loggers::get_instance().log("geonetworking_layer::sendMsg: aid=%d/%d", aid, (int)p.its__aid()); if (aid != (int)p.its__aid()) { - param[params::its_aid] = std::to_string((int)p.its__aid()); - loggers::get_instance().log("geonetworking_layer::sendMsg: New aid=%s", param[params::its_aid].c_str()); + param[params_its::its_aid] = std::to_string((int)p.its__aid()); + loggers::get_instance().log("geonetworking_layer::sendMsg: New aid=%s", param[params_its::its_aid].c_str()); } } else{ - param.insert(std::pair(params::its_aid, std::to_string((int)p.its__aid()))); + param.insert(std::pair(params_its::its_aid, std::to_string((int)p.its__aid()))); } if (_force_certificate == true) { // Force certificate instead of hashed_id in next message _force_certificate = false; - param.insert(std::pair(params::force_certificate, std::string("1"))); + param.insert(std::pair(params_its::force_certificate, std::string("1"))); } loggers::get_instance().log("geonetworking_layer::sendMsg: _params"); _params.log(); @@ -195,13 +195,13 @@ void geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::Geo send_data(data, param); } -void geonetworking_layer::send_data(OCTETSTRING &data, params ¶ms) { +void geonetworking_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> geonetworking_layer::send_data: ", data); params.log(); if (_device_mode) { // Need to build a GN packet - params[params::certificate] = _params[params::certificate]; - params[params::hash] = _params[params::hash]; // TODO Should be removed + params[params_its::certificate] = _params[params_its::certificate]; + params[params_its::hash] = _params[params_its::hash]; // TODO Should be removed if (build_geonetworking_pdu(data, params) != 0) { return; } @@ -226,7 +226,7 @@ const TTCN_RAWdescriptor_t _intx_raw_ = {RAW_INTX, SG_NO, ORDER_MSB, TOP_BIT_INHERITED, 0, 0, 0, 8, 0, NULL, -1, CharCoding::UNKNOWN}; const TTCN_Typedescriptor_t _intx_descr_ = {"IntX", NULL, &_intx_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE}; -void geonetworking_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void geonetworking_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> geonetworking_layer::receive_data: ", data); // Check security mode @@ -369,7 +369,7 @@ void geonetworking_layer::receive_data(OCTETSTRING &data, params ¶ms) { // Add lower layers parameters // 1. Destination MAC address - params::const_iterator it = params.find(params::mac_dst); + params_its::const_iterator it = params.find(params_its::mac_dst); if (it != params.cend()) { loggers::get_instance().log("geonetworking_layer::receive_data: dst=%s", it->second.c_str()); ind.macDestinationAddress() = str2oct(CHARSTRING(it->second.c_str())); @@ -377,7 +377,7 @@ void geonetworking_layer::receive_data(OCTETSTRING &data, params ¶ms) { ind.macDestinationAddress() = str2oct(CHARSTRING(_params["mac_bc"].c_str())); } // 2. ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("geonetworking_layer::receive_data: ssp=%s", it->second.c_str()); ind.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -385,7 +385,7 @@ void geonetworking_layer::receive_data(OCTETSTRING &data, params ¶ms) { ind.ssp().set_to_omit(); } // 3. its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { loggers::get_instance().log("geonetworking_layer::receive_data: its_aid=%s", it->second.c_str()); ind.its__aid() = std::stoi(it->second.c_str()); @@ -394,7 +394,7 @@ void geonetworking_layer::receive_data(OCTETSTRING &data, params ¶ms) { } // Pass the GeoNetworking raw payload to the upper layers if any - it = params.find(params::gn_payload); + it = params.find(params_its::gn_payload); if (it != params.cend()) { loggers::get_instance().log("geonetworking_layer::receive_data: gn_payload=%s", it->second.c_str()); OCTETSTRING os(str2oct(CHARSTRING(it->second.c_str()))); @@ -407,7 +407,7 @@ void geonetworking_layer::receive_data(OCTETSTRING &data, params ¶ms) { to_all_upper_ports(ind, params); } -OCTETSTRING geonetworking_layer::trigger_ac_event(OCTETSTRING &data, params ¶ms) { +OCTETSTRING geonetworking_layer::trigger_ac_event(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_to_hexa(">>> geonetworking_layer::trigger_ac_event: ", data); return int2oct(0, 2); @@ -442,7 +442,7 @@ void geonetworking_layer::start_beaconing() { loggers::get_instance().log("geonetworking_layer::start_beaconing: timer ID is 0x%x\n", (long)_timerid); // Start the timer unsigned int expiry = 1000; // Default expiry time 1000ms - params::const_iterator i = _params.find("expiry"); + params_its::const_iterator i = _params.find("expiry"); if (i != _params.cend()) { expiry = static_cast(std::strtoul(i->second.c_str(), nullptr, 10)); } @@ -501,9 +501,9 @@ void geonetworking_layer::send_beacon() { TTCN_Buffer encoding_buffer; _beacon->encode(*(_beacon->get_descriptor()), encoding_buffer, TTCN_EncDec::CT_RAW); OCTETSTRING data(encoding_buffer.get_len(), encoding_buffer.get_data()); - params params(_params); + params_its params(_params); if (_secured_mode) { // Apply Security - if (build_secured_pdu(data, _params) != 0) { + if (build_secured_pdu(data, params) != 0) { return; } } @@ -544,14 +544,14 @@ int geonetworking_layer::enable_secured_mode(const std::string &p_certificate_id setup_secured_mode(); } _enable_security_checks = p_enforce_security; - params::const_iterator it = _params.find(params::certificate); + params_its::const_iterator it = _params.find(params_its::certificate); if (it == _params.cend()) { - _params.insert(std::pair(params::certificate, p_certificate_id)); + _params.insert(std::pair(params_its::certificate, p_certificate_id)); } else { - _params[params::certificate] = p_certificate_id; + _params[params_its::certificate] = p_certificate_id; } - loggers::get_instance().log("geonetworking_layer::enable_secured_mode: Certificate to be used: '%s'", _params[params::certificate].c_str()); + loggers::get_instance().log("geonetworking_layer::enable_secured_mode: Certificate to be used: '%s'", _params[params_its::certificate].c_str()); return 0; } @@ -724,22 +724,22 @@ void geonetworking_layer::timer_irq_sigalrm_handler(int p_signal, siginfo_t *p_s static_cast(p_signal_info->si_value.sival_ptr)->send_beacon(); } // End of method timer_irq_sigalrm_handler -int geonetworking_layer::build_geonetworking_pdu(OCTETSTRING &data, params ¶ms) { +int geonetworking_layer::build_geonetworking_pdu(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log(">>> geonetworking_layer::build_geonetworking_pdu"); // params.log(); std::string next_header; - params::const_iterator it = params.find(params::next_header); + params_its::const_iterator it = params.find(params_its::next_header); if (it != params.cend()) { next_header = it->second.c_str(); } std::string header_type; - it = params.find(params::header_type); + it = params.find(params_its::header_type); if (it != params.cend()) { header_type = it->second.c_str(); } std::string header_sub_type; - it = params.find(params::header_sub_type); + it = params.find(params_its::header_sub_type); if (it != params.cend()) { header_sub_type = it->second.c_str(); } @@ -753,7 +753,7 @@ int geonetworking_layer::build_geonetworking_pdu(OCTETSTRING &data, params ¶ return -1; } // Update NextHeader - it = params.find(params::next_header); + it = params.find(params_its::next_header); if (next_header.compare("btpB") == 0) { _shb_packet->gnPacket().packet().commonHeader().nextHeader() = NextHeader::e__btpB; } else { // Default btp is btpA @@ -779,7 +779,7 @@ int geonetworking_layer::build_geonetworking_pdu(OCTETSTRING &data, params ¶ // Update sequence number eh->tsbHeader().seqNumber() = _sequence_number++; // Update NextHeader - it = params.find(params::next_header); + it = params.find(params_its::next_header); if (next_header.compare("btpB") == 0) { _tsb_packet->gnPacket().packet().commonHeader().nextHeader() = NextHeader::e__btpB; } else { // Default btp is btpA @@ -804,7 +804,7 @@ int geonetworking_layer::build_geonetworking_pdu(OCTETSTRING &data, params ¶ return -1; } // Update NextHeader - it = params.find(params::next_header); + it = params.find(params_its::next_header); if (next_header.compare("btpB") == 0) { _uni_packet->gnPacket().packet().commonHeader().nextHeader() = NextHeader::e__btpB; } else { // Default btp is btpA @@ -832,7 +832,7 @@ int geonetworking_layer::build_geonetworking_pdu(OCTETSTRING &data, params ¶ return -1; } // Update NextHeader - it = params.find(params::next_header); + it = params.find(params_its::next_header); if (next_header.compare("btpB") == 0) { _gbc_packet->gnPacket().packet().commonHeader().nextHeader() = NextHeader::e__btpB; } else { // Default btp is btpA @@ -857,7 +857,7 @@ int geonetworking_layer::build_geonetworking_pdu(OCTETSTRING &data, params ¶ return 0; } -int geonetworking_layer::build_secured_pdu(OCTETSTRING &data, params ¶ms) { +int geonetworking_layer::build_secured_pdu(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> geonetworking_layer::build_secured_pdu: ", data); // params.log(); @@ -914,15 +914,15 @@ int geonetworking_layer::setup_secured_mode() { loggers::get_instance().log("geonetworking_layer::setup_secured_mode: GN Layer address = %p", this); - params::const_iterator it = _params.find(params::certificate); + params_its::const_iterator it = _params.find(params_its::certificate); if (it == _params.cend()) { _params.insert(std::pair(std::string("certificate"), "CERT_TS_A_AT")); } - it = _params.find(params::sec_db_path); + it = _params.find(params_its::sec_db_path); if (it == _params.cend()) { _params.insert(std::pair(std::string("sec_db_path"), "")); } - it = _params.find(params::hash); + it = _params.find(params_its::hash); if (it == _params.cend()) { _params.insert(std::pair(std::string("hash"), "SHA-256")); } diff --git a/ccsrc/Protocols/GeoNetworking/geonetworking_layer.hh b/ccsrc/Protocols/GeoNetworking/geonetworking_layer.hh index 8224853..07d6bd8 100644 --- a/ccsrc/Protocols/GeoNetworking/geonetworking_layer.hh +++ b/ccsrc/Protocols/GeoNetworking/geonetworking_layer.hh @@ -43,7 +43,7 @@ namespace LibItsGeoNetworking__TypesAndValues { * \brief This class provides description of ITS GeoNetworking protocol layer */ class geonetworking_layer : public t_layer { - params _params; /*!< Layer parameters */ + params_its _params; /*!< Layer parameters */ geonetworking_codec _codec; /*!< GeoNetworking codec object reference. \see geonetworking_codec */ LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu *_beacon; /*!< Data structure used for beaconing */ LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu @@ -145,38 +145,38 @@ public: virtual ~geonetworking_layer(); /*! - * \fn void sendMsg(const LibItsGeoNetworking__TestSystem::GeoNetworkingReq& p_gn_req, params& p_param); + * \fn void sendMsg(const LibItsGeoNetworking__TestSystem::GeoNetworkingReq& p_gn_req, params_its& p_param); * \brief Send GeoNetworking message to the lower layers * \param[in] p_gn_req The GeoNetworking message to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - void sendMsg(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingReq &p_gn_req, params &p_param); + void sendMsg(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingReq &p_gn_req, params_its &p_param); /*! * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); + * \fn void send_data(OCTETSTRING& data, params_its& params); * \brief Send bytes formated data to the lower layers * \param[in] p_data The data to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - virtual void send_data(OCTETSTRING &data, params ¶ms); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); /*! * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); + * \fn void receive_data(OCTETSTRING& data, params_its& params); * \brief Receive bytes formated data from the lower layers * \param[in] p_data The bytes formated data received * \param[in] p_params Some lower layers parameters values when data was received */ - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void receive_data(OCTETSTRING &data, params_its &info); /*! * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); + * \fn void send_data(OCTETSTRING& data, params_its& params); * \brief Send bytes formated data to the lower layers * \param[in] p_data The data to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - virtual OCTETSTRING trigger_ac_event(OCTETSTRING &data, params ¶ms); + virtual OCTETSTRING trigger_ac_event(OCTETSTRING &data, params_its ¶ms); const LibItsGeoNetworking__TypesAndValues::LongPosVector *get_lpv(const LibItsGeoNetworking__TypesAndValues::GN__Address &p_gn_address); void start_beaconing(); @@ -191,8 +191,8 @@ public: private: void init(const std::string &p_type, const std::string &p_param); void send_beacon(); - int build_geonetworking_pdu(OCTETSTRING &data, params ¶ms); - int build_secured_pdu(OCTETSTRING &data, params ¶ms); + int build_geonetworking_pdu(OCTETSTRING &data, params_its ¶ms); + int build_secured_pdu(OCTETSTRING &data, params_its ¶ms); int decode_basic_header(const OCTETSTRING &p_data, LibItsGeoNetworking__TypesAndValues::BasicHeader &p_basic_header); int setup_secured_mode(); diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc deleted file mode 100644 index f78ad74..0000000 --- a/ccsrc/Protocols/Http/http_codec.cc +++ /dev/null @@ -1,754 +0,0 @@ -#include -#include -#include - -#include "codec_stack_builder.hh" - -#include "http_codec.hh" - -#include "loggers.hh" - -#include "LibItsHttp_MessageBodyTypes.hh" -#include "LibItsHttp_TypesAndValues.hh" -#include "LibItsHttp_XmlMessageBodyTypes.hh" - -#include "http_etsi_ieee1609dot2_codec.hh" - -int http_codec::encode(const LibItsHttp__TypesAndValues::HttpMessage &msg, OCTETSTRING &data) { - loggers::get_instance().log_msg(">>> http_codec::encode: ", (const Base_Type &)msg); - loggers::get_instance().log(">>> http_codec::encode: %p", this); - - TTCN_EncDec::clear_error(); - TTCN_Buffer encoding_buffer; - - _ec.reset(); - - int result; - if (msg.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_request)) { - result = encode_request(msg.request(), encoding_buffer); - } else if (msg.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_response)) { - result = encode_response(msg.response(), encoding_buffer); - } else { - loggers::get_instance().warning("http_codec::encode: Unbound HttpMessage"); - return -1; - } - - data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); - - loggers::get_instance().log_msg("<<< http_codec::encode: data=", data); - return result; -} - -int http_codec::decode(const OCTETSTRING &data, LibItsHttp__TypesAndValues::HttpMessage &msg, params *params) { - loggers::get_instance().log_msg(">>> http_codec::decode: data=", data); - - TTCN_EncDec::clear_error(); - TTCN_Buffer decoding_buffer(data); - loggers::get_instance().log_to_hexa("http_codec::decode: decoding_buffer=", decoding_buffer); - - _dc.reset(); - - _params = params; - - // Get the first line (e.g. HTTP/1.1 302 Found or POST / HTTP/1.1) - CHARSTRING message_id; - if (get_line(decoding_buffer, message_id) == -1) { - return -1; - } - loggers::get_instance().log_msg("http_codec::decode: message_id: ", message_id); - // Extract parameters - try { - std::string str(static_cast(message_id)); - std::regex rgx("\\s*(\\w+)/"); - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::smatch m = *begin; - loggers::get_instance().log("http_codec::decode: %d - %s", m.size(), m[0].str().c_str()); - if (m[0].str().compare("HTTP/") == 0) { // HTTP response - LibItsHttp__TypesAndValues::Response response; - std::regex rgx("\\s*HTTP/(\\d+)\\.(\\d+)\\s+(\\d+)\\s+([\\w\\s\\t\\v\\f]+)*"); - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::smatch m = *begin; - loggers::get_instance().log("http_codec::decode: Process response: %d", m.size()); - if (m.size() != 5) { - loggers::get_instance().error("http_codec::decode: Unsupported tag"); - return -1; - } - response.version__major() = std::stoi(m[1].str().c_str()); - response.version__minor() = std::stoi(m[2].str().c_str()); - response.statuscode() = std::stoi(m[3].str().c_str()); - response.statustext() = CHARSTRING(m[4].str().c_str()); - LibItsHttp__TypesAndValues::Headers headers; - std::string content_type; - decode_headers(decoding_buffer, headers, content_type); - response.header() = headers; - loggers::get_instance().log_to_hexa("Before decoding Body: ", decoding_buffer); - LibItsHttp__MessageBodyTypes::HttpMessageBody body; - if (decode_body(decoding_buffer, body, content_type) == -1) { - response.body().set_to_omit(); - } else { - response.body() = OPTIONAL(body); - } - msg.response() = response; - } else { // HTTP request - LibItsHttp__TypesAndValues::Request request; - std::regex rgx("\\s*(\\w+)\\s+(.+)\\s+HTTP/(\\d)\\.(\\d)"); - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::smatch m = *begin; - if (m.size() != 5) { - loggers::get_instance().error("http_codec::decode: Unsupported tag"); - return -1; - } - request.method() = CHARSTRING(m[1].str().c_str()); - request.uri() = CHARSTRING(m[2].str().c_str()); - request.version__major() = std::stoi(m[3].str().c_str()); - request.version__minor() = std::stoi(m[4].str().c_str()); - LibItsHttp__TypesAndValues::Headers headers; - std::string content_type; - decode_headers(decoding_buffer, headers, content_type); - request.header() = headers; - OPTIONAL body; - body.set_to_omit(); - if (decode_body(decoding_buffer, body, content_type) == -1) { - request.body().set_to_omit(); - } else { - request.body() = body; - } - msg.request() = request; - } - - loggers::get_instance().log_msg("<<< http_codec::decode: ", (const Base_Type &)msg); - return 0; - } catch (const std::logic_error &e) { - return -1; - } -} - -int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request &p_request, TTCN_Buffer &p_encoding_buffer) { - loggers::get_instance().log_msg(">>> http_codec::encode_request: ", (const Base_Type &)p_request); - - // Encode generic part - p_encoding_buffer.put_cs(p_request.method()); - p_encoding_buffer.put_c(' '); - p_encoding_buffer.put_cs(p_request.uri()); - p_encoding_buffer.put_cs(" HTTP/"); - p_encoding_buffer.put_cs(int2str(p_request.version__major())); - p_encoding_buffer.put_c('.'); - p_encoding_buffer.put_cs(int2str(p_request.version__minor())); - p_encoding_buffer.put_cs("\r\n"); - - // Encode headers excepeted the Content-Length - const LibItsHttp__TypesAndValues::Headers &headers = p_request.header(); - std::string content_type; - for (int i = 0; i < headers.size_of(); i++) { - const LibItsHttp__TypesAndValues::Header &header = headers[i]; - loggers::get_instance().log_msg("http_codec::encode_request: Processing header ", header.header__name()); - if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { // Skip it, processed later - loggers::get_instance().log("http_codec::encode_request: Skip it"); - continue; - } else { - p_encoding_buffer.put_cs(header.header__name()); - p_encoding_buffer.put_cs(": "); - const OPTIONAL &o = header.header__value(); - if (o.ispresent()) { - const LibItsHttp__TypesAndValues::charstring__list &v = dynamic_cast &>(o); - if (v.size_of() > 0) { - loggers::get_instance().log_msg("http_codec::encode_request: Processing value ", v[0]); - if (std::string(static_cast(header.header__name())).compare("Content-Type") == 0) { // Store it for HTTP body payload encoding - loggers::get_instance().log("http_codec::encode_request: Storing Content-Type"); - int j = 0; - while (j < v.size_of()) { - content_type += v[j++]; - } // End of 'while' statement - } - p_encoding_buffer.put_cs(v[0]); - int j = 1; - while (j < v.size_of()) { - p_encoding_buffer.put_cs(", "); - loggers::get_instance().log_msg("http_codec::encode_request: Processing value ", v[j]); - p_encoding_buffer.put_cs(v[j++]); - } // End of 'while' statement - } - } // else, do not include it - } - p_encoding_buffer.put_cs("\r\n"); - } // End of 'for' statement - - // Encode message body - const OPTIONAL &v = p_request.body(); - OCTETSTRING os; - if (v.ispresent()) { - const LibItsHttp__MessageBodyTypes::HttpMessageBody &body = static_cast(*v.get_opt_value()); - loggers::get_instance().log_msg("http_codec::encode_request: body: ", body); - if (encode_body(body, os, content_type) == -1) { - loggers::get_instance().warning("http_codec::encode_request: Failed to encode HTTP body"); - _ec.length = 0; - _ec.is_content_length_present = 0x00; - } else { - _ec.length = os.lengthof(); - _ec.is_content_length_present = 0x01; - } - loggers::get_instance().log("http_codec::encode_request: length=%d", _ec.length); - } else { - loggers::get_instance().log("http_codec::encode_request: HTTP body field not present"); - _ec.length = 0; - _ec.is_content_length_present = 0x00; - } - - // Encode Content-Length header - p_encoding_buffer.put_cs("Content-Length: "); - if (_ec.length != 0) { - loggers::get_instance().log("http_codec::encode_request: Content-Length: %s", - static_cast(int2str(_ec.length + 2 /*Stand for the last CRLF*/))); - p_encoding_buffer.put_cs(static_cast(int2str(_ec.length))); - _ec.is_content_length_present = 0x01; - } else { - p_encoding_buffer.put_cs("0"); - _ec.is_content_length_present = 0x00; - } - loggers::get_instance().log("http_codec::encode_request: Content-Length: %d - %x", _ec.length, _ec.is_content_length_present); - p_encoding_buffer.put_cs("\r\n"); - - // Add message body - p_encoding_buffer.put_cs("\r\n"); - if (_ec.is_content_length_present == 0x01) { - loggers::get_instance().log_msg("http_codec::encode_request: Add body ", os); - p_encoding_buffer.put_os(os); - // p_encoding_buffer.put_cs("\r\n"); - } - - loggers::get_instance().log_to_hexa("<<< http_codec::encode_request: ", p_encoding_buffer); - return 0; -} - -int http_codec::encode_response(const LibItsHttp__TypesAndValues::Response &p_response, TTCN_Buffer &p_encoding_buffer) { - loggers::get_instance().log_msg(">>> http_codec::encode_response: ", (const Base_Type &)p_response); - - // Encode generic part - p_encoding_buffer.put_cs("HTTP/"); - p_encoding_buffer.put_cs(int2str(p_response.version__major())); - p_encoding_buffer.put_c('.'); - p_encoding_buffer.put_cs(int2str(p_response.version__minor())); - p_encoding_buffer.put_cs(" "); - p_encoding_buffer.put_cs(int2str(p_response.statuscode())); - p_encoding_buffer.put_cs(" "); - if (p_response.statustext().lengthof() != 0) { - p_encoding_buffer.put_cs(p_response.statustext()); - } - p_encoding_buffer.put_cs("\r\n"); - - // Encode headers excepeted the Content-Length - const LibItsHttp__TypesAndValues::Headers &headers = p_response.header(); - std::string content_type; - for (int i = 0; i < headers.size_of(); i++) { - const LibItsHttp__TypesAndValues::Header &header = headers[i]; - loggers::get_instance().log_msg("http_codec::encode_response: Processing header ", header.header__name()); - if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { - continue; - } else { - p_encoding_buffer.put_cs(header.header__name()); - p_encoding_buffer.put_cs(": "); - const OPTIONAL &o = header.header__value(); - if (o.ispresent()) { - const LibItsHttp__TypesAndValues::charstring__list &v = dynamic_cast &>(o); - if (v.size_of() > 0) { - loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[0]); - if (std::string(static_cast(header.header__name())).compare("Content-Type") == 0) { // Store it for HTTP body payload encoding - loggers::get_instance().log("http_codec::encode_response: Storing Content-Type"); - int j = 0; - while (j < v.size_of()) { - content_type += v[j++]; - } // End of 'while' statement - } - p_encoding_buffer.put_cs(v[0]); - int j = 1; - while (j < v.size_of()) { - p_encoding_buffer.put_cs(", "); - loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[j]); - p_encoding_buffer.put_cs(v[j++]); - j += 1; - } // End of 'while' statement - } - } // else, do not include it - } - p_encoding_buffer.put_cs("\r\n"); - } // End of 'for' statement - - // Encode message body - const OPTIONAL &v = p_response.body(); - OCTETSTRING os; - if (v.ispresent()) { - const LibItsHttp__MessageBodyTypes::HttpMessageBody &body = static_cast(*v.get_opt_value()); - loggers::get_instance().log_msg("http_codec::encode_response: body: ", body); - if (encode_body(body, os, content_type) == -1) { - _ec.length = 0; - _ec.is_content_length_present = 0x00; - } else { - _ec.length = os.lengthof(); - _ec.is_content_length_present = 0x01; - } - loggers::get_instance().log("http_codec::encode_response: length=%d", _ec.length); - } else { - loggers::get_instance().log("http_codec::encode_response: HTTP body field not present"); - _ec.length = 0; - _ec.is_content_length_present = 0x00; - } - - // Encode Content-Length header - p_encoding_buffer.put_cs("Content-Length: "); - if (_ec.length != 0) { - loggers::get_instance().log("http_codec::encode_request: Content-Length: %s", - static_cast(int2str(_ec.length + 2 /*Stand for the last CRLF*/))); - p_encoding_buffer.put_cs(static_cast(int2str(_ec.length))); - _ec.is_content_length_present = 0x01; - } else { - p_encoding_buffer.put_cs("0"); - _ec.is_content_length_present = 0x00; - } - loggers::get_instance().log("http_codec::encode_request: Content-Length: %d - %x", _ec.length, _ec.is_content_length_present); - p_encoding_buffer.put_cs("\r\n"); - - // Add message body - p_encoding_buffer.put_cs("\r\n"); - if (_ec.is_content_length_present == 0x01) { - loggers::get_instance().log_msg("http_codec::encode_request: Add body ", os); - p_encoding_buffer.put_os(os); - // p_encoding_buffer.put_cs("\r\n"); - } - - loggers::get_instance().log_to_hexa("<<< http_codec::encode_response: ", p_encoding_buffer); - return 0; -} - -int http_codec::decode_headers(TTCN_Buffer &decoding_buffer, LibItsHttp__TypesAndValues::Headers &headers, std::string &p_content_type) { - loggers::get_instance().log(">>> http_codec::decode_headers"); - loggers::get_instance().log_to_hexa("http_codec::decode_headers: ", decoding_buffer); - - CHARSTRING cstr; - int i = 0; - while (true) { - switch (get_line(decoding_buffer, cstr, true)) { - case 0: { - loggers::get_instance().log_msg("http_codec::decode_headers: ", cstr); - LibItsHttp__TypesAndValues::Header header; - if (decode_header(cstr, header) == -1) { - loggers::get_instance().warning("http_codec::decode_headers: Failed to decode header %s", static_cast(cstr)); - return -1; - } - headers[i++] = header; - if (std::string(static_cast(header.header__name())).compare("Content-Type") == 0) { - if (header.header__value().is_present() != 0) { - const PreGenRecordOf::PREGEN__RECORD__OF__CHARSTRING &l = - static_cast(*header.header__value().get_opt_value()); - p_content_type = static_cast(l[0]); - } else { - p_content_type = ""; - } - } - } break; - case 1: - loggers::get_instance().log_msg("<<< http_codec::decode_headers: ", headers); - return 0; - case -1: - loggers::get_instance().warning("http_codec::decode_headers: Failed to decode headers"); - return -1; - } // End of 'switch' statement - } // End of 'while' statement -} - -int http_codec::decode_header(CHARSTRING &header_line, LibItsHttp__TypesAndValues::Header &header) { - loggers::get_instance().log_msg(">>> http_codec::decode_header", header_line); - - try { - std::string str(static_cast(header_line)); - std::regex rgx("([0-9a-zA-Z-]+)\\:\\s+(.+)(,(.+))*"); - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::smatch m = *begin; - if (m.size() < 5) { - loggers::get_instance().warning("http_codec::decode_header: Failed to decode header %s", str.c_str()); - return -1; - } - loggers::get_instance().log("http_codec::decode_header: %d", m.size()); - header.header__name() = CHARSTRING(m[1].str().c_str()); - LibItsHttp__TypesAndValues::charstring__list v; - for (unsigned int j = 0; j < m.size(); j++) { - if (m[j + 2].str().length() == 0) { - break; - } - v[j] = CHARSTRING(m[j + 2].str().c_str()); - } // End of 'for' statement - header.header__value() = OPTIONAL(v); - - if (m[1].str().compare("Content-Length") == 0) { - // Save the the body length - loggers::get_instance().log("http_codec::decode_header: decoded Content-Length %s", m[2].str().c_str()); - _dc.length = std::stoi(m[2].str()); - } else if (m[1].str().compare("Transfer-Encoding") == 0) { - if (m[2].str().find("chunked") != std::string::npos) { - _dc.chunked = true; - loggers::get_instance().log("http_codec::decode_header: decoded Transfer-Encoding %x", _dc.chunked); - } - } - - return 0; - } catch (const std::logic_error &e) { - return -1; - } -} - -int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody &p_message_body, OCTETSTRING &p_encoding_buffer, - const std::string &p_content_type) { - loggers::get_instance().log_msg(">>> http_codec::encode_body: ", (const Base_Type &)p_message_body); - - // Sanity check - if (p_content_type.empty()) { - loggers::get_instance().warning("http_codec::encode_body: Failed to select a codec for HTTP body payload"); - return -1; - } - - if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_binary__body)) { - const LibItsHttp__BinaryMessageBodyTypes::BinaryBody &binary_body = p_message_body.binary__body(); - if (binary_body.ischosen(LibItsHttp__BinaryMessageBodyTypes::BinaryBody::ALT_raw)) { - p_encoding_buffer = OCTETSTRING(binary_body.raw().lengthof(), (unsigned char *)static_cast(binary_body.raw())); - } else { - std::map>>::const_iterator it; - bool processed = false; - if (p_content_type.find("x-its") != std::string::npos) { - loggers::get_instance().log("http_codec::encode_body: Find x-its"); - it = _codecs.find("http_its"); // TODO Use params - if (it != _codecs.cend()) { - loggers::get_instance().log("http_codec::encode_body: Call '%s'", it->first.c_str()); - if (binary_body.ischosen(LibItsHttp__BinaryMessageBodyTypes::BinaryBody::ALT_ieee1609dot2__data)) { - _codecs["http_its"]->encode((Record_Type &)binary_body.ieee1609dot2__data(), p_encoding_buffer); // TODO Use params - processed = true; - } else if (binary_body.ischosen(LibItsHttp__BinaryMessageBodyTypes::BinaryBody::ALT_ieee1609dot2__certificate)) { - _codecs["http_its"]->encode((Record_Type &)binary_body.ieee1609dot2__certificate(), p_encoding_buffer); // TODO Use params - processed = true; - } else { - loggers::get_instance().warning("http_codec::encode_body: Unsupported variant"); - } - } - } // TODO Add new HTTP message codec here - if (!processed) { - loggers::get_instance().warning("http_codec::encode_body: Unsupported HTTP codec, use raw field as default"); - p_encoding_buffer = OCTETSTRING(0, nullptr); - } - } - } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_html__body)) { - p_encoding_buffer = OCTETSTRING(p_message_body.html__body().lengthof(), (unsigned char *)static_cast(p_message_body.html__body())); - } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_text__body)) { - p_encoding_buffer = OCTETSTRING(p_message_body.text__body().lengthof(), (unsigned char *)static_cast(p_message_body.text__body())); - } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_xml__body)) { - const LibItsHttp__XmlMessageBodyTypes::XmlBody &xml_body = p_message_body.xml__body(); - if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { - p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char *)static_cast(xml_body.raw())); - } else { - std::map>>::const_iterator it; - bool processed = false; - loggers::get_instance().log("http_codec::encode_body: Content-Type:'%s'", p_content_type.c_str()); - if (p_content_type.find("held") != std::string::npos) { - it = _codecs.find("held"); // TODO Use params - if (it != _codecs.cend()) { - loggers::get_instance().log("http_codec::encode_body: Call 'held_codec'"); - _codecs["held"]->encode((Record_Type &)xml_body, p_encoding_buffer); // TODO Use params - processed = true; - } - } else if (p_content_type.find("lost") != std::string::npos) { - it = _codecs.find("lost"); // TODO Use params - if (it != _codecs.cend()) { - loggers::get_instance().log("http_codec::encode_body: Call 'lost_codec'"); - _codecs["lost"]->encode((Record_Type &)xml_body, p_encoding_buffer); // TODO Use params - processed = true; - } - } // TODO Add new HTTP message codec here - if (!processed) { - loggers::get_instance().warning("http_codec::encode_body: Unsupported HTTP codec, use raw field as default"); - p_encoding_buffer = OCTETSTRING(0, nullptr); - } - } - } else { - loggers::get_instance().warning("http_codec::encode_body: Failed to encode HTTP message body"); - return -1; - } - loggers::get_instance().log_msg("http_codec::encode_body: HTTP message ", p_encoding_buffer); - _ec.length = p_encoding_buffer.lengthof(); - loggers::get_instance().log("http_codec::encode_body: HTTP message length: %d", _ec.length); - - return 0; -} - -int http_codec::decode_body(TTCN_Buffer &decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody &message_body, const std::string &p_content_type) { - loggers::get_instance().log(">>> http_codec::decode_body"); - loggers::get_instance().log_to_hexa("http_codec::decode_body", decoding_buffer); - loggers::get_instance().log("http_codec::decode_body: # of codecs=%d - %p", _codecs.size(), this); - loggers::get_instance().log("http_codec::decode_body: Content-Type=%s", p_content_type.c_str()); - - // Sanity checks - if (decoding_buffer.get_len() - decoding_buffer.get_pos() <= 0) { - return -1; - } - /* TODO Uncommentif (p_content_type.empty()) { - loggers::get_instance().warning("http_codec::encode_body: Failed to select a codec for HTTP body payload"); - return -1; - }*/ - - OCTETSTRING s(decoding_buffer.get_len() - decoding_buffer.get_pos(), decoding_buffer.get_data() + decoding_buffer.get_pos()); - loggers::get_instance().log_msg("http_codec::decode_body: raw body=", s); - - // Align the payload length with the specified Content-Lenght value - loggers::get_instance().log("http_codec::decode_body: _dc.length=%d - body length=%d", _dc.length, s.lengthof()); - OCTETSTRING body; - if (_dc.length != 0) { - const unsigned char *p = static_cast(s); - if ((unsigned int)s.lengthof() <= _dc.length) { - body = OCTETSTRING(s.lengthof(), p); - } else { - body = OCTETSTRING(_dc.length, p); - } - } else { - loggers::get_instance().warning("http_codec::decode_body: No Conten-Length header, process all remaining bytes"); - body = s; - } - loggers::get_instance().log_msg("http_codec::decode_body: Aligned body=", body); - loggers::get_instance().log("http_codec::decode_body: body length=%d", body.lengthof()); - /* TODO To be removed - // Remove CRLF if any - int counter = 0; - if ((body[body.lengthof() - 1].get_octet() == 0x0d) || (body[body.lengthof() - 1].get_octet() == 0x0a)) { - counter += 1; - if ((body[body.lengthof() - 2].get_octet() == 0x0d) || (body[body.lengthof() - 2].get_octet() == 0x0a)) { - counter += 1; - } - } - loggers::get_instance().log("http_codec::decode_body: counter=%d", counter); - body = OCTETSTRING(body.lengthof() - counter, static_cast(body)); - */ - if (_dc.chunked) { - int counter = 0; - int prev = 0; - OCTETSTRING os(0, nullptr); - do { - while (counter < body.lengthof()) { // Extract the size of the chunk \r[\n] - if ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n')) { - break; - } - counter += 1; - } // End of 'while' statement - loggers::get_instance().log("http_codec::decode_body: Chunked(0): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); - if (counter < body.lengthof()) { - int idx = counter - prev; - OCTETSTRING trunk(idx, static_cast(body)); - loggers::get_instance().log_msg("http_codec::decode_body: trunk: ", trunk); - std::string str((const char *)static_cast(trunk), idx); - loggers::get_instance().log("http_codec::decode_body: str: '%s'", str.c_str()); - int len = std::stoi(str, nullptr, 16); // converter::get_instance().string_to_int(str); - loggers::get_instance().log("http_codec::decode_body: Chunk len: %d", len); - while (counter < body.lengthof() && ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n'))) { // Skip additional \n - counter += 1; - } // End of 'while' statement - if (counter < body.lengthof()) { - loggers::get_instance().log("http_codec::decode_body: Chunked (1): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); - os += OCTETSTRING(len, counter + static_cast(body)); - loggers::get_instance().log_msg("http_codec::decode_body: os=", os); - counter += len; - loggers::get_instance().log("http_codec::decode_body: Chunked: %02x %02x %02x", body[counter].get_octet(), body[counter + 1].get_octet(), - body[counter + 2].get_octet()); - loggers::get_instance().log("http_codec::decode_body: Chunked (2): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); - while (counter < body.lengthof() && ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n'))) { // Skip additional \n - counter += 1; - } // End of 'while' statement - prev = counter; - loggers::get_instance().log("http_codec::decode_body: Chunked (3): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); - } - } - } while (counter < body.lengthof()); // Process next chunk if any - body = os; - loggers::get_instance().log_msg("http_codec::decode_body: Finalised body=", body); - } - // Check if HTTP message body contains binary characters - for (int i = 0; i < body.lengthof(); i++) { - unsigned char c = body[i].get_octet(); - if (!std::isprint(c) && !std::isspace(c) && !std::ispunct(c)) { - loggers::get_instance().log("http_codec::decode_body: Byte #%d is not printable: 0x%02x", i, body[i].get_octet()); - _dc.is_binary = 0x01; - break; - } - } // End of 'for' statement - loggers::get_instance().log("http_codec::decode_body: Binary mode: %x", _dc.is_binary); - LibItsHttp__MessageBodyTypes::HttpMessageBody v; - if (_dc.is_binary == 0x01) { - LibItsHttp__BinaryMessageBodyTypes::BinaryBody binary_body; - std::map>>::const_iterator it; - bool processed = false; - // TODO To be refined adding a string identifier to check which codec to use. E.g. held_code.id() returns "xmlns=\"urn:ietf:params:xml:ns:geopriv:held\">" - if ((p_content_type.find("x-its") != std::string::npos) || (p_content_type.find("application/octet-stream") != std::string::npos)) { - loggers::get_instance().log("http_codec::decode_body: Find 'x-its'"); - it = _codecs.cbegin(); //_codecs.find("http_its"); - if (it != _codecs.cend()) { - /*** - FIXME: - This code generate a codedump, I don't undertsand the reason. - The same code works file for Ng112 HELD & LOST codec. Ununderstandable!!!! - ==> Use a patch - if (_codecs["http_its"].get() != nullptr) { - loggers::get_instance().log("http_codec::decode_body: Call 'http_etsi_ieee1609dot2_codec'"); - if (_codecs["http_its"]->decode(body, (Record_Type&)binary_body) == 0) { - processed = true; - } - }*/ - loggers::get_instance().log("http_codec::decode_body: Call '%s'", it->first.c_str()); - http_etsi_ieee1609dot2_codec *codec = new http_etsi_ieee1609dot2_codec(); - if (body[0].get_octet() != 0x80) { - if (codec->decode(body, binary_body.ieee1609dot2__data()) == 0) { - message_body.binary__body() = binary_body; - processed = true; - } - } else { - if (codec->decode(body, binary_body.ieee1609dot2__certificate()) == 0) { - message_body.binary__body() = binary_body; - processed = true; - } - } - delete codec; - } - } // TODO Add new HTTP message codec here - if (!processed) { - loggers::get_instance().warning("http_codec::decode_body: Unsupported HTTP codec, use raw field as default"); - binary_body.raw() = body; - message_body.binary__body() = binary_body; - } - } else { - // Convert into string - params p; - p["decode_str"] = std::string(static_cast(body), body.lengthof() + static_cast(body)); - loggers::get_instance().log("http_codec::decode_body: decode_str: %s", p["decode_str"].c_str()); - // Try to identify xml - if (p["decode_str"].find("" - if ((p["decode_str"].find("=\"urn:ietf:params:xml:ns:geopriv:held\"") != std::string::npos) || - (p["decode_str"].find("=\"urn:ietf:params:xml:ns:pidf\"") != std::string::npos)) { - loggers::get_instance().log("http_codec::decode_body: Find 'urn:ietf:params:xml:ns:geopriv:held'"); - if (_codecs["held"].get() != nullptr) { - loggers::get_instance().log("http_codec::decode_body: Call 'held_codec'"); - if (_codecs["held"]->decode(body, (Record_Type &)xml_body, &p) == -1) { - loggers::get_instance().warning("http_codec::decode_body: Failed to decode HELD message"); - xml_body.raw() = CHARSTRING(body.lengthof(), (char *)static_cast(body)); - } else { - loggers::get_instance().log_msg("http_codec::decode_body: Decoded message:", xml_body); - message_body.xml__body() = xml_body; - } - } else { - loggers::get_instance().warning("http_codec::decode_body: No codec for HELD"); - xml_body.raw() = CHARSTRING(body.lengthof(), (char *)static_cast(body)); - } - message_body.xml__body() = xml_body; - } else if (p["decode_str"].find("=\"urn:ietf:params:xml:ns:lost1\"") != std::string::npos) { - loggers::get_instance().log("http_codec::decode_body: Find 'urn:ietf:params:xml:ns:lost1'"); - if (_codecs["lost"].get() != nullptr) { - loggers::get_instance().log("http_codec::decode_body: Call 'lost_codec'"); - if (_codecs["lost"]->decode(body, (Record_Type &)xml_body, &p) == -1) { - loggers::get_instance().warning("http_codec::decode_body: Failed to decode LOST message"); - xml_body.raw() = CHARSTRING(body.lengthof(), (char *)static_cast(body)); - } else { - loggers::get_instance().log_msg("http_codec::decode_body: Decoded message:", xml_body); - message_body.xml__body() = xml_body; - } - } else { - loggers::get_instance().warning("http_codec::decode_body: No codec for LOST"); - xml_body.raw() = CHARSTRING(body.lengthof(), (char *)static_cast(body)); - } - message_body.xml__body() = xml_body; - } else { - loggers::get_instance().warning("http_codec::decode_body: No XML codec found"); - xml_body.raw() = CHARSTRING(body.lengthof(), (char *)static_cast(body)); - message_body.xml__body() = xml_body; - } - } else if (p["decode_str"].find("") != std::string::npos) { // Try to identify HTML - loggers::get_instance().log("http_codec::decode_body: Find html message"); - LibItsHttp__MessageBodyTypes::HtmlBody html_body; - message_body.html__body() = CHARSTRING(body.lengthof(), (char *)static_cast(body)); - } else { - loggers::get_instance().log("http_codec::decode_body: Use textBdy as default"); - LibItsHttp__MessageBodyTypes::TextBody text_body; - message_body.text__body() = CHARSTRING(body.lengthof(), (char *)static_cast(body)); - } - } - - return 0; -} - -int http_codec::get_line(TTCN_Buffer &buffer, CHARSTRING &to, const bool concatenate_header_lines) { - unsigned int i = 0; - const unsigned char *cc_to = buffer.get_read_data(); - - // Sanity checks - if (buffer.get_read_len() == 0) { - return -1; - } - - while (true) { - // Skip spaces, and empty lines - for (; i < buffer.get_read_len() && cc_to[i] != '\0' && cc_to[i] != '\r' && cc_to[i] != '\n'; i++) - ; - if (i >= buffer.get_read_len()) { // No more characters to process - to = CHARSTRING(""); - return -1; - } else if (cc_to[i] == '\n') { // New line found, we don't care is '\r' is missing - if ((i > 0) && ((i + 1) < buffer.get_read_len()) && concatenate_header_lines && ((cc_to[i + 1] == ' ') || (cc_to[i + 1] == '\t'))) { - i += 1; // Skip it - } else { - to = CHARSTRING(i, (const char *)cc_to); - buffer.set_pos(buffer.get_pos() + i + 1); - return i == 0 ? 1 : 0; - } - } else { - if ((i + 1) < buffer.get_read_len() && cc_to[i + 1] != '\n') { - return -1; - } else if (i > 0 && (i + 2) < buffer.get_read_len() && concatenate_header_lines && (cc_to[i + 2] == ' ' || cc_to[i + 2] == '\t')) { - i += 2; - } else { - to = CHARSTRING(i, (const char *)cc_to); - buffer.set_pos(buffer.get_pos() + i + 2); - return i == 0 ? 1 : 0; - } - } - } // End of 'while' statement -} - -void http_codec::set_payload_codecs(const std::string &p_codecs) { - loggers::get_instance().log(">>> http_codec::set_payload_codecs: %s", p_codecs.c_str()); - - // Sanity check - if (p_codecs.length() == 0) { - return; - } - - // Extract codecs - try { - std::regex rgx("(\\w+):(\\w+)(;(\\w+):(\\w+))*"); - std::sregex_iterator begin(p_codecs.cbegin(), p_codecs.cend(), rgx); - std::sregex_iterator end = std::sregex_iterator(); - // E.g. 9 - xml - :held_codec - held_codec - ;html:html_codec - html:html_codec - html - :html_codec - html_codec - for (std::sregex_iterator it = begin; it != end; ++it) { - std::smatch m = *it; - loggers::get_instance().log("http_codec::set_payload_codecs: %d - %s - %s - %s - %s - %s - %s - %s - %s", m.size(), m[1].str().c_str(), - m[2].str().c_str(), m[3].str().c_str(), m[4].str().c_str(), m[5].str().c_str(), m[6].str().c_str(), m[7].str().c_str(), - m[8].str().c_str()); - for (unsigned int j = 1; j < m.size() - 1; j += 3) { // Exclude m[0] - loggers::get_instance().log("http_codec::set_payload_codecs: insert (%s, %s), j = %d", m[j].str().c_str(), m[j + 1].str().c_str(), j); - if (m[j].str().empty()) { - break; - } - std::string key(m[j].str()); - loggers::get_instance().log("http_codec::set_payload_codecs: Add codec %s", key.c_str()); - _codecs.insert( - std::make_pair(key, std::unique_ptr>(codec_stack_builder::get_instance()->get_codec(m[j + 1].str().c_str())))); - } // End of 'for' statement - } // End of 'for' statement - loggers::get_instance().log("http_codec::set_payload_codecs: _codecs length=%d - %p", _codecs.size(), this); - } catch (const std::logic_error &e) { - loggers::get_instance().warning("http_codec::set_payload_codecs: std::logic_error: %s", e.what()); - _codecs.clear(); - } -} diff --git a/ccsrc/Protocols/Http/http_codec.hh b/ccsrc/Protocols/Http/http_codec.hh deleted file mode 100644 index 91c799e..0000000 --- a/ccsrc/Protocols/Http/http_codec.hh +++ /dev/null @@ -1,72 +0,0 @@ -#pragma once - -#include - -#include "codec.hh" -#include "params.hh" - -class Base_Type; -class Record_Type; -class TTCN_Typedescriptor_t; -class TTCN_Buffer; - -namespace LibItsHttp__TypesAndValues { - class HttpMessage; - class Request; - class Response; - class Headers; - class Header; -} // namespace LibItsHttp__TypesAndValues -namespace LibItsHttp__MessageBodyTypes { - class HttpMessageBody; -} - -struct encoding_context { - unsigned int length; - unsigned char is_content_length_present; - - encoding_context() { reset(); }; - void reset() { - length = -1; - is_content_length_present = 0x00; - }; -}; - -struct decoding_context { - unsigned int length; - unsigned char is_binary; - bool chunked; - - decoding_context() { reset(); }; - void reset() { - length = -1; - is_binary = 0x00; - chunked = false; - }; -}; - -class http_codec : public codec { - encoding_context _ec; - decoding_context _dc; - std::map>> _codecs; - -public: - explicit http_codec() : codec(), _ec(), _dc(), _codecs(){}; - virtual ~http_codec(){}; - - virtual int encode(const LibItsHttp__TypesAndValues::HttpMessage &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, LibItsHttp__TypesAndValues::HttpMessage &, params *params = NULL); - - void set_payload_codecs(const std::string &p_codecs); - -private: - int encode_request(const LibItsHttp__TypesAndValues::Request &p_request, TTCN_Buffer &p_encoding_buffer); - int encode_response(const LibItsHttp__TypesAndValues::Response &p_response, TTCN_Buffer &p_encoding_buffer); - int encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody &p_message_body, OCTETSTRING &p_encoding_buffer, const std::string &p_content_type); - - int decode_headers(TTCN_Buffer &decoding_buffer, LibItsHttp__TypesAndValues::Headers &headers, std::string &p_content_type); - int decode_header(CHARSTRING &header_line, LibItsHttp__TypesAndValues::Header &header); - int decode_body(TTCN_Buffer &decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody &message_body, const std::string &p_content_type); - int get_line(TTCN_Buffer &buffer, CHARSTRING &to, const bool concatenate_header_lines = false); - -}; // End of class http_codec diff --git a/ccsrc/Protocols/Http/http_layer.cc b/ccsrc/Protocols/Http/http_layer.cc deleted file mode 100644 index 227e5c0..0000000 --- a/ccsrc/Protocols/Http/http_layer.cc +++ /dev/null @@ -1,128 +0,0 @@ -#include "LibItsHttp_TypesAndValues.hh" - -#include "codec_stack_builder.hh" -#include "http_layer_factory.hh" - -#include "loggers.hh" - -#include "converter.hh" - -using namespace std; // Required for isnan() -#include "LibItsHttp_TestSystem.hh" -#include "LibItsHttp_TypesAndValues.hh" - -http_layer::http_layer(const std::string &p_type, const std::string ¶m) - : t_layer(p_type), _params(), _device_mode{false} { - loggers::get_instance().log(">>> http_layer::http_layer: %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - - params::const_iterator it = _params.find(params::codecs); - if (it != _params.cend()) { - _codec.set_payload_codecs(it->second); - } - it = _params.find(params::device_mode); - if (it != _params.cend()) { - _device_mode = (1 == converter::get_instance().string_to_int(it->second)); - } - it = _params.find(params::method); - if (it == _params.cend()) { - _params[params::method] = "POST"; - } - it = _params.find(params::uri); - if (it == _params.cend()) { - _params[params::uri] = "/"; - } - it = _params.find(params::host); - if (it == _params.cend()) { - _params[params::host] = "127.0.0.1"; - } - it = _params.find(params::content_type); - if (it == _params.cend()) { - _params[params::content_type] = "application/text"; - } -} - -void http_layer::sendMsg(const LibItsHttp__TypesAndValues::HttpMessage &p_http_message, params &p_param) { - loggers::get_instance().log_msg(">>> http_layer::sendMsg: ", p_http_message); - - // Encode HttpMessage - OCTETSTRING data; - _codec.encode(p_http_message, data); - send_data(data, _params); -} - -void http_layer::send_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log_msg(">>> http_layer::send_data: ", data); - - if (_device_mode) { // Need to build an HTTP packet - loggers::get_instance().log("http_layer::send_data: Build http layer"); - TTCN_Buffer buffer; - buffer.put_cs(_params[params::method].c_str()); - buffer.put_c(' '); - buffer.put_cs(_params[params::uri].c_str()); - buffer.put_cs(" HTTP/1.1\r\n"); - buffer.put_cs("Host: "); - buffer.put_cs(_params[params::host].c_str()); - buffer.put_cs("\r\n"); - buffer.put_cs("Content-type: "); - buffer.put_cs(_params[params::content_type].c_str()); - buffer.put_cs("\r\n"); - buffer.put_cs("Content-length: "); - buffer.put_cs(static_cast(int2str(data.lengthof() + 2 /*Stand for the last CRLF*/))); - buffer.put_cs("\r\n\r\n"); - buffer.put_os(data); - buffer.put_cs("\r\n"); - data = OCTETSTRING(buffer.get_len(), buffer.get_data()); - } - - loggers::get_instance().log_msg("http_layer::send_data: ", data); - send_to_all_layers(data, params); -} - -void http_layer::receive_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log_msg(">>> http_layer::receive_data: ", data); - - // Decode HTTP message - LibItsHttp__TypesAndValues::HttpMessage http_message; - if (_codec.decode(data, http_message) == -1) { - loggers::get_instance().warning("http_layer::receive_data: Failed to decode data"); - return; - } - if (_device_mode) { - OCTETSTRING os; - if (http_message.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_response)) { - if (http_message.response().body().ispresent()) { - LibItsHttp__MessageBodyTypes::HttpMessageBody &body = - static_cast(*http_message.response().body().get_opt_value()); - if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_binary__body)) { - LibItsHttp__BinaryMessageBodyTypes::BinaryBody &binary = body.binary__body(); - if (binary.ischosen(LibItsHttp__BinaryMessageBodyTypes::BinaryBody::ALT_raw)) { - os = binary.raw(); - } else { - loggers::get_instance().warning("http_layer::receive_data: A raw binary payload is expected"); - } - } else if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_html__body)) { - // TODO To be done - loggers::get_instance().warning("http_layer::receive_data: Not implemented yet"); - } else if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_xml__body)) { - // TODO To be done - loggers::get_instance().warning("http_layer::receive_data: Not implemented yet"); - } else if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_text__body)) { - // TODO To be done - loggers::get_instance().warning("http_layer::receive_data: Not implemented yet"); - } - receive_to_all_layers(os, params); - } else { - loggers::get_instance().warning("http_layer::receive_data: No body present"); - } - } else { - loggers::get_instance().warning("http_layer::receive_data: An HTTP response is expected"); - } - } else { - // Pass it to the ports - to_all_upper_ports(http_message, params); - } -} - -http_layer_factory http_layer_factory::_f; diff --git a/ccsrc/Protocols/Http/http_layer.hh b/ccsrc/Protocols/Http/http_layer.hh deleted file mode 100644 index 5a94e82..0000000 --- a/ccsrc/Protocols/Http/http_layer.hh +++ /dev/null @@ -1,83 +0,0 @@ -/*! - * \file http_layer.hh - * \brief Header file for ITS HTTP protocol layer. - * \author ETSI STF549 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include - -#include "t_layer.hh" - -#include "http_codec.hh" - -namespace LibItsHttp__TestSystem { - class HttpPort; -} - -namespace LibItsHttp__TypesAndValues { - class HttpMessage; //! Forward declaration of TITAN class -} - -class OCTETSTRING; //! Forward declaration of TITAN class - -/*! - * \class http_layer - * \brief This class provides a factory class to create an tcp_layer class instance - */ -class http_layer : public t_layer { - params _params; - http_codec _codec; - bool _device_mode; - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the http_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - http_layer() : t_layer(), _params(), _device_mode{false} { }; - /*! - * \brief Specialised constructor - * Create a new instance of the http_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - http_layer(const std::string& p_type, const std::string& p_param); - /*! - * \brief Default destructor - */ - virtual ~http_layer() { }; - - /*! - * \fn void sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param); - * \brief Send HTTP message to the lower layers - * \param[in] p_http_message The GeoNetworking message to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - void sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING& data, params& params); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING& data, params& info); -}; // End of class http_layer - diff --git a/ccsrc/Protocols/Http/http_layer_factory.hh b/ccsrc/Protocols/Http/http_layer_factory.hh deleted file mode 100644 index 5e4e71a..0000000 --- a/ccsrc/Protocols/Http/http_layer_factory.hh +++ /dev/null @@ -1,42 +0,0 @@ -/*! - * \file http_layer_factory.hh - * \brief Header file for ITS Http protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "http_layer.hh" - -/*! - * \class http_layer_factory - * \brief This class provides a factory class to create an http_layer class instance - */ -class http_layer_factory : public layer_factory { - static http_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the http_layer_factory class - * \remark The HTTP layer identifier is HTTP - */ - http_layer_factory() { - // Register factory - layer_stack_builder::register_layer_factory("HTTP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer *create_layer(const std::string &p_type, const std::string &p_param) { return new http_layer(p_type, p_param); }; -}; // End of class http_layer_factory diff --git a/ccsrc/Protocols/Http/module.mk b/ccsrc/Protocols/Http/module.mk deleted file mode 100644 index 2c92703..0000000 --- a/ccsrc/Protocols/Http/module.mk +++ /dev/null @@ -1,3 +0,0 @@ -sources := http_codec.cc http_layer.cc -includes := . - diff --git a/ccsrc/Protocols/IVIM/ivim_codec.cc b/ccsrc/Protocols/IVIM/ivim_codec.cc index 5fcca96..711a36a 100644 --- a/ccsrc/Protocols/IVIM/ivim_codec.cc +++ b/ccsrc/Protocols/IVIM/ivim_codec.cc @@ -15,7 +15,7 @@ int ivim_codec::encode(const IVIM__PDU__Descriptions::IVIM &ivim, OCTETSTRING &d return rc; } -int ivim_codec::decode(const OCTETSTRING &data, IVIM__PDU__Descriptions::IVIM &ivim, params *params) { +int ivim_codec::decode(const OCTETSTRING &data, IVIM__PDU__Descriptions::IVIM &ivim, params_its *params) { loggers::get_instance().log_msg(">>> ivim_codec::decode: ", data); int rc = asn_codec.decode(oct2bit(data), ivim); diff --git a/ccsrc/Protocols/IVIM/ivim_codec.hh b/ccsrc/Protocols/IVIM/ivim_codec.hh index 3181981..5a94e2a 100644 --- a/ccsrc/Protocols/IVIM/ivim_codec.hh +++ b/ccsrc/Protocols/IVIM/ivim_codec.hh @@ -2,7 +2,7 @@ #include "codec.hh" #include "ivim_pdu_codec.hh" -#include "params.hh" +#include "params_its.hh" #include "LibItsIvim_TypesAndValues.hh" // class BITSTRING; @@ -17,5 +17,5 @@ public: virtual ~ivim_codec(){}; virtual int encode(const IVIM__PDU__Descriptions::IVIM &ivim, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, IVIM__PDU__Descriptions::IVIM &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, IVIM__PDU__Descriptions::IVIM &, params_its *params = NULL); }; // End of class ivim_codec diff --git a/ccsrc/Protocols/IVIM_layers/ivim_layer.cc b/ccsrc/Protocols/IVIM_layers/ivim_layer.cc index 7470291..f186773 100644 --- a/ccsrc/Protocols/IVIM_layers/ivim_layer.cc +++ b/ccsrc/Protocols/IVIM_layers/ivim_layer.cc @@ -12,7 +12,7 @@ ivim_layer::ivim_layer(const std::string &p_type, const std::string ¶m) : t_layer(p_type), _params(), _codec() { loggers::get_instance().log(">>> ivim_layer::ivim_layer: %s, %s", to_string().c_str(), param.c_str()); // Setup parameters - params::convert(_params, param); + params_its::convert(_params, param); _params.insert(std::make_pair("its_aid", "139")); // ETSI TS 102 965 V1.2.1 (2015-06) _params.insert(std::make_pair("payload_type", "6")); // IVI message id - See ETSI TS 103 301 @@ -21,7 +21,7 @@ ivim_layer::ivim_layer(const std::string &p_type, const std::string ¶m) : t_ registration::get_instance().add_item(p_type, this); } -void ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::IvimReq &p, params ¶ms) { +void ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::IvimReq &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> ivim_layer::sendMsg: ", p); // Encode IVIM PDU @@ -33,7 +33,7 @@ void ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::IvimReq &p, params &p send_data(data, _params); } -void ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::IvimInd &p, params ¶ms) { +void ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::IvimInd &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> ivim_layer::sendMsg: ", p); // Encode IVIM PDU @@ -45,13 +45,13 @@ void ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::IvimInd &p, params &p send_data(data, _params); } -void ivim_layer::send_data(OCTETSTRING &data, params ¶ms) { +void ivim_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> ivim_layer::send_data: ", data); // params.log(); send_to_all_layers(data, params); } -void ivim_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void ivim_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> ivim_layer::receive_data: ", data); params.log(); @@ -72,63 +72,63 @@ void ivim_layer::receive_data(OCTETSTRING &data, params ¶ms) { // Process lower layer data // recvTime - params::const_iterator it = params.find(params::timestamp); + params_its::const_iterator it = params.find(params_its::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader - it = params.find(params::gn_next_header); + it = params.find(params_its::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { p.gnNextHeader().set_to_omit(); } // gnHeaderType - it = params.find(params::gn_header_type); + it = params.find(params_its::gn_header_type); if (it != params.cend()) { p.gnHeaderType() = std::stoi(it->second); } else { p.gnHeaderType().set_to_omit(); } // gnHeaderSubtype - it = params.find(params::gn_header_sub_type); + it = params.find(params_its::gn_header_sub_type); if (it != params.cend()) { p.gnHeaderSubtype() = std::stoi(it->second); } else { p.gnHeaderSubtype().set_to_omit(); } // gnLifetime - it = params.find(params::gn_lifetime); + it = params.find(params_its::gn_lifetime); if (it != params.cend()) { p.gnLifetime() = std::stoi(it->second); } else { p.gnLifetime().set_to_omit(); } // gnTrafficClass - it = params.find(params::gn_traffic_class); + it = params.find(params_its::gn_traffic_class); if (it != params.cend()) { p.gnTrafficClass() = std::stoi(it->second); } else { p.gnTrafficClass().set_to_omit(); } // btpDestinationPort - it = params.find(params::btp_destination_port); + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { p.btpDestinationPort() = std::stoi(it->second); } else { p.btpDestinationPort().set_to_omit(); } // btpInfo - it = params.find(params::btp_info); + it = params.find(params_its::btp_info); if (it != params.cend()) { p.btpInfo() = std::stoi(it->second); } else { p.btpInfo().set_to_omit(); } // ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("ivim_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -136,7 +136,7 @@ void ivim_layer::receive_data(OCTETSTRING &data, params ¶ms) { p.ssp().set_to_omit(); } // its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { p.its__aid() = std::stoi(it->second); } else { diff --git a/ccsrc/Protocols/IVIM_layers/ivim_layer.hh b/ccsrc/Protocols/IVIM_layers/ivim_layer.hh index b6aac14..b5c8ed4 100644 --- a/ccsrc/Protocols/IVIM_layers/ivim_layer.hh +++ b/ccsrc/Protocols/IVIM_layers/ivim_layer.hh @@ -20,7 +20,7 @@ namespace LibItsIvim__TestSystem { } // namespace LibItsIvim__TestSystem class ivim_layer : public t_layer { - params _params; + params_its _params; ivim_codec _codec; public: @@ -28,11 +28,11 @@ public: ivim_layer(const std::string &p_type, const std::string ¶m); virtual ~ivim_layer(){}; - void sendMsg(const LibItsIvim__TypesAndValues::IvimReq &, params ¶ms); - void sendMsg(const LibItsIvim__TypesAndValues::IvimInd &, params ¶ms); + void sendMsg(const LibItsIvim__TypesAndValues::IvimReq &, params_its ¶ms); + void sendMsg(const LibItsIvim__TypesAndValues::IvimInd &, params_its ¶ms); - virtual void send_data(OCTETSTRING &data, params ¶ms); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); + virtual void receive_data(OCTETSTRING &data, params_its &info); int enable_secured_mode(const std::string &p_certificate_id, const boolean p_enforce_security); diff --git a/ccsrc/Protocols/LTE/lte_layer.cc b/ccsrc/Protocols/LTE/lte_layer.cc index 4bcb362..5492967 100644 --- a/ccsrc/Protocols/LTE/lte_layer.cc +++ b/ccsrc/Protocols/LTE/lte_layer.cc @@ -15,13 +15,13 @@ lte_layer::lte_layer(const std::string &p_type, const std::string ¶ms) params::convert(_params, params); // Uu interface - params::const_iterator it = _params.find(params::uu_transport); + params_its::const_iterator it = _params.find(params_its::uu_transport); if (it != _params.cend()) { if (it->second.compare("tcp") == 0) { _uu_transport.assign("tcp"); } } - it = _params.find(params::uu_protocol); + it = _params.find(params_its::uu_protocol); if (it == _params.cend()) { // No protocol specify, use raw V2X message setup_raw_v2x(); @@ -39,7 +39,7 @@ lte_layer::lte_layer(const std::string &p_type, const std::string ¶ms) _uu_layer->incoming_packet_observer_attach(this); // PC#5 interface - it = _params.find(params::pc5_layer); + it = _params.find(params_its::pc5_layer); if (it == _params.cend()) { _pc5_layer_id.assign("QUALCOMM"); } else { @@ -80,7 +80,7 @@ void lte_layer::close() { } } -void lte_layer::send_data(OCTETSTRING &data, params ¶ms) { +void lte_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> lte_layer::send_data: ", data); params::const_iterator it = params.find(std::string("its_aid")); @@ -101,7 +101,7 @@ void lte_layer::send_data(OCTETSTRING &data, params ¶ms) { } } -void lte_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void lte_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> lte_layer::receive_data: ", data); receive_to_all_layers(data, params); @@ -112,7 +112,7 @@ void lte_layer::Handle_Fd_Event_Readable(int fd) { } -void lte_layer::update(OCTETSTRING &p_data, params &p_params) { +void lte_layer::update(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log_msg(">>> lte_layer::update: ", p_data); p_params.log(); diff --git a/ccsrc/Protocols/LTE/lte_layer.hh b/ccsrc/Protocols/LTE/lte_layer.hh index 920cac6..4713bb2 100644 --- a/ccsrc/Protocols/LTE/lte_layer.hh +++ b/ccsrc/Protocols/LTE/lte_layer.hh @@ -20,7 +20,7 @@ * \brief This class provides description of ITS UDP/IP protocol layer */ class lte_layer : public layer, public data_event_notifier { - params _params; //! Layer parameters + params_its _params; //! Layer parameters std::string _uu_transport; std::string _uu_protocol; std::string _pc5_layer_id; @@ -49,7 +49,7 @@ class lte_layer : public layer, public data_event_notifier { * \param[in] p_data The data to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - virtual void send_data(OCTETSTRING &data, params ¶ms); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); /*! * \virtual * \fn void receive_data(OCTETSTRING& data, params& params); @@ -57,9 +57,9 @@ class lte_layer : public layer, public data_event_notifier { * \param[in] p_data The bytes formated data received * \param[in] p_params Some lower layers parameters values when data was received */ - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void receive_data(OCTETSTRING &data, params_its &info); - virtual void update(OCTETSTRING &p_data, params &p_params); + virtual void update(OCTETSTRING &p_data, params_its &p_params); void Handle_Fd_Event_Readable(int fd); diff --git a/ccsrc/Protocols/LTE/lte_tcp_layer.cc b/ccsrc/Protocols/LTE/lte_tcp_layer.cc index 2d62525..6a1a43c 100644 --- a/ccsrc/Protocols/LTE/lte_tcp_layer.cc +++ b/ccsrc/Protocols/LTE/lte_tcp_layer.cc @@ -7,19 +7,22 @@ lte_tcp_layer::lte_tcp_layer(const std::string &p_type, const std::string &p_par } -lte_tcp_layer::lte_tcp_layer(const std::string &p_type, const params &p_param): tcp_layer(p_type, p_param), data_event_observer() { +lte_tcp_layer::lte_tcp_layer(const std::string &p_type, const params_its &p_param): tcp_layer(p_type, p_param), data_event_observer() { loggers::get_instance().log(">>> lte_tcp_layer::lte_tcp_layer (2)"); } -void lte_tcp_layer::receive_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log_msg(">>> lte_tcp_layer::receive_data: ", data); +void lte_tcp_layer::receive_data(OCTETSTRING& p_data, params& p_params) { + loggers::get_instance().log_msg(">>> lte_tcp_layer::receive_data: ", p_data); + + const params_its& params = static_cast(p_params); + loggers::get_instance().log(">>> lte_tcp_layer::receive_msg: %s", params.uu_protocol.c_str()); if (_observers.size() != 0) { - incoming_packet_notify(data, params); + incoming_packet_notify(p_data, (params_its&)params); } else { // Pass the packet to the upper layers - receive_to_all_layers(data, params); + receive_to_all_layers(p_data, (params_its&)params); } } diff --git a/ccsrc/Protocols/LTE/lte_tcp_layer.hh b/ccsrc/Protocols/LTE/lte_tcp_layer.hh index 3ba673d..df2f3f2 100644 --- a/ccsrc/Protocols/LTE/lte_tcp_layer.hh +++ b/ccsrc/Protocols/LTE/lte_tcp_layer.hh @@ -35,14 +35,14 @@ public: //! \publicsection * \param[in] p_type \todo * \param[in] p_param \todo */ - lte_tcp_layer(const std::string &p_type, const params &p_param); + lte_tcp_layer(const std::string &p_type, const params_its &p_param); /*! * \brief Default destructor * \remark If \see _reconnect_on_send is set to false, the disconnection is done by the destructor */ virtual ~lte_tcp_layer() {}; - void receive_data(OCTETSTRING &data, params ¶ms); + void receive_data(OCTETSTRING& p_data, params& p_params); inline void incoming_packet_observer_attach(data_event_notifier* p_observer) { _observers.push_back(p_observer); @@ -52,7 +52,7 @@ public: //! \publicsection _observers.erase(std::remove(_observers.begin(), _observers.end(), p_observer), _observers.end()); }; - inline void incoming_packet_notify(OCTETSTRING &p_data, params &p_params) { + inline void incoming_packet_notify(OCTETSTRING &p_data, params_its &p_params) { for (auto o : _observers) { o->update(p_data, p_params); } diff --git a/ccsrc/Protocols/LTE/lte_udp_layer.cc b/ccsrc/Protocols/LTE/lte_udp_layer.cc index be53598..6e73180 100644 --- a/ccsrc/Protocols/LTE/lte_udp_layer.cc +++ b/ccsrc/Protocols/LTE/lte_udp_layer.cc @@ -7,12 +7,12 @@ lte_udp_layer::lte_udp_layer(const std::string &p_type, const std::string &p_par } -lte_udp_layer::lte_udp_layer(const std::string &p_type, const params &p_param): udp_layer(p_type, p_param), data_event_observer() { +lte_udp_layer::lte_udp_layer(const std::string &p_type, const params_its &p_param): udp_layer(p_type, p_param), data_event_observer() { loggers::get_instance().log(">>> lte_udp_layer::lte_udp_layer (2)"); } -void lte_udp_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void lte_udp_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> lte_udp_layer::receive_data: ", data); if (_observers.size() != 0) { diff --git a/ccsrc/Protocols/LTE/lte_udp_layer.hh b/ccsrc/Protocols/LTE/lte_udp_layer.hh index 50ed918..e172464 100644 --- a/ccsrc/Protocols/LTE/lte_udp_layer.hh +++ b/ccsrc/Protocols/LTE/lte_udp_layer.hh @@ -35,13 +35,13 @@ public: //! \publicsection * \param[in] p_type \todo * \param[in] p_param \todo */ - lte_udp_layer(const std::string &p_type, const params &p_param); + lte_udp_layer(const std::string &p_type, const params_its &p_param); /*! * \brief Default destructor */ virtual ~lte_udp_layer() {}; - void receive_data(OCTETSTRING &data, params ¶ms); + void receive_data(OCTETSTRING &data, params_its ¶ms); inline void incoming_packet_observer_attach(data_event_notifier* p_observer) { _observers.push_back(p_observer); @@ -51,7 +51,7 @@ public: //! \publicsection _observers.erase(std::remove(_observers.begin(), _observers.end(), p_observer), _observers.end()); }; - inline void incoming_packet_notify(OCTETSTRING &p_data, params &p_params) { + inline void incoming_packet_notify(OCTETSTRING &p_data, params_its &p_params) { for (auto o : _observers) { o->update(p_data, p_params); } diff --git a/ccsrc/Protocols/LTE/uu_amqp.cc b/ccsrc/Protocols/LTE/uu_amqp.cc index da25d39..50b8fd9 100644 --- a/ccsrc/Protocols/LTE/uu_amqp.cc +++ b/ccsrc/Protocols/LTE/uu_amqp.cc @@ -26,11 +26,11 @@ void uu_amqp::close() { } } -int uu_amqp::setup(const params ¶ms) { +int uu_amqp::setup(const params_its ¶ms) { loggers::get_instance().log(">>> uu_amqp::setup"); // Transport layer to the broker - params::const_iterator it = params.find(params::uu_transport); + params_its::const_iterator it = params.find(params_its::uu_transport); if (it != params.cend()) { if (it->second.compare("tcp") == 0) { loggers::get_instance().log("uu_amqp::setup: Create TCP layer"); @@ -60,17 +60,17 @@ int uu_amqp::shutdown() { return 0; } -void uu_amqp::send_data(OCTETSTRING &data, params ¶ms) { +void uu_amqp::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log(">>> uu_amqp::send_data"); _layer->send_data(data, params); } -void uu_amqp::receive_data(OCTETSTRING &p_data, params &p_params) { +void uu_amqp::receive_data(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log(">>> uu_amqp::receive_data"); } -void uu_amqp::update(OCTETSTRING &p_data, params &p_params) { +void uu_amqp::update(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log_msg(">>> uu_amqp::update: ", p_data); receive_data(p_data, p_params); diff --git a/ccsrc/Protocols/LTE/uu_amqp.hh b/ccsrc/Protocols/LTE/uu_amqp.hh index 95c4d11..3f98138 100644 --- a/ccsrc/Protocols/LTE/uu_amqp.hh +++ b/ccsrc/Protocols/LTE/uu_amqp.hh @@ -12,13 +12,13 @@ public: uu_amqp(); ~uu_amqp(); - int setup(const params ¶ms); + int setup(const params_its ¶ms); int shutdown(); - void send_data(OCTETSTRING &data, params ¶ms); - void receive_data(OCTETSTRING &p_data, params &p_params); + void send_data(OCTETSTRING &data, params_its ¶ms); + void receive_data(OCTETSTRING &p_data, params_its &p_params); - void update(OCTETSTRING &p_data, params &p_params); + void update(OCTETSTRING &p_data, params_its &p_params); inline void incoming_packet_observer_attach(data_event_notifier* p_observer) { _observers.push_back(p_observer); @@ -28,7 +28,7 @@ public: _observers.erase(std::remove(_observers.begin(), _observers.end(), p_observer), _observers.end()); }; - inline void incoming_packet_notify(OCTETSTRING &p_data, params &p_params) { + inline void incoming_packet_notify(OCTETSTRING &p_data, params_its &p_params) { for (auto o : _observers) { o->update(p_data, p_params); } diff --git a/ccsrc/Protocols/LTE/uu_interface.hh b/ccsrc/Protocols/LTE/uu_interface.hh index 26bf133..c0a8f12 100644 --- a/ccsrc/Protocols/LTE/uu_interface.hh +++ b/ccsrc/Protocols/LTE/uu_interface.hh @@ -1,6 +1,6 @@ #pragma once -#include "params.hh" +#include "params_its.hh" #include "layer.hh" #include "data_event_observer.hh" @@ -11,7 +11,7 @@ protected: public: uu_interface(): _layer{0} { }; - virtual int setup(const params ¶ms) = 0; + virtual int setup(const params_its ¶ms) = 0; virtual int shutdown() = 0; inline void incoming_packet_observer_attach(data_event_notifier* p_observer) { @@ -22,7 +22,7 @@ public: _observers.erase(std::remove(_observers.begin(), _observers.end(), p_observer), _observers.end()); }; - inline void incoming_packet_notify(OCTETSTRING &p_data, params &p_params) { + inline void incoming_packet_notify(OCTETSTRING &p_data, params_its &p_params) { for (auto o : _observers) { o->update(p_data, p_params); } diff --git a/ccsrc/Protocols/LTE/uu_mqtt.cc b/ccsrc/Protocols/LTE/uu_mqtt.cc index 6ab51c9..329f670 100644 --- a/ccsrc/Protocols/LTE/uu_mqtt.cc +++ b/ccsrc/Protocols/LTE/uu_mqtt.cc @@ -31,21 +31,21 @@ void uu_mqtt::close() { } } -int uu_mqtt::setup(const params ¶ms) { +int uu_mqtt::setup(const params_its ¶ms) { loggers::get_instance().log(">>> uu_mqtt::setup"); // Extract protocol name - params::const_iterator it = params.find(params::mqtt_protocol); + params::const_iterator it = params.find(params_its::mqtt_protocol); if (it != params.cend()) { _protocol_name.assign(it->second); } // Extract client identity - it = params.find(params::mqtt_client_id); + it = params.find(params_its::mqtt_client_id); if (it != params.cend()) { _client_id.assign(it->second); } // Extract topics - it = params.find(params::mqtt_topics); + it = params.find(params_its::mqtt_topics); if (it != params.cend()) { if (it->second.compare("obu") == 0) { // Subscribe to /3gpp/v2x/obu published messages // OBUs publishes to RSUs topics @@ -93,7 +93,7 @@ int uu_mqtt::setup(const params ¶ms) { // TODO: Protocol name and client_id // Transport layer to the broker - it = params.find(params::uu_transport); + it = params.find(params_its::uu_transport); if (it != params.cend()) { if (it->second.compare("tcp") == 0) { loggers::get_instance().log("uu_mqtt::setup: Create TCP layer"); @@ -131,13 +131,13 @@ int uu_mqtt::shutdown() { return 0; } -void uu_mqtt::send_data(OCTETSTRING &data, params ¶ms) { +void uu_mqtt::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log(">>> uu_mqtt::send_data"); send_publish_command(data, params); } -void uu_mqtt::receive_data(OCTETSTRING &p_data, params &p_params) { +void uu_mqtt::receive_data(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log(">>> uu_mqtt::receive_data: %d", _state); switch (_state) { @@ -173,7 +173,7 @@ void uu_mqtt::receive_data(OCTETSTRING &p_data, params &p_params) { } // End of 'switch'statement } -void uu_mqtt::update(OCTETSTRING &p_data, params &p_params) { +void uu_mqtt::update(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log_msg(">>> uu_mqtt::update: ", p_data); receive_data(p_data, p_params); @@ -200,7 +200,7 @@ void uu_mqtt::send_connect_command() { data.put_string(calculate_message_length(data_message.get_len())); // Message length data.put_string(OCTETSTRING(data_message.get_len(), data_message.get_data())); - params param; + params_its param; OCTETSTRING os = OCTETSTRING(data.get_len(), data.get_data()); loggers::get_instance().log_msg("uu_mqtt::send_connect_command: ", os); _state = await_connect_ack; @@ -253,13 +253,13 @@ void uu_mqtt::send_subscribe_command() { data.put_string(calculate_message_length(data_message.get_len())); // Message length data.put_string(OCTETSTRING(data_message.get_len(), data_message.get_data())); - params param; + params_its param; OCTETSTRING os = OCTETSTRING(data.get_len(), data.get_data()); loggers::get_instance().log_msg("uu_mqtt::send_subscribe_command: ", os); _layer->send_data(os, param); } -void uu_mqtt::send_publish_command(const OCTETSTRING &p_data, const params &p_params) { +void uu_mqtt::send_publish_command(const OCTETSTRING &p_data, const params_its &p_params) { loggers::get_instance().log(">>> uu_mqtt::send_publish_command: %d", _state); if (_state != publishing) { @@ -289,7 +289,7 @@ void uu_mqtt::send_publish_command(const OCTETSTRING &p_data, const params &p_pa data.put_string(calculate_message_length(data_message.get_len())); // Message length data.put_string(OCTETSTRING(data_message.get_len(), data_message.get_data())); - params param; + params_its param; OCTETSTRING os = OCTETSTRING(data.get_len(), data.get_data()); loggers::get_instance().log_msg("uu_mqtt::send_publish_command: ", os); _layer->send_data(os, param); @@ -307,7 +307,7 @@ void uu_mqtt::send_disconnect_command() { _state = idle; } -int uu_mqtt::recv_connect_ack(OCTETSTRING &p_data, params &p_params) { +int uu_mqtt::recv_connect_ack(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log(">>> uu_mqtt::recv_connect_ack: %d", _state); loggers::get_instance().log_msg(">>> uu_mqtt::recv_connect_ack", p_data); @@ -331,7 +331,7 @@ int uu_mqtt::recv_connect_ack(OCTETSTRING &p_data, params &p_params) { return 0; } -int uu_mqtt::recv_subscribe_ack(OCTETSTRING &p_data, params &p_params) { +int uu_mqtt::recv_subscribe_ack(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log(">>> uu_mqtt::recv_subscribe_ack: %d", _state); loggers::get_instance().log_msg(">>> uu_mqtt::recv_subscribe_ack", p_data); @@ -350,7 +350,7 @@ int uu_mqtt::recv_subscribe_ack(OCTETSTRING &p_data, params &p_params) { return 0; } -int uu_mqtt::recv_publish(OCTETSTRING &p_data, params &p_params, OCTETSTRING& p_message) { +int uu_mqtt::recv_publish(OCTETSTRING &p_data, params_its &p_params, OCTETSTRING& p_message) { loggers::get_instance().log(">>> uu_mqtt::recv_publish: %d", _state); loggers::get_instance().log_msg(">>> uu_mqtt::recv_publish", p_data); @@ -449,4 +449,4 @@ int uu_mqtt::extract_message_length(OCTETSTRING &p_data, unsigned int* p_counter loggers::get_instance().log("<<< uu_mqtt::extract_message_length: %d", value); return value; -} \ No newline at end of file +} diff --git a/ccsrc/Protocols/LTE/uu_mqtt.hh b/ccsrc/Protocols/LTE/uu_mqtt.hh index 32a01c5..e31245d 100644 --- a/ccsrc/Protocols/LTE/uu_mqtt.hh +++ b/ccsrc/Protocols/LTE/uu_mqtt.hh @@ -32,13 +32,13 @@ public: uu_mqtt(); ~uu_mqtt(); - int setup(const params ¶ms); + int setup(const params_its ¶ms); int shutdown(); - void send_data(OCTETSTRING &data, params ¶ms); - void receive_data(OCTETSTRING &p_data, params &p_params); + void send_data(OCTETSTRING &data, params_its ¶ms); + void receive_data(OCTETSTRING &p_data, params_its &p_params); - void update(OCTETSTRING &p_data, params &p_params); + void update(OCTETSTRING &p_data, params_its &p_params); inline void incoming_packet_observer_attach(data_event_notifier* p_observer) { _observers.push_back(p_observer); @@ -48,7 +48,7 @@ public: _observers.erase(std::remove(_observers.begin(), _observers.end(), p_observer), _observers.end()); }; - inline void incoming_packet_notify(OCTETSTRING &p_data, params &p_params) { + inline void incoming_packet_notify(OCTETSTRING &p_data, params_its &p_params) { for (auto o : _observers) { o->update(p_data, p_params); } @@ -60,12 +60,12 @@ private: void send_first_subscribe_command(); void send_next_subscribe_command(); void send_subscribe_command(); - void send_publish_command(const OCTETSTRING &p_data, const params &p_params); + void send_publish_command(const OCTETSTRING &p_data, const params_its &p_params); void send_disconnect_command(); - int recv_connect_ack(OCTETSTRING &p_data, params &p_params); - int recv_subscribe_ack(OCTETSTRING &p_data, params &p_params); - int recv_publish(OCTETSTRING &p_data, params &p_params, OCTETSTRING& p_message); + int recv_connect_ack(OCTETSTRING &p_data, params_its &p_params); + int recv_subscribe_ack(OCTETSTRING &p_data, params_its &p_params); + int recv_publish(OCTETSTRING &p_data, params_its &p_params, OCTETSTRING& p_message); OCTETSTRING calculate_message_length(const int p_payload_len); int extract_message_length(OCTETSTRING &p_data, unsigned int* p_counter); diff --git a/ccsrc/Protocols/LTE/uu_raw.cc b/ccsrc/Protocols/LTE/uu_raw.cc index 579b6ff..137c009 100644 --- a/ccsrc/Protocols/LTE/uu_raw.cc +++ b/ccsrc/Protocols/LTE/uu_raw.cc @@ -24,11 +24,11 @@ void uu_raw::close() { } } -int uu_raw::setup(const params ¶ms) { +int uu_raw::setup(const params_its ¶ms) { loggers::get_instance().log(">>> uu_raw::setup"); // Transport layer - params::const_iterator it = params.find(params::uu_transport); + params::const_iterator it = params.find(params_its::uu_transport); if (it != params.cend()) { if (it->second.compare("tcp") == 0) { loggers::get_instance().log("uu_raw::setup: Create TCP layer"); @@ -58,18 +58,18 @@ int uu_raw::shutdown() { return 0; } -void uu_raw::send_data(OCTETSTRING &data, params ¶ms) { +void uu_raw::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log(">>> uu_raw::send_data"); _layer->send_data(data, params); } -void uu_raw::receive_data(OCTETSTRING &p_data, params &p_params) { +void uu_raw::receive_data(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log(">>> uu_raw::receive_data"); incoming_packet_notify(p_data, p_params); } -void uu_raw::update(OCTETSTRING &p_data, params &p_params) { +void uu_raw::update(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log_msg(">>> uu_raw::update: ", p_data); receive_data(p_data, p_params); diff --git a/ccsrc/Protocols/LTE/uu_raw.hh b/ccsrc/Protocols/LTE/uu_raw.hh index 6485cf6..4dfa9f0 100644 --- a/ccsrc/Protocols/LTE/uu_raw.hh +++ b/ccsrc/Protocols/LTE/uu_raw.hh @@ -12,13 +12,13 @@ public: uu_raw(); ~uu_raw(); - int setup(const params ¶ms); + int setup(const params_its ¶ms); int shutdown(); - void send_data(OCTETSTRING &data, params ¶ms); - void receive_data(OCTETSTRING &p_data, params &p_params); + void send_data(OCTETSTRING &data, params_its ¶ms); + void receive_data(OCTETSTRING &p_data, params_its &p_params); - void update(OCTETSTRING &p_data, params &p_params); + void update(OCTETSTRING &p_data, params_its &p_params); inline void incoming_packet_observer_attach(data_event_notifier* p_observer) { _observers.push_back(p_observer); @@ -28,7 +28,7 @@ public: _observers.erase(std::remove(_observers.begin(), _observers.end(), p_observer), _observers.end()); }; - inline void incoming_packet_notify(OCTETSTRING &p_data, params &p_params) { + inline void incoming_packet_notify(OCTETSTRING &p_data, params_its &p_params) { for (auto o : _observers) { o->update(p_data, p_params); } diff --git a/ccsrc/Protocols/MapemSpatem/mapem_codec.cc b/ccsrc/Protocols/MapemSpatem/mapem_codec.cc index a83dc7c..2ce09cb 100644 --- a/ccsrc/Protocols/MapemSpatem/mapem_codec.cc +++ b/ccsrc/Protocols/MapemSpatem/mapem_codec.cc @@ -15,7 +15,7 @@ int mapem_codec::encode(const MAPEM__PDU__Descriptions::MAPEM &mapem, OCTETSTRIN return rc; } -int mapem_codec::decode(const OCTETSTRING &data, MAPEM__PDU__Descriptions::MAPEM &mapem, params *params) { +int mapem_codec::decode(const OCTETSTRING &data, MAPEM__PDU__Descriptions::MAPEM &mapem, params_its *params) { loggers::get_instance().log_msg(">>> mapem_codec::decode: ", data); int rc = asn_codec.decode(oct2bit(data), mapem); diff --git a/ccsrc/Protocols/MapemSpatem/mapem_codec.hh b/ccsrc/Protocols/MapemSpatem/mapem_codec.hh index 0a1e3b8..a9cd2db 100644 --- a/ccsrc/Protocols/MapemSpatem/mapem_codec.hh +++ b/ccsrc/Protocols/MapemSpatem/mapem_codec.hh @@ -2,7 +2,7 @@ #include "codec.hh" #include "mapem_pdu_codec.hh" -#include "params.hh" +#include "params_its.hh" #include "LibItsMapemSpatem_TypesAndValues.hh" @@ -14,5 +14,5 @@ public: virtual ~mapem_codec(){}; virtual int encode(const MAPEM__PDU__Descriptions::MAPEM &sapem, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, MAPEM__PDU__Descriptions::MAPEM &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, MAPEM__PDU__Descriptions::MAPEM &, params_its *params = NULL); }; // End of class mapem_codec diff --git a/ccsrc/Protocols/MapemSpatem/spatem_codec.cc b/ccsrc/Protocols/MapemSpatem/spatem_codec.cc index 787efca..25ecde1 100644 --- a/ccsrc/Protocols/MapemSpatem/spatem_codec.cc +++ b/ccsrc/Protocols/MapemSpatem/spatem_codec.cc @@ -15,7 +15,7 @@ int spatem_codec::encode(const SPATEM__PDU__Descriptions::SPATEM &spatem, OCTETS return rc; } -int spatem_codec::decode(const OCTETSTRING &data, SPATEM__PDU__Descriptions::SPATEM &spatem, params *params) { +int spatem_codec::decode(const OCTETSTRING &data, SPATEM__PDU__Descriptions::SPATEM &spatem, params_its *params) { loggers::get_instance().log_msg(">>> spatem_codec::decode: ", data); int rc = asn_codec.decode(oct2bit(data), spatem); diff --git a/ccsrc/Protocols/MapemSpatem/spatem_codec.hh b/ccsrc/Protocols/MapemSpatem/spatem_codec.hh index ec18d7b..bfb07b6 100644 --- a/ccsrc/Protocols/MapemSpatem/spatem_codec.hh +++ b/ccsrc/Protocols/MapemSpatem/spatem_codec.hh @@ -1,7 +1,7 @@ #pragma once #include "codec.hh" -#include "params.hh" +#include "params_its.hh" #include "spatem_pdu_codec.hh" #include "mapem_spatem_types.hh" @@ -14,5 +14,5 @@ public: virtual ~spatem_codec(){}; virtual int encode(const SPATEM__PDU__Descriptions::SPATEM &spatem, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, SPATEM__PDU__Descriptions::SPATEM &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, SPATEM__PDU__Descriptions::SPATEM &, params_its *params = NULL); }; // End of class spatem_codec diff --git a/ccsrc/Protocols/MapemSpatem_layers/mapem_spatem_layer.cc b/ccsrc/Protocols/MapemSpatem_layers/mapem_spatem_layer.cc index 5029a8b..8cfcf40 100644 --- a/ccsrc/Protocols/MapemSpatem_layers/mapem_spatem_layer.cc +++ b/ccsrc/Protocols/MapemSpatem_layers/mapem_spatem_layer.cc @@ -11,7 +11,7 @@ mapem_spatem_layer::mapem_spatem_layer(const std::string &p_type, const std::str : t_layer(p_type), _params(), _mapem_codec(), _spatem_codec() { loggers::get_instance().log(">>> mapem_spatem_layer::mapem_spatem_layer: %s, %s", to_string().c_str(), param.c_str()); // Setup parameters - params::convert(_params, param); + params_its::convert(_params, param); _params.insert(std::make_pair("its_aid", "138")); // ETSI TS 102 965 V1.2.1 (2015-06) _params.insert(std::make_pair("payload_type", "2")); // MAPE message id - See ETSI TS 102 894 @@ -20,7 +20,7 @@ mapem_spatem_layer::mapem_spatem_layer(const std::string &p_type, const std::str registration::get_instance().add_item(p_type, this); } -void mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::MapemReq &p, params ¶ms) { +void mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::MapemReq &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> mapem_spatem_layer::sendMsg: ", p); // Encode mapem PDU @@ -33,7 +33,7 @@ void mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::MapemR send_data(data, _params); } -void mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::SpatemReq &p, params ¶ms) { +void mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::SpatemReq &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> mapem_spatem_layer::sendMsg: ", p); // Encode spatem PDU @@ -45,13 +45,13 @@ void mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::Spatem send_data(data, _params); } -void mapem_spatem_layer::send_data(OCTETSTRING &data, params ¶ms) { +void mapem_spatem_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> mapem_spatem_layer::send_data: ", data); // params.log(); send_to_all_layers(data, params); } -void mapem_spatem_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void mapem_spatem_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> mapem_spatem_layer::receive_data: ", data); // Sanity check @@ -65,63 +65,63 @@ void mapem_spatem_layer::receive_data(OCTETSTRING &data, params ¶ms) { } // else, continue // Process lower layer data // recvTime - params::const_iterator it = params.find(params::timestamp); + params_its::const_iterator it = params.find(params_its::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader - it = params.find(params::gn_next_header); + it = params.find(params_its::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { p.gnNextHeader().set_to_omit(); } // gnHeaderType - it = params.find(params::gn_header_type); + it = params.find(params_its::gn_header_type); if (it != params.cend()) { p.gnHeaderType() = std::stoi(it->second); } else { p.gnHeaderType().set_to_omit(); } // gnHeaderSubtype - it = params.find(params::gn_header_sub_type); + it = params.find(params_its::gn_header_sub_type); if (it != params.cend()) { p.gnHeaderSubtype() = std::stoi(it->second); } else { p.gnHeaderSubtype().set_to_omit(); } // gnLifetime - it = params.find(params::gn_lifetime); + it = params.find(params_its::gn_lifetime); if (it != params.cend()) { p.gnLifetime() = std::stoi(it->second); } else { p.gnLifetime().set_to_omit(); } // gnTrafficClass - it = params.find(params::gn_traffic_class); + it = params.find(params_its::gn_traffic_class); if (it != params.cend()) { p.gnTrafficClass() = std::stoi(it->second); } else { p.gnTrafficClass().set_to_omit(); } // btpDestinationPort - it = params.find(params::btp_destination_port); + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { p.btpDestinationPort() = std::stoi(it->second); } else { p.btpDestinationPort().set_to_omit(); } // btpInfo - it = params.find(params::btp_info); + it = params.find(params_its::btp_info); if (it != params.cend()) { p.btpInfo() = std::stoi(it->second); } else { p.btpInfo().set_to_omit(); } // ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("mapem_spatem_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -129,7 +129,7 @@ void mapem_spatem_layer::receive_data(OCTETSTRING &data, params ¶ms) { p.ssp().set_to_omit(); } // its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { p.its__aid() = std::stoi(it->second); } else { @@ -148,63 +148,63 @@ void mapem_spatem_layer::receive_data(OCTETSTRING &data, params ¶ms) { } // else, continue // Process lower layer data // recvTime - params::const_iterator it = params.find(params::timestamp); + params_its::const_iterator it = params.find(params_its::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader - it = params.find(params::gn_next_header); + it = params.find(params_its::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { p.gnNextHeader().set_to_omit(); } // gnHeaderType - it = params.find(params::gn_header_type); + it = params.find(params_its::gn_header_type); if (it != params.cend()) { p.gnHeaderType() = std::stoi(it->second); } else { p.gnHeaderType().set_to_omit(); } // gnHeaderSubtype - it = params.find(params::gn_header_sub_type); + it = params.find(params_its::gn_header_sub_type); if (it != params.cend()) { p.gnHeaderSubtype() = std::stoi(it->second); } else { p.gnHeaderSubtype().set_to_omit(); } // gnLifetime - it = params.find(params::gn_lifetime); + it = params.find(params_its::gn_lifetime); if (it != params.cend()) { p.gnLifetime() = std::stoi(it->second); } else { p.gnLifetime().set_to_omit(); } // gnTrafficClass - it = params.find(params::gn_traffic_class); + it = params.find(params_its::gn_traffic_class); if (it != params.cend()) { p.gnTrafficClass() = std::stoi(it->second); } else { p.gnTrafficClass().set_to_omit(); } // btpDestinationPort - it = params.find(params::btp_destination_port); + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { p.btpDestinationPort() = std::stoi(it->second); } else { p.btpDestinationPort().set_to_omit(); } // btpInfo - it = params.find(params::btp_info); + it = params.find(params_its::btp_info); if (it != params.cend()) { p.btpInfo() = std::stoi(it->second); } else { p.btpInfo().set_to_omit(); } // ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("mapem_spatem_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -212,7 +212,7 @@ void mapem_spatem_layer::receive_data(OCTETSTRING &data, params ¶ms) { p.ssp().set_to_omit(); } // its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { p.its__aid() = std::stoi(it->second); } else { diff --git a/ccsrc/Protocols/MapemSpatem_layers/mapem_spatem_layer.hh b/ccsrc/Protocols/MapemSpatem_layers/mapem_spatem_layer.hh index a666a76..b0a5b68 100644 --- a/ccsrc/Protocols/MapemSpatem_layers/mapem_spatem_layer.hh +++ b/ccsrc/Protocols/MapemSpatem_layers/mapem_spatem_layer.hh @@ -23,7 +23,7 @@ namespace LibItsMapemSpatem__TestSystem { } // namespace LibItsMapemSpatem__TestSystem class mapem_spatem_layer : public t_layer { - params _params; + params_its _params; mapem_codec _mapem_codec; spatem_codec _spatem_codec; @@ -32,11 +32,11 @@ public: mapem_spatem_layer(const std::string &p_type, const std::string ¶m); virtual ~mapem_spatem_layer(){}; - void sendMsg(const LibItsMapemSpatem__TypesAndValues::MapemReq &, params ¶ms); - void sendMsg(const LibItsMapemSpatem__TypesAndValues::SpatemReq &, params ¶ms); + void sendMsg(const LibItsMapemSpatem__TypesAndValues::MapemReq &, params_its ¶ms); + void sendMsg(const LibItsMapemSpatem__TypesAndValues::SpatemReq &, params_its ¶ms); - virtual void send_data(OCTETSTRING &data, params ¶ms); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); + virtual void receive_data(OCTETSTRING &data, params_its &info); int enable_secured_mode(const std::string &p_certificate_id, const boolean p_enforce_security); diff --git a/ccsrc/Protocols/Pcap/module.mk b/ccsrc/Protocols/Pcap/module.mk deleted file mode 100644 index 0bb7431..0000000 --- a/ccsrc/Protocols/Pcap/module.mk +++ /dev/null @@ -1,3 +0,0 @@ -sources := pcap_cygwin_layer.cc pcap_layer.cc pcap_linux_layer.cc pcap_offline_layer.cc -includes := . - diff --git a/ccsrc/Protocols/Pcap/pcap_cygwin_layer.cc b/ccsrc/Protocols/Pcap/pcap_cygwin_layer.cc deleted file mode 100644 index 56f9bbc..0000000 --- a/ccsrc/Protocols/Pcap/pcap_cygwin_layer.cc +++ /dev/null @@ -1,265 +0,0 @@ -#if defined(__CYGWIN__) - -#define _GNU_SOURCE - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "pcap_layer_factory.hh" - -#include "loggers.hh" - -#include - -typedef struct { - bpf_int32 tv_sec; /* seconds */ - bpf_int32 tv_usec; /* microseconds */ -} pcap_o_timeval; - -typedef struct pcap_o_pkthdr { - pcap_o_timeval ts; /* time stamp */ - bpf_u_int32 caplen; /* length of portion present */ - bpf_u_int32 len; /* length this packet (off wire) */ -} pcap_o_pkthdr; - -extern "C" int pcap_oid_get_request(pcap_t *p, bpf_u_int32 oid, void *data, size_t *lenp); - -static const char *_hexDigits = "0123456789ABCDEF"; -static char * _bin2hex(char *hex, size_t hlen, const char *bin, size_t blen) { - const unsigned char *b, *e; - char * s; - - // sanity check - if (hlen >= 0 && hlen < blen * 2) - return NULL; - - b = (const unsigned char *)bin; - e = b + blen - 1; - s = hex + blen * 2; - if (s < hex + hlen) - *s = 0; - for (; b <= e; e--) { - *(--s) = _hexDigits[(*e) & 0xF]; - *(--s) = _hexDigits[(*e) >> 4]; - } - return hex + blen * 2; -} - -pcap_layer::pcap_layer(const std::string &p_type, const std::string ¶m) - : layer(p_type), PORT(p_type.c_str()), _params(), _device(NULL), _running(FALSE), _time_key("pcap_layer::Handle_Fd_Event_Readable") { - loggers::get_instance().log(">>> pcap_layer::pcap_layer: %s, %s", p_type.c_str(), param.c_str()); - params::convert(_params, param); - - char error_buffer[PCAP_ERRBUF_SIZE]; - params::const_iterator it; - std::string nic; // network interface name - bpf_u_int32 mask; // subnet mask - bpf_u_int32 net; // ip address - - it = _params.find(params::nic); - if ((it == _params.end()) || it->second.empty()) { - loggers::get_instance().error("pcap_layer::pcap_layer: NIC must be specified"); - return; - } - - nic = std::string("\\Device\\NPF_{") + it->second + "}"; - - if (pcap_lookupnet(nic.c_str(), &net, &mask, error_buffer) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: pcap_layer::pcap_layer: Failed to fetch newtork address for device %s", nic.c_str()); - } - loggers::get_instance().log("pcap_layer::pcap_layer: Device %s Network address: %d", nic.c_str(), net); - - // Open the device - _device = pcap_open_live(nic.c_str(), 65536 /*64*1024*/, 1, 100, error_buffer); - if (_device == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open device %s", nic.c_str()); - return; - } - - // Setup filter - std::string filter = ""; - std::string mac_src; - it = _params.find(params::mac_src); - if (it != _params.end() && !it->second.empty()) { - mac_src = it->second; - } else { - // Not found - // determine it automatically -#ifndef OID_802_3_CURRENT_ADDRESS -#define OID_802_3_CURRENT_ADDRESS 0x01010102 -#endif - char mac[6] = {0}; - size_t l = sizeof(mac); - pcap_oid_get_request(_device, OID_802_3_CURRENT_ADDRESS, mac, &l); - char buf[13]; - *_bin2hex(buf, sizeof(buf), mac, 6) = 0; - mac_src = buf; - loggers::get_instance().user("pcap_layer::pcap_layer: local MAC is %s", mac_src.c_str()); - _params[params::mac_src] = mac_src; - } - - std::string mac_bc; - it = _params.find(params::mac_bc); - if (it != _params.end() && !it->second.empty()) - mac_bc = it->second; - else - mac_bc = "ffffffffffff"; - - if (mac_bc == mac_src || mac_src.empty()) - filter = "ether dst " + mac_bc; - else - filter = "( ether dst " + mac_bc + " or ether dst " + mac_src + " )"; - - if (!mac_src.empty()) - // Reject ITS messages sent by this component - filter += " and not ether src " + mac_src; - - // Add user defined filter - it = _params.find(params::filter); - if ((it != _params.end()) && !it->second.empty()) { - filter += std::string(" ") + it->second; - } - - // Log final PCAP filter - loggers::get_instance().user("pcap_layer::pcap_layer: Filter: %s", filter.c_str()); - - // setup filter - { - struct bpf_program f = {0}; - if (pcap_compile(_device, &f, filter.c_str(), 1, PCAP_NETMASK_UNKNOWN) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to compile PCAP filter"); - } else { - if (pcap_setfilter(_device, &f) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set PCAP filter"); - } - } - pcap_freecode(&f); - } - - _o_params.insert(std::pair(std::string("timestamp"), std::string())); - - // create pipe and run thread - if (pipe2(_fd, O_NONBLOCK) == -1) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to create a pipe: %s", ::strerror(errno)); - } - // Pass the pipe handler to the polling procedure - loggers::get_instance().log("pcap_layer::pcap_layer: Call handler with descriptor %d", _fd[0]); - Handler_Add_Fd_Read(_fd[0]); - - // Create the reader thread - _thread = new std::thread(&pcap_layer::run, (void *)this); - if (_thread == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to start offline thread"); - } - while (_running == FALSE) { - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - } - // Thread was started - loggers::get_instance().log("<<< pcap_layer::pcap_layer"); -} // End of ctor - -pcap_layer::~pcap_layer() { - loggers::get_instance().log(">>> pcap_layer::~pcap_layer"); - - if (_device != NULL) { - if (_thread != NULL) { - _running = FALSE; - // Wait for the working thread to terminate - _thread->join(); - loggers::get_instance().log("pcap_layer::~pcap_layer: Thread were stops"); - // Cleanup - delete _thread; - close(_fd[0]); - close(_fd[1]); - } - pcap_close(_device); - } -} // End of dtor - -void *pcap_layer::run(void *p_this) { - pcap_layer &p = *static_cast(p_this); - return p.thread(); -} - -void *pcap_layer::thread() { - pcap_o_pkthdr *pkt_header; - const u_char * pkt_data; - unsigned char pkt_count = 0; - - // loggers::get_instance().log(">>> pcap_layer::run"); - - _running = TRUE; - - // wait a bit before sending first packet - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - - while (_running) { // Loop while _running flag is up - // get next frame - int result = pcap_next_ex(_device, (struct pcap_pkthdr **)&pkt_header, &pkt_data); - if (result == 0) { - continue; - } - if (result < 0) { - // loggers::get_instance().log("<<< pcap_layer::run: error %s", pcap_geterr(_device)); - break; - } - - while (_running && !_resume.try_lock()) { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } -#if 0 - { - char buf[128]; - std::time_t t = pkt_header->ts.tv_sec; - std::tm * pt = std::localtime( &t ); - t = std::strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", pt); - std::sprintf(buf+t, "%ld", pkt_header->ts.tv_sec * 1000 + static_cast(pkt_header->ts.tv_usec / 1000)); // Use milliseconds - _o_params[params::timestamp] = std::string(buf); - } -#else - _o_params[params::timestamp] = std::to_string(pkt_header->ts.tv_sec * 1000 + static_cast(pkt_header->ts.tv_usec / 1000)); // Use milliseconds -#endif - _o_data = OCTETSTRING(pkt_header->len, pkt_data); - write(_fd[1], &pkt_count, 1); - pkt_count++; - } - _running = FALSE; - // loggers::get_instance().log("<<< pcap_layer::run"); - return NULL; -} - -void pcap_layer::send_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log_msg(">>> pcap_layer::send_data: ", data); - if (pcap_sendpacket(_device, static_cast(data), data.lengthof()) == -1) { - loggers::get_instance().error("pcap_layer::send_data: Failed to send packet: %s", pcap_geterr(_device)); - } -} - -void pcap_layer::receive_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log(">>> pcap_layer::receive_data: Received %d bytes", data.lengthof()); - loggers::get_instance().log_to_hexa("Packet dump", data); - - // Pass the packet to the upper layers - receive_to_all_layers(data, params); -} - -void pcap_layer::Handle_Fd_Event_Readable(int fd) { - char c[2]; - float duration; - loggers::get_instance().set_start_time(_time_key); - this->receive_data(_o_data, _o_params); - loggers::get_instance().set_stop_time(_time_key, duration); - read(_fd[0], &c, 1); - _resume.unlock(); -} - -pcap_layer_factory pcap_layer_factory::_f; - -#endif //__CYGWIN__ diff --git a/ccsrc/Protocols/Pcap/pcap_cygwin_layer.hh b/ccsrc/Protocols/Pcap/pcap_cygwin_layer.hh deleted file mode 100644 index d7d477a..0000000 --- a/ccsrc/Protocols/Pcap/pcap_cygwin_layer.hh +++ /dev/null @@ -1,79 +0,0 @@ -/*! - * \file pcap_layer.hh - * \brief Header file for ITS Offline Pcap port layer. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include - -#include "params.hh" -#include "t_layer.hh" - -#include - -class PORT; //! Forward declaration of TITAN class - -typedef struct pcap pcap_t; - -/*! - * \class pcap_layer - * \brief This class provides description of ITS PCAP port protocol layer - */ -class pcap_layer : public layer, public PORT { - - params _params; //! Layer parameters - pcap_t * _device; //! Device handle - std::thread *_thread; //! Thread handle, used to read PCAP file instead of NIC, used in file mode - std::mutex _resume; - bool _running; //! Set to true when the thread is running, used in file mode - int _fd[2]; //! pipe to signal to Titan - - OCTETSTRING _o_data; - params _o_params; - - std::string _time_key; - - static void *run(void *p_this); - -public: - void *thread(void); - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the pcap_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - pcap_layer(const std::string &p_type, const std::string ¶m); - /*! - * \brief Default destructor - */ - virtual ~pcap_layer(); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING &data, params ¶ms); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING &data, params &info); - - void Handle_Fd_Event_Readable(int fd); -}; diff --git a/ccsrc/Protocols/Pcap/pcap_layer.cc b/ccsrc/Protocols/Pcap/pcap_layer.cc deleted file mode 100644 index 8313c9f..0000000 --- a/ccsrc/Protocols/Pcap/pcap_layer.cc +++ /dev/null @@ -1,276 +0,0 @@ -#if 0 -#include -#include -#include -#include -#include - -#include - -#include "pcap_layer_factory.hh" - -typedef struct pcap_pkthdr pcap_o_pkthdr; -typedef struct timeval pcap_o_timeval; - -#include "loggers.hh" - -pcap_layer::pcap_layer(const std::string& p_type, const std::string& param) : layer(p_type), PORT(p_type.c_str()), _params(), _device(NULL), _pcap_h(-1), _thread(NULL), _running(FALSE), _resume(), _sent_file(NULL), _time_key("pcap_layer::Handle_Fd_Event_Readable") { - bool online = false; - loggers::get_instance().log(">>> pcap_layer::pcap_layer: %s, %s", to_string().c_str(), param.c_str()); - _fd[0] = -1; _fd[1] = -1; - // Setup parameters - params::convert(_params, param); - //_params.log(); - // Prepare capture processing - char error_buffer[PCAP_ERRBUF_SIZE]; - params::const_iterator it = _params.find(params::nic); - if ((it != _params.end()) && !it->second.empty()) { // Use online capture - // Fetch the network address and network mask - bpf_u_int32 mask; // subnet mask - bpf_u_int32 net; // ip address - std::string nic; - online = true; - nic = _params[params::nic]; - if (pcap_lookupnet(nic.c_str(), &net, &mask, error_buffer) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: pcap_layer::pcap_layer: Failed to fetch newtork address for device %s", nic.c_str()); - } - loggers::get_instance().log("pcap_layer::pcap_layer: Device %s Network address: %d", nic.c_str(), net); - // Open the device - _device = pcap_open_live(nic.c_str(), 65536, 1, 1000, error_buffer); // TODO Replace hard coded values by pcap_layer:: - if (_device == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open device %s", nic.c_str()); - } // else, continue - // Set non-blocking flag for the polling procedure - if (pcap_setnonblock(_device, 1, error_buffer) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set blocking mode: %s", error_buffer); - } - // Retrieve the device file handler - _pcap_h = pcap_get_selectable_fd(_device); - if (_pcap_h == -1) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to get device handler"); - } - } else { - // Check file name - it = _params.find(std::string("file")); - if ((it != _params.cend()) && !it->second.empty()) { // Use offline capture - struct stat s = {0}; - if ((stat(_params["file"].c_str(), &s) != 0) || !S_ISREG(s.st_mode)) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to acces PCAP file %s", _params["file"].c_str()); - } - // File exist, open it - _device = pcap_open_offline(_params["file"].c_str(), error_buffer); - if (_device == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open PCAP file %s", error_buffer); - } // else, continue - // Create the dump file for the sent packet based on the openned file name and the current time in milliseconds - it = _params.find("save_mode"); - if ((it != _params.cend()) && (it->second.compare("1") == 0)) { - unsigned long ms = std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1); - std::string ext("_" + std::to_string(ms)); - int i = _params["file"].find(".pcap"); - if (i > 0) { - std::string f(_params["file"].substr(0, i) + ext + ".pcap"); - loggers::get_instance().log("pcap_layer::pcap_layer: Save file name: %s", f.c_str()); - if ((_sent_file = pcap_dump_open(_device, f.c_str())) == NULL) { - loggers::get_instance().warning("pcap_layer::pcap_layer: Failed to open save file %s", f.c_str()); - } - } - } // else, nothing to do - } else { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open PCAP file %s", error_buffer); - } - } - - // Setup filter - std::string filter = ""; - it = _params.find(params::mac_src); - if (it == _params.end()) { // Not found - loggers::get_instance().error("pcap_layer::pcap_layer: mac_src parameter not found, cannot continue"); - } else { - // Reject ITS messages sent by this component - filter = "not ether src " + _params[params::mac_src]; - // Accept ITS broadcasted to this componenet - filter += " and (ether dst " + _params[params::mac_src]; - // Accept ITS broadcasted messages - it = _params.find(params::mac_bc); - if ((it != _params.end()) && !it->second.empty()) { - filter += " or ether dst " + it->second + ")"; - } else { - filter += " or ether dst ffffffffffff) "; - } - // Add user defined filter - it = _params.find(params::filter); - if ((it != _params.end()) && !it->second.empty()) { - filter += _params["filter"]; - } // else nothing to do - } - // Log final PCAP filter - loggers::get_instance().user("pcap_layer::pcap_layer: Filter: %s", filter.c_str()); - if (!filter.empty()) { - struct bpf_program f = {0}; - if (pcap_compile(_device, &f, filter.c_str(), 1, PCAP_NETMASK_UNKNOWN) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to compile PCAP filter"); - } - if (pcap_setfilter(_device, &f) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set PCAP filter"); - } - pcap_freecode(&f); - } - - // Pass the device file handler to the polling procedure - if (_pcap_h != -1) { // Live capture - Handler_Add_Fd_Read(_pcap_h); - } else { // Offline capture or cygwin - // Create a pipe - if (pipe2(_fd, O_NONBLOCK) == -1) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to create a pipe: %s", ::strerror(errno)); - } - if(online){ - _pcap_h = _fd[0]; - } - // Pass the pipe handler to the polling procedure - loggers::get_instance().log("pcap_layer::pcap_layer: Call handler with descriptor %d", _fd[0]); - Handler_Add_Fd_Read(_fd[0]); - // Create the offline reader thread - _thread = new std::thread(&pcap_layer::run, (void *)this); - if (_thread == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to start offline thread"); - } - // Start it to dispatch packet to a pipe - while (_running == FALSE) { - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - } - // Thread was started - loggers::get_instance().log("<<< pcap_layer::pcap_layer"); - } -} // End of ctor - -pcap_layer::~pcap_layer() { - loggers::get_instance().log(">>> pcap_layer::~pcap_layer"); - - if (_device != NULL) { - if (_thread != NULL) { - _running = FALSE; - // Wait for the working thread to terminate - _thread->join(); - loggers::get_instance().log("pcap_layer::~pcap_layer: Thread were stops"); - // Cleanup - delete _thread; - close(_fd[0]); - close(_fd[1]); - } - if (_sent_file != NULL) { - pcap_dump_close(_sent_file); - } - pcap_close(_device); - } -} // End of dtor - -void* pcap_layer::run(void* p_this) { - pcap_layer& p = *static_cast(p_this); - return p.thread(); -} - -void* pcap_layer::thread() { - loggers::get_instance().log(">>> pcap_layer::run"); - - // Wait a little bit before to start sending packet - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - params::const_iterator it = _params.find("frame_offset"); - if ((it != _params.cend()) && (it->second.compare("0") != 0)) { - // TODO Try t use PCAP filter to start directly to the correct frame offset - /*try { - unsigned int offset = std::stoul(str_dec, &s); - // Skip frames - struct pcap_pkthdr *pkt_header; - const u_char *pkt_data; - int result = pcap_next_ex(_device, &pkt_header, &pkt_data); - if (result == 1) { // Succeed - } - } - catch (invalid_argument& i) { - } - catch (out_of_range& o) { - }*/ - } - // Let's go - _running = TRUE; - while (_running) { // Loop while _running flag is up - if (_resume.try_lock() == TRUE) { // Previous packet was consumed, lock for the next one - write(_fd[1], "\n", 1); // Any character will do the job - } else { // not ready yet - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - } - - loggers::get_instance().log("<<< pcap_layer::run"); - return NULL; -} - -void pcap_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> pcap_layer::send_data: ", data); - - if (_pcap_h != -1) { // Check if offline mode is used - if (pcap_sendpacket(_device, static_cast(data), data.lengthof()) == -1) { - loggers::get_instance().error("pcap_layer::send_data: Failed to send packet: %s", pcap_geterr(_device)); - } - } else if (_sent_file != NULL) { - struct pcap_pkthdr hdr; - std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); - std::chrono::milliseconds ms = std::chrono::duration_cast(now.time_since_epoch()); - hdr.ts.tv_sec = ms.count() / 1000; - hdr.ts.tv_usec = (ms.count() % 1000) * 1000; - hdr.caplen = data.lengthof(); - hdr.len = hdr.caplen; - pcap_dump((u_char *)_sent_file, &hdr, static_cast(data)); - } else { - loggers::get_instance().log("pcap_layer::send_data: Offline mode, operation was skipped"); - } -} - -void pcap_layer::receive_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log(">>> pcap_layer::receive_data: Received %d bytes", data.lengthof()); - loggers::get_instance().log_to_hexa("Packet dump", data); - - // Pass the packet to the upper layers - receive_to_all_layers(data, params); -} - -void pcap_layer::Handle_Fd_Event_Readable(int fd) { - //loggers::get_instance().log(">>> pcap_layer::Handle_Fd_Event_Readable: %d", fd); - - pcap_o_pkthdr *pkt_header; - const u_char *pkt_data; - int result = pcap_next_ex(_device, (struct pcap_pkthdr**)&pkt_header, &pkt_data); - if (result == 1) { // Succeed - if (pkt_header->caplen > 14) { // Reject too small packet - //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: %ld - % ld - %d", pkt_header->ts.tv_sec, pkt_header->ts.tv_usec, pkt_header->len); - // Fill parameters from PCAP layer - params params; - params.insert(std::pair(params::timestamp, std::to_string(pkt_header->ts.tv_sec * 1000 + static_cast(pkt_header->ts.tv_usec / 1000)))); // Use milliseconds - // Process the packet at this layer - OCTETSTRING os(pkt_header->caplen, pkt_data); - //loggers::get_instance().log_to_hexa("pcap_layer::Handle_Fd_Event_Readable: ", os); - // TODO Case of caplen != len !!! - float duration; - loggers::get_instance().set_start_time(_time_key); - this->receive_data(os, params); // TODO Check execution time for decoding operation - loggers::get_instance().set_stop_time(_time_key, duration); - } - } // else, skip the packet - // Specific to offline mode - if (_fd[0] != -1) { // Check if offline mode is used - //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: Read pipe"); - char c[2]; - read(_fd[0], &c, 1); - if (result == -2) { // End of file, therminate worker thread - _running = FALSE; - } - //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: pcap_next_ex failed: result=%d", result); - _resume.unlock(); - } // else, nothing to do -} - -pcap_layer_factory pcap_layer_factory::_f; - -#endif // !CYGWIN diff --git a/ccsrc/Protocols/Pcap/pcap_layer.hh b/ccsrc/Protocols/Pcap/pcap_layer.hh deleted file mode 100644 index 151eab8..0000000 --- a/ccsrc/Protocols/Pcap/pcap_layer.hh +++ /dev/null @@ -1,5 +0,0 @@ -#if defined (__CYGWIN__) - #include "pcap_cygwin_layer.hh" -#else - #include "pcap_linux_layer.hh" -#endif diff --git a/ccsrc/Protocols/Pcap/pcap_layer_factory.hh b/ccsrc/Protocols/Pcap/pcap_layer_factory.hh deleted file mode 100644 index 0125e19..0000000 --- a/ccsrc/Protocols/Pcap/pcap_layer_factory.hh +++ /dev/null @@ -1,42 +0,0 @@ -/*! - * \file pcap_layer_factory.hh - * \brief Header file for Pcap layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "pcap_layer.hh" - -/*! - * \class pcap_layer_factory - * \brief This class provides a factory class to create an pcap_layer class instance - */ -class pcap_layer_factory : public layer_factory { - static pcap_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the udp_layer_factory class - * \remark The PCAP layer identifier is PCAP - */ - pcap_layer_factory() { - // register factory - layer_stack_builder::register_layer_factory("PCAP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer *create_layer(const std::string &p_type, const std::string &p_param) { return new pcap_layer(p_type, p_param); }; -}; // End of class pcap_layer_factory diff --git a/ccsrc/Protocols/Pcap/pcap_linux_layer.cc b/ccsrc/Protocols/Pcap/pcap_linux_layer.cc deleted file mode 100644 index fecb2b3..0000000 --- a/ccsrc/Protocols/Pcap/pcap_linux_layer.cc +++ /dev/null @@ -1,198 +0,0 @@ -#if !defined(__CYGWIN__) -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "pcap_layer_factory.hh" - -#include "loggers.hh" - -static const char *_hexDigits = "0123456789ABCDEF"; -static char * _bin2hex(char *hex, size_t hlen, const char *bin, size_t blen) { - const unsigned char *b, *e; - char * s; - - // sanity check - if (hlen >= 0 && hlen < blen * 2) - return NULL; - - b = (const unsigned char *)bin; - e = b + blen - 1; - s = hex + blen * 2; - if (s < hex + hlen) - *s = 0; - for (; b <= e; e--) { - *(--s) = _hexDigits[(*e) & 0xF]; - *(--s) = _hexDigits[(*e) >> 4]; - } - return hex + blen * 2; -} - -pcap_layer::pcap_layer(const std::string &p_type, const std::string ¶m) - : layer(p_type), PORT(p_type.c_str()), _params(), _device(NULL), _pcap_h(-1), _time_key("pcap_layer::Handle_Fd_Event_Readable") { - char error_buffer[PCAP_ERRBUF_SIZE]; - params::const_iterator it; - std::string nic; - - loggers::get_instance().log(">>> pcap_layer::pcap_layer: %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - // Prepare capture processing - it = _params.find(params::nic); - if ((it == _params.end()) || it->second.empty()) { // Use online capture - loggers::get_instance().error("pcap_layer::pcap_layer: NIC name must be specified"); - return; - } - - nic = _params[params::nic]; - { - bpf_u_int32 net, mask; // ip address and subnet mask - if (pcap_lookupnet(nic.c_str(), &net, &mask, error_buffer) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to fetch newtork address for device %s", nic.c_str()); - } else { - loggers::get_instance().log("pcap_layer::pcap_layer: Device %s Network address: %d", nic.c_str(), net); - } - } - // Open the device in promiscuous mode - _device = pcap_open_live(nic.c_str(), 65536 /*64*1024*/, 1, 100, error_buffer); // TODO Replace hard coded values by pcap_layer:: - if (_device == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open device %s", nic.c_str()); - return; - } // else, continue - // Set non-blocking flag for the polling procedure - if (pcap_setnonblock(_device, 1, error_buffer) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set blocking mode: %s", error_buffer); - } - // Retrieve the device file handler - _pcap_h = pcap_get_selectable_fd(_device); - if (_pcap_h == -1) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to get device handler"); - } - - // Setup filter - std::string filter = ""; - std::string mac_src; - it = _params.find(params::mac_src); - if (it != _params.end()) { // Use online capture - mac_src = it->second; - } else { - // Detect MAC address of NIC - struct ifreq ifr; - memset(&ifr, 0, sizeof(ifr)); - nic.copy(ifr.ifr_name, sizeof(ifr.ifr_name)); - if (ioctl(_pcap_h, SIOCGIFHWADDR, &ifr) == -1) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to get device MAC address"); - } else { - char buf[13]; - *_bin2hex(buf, sizeof(buf), ifr.ifr_hwaddr.sa_data, 6) = 0; - mac_src = buf; - loggers::get_instance().user("pcap_layer::pcap_layer: local MAC is %s", mac_src.c_str()); - _params[params::mac_src] = mac_src; - } - } - - // Accept ITS broadcasted messages - std::string mac_bc; - it = _params.find(params::mac_bc); - if (it != _params.end() && !it->second.empty()) { - mac_bc = it->second; - } else { - mac_bc = "ffffffffffff"; - } - - if ((mac_bc == mac_src) || mac_src.empty()) { - filter = "ether dst " + mac_bc; - } else { - filter = "( ether dst " + mac_bc + " or ether dst " + mac_src + " )"; - } - - if (!mac_src.empty()) { - // Reject ITS messages sent by this component - filter += " and not ether src " + mac_src; - } - - // Add user defined filter - it = _params.find(params::filter); - if ((it != _params.end()) && !it->second.empty()) { - filter += std::string(" ") + it->second; - } - // Log final PCAP filter - loggers::get_instance().user("pcap_layer::pcap_layer: Filter: %s", filter.c_str()); - - { - struct bpf_program f = {0}; - if (pcap_compile(_device, &f, filter.c_str(), 1, PCAP_NETMASK_UNKNOWN) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to compile PCAP filter"); - } else { - if (pcap_setfilter(_device, &f) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set PCAP filter"); - } - } - pcap_freecode(&f); - } - - // Pass the device file handler to the polling procedure - Handler_Add_Fd_Read(_pcap_h); -} // End of ctor - -pcap_layer::~pcap_layer() { - loggers::get_instance().log(">>> pcap_layer::~pcap_layer"); - - if (_device != NULL) { - pcap_close(_device); - } -} // End of dtor - -void pcap_layer::send_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log_msg(">>> pcap_layer::send_data: ", data); - - if (pcap_sendpacket(_device, static_cast(data), data.lengthof()) == -1) { - loggers::get_instance().error("pcap_layer::send_data: Failed to send packet: %s", pcap_geterr(_device)); - } -} - -void pcap_layer::receive_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log(">>> pcap_layer::receive_data: Received %d bytes", data.lengthof()); - loggers::get_instance().log_to_hexa("Packet dump", data); - - // Pass the packet to the upper layers - receive_to_all_layers(data, params); -} - -void pcap_layer::Handle_Fd_Event_Readable(int fd) { - // loggers::get_instance().log(">>> pcap_layer::Handle_Fd_Event_Readable: %d", fd); - - pcap_pkthdr * pkt_header; - const u_char *pkt_data; - int result = pcap_next_ex(_device, &pkt_header, &pkt_data); - if (result == 1) { // Succeed - if (pkt_header->caplen > 14) { // Reject too small packet - loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: %ld - %ld - %ld - %d", pkt_header->ts.tv_sec, pkt_header->ts.tv_usec, - pkt_header->ts.tv_sec * 1000 + static_cast(pkt_header->ts.tv_usec / 1000), pkt_header->len); - // Fill parameters from PCAP layer - params params; - params.insert(std::pair( - params::timestamp, std::to_string(pkt_header->ts.tv_sec * 1000 + static_cast(pkt_header->ts.tv_usec / 1000)))); // Use milliseconds - // Process the packet at this layer - OCTETSTRING os(pkt_header->caplen, pkt_data); - // loggers::get_instance().log_to_hexa("pcap_layer::Handle_Fd_Event_Readable: ", os); - // TODO Case of caplen != len !!! - float duration; - loggers::get_instance().set_start_time(_time_key); - this->receive_data(os, params); // TODO Check execution time for decoding operation - loggers::get_instance().set_stop_time(_time_key, duration); - } - } // else, skip the packet -} - -pcap_layer_factory pcap_layer_factory::_f; - -#endif // !CYGWIN diff --git a/ccsrc/Protocols/Pcap/pcap_linux_layer.hh b/ccsrc/Protocols/Pcap/pcap_linux_layer.hh deleted file mode 100644 index 82efc4b..0000000 --- a/ccsrc/Protocols/Pcap/pcap_linux_layer.hh +++ /dev/null @@ -1,62 +0,0 @@ -/*! - * \file pcap_layer.hh - * \brief Header file for ITS Pcap port layer. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include - -#include "params.hh" -#include "t_layer.hh" - -class PORT; //! Forward declaration of TITAN class - -/*! - * \class pcap_layer - * \brief This class provides description of ITS PCAP port protocol layer - */ -class pcap_layer : public layer, public PORT { - params _params; //! Layer parameters - pcap_t * _device; //! Device handle - int _pcap_h; //! PCAP instance handle - pcap_dumper_t *_sent_file; //! Write file handle to save sent packet, used in file mode - std::string _time_key; //! \todo - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the pcap_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - pcap_layer(const std::string &p_type, const std::string ¶m); - /*! - * \brief Default destructor - */ - virtual ~pcap_layer(); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING &data, params ¶ms); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING &data, params &info); - - void Handle_Fd_Event_Readable(int fd); -}; diff --git a/ccsrc/Protocols/Pcap/pcap_offline_layer.cc b/ccsrc/Protocols/Pcap/pcap_offline_layer.cc deleted file mode 100644 index d8afc3a..0000000 --- a/ccsrc/Protocols/Pcap/pcap_offline_layer.cc +++ /dev/null @@ -1,227 +0,0 @@ -#if defined(__CYGWIN__) -#define _GNU_SOURCE -#endif -#include -#include -#include -#include -#include - -#include - -#include "pcap_offline_layer_factory.hh" - -#include "loggers.hh" - -#include - -#ifdef __CYGWIN__ -typedef struct { - bpf_int32 tv_sec; /* seconds */ - bpf_int32 tv_usec; /* microseconds */ -} pcap_o_timeval; - -typedef struct pcap_o_pkthdr { - pcap_o_timeval ts; /* time stamp */ - bpf_u_int32 caplen; /* length of portion present */ - bpf_u_int32 len; /* length this packet (off wire) */ -} pcap_o_pkthdr; -#else -typedef struct pcap_pkthdr pcap_o_pkthdr; -typedef struct timeval pcap_o_timeval; -#endif - -pcap_offline_layer::pcap_offline_layer(const std::string &p_type, const std::string ¶m) - : layer(p_type), PORT(p_type.c_str()), _params(), _device(NULL), _running(FALSE), _time_key("pcap_offline_layer::Handle_Fd_Event_Readable") { - loggers::get_instance().log(">>> pcap_offline_layer::pcap_offline_layer: %s, %s", p_type.c_str(), param.c_str()); - params::convert(_params, param); - - _o_params.insert(std::pair(std::string("timestamp"), std::string())); - - char error_buffer[PCAP_ERRBUF_SIZE]; - params::const_iterator it; - - it = _params.find(std::string("realtime")); - _realtime = ((it != _params.end()) && !it->second.empty()); - - it = _params.find(std::string("loop")); - _loop = ((it != _params.end()) && !it->second.empty()); - - it = _params.find(std::string("file")); - if ((it != _params.end()) && !it->second.empty()) { - const std::string &file = it->second; - _device = pcap_open_offline(file.c_str(), error_buffer); - if (_device) { - - // Add user defined filter - it = _params.find(params::filter); - if ((it != _params.end()) && !it->second.empty()) { - const std::string &filter = it->second; - // Log final PCAP filter - loggers::get_instance().user("pcap_offline_layer::pcap_offline_layer: Filter: %s", filter.c_str()); - struct bpf_program f = {0}; - if (pcap_compile(_device, &f, filter.c_str(), 1, PCAP_NETMASK_UNKNOWN) != 0) { - loggers::get_instance().error("pcap_offline_layer::pcap_offline_layer: Failed to compile PCAP filter"); - } else { - if (pcap_setfilter(_device, &f) != 0) { - loggers::get_instance().error("pcap_offline_layer::pcap_offline_layer: Failed to set PCAP filter"); - } - } - pcap_freecode(&f); - } - - // create pipe and run thread - if (pipe2(_fd, O_NONBLOCK) == -1) { - loggers::get_instance().error("pcap_offline_layer::pcap_offline_layer: Failed to create a pipe: %s", ::strerror(errno)); - } - // Pass the pipe handler to the polling procedure - loggers::get_instance().log("pcap_offline_layer::pcap_offline_layer: Call handler with descriptor %d", _fd[0]); - Handler_Add_Fd_Read(_fd[0]); - // Create the offline reader thread - _thread = new std::thread(&pcap_offline_layer::run, (void *)this); - if (_thread == NULL) { - loggers::get_instance().error("pcap_offline_layer::pcap_offline_layer: Failed to start offline thread"); - } - while (_running == FALSE) { - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - } - // Thread was started - loggers::get_instance().log("<<< pcap_offline_layer::pcap_offline_layer"); - } - } -} // End of ctor - -pcap_offline_layer::~pcap_offline_layer() { - loggers::get_instance().log(">>> pcap_offline_layer::~pcap_offline_layer"); - - if (_device != NULL) { - if (_thread != NULL) { - _running = FALSE; - // Wait for the working thread to terminate - _thread->join(); - loggers::get_instance().log("pcap_offline_layer::~pcap_offline_layer: Thread were stops"); - // Cleanup - delete _thread; - close(_fd[0]); - close(_fd[1]); - } - pcap_close(_device); - } -} // End of dtor - -void *pcap_offline_layer::run(void *p_this) { - pcap_offline_layer &p = *static_cast(p_this); - return p.thread(); -} - -static long timeval_diff(const pcap_o_timeval &x, const pcap_o_timeval &y) { - pcap_o_timeval z = y; - /* Perform the carry for the later subtraction by updating y. */ - if (x.tv_usec < y.tv_usec) { - int nsec = (y.tv_usec - x.tv_usec) / 1000000 + 1; - z.tv_usec -= 1000000 * nsec; - z.tv_sec += nsec; - } - if (x.tv_usec - z.tv_usec > 1000000) { - int nsec = (x.tv_usec - z.tv_usec) / 1000000; - z.tv_usec += 1000000 * nsec; - z.tv_sec -= nsec; - } - - return (x.tv_sec - z.tv_sec) * 1000 + ((x.tv_usec - z.tv_usec) / 1000); -} - -void *pcap_offline_layer::thread() { - pcap_o_pkthdr *pkt_header; - pcap_o_pkthdr lh; - const u_char * pkt_data; - unsigned char pkt_count = 0; - - // loggers::get_instance().log(">>> pcap_offline_layer::run"); - - memset(&lh, 0, sizeof(lh)); - - _running = TRUE; - - int delay = 1000; - params::const_iterator it; - it = _params.find(std::string("delay")); - if (it != _params.cend()) { - delay = std::stoi(it->second); - } - - // wait a bit before sending first packet - std::this_thread::sleep_for(std::chrono::milliseconds(delay)); - - while (_running) { // Loop while _running flag is up - // get next frame - int result = pcap_next_ex(_device, (struct pcap_pkthdr **)&pkt_header, &pkt_data); - if (result == 2) { - if (_loop) { - - } else { - _running = FALSE; - return NULL; - } - } - if (_realtime) { - // wait for next packet timestamp - if (lh.ts.tv_sec | lh.ts.tv_usec) { - long diff = timeval_diff(pkt_header->ts, lh.ts); - if (diff > 0) { - loggers::get_instance().log("<<< pcap_offline_layer::run: Wait %d msec", diff); - std::this_thread::sleep_for(std::chrono::milliseconds(diff)); - loggers::get_instance().log("<<< pcap_offline_layer::run: Wait done"); - } - } - } - while (_running && !_resume.try_lock()) { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - lh = *pkt_header; -#if 0 - { - char buf[128]; - std::time_t t = pkt_header->ts.tv_sec; - std::tm * pt = std::localtime( &t ); - t = std::strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", pt); - std::sprintf(buf+t, ".%06ld", pkt_header->ts.tv_usec); - _o_params["timestamp"] = std::string(buf); - } -#else - _o_params["timestamp"] = std::to_string(pkt_header->ts.tv_usec); -#endif - _o_data = OCTETSTRING(pkt_header->len, pkt_data); - write(_fd[1], &pkt_count, 1); - pkt_count++; - } - - // loggers::get_instance().log("<<< pcap_offline_layer::run"); - return NULL; -} - -void pcap_offline_layer::send_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log("pcap_offline_layer::send_data: Offline mode, operation was skipped"); -} - -void pcap_offline_layer::receive_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log(">>> pcap_offline_layer::receive_data: Received %d bytes", data.lengthof()); - loggers::get_instance().log_to_hexa("Packet dump", data); - - // Pass the packet to the upper layers - receive_to_all_layers(data, params); -} - -void pcap_offline_layer::Handle_Fd_Event_Readable(int fd) { - // loggers::get_instance().log(">>> pcap_offline_layer::Handle_Fd_Event_Readable: %d", fd); - char c[2]; - float duration; - // Process the packet at this layer - loggers::get_instance().set_start_time(_time_key); - this->receive_data(_o_data, _o_params); - loggers::get_instance().set_stop_time(_time_key, duration); - read(_fd[0], &c, 1); - _resume.unlock(); -} - -pcap_offline_layer_factory pcap_offline_layer_factory::_f; diff --git a/ccsrc/Protocols/Pcap/pcap_offline_layer.hh b/ccsrc/Protocols/Pcap/pcap_offline_layer.hh deleted file mode 100644 index 0c1993e..0000000 --- a/ccsrc/Protocols/Pcap/pcap_offline_layer.hh +++ /dev/null @@ -1,80 +0,0 @@ -/*! - * \file pcap_offline_layer.hh - * \brief Header file for ITS Offline Pcap port layer. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include - -#include "params.hh" -#include "t_layer.hh" - -#include - -class PORT; //! Forward declaration of TITAN class - -typedef struct pcap pcap_t; - -/*! - * \class pcap_layer - * \brief This class provides description of ITS PCAP port protocol layer - */ -class pcap_offline_layer : public layer, public PORT { - params _params; //! Layer parameters - pcap_t * _device; //! Device handle - std::thread *_thread; //! Thread handle, used to read PCAP file instead of NIC, used in file mode - std::mutex _resume; - bool _running; //! Set to true when the thread is running, used in file mode - bool _realtime; //! Set to true if realtime delay shall be added between packets - bool _loop; //! Set to true if playback shall be looped - int _fd[2]; //! pipe to signal to Titan - - params _o_params; - OCTETSTRING _o_data; - - std::string _time_key; - - static void *run(void *p_this); - -public: - void *thread(void); - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the pcap_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - pcap_offline_layer(const std::string &p_type, const std::string ¶m); - /*! - * \brief Default destructor - */ - virtual ~pcap_offline_layer(); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING &data, params ¶ms); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING &data, params &info); - - void Handle_Fd_Event_Readable(int fd); -}; diff --git a/ccsrc/Protocols/Pcap/pcap_offline_layer_factory.hh b/ccsrc/Protocols/Pcap/pcap_offline_layer_factory.hh deleted file mode 100644 index 23cd1d0..0000000 --- a/ccsrc/Protocols/Pcap/pcap_offline_layer_factory.hh +++ /dev/null @@ -1,42 +0,0 @@ -/*! - * \file pcap_offline_layer_factory.hh - * \brief Header file for Pcap layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "pcap_offline_layer.hh" - -/*! - * \class pcap_offline_layer_factory - * \brief This class provides a factory class to create an pcap_offline_layer class instance - */ -class pcap_offline_layer_factory : public layer_factory { - static pcap_offline_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the udp_layer_factory class - * \remark The PCAP layer identifier is PCAP - */ - pcap_offline_layer_factory() { - // register factory - layer_stack_builder::register_layer_factory("PCAP_FILE", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer *create_layer(const std::string &p_type, const std::string &p_param) { return new pcap_offline_layer(p_type, p_param); }; -}; // End of class pcap_offline_layer_factory diff --git a/ccsrc/Protocols/Pki/etsi_ts102941_trust_lists_ctl_format.cc b/ccsrc/Protocols/Pki/etsi_ts102941_trust_lists_ctl_format.cc index 1a9819e..f0c8804 100644 --- a/ccsrc/Protocols/Pki/etsi_ts102941_trust_lists_ctl_format.cc +++ b/ccsrc/Protocols/Pki/etsi_ts102941_trust_lists_ctl_format.cc @@ -16,7 +16,7 @@ int etsi_ts102941_trust_lists_ctl_format::encode(const EtsiTs102941TrustLists::C } int etsi_ts102941_trust_lists_ctl_format::decode(const OCTETSTRING &p_data, EtsiTs102941TrustLists::CtlFormat &p_ctl_format, - params *p_params) { + params_its *p_params) { loggers::get_instance().log_msg(">>> etsi_ts102941_trust_lists_ctl_format::decode: ", p_data); TTCN_EncDec::clear_error(); diff --git a/ccsrc/Protocols/Pki/etsi_ts102941_trust_lists_ctl_format.hh b/ccsrc/Protocols/Pki/etsi_ts102941_trust_lists_ctl_format.hh index bce246e..1f84d9c 100644 --- a/ccsrc/Protocols/Pki/etsi_ts102941_trust_lists_ctl_format.hh +++ b/ccsrc/Protocols/Pki/etsi_ts102941_trust_lists_ctl_format.hh @@ -1,7 +1,7 @@ #pragma once #include "codec.hh" -#include "params.hh" +#include "params_its.hh" #include "EtsiTs102941TrustLists.hh" @@ -11,5 +11,5 @@ public: virtual ~etsi_ts102941_trust_lists_ctl_format(){}; virtual int encode(const EtsiTs102941TrustLists::CtlFormat &p_ctl_format, OCTETSTRING &p_data); - virtual int decode(const OCTETSTRING &p_data, EtsiTs102941TrustLists::CtlFormat &p_ctl_format, params *p_params = NULL); + virtual int decode(const OCTETSTRING &p_data, EtsiTs102941TrustLists::CtlFormat &p_ctl_format, params_its *p_params = NULL); }; // End of class etsi_ts102941_trust_lists_ctl_format diff --git a/ccsrc/Protocols/Qualcomm/qualcomm_layer.cc b/ccsrc/Protocols/Qualcomm/qualcomm_layer.cc index b9f19b4..d0e50e8 100644 --- a/ccsrc/Protocols/Qualcomm/qualcomm_layer.cc +++ b/ccsrc/Protocols/Qualcomm/qualcomm_layer.cc @@ -22,7 +22,7 @@ qualcomm_layer::qualcomm_layer(const std::string &p_type, const std::string &par registration::get_instance().add_item(p_type, this); } -void qualcomm_layer::send_data(OCTETSTRING &data, params ¶ms) { +void qualcomm_layer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> qualcomm_layer::send_data: ", data); OCTETSTRING buffer = int2oct(3, 1); // CV2X identifier @@ -32,7 +32,7 @@ void qualcomm_layer::send_data(OCTETSTRING &data, params ¶ms) { send_to_all_layers(buffer, params); } -void qualcomm_layer::receive_data(OCTETSTRING &data, params ¶ms) { +void qualcomm_layer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log(">>> qualcomm_layer::receive_data: Received %d bytes", data.lengthof()); loggers::get_instance().log_to_hexa("Packet dump", data); diff --git a/ccsrc/Protocols/Qualcomm/qualcomm_layer.hh b/ccsrc/Protocols/Qualcomm/qualcomm_layer.hh index f33d75c..326e9b7 100644 --- a/ccsrc/Protocols/Qualcomm/qualcomm_layer.hh +++ b/ccsrc/Protocols/Qualcomm/qualcomm_layer.hh @@ -10,7 +10,7 @@ */ #pragma once -#include "params.hh" +#include "params_its.hh" #include "t_layer.hh" #include "data_event_observer.hh" @@ -23,7 +23,7 @@ class OCTETSTRING; //! Forward declaration of TITAN class */ class qualcomm_layer : public layer, public data_event_observer { - params _params; //! Layer parameters + params_its _params; //! Layer parameters public: //! \publicsection @@ -40,8 +40,8 @@ public: */ virtual ~qualcomm_layer(){}; - virtual void send_data(OCTETSTRING &data, params ¶ms); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); + virtual void receive_data(OCTETSTRING &data, params_its &info); inline void incoming_packet_observer_attach(data_event_notifier* p_observer) { _observers.push_back(p_observer); @@ -51,7 +51,8 @@ public: _observers.erase(std::remove(_observers.begin(), _observers.end(), p_observer), _observers.end()); }; - inline void incoming_packet_notify(OCTETSTRING &p_data, params &p_params) { + inline void incoming_packet_notify(OCTETSTRING &p_data, params_its + &p_params) { for (auto o : _observers) { o->update(p_data, p_params); } diff --git a/ccsrc/Protocols/Rtcmem/RtcmemCodec.cc b/ccsrc/Protocols/Rtcmem/RtcmemCodec.cc index 0f45e45..c2cf5f3 100644 --- a/ccsrc/Protocols/Rtcmem/RtcmemCodec.cc +++ b/ccsrc/Protocols/Rtcmem/RtcmemCodec.cc @@ -15,7 +15,7 @@ int RtcmemCodec::encode(const RTCMEM__PDU__Descriptions::RTCMEM &rtcmem, OCTETST return rc; } -int RtcmemCodec::decode(const OCTETSTRING &data, RTCMEM__PDU__Descriptions::RTCMEM &p_rtcmem, params *params) { +int RtcmemCodec::decode(const OCTETSTRING &data, RTCMEM__PDU__Descriptions::RTCMEM &p_rtcmem, params_its *params) { loggers::get_instance().log_msg(">>> RtcmemCodec::decode: ", data); int rc = asn_codec.decode(oct2bit(data), p_rtcmem); diff --git a/ccsrc/Protocols/Rtcmem/RtcmemCodec.hh b/ccsrc/Protocols/Rtcmem/RtcmemCodec.hh index f08bd11..c647e35 100644 --- a/ccsrc/Protocols/Rtcmem/RtcmemCodec.hh +++ b/ccsrc/Protocols/Rtcmem/RtcmemCodec.hh @@ -2,7 +2,7 @@ #define RTCMEMCODEC_H #include "codec.hh" -#include "params.hh" +#include "params_its.hh" #include "per_codec.hh" #include "LibItsRtcmem_TypesAndValues.hh" @@ -22,7 +22,7 @@ public: virtual ~RtcmemCodec(){}; virtual int encode(const RTCMEM__PDU__Descriptions::RTCMEM &srem, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, RTCMEM__PDU__Descriptions::RTCMEM &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, RTCMEM__PDU__Descriptions::RTCMEM &, params_its *params = NULL); }; #endif diff --git a/ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.cc b/ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.cc index 0ccc009..b74b030 100644 --- a/ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.cc +++ b/ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.cc @@ -13,7 +13,7 @@ RtcmemLayer::RtcmemLayer(const std::string &p_type, const std::string ¶m) : t_layer(p_type), _params(), _rtcmem_codec() { loggers::get_instance().log(">>> RtcmemLayer::RtcmemLayer: %s, %s", to_string().c_str(), param.c_str()); // Setup parameters - params::convert(_params, param); + params_its::convert(_params, param); _params.insert(std::make_pair("its_aid", "128")); // ETSI TS 102 965 V1.2.1 (2015-06) _params.insert(std::make_pair("payload_type", "13")); // RTCME message id - See ETSI TS 103 301 @@ -22,7 +22,7 @@ RtcmemLayer::RtcmemLayer(const std::string &p_type, const std::string ¶m) registration::get_instance().add_item(p_type, this); } -void RtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::RtcmemReq &p, params ¶ms) { +void RtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::RtcmemReq &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> RtcmemLayer::sendMsg: ", p); // Encode rtcmem PDU @@ -34,12 +34,12 @@ void RtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::RtcmemReq &p, para send_data(data, _params); } -void RtcmemLayer::send_data(OCTETSTRING &data, params ¶ms) { +void RtcmemLayer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> RtcmemLayer::send_data: ", data); send_to_all_layers(data, params); } -void RtcmemLayer::receive_data(OCTETSTRING &data, params ¶ms) { +void RtcmemLayer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> RtcmemLayer::receive_data: ", data); // Decode the RTCMEM payload @@ -52,63 +52,63 @@ void RtcmemLayer::receive_data(OCTETSTRING &data, params ¶ms) { // Process lower layer data // recvTime - params::const_iterator it = params.find(params::timestamp); + params_its::const_iterator it = params.find(params_its::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader - it = params.find(params::gn_next_header); + it = params.find(params_its::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { p.gnNextHeader().set_to_omit(); } // gnHeaderType - it = params.find(params::gn_header_type); + it = params.find(params_its::gn_header_type); if (it != params.cend()) { p.gnHeaderType() = std::stoi(it->second); } else { p.gnHeaderType().set_to_omit(); } // gnHeaderSubtype - it = params.find(params::gn_header_sub_type); + it = params.find(params_its::gn_header_sub_type); if (it != params.cend()) { p.gnHeaderSubtype() = std::stoi(it->second); } else { p.gnHeaderSubtype().set_to_omit(); } // gnLifetime - it = params.find(params::gn_lifetime); + it = params.find(params_its::gn_lifetime); if (it != params.cend()) { p.gnLifetime() = std::stoi(it->second); } else { p.gnLifetime().set_to_omit(); } // gnTrafficClass - it = params.find(params::gn_traffic_class); + it = params.find(params_its::gn_traffic_class); if (it != params.cend()) { p.gnTrafficClass() = std::stoi(it->second); } else { p.gnTrafficClass().set_to_omit(); } // btpDestinationPort - it = params.find(params::btp_destination_port); + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { p.btpDestinationPort() = std::stoi(it->second); } else { p.btpDestinationPort().set_to_omit(); } // btpInfo - it = params.find(params::btp_info); + it = params.find(params_its::btp_info); if (it != params.cend()) { p.btpInfo() = std::stoi(it->second); } else { p.btpInfo().set_to_omit(); } // ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("RtcmemLayer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -116,7 +116,7 @@ void RtcmemLayer::receive_data(OCTETSTRING &data, params ¶ms) { p.ssp().set_to_omit(); } // its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { p.its__aid() = std::stoi(it->second); } else { diff --git a/ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.hh b/ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.hh index 87fc6bd..e48da06 100644 --- a/ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.hh +++ b/ccsrc/Protocols/Rtcmem_layers/RtcmemLayer.hh @@ -20,7 +20,7 @@ namespace LibItsRtcmem__TestSystem { } // namespace LibItsRtcmem__TestSystem class RtcmemLayer : public t_layer { - params _params; + params_its _params; RtcmemCodec _rtcmem_codec; public: @@ -28,10 +28,10 @@ public: RtcmemLayer(const std::string &p_type, const std::string ¶m); virtual ~RtcmemLayer(){}; - void sendMsg(const LibItsRtcmem__TypesAndValues::RtcmemReq &, params ¶ms); + void sendMsg(const LibItsRtcmem__TypesAndValues::RtcmemReq &, params_its ¶ms); - virtual void send_data(OCTETSTRING &data, params ¶ms); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params_its ¶ms); + virtual void receive_data(OCTETSTRING &data, params_its &info); int enable_secured_mode(const std::string &p_certificate_id, const boolean p_enforce_security); diff --git a/ccsrc/Protocols/Security/etsi_ts102941_base_types_public_keys.hh b/ccsrc/Protocols/Security/etsi_ts102941_base_types_public_keys.hh index 4719f18..d2d520b 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_base_types_public_keys.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_base_types_public_keys.hh @@ -1,13 +1,13 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941BaseTypes.hh" -class etsi_ts102941_base_types_public_keys : public codec { +class etsi_ts102941_base_types_public_keys : public codec_gen { public: - explicit etsi_ts102941_base_types_public_keys() : codec(){}; + explicit etsi_ts102941_base_types_public_keys() : codec_gen(){}; virtual ~etsi_ts102941_base_types_public_keys(){}; virtual int encode(const EtsiTs102941BaseTypes::PublicKeys &p_public_keys, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts102941_data_codec.hh b/ccsrc/Protocols/Security/etsi_ts102941_data_codec.hh index c2b31c6..029943d 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_data_codec.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_data_codec.hh @@ -1,13 +1,13 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941MessagesCa.hh" -class etsi_ts102941_data_codec : public codec { +class etsi_ts102941_data_codec : public codec_gen { public: - explicit etsi_ts102941_data_codec() : codec(){}; + explicit etsi_ts102941_data_codec() : codec_gen(){}; virtual ~etsi_ts102941_data_codec(){}; virtual int encode(const EtsiTs102941MessagesCa::EtsiTs102941Data &p_etsi_ts_10291_data, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts102941_data_content_codec.hh b/ccsrc/Protocols/Security/etsi_ts102941_data_content_codec.hh index db7005f..d3ee5bf 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_data_content_codec.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_data_content_codec.hh @@ -1,13 +1,13 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941MessagesCa.hh" -class etsi_ts102941_data_content_codec : public codec { +class etsi_ts102941_data_content_codec : public codec_gen { public: - explicit etsi_ts102941_data_content_codec() : codec(){}; + explicit etsi_ts102941_data_content_codec() : codec_gen(){}; virtual ~etsi_ts102941_data_content_codec(){}; virtual int encode(const EtsiTs102941MessagesCa::EtsiTs102941DataContent &p_etsi_ts_10291_data_content, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_inner_request.hh b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_inner_request.hh index ae12a07..c6286f1 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_inner_request.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_inner_request.hh @@ -1,15 +1,15 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941TypesAuthorization.hh" class etsi_ts102941_types_authorization_inner_request - : public codec { + : public codec_gen { public: explicit etsi_ts102941_types_authorization_inner_request() - : codec(){}; + : codec_gen(){}; virtual ~etsi_ts102941_types_authorization_inner_request(){}; virtual int encode(const EtsiTs102941TypesAuthorization::InnerAtRequest &p_inner_request, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_inner_response.hh b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_inner_response.hh index 2f0161f..de20830 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_inner_response.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_inner_response.hh @@ -1,15 +1,15 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941TypesAuthorization.hh" class etsi_ts102941_types_authorization_inner_response - : public codec { + : public codec_gen { public: explicit etsi_ts102941_types_authorization_inner_response() - : codec(){}; + : codec_gen(){}; virtual ~etsi_ts102941_types_authorization_inner_response(){}; virtual int encode(const EtsiTs102941TypesAuthorization::InnerAtResponse &p_inner_response, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_shared_at_request.hh b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_shared_at_request.hh index 7e8dbad..526d951 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_shared_at_request.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_shared_at_request.hh @@ -1,15 +1,15 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941TypesAuthorization.hh" class etsi_ts102941_types_authorization_shared_at_request - : public codec { + : public codec_gen { public: explicit etsi_ts102941_types_authorization_shared_at_request() - : codec(){}; + : codec_gen(){}; virtual ~etsi_ts102941_types_authorization_shared_at_request(){}; virtual int encode(const EtsiTs102941TypesAuthorization::SharedAtRequest &p_shared_at_request, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_request.hh b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_request.hh index 4f545d4..2fdf43c 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_request.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_request.hh @@ -1,15 +1,15 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941TypesAuthorizationValidation.hh" -class etsi_ts102941_types_authorization_validation_request : public codec { public: explicit etsi_ts102941_types_authorization_validation_request() - : codec(){}; virtual ~etsi_ts102941_types_authorization_validation_request(){}; diff --git a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_response.hh b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_response.hh index 27f387b..8208a2b 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_response.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_response.hh @@ -1,15 +1,15 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941TypesAuthorizationValidation.hh" -class etsi_ts102941_types_authorization_validation_response : public codec { public: explicit etsi_ts102941_types_authorization_validation_response() - : codec(){}; virtual ~etsi_ts102941_types_authorization_validation_response(){}; diff --git a/ccsrc/Protocols/Security/etsi_ts102941_types_enrolment_inner_request.hh b/ccsrc/Protocols/Security/etsi_ts102941_types_enrolment_inner_request.hh index 8fba3a6..aa082c2 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_types_enrolment_inner_request.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_types_enrolment_inner_request.hh @@ -1,13 +1,13 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941TypesEnrolment.hh" -class etsi_ts102941_types_enrolment_inner_request : public codec { +class etsi_ts102941_types_enrolment_inner_request : public codec_gen { public: - explicit etsi_ts102941_types_enrolment_inner_request() : codec(){}; + explicit etsi_ts102941_types_enrolment_inner_request() : codec_gen(){}; virtual ~etsi_ts102941_types_enrolment_inner_request(){}; virtual int encode(const EtsiTs102941TypesEnrolment::InnerEcRequest &p_inner_request, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts102941_types_enrolment_inner_response.hh b/ccsrc/Protocols/Security/etsi_ts102941_types_enrolment_inner_response.hh index b5e26b2..30403d0 100644 --- a/ccsrc/Protocols/Security/etsi_ts102941_types_enrolment_inner_response.hh +++ b/ccsrc/Protocols/Security/etsi_ts102941_types_enrolment_inner_response.hh @@ -1,13 +1,13 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs102941TypesEnrolment.hh" -class etsi_ts102941_types_enrolment_inner_response : public codec { +class etsi_ts102941_types_enrolment_inner_response : public codec_gen { public: - explicit etsi_ts102941_types_enrolment_inner_response() : codec(){}; + explicit etsi_ts102941_types_enrolment_inner_response() : codec_gen(){}; virtual ~etsi_ts102941_types_enrolment_inner_response(){}; virtual int encode(const EtsiTs102941TypesEnrolment::InnerEcResponse &p_inner_response, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts103097_certificate_codec.hh b/ccsrc/Protocols/Security/etsi_ts103097_certificate_codec.hh index 707aa24..2721e49 100644 --- a/ccsrc/Protocols/Security/etsi_ts103097_certificate_codec.hh +++ b/ccsrc/Protocols/Security/etsi_ts103097_certificate_codec.hh @@ -1,7 +1,6 @@ #pragma once -#include "codec.hh" -//#include "oer_codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "EtsiTs103097Module.hh" @@ -17,12 +16,12 @@ // virtual int decode (const BITSTRING& data, Ieee1609Dot2::CertificateBase&); // }; -class etsi_ts103097_certificate_codec : public codec { +class etsi_ts103097_certificate_codec : public codec_gen { // EtsiTs103097PDUCodec asn_codec; public: - // explicit etsi_ts103097_certificate_codec() : codec(), asn_codec() { }; - explicit etsi_ts103097_certificate_codec() : codec(){}; + // explicit etsi_ts103097_certificate_codec() : codec_gen(), asn_codec() { }; + explicit etsi_ts103097_certificate_codec() : codec_gen(){}; virtual ~etsi_ts103097_certificate_codec(){}; virtual int encode(const Ieee1609Dot2::CertificateBase &p_cert, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts103097_data_codec.hh b/ccsrc/Protocols/Security/etsi_ts103097_data_codec.hh index f42e100..b3884d7 100644 --- a/ccsrc/Protocols/Security/etsi_ts103097_data_codec.hh +++ b/ccsrc/Protocols/Security/etsi_ts103097_data_codec.hh @@ -1,6 +1,6 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" //#include "CodecOer.hh" #include "params.hh" @@ -17,12 +17,12 @@ // virtual int decode (const BITSTRING& data, Ieee1609Dot2::Ieee1609Dot2Data&); // }; -class etsi_ts103097_data_codec : public codec { +class etsi_ts103097_data_codec : public codec_gen { // EtsiTs103097PDUCodec asn_codec; public: - // explicit etsi_ts103097_data_codec() : codec(), asn_codec() { }; - explicit etsi_ts103097_data_codec() : codec(){}; + // explicit etsi_ts103097_data_codec() : codec_gen(), asn_codec() { }; + explicit etsi_ts103097_data_codec() : codec_gen(){}; virtual ~etsi_ts103097_data_codec(){}; virtual int encode(const Ieee1609Dot2::Ieee1609Dot2Data &p_ieee1609Dot2Data, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts103097_tobesigned_certificate_codec.hh b/ccsrc/Protocols/Security/etsi_ts103097_tobesigned_certificate_codec.hh index 7d93849..2b4d322 100644 --- a/ccsrc/Protocols/Security/etsi_ts103097_tobesigned_certificate_codec.hh +++ b/ccsrc/Protocols/Security/etsi_ts103097_tobesigned_certificate_codec.hh @@ -1,6 +1,6 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" //#include "CodecOer.hh" #include "params.hh" @@ -17,12 +17,12 @@ // virtual int decode (const BITSTRING& data, Ieee1609Dot2::ToBeSignedCertificate&); // }; -class etsi_ts103097_tobesigned_certificate_codec : public codec { +class etsi_ts103097_tobesigned_certificate_codec : public codec_gen { // EtsiTs103097PDUCodec asn_codec; public: - // explicit etsi_ts103097_tobesigned_certificate_codec() : codec(), asn_codec() { }; - explicit etsi_ts103097_tobesigned_certificate_codec() : codec(){}; + // explicit etsi_ts103097_tobesigned_certificate_codec() : codec_gen(), asn_codec() { }; + explicit etsi_ts103097_tobesigned_certificate_codec() : codec_gen(){}; virtual ~etsi_ts103097_tobesigned_certificate_codec(){}; virtual int encode(const Ieee1609Dot2::ToBeSignedCertificate &p_cert, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/etsi_ts103097_tobesigned_data_codec.hh b/ccsrc/Protocols/Security/etsi_ts103097_tobesigned_data_codec.hh index 6e0b4a8..5ff7e77 100644 --- a/ccsrc/Protocols/Security/etsi_ts103097_tobesigned_data_codec.hh +++ b/ccsrc/Protocols/Security/etsi_ts103097_tobesigned_data_codec.hh @@ -1,6 +1,6 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" //#include "CodecOer.hh" #include "params.hh" @@ -17,12 +17,12 @@ // virtual int decode (const BITSTRING& data, Ieee1609Dot2::ToBeSignedData&); // }; -class etsi_ts103097_tobesigned_data_codec : public codec { +class etsi_ts103097_tobesigned_data_codec : public codec_gen { // EtsiTs103097PDUCodec asn_codec; public: - // explicit etsi_ts103097_tobesigned_data_codec() : codec(), asn_codec() { }; - explicit etsi_ts103097_tobesigned_data_codec() : codec(){}; + // explicit etsi_ts103097_tobesigned_data_codec() : codec_gen(), asn_codec() { }; + explicit etsi_ts103097_tobesigned_data_codec() : codec_gen(){}; virtual ~etsi_ts103097_tobesigned_data_codec(){}; virtual int encode(const Ieee1609Dot2::ToBeSignedData &p_cert, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.cc b/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.cc index 2f4f4bb..18b95c2 100644 --- a/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.cc +++ b/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.cc @@ -2,7 +2,7 @@ #include "http_etsi_ieee1609dot2_codec_factory.hh" -#include "LibItsHttp_MessageBodyTypes.hh" +#include "LibHttp_MessageBodyTypes.hh" #include "security_services.hh" diff --git a/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.hh b/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.hh index 0056288..f78b216 100644 --- a/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.hh +++ b/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.hh @@ -5,16 +5,16 @@ #include "params.hh" -namespace LibItsHttp__BinaryMessageBodyTypes { +namespace LibHttp__BinaryMessageBodyTypes { class BinaryBody; } -class http_etsi_ieee1609dot2_codec : public codec { +class http_etsi_ieee1609dot2_codec : public codec_gen { etsi_ts103097_data_codec _codec; etsi_ts103097_certificate_codec _codec_cert; public: - explicit http_etsi_ieee1609dot2_codec() : codec(), _codec(), _codec_cert(){}; + explicit http_etsi_ieee1609dot2_codec() : codec_gen(), _codec(), _codec_cert(){}; virtual ~http_etsi_ieee1609dot2_codec(){}; virtual int encode(const Ieee1609Dot2::Ieee1609Dot2Data &p_ieee_1609dot2_data, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec_factory.hh b/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec_factory.hh index 4ef4804..06aa11f 100644 --- a/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec_factory.hh +++ b/ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec_factory.hh @@ -40,5 +40,5 @@ public: //! \publicsection * \return 0 on success, -1 otherwise * \inline */ - inline virtual codec *create_codec() { return (codec *)new http_etsi_ieee1609dot2_codec(); }; + inline virtual codec_gen *create_codec() { return (codec_gen *)new http_etsi_ieee1609dot2_codec(); }; }; // End of class http_etsi_ieee1609dot2_codec_factory diff --git a/ccsrc/Protocols/Security/ieee_1609dot2_base_types_public_encryption_key.hh b/ccsrc/Protocols/Security/ieee_1609dot2_base_types_public_encryption_key.hh index ee1bd5a..3deb7ca 100644 --- a/ccsrc/Protocols/Security/ieee_1609dot2_base_types_public_encryption_key.hh +++ b/ccsrc/Protocols/Security/ieee_1609dot2_base_types_public_encryption_key.hh @@ -1,13 +1,13 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "Ieee1609Dot2BaseTypes.hh" -class ieee_1609dot2_base_types_public_encryption_key : public codec { +class ieee_1609dot2_base_types_public_encryption_key : public codec_gen { public: - explicit ieee_1609dot2_base_types_public_encryption_key() : codec(){}; + explicit ieee_1609dot2_base_types_public_encryption_key() : codec_gen(){}; virtual ~ieee_1609dot2_base_types_public_encryption_key(){}; virtual int encode(const Ieee1609Dot2BaseTypes::PublicEncryptionKey &p_public_encryption_key, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/ieee_1609dot2_base_types_public_verification_key.hh b/ccsrc/Protocols/Security/ieee_1609dot2_base_types_public_verification_key.hh index 809c9ca..8fdad8a 100644 --- a/ccsrc/Protocols/Security/ieee_1609dot2_base_types_public_verification_key.hh +++ b/ccsrc/Protocols/Security/ieee_1609dot2_base_types_public_verification_key.hh @@ -1,15 +1,15 @@ #pragma once -#include "codec.hh" +#include "codec_gen.hh" #include "params.hh" #include "Ieee1609Dot2BaseTypes.hh" class ieee_1609dot2_base_types_public_verification_key - : public codec { + : public codec_gen { public: explicit ieee_1609dot2_base_types_public_verification_key() - : codec(){}; + : codec_gen(){}; virtual ~ieee_1609dot2_base_types_public_verification_key(){}; virtual int encode(const Ieee1609Dot2BaseTypes::PublicVerificationKey &p_public_verification_key, OCTETSTRING &p_data); diff --git a/ccsrc/Protocols/Security/security_services.cc b/ccsrc/Protocols/Security/security_services.cc index 4587edb..438493d 100644 --- a/ccsrc/Protocols/Security/security_services.cc +++ b/ccsrc/Protocols/Security/security_services.cc @@ -32,7 +32,7 @@ security_services::security_services() } // End of ctor -int security_services::setup(params &p_params) { // FIXME Rename this method +int security_services::setup(params_its &p_params) { // FIXME Rename this method loggers::get_instance().log(">>> security_services::setup"); _params = p_params; _params.log(); @@ -44,7 +44,7 @@ int security_services::setup(params &p_params) { // FIXME Rename this method // Build the certificate caching try { - _security_db.reset(new security_db(_params[params::sec_db_path])); + _security_db.reset(new security_db(_params[params_its::sec_db_path])); if (_security_db.get() == nullptr) { // Memory allocation issue loggers::get_instance().warning("security_services::setup: _security_db pointer is NULL"); return -1; @@ -57,11 +57,11 @@ int security_services::setup(params &p_params) { // FIXME Rename this method } // Initialise encryption mechanism - params::const_iterator it = _params.find(params::cypher); + params_its::const_iterator it = _params.find(params_its::cypher); if (it == _params.cend()) { _ec_keys_enc.reset(new security_ecc(ec_elliptic_curves::nist_p_256)); - _params.insert(std::pair(params::cypher, std::string("NISTP-256"))); - p_params.insert(std::pair(params::cypher, std::string("NISTP-256"))); + _params.insert(std::pair(params_its::cypher, std::string("NISTP-256"))); + p_params.insert(std::pair(params_its::cypher, std::string("NISTP-256"))); } else if (it->second.compare("NISTP-256")) { _ec_keys_enc.reset(new security_ecc(ec_elliptic_curves::nist_p_256)); } else if (it->second.compare("BP-256")) { @@ -94,7 +94,7 @@ int security_services::store_certificate(const CHARSTRING &p_cert_id, const OCTE int security_services::verify_and_extract_gn_payload(const OCTETSTRING &p_secured_gn_payload, const bool p_verify, Ieee1609Dot2::Ieee1609Dot2Data &p_ieee_1609dot2_data, OCTETSTRING &p_unsecured_gn_payload, - params &p_params) { + params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::verify_and_extract_gn_payload: ", p_secured_gn_payload); // Sanity checks @@ -119,7 +119,7 @@ int security_services::verify_and_extract_gn_payload(const OCTETSTRING &p_secure } // End of method verify_and_extract_gn_payload int security_services::process_ieee_1609_dot2_content(const Ieee1609Dot2::Ieee1609Dot2Content &p_ieee_1609_dot2_content, const bool p_verify, - OCTETSTRING &p_unsecured_payload, params &p_params) { + OCTETSTRING &p_unsecured_payload, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::process_ieee_1609_dot2_content: ", p_ieee_1609_dot2_content); if (p_ieee_1609_dot2_content.ischosen(Ieee1609Dot2::Ieee1609Dot2Content::ALT_unsecuredData)) { // Unsecured packet, End of recursivity @@ -161,12 +161,12 @@ int security_services::process_ieee_1609_dot2_content(const Ieee1609Dot2::Ieee16 } // End of method process_ieee_1609_dot2_content int security_services::process_ieee_1609_dot2_signed_data(const Ieee1609Dot2::SignedData &p_signed_data, const bool p_verify, OCTETSTRING &p_unsecured_payload, - params &p_params) { + params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::process_ieee_1609_dot2_signed_data: ", p_signed_data); // Check the headerInfo content const Ieee1609Dot2::HeaderInfo &header_info = p_signed_data.tbsData().headerInfo(); - p_params[params::its_aid] = std::to_string(header_info.psid().get_long_long_val()); + p_params[params_its::its_aid] = std::to_string(header_info.psid().get_long_long_val()); if (!header_info.generationTime().is_present()) { loggers::get_instance().warning("security_services::process_ieee_1609_dot2_signed_data: HeaderInfo::GenerationTime field is missing"); if (p_verify) { @@ -311,7 +311,7 @@ int security_services::process_ieee_1609_dot2_signed_data(const Ieee1609Dot2::Si if (s.is_present()) { const Ieee1609Dot2BaseTypes::ServiceSpecificPermissions &ssp = static_cast(s); loggers::get_instance().log_msg("security_services::process_ieee_1609_dot2_signed_data: Processing ssp ", ssp); - params::const_iterator it = p_params.find(std::to_string(psid_ssp.psid())); + params_its::const_iterator it = p_params.find(std::to_string(psid_ssp.psid())); if (it == p_params.cend()) { OCTETSTRING os; if (ssp.ischosen(Ieee1609Dot2BaseTypes::ServiceSpecificPermissions::ALT_opaque)) { @@ -319,7 +319,7 @@ int security_services::process_ieee_1609_dot2_signed_data(const Ieee1609Dot2::Si } else { os = ssp.bitmapSsp(); } - p_params[params::ssp] = std::string(static_cast(oct2str(os))); + p_params[params_its::ssp] = std::string(static_cast(oct2str(os))); } } } // End of 'for' statement @@ -367,7 +367,7 @@ int security_services::process_ieee_1609_dot2_signed_data(const Ieee1609Dot2::Si } // End of method process_ieee_1609_dot2_signed_data int security_services::process_ieee_1609_dot2_encrypted_data(const Ieee1609Dot2::EncryptedData &p_encrypted_data, const bool p_verify, - OCTETSTRING &p_unsecured_payload, params &p_params) { + OCTETSTRING &p_unsecured_payload, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::process_ieee_1609_dot2_encrypted_data: ", p_encrypted_data); // 1. Retrieve the RecipientId @@ -418,10 +418,10 @@ int security_services::process_ieee_1609_dot2_encrypted_data(const Ieee1609Dot2: loggers::get_instance().warning("security_services::process_ieee_1609_dot2_encrypted_data: RecipientId does not match HashedId8 of the symmetric key"); return -1; } else { - if (_security_db.get()->get_private_enc_key(p_params[params::certificate], p_enc_key) == -1) { + if (_security_db.get()->get_private_enc_key(p_params[params_its::certificate], p_enc_key) == -1) { loggers::get_instance().warning( "security_services::process_ieee_1609_dot2_encrypted_data: Failed to retrieve private encryption key for certificate %s", - p_params[params::certificate].c_str()); + p_params[params_its::certificate].c_str()); return -1; } } @@ -469,7 +469,7 @@ int security_services::process_ieee_1609_dot2_encrypted_data(const Ieee1609Dot2: return 0; } // End of method process_ieee_1609_dot2_encrypted_data -int security_services::secure_gn_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_secured_gn_payload, params &p_params) { +int security_services::secure_gn_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_secured_gn_payload, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::secure_gn_payload: ", p_unsecured_gn_payload); p_params.log(); @@ -480,7 +480,7 @@ int security_services::secure_gn_payload(const OCTETSTRING &p_unsecured_gn_paylo return -1; } - if (_params[params::encrypted_mode].compare("1") == 0) { + if (_params[params_its::encrypted_mode].compare("1") == 0) { if (encrypt_gn_payload(signed_payload, p_secured_gn_payload, p_params) != 0) { p_secured_gn_payload = signed_payload; loggers::get_instance().warning("security_services::secure_gn_payload: Failed to encrypt payload"); @@ -494,7 +494,7 @@ int security_services::secure_gn_payload(const OCTETSTRING &p_unsecured_gn_paylo return 0; } -int security_services::sign_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_signed_gn_payload, params &p_params) { +int security_services::sign_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_signed_gn_payload, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::sign_payload: ", p_unsecured_gn_payload); // Set unsecured data @@ -503,7 +503,7 @@ int security_services::sign_payload(const OCTETSTRING &p_unsecured_gn_payload, O Ieee1609Dot2::Ieee1609Dot2Data unsecured_data(ProtocolVersion, unsecured_data_content); // Set hash algorithm Ieee1609Dot2BaseTypes::HashAlgorithm hashId(Ieee1609Dot2BaseTypes::HashAlgorithm::sha256); - if (p_params[params::hash].compare("SHA-384") == 0) { + if (p_params[params_its::hash].compare("SHA-384") == 0) { hashId = Ieee1609Dot2BaseTypes::HashAlgorithm::sha384; } // Set SignedDataPayload @@ -512,15 +512,15 @@ int security_services::sign_payload(const OCTETSTRING &p_unsecured_gn_payload, O payload.extDataHash().set_to_omit(); Ieee1609Dot2::HeaderInfo header_info; // Set secured field according to the payload! - header_info.psid() = converter::get_instance().string_to_int(p_params[params::its_aid]); + header_info.psid() = converter::get_instance().string_to_int(p_params[params_its::its_aid]); header_info.expiryTime().set_to_omit(); // Force certificate? boolean force_certificate = false; - params::const_iterator it = p_params.find(params::force_certificate); + params_its::const_iterator it = p_params.find(params_its::force_certificate); if (it != p_params.cend()) { force_certificate = true; } - if (p_params[params::its_aid].compare("37") == 0) { // Only used by AtsRSUSimulator to add location header + if (p_params[params_its::its_aid].compare("37") == 0) { // Only used by AtsRSUSimulator to add location header // Mandatory for DENM payload OPTIONAL location(Ieee1609Dot2BaseTypes::ThreeDLocation(_latitude, _longitude, _elevation)); header_info.generationLocation() = location; @@ -530,13 +530,13 @@ int security_services::sign_payload(const OCTETSTRING &p_unsecured_gn_payload, O } header_info.p2pcdLearningRequest().set_to_omit(); header_info.missingCrlIdentifier().set_to_omit(); - if (_params[params::encrypted_mode].compare("1") == 0) { + if (_params[params_its::encrypted_mode].compare("1") == 0) { // TODO Set the encrytion key. Not supported yet, need to clarify mechanism, see IEEE Std 1609.2-20XX Clause 6.3.9 HeaderInfo header_info.encryptionKey().set_to_omit(); } else { header_info.encryptionKey().set_to_omit(); } - it = p_params.find(params::payload_type); + it = p_params.find(params_its::payload_type); if (it != p_params.cend()) { loggers::get_instance().log("security_services::sign_payload: Payload type: %s", it->second.c_str()); if (it->second.compare("1") == 0) { // DENM @@ -593,7 +593,7 @@ int security_services::sign_payload(const OCTETSTRING &p_unsecured_gn_payload, O Ieee1609Dot2::SignerIdentifier signer; loggers::get_instance().log("security_services::sign_payload: us = %ld - _last_generation_time = %ld - us - _last_generation_time = %ld", us, _last_generation_time, us - _last_generation_time); - std::string certificate_id = p_params[params::certificate]; + std::string certificate_id = p_params[params_its::certificate]; loggers::get_instance().log("security_services::sign_payload: certificate_id = %s", certificate_id.c_str()); if (((unsigned int)(us - _last_generation_time) >= 1000000 * 0.95) || force_certificate) { // Need to add certificate every 1s loggers::get_instance().log("security_services::sign_payload: Need to add certificate"); @@ -634,7 +634,7 @@ int security_services::sign_payload(const OCTETSTRING &p_unsecured_gn_payload, O return 0; } -int security_services::encrypt_gn_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_enc_gn_payload, params &p_params) { +int security_services::encrypt_gn_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_enc_gn_payload, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::encrypt_gn_payload: ", p_unsecured_gn_payload); // Sanity checks @@ -642,7 +642,7 @@ int security_services::encrypt_gn_payload(const OCTETSTRING &p_unsecured_gn_payl loggers::get_instance().warning("security_services::encrypt_gn_payload: Encryption not initialised"); return -1; } - params::const_iterator it = p_params.find(params::peer_certificate); + params_its::const_iterator it = p_params.find(params_its::peer_certificate); if (it == p_params.cend()) { loggers::get_instance().warning("security_services::encrypt_gn_payload: Encryption impossible without a peer_certificte indication in parameters"); return -1; @@ -707,9 +707,9 @@ int security_services::encrypt_gn_payload(const OCTETSTRING &p_unsecured_gn_payl // 8. Build the encryption data Ieee1609Dot2::EncryptedDataEncryptionKey enc_data_key; - if (_params[params::cypher].compare("NISTP-256") == 0) { + if (_params[params_its::cypher].compare("NISTP-256") == 0) { enc_data_key.eciesNistP256() = ecies_key; - } else if (_params[params::cypher].compare("BP-256") == 0) { + } else if (_params[params_its::cypher].compare("BP-256") == 0) { enc_data_key.eciesBrainpoolP256r1() = ecies_key; } loggers::get_instance().log_msg("security_services::encrypt_gn_payload: enc_data_key=", enc_data_key); @@ -739,7 +739,7 @@ int security_services::encrypt_gn_payload(const OCTETSTRING &p_unsecured_gn_payl return 0; } -int security_services::decrypt_gn_payload(const OCTETSTRING &p_enc_gn_payload, OCTETSTRING &p_unsecured_gn_payload, params &p_params) { +int security_services::decrypt_gn_payload(const OCTETSTRING &p_enc_gn_payload, OCTETSTRING &p_unsecured_gn_payload, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::decrypt_gn_payload: ", p_enc_gn_payload); // Sanity checks @@ -773,7 +773,7 @@ int security_services::decrypt_gn_payload(const OCTETSTRING &p_enc_gn_payload, O /*int security_services::sign_tbs_data(const Ieee1609Dot2::ToBeSignedData &p_tbs_data, const Ieee1609Dot2BaseTypes::HashAlgorithm &p_hashAlgorithm, const OCTETSTRING &p_private_key, Ieee1609Dot2BaseTypes::Signature &p_signature, - params &p_params) { // TODO Refine function + params_its &p_params) { // TODO Refine function loggers::get_instance().log_msg(">>> security_services::sign_tbs_data: ", p_tbs_data); // Encode the ToBeSignedData @@ -800,10 +800,10 @@ int security_services::decrypt_gn_payload(const OCTETSTRING &p_enc_gn_payload, O loggers::get_instance().log_msg("security_services::sign_tbs_data: encoded hashed_data=", hashed_data); loggers::get_instance().log_msg("security_services::sign_tbs_data: encoded hashed_issuer=", hash_issuer); // Sign ToBeSignedData - loggers::get_instance().log("security_services::sign_tbs_data: encoded params::signature = '%s'", - p_params[params::signature].c_str()); // TODO this parameter is useless, use content of the certificate - loggers::get_instance().log("security_services::sign_tbs_data: encoded params::certificate = '%s'", p_params[params::certificate].c_str()); - if (p_params[params::signature].compare("NISTP-256") == 0) { + loggers::get_instance().log("security_services::sign_tbs_data: encoded params_its::signature = '%s'", + p_params[params_its::signature].c_str()); // TODO this parameter is useless, use content of the certificate + loggers::get_instance().log("security_services::sign_tbs_data: encoded params_its::certificate = '%s'", p_params[params_its::certificate].c_str()); + if (p_params[params_its::signature].compare("NISTP-256") == 0) { // Hash ( Hash (Data input) || Hash ("") ) OCTETSTRING os = hashed_data + hash_issuer; // Hash (Data input) || Hash (Signer identifier input) loggers::get_instance().log_msg("security_services::sign_tbs_data: hash: ", os); @@ -826,14 +826,14 @@ int security_services::decrypt_gn_payload(const OCTETSTRING &p_enc_gn_payload, O }*/ int security_services::sign_tbs_data(const Ieee1609Dot2::ToBeSignedData &p_tbs_data, const Ieee1609Dot2BaseTypes::HashAlgorithm &p_hashAlgorithm, - Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params) { + Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::sign_tbs_data: ", p_tbs_data); // Get certificate - loggers::get_instance().log("security_services::sign_tbs_data: encoded params::certificate = '%s'", p_params[params::certificate].c_str()); + loggers::get_instance().log("security_services::sign_tbs_data: encoded params_its::certificate = '%s'", p_params[params_its::certificate].c_str()); Ieee1609Dot2::CertificateBase decoded_certificate; // Set signature type - _security_db.get()->get_certificate(p_params[params::certificate], decoded_certificate); + _security_db.get()->get_certificate(p_params[params_its::certificate], decoded_certificate); std::string sig("NISTP-256"); if (decoded_certificate.toBeSigned().verifyKeyIndicator().ischosen(Ieee1609Dot2::VerificationKeyIndicator::ALT_verificationKey)) { if (decoded_certificate.toBeSigned().verifyKeyIndicator().verificationKey().ischosen(Ieee1609Dot2BaseTypes::PublicVerificationKey::ALT_ecdsaNistP384)) { @@ -845,13 +845,13 @@ int security_services::sign_tbs_data(const Ieee1609Dot2::ToBeSignedData &p_tbs_d } } loggers::get_instance().log("security_services::sign_tbs_data: sig = '%s'", sig.c_str()); - params::const_iterator it = p_params.find(params::signature); + params_its::const_iterator it = p_params.find(params_its::signature); if (it == p_params.cend()) { - p_params.insert(std::pair(params::signature, sig)); + p_params.insert(std::pair(params_its::signature, sig)); } else { - p_params[params::signature] = sig; + p_params[params_its::signature] = sig; } - loggers::get_instance().log("security_services::sign_tbs_data: encoded params::signature = '%s'", p_params[params::signature].c_str()); + loggers::get_instance().log("security_services::sign_tbs_data: encoded params_its::signature = '%s'", p_params[params_its::signature].c_str()); // Encode the ToBeSignedData etsi_ts103097_tobesigned_data_codec tbs_data_codec; @@ -872,16 +872,16 @@ int security_services::sign_tbs_data(const Ieee1609Dot2::ToBeSignedData &p_tbs_d loggers::get_instance().log_msg("security_services::sign_tbs_data: encoded hashed_data=", hashed_data); // Sign ToBeSignedData int result = -1; - loggers::get_instance().log("security_services::sign_tbs_data: encoded params::signature = '%s'", - p_params[params::signature].c_str()); // TODO this parameter is useless, use content of the certificate - loggers::get_instance().log("security_services::sign_tbs_data: encoded params::certificate = '%s'", p_params[params::certificate].c_str()); - if (p_params[params::signature].compare("NISTP-256") == 0) { + loggers::get_instance().log("security_services::sign_tbs_data: encoded params_its::signature = '%s'", + p_params[params_its::signature].c_str()); // TODO this parameter is useless, use content of the certificate + loggers::get_instance().log("security_services::sign_tbs_data: encoded params_its::certificate = '%s'", p_params[params_its::certificate].c_str()); + if (p_params[params_its::signature].compare("NISTP-256") == 0) { result = sign_ecdsa_nistp256(hashed_data, p_signature, p_params); - } else if (p_params[params::signature].compare("NISTP-384") == 0) { + } else if (p_params[params_its::signature].compare("NISTP-384") == 0) { result = sign_ecdsa_nistp384(hashed_data, p_signature, p_params); - } else if (p_params[params::signature].compare("BP-256") == 0) { + } else if (p_params[params_its::signature].compare("BP-256") == 0) { result = sign_ecdsa_brainpoolp256r1(hashed_data, p_signature, p_params); - } else if (p_params[params::signature].compare("BP-384") == 0) { + } else if (p_params[params_its::signature].compare("BP-384") == 0) { result = sign_ecdsa_brainpoolp384r1(hashed_data, p_signature, p_params); } else { loggers::get_instance().error("security_services::sign_tbs_data: Unsupported signature algorithm"); @@ -909,10 +909,10 @@ int security_services::hash_sha384(const OCTETSTRING &p_data, OCTETSTRING &p_has return hash.generate(p_data, p_hash_data); } -int security_services::sign_ecdsa_nistp256(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params) { +int security_services::sign_ecdsa_nistp256(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::sign_ecdsa_nistp256: ", p_hash); - std::string certificate_id = p_params[params::certificate]; + std::string certificate_id = p_params[params_its::certificate]; loggers::get_instance().log("security_services::sign_ecdsa_nistp256: encoded certificate_id = '%s'", certificate_id.c_str()); OCTETSTRING pkey; if (_security_db->get_private_key(certificate_id, pkey) != 0) { @@ -945,10 +945,10 @@ int security_services::sign_ecdsa_nistp256(const OCTETSTRING &p_hash, Ieee1609Do return 0; } -int security_services::sign_ecdsa_nistp384(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params) { +int security_services::sign_ecdsa_nistp384(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::sign_ecdsa_nistp384: ", p_hash); - std::string certificate_id = p_params[params::certificate]; + std::string certificate_id = p_params[params_its::certificate]; loggers::get_instance().log("security_services::sign_ecdsa_nistp384: encoded certificate_id = '%s'", certificate_id.c_str()); OCTETSTRING pkey; if (_security_db->get_private_key(certificate_id, pkey) != 0) { @@ -982,7 +982,7 @@ int security_services::sign_ecdsa_nistp384(const OCTETSTRING &p_hash, Ieee1609Do } int security_services::verify_sign_ecdsa_nistp256(const OCTETSTRING &p_hash, const Ieee1609Dot2BaseTypes::Signature &p_signature, - const std::string &p_certificate_id, params &p_params) { + const std::string &p_certificate_id, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::verify_sign_ecdsa_nistp256:", p_hash); loggers::get_instance().log(">>> security_services::verify_sign_ecdsa_nistp256: %s", p_certificate_id.c_str()); @@ -1031,7 +1031,7 @@ int security_services::verify_sign_ecdsa_nistp256(const OCTETSTRING &p_hash, con } int security_services::verify_sign_ecdsa_nistp384(const OCTETSTRING &p_hash, const Ieee1609Dot2BaseTypes::Signature &p_signature, - const std::string &p_certificate_id, params &p_params) { + const std::string &p_certificate_id, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::verify_sign_ecdsa_nistp384:", p_hash); loggers::get_instance().log(">>> security_services::verify_sign_ecdsa_nistp384: %s", p_certificate_id.c_str()); @@ -1079,10 +1079,10 @@ int security_services::verify_sign_ecdsa_nistp384(const OCTETSTRING &p_hash, con return -1; } -int security_services::sign_ecdsa_brainpoolp256r1(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params) { +int security_services::sign_ecdsa_brainpoolp256r1(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::sign_ecdsa_brainpoolp256r1: ", p_hash); - std::string certificate_id = p_params[params::certificate]; + std::string certificate_id = p_params[params_its::certificate]; loggers::get_instance().log("security_services::sign_ecdsa_brainpoolp256r1: encoded certificate_id = '%s'", certificate_id.c_str()); OCTETSTRING pkey; if (_security_db->get_private_key(certificate_id, pkey) != 0) { @@ -1116,7 +1116,7 @@ int security_services::sign_ecdsa_brainpoolp256r1(const OCTETSTRING &p_hash, Iee } int security_services::verify_sign_ecdsa_brainpoolp256r1(const OCTETSTRING &p_hash, const Ieee1609Dot2BaseTypes::Signature &p_signature, - const std::string &p_certificate_id, params &p_params) { + const std::string &p_certificate_id, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::verify_sign_ecdsa_brainpoolp256r1:", p_hash); loggers::get_instance().log(">>> security_services::verify_sign_ecdsa_brainpoolp256r1: %s", p_certificate_id.c_str()); @@ -1164,10 +1164,10 @@ int security_services::verify_sign_ecdsa_brainpoolp256r1(const OCTETSTRING &p_ha return -1; } -int security_services::sign_ecdsa_brainpoolp384r1(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params) { +int security_services::sign_ecdsa_brainpoolp384r1(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::sign_ecdsa_brainpoolp384r1: ", p_hash); - std::string certificate_id = p_params[params::certificate]; + std::string certificate_id = p_params[params_its::certificate]; loggers::get_instance().log("security_services::sign_ecdsa_brainpoolp384r1: encoded certificate_id = '%s'", certificate_id.c_str()); OCTETSTRING pkey; if (_security_db->get_private_key(certificate_id, pkey) != 0) { @@ -1201,7 +1201,7 @@ int security_services::sign_ecdsa_brainpoolp384r1(const OCTETSTRING &p_hash, Iee } int security_services::verify_sign_ecdsa_brainpoolp384r1(const OCTETSTRING &p_hash, const Ieee1609Dot2BaseTypes::Signature &p_signature, - const std::string &p_certificate_id, params &p_params) { + const std::string &p_certificate_id, params_its &p_params) { loggers::get_instance().log_msg(">>> security_services::verify_sign_ecdsa_brainpoolp384r1:", p_hash); loggers::get_instance().log(">>> security_services::verify_sign_ecdsa_brainpoolp384r1: %s", p_certificate_id.c_str()); diff --git a/ccsrc/Protocols/Security/security_services.hh b/ccsrc/Protocols/Security/security_services.hh index a10262c..ad4bc3a 100644 --- a/ccsrc/Protocols/Security/security_services.hh +++ b/ccsrc/Protocols/Security/security_services.hh @@ -2,7 +2,7 @@ #include -#include "params.hh" +#include "params_its.hh" #include "security_db.hh" @@ -41,7 +41,7 @@ class security_services { */ static security_services *instance; - params _params; + params_its _params; bool _setup_done; std::unique_ptr _ec_keys_enc; std::unique_ptr _ec_keys_dec; @@ -94,7 +94,7 @@ public: /*! \publicsection */ * \return 0 on success, negative value otherwise */ int verify_and_extract_gn_payload(const OCTETSTRING &p_secured_gn_payload, const bool p_verify, Ieee1609Dot2::Ieee1609Dot2Data &p_ieee_1609dot2_data, - OCTETSTRING &p_unsecured_gn_payload, params &p_params); + OCTETSTRING &p_unsecured_gn_payload, params_its &p_params); /*! * \fn int secure_gn_payload(const OCTETSTRING& p_unsecured_gn_payload, OCTETSTRING& p_secured_gn_payload, params& p_params); * \brief Apply security to the provided unsecured payload @@ -103,9 +103,9 @@ public: /*! \publicsection */ * \param[in] p_params The Test System parameters * \return 0 on success, negative value otherwise */ - int secure_gn_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_secured_gn_payload, params &p_params); + int secure_gn_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_secured_gn_payload, params_its &p_params); - int setup(params &p_params); + int setup(params_its &p_params); int store_certificate(const CHARSTRING &p_cert_id, const OCTETSTRING &p_cert, const OCTETSTRING &p_private_key, const OCTETSTRING &p_public_key_x, const OCTETSTRING &p_public_key_y, const OCTETSTRING &p_public_comp_key, const INTEGER &p_public_comp_key_mode, @@ -136,7 +136,7 @@ public: /*! \publicsection */ * \param[in] p_params The Test System parameters * \return 0 on success, negative value otherwise */ - int sign_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_signed_gn_payload, params &p_params); + int sign_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_signed_gn_payload, params_its &p_params); /*! * \fn int encrypt_gn_payload(const OCTETSTRING& p_unsecured_gn_payload, OCTETSTRING& p_signed_gn_payload, params& p_params); * \brief Encrypt the payload according provided parameters @@ -145,12 +145,12 @@ public: /*! \publicsection */ * \param[in] p_params The Test System parameters * \return 0 on success, negative value otherwise */ - int encrypt_gn_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_enc_gn_payload, params &p_params); + int encrypt_gn_payload(const OCTETSTRING &p_unsecured_gn_payload, OCTETSTRING &p_enc_gn_payload, params_its &p_params); - int decrypt_gn_payload(const OCTETSTRING &p_enc_gn_payload, OCTETSTRING &p_unsecured_gn_payload, params &p_params); + int decrypt_gn_payload(const OCTETSTRING &p_enc_gn_payload, OCTETSTRING &p_unsecured_gn_payload, params_its &p_params); // int sign_tbs_data(const Ieee1609Dot2::ToBeSignedData &p_tbs_data, const Ieee1609Dot2BaseTypes::HashAlgorithm &p_hashAlgorithm, -// const OCTETSTRING &p_private_key, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params); +// const OCTETSTRING &p_private_key, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params); const int get_protocol_version() const { return ProtocolVersion; }; @@ -164,28 +164,28 @@ private: * \return 0 on success, negative value otherwise */ int process_ieee_1609_dot2_content(const Ieee1609Dot2::Ieee1609Dot2Content &p_ieee_1609_dot2_content, const bool p_verify, OCTETSTRING &p_unsecured_payload, - params &p_params); + params_its &p_params); int process_ieee_1609_dot2_signed_data(const Ieee1609Dot2::SignedData &p_signed_data, const bool p_verify, OCTETSTRING &p_unsecured_payload, - params &p_params); + params_its &p_params); int process_ieee_1609_dot2_encrypted_data(const Ieee1609Dot2::EncryptedData &p_encrypted_data, const bool p_verify, OCTETSTRING &p_unsecured_payload, - params &p_params); + params_its &p_params); int sign_tbs_data(const Ieee1609Dot2::ToBeSignedData &p_tbs_data, const Ieee1609Dot2BaseTypes::HashAlgorithm &p_hashAlgorithm, - Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params); + Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params); int hash_sha256(const OCTETSTRING &p_data, OCTETSTRING &p_hash_data); int hash_sha384(const OCTETSTRING &p_data, OCTETSTRING &p_hash_data); - int sign_ecdsa_nistp256(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params); - int sign_ecdsa_nistp384(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params); - int sign_ecdsa_brainpoolp256r1(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params); - int sign_ecdsa_brainpoolp384r1(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params &p_params); + int sign_ecdsa_nistp256(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params); + int sign_ecdsa_nistp384(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params); + int sign_ecdsa_brainpoolp256r1(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params); + int sign_ecdsa_brainpoolp384r1(const OCTETSTRING &p_hash, Ieee1609Dot2BaseTypes::Signature &p_signature, params_its &p_params); int verify_sign_ecdsa_nistp256(const OCTETSTRING &p_hash, const Ieee1609Dot2BaseTypes::Signature &p_signature, const std::string &p_certificate_id, - params &p_params); + params_its &p_params); int verify_sign_ecdsa_nistp384(const OCTETSTRING &p_hash, const Ieee1609Dot2BaseTypes::Signature &p_signature, const std::string &p_certificate_id, - params &p_params); + params_its &p_params); int verify_sign_ecdsa_brainpoolp256r1(const OCTETSTRING &p_hash, const Ieee1609Dot2BaseTypes::Signature &p_signature, const std::string &p_certificate_id, - params &p_params); + params_its &p_params); int verify_sign_ecdsa_brainpoolp384r1(const OCTETSTRING &p_hash, const Ieee1609Dot2BaseTypes::Signature &p_signature, const std::string &p_certificate_id, - params &p_params); + params_its &p_params); int extract_verification_keys(const Ieee1609Dot2::CertificateBase &p_cert, OCTETSTRING &p_public_key_x, OCTETSTRING &p_public_key_y, OCTETSTRING &p_public_comp_key, INTEGER &p_public_comp_key_mode); diff --git a/ccsrc/Protocols/SremSsem/SremCodec.cc b/ccsrc/Protocols/SremSsem/SremCodec.cc index ff9bf75..f2c4cb5 100644 --- a/ccsrc/Protocols/SremSsem/SremCodec.cc +++ b/ccsrc/Protocols/SremSsem/SremCodec.cc @@ -15,7 +15,7 @@ int SremCodec::encode(const SREM__PDU__Descriptions::SREM &srem, OCTETSTRING &da return rc; } -int SremCodec::decode(const OCTETSTRING &data, SREM__PDU__Descriptions::SREM &srem, params *params) { +int SremCodec::decode(const OCTETSTRING &data, SREM__PDU__Descriptions::SREM &srem, params_its *params) { loggers::get_instance().log_msg(">>> SremCodec::decode: ", data); int rc = asn_codec.decode(oct2bit(data), srem); diff --git a/ccsrc/Protocols/SremSsem/SremCodec.hh b/ccsrc/Protocols/SremSsem/SremCodec.hh index eeea861..7685942 100644 --- a/ccsrc/Protocols/SremSsem/SremCodec.hh +++ b/ccsrc/Protocols/SremSsem/SremCodec.hh @@ -2,7 +2,7 @@ #define SREMCODEC_H #include "codec.hh" -#include "params.hh" +#include "params_its.hh" #include "per_codec.hh" #include "LibItsSremSsem_TypesAndValues.hh" @@ -22,7 +22,7 @@ public: virtual ~SremCodec(){}; virtual int encode(const SREM__PDU__Descriptions::SREM &srem, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, SREM__PDU__Descriptions::SREM &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, SREM__PDU__Descriptions::SREM &, params_its *params = NULL); }; #endif diff --git a/ccsrc/Protocols/SremSsem/SsemCodec.cc b/ccsrc/Protocols/SremSsem/SsemCodec.cc index d455961..091aa72 100644 --- a/ccsrc/Protocols/SremSsem/SsemCodec.cc +++ b/ccsrc/Protocols/SremSsem/SsemCodec.cc @@ -15,7 +15,7 @@ int SsemCodec::encode(const SSEM__PDU__Descriptions::SSEM &ssem, OCTETSTRING &da return rc; } -int SsemCodec::decode(const OCTETSTRING &data, SSEM__PDU__Descriptions::SSEM &ssem, params *params) { +int SsemCodec::decode(const OCTETSTRING &data, SSEM__PDU__Descriptions::SSEM &ssem, params_its *params) { loggers::get_instance().log_msg(">>> SsemCodec::decode: ", data); int rc = asn_codec.decode(oct2bit(data), ssem); diff --git a/ccsrc/Protocols/SremSsem/SsemCodec.hh b/ccsrc/Protocols/SremSsem/SsemCodec.hh index e7871ca..4a92df4 100644 --- a/ccsrc/Protocols/SremSsem/SsemCodec.hh +++ b/ccsrc/Protocols/SremSsem/SsemCodec.hh @@ -2,7 +2,7 @@ #define SSEMCODEC_H #include "codec.hh" -#include "params.hh" +#include "params_its.hh" #include "per_codec.hh" #include "LibItsSremSsem_TypesAndValues.hh" @@ -22,7 +22,7 @@ public: virtual ~SsemCodec(){}; virtual int encode(const SSEM__PDU__Descriptions::SSEM &ssem, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, SSEM__PDU__Descriptions::SSEM &, params *params = NULL); + virtual int decode(const OCTETSTRING &data, SSEM__PDU__Descriptions::SSEM &, params_its *params = NULL); }; #endif diff --git a/ccsrc/Protocols/SremSsem_layers/SremSsemLayer.cc b/ccsrc/Protocols/SremSsem_layers/SremSsemLayer.cc index da59fa4..ea17f7b 100644 --- a/ccsrc/Protocols/SremSsem_layers/SremSsemLayer.cc +++ b/ccsrc/Protocols/SremSsem_layers/SremSsemLayer.cc @@ -11,7 +11,7 @@ SremSsemLayer::SremSsemLayer(const std::string &p_type, const std::string ¶m : t_layer(p_type), _params(), _srem_codec(), _ssem_codec() { loggers::get_instance().log(">>> SremSsemLayer::SremSsemLayer: %s, %s", to_string().c_str(), param.c_str()); // Setup parameters - params::convert(_params, param); + params_its::convert(_params, param); _params.insert(std::make_pair("its_aid", "140")); // ETSI TS 102 965 V1.2.1 (2015-06) _params.insert(std::make_pair("payload_type", "2")); _params.insert(std::make_pair("dst_port", "2007")); @@ -21,7 +21,7 @@ SremSsemLayer::SremSsemLayer(const std::string &p_type, const std::string ¶m registration::get_instance().add_item(p_type, this); } -void SremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::SremReq &p, params ¶ms) { +void SremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::SremReq &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> SremSsemLayer::sendMsg: ", p); // Encode srem PDU @@ -31,11 +31,11 @@ void SremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::SremReq &p, pa return; } - _params[params::btp_destination_port] = "2007"; + _params[params_its::btp_destination_port] = "2007"; send_data(data, _params); } -void SremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::SsemReq &p, params ¶ms) { +void SremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::SsemReq &p, params_its ¶ms) { loggers::get_instance().log_msg(">>> SremSsemLayer::sendMsg: ", p); // Encode ssem PDU @@ -44,17 +44,17 @@ void SremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::SsemReq &p, pa loggers::get_instance().warning("SremSsemLayer::sendMsg: Encoding failure"); return; } - _params[params::btp_destination_port] = "2008"; + _params[params_its::btp_destination_port] = "2008"; send_data(data, _params); } -void SremSsemLayer::send_data(OCTETSTRING &data, params ¶ms) { +void SremSsemLayer::send_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> SremSsemLayer::send_data: ", data); // params.log(); send_to_all_layers(data, params); } -void SremSsemLayer::receive_data(OCTETSTRING &data, params ¶ms) { +void SremSsemLayer::receive_data(OCTETSTRING &data, params_its ¶ms) { loggers::get_instance().log_msg(">>> SremSsemLayer::receive_data: ", data); // Sanity check @@ -68,63 +68,63 @@ void SremSsemLayer::receive_data(OCTETSTRING &data, params ¶ms) { } // else, continue // Process lower layer data // recvTime - params::const_iterator it = params.find(params::timestamp); + params_its::const_iterator it = params.find(params_its::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader - it = params.find(params::gn_next_header); + it = params.find(params_its::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { p.gnNextHeader().set_to_omit(); } // gnHeaderType - it = params.find(params::gn_header_type); + it = params.find(params_its::gn_header_type); if (it != params.cend()) { p.gnHeaderType() = std::stoi(it->second); } else { p.gnHeaderType().set_to_omit(); } // gnHeaderSubtype - it = params.find(params::gn_header_sub_type); + it = params.find(params_its::gn_header_sub_type); if (it != params.cend()) { p.gnHeaderSubtype() = std::stoi(it->second); } else { p.gnHeaderSubtype().set_to_omit(); } // gnLifetime - it = params.find(params::gn_lifetime); + it = params.find(params_its::gn_lifetime); if (it != params.cend()) { p.gnLifetime() = std::stoi(it->second); } else { p.gnLifetime().set_to_omit(); } // gnTrafficClass - it = params.find(params::gn_traffic_class); + it = params.find(params_its::gn_traffic_class); if (it != params.cend()) { p.gnTrafficClass() = std::stoi(it->second); } else { p.gnTrafficClass().set_to_omit(); } // btpDestinationPort - it = params.find(params::btp_destination_port); + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { p.btpDestinationPort() = std::stoi(it->second); } else { p.btpDestinationPort().set_to_omit(); } // btpInfo - it = params.find(params::btp_info); + it = params.find(params_its::btp_info); if (it != params.cend()) { p.btpInfo() = std::stoi(it->second); } else { p.btpInfo().set_to_omit(); } // ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("SremSsemayer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -132,7 +132,7 @@ void SremSsemLayer::receive_data(OCTETSTRING &data, params ¶ms) { p.ssp().set_to_omit(); } // its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { p.its__aid() = std::stoi(it->second); } else { @@ -150,63 +150,63 @@ void SremSsemLayer::receive_data(OCTETSTRING &data, params ¶ms) { return; } // else, continue // Process lower layer data - params::const_iterator it = params.find(params::timestamp); + params_its::const_iterator it = params.find(params_its::timestamp); if (it != params.cend()) { p.recvTime().set_long_long_val(std::stoll(it->second)); } else { p.recvTime().set_to_omit(); } // gnNextHeader - it = params.find(params::gn_next_header); + it = params.find(params_its::gn_next_header); if (it != params.cend()) { p.gnNextHeader() = std::stoi(it->second); } else { p.gnNextHeader().set_to_omit(); } // gnHeaderType - it = params.find(params::gn_header_type); + it = params.find(params_its::gn_header_type); if (it != params.cend()) { p.gnHeaderType() = std::stoi(it->second); } else { p.gnHeaderType().set_to_omit(); } // gnHeaderSubtype - it = params.find(params::gn_header_sub_type); + it = params.find(params_its::gn_header_sub_type); if (it != params.cend()) { p.gnHeaderSubtype() = std::stoi(it->second); } else { p.gnHeaderSubtype().set_to_omit(); } // gnLifetime - it = params.find(params::gn_lifetime); + it = params.find(params_its::gn_lifetime); if (it != params.cend()) { p.gnLifetime() = std::stoi(it->second); } else { p.gnLifetime().set_to_omit(); } // gnTrafficClass - it = params.find(params::gn_traffic_class); + it = params.find(params_its::gn_traffic_class); if (it != params.cend()) { p.gnTrafficClass() = std::stoi(it->second); } else { p.gnTrafficClass().set_to_omit(); } // btpDestinationPort - it = params.find(params::btp_destination_port); + it = params.find(params_its::btp_destination_port); if (it != params.cend()) { p.btpDestinationPort() = std::stoi(it->second); } else { p.btpDestinationPort().set_to_omit(); } // btpInfo - it = params.find(params::btp_info); + it = params.find(params_its::btp_info); if (it != params.cend()) { p.btpInfo() = std::stoi(it->second); } else { p.btpInfo().set_to_omit(); } // ssp - it = params.find(params::ssp); + it = params.find(params_its::ssp); if (it != params.cend()) { loggers::get_instance().log("SremSsemLayer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); @@ -214,7 +214,7 @@ void SremSsemLayer::receive_data(OCTETSTRING &data, params ¶ms) { p.ssp().set_to_omit(); } // its_aid - it = params.find(params::its_aid); + it = params.find(params_its::its_aid); if (it != params.cend()) { p.its__aid() = std::stoi(it->second); } else { diff --git a/ccsrc/Protocols/SremSsem_layers/SremSsemLayer.hh b/ccsrc/Protocols/SremSsem_layers/SremSsemLayer.hh index a323d1f..937403c 100644 --- a/ccsrc/Protocols/SremSsem_layers/SremSsemLayer.hh +++ b/ccsrc/Protocols/SremSsem_layers/SremSsemLayer.hh @@ -23,20 +23,20 @@ namespace LibItsSremSsem__TestSystem { } // namespace LibItsSremSsem__TestSystem class SremSsemLayer : public t_layer { - params _params; - SremCodec _srem_codec; - SsemCodec _ssem_codec; + params_its _params; + SremCodec _srem_codec; + SsemCodec _ssem_codec; public: SremSsemLayer() : t_layer(), _params(), _srem_codec(), _ssem_codec(){}; SremSsemLayer(const std::string &p_type, const std::string ¶m); virtual ~SremSsemLayer(){}; - void sendMsg(const LibItsSremSsem__TypesAndValues::SremReq &, params ¶ms); - void sendMsg(const LibItsSremSsem__TypesAndValues::SsemReq &, params ¶ms); + void sendMsg(const LibItsSremSsem__TypesAndValues::SremReq &, params_its& params); + void sendMsg(const LibItsSremSsem__TypesAndValues::SsemReq &, params_its& params); - virtual void send_data(OCTETSTRING &data, params ¶ms); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING& p_data, params_its& params); + virtual void receive_data(OCTETSTRING& p_data, params_its& p_params); int enable_secured_mode(const std::string &p_certificate_id, const boolean p_enforce_security); diff --git a/ccsrc/Protocols/Tcp/module.mk b/ccsrc/Protocols/Tcp/module.mk deleted file mode 100644 index 44d6c56..0000000 --- a/ccsrc/Protocols/Tcp/module.mk +++ /dev/null @@ -1,3 +0,0 @@ -sources := tcp_layer.cc -includes := . - diff --git a/ccsrc/Protocols/Tcp/tcp_layer.cc b/ccsrc/Protocols/Tcp/tcp_layer.cc deleted file mode 100644 index 3d24493..0000000 --- a/ccsrc/Protocols/Tcp/tcp_layer.cc +++ /dev/null @@ -1,259 +0,0 @@ -#include -#include -#include -#include -#include - -#include "tcp_layer_factory.hh" - -#include "loggers.hh" - -tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : layer(p_type), SSL_Socket(), PORT(p_type.c_str()), _params(), _client_id{-1}, _time_key("tcp_layer::Handle_Fd_Event_Readable"), _reconnect_on_send{false} { - loggers::get_instance().log(">>> tcp_layer::tcp_layer (1): %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - _params.log(); - - init(); } - -tcp_layer::tcp_layer(const std::string & p_type, const params & param) : layer(p_type), SSL_Socket(), PORT(p_type.c_str()), _params(), _client_id{-1}, _time_key("tcp_layer::Handle_Fd_Event_Readable"), _reconnect_on_send{false} { - loggers::get_instance().log(">>> tcp_layer::tcp_layer (2): %s", to_string().c_str()); - // Setup parameters - _params = param; - - init(); -} - -void tcp_layer::init() { - loggers::get_instance().log(">>> tcp_layer::init"); - - set_socket_debugging(false); - params::const_iterator it = _params.find(params::debug); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("debug"), "0")); - } else if (it->second.compare("1") == 0) { - set_socket_debugging(true); - } - it = _params.find(std::string("tcp_fragmented")); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("tcp_fragmented"), "0")); - } - bool server_mode = false; - it = _params.find(params::server_mode); - if (it != _params.cend()) { - server_mode = (1 == std::stoi(it->second)); - } else { - _params.insert(std::pair(std::string("server_mode"), "0")); - } - it = _params.find(params::server); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("server"), "127.0.0.1")); // TODO Try using params::server instead of std::string("server") - } - if (!parameter_set(params::server.c_str(), _params[params::server].c_str())) { - loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); - } - bool ssl_mode = false; - it = _params.find(params::use_ssl); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("use_ssl"), "0")); - } else if (it->second.compare("1") == 0) { - _params.insert(std::pair(std::string("use_ssl"), "1")); - ssl_mode = true; - } - set_ssl_use_ssl(ssl_mode); - it = _params.find(params::port); - if (it == _params.cend()) { - if (_params[params::use_ssl].compare("0") == 0) { // Use standard HTTP port - _params.insert(std::pair(std::string("port"), "80")); - } else { // Use standard HTTPS port - _params.insert(std::pair(std::string("port"), "443")); - } - } - if (!parameter_set(remote_port_name(), _params[params::port].c_str())) { - loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::port.c_str()); - } - it = _params.find(params::local_port); - if (it == _params.cend()) { - if (_params[params::use_ssl].compare("0") == 0) { // Use standard HTTP local_port - _params.insert(std::pair(std::string("local_port"), "80")); - } else { // Use standard HTTPS local_port - _params.insert(std::pair(std::string("local_port"), "443")); - } - } - if (!parameter_set(local_port_name(), _params[params::local_port].c_str())) { - loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::local_port.c_str()); - } - - parameter_set(use_connection_ASPs_name(), (!server_mode) ? "yes" : "no"); - loggers::get_instance().warning("tcp_layer::set_parameter: Limit to one simultanneous accepted connection (server_backlog == 1"); - parameter_set(server_backlog_name(), "1"); // Limit to one simultanneous accepted connection - loggers::get_instance().log("tcp_layer::init: server_mode=%x", server_mode); - set_server_mode(server_mode); - if (server_mode) { - parameter_set("serverPort", _params[params::local_port].c_str()); - } - if (ssl_mode) { // Add certificate bundle - // Check mutual authentication param - _params.insert(std::pair(std::string("mutual_tls"), "0")); - parameter_set(ssl_verifycertificate_name(), "no"); - it = _params.find(params::mutual_auth); - if (it == _params.cend()) { - if (_params[params::mutual_auth].compare("1") == 0) { // Use mutual authentication - parameter_set(ssl_verifycertificate_name(), "yes"); - _params.insert(std::pair(std::string("mutual_tls"), "1")); - } - } - // Set trusted CA file - it = _params.find(params::mutual_auth); - if (it == _params.cend()) { - parameter_set(ssl_trustedCAlist_file_name(), it->second.c_str()); - _params.insert(std::pair(std::string("mutual_tls"), it->second)); - } else { - parameter_set(ssl_trustedCAlist_file_name(), "/usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt"); - } - // Set additional certificates - //parameter_set(ssl_private_key_file_name(), "../certificates/out/privates/e5e11abad8003766e4a7b721afb175a189b5f4cc7046af9b0d8eaebb86f28c40_server_dsa.key.pem"); - //parameter_set(ssl_certificate_file_name(), "../certificates/out/certs/e5e11abad8003766e4a7b721afb175a189b5f4cc7046af9b0d8eaebb86f28c40_server_dsa.cert.pem"); - } - set_ttcn_buffer_usercontrol(false); - set_handle_half_close(true); - - map_user(); - - parameter_set(client_TCP_reconnect_name(), "yes"); - - if (server_mode == 0) { - loggers::get_instance().log("tcp_layer::init: Establish connection: %s/%s", _params[params::server].c_str(), _params[params::port].c_str()); - open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL); - } -} - -tcp_layer::~tcp_layer() { - loggers::get_instance().log(">>> tcp_layer::~tcp_layer: %d", _client_id); - if (_client_id != -1) { - remove_client(_client_id); - } - - unmap_user(); -} - -void tcp_layer::Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error) -{ - loggers::get_instance().log(">>> tcp_layer::Handle_Fd_Event: %d", fd); - Handle_Socket_Event(fd, is_readable, is_writable, is_error); - log_debug("<<< tcp_layer::Handle_Fd_Event"); -} - -void tcp_layer::Handle_Timeout(double time_since_last_call) -{ - loggers::get_instance().log(">>> tcp_layer::Handle_Timeout: %f", time_since_last_call); - Handle_Timeout_Event(time_since_last_call); - loggers::get_instance().log("<<< tcp_layer::Handle_Timeout"); -} - -void tcp_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> tcp_layer::send_data: ", data); - - loggers::get_instance().log("tcp_layer::send_data: SSL mode: %x", get_ssl_use_ssl()); - loggers::get_instance().log("tcp_layer::send_data: server_mode: %s", _params[params::server_mode].c_str()); - loggers::get_instance().log("tcp_layer::send_data: peer_list_get_nr_of_peers: %d", peer_list_get_nr_of_peers()); - - if ((_params[params::server_mode].compare("0") == 0) && (peer_list_get_nr_of_peers() == 0)) { - // Reconnect (e.g. HTTP connection lost - loggers::get_instance().log("tcp_layer::send_data: Re-establish connection: %s/%s", _params[params::server].c_str(), _params[params::port].c_str()); - open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL); - } - send_outgoing(static_cast(data), data.lengthof(), _client_id); -} - -void tcp_layer::receive_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> tcp_layer::receive_data: ", data); - - receive_to_all_layers(data, params); -} - -void tcp_layer::message_incoming(const unsigned char* message_buffer, int length, int client_id) { - loggers::get_instance().log(">>> tcp_layer::message_incoming"); - loggers::get_instance().log_to_hexa("tcp_layer::message_incoming: ", message_buffer, length); - - float duration; - loggers::get_instance().set_start_time(_time_key); - OCTETSTRING data(length, message_buffer); - params params; - params.insert(std::pair( - std::string("timestamp"), - std::to_string(std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()))); - this->receive_data(data, params); // TODO Check execution time for decoding operation - loggers::get_instance().set_stop_time(_time_key, duration); -} - -void tcp_layer::client_connection_opened(int p_client_id) -{ - loggers::get_instance().log(">>> tcp_layer::client_connection_opened: %d", p_client_id); - _client_id = p_client_id; -} - -bool tcp_layer::add_user_data(int p_client_id) -{ - loggers::get_instance().log(">>> tcp_layer::add_user_data: %d", p_client_id); - if (_params[params::use_ssl].compare("0") == 0) { - loggers::get_instance().log("tcp_layer::add_user_data: Non secured mode"); - return Abstract_Socket::add_user_data(p_client_id); - } - loggers::get_instance().log("tcp_layer::add_user_data: SSL mode"); - return SSL_Socket::add_user_data(p_client_id); -} - -int tcp_layer::send_message_on_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) -{ - loggers::get_instance().log(">>> tcp_layer::send_message_on_fd: %d", p_client_id); - - if(get_user_data(p_client_id)) { - loggers::get_instance().log("tcp_layer::send_message_on_fd: SSL mode"); - return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); - } - - loggers::get_instance().log("tcp_layer::send_message_on_fd: Non secured mode"); - return Abstract_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); -} - -int tcp_layer::send_message_on_nonblocking_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) -{ - loggers::get_instance().log(">>> tcp_layer::send_message_on_nonblocking_fd: %d", p_client_id); - - if(get_user_data(p_client_id)) { - loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: SSL mode"); - return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); - } - - loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: Non secured mode"); - return Abstract_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); -} - -int tcp_layer::receive_message_on_fd(int p_client_id) -{ - loggers::get_instance().log(">>> tcp_layer::receive_message_on_fd: %d", p_client_id); - - if(get_user_data(p_client_id)) { - // INFO: it is assumed that only SSL_Socket assigns user data to each peer - loggers::get_instance().log("tcp_layer::receive_message_on_fd: SSL mode"); - return SSL_Socket::receive_message_on_fd(p_client_id); - } - - loggers::get_instance().log("tcp_layer::receive_message_on_fd: Non secured mode"); - if (_params[std::string("tcp_fragmented")].compare("1") == 0) { - sleep(5); // FIXME When HTTP paquet is fragmented into several TCP packets, a timer is required. This is a Q&D solution - } - return Abstract_Socket::receive_message_on_fd(p_client_id); -} - -void tcp_layer::peer_disconnected(int p_client_id) -{ - loggers::get_instance().log(">>> tcp_layer::peer_disconnected: %d", p_client_id); - - Abstract_Socket::peer_disconnected(p_client_id); - _client_id = -1; -} - -tcp_layer_factory tcp_layer_factory::_f; - diff --git a/ccsrc/Protocols/Tcp/tcp_layer.hh b/ccsrc/Protocols/Tcp/tcp_layer.hh deleted file mode 100644 index 3dbcba7..0000000 --- a/ccsrc/Protocols/Tcp/tcp_layer.hh +++ /dev/null @@ -1,108 +0,0 @@ -/*! - * \file tcp_layer.hh - * \brief Header file for ITS TCP socket based protocol port layer. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer.hh" - -using namespace std; // Required for isnan() -#include "Abstract_Socket.hh" - -class PORT; //! Forward declaration of TITAN class - -/*! - * \class tcp_layer - * \brief This class provides description of ITS TCP port protocol layer - */ -class tcp_layer : public layer, public SSL_Socket, public PORT { - params _params; //! Layer parameters - int _client_id; //! Connection identifier - std::string _time_key; //! \todo - bool _reconnect_on_send; //! Set to true if connection shall be done when sending data. Otherwise, connection is established by the \see constructor - -public: //! \publicsection - //tcp_layer(): PORT("TCP") {}; - /*! - * \brief Specialised constructor - * Create a new instance of the tcp_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - tcp_layer(const std::string &p_type, const std::string &p_param); - /*! - * \brief Specialised constructor - * Create a new instance of the tcp_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - tcp_layer(const std::string &p_type, const params &p_param); - /*! - * \brief Default destructor - * \remark If \see _reconnect_on_send is set to false, the disconnection is done by the destructor - */ - virtual ~tcp_layer(); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - * \virtual - */ - virtual void send_data(OCTETSTRING &data, params ¶ms); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING &data, params &info); - - /*! - * \virtual - * \fn void message_incoming(const unsigned char* message_buffer, int length, int client_id = -1); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_buffer The bytes formated data received - * \param[in] p_length The number of bytes received - * \param[in] p_client_id The connection identifier.Default: -1 - */ - virtual void message_incoming(const unsigned char *p_buffer, int p_length, int p_client_id = -1); - -protected: //! \protectedsection - void init(); - - void Add_Fd_Read_Handler(int fd) { Handler_Add_Fd_Read(fd); }; - void Add_Fd_Write_Handler(int fd) { Handler_Add_Fd_Write(fd); }; - void Remove_Fd_Read_Handler(int fd) { Handler_Remove_Fd_Read(fd); }; - void Remove_Fd_Write_Handler(int fd) { Handler_Remove_Fd_Write(fd); }; - void Remove_Fd_All_Handlers(int fd) { Handler_Remove_Fd(fd); }; - void Handler_Uninstall() { Uninstall_Handler(); } - void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, boolean call_anyway = TRUE, boolean is_periodic = TRUE) { - Handler_Set_Timer(call_interval, is_timeout, call_anyway, is_periodic); - }; - - const char *remote_address_name() { return params::server.c_str(); }; - const char *remote_port_name() { return params::port.c_str(); }; - const char *socket_debugging_name() { return params::debug.c_str(); }; - const char *ssl_use_ssl_name() { return params::use_ssl.c_str(); }; - - void client_connection_opened(int p_client_id); - bool add_user_data(int p_client_id); - int send_message_on_fd(int p_client_id, const unsigned char *message_buffer, int length_of_message); - int send_message_on_nonblocking_fd(int client_id, const unsigned char *message_buffer, int length_of_message); - int receive_message_on_fd(int p_client_id); - void peer_disconnected(int p_client_id); - -private: //! \privatesection - void Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error); - void Handle_Timeout(double time_since_last_call); -}; // End of class tcp_layer diff --git a/ccsrc/Protocols/Tcp/tcp_layer_factory.hh b/ccsrc/Protocols/Tcp/tcp_layer_factory.hh deleted file mode 100644 index 4fe2009..0000000 --- a/ccsrc/Protocols/Tcp/tcp_layer_factory.hh +++ /dev/null @@ -1,41 +0,0 @@ -/*! - * \file tcp_layer_factory.hh - * \brief Header file for ITS TCP socket based protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "tcp_layer.hh" - -/*! - * \class tcp_layer_factory - * \brief This class provides a factory class to create an tcp_layer class instance - */ -class tcp_layer_factory : public layer_factory { - static tcp_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the tcp_layer class - * \remark The TCP socket based layer identifier is TCP - */ - tcp_layer_factory() { - // Register factory - layer_stack_builder::register_layer_factory("TCP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - */ - inline virtual layer *create_layer(const std::string &p_type, const std::string &p_param) { return new tcp_layer(p_type, p_param); }; -}; // End of class tcp_layer_factory diff --git a/ccsrc/Protocols/UDP/module.mk b/ccsrc/Protocols/UDP/module.mk deleted file mode 100644 index d19e9d9..0000000 --- a/ccsrc/Protocols/UDP/module.mk +++ /dev/null @@ -1,4 +0,0 @@ -#sources := udp_layer.cc udp_pcap_layer.cc -sources := udp_layer.cc -includes := . - diff --git a/ccsrc/Protocols/UDP/udp_layer.cc b/ccsrc/Protocols/UDP/udp_layer.cc deleted file mode 100644 index 58ffd37..0000000 --- a/ccsrc/Protocols/UDP/udp_layer.cc +++ /dev/null @@ -1,196 +0,0 @@ -#include -#include -#include - -#include - -#include "loggers.hh" - -#include "udp_layer_factory.hh" - -#include -#include - -udp_layer::udp_layer(const std::string &p_type, const std::string ¶m) - : layer(p_type), PORT(p_type.c_str()), _params(), _saddr{0}, _daddr{0}, _reuse_incoming_source_adddress(false), _fd(-1), - _time_key("udp_layer::Handle_Fd_Event_Readable") { - loggers::get_instance().log(">>> udp_layer::udp_layer (1): %s, %s", to_string().c_str(), param.c_str()); - - // Setup parameters - params::convert(_params, param); - - init(); -} - -udp_layer::udp_layer(const std::string &p_type, const params ¶m) - : layer(p_type), PORT(p_type.c_str()), _params(), _saddr{0}, _daddr{0}, _reuse_incoming_source_adddress(false), _fd(-1), - _time_key("udp_layer::Handle_Fd_Event_Readable") { - loggers::get_instance().log(">>> udp_layer::udp_layer (2): %s", to_string().c_str()); - - // Setup parameters - _params = param; - - init(); -} - -void udp_layer::init() { - loggers::get_instance().log(">>> udp_layer::init"); - - params::const_iterator it = _params.find("src_ip"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("src_ip"), "127.0.0.1")); - } - it = _params.find("src_port"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("src_port"), "0")); // Dynamic binding requested - } - it = _params.find("dst_ip"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("dst_ip"), "127.0.0.1")); - } - it = _params.find("dst_port"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("dst_port"), "12345")); - } - it = _params.find("reuse_incoming_source_adddress"); - if (it != _params.cend()) { - _reuse_incoming_source_adddress = (boolean)(it->second.compare("1") == 0); - } - loggers::get_instance().log("udp_layer::init: _reuse_incoming_source_adddress: %d", _reuse_incoming_source_adddress); - - // Initialize the socket - _saddr.sin_family = AF_INET; - _saddr.sin_addr.s_addr = htonl(INADDR_ANY); - loggers::get_instance().log("udp_layer::init: Port to listen=%d", std::atoi(_params["src_port"].c_str())); - _saddr.sin_port = htons(std::atoi(_params["src_port"].c_str())); - // Create socket - _fd = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (_fd == -1) { - loggers::get_instance().error("udp_layer::init: Failed to create socket"); - } - loggers::get_instance().log("udp_layer::init: socket id: %d", _fd); - int reuse = 1; - if (::setsockopt(_fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0) { - loggers::get_instance().warning("udp_layer::init: Failed to set SO_REUSEADDR"); - } - // Bind it - /*struct ifreq ifr; - memset(&ifr, 0, sizeof(ifr)); - snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "eth1"); - if (setsockopt(_fd, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr.ifr_name, strlen(ifr.ifr_name)) < 0) { - close(); - loggers::get_instance().error("udp_layer::init: Failed to bind socket to %s", ifr.ifr_name); - } - loggers::get_instance().log("udp_layer::init: Bound to device %s", ifr.ifr_name);*/ - if (::bind(_fd, (struct sockaddr *)&_saddr, sizeof(_saddr)) < 0) { - close(); - loggers::get_instance().error("udp_layer::init: Failed to bind socket"); - } - loggers::get_instance().log("udp_layer::init: Bound on port %s", _params["src_port"].c_str()); - // Pass the device file handler to the polling procedure - Handler_Add_Fd_Read(_fd); - - _daddr.sin_family = AF_INET; - _daddr.sin_addr.s_addr = htonl(get_host_id(_params["dst_ip"])); - _daddr.sin_port = htons(std::atoi(_params["dst_port"].c_str())); -} - -udp_layer::~udp_layer() { - loggers::get_instance().log(">>> udp_layer::~udp_layer"); - - close(); -} - -void udp_layer::close() { - loggers::get_instance().log(">>> udp_layer::close: %d", _fd); - - if (_fd != -1) { - ::close(_fd); - _fd = -1; - } -} - -void udp_layer::send_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log(">>> udp_layer::send_data: %d", _fd); - loggers::get_instance().log_msg(">>> udp_layer::send_data: ", data); - - int result = ::sendto(_fd, (const char *)static_cast(data), data.lengthof(), 0, (struct sockaddr *)&_daddr, sizeof(_daddr)); - loggers::get_instance().log("udp_layer::send_data: #bytes sent: %d to %s:%d", result, ::inet_ntoa(_daddr.sin_addr), ntohs(_daddr.sin_port)); -} - -void udp_layer::receive_data(OCTETSTRING &data, params ¶ms) { - loggers::get_instance().log_msg(">>> udp_layer::receive_data: ", data); - - receive_to_all_layers(data, params); -} - -void udp_layer::Handle_Fd_Event_Readable(int fd) { - loggers::get_instance().log(">>> udp_layer::Handle_Fd_Event_Readable: %d", fd); - - unsigned char buffer[3072] = {0}; - struct sockaddr_in from = {0}; - socklen_t len = sizeof(struct sockaddr_in); // Length of sender's address - params params; - std::vector acc; - int result = ::recvfrom(fd, buffer, 3072, 0, (struct sockaddr *)&from, &len); - loggers::get_instance().log("udp_layer::Handle_Fd_Event_Readable: src_port = %s:%d, payload length = %d, errno = %d", ::inet_ntoa(from.sin_addr), - ntohs(from.sin_port), result, errno); - while ((result == 3072) && (errno == 0)) { - std::copy((unsigned char *)buffer, (unsigned char *)((unsigned char *)buffer + result), std::back_inserter(acc)); - result = ::recvfrom(fd, buffer, 3072, 0, (struct sockaddr *)&from, &len); - loggers::get_instance().log("udp_layer::Handle_Fd_Event_Readable: src_port = %s:%d, payload length = %d, errno = %d", ::inet_ntoa(from.sin_addr), - ntohs(from.sin_port), result, errno); - } // End of 'while' statement - if (errno < 0) { - loggers::get_instance().warning("udp_layer::Handle_Fd_Event_Readable: Failed to read data, discard them: errno=%d", errno); - return; - } else { - std::copy((unsigned char *)buffer, (unsigned char *)((unsigned char *)buffer + result), std::back_inserter(acc)); - if (_reuse_incoming_source_adddress) { // Reuse the incoming address/port for sending - memcpy((void *)&_daddr, (const void *)&from, sizeof(struct sockaddr_in)); - loggers::get_instance().log("udp_layer::Handle_Fd_Event_Readable: New _daddr: %s:%d", ::inet_ntoa(_daddr.sin_addr), ntohs(_daddr.sin_port)); - } - } - params.insert(std::pair( - std::string("timestamp"), - std::to_string(std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()))); - - float duration; - loggers::get_instance().set_start_time(_time_key); - OCTETSTRING os(acc.size(), acc.data()); - receive_data(os, params); // TODO Check execution time for decoding operation - loggers::get_instance().set_stop_time(_time_key, duration); -} - -unsigned long udp_layer::get_host_id(const std::string &p_host_name) { - loggers::get_instance().log(">>> udp_layer::get_host_id"); - - if (p_host_name.empty()) { - loggers::get_instance().warning("udp_layer::get_host_id: Wrong parameter"); - return INADDR_ANY; - } - - unsigned long ip_addr = 0; - if (p_host_name.compare("255.255.255.255") == 0) { - loggers::get_instance().warning("udp_layer::get_host_id: Host ip is 255.255.255.255"); - ip_addr = 0xffffffff; - } else { - in_addr_t addr = ::inet_addr(p_host_name.c_str()); - if (addr != (in_addr_t)-1) { // host name in XX:XX:XX:XX form - ip_addr = addr; - } else { // host name in domain.com form - struct hostent *hptr; - if ((hptr = ::gethostbyname(p_host_name.c_str())) == 0) { - close(); - loggers::get_instance().error("udp_layer::get_host_id: Invalid host name: %s", p_host_name.c_str()); - } - ip_addr = *((unsigned long *)hptr->h_addr_list[0]); - } - } - - loggers::get_instance().log("udp_layer::get_host_id: Host name: %s, Host address: %u", p_host_name.c_str(), ip_addr); - - return htonl(ip_addr); -} - -udp_layer_factory udp_layer_factory::_f; diff --git a/ccsrc/Protocols/UDP/udp_layer.hh b/ccsrc/Protocols/UDP/udp_layer.hh deleted file mode 100644 index cfed5f5..0000000 --- a/ccsrc/Protocols/UDP/udp_layer.hh +++ /dev/null @@ -1,84 +0,0 @@ -/*! - * \file udp_layer.hh - * \brief Header file for ITS UDP/IP protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include - -#include "layer.hh" - -using namespace std; // Required for isnan() -#include "Abstract_Socket.hh" - -//class PORT; //! Forward declaration of TITAN class - -/*! - * \class udp_layer - * \brief This class provides description of ITS UDP/IP protocol layer - */ -class udp_layer : public layer, public PORT { - params _params; //! Layer parameters - struct sockaddr_in _saddr; //! Source socket address description - struct sockaddr_in _daddr; //! Destination socket address description - bool _reuse_incoming_source_adddress; - //! This flag must be set to true if the UpperTester/UDP layer must act as an IUT, not as a Test System. Default value: Test System - int _fd; // Socket file descriptor - std::string _time_key; //! \todo - -public: //! \publicsection - //udp_layer(): PORT("UDP") {}; - /*! - * \brief Specialised constructor - * Create a new instance of the udp_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - udp_layer(const std::string &p_type, const std::string &p_param); - /*! - * \brief Specialised constructor - * Create a new instance of the udp_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - udp_layer(const std::string &p_type, const params &p_param); - /*! - * \brief Default destructor - */ - virtual ~udp_layer(); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING &data, params ¶ms); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING &data, params &info); - - void Handle_Fd_Event_Readable(int fd); - -protected: - void init(); - -private: - unsigned long get_host_id(const std::string &p_host_name); - void close(); -}; // End of class udp_layer diff --git a/ccsrc/Protocols/UDP/udp_layer_factory.hh b/ccsrc/Protocols/UDP/udp_layer_factory.hh deleted file mode 100644 index d08c503..0000000 --- a/ccsrc/Protocols/UDP/udp_layer_factory.hh +++ /dev/null @@ -1,42 +0,0 @@ -/*! - * \file udp_layer_factory.hh - * \brief Header file for ITS UDP/IP protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "udp_layer.hh" - -/*! - * \class udp_layer_factory - * \brief This class provides a factory class to create an udp_layer class instance - */ -class udp_layer_factory : public layer_factory { - static udp_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the udp_layer_factory class - * \remark The UDP/IP layer identifier is UDP - */ - udp_layer_factory() { - // register factory - layer_stack_builder::register_layer_factory("UDP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer *create_layer(const std::string &p_type, const std::string &p_param) { return new udp_layer(p_type, p_param); }; -}; // End of class udp_layer_factory diff --git a/ccsrc/Protocols/UpperTester/UpperTesterRtcmemCodec.cc b/ccsrc/Protocols/UpperTester/UpperTesterRtcmemCodec.cc index ed170b6..1e0b3ec 100644 --- a/ccsrc/Protocols/UpperTester/UpperTesterRtcmemCodec.cc +++ b/ccsrc/Protocols/UpperTester/UpperTesterRtcmemCodec.cc @@ -95,7 +95,7 @@ int UpperTesterRtcmemCodec::encode_(const Base_Type &type, const TTCN_Typedescri return 0; } -int UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); _params = params; @@ -107,7 +107,7 @@ int UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, Record_Type &msg, pa return 0; } -std::unique_ptr UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, params *params) { +std::unique_ptr UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, params_its *params) { std::unique_ptr result; const unsigned char *ptr = static_cast(data); @@ -124,7 +124,7 @@ std::unique_ptr UpperTesterRtcmemCodec::decode(const OCTETSTRING &dat return result; } -int UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, LibItsRtcmem__TypesAndValues::UtRtcmemResults &msg, params *params) { +int UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, LibItsRtcmem__TypesAndValues::UtRtcmemResults &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> UpperTesterRtcmemCodec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data); @@ -144,7 +144,7 @@ int UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, LibItsRtcmem__TypesA return 0; } -int UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, LibItsRtcmem__TypesAndValues::UtRtcmemEventInd &msg, params *params) { +int UpperTesterRtcmemCodec::decode(const OCTETSTRING &data, LibItsRtcmem__TypesAndValues::UtRtcmemEventInd &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> UpperTesterRtcmemCodec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data) + 1; diff --git a/ccsrc/Protocols/UpperTester/UpperTesterRtcmemCodec.hh b/ccsrc/Protocols/UpperTester/UpperTesterRtcmemCodec.hh index 7dda869..97f10c9 100644 --- a/ccsrc/Protocols/UpperTester/UpperTesterRtcmemCodec.hh +++ b/ccsrc/Protocols/UpperTester/UpperTesterRtcmemCodec.hh @@ -36,11 +36,11 @@ public: virtual ~UpperTesterRtcmemCodec(){}; virtual int encode(const Record_Type &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); - std::unique_ptr decode(const OCTETSTRING &data, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); + std::unique_ptr decode(const OCTETSTRING &data, params_its *params = NULL); private: - int decode(const OCTETSTRING &data, LibItsRtcmem__TypesAndValues::UtRtcmemResults &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsRtcmem__TypesAndValues::UtRtcmemEventInd &msg, params *params = NULL); + int decode(const OCTETSTRING &data, LibItsRtcmem__TypesAndValues::UtRtcmemResults &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsRtcmem__TypesAndValues::UtRtcmemEventInd &msg, params_its *params = NULL); }; #endif diff --git a/ccsrc/Protocols/UpperTester/UpperTesterRtcmemLayer.cc b/ccsrc/Protocols/UpperTester/UpperTesterRtcmemLayer.cc index 0240f1b..243a8e5 100644 --- a/ccsrc/Protocols/UpperTester/UpperTesterRtcmemLayer.cc +++ b/ccsrc/Protocols/UpperTester/UpperTesterRtcmemLayer.cc @@ -12,7 +12,7 @@ UpperTesterRtcmemLayer::UpperTesterRtcmemLayer(const std::string &p_type, const params::convert(_params, param); } -void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemInitialize &send_par, params &p_params) { +void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemInitialize &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> UpperTesterRtcmemLayer::sendMsg", send_par); // Encode UpperTester PDU @@ -22,7 +22,7 @@ void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcme send_data(data, p_params); } -void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemTrigger &send_par, params &p_params) { +void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemTrigger& send_par, params_its& p_params) { loggers::get_instance().log_msg(">>> UpperTesterRtcmemLayer::sendMsg", send_par); // Encode UpperTester PDU @@ -32,7 +32,7 @@ void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcme send_data(data, p_params); } -void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemUpdate &send_par, params &p_params) { +void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemUpdate& send_par, params_its& p_params) { loggers::get_instance().log_msg(">>> UpperTesterRtcmemLayer::sendMsg", send_par); // Encode UpperTester PDU @@ -42,7 +42,7 @@ void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcme send_data(data, p_params); } -void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemTermination &send_par, params &p_params) { +void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemTermination &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> UpperTesterRtcmemLayer::sendMsg", send_par); // Encode UpperTester PDU @@ -52,16 +52,16 @@ void UpperTesterRtcmemLayer::sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcme send_data(data, p_params); } -void UpperTesterRtcmemLayer::send_data(OCTETSTRING &data, params &p_params) { - loggers::get_instance().log_msg(">>> UpperTesterRtcmemLayer::send_data: ", data); +void UpperTesterRtcmemLayer::send_data(OCTETSTRING& p_data, params_its& p_params) { + loggers::get_instance().log_msg(">>> UpperTesterRtcmemLayer::send_data: ", p_data); // params.log(); - send_to_all_layers(data, p_params); + send_to_all_layers(p_data, p_params); } -void UpperTesterRtcmemLayer::receive_data(OCTETSTRING &data, params &p_params) { - loggers::get_instance().log_msg(">>> UpperTesterRtcmemLayer::receive_data: ", data); +void UpperTesterRtcmemLayer::receive_data(OCTETSTRING& p_data, params_its& p_params) { + loggers::get_instance().log_msg(">>> UpperTesterRtcmemLayer::receive_data: ", p_data); - std::unique_ptr r = _codec.decode(data); + std::unique_ptr r = _codec.decode(p_data); if (r.get() != nullptr) { // Pass it to the ports if any to_all_upper_ports(*r, p_params); diff --git a/ccsrc/Protocols/UpperTester/UpperTesterRtcmemLayer.hh b/ccsrc/Protocols/UpperTester/UpperTesterRtcmemLayer.hh index af7a89c..7eb6cb9 100644 --- a/ccsrc/Protocols/UpperTester/UpperTesterRtcmemLayer.hh +++ b/ccsrc/Protocols/UpperTester/UpperTesterRtcmemLayer.hh @@ -1,8 +1,8 @@ #ifndef UpperTesterRtcmem_LAYER_H #define UpperTesterRtcmem_LAYER_H -#include "UpperTesterRtcmemCodec.hh" #include "t_layer.hh" +#include "UpperTesterRtcmemCodec.hh" namespace LibItsRtcmem__TestSystem { class UpperTesterPort; @@ -16,7 +16,7 @@ namespace LibItsRtcmem__TypesAndValues { } // namespace LibItsRtcmem__TypesAndValues class UpperTesterRtcmemLayer : public t_layer { - params _params; + params_its _params; UpperTesterRtcmemCodec _codec; public: @@ -24,13 +24,13 @@ public: UpperTesterRtcmemLayer(const std::string &p_type, const std::string ¶m); virtual ~UpperTesterRtcmemLayer(){}; - void sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemInitialize &send_par, params &p_params); - void sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemTrigger &send_par, params &p_params); - void sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemUpdate &send_par, params &p_params); - void sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemTermination &send_par, params &p_params); + void sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemInitialize &send_par, params_its& p_params); + void sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemTrigger &send_par, params_its& p_params); + void sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemUpdate &send_par, params_its& p_params); + void sendMsg(const LibItsRtcmem__TypesAndValues::UtRtcmemTermination &send_par, params_its& p_params); - virtual void send_data(OCTETSTRING &data, params &p_params); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING& p_data, params_its& p_params); + virtual void receive_data(OCTETSTRING& p_data, params_its& p_params); }; #endif diff --git a/ccsrc/Protocols/UpperTester/UpperTesterSremSsemCodec.cc b/ccsrc/Protocols/UpperTester/UpperTesterSremSsemCodec.cc index 7fdfc50..a5593ad 100644 --- a/ccsrc/Protocols/UpperTester/UpperTesterSremSsemCodec.cc +++ b/ccsrc/Protocols/UpperTester/UpperTesterSremSsemCodec.cc @@ -79,7 +79,7 @@ int UpperTesterSremSsemCodec::encode_(const Base_Type &type, const TTCN_Typedesc return 0; } -int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { loggers::get_instance().log_msg(">>> UpperTesterSremSsemCodec::decode (1): data=", data); TTCN_EncDec::clear_error(); @@ -93,7 +93,7 @@ int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, Record_Type &msg, return 0; } -std::unique_ptr UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, params *params) { +std::unique_ptr UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, params_its *params) { loggers::get_instance().log_to_hexa(">>> UpperTesterSremSsemCodec::decode (2): decoding_buffer=", data); std::unique_ptr result; @@ -116,7 +116,7 @@ std::unique_ptr UpperTesterSremSsemCodec::decode(const OCTETSTRING &d return result; } -int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSremResults &msg, params *params) { +int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSremResults &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> UpperTesterSremSsemCodec::decode (3): decoding_buffer=", data); const unsigned char *ptr = static_cast(data); @@ -140,7 +140,7 @@ int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, LibItsSremSsem__Ty return 0; } -int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSremEventInd &msg, params *params) { +int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSremEventInd &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> UpperTesterSremSsemCodec::decode (4): decoding_buffer=", data); const unsigned char *ptr = static_cast(data) + 1; @@ -157,7 +157,7 @@ int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, LibItsSremSsem__Ty return 0; } -int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSsemEventInd &msg, params *params) { +int UpperTesterSremSsemCodec::decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSsemEventInd &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> UpperTesterSremSsemCodec::decode (5): decoding_buffer=", data); const unsigned char *ptr = static_cast(data) + 1; diff --git a/ccsrc/Protocols/UpperTester/UpperTesterSremSsemCodec.hh b/ccsrc/Protocols/UpperTester/UpperTesterSremSsemCodec.hh index 74aa064..481f7bf 100644 --- a/ccsrc/Protocols/UpperTester/UpperTesterSremSsemCodec.hh +++ b/ccsrc/Protocols/UpperTester/UpperTesterSremSsemCodec.hh @@ -37,12 +37,12 @@ public: virtual ~UpperTesterSremSsemCodec(){}; virtual int encode(const Record_Type &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); - std::unique_ptr decode(const OCTETSTRING &data, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); + std::unique_ptr decode(const OCTETSTRING &data, params_its *params = NULL); private: - int decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSremResults &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSremEventInd &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSsemEventInd &msg, params *params = NULL); + int decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSremResults &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSremEventInd &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsSremSsem__TypesAndValues::UtSsemEventInd &msg, params_its *params = NULL); }; #endif diff --git a/ccsrc/Protocols/UpperTester/UpperTesterSremSsemLayer.cc b/ccsrc/Protocols/UpperTester/UpperTesterSremSsemLayer.cc index 3c096f3..c706188 100644 --- a/ccsrc/Protocols/UpperTester/UpperTesterSremSsemLayer.cc +++ b/ccsrc/Protocols/UpperTester/UpperTesterSremSsemLayer.cc @@ -5,14 +5,14 @@ #include "loggers.hh" -UpperTesterSremSsemLayer::UpperTesterSremSsemLayer(const std::string &p_type, const std::string ¶m) +UpperTesterSremSsemLayer::UpperTesterSremSsemLayer(const std::string &p_type, const std::string &p_param) : t_layer(p_type), _params(), _codec() { - loggers::get_instance().log(">>> UpperTesterSremSsemLayer::UpperTesterSremSsemLayer: %s, %s", to_string().c_str(), param.c_str()); + loggers::get_instance().log(">>> UpperTesterSremSsemLayer::UpperTesterSremSsemLayer: %s, %s", to_string().c_str(), p_param.c_str()); // Setup parameters - params::convert(_params, param); + params::convert(_params, p_param); } -void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtSremInitialize &send_par, params &p_params) { +void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtSremInitialize &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> UpperTesterSremSsemLayer::sendMsg", send_par); // Encode UpperTester PDU @@ -22,7 +22,7 @@ void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtS send_data(data, p_params); } -void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtSremTrigger &send_par, params &p_params) { +void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtSremTrigger &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> UpperTesterSremSsemLayer::sendMsg", send_par); // Encode UpperTester PDU @@ -32,7 +32,7 @@ void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtS send_data(data, p_params); } -void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtSremUpdate &send_par, params &p_params) { +void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtSremUpdate &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> UpperTesterSremSsemLayer::sendMsg", send_par); // Encode UpperTester PDU @@ -42,7 +42,7 @@ void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtS send_data(data, p_params); } -void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtSremCancelation &send_par, params &p_params) { +void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtSremCancelation &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> UpperTesterSremSsemLayer::sendMsg", send_par); // Encode UpperTester PDU @@ -52,13 +52,13 @@ void UpperTesterSremSsemLayer::sendMsg(const LibItsSremSsem__TypesAndValues::UtS send_data(data, p_params); } -void UpperTesterSremSsemLayer::send_data(OCTETSTRING &data, params &p_params) { +void UpperTesterSremSsemLayer::send_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> UpperTesterSremSsemLayer::send_data: ", data); // params.log(); send_to_all_layers(data, p_params); } -void UpperTesterSremSsemLayer::receive_data(OCTETSTRING &data, params &p_params) { +void UpperTesterSremSsemLayer::receive_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> UpperTesterSremSsemLayer::receive_data: ", data); std::unique_ptr r = _codec.decode(data); diff --git a/ccsrc/Protocols/UpperTester/UpperTesterSremSsemLayer.hh b/ccsrc/Protocols/UpperTester/UpperTesterSremSsemLayer.hh index 59e010c..9798c01 100644 --- a/ccsrc/Protocols/UpperTester/UpperTesterSremSsemLayer.hh +++ b/ccsrc/Protocols/UpperTester/UpperTesterSremSsemLayer.hh @@ -16,7 +16,7 @@ namespace LibItsSremSsem__TypesAndValues { } // namespace LibItsSremSsem__TypesAndValues class UpperTesterSremSsemLayer : public t_layer { - params _params; + params_its _params; UpperTesterSremSsemCodec _codec; public: @@ -24,13 +24,13 @@ public: UpperTesterSremSsemLayer(const std::string &p_type, const std::string ¶m); virtual ~UpperTesterSremSsemLayer(){}; - void sendMsg(const LibItsSremSsem__TypesAndValues::UtSremInitialize &send_par, params &p_params); - void sendMsg(const LibItsSremSsem__TypesAndValues::UtSremTrigger &send_par, params &p_params); - void sendMsg(const LibItsSremSsem__TypesAndValues::UtSremUpdate &send_par, params &p_params); - void sendMsg(const LibItsSremSsem__TypesAndValues::UtSremCancelation &send_par, params &p_params); + void sendMsg(const LibItsSremSsem__TypesAndValues::UtSremInitialize &send_par, params_its& p_params); + void sendMsg(const LibItsSremSsem__TypesAndValues::UtSremTrigger &send_par, params_its& p_params); + void sendMsg(const LibItsSremSsem__TypesAndValues::UtSremUpdate &send_par, params_its& p_params); + void sendMsg(const LibItsSremSsem__TypesAndValues::UtSremCancelation &send_par, params_its& p_params); - virtual void send_data(OCTETSTRING &data, params &p_params); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING& p_data, params_its& p_params); + virtual void receive_data(OCTETSTRING& p_data, params_its& p_params); }; #endif diff --git a/ccsrc/Protocols/UpperTester/module.mk b/ccsrc/Protocols/UpperTester/module.mk index 95d8e83..c013e3f 100644 --- a/ccsrc/Protocols/UpperTester/module.mk +++ b/ccsrc/Protocols/UpperTester/module.mk @@ -43,4 +43,4 @@ endif includes := . -modules += ../UDP +modules += ../../../framework/ccsrc/Protocols/UDP diff --git a/ccsrc/Protocols/UpperTester/uppertester_cam_codec.cc b/ccsrc/Protocols/UpperTester/uppertester_cam_codec.cc index 3c2ec69..e35cd9a 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_cam_codec.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_cam_codec.cc @@ -213,7 +213,7 @@ int uppertester_cam_codec::encode_(const Base_Type &type, const TTCN_Typedescrip return 0; } -int uppertester_cam_codec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int uppertester_cam_codec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); _params = params; @@ -225,7 +225,7 @@ int uppertester_cam_codec::decode(const OCTETSTRING &data, Record_Type &msg, par return 0; } -std::unique_ptr uppertester_cam_codec::decode(const OCTETSTRING &data, params *params) { +std::unique_ptr uppertester_cam_codec::decode(const OCTETSTRING &data, params_its *params) { std::unique_ptr result; @@ -246,7 +246,7 @@ std::unique_ptr uppertester_cam_codec::decode(const OCTETSTRING &data return result; } -int uppertester_cam_codec::decode(const OCTETSTRING &data, LibItsCam__TypesAndValues::UtCamResults &msg, params *params) { +int uppertester_cam_codec::decode(const OCTETSTRING &data, LibItsCam__TypesAndValues::UtCamResults &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_cam_codec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data); @@ -268,7 +268,7 @@ int uppertester_cam_codec::decode(const OCTETSTRING &data, LibItsCam__TypesAndVa return 0; } -int uppertester_cam_codec::decode(const OCTETSTRING &data, LibItsCam__TypesAndValues::UtCamEventInd &msg, params *params) { +int uppertester_cam_codec::decode(const OCTETSTRING &data, LibItsCam__TypesAndValues::UtCamEventInd &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_cam_codec::decode (1): decoding_buffer=", data); const unsigned char *ptr = static_cast(data) + 1; diff --git a/ccsrc/Protocols/UpperTester/uppertester_cam_codec.hh b/ccsrc/Protocols/UpperTester/uppertester_cam_codec.hh index ccb5051..fb0579a 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_cam_codec.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_cam_codec.hh @@ -57,10 +57,10 @@ public: virtual int encode(const Record_Type &, OCTETSTRING &data); int encode(const LibItsCam__TypesAndValues::UtCamTrigger &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); - std::unique_ptr decode(const OCTETSTRING &data, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); + std::unique_ptr decode(const OCTETSTRING &data, params_its *params = NULL); private: - int decode(const OCTETSTRING &data, LibItsCam__TypesAndValues::UtCamResults &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsCam__TypesAndValues::UtCamEventInd &msg, params *params = NULL); + int decode(const OCTETSTRING &data, LibItsCam__TypesAndValues::UtCamResults &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsCam__TypesAndValues::UtCamEventInd &msg, params_its *params = NULL); }; // End of class uppertester_cam_codec diff --git a/ccsrc/Protocols/UpperTester/uppertester_cam_layer.cc b/ccsrc/Protocols/UpperTester/uppertester_cam_layer.cc index 9bb509f..e158db6 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_cam_layer.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_cam_layer.cc @@ -16,7 +16,7 @@ uppertester_cam_layer::uppertester_cam_layer(const std::string &p_type, const st } } -void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamInitialize &send_par, params &p_params) { +void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamInitialize &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_cam_layer::sendMsg", send_par); if (_params[params::loopback].compare("1") == 0) { @@ -32,7 +32,7 @@ void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamInitia } } -void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamChangePosition &send_par, params &p_params) { +void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamChangePosition &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_cam_layer::sendMsg", send_par); if (_params[params::loopback].compare("1") == 0) { @@ -48,7 +48,7 @@ void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamChange } } -void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamTrigger &send_par, params &p_params) { +void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamTrigger &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_cam_layer::sendMsg", send_par); if (_params[params::loopback].compare("1") == 0) { @@ -64,13 +64,13 @@ void uppertester_cam_layer::sendMsg(const LibItsCam__TypesAndValues::UtCamTrigge } } -void uppertester_cam_layer::send_data(OCTETSTRING &data, params &p_params) { +void uppertester_cam_layer::send_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_cam_layer::send_data: ", data); // params.log(); send_to_all_layers(data, p_params); } -void uppertester_cam_layer::receive_data(OCTETSTRING &data, params &p_params) { +void uppertester_cam_layer::receive_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_cam_layer::receive_data: ", data); std::unique_ptr r = _codec.decode(data); diff --git a/ccsrc/Protocols/UpperTester/uppertester_cam_layer.hh b/ccsrc/Protocols/UpperTester/uppertester_cam_layer.hh index 90ab4dd..67db69b 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_cam_layer.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_cam_layer.hh @@ -26,7 +26,7 @@ namespace LibItsCam__TypesAndValues { } // namespace LibItsCam__TypesAndValues class uppertester_cam_layer : public t_layer { - params _params; + params_its _params; uppertester_cam_codec _codec; public: @@ -34,10 +34,10 @@ public: uppertester_cam_layer(const std::string &p_type, const std::string ¶m); virtual ~uppertester_cam_layer(){}; - void sendMsg(const LibItsCam__TypesAndValues::UtCamInitialize &send_par, params &p_params); - void sendMsg(const LibItsCam__TypesAndValues::UtCamChangePosition &send_par, params &p_params); - void sendMsg(const LibItsCam__TypesAndValues::UtCamTrigger &send_par, params &p_params); + void sendMsg(const LibItsCam__TypesAndValues::UtCamInitialize &send_par, params_its& p_params); + void sendMsg(const LibItsCam__TypesAndValues::UtCamChangePosition &send_par, params_its& p_params); + void sendMsg(const LibItsCam__TypesAndValues::UtCamTrigger &send_par, params_its& p_params); - virtual void send_data(OCTETSTRING &data, params &p_params); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params_its& p_params); + virtual void receive_data(OCTETSTRING &data, params_its& info); }; // End of class uppertester_cam_layer diff --git a/ccsrc/Protocols/UpperTester/uppertester_debug_layer.cc b/ccsrc/Protocols/UpperTester/uppertester_debug_layer.cc index d858c1e..e0b4135 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_debug_layer.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_debug_layer.cc @@ -15,13 +15,13 @@ uppertester_debug_layer::uppertester_debug_layer(const std::string &p_type, cons uppertester_debug_layer::~uppertester_debug_layer() { loggers::get_instance().log(">>> uppertester_debug_layer::~uppertester_debug_layer"); } -void uppertester_debug_layer::send_data(OCTETSTRING &p_data, params &p_params) { +void uppertester_debug_layer::send_data(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_debug_layer::send_data: ", p_data); receive_data(p_data, p_params); } -void uppertester_debug_layer::receive_data(OCTETSTRING &p_data, params &p_params) { +void uppertester_debug_layer::receive_data(OCTETSTRING &p_data, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_debug_layer::receive_data: ", p_data); OCTETSTRING data; diff --git a/ccsrc/Protocols/UpperTester/uppertester_debug_layer.hh b/ccsrc/Protocols/UpperTester/uppertester_debug_layer.hh index 6fa59f9..5913b29 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_debug_layer.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_debug_layer.hh @@ -1,5 +1,5 @@ /*! - * \file uppertester_debug_layer.hh + * \File uppertester_debug_layer.hh * \brief Header file for ITS UPPERTESTER_DEBUG/IP protocol layer definition. * \author ETSI STF525 * \copyright ETSI Copyright Notification @@ -47,7 +47,7 @@ public: //! \publicsection * \param[in] p_data The data to be sent * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters */ - virtual void send_data(OCTETSTRING &p_data, params &p_params); + virtual void send_data(OCTETSTRING &p_data, params_its& p_params); /*! * \virtual * \fn void receive_data(OCTETSTRING& data, params& params); @@ -55,6 +55,6 @@ public: //! \publicsection * \param[in] p_data The bytes formated data received * \param[in] p_params Some lower layers parameters values when data was received */ - virtual void receive_data(OCTETSTRING &p_data, params &p_params); + virtual void receive_data(OCTETSTRING &p_data, params_its& p_params); }; // End of class uppertester_debug_layer diff --git a/ccsrc/Protocols/UpperTester/uppertester_denm_codec.cc b/ccsrc/Protocols/UpperTester/uppertester_denm_codec.cc index b69f908..3c3646f 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_denm_codec.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_denm_codec.cc @@ -207,7 +207,7 @@ int uppertester_denm_codec::encode_(const Base_Type &type, const TTCN_Typedescri return 0; } -int uppertester_denm_codec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int uppertester_denm_codec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); _params = params; @@ -219,7 +219,7 @@ int uppertester_denm_codec::decode(const OCTETSTRING &data, Record_Type &msg, pa return 0; } -std::unique_ptr uppertester_denm_codec::decode(const OCTETSTRING &data, params *params) { +std::unique_ptr uppertester_denm_codec::decode(const OCTETSTRING &data, params_its *params) { std::unique_ptr result; @@ -237,7 +237,7 @@ std::unique_ptr uppertester_denm_codec::decode(const OCTETSTRING &dat return result; } -int uppertester_denm_codec::decode(const OCTETSTRING &data, LibItsDenm__TypesAndValues::UtDenmResults &msg, params *params) { +int uppertester_denm_codec::decode(const OCTETSTRING &data, LibItsDenm__TypesAndValues::UtDenmResults &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_denm_codec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data); @@ -282,7 +282,7 @@ int uppertester_denm_codec::decode(const OCTETSTRING &data, LibItsDenm__TypesAnd return 0; } -int uppertester_denm_codec::decode(const OCTETSTRING &data, LibItsDenm__TypesAndValues::UtDenmEventInd &msg, params *params) { +int uppertester_denm_codec::decode(const OCTETSTRING &data, LibItsDenm__TypesAndValues::UtDenmEventInd &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_denm_codec::decode (1): decoding_buffer=", data); const unsigned char *ptr = static_cast(data) + 1; diff --git a/ccsrc/Protocols/UpperTester/uppertester_denm_codec.hh b/ccsrc/Protocols/UpperTester/uppertester_denm_codec.hh index 839504b..6f5015d 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_denm_codec.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_denm_codec.hh @@ -48,10 +48,10 @@ public: virtual ~uppertester_denm_codec(){}; virtual int encode(const Record_Type &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); - std::unique_ptr decode(const OCTETSTRING &data, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); + std::unique_ptr decode(const OCTETSTRING &data, params_its *params = NULL); private: - int decode(const OCTETSTRING &data, LibItsDenm__TypesAndValues::UtDenmResults &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsDenm__TypesAndValues::UtDenmEventInd &msg, params *params = NULL); + int decode(const OCTETSTRING &data, LibItsDenm__TypesAndValues::UtDenmResults &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsDenm__TypesAndValues::UtDenmEventInd &msg, params_its *params = NULL); }; // End of class uppertester_denm_codec diff --git a/ccsrc/Protocols/UpperTester/uppertester_denm_layer.cc b/ccsrc/Protocols/UpperTester/uppertester_denm_layer.cc index 4611aa9..820eba5 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_denm_layer.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_denm_layer.cc @@ -15,16 +15,16 @@ uppertester_denm_layer::uppertester_denm_layer(const std::string &p_type, const if (it == _params.cend()) { _params.insert(std::pair(params::loopback, "0")); } - it = _params.find(params::station_id); + it = _params.find(params_its::station_id); if (it == _params.cend()) { - _params.insert(std::pair(params::station_id, "12345")); + _params.insert(std::pair(params_its::station_id, "12345")); } } // End of ctor -void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmInitialize &send_par, params &p_params) { +void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmInitialize &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_denm_layer::sendMsg", send_par); - if (_params[params::loopback].compare("1") == 0) { + if (_params[params_its::loopback].compare("1") == 0) { LibItsDenm__TypesAndValues::UtDenmResults ut_denm_results; ut_denm_results.utDenmInitializeResult() = BOOLEAN(true); to_all_upper_ports(ut_denm_results, p_params); @@ -37,10 +37,10 @@ void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmIni } } -void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmChangePosition &send_par, params &p_params) { +void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmChangePosition &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_denm_layer::sendMsg", send_par); - if (_params[params::loopback].compare("1") == 0) { + if (_params[params_its::loopback].compare("1") == 0) { LibItsDenm__TypesAndValues::UtDenmResults ut_denm_results; ut_denm_results.utDenmChangePositionResult() = BOOLEAN(true); to_all_upper_ports(ut_denm_results, p_params); @@ -53,10 +53,10 @@ void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmCha } } -void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmChangePseudonym &send_par, params &p_params) { +void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmChangePseudonym &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_denm_layer::sendMsg", send_par); - if (_params[params::loopback].compare("1") == 0) { + if (_params[params_its::loopback].compare("1") == 0) { LibItsDenm__TypesAndValues::UtDenmResults ut_denm_results; ut_denm_results.utDenmChangePseudonymResult() = BOOLEAN(true); to_all_upper_ports(ut_denm_results, p_params); @@ -69,11 +69,11 @@ void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmCha } } -void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTrigger &send_par, params &p_params) { +void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTrigger &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_denm_layer::sendMsg", send_par); - if (_params[params::loopback].compare("1") == 0) { - LibItsDenm__TypesAndValues::UtDenmTriggerResult trigger_result(true, ITS__Container::ActionID(std::stoi(_params[params::station_id]), 1)); + if (_params[params_its::loopback].compare("1") == 0) { + LibItsDenm__TypesAndValues::UtDenmTriggerResult trigger_result(true, ITS__Container::ActionID(std::stoi(_params[params_its::station_id]), 1)); LibItsDenm__TypesAndValues::UtDenmResults ut_denm_results; ut_denm_results.utDenmTriggerResult() = trigger_result; to_all_upper_ports(ut_denm_results, p_params); @@ -86,11 +86,11 @@ void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTri } } -void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmUpdate &send_par, params &p_params) { +void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmUpdate &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_denm_layer::sendMsg", send_par); - if (_params[params::loopback].compare("1") == 0) { - LibItsDenm__TypesAndValues::UtDenmUpdateResult update_result(true, ITS__Container::ActionID(std::stoi(_params[params::station_id]), 1)); + if (_params[params_its::loopback].compare("1") == 0) { + LibItsDenm__TypesAndValues::UtDenmUpdateResult update_result(true, ITS__Container::ActionID(std::stoi(_params[params_its::station_id]), 1)); LibItsDenm__TypesAndValues::UtDenmResults ut_denm_results; ut_denm_results.utDenmUpdateResult() = update_result; to_all_upper_ports(ut_denm_results, p_params); @@ -103,10 +103,10 @@ void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmUpd } } -void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTermination &send_par, params &p_params) { +void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTermination &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_denm_layer::sendMsg", send_par); - if (_params[params::loopback].compare("1") == 0) { + if (_params[params_its::loopback].compare("1") == 0) { LibItsDenm__TypesAndValues::UtDenmResults ut_denm_results; ut_denm_results.utDenmTerminationResult() = BOOLEAN(true); to_all_upper_ports(ut_denm_results, p_params); @@ -119,16 +119,16 @@ void uppertester_denm_layer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTer } } -void uppertester_denm_layer::send_data(OCTETSTRING &data, params &p_params) { - loggers::get_instance().log_msg(">>> uppertester_denm_layer::send_data: ", data); +void uppertester_denm_layer::send_data(OCTETSTRING& p_data, params_its& p_params) { + loggers::get_instance().log_msg(">>> uppertester_denm_layer::send_data: ", p_data); // params.log(); - send_to_all_layers(data, p_params); + send_to_all_layers(p_data, p_params); } -void uppertester_denm_layer::receive_data(OCTETSTRING &data, params &p_params) { - loggers::get_instance().log_msg(">>> uppertester_denm_layer::receive_data: ", data); +void uppertester_denm_layer::receive_data(OCTETSTRING& p_data, params_its &p_params) { + loggers::get_instance().log_msg(">>> uppertester_denm_layer::receive_data: ", p_data); - std::unique_ptr r = _codec.decode(data); + std::unique_ptr r = _codec.decode(p_data); if (r.get() != nullptr) { // Pass it to the ports if any to_all_upper_ports(*r, p_params); diff --git a/ccsrc/Protocols/UpperTester/uppertester_denm_layer.hh b/ccsrc/Protocols/UpperTester/uppertester_denm_layer.hh index 94e927f..94464ed 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_denm_layer.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_denm_layer.hh @@ -29,7 +29,7 @@ namespace LibItsDenm__TypesAndValues { } // namespace LibItsDenm__TypesAndValues class uppertester_denm_layer : public t_layer { - params _params; + params_its _params; uppertester_denm_codec _codec; public: @@ -37,13 +37,13 @@ public: uppertester_denm_layer(const std::string &p_type, const std::string ¶m); virtual ~uppertester_denm_layer(){}; - void sendMsg(const LibItsDenm__TypesAndValues::UtDenmInitialize &send_par, params &p_params); - void sendMsg(const LibItsDenm__TypesAndValues::UtDenmChangePosition &send_par, params &p_params); - void sendMsg(const LibItsDenm__TypesAndValues::UtDenmChangePseudonym &send_par, params &p_params); - void sendMsg(const LibItsDenm__TypesAndValues::UtDenmTrigger &send_par, params &p_params); - void sendMsg(const LibItsDenm__TypesAndValues::UtDenmUpdate &send_par, params &p_params); - void sendMsg(const LibItsDenm__TypesAndValues::UtDenmTermination &send_par, params &p_params); + void sendMsg(const LibItsDenm__TypesAndValues::UtDenmInitialize &send_par, params_its& p_params); + void sendMsg(const LibItsDenm__TypesAndValues::UtDenmChangePosition &send_par, params_its& p_params); + void sendMsg(const LibItsDenm__TypesAndValues::UtDenmChangePseudonym &send_par, params_its& p_params); + void sendMsg(const LibItsDenm__TypesAndValues::UtDenmTrigger &send_par, params_its& p_params); + void sendMsg(const LibItsDenm__TypesAndValues::UtDenmUpdate &send_par, params_its& p_params); + void sendMsg(const LibItsDenm__TypesAndValues::UtDenmTermination &send_par, params_its& p_params); - virtual void send_data(OCTETSTRING &data, params &p_params); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING& p_data, params_its& p_params); + virtual void receive_data(OCTETSTRING& p_data, params_its& p_params); }; // End of class uppertester_denm_layer diff --git a/ccsrc/Protocols/UpperTester/uppertester_geonetworking_codec.cc b/ccsrc/Protocols/UpperTester/uppertester_geonetworking_codec.cc index 500330d..fc0d6fe 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_geonetworking_codec.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_geonetworking_codec.cc @@ -119,7 +119,7 @@ int uppertester_geonetworking_codec::encode_(const Base_Type &type, const TTCN_T return 0; } -int uppertester_geonetworking_codec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int uppertester_geonetworking_codec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_codec::decode (1): ", data); TTCN_EncDec::clear_error(); @@ -133,7 +133,7 @@ int uppertester_geonetworking_codec::decode(const OCTETSTRING &data, Record_Type return 0; } -std::unique_ptr uppertester_geonetworking_codec::decode(const OCTETSTRING &data, params *params) { +std::unique_ptr uppertester_geonetworking_codec::decode(const OCTETSTRING &data, params_its *params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_codec::decode (2): ", data); std::unique_ptr result; @@ -155,7 +155,7 @@ std::unique_ptr uppertester_geonetworking_codec::decode(const OCTETST return result; } -int uppertester_geonetworking_codec::decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::UtGnResults &msg, params *params) { +int uppertester_geonetworking_codec::decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::UtGnResults &msg, params_its *params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_codec::decode (3): ", data); const unsigned char *ptr = static_cast(data); @@ -177,7 +177,7 @@ int uppertester_geonetworking_codec::decode(const OCTETSTRING &data, LibItsGeoNe return 0; } -int uppertester_geonetworking_codec::decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::UtGnEventInd &msg, params *params) { +int uppertester_geonetworking_codec::decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::UtGnEventInd &msg, params_its *params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_codec::decode (4): ", data); TTCN_EncDec::clear_error(); diff --git a/ccsrc/Protocols/UpperTester/uppertester_geonetworking_codec.hh b/ccsrc/Protocols/UpperTester/uppertester_geonetworking_codec.hh index 105b38d..1dda67e 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_geonetworking_codec.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_geonetworking_codec.hh @@ -48,10 +48,10 @@ public: virtual int encode(const Record_Type &, OCTETSTRING &data); virtual int encode(const Base_Type &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); - virtual std::unique_ptr decode(const OCTETSTRING &data, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); + virtual std::unique_ptr decode(const OCTETSTRING &data, params_its *params = NULL); private: - int decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::UtGnResults &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::UtGnEventInd &msg, params *params = NULL); + int decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::UtGnResults &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsGeoNetworking__TypesAndValues::UtGnEventInd &msg, params_its *params = NULL); }; // End of class uppertester_geonetworking_codec diff --git a/ccsrc/Protocols/UpperTester/uppertester_geonetworking_layer.cc b/ccsrc/Protocols/UpperTester/uppertester_geonetworking_layer.cc index a4b069d..1e1093c 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_geonetworking_layer.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_geonetworking_layer.cc @@ -16,7 +16,7 @@ uppertester_geonetworking_layer::uppertester_geonetworking_layer(const std::stri } } -void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnInitialize &send_par, params &p_params) { +void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnInitialize &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_layer::sendMsg", send_par); if (_params[params::loopback].compare("1") == 0) { @@ -32,7 +32,7 @@ void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAn } } -void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnChangePosition &send_par, params &p_params) { +void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnChangePosition &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_layer::sendMsg", send_par); if (_params[params::loopback].compare("1") == 0) { @@ -48,7 +48,7 @@ void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAn } } -void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnTrigger &send_par, params &p_params) { +void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnTrigger &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_layer::sendMsg", send_par); if (_params[params::loopback].compare("1") == 0) { @@ -64,7 +64,7 @@ void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAn } } -void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::UtAutoInteropTrigger &send_par, params &p_params) { +void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAndValues::UtAutoInteropTrigger &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_layer::sendMsg", send_par); if (_params[params::loopback].compare("1") == 0) { @@ -80,13 +80,13 @@ void uppertester_geonetworking_layer::sendMsg(const LibItsGeoNetworking__TypesAn } } -void uppertester_geonetworking_layer::send_data(OCTETSTRING &data, params &p_params) { +void uppertester_geonetworking_layer::send_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_layer::send_data: ", data); // params.log(); send_to_all_layers(data, p_params); } -void uppertester_geonetworking_layer::receive_data(OCTETSTRING &data, params &p_params) { +void uppertester_geonetworking_layer::receive_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_geonetworking_layer::receive_data: ", data); std::unique_ptr r = _codec.decode(data); if (r.get() != nullptr) { diff --git a/ccsrc/Protocols/UpperTester/uppertester_geonetworking_layer.hh b/ccsrc/Protocols/UpperTester/uppertester_geonetworking_layer.hh index ff27544..ca7ed34 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_geonetworking_layer.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_geonetworking_layer.hh @@ -25,7 +25,7 @@ namespace LibItsGeoNetworking__TypesAndValues { } // namespace LibItsGeoNetworking__TypesAndValues class uppertester_geonetworking_layer : public t_layer { - params _params; + params_its _params; uppertester_geonetworking_codec _codec; public: @@ -33,11 +33,11 @@ public: uppertester_geonetworking_layer(const std::string &p_type, const std::string ¶m); virtual ~uppertester_geonetworking_layer(){}; - void sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnInitialize &send_par, params &p_params); - void sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnChangePosition &send_par, params &p_params); - void sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnTrigger &send_par, params &p_params); - void sendMsg(const LibItsGeoNetworking__TypesAndValues::UtAutoInteropTrigger &send_par, params &p_params); + void sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnInitialize &send_par, params_its& p_params); + void sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnChangePosition &send_par, params_its& p_params); + void sendMsg(const LibItsGeoNetworking__TypesAndValues::UtGnTrigger &send_par, params_its& p_params); + void sendMsg(const LibItsGeoNetworking__TypesAndValues::UtAutoInteropTrigger &send_par, params_its& p_params); - virtual void send_data(OCTETSTRING &data, params &p_params); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params_its& p_params); + virtual void receive_data(OCTETSTRING &data, params_its& p_params); }; // End of class uppertester_geonetworking_layer diff --git a/ccsrc/Protocols/UpperTester/uppertester_ivim_codec.cc b/ccsrc/Protocols/UpperTester/uppertester_ivim_codec.cc index 855f91b..ede8af8 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_ivim_codec.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_ivim_codec.cc @@ -193,7 +193,7 @@ int uppertester_ivim_codec::encode_(const Base_Type &type, const TTCN_Typedescri return 0; } -int uppertester_ivim_codec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int uppertester_ivim_codec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); _params = params; @@ -205,7 +205,7 @@ int uppertester_ivim_codec::decode(const OCTETSTRING &data, Record_Type &msg, pa return 0; } -std::unique_ptr uppertester_ivim_codec::decode(const OCTETSTRING &data, params *params) { +std::unique_ptr uppertester_ivim_codec::decode(const OCTETSTRING &data, params_its *params) { std::unique_ptr result; @@ -223,7 +223,7 @@ std::unique_ptr uppertester_ivim_codec::decode(const OCTETSTRING &dat return result; } -int uppertester_ivim_codec::decode(const OCTETSTRING &data, LibItsIvim__TypesAndValues::UtIvimResults &msg, params *params) { +int uppertester_ivim_codec::decode(const OCTETSTRING &data, LibItsIvim__TypesAndValues::UtIvimResults &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_ivim_codec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data); @@ -260,7 +260,7 @@ int uppertester_ivim_codec::decode(const OCTETSTRING &data, LibItsIvim__TypesAnd return 0; } -int uppertester_ivim_codec::decode(const OCTETSTRING &data, LibItsIvim__TypesAndValues::UtIvimEventInd &msg, params *params) { +int uppertester_ivim_codec::decode(const OCTETSTRING &data, LibItsIvim__TypesAndValues::UtIvimEventInd &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_ivim_codec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data) + 1; diff --git a/ccsrc/Protocols/UpperTester/uppertester_ivim_codec.hh b/ccsrc/Protocols/UpperTester/uppertester_ivim_codec.hh index 76d579c..c97b370 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_ivim_codec.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_ivim_codec.hh @@ -44,10 +44,10 @@ public: virtual ~uppertester_ivim_codec(){}; virtual int encode(const Record_Type &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); - std::unique_ptr decode(const OCTETSTRING &data, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); + std::unique_ptr decode(const OCTETSTRING &data, params_its *params = NULL); private: - int decode(const OCTETSTRING &data, LibItsIvim__TypesAndValues::UtIvimResults &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsIvim__TypesAndValues::UtIvimEventInd &msg, params *params = NULL); + int decode(const OCTETSTRING &data, LibItsIvim__TypesAndValues::UtIvimResults &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsIvim__TypesAndValues::UtIvimEventInd &msg, params_its *params = NULL); }; // End of class uppertester_ivim_codec diff --git a/ccsrc/Protocols/UpperTester/uppertester_ivim_layer.cc b/ccsrc/Protocols/UpperTester/uppertester_ivim_layer.cc index d5d7a39..db864df 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_ivim_layer.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_ivim_layer.cc @@ -12,7 +12,7 @@ uppertester_ivim_layer::uppertester_ivim_layer(const std::string &p_type, const params::convert(_params, param); } -void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimInitialize &send_par, params &p_params) { +void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimInitialize &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_ivim_layer::sendMsg", send_par); // Encode UpperTester PDU @@ -22,7 +22,7 @@ void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimIni send_data(data, p_params); } -void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimTrigger &send_par, params &p_params) { +void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimTrigger &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_ivim_layer::sendMsg", send_par); // Encode UpperTester PDU @@ -32,7 +32,7 @@ void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimTri send_data(data, p_params); } -void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimUpdate &send_par, params &p_params) { +void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimUpdate &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_ivim_layer::sendMsg", send_par); // Encode UpperTester PDU @@ -42,7 +42,7 @@ void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimUpd send_data(data, p_params); } -void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimTermination &send_par, params &p_params) { +void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimTermination &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_ivim_layer::sendMsg", send_par); // Encode UpperTester PDU @@ -52,13 +52,13 @@ void uppertester_ivim_layer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimTer send_data(data, p_params); } -void uppertester_ivim_layer::send_data(OCTETSTRING &data, params &p_params) { +void uppertester_ivim_layer::send_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_ivim_layer::send_data: ", data); // params.log(); send_to_all_layers(data, p_params); } -void uppertester_ivim_layer::receive_data(OCTETSTRING &data, params &p_params) { +void uppertester_ivim_layer::receive_data(OCTETSTRING &data, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_ivim_layer::receive_data: ", data); std::unique_ptr r = _codec.decode(data); diff --git a/ccsrc/Protocols/UpperTester/uppertester_ivim_layer.hh b/ccsrc/Protocols/UpperTester/uppertester_ivim_layer.hh index 8642d10..97aa96c 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_ivim_layer.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_ivim_layer.hh @@ -25,7 +25,7 @@ namespace LibItsIvim__TypesAndValues { } // namespace LibItsIvim__TypesAndValues class uppertester_ivim_layer : public t_layer { - params _params; + params_its _params; uppertester_ivim_codec _codec; public: @@ -33,11 +33,11 @@ public: uppertester_ivim_layer(const std::string &p_type, const std::string ¶m); virtual ~uppertester_ivim_layer(){}; - void sendMsg(const LibItsIvim__TypesAndValues::UtIvimInitialize &send_par, params &p_params); - void sendMsg(const LibItsIvim__TypesAndValues::UtIvimTrigger &send_par, params &p_params); - void sendMsg(const LibItsIvim__TypesAndValues::UtIvimUpdate &send_par, params &p_params); - void sendMsg(const LibItsIvim__TypesAndValues::UtIvimTermination &send_par, params &p_params); + void sendMsg(const LibItsIvim__TypesAndValues::UtIvimInitialize &send_par, params_its& p_params); + void sendMsg(const LibItsIvim__TypesAndValues::UtIvimTrigger &send_par, params_its& p_params); + void sendMsg(const LibItsIvim__TypesAndValues::UtIvimUpdate &send_par, params_its& p_params); + void sendMsg(const LibItsIvim__TypesAndValues::UtIvimTermination &send_par, params_its& p_params); - virtual void send_data(OCTETSTRING &data, params &p_params); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params_its& p_params); + virtual void receive_data(OCTETSTRING &data, params_its& info); }; // End of class uppertester_ivim_layer diff --git a/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_codec.cc b/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_codec.cc index ea40677..d31780d 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_codec.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_codec.cc @@ -113,7 +113,7 @@ int uppertester_mapem_spatem_codec::encode_(const Base_Type &type, const TTCN_Ty return 0; } -int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); _params = params; @@ -125,7 +125,7 @@ int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, Record_Type return 0; } -std::unique_ptr uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, params *params) { +std::unique_ptr uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, params_its *params) { std::unique_ptr result; @@ -147,7 +147,7 @@ std::unique_ptr uppertester_mapem_spatem_codec::decode(const OCTETSTR return result; } -int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtMapemSpatemResults &msg, params *params) { +int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtMapemSpatemResults &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_mapem_spatem_codec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data); @@ -163,7 +163,7 @@ int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, LibItsMapemS return 0; } -int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtMapemEventInd &msg, params *params) { +int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtMapemEventInd &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_mapem_spatem_codec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data) + 1; @@ -180,7 +180,7 @@ int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, LibItsMapemS return 0; } -int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtSpatemEventInd &msg, params *params) { +int uppertester_mapem_spatem_codec::decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtSpatemEventInd &msg, params_its *params) { loggers::get_instance().log_to_hexa(">>> uppertester_mapem_spatem_codec::decode: decoding_buffer=", data); const unsigned char *ptr = static_cast(data) + 1; diff --git a/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_codec.hh b/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_codec.hh index 99d275a..6e59a04 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_codec.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_codec.hh @@ -42,11 +42,11 @@ public: virtual ~uppertester_mapem_spatem_codec(){}; virtual int encode(const Record_Type &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); - std::unique_ptr decode(const OCTETSTRING &data, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); + std::unique_ptr decode(const OCTETSTRING &data, params_its *params = NULL); private: - int decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtMapemSpatemResults &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtMapemEventInd &msg, params *params = NULL); - int decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtSpatemEventInd &msg, params *params = NULL); + int decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtMapemSpatemResults &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtMapemEventInd &msg, params_its *params = NULL); + int decode(const OCTETSTRING &data, LibItsMapemSpatem__TypesAndValues::UtSpatemEventInd &msg, params_its *params = NULL); }; // End of class uppertester_mapem_spatem_codec diff --git a/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_layer.cc b/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_layer.cc index 3d41426..68580cb 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_layer.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_layer.cc @@ -12,7 +12,7 @@ uppertester_mapem_spatem_layer::uppertester_mapem_spatem_layer(const std::string params::convert(_params, param); } -void uppertester_mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::UtMapemSpatemInitialize &send_par, params &p_params) { +void uppertester_mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::UtMapemSpatemInitialize &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_mapem_spatem_layer::sendMsg", send_par); // Encode UpperTester PDU @@ -22,7 +22,7 @@ void uppertester_mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndVa send_data(data, p_params); } -void uppertester_mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::UtMapemSpatemTrigger &send_par, params &p_params) { +void uppertester_mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndValues::UtMapemSpatemTrigger &send_par, params_its &p_params) { loggers::get_instance().log_msg(">>> uppertester_mapem_spatem_layer::sendMsg", send_par); // Encode UpperTester PDU @@ -32,16 +32,16 @@ void uppertester_mapem_spatem_layer::sendMsg(const LibItsMapemSpatem__TypesAndVa send_data(data, p_params); } -void uppertester_mapem_spatem_layer::send_data(OCTETSTRING &data, params &p_params) { - loggers::get_instance().log_msg(">>> uppertester_mapem_spatem_layer::send_data: ", data); +void uppertester_mapem_spatem_layer::send_data(OCTETSTRING& p_data, params_its &p_params) { + loggers::get_instance().log_msg(">>> uppertester_mapem_spatem_layer::send_data: ", p_data); // params.log(); - send_to_all_layers(data, p_params); + send_to_all_layers(p_data, p_params); } -void uppertester_mapem_spatem_layer::receive_data(OCTETSTRING &data, params &p_params) { - loggers::get_instance().log_msg(">>> uppertester_mapem_spatem_layer::receive_data: ", data); +void uppertester_mapem_spatem_layer::receive_data(OCTETSTRING& p_data, params_its &p_params) { + loggers::get_instance().log_msg(">>> uppertester_mapem_spatem_layer::receive_data: ", p_data); - std::unique_ptr r = _codec.decode(data); + std::unique_ptr r = _codec.decode(p_data); if (r.get() != nullptr) { // Pass it to the ports if any to_all_upper_ports(*r, p_params); diff --git a/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_layer.hh b/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_layer.hh index e2b0cc7..b42ca3e 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_layer.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_mapem_spatem_layer.hh @@ -24,7 +24,7 @@ namespace LibItsMapemSpatem__TypesAndValues { } // namespace LibItsMapemSpatem__TypesAndValues class uppertester_mapem_spatem_layer : public t_layer { - params _params; + params_its _params; uppertester_mapem_spatem_codec _codec; public: @@ -32,9 +32,9 @@ public: uppertester_mapem_spatem_layer(const std::string &p_type, const std::string ¶m); virtual ~uppertester_mapem_spatem_layer(){}; - void sendMsg(const LibItsMapemSpatem__TypesAndValues::UtMapemSpatemInitialize &send_par, params &p_params); - void sendMsg(const LibItsMapemSpatem__TypesAndValues::UtMapemSpatemTrigger &send_par, params &p_params); + void sendMsg(const LibItsMapemSpatem__TypesAndValues::UtMapemSpatemInitialize &send_par, params_its& p_params); + void sendMsg(const LibItsMapemSpatem__TypesAndValues::UtMapemSpatemTrigger &send_par, params_its& p_params); - virtual void send_data(OCTETSTRING &data, params &p_params); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING& data, params_its& p_params); + virtual void receive_data(OCTETSTRING& p_data, params_its& p_params); }; // End of class uppertester_mapem_spatem_layer diff --git a/ccsrc/Protocols/UpperTester/uppertester_pki_codec.cc b/ccsrc/Protocols/UpperTester/uppertester_pki_codec.cc index 408816e..dba1323 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_pki_codec.cc +++ b/ccsrc/Protocols/UpperTester/uppertester_pki_codec.cc @@ -112,7 +112,7 @@ int uppertester_pki_codec::encode_(const Base_Type &type, const TTCN_Typedescrip return 0; } -int uppertester_pki_codec::decode(const OCTETSTRING &data, Record_Type &msg, params *params) { +int uppertester_pki_codec::decode(const OCTETSTRING &data, Record_Type &msg, params_its *params) { TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(data); _params = params; @@ -124,7 +124,7 @@ int uppertester_pki_codec::decode(const OCTETSTRING &data, Record_Type &msg, par return 0; } -std::unique_ptr uppertester_pki_codec::decode(const OCTETSTRING &data, params *params) { +std::unique_ptr uppertester_pki_codec::decode(const OCTETSTRING &data, params_its *params) { std::unique_ptr result; diff --git a/ccsrc/Protocols/UpperTester/uppertester_pki_codec.hh b/ccsrc/Protocols/UpperTester/uppertester_pki_codec.hh index 19ba0c8..f1bc1ad 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_pki_codec.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_pki_codec.hh @@ -45,6 +45,6 @@ public: virtual int encode(const Record_Type &, OCTETSTRING &data); int encode(const LibItsPki__TypesAndValues::UtPkiTrigger &, OCTETSTRING &data); int encode(const LibItsPki__TypesAndValues::UtPkiTriggerInd &, OCTETSTRING &data); - virtual int decode(const OCTETSTRING &data, Record_Type &, params *params = NULL); - std::unique_ptr decode(const OCTETSTRING &data, params *params = NULL); + virtual int decode(const OCTETSTRING &data, Record_Type &, params_its *params = NULL); + std::unique_ptr decode(const OCTETSTRING &data, params_its *params = NULL); }; // End of class uppertester_pki_codec diff --git a/ccsrc/Protocols/UpperTester/uppertester_pki_layer.hh b/ccsrc/Protocols/UpperTester/uppertester_pki_layer.hh index 44edffd..88d169b 100644 --- a/ccsrc/Protocols/UpperTester/uppertester_pki_layer.hh +++ b/ccsrc/Protocols/UpperTester/uppertester_pki_layer.hh @@ -33,10 +33,10 @@ public: uppertester_pki_layer(const std::string &p_type, const std::string ¶m); virtual ~uppertester_pki_layer(){}; - void sendMsg(const LibItsPki__TypesAndValues::UtPkiInitialize &send_par, params &p_params); - void sendMsg(const LibItsPki__TypesAndValues::UtPkiTrigger &send_par, params &p_params); - void sendMsg(const LibItsPki__TypesAndValues::UtPkiTriggerInd &send_par, params &p_params); + void sendMsg(const LibItsPki__TypesAndValues::UtPkiInitialize &send_par, params& p_params); + void sendMsg(const LibItsPki__TypesAndValues::UtPkiTrigger &send_par, params& p_params); + void sendMsg(const LibItsPki__TypesAndValues::UtPkiTriggerInd &send_par, params& p_params); - virtual void send_data(OCTETSTRING &data, params &p_params); - virtual void receive_data(OCTETSTRING &data, params &info); + virtual void send_data(OCTETSTRING &data, params& p_params); + virtual void receive_data(OCTETSTRING &data, params& params); }; // End of class uppertester_pki_layer diff --git a/ccsrc/Framework/include/codec.hh b/ccsrc/framework/include/codec.hh similarity index 86% rename from ccsrc/Framework/include/codec.hh rename to ccsrc/framework/include/codec.hh index 912293b..46ad324 100644 --- a/ccsrc/Framework/include/codec.hh +++ b/ccsrc/framework/include/codec.hh @@ -10,7 +10,7 @@ */ #pragma once -#include "params.hh" +#include "params_its.hh" class OCTETSTRING; //! Declare TITAN class class CHARSTRING; //! Declare TITAN class @@ -23,8 +23,8 @@ class BITSTRING; //! Declare TITAN class */ template class codec { protected: - params *_params; //! Reference to params stack - // \todo Use smart pointer std::unique_ptr + params_its *_params; //! Reference to params stack + // \todo Use smart pointer std::unique_ptr public: //! \publicsection /*! @@ -50,12 +50,12 @@ public: //! \publicsection */ virtual int encode(const TPDUEnc &p_message, OCTETSTRING &p_data) = 0; /*! - * \fn int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL); + * \fn int decode(const OCTETSTRING& p_, TPDUDec& p_message, params_its* p_params = NULL); * \brief Encode typed message into an octet string format * \param[in] p_data The message in its octet string * \param[out] p_message The decoded typed message * \return 0 on success, -1 otherwise * \pure */ - virtual int decode(const OCTETSTRING &p_, TPDUDec &p_message, params *p_params = NULL) = 0; + virtual int decode(const OCTETSTRING &p_, TPDUDec &p_message, params_its *p_params = NULL) = 0; }; // End of class codec diff --git a/ccsrc/Framework/include/data_event_notifier.hh b/ccsrc/framework/include/data_event_notifier.hh similarity index 65% rename from ccsrc/Framework/include/data_event_notifier.hh rename to ccsrc/framework/include/data_event_notifier.hh index 4389dfd..7883b8f 100644 --- a/ccsrc/Framework/include/data_event_notifier.hh +++ b/ccsrc/framework/include/data_event_notifier.hh @@ -1,11 +1,11 @@ #pragma once -#include "params.hh" +#include "params_its.hh" class OCTETSTRING; //! Forward declaration of TITAN class class data_event_notifier { public: virtual ~data_event_notifier() = default; - virtual void update(OCTETSTRING &p_data, params &p_params) {}; + virtual void update(OCTETSTRING &p_data, params_its &p_params) {}; }; // End of abstract class data_event_notifier diff --git a/ccsrc/Framework/include/data_event_observer.hh b/ccsrc/framework/include/data_event_observer.hh similarity index 93% rename from ccsrc/Framework/include/data_event_observer.hh rename to ccsrc/framework/include/data_event_observer.hh index 49fe19a..d33b66c 100644 --- a/ccsrc/Framework/include/data_event_observer.hh +++ b/ccsrc/framework/include/data_event_observer.hh @@ -15,5 +15,5 @@ public: virtual ~data_event_observer() { _observers.clear(); }; virtual void incoming_packet_observer_attach(data_event_notifier* p_observer) {}; virtual void incoming_packet_observer_detach(data_event_notifier* p_observer) {}; - virtual void incoming_packet_notify(OCTETSTRING &p_data, params &p_params) {}; + virtual void incoming_packet_notify(OCTETSTRING &p_data, params_its &p_params) {}; }; // End of abstract class data_event_observer diff --git a/ccsrc/Framework/include/params.hh b/ccsrc/framework/include/params_its.hh similarity index 61% rename from ccsrc/Framework/include/params.hh rename to ccsrc/framework/include/params_its.hh index 8d7ee3f..b96dd3f 100644 --- a/ccsrc/Framework/include/params.hh +++ b/ccsrc/framework/include/params_its.hh @@ -1,5 +1,5 @@ /*! - * \file params.hh + * \file params_its.hh * \brief Header file for the parameter dictionary. * \author ETSI STF525 * \copyright ETSI Copyright Notification @@ -14,25 +14,15 @@ #include #include +#include "params.hh" + /*! - * \class params + * \class params_its * \brief This class provides basic functionalities for an ITS dictionary - * \implements std::map */ -class params : public std::map { +class params_its : public params { public: //! \publicsection - // TODO Use static constexpr (see commsignia_layer.hh) - static const std::string& debug; //! Set to 1 to enable the debug mode - - static const std::string& loopback; - - static const std::string& mac_src; //! Source MAC address parameter name - static const std::string& mac_dst; //! Destination MAC address parameter name - static const std::string& mac_bc; //! Broadcast MAC address parameter name - static const std::string& eth_type; //! Ethernet type parameter name - static const std::string& filter; //! Additinal PCAP filter static const std::string& beaconing; //! Beaconing mode parameter name - static const std::string& timestamp; //! Packet reception timestamp static const std::string& station_type; static const std::string& country; static const std::string& type_of_address; @@ -49,7 +39,6 @@ public: //! \publicsection static const std::string& btp_destination_port; //! BTP DestinationPort parameter name static const std::string& btp_info; //! BTP Info parameter name - static const std::string& nic; //! Network Interface Card parameter name static const std::string& ll_address; //! Test system GeoNetworking LL-Address parameter name static const std::string& latitude; //! Test system Latitude parameter name static const std::string& longitude; //! Test system Longitude parameter name @@ -88,59 +77,15 @@ public: //! \publicsection static const std::string& mqtt_protocol; //! Uu interafce MQTT protocol name static const std::string& mqtt_client_id; //! Uu interafce MQTT client identity - static const std::string& server; //! HTTP server address (e.g. www.etsi.org) - static const std::string& port; //! HTTP server port. Default: 80 - static const std::string& use_ssl; //! Set to 1 to use SSL to communicate with the HTTP server. Default: false - static const std::string& mutual_auth; //! Set to 1 to use mutual authentication. Default: false - static const std::string& trusted_ca_list; //! List of trusted CA certificates - static const std::string& server_mode; //! Does the test sytem acting as a server. Default: 0 - static const std::string& local_port; //! Local listener port. Default: 80 - - static const std::string& method; //! HTTP method type. Default: POST - static const std::string& uri; //! HTTP URI value. Default: / - static const std::string& host; //! HTTP Host value. Default: 127.0.0.1 - static const std::string& content_type; //! HTTP Content-type value. Default: application/text - - static const std::string& codecs; //! List of codecs to use for HTTP application layers - /*! * \brief Default constructor - * Create a new instance of the params class - */ - params() : std::map(){}; - /*! - * \brief Copy constructor - * Clone an existing instance of a params object - * \param[in] p_params An existing instance of a params object + * Create a new instance of the params_its class */ - explicit params(const params &p_params) : std::map(p_params.begin(), p_params.end()){}; + params_its() : params() {}; /*! * \brief Default destructor */ - virtual ~params(){}; + virtual ~params_its(){}; - /*! - * \fn void log() const; - * \brief Provides a dump of the content of this instance - */ - void log() const; - /*! - * \fn void log() const; - * \brief Provides a dump of the content of this instance - */ - void log(); - /*! - * \fn void reset(); - * \brief Reset the content of this instance - */ - void reset(); - - /*! - * \static - * \fn void convert(params& p_param, const std::string p_parameters); - * \brief Create a new instance of a params object by converting a list of ITS parameters in string format (t1=v1,T2=(v0,v1v2)...) - * \return a new instance of a params object - */ - static void convert(params &p_param, const std::string p_parameters); -}; // End of class params +}; // End of class params_its diff --git a/ccsrc/framework/module.mk b/ccsrc/framework/module.mk new file mode 100644 index 0000000..2f19f52 --- /dev/null +++ b/ccsrc/framework/module.mk @@ -0,0 +1,2 @@ +sources := src/params_its.cc +includes += ./include diff --git a/ccsrc/framework/src/params_its.cc b/ccsrc/framework/src/params_its.cc new file mode 100644 index 0000000..4b066fb --- /dev/null +++ b/ccsrc/framework/src/params_its.cc @@ -0,0 +1,69 @@ +/*! + * \file param_sits.cc + * \brief Source file for the parameter dictionary. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#include +#include + +#include "loggers.hh" +#include "params_its.hh" + +const std::string& params_its::beaconing = std::string("beaconing"); +const std::string& params_its::station_type = std::string("station_type"); +const std::string& params_its::country = std::string("country"); +const std::string& params_its::type_of_address = std::string("type_of_address"); +const std::string& params_its::its_aid = std::string("its_aid"); +const std::string& params_its::ssp = std::string("ssp"); +const std::string& params_its::gn_payload = std::string("gn_payload"); +const std::string& params_its::gn_next_header = std::string("gnNextHeader"); +const std::string& params_its::gn_header_type = std::string("gnHeaderType"); +const std::string& params_its::gn_header_sub_type = std::string("gnHeaderSubtype"); +const std::string& params_its::gn_lifetime = std::string("gnLifetime"); +const std::string& params_its::gn_traffic_class = std::string("gnTrafficClass"); +const std::string& params_its::btp_type = std::string("btp_type"); +const std::string& params_its::btp_payload = std::string("btp_payload"); +const std::string& params_its::btp_destination_port = std::string("dst_port"); +const std::string& params_its::btp_info = std::string("btp_info"); + +const std::string& params_its::latitude = std::string("latitude"); +const std::string& params_its::longitude = std::string("longitude"); +const std::string& params_its::ll_address = std::string("ll_address"); +const std::string& params_its::expiry = std::string("expiry"); + +const std::string& params_its::station_id = std::string("station_id"); + +const std::string& params_its::device_mode = std::string("device_mode"); +const std::string& params_its::secured_mode = std::string("secured_mode"); +const std::string& params_its::encrypted_mode = std::string("encrypted_mode"); +const std::string& params_its::enable_security_checks = std::string("enable_security_checks"); +const std::string& params_its::force_certificate = std::string("force_certificate"); +const std::string& params_its::certificate = std::string("certificate"); +const std::string& params_its::peer_certificate = std::string("peer_certificate"); +const std::string& params_its::sec_db_path = std::string("sec_db_path"); +const std::string& params_its::hash = std::string("hash"); +const std::string& params_its::signature = std::string("signature"); +const std::string& params_its::cypher = std::string("cypher"); +const std::string& params_its::distanceA = std::string("distanceA"); +const std::string& params_its::distanceB = std::string("distanceB"); +const std::string& params_its::angle = std::string("angle"); + +const std::string& params_its::payload_type = std::string("payload_type"); + +const std::string& params_its::next_header = std::string("next_header"); +const std::string& params_its::header_type = std::string("header_type"); +const std::string& params_its::header_sub_type = std::string("header_sub_type"); + +const std::string& params_its::interface_id = std::string("interface_id"); + +const std::string& params_its::uu_protocol = std::string("uu_protocol"); +const std::string& params_its::uu_transport = std::string("uu_transport"); +const std::string& params_its::pc5_layer = std::string("pc5_layer"); +const std::string& params_its::mqtt_topics = std::string("mqtt_topics"); +const std::string& params_its::mqtt_protocol = std::string("mqtt_protocol"); +const std::string& params_its::mqtt_client_id = std::string("mqtt_client_id"); diff --git a/ccsrc/loggers/loggers.cc b/ccsrc/loggers/loggers.cc deleted file mode 100644 index be5285a..0000000 --- a/ccsrc/loggers/loggers.cc +++ /dev/null @@ -1,4 +0,0 @@ -#include "loggers.hh" - -std::unique_ptr loggers::_instance = static_cast>(new loggers); - diff --git a/ccsrc/loggers/loggers.hh b/ccsrc/loggers/loggers.hh deleted file mode 100644 index 36f7344..0000000 --- a/ccsrc/loggers/loggers.hh +++ /dev/null @@ -1,273 +0,0 @@ -/*! - * \file loogers.hh - * \brief Header file for the logger framework. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include -#include - -/** -class Base_Type; -class OCTETSTRING; -class TTCN_Buffer; -class TTCN_Logger; -enum TTCN_Logger::Severity; -extern void TTCN_error(const char *err_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2), __noreturn__)); -extern void TTCN_error_begin(const char *err_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); -extern void TTCN_error_end() __attribute__ ((__noreturn__)); -void TTCN_warning(const char *warning_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); -extern void TTCN_warning_begin(const char *warning_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); -extern void TTCN_warning_end(); -**/ - -using namespace std; // Required for isnan() -#include - -/*! - * \class loggers - * \brief This class provides basic functionalities for an ITS dictionary - * \implements Singleton pattern - * \todo Remove reference to TTCN3.hh - */ -class loggers { -private: //! \privatesection - static std::unique_ptr _instance; //! Smart pointer to the unique instance of the logger framework - std::map - _times; //! Timer used to measure execution time between calls to methods \loggers::set_start_time and \loggers::set_stop_time - - /*! - * \brief Default constructor - * Create a new instance of the loggers class - * \private - */ - explicit loggers() : _times(){}; - - inline void log_time_exec(const char *p_fmt, ...); - -public: //! \publicsection - /*! - * \brief Default destructor - */ - virtual ~loggers(){}; - - /*! - * \fn static loggers& get_instance(); - * \brief Accessor for the unique instance of the logger framework - * \inline - */ - static inline loggers &get_instance() { return *_instance.get(); }; - - /*! - * \fn void log_to_hexa(const char *p_prompt, const TTCN_Buffer& buffer); - * \brief Hexa dump of the \see TTCN_Buffer buffer - * \param[in] p_prompt Label of the log to be produced - * \param[in] buffer The TTCN_Buffer buffer to dump - * \inline - */ - inline void log_to_hexa(const char *p_prompt, const TTCN_Buffer &buffer); - /*! - * \fn void log_to_hexa(const char *p_prompt, const OCTETSTRING& msg); - * \brief Hexa dump of the \see OCTETSTRING buffer - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The OCTETSTRING buffer to dump - * \inline - */ - inline void log_to_hexa(const char *p_prompt, const OCTETSTRING &msg); - /*! - * \fn void log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size); - * \brief Hexa dump of the provided buffer - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The buffer to dump - * \inline - */ - inline void log_to_hexa(const char *p_prompt, const unsigned char *msg, const size_t msg_size); - /*! - * \fn void log_msg(const char *p_prompt, const Base_Type& p_type); - * \brief Debug log of TITAN data structures - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The TITAN data structure to log - * \inline - */ - inline void log_msg(const char *p_prompt, const Base_Type &p_type); - /*! - * \fn void log(const char *p_fmt, ...); - * \brief Debug message based on printf-compliant formatting message - * \param[in] p_fmt The printf-compliant format of the message to log - * \param[in] ... The arguments - * \inline - */ - inline void log(const char *p_fmt, ...); - - /*! - * \fn void user_msg(const char *p_prompt, const Base_Type& p_type); - * \brief User message of TITAN data structures - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The TITAN data structure to log - * \inline - */ - inline void user_msg(const char *p_prompt, const Base_Type &p_type); - /*! - * \fn void user(const char *p_fmt, ...); - * \brief User message based on printf-compliant formatting message - * \param[in] p_fmt The printf-compliant format of the message to log - * \param[in] ... The arguments - * \inline - */ - inline void user(const char *p_fmt, ...); - - /*! - * \fn void user_msg(const char *p_prompt, const Base_Type& p_type); - * \brief Warning message of TITAN data structures - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The TITAN data structure to log - * \inline - */ - inline void warning_msg(const char *p_prompt, const Base_Type &p_type); - /*! - * \fn void user(const char *p_fmt, ...); - * \brief Warning message based on printf-compliant formatting message - * \param[in] p_fmt The printf-compliant format of the message to log - * \param[in] ... The arguments - * \inline - */ - inline void warning(const char *p_fmt, ...); - - /*! - * \fn void user(const char *p_fmt, ...); - * \brief Error message based on printf-compliant formatting message - * \param[in] p_fmt The printf-compliant format of the message to log - * \param[in] ... The arguments - * \inline - */ - inline void error(const char *p_fmt, ...); - - /*! - * \fn void set_start_time(std::string& p_time_key); - * \brief Start execution time measurement - * \param[in] p_time_key A timer identifier (any string) - * \inline - */ - inline void set_start_time(std::string &p_time_key); - /*! - * \fn void set_stop_time(std::string& p_time_key, float& p_time); - * \brief Stop execution time measurement - * \param[in] p_time_key The timer identifier provided while calling \see loggers::set_start_time method - * \param[out] p_time The execution time measured in milliseconds - * \inline - */ - inline void set_stop_time(std::string &p_time_key, float &p_time); -}; // End of class loggers - -void loggers::log_to_hexa(const char *p_prompt, const TTCN_Buffer &buffer) { - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - buffer.log(); - TTCN_Logger::end_event(); -} - -void loggers::log_to_hexa(const char *p_prompt, const OCTETSTRING &msg) { - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - TTCN_Logger::log_event("Size: %d,\nMsg: ", msg.lengthof()); - - for (int i = 0; i < msg.lengthof(); i++) { - TTCN_Logger::log_event(" %02x", ((const unsigned char *)msg)[i]); - } - TTCN_Logger::log_event("\n"); - TTCN_Logger::end_event(); -} - -void loggers::log_to_hexa(const char *p_prompt, const unsigned char *msg, const size_t msg_size) { - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - for (size_t i = 0; i < msg_size; i++) { - TTCN_Logger::log_event(" %02x", *(msg + i)); - } - TTCN_Logger::log_event("\n"); - TTCN_Logger::end_event(); -} - -void loggers::log_msg(const char *p_prompt, const Base_Type &p_type) { - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - p_type.log(); - TTCN_Logger::end_event(); -} - -void loggers::log(const char *p_fmt, ...) { - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - va_list args; - va_start(args, p_fmt); - TTCN_Logger::log_event_va_list(p_fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - -void loggers::user_msg(const char *p_prompt, const Base_Type &p_type) { - TTCN_Logger::begin_event(TTCN_Logger::USER_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - p_type.log(); - TTCN_Logger::end_event(); -} - -void loggers::user(const char *p_fmt, ...) { - TTCN_Logger::begin_event(TTCN_Logger::USER_UNQUALIFIED); - va_list args; - va_start(args, p_fmt); - TTCN_Logger::log_event_va_list(p_fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - -void loggers::warning(const char *p_fmt, ...) { - TTCN_Logger::begin_event(TTCN_Logger::WARNING_UNQUALIFIED); - va_list args; - va_start(args, p_fmt); - TTCN_Logger::log_event_va_list(p_fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - -void loggers::warning_msg(const char *p_prompt, const Base_Type &p_type) { - TTCN_Logger::begin_event(TTCN_Logger::WARNING_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - p_type.log(); - TTCN_Logger::end_event(); -} - -void loggers::error(const char *p_fmt, ...) { - va_list args; - va_start(args, p_fmt); - TTCN_error(p_fmt, args); - va_end(args); -} - -void loggers::set_start_time(std::string &p_time_key) { _times[p_time_key] = std::clock(); } - -void loggers::set_stop_time(std::string &p_time_key, float &p_time) { - std::map::iterator it = _times.find(p_time_key); - if (it != loggers::_times.end()) { - p_time = (std::clock() - _times[p_time_key]) * 1000.0 / CLOCKS_PER_SEC; // in milliseconds - _times.erase(it); - loggers::get_instance().log_time_exec("%s: Execution duration: %f ms", p_time_key.c_str(), p_time); - } -} - -void loggers::log_time_exec(const char *p_fmt, ...) { - TTCN_Logger::begin_event(TTCN_Logger::EXECUTOR_RUNTIME); - va_list args; - va_start(args, p_fmt); - TTCN_Logger::log_event_va_list(p_fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} diff --git a/ccsrc/loggers/module.mk b/ccsrc/loggers/module.mk deleted file mode 100644 index 36b4b2c..0000000 --- a/ccsrc/loggers/module.mk +++ /dev/null @@ -1,3 +0,0 @@ -sources := loggers.cc -includes := . - diff --git a/data/certificates/profiles/CERT_IUT_A_RCA.xml b/data/certificates/profiles/CERT_IUT_A_RCA.xml index b8865e7..2a27460 100644 --- a/data/certificates/profiles/CERT_IUT_A_RCA.xml +++ b/data/certificates/profiles/CERT_IUT_A_RCA.xml @@ -22,16 +22,17 @@ - - - - - - - + 01 C0/FF 3F + + + + + + + - - 01 FE/FF 01 + + 01 3E/FF C1 01 diff --git a/etc/AtsPki/AtsPki_Atos.cfg_ b/etc/AtsPki/AtsPki_Atos.cfg_ index 3611b3c..671ae27 100644 --- a/etc/AtsPki/AtsPki_Atos.cfg_ +++ b/etc/AtsPki/AtsPki_Atos.cfg_ @@ -18,8 +18,8 @@ LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := "certificates" # Use this certificate if the RSU simulator act as IUT LibItsCommon_Pixits.PX_CERT_FOR_TS := "CERT_IUT_A_AT" -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" -LibItsHttp_Pics.PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" +LibHttp_Pics.PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl" LibItsPki_Pics.PICS_MULTIPLE_END_POINT := true LibItsPki_Pics.PICS_HEADER_HOST_EC := "0.atos-ea.l0.c-its-pki.eu" diff --git a/etc/AtsPki/AtsPki_Autocrypt.cfg_ b/etc/AtsPki/AtsPki_Autocrypt.cfg_ index 5755d41..630de23 100644 --- a/etc/AtsPki/AtsPki_Autocrypt.cfg_ +++ b/etc/AtsPki/AtsPki_Autocrypt.cfg_ @@ -9,7 +9,7 @@ LibItsSecurity_Pixits.PX_CERTIFICATE_POOL_PATH := "../data/certificates" # Configuration sub-directory to access certificate stored in files LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := "certificates" -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" LibItsPki_Pics.PICS_MULTIPLE_END_POINT := true LibItsPki_Pics.PICS_HEADER_HOST_EC := "ea.etsi.autocrypt.io:9100" diff --git a/etc/AtsPki/AtsPki_Commsignia.cfg_ b/etc/AtsPki/AtsPki_Commsignia.cfg_ index 118a47c..9df6b3f 100644 --- a/etc/AtsPki/AtsPki_Commsignia.cfg_ +++ b/etc/AtsPki/AtsPki_Commsignia.cfg_ @@ -22,8 +22,8 @@ LibItsSecurity_Pixits.PX_CERTIFICATE_POOL_PATH := "/home/vagrant/tmp" LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := "certificates" #LibItsSecurity_Pics.PICS_SEC_FIXED_KEYS := true # Seed -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" -LibItsHttp_Pics.PICS_HEADER_HOST := "10.8.0.2" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" +LibHttp_Pics.PICS_HEADER_HOST := "10.8.0.2" LibItsPki_Pics.PICS_HTTP_POST_URI_EC := "/ea/enrolment" LibItsPki_Pics.PICS_HTTP_POST_URI_AT := "/aa/authorization" diff --git a/etc/AtsPki/AtsPki_Ctag.cfg_ b/etc/AtsPki/AtsPki_Ctag.cfg_ index 8df2dfb..b6bcc92 100644 --- a/etc/AtsPki/AtsPki_Ctag.cfg_ +++ b/etc/AtsPki/AtsPki_Ctag.cfg_ @@ -12,8 +12,8 @@ LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := "certificates" # Use this certificate if the RSU simulator act as IUT LibItsCommon_Pixits.PX_CERT_FOR_TS := "CERT_IUT_A_AT" -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" -LibItsHttp_Pics.PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" +LibHttp_Pics.PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl" LibItsPki_Pics.PICS_MULTIPLE_END_POINT := true LibItsPki_Pics.PICS_HEADER_HOST_EC := "pki-spain-test.siscoga4cad.com:33080" diff --git a/etc/AtsPki/AtsPki_Etas.cfg_ b/etc/AtsPki/AtsPki_Etas.cfg_ index be2fa0b..5bfc8b7 100644 --- a/etc/AtsPki/AtsPki_Etas.cfg_ +++ b/etc/AtsPki/AtsPki_Etas.cfg_ @@ -6,7 +6,7 @@ LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 40.0 LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 40.0 LibCommon_Time.PX_TDONE := 40.0 -LibCommon_Time.PX_TWAIT := 40.0 +LibCommon_Time.PX_TWAIT := 60.0 # Enable Security support LibItsGeoNetworking_Pics.PICS_GN_SECURITY := true @@ -18,11 +18,11 @@ LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := "certificates" # Use this certificate if the RSU simulator act as IUT LibItsCommon_Pixits.PX_CERT_FOR_TS := "CERT_IUT_A_AT" -LibItsHttp_Pics.PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl" -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" +LibHttp_Pics.PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" LibItsPki_Pics.PICS_MULTIPLE_END_POINT := false -LibItsHttp_Pics.PICS_HEADER_HOST := "eta01s.staging.cycurv2x.com" +LibHttp_Pics.PICS_HEADER_HOST := "eta01s.staging.cycurv2x.com" LibItsPki_Pics.PICS_HTTP_POST_URI_EC := "/ea/enrolment" LibItsPki_Pics.PICS_HTTP_POST_URI_AT := "/aa/authorization" @@ -59,6 +59,11 @@ LibItsPki_Pics.PICS_EC_SUBJECT_ATTRIBUT_REGION := false # requestedSubjectAttrib # Required for SECPKI_AA_AUTH_RCV_02_BV #LibItsPki_Pics.PICS_SECPKI_REENROLMENT := false # Check in logs the pattern '==> EC ' to find the required information for re-enrolment +# URI to request CTL +LibItsPki_Pics.PICS_DC_ENDPOINT := "http://yanngarcia.ddns.net/dc" +LibItsPki_Pics.PICS_AA_ENDPOINT := "http://yanngarcia.ddns.net/aa" +LibItsPki_Pics.PICS_EA_ENDPOINT := "http://yanngarcia.ddns.net/ea" + #LibItsPki_Pixits.PX_INCLUDE_ENCRYPTION_KEYS := false # No encryption key in Authorization request #LibItsPki_Pixits.PX_VE_ALG := e_brainpool_p256_r1 # e_nist_p256 or e_brainpool_p384_r1 diff --git a/etc/AtsPki/AtsPki_Microsec.cfg_ b/etc/AtsPki/AtsPki_Microsec.cfg_ index b51c5f2..d4bcf7e 100644 --- a/etc/AtsPki/AtsPki_Microsec.cfg_ +++ b/etc/AtsPki/AtsPki_Microsec.cfg_ @@ -9,10 +9,10 @@ LibItsSecurity_Pixits.PX_CERTIFICATE_POOL_PATH := "../data/certificates" # Configuration sub-directory to access certificate stored in files LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := "certificates" -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" LibItsPki_Pics.PICS_MULTIPLE_END_POINT := false -LibItsHttp_Pics.PICS_HEADER_HOST := "v2x-pki-test.microsec.com" +LibHttp_Pics.PICS_HEADER_HOST := "v2x-pki-test.microsec.com" LibItsPki_Pics.PICS_HEADER_HOST_CA := "v2x-pki-test.microsec.com" LibItsPki_Pics.PICS_HEADER_HOST_TLM := "v2x-pki-test.microsec.com" diff --git a/etc/AtsPki/AtsPki_Simu.cfg_ b/etc/AtsPki/AtsPki_Simu.cfg_ index 72febb3..7fe3098 100644 --- a/etc/AtsPki/AtsPki_Simu.cfg_ +++ b/etc/AtsPki/AtsPki_Simu.cfg_ @@ -21,10 +21,10 @@ LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := "certificates" # Use this certificate if the RSU simulator act as IUT LibItsCommon_Pixits.PX_CERT_FOR_TS := "CERT_IUT_A_AT" -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" -LibItsHttp_Pics.PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request" +LibHttp_Pics.PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl" -LibItsHttp_Pics.PICS_HEADER_HOST := "192.168.1.43" +LibHttp_Pics.PICS_HEADER_HOST := "192.168.1.43" LibItsPki_Pics.PICS_HTTP_POST_URI_EC := "/ea/enrolment" LibItsPki_Pics.PICS_HTTP_POST_URI_AT := "/aa/authorization" diff --git a/etc/AtsSecurity/AtsSecurity.cfg b/etc/AtsSecurity/AtsSecurity.cfg index d1572cd..220ecba 100644 --- a/etc/AtsSecurity/AtsSecurity.cfg +++ b/etc/AtsSecurity/AtsSecurity.cfg @@ -3,18 +3,18 @@ # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. # The GeoNetworking address of the IUT. -#LibItsGeoNetworking_Pics.PICS_GN_LOCAL_GN_ADDR := { -# typeOfAddress := e_initial, -# stationType := e_unknown, -# reserved := 0, -# mid := '000000000000'O -#} LibItsGeoNetworking_Pics.PICS_GN_LOCAL_GN_ADDR := { - typeOfAddress := e_manual, - stationType := e_roadSideUnit, - reserved := 49, - mid := '001C6B0D0201'O + typeOfAddress := e_initial, + stationType := e_unknown, + reserved := 0, + mid := '000000000000'O } +#LibItsGeoNetworking_Pics.PICS_GN_LOCAL_GN_ADDR := { +# typeOfAddress := e_manual, +# stationType := e_roadSideUnit, +# reserved := 49, +# mid := '001C6B0D0201'O +#} LibItsGeoNetworking_Pixits.PX_GN_UPPER_LAYER := e_btpB LibItsBtp_Pixits.PX_DESTINATION_PORT := 2001 LibItsBtp_Pixits.PX_DESTINATION_PORT_INFO := 2001 -- GitLab From c5f1a21c4a250130064df621f86a79a80cc63d55 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Fri, 23 Sep 2022 09:01:38 +0200 Subject: [PATCH 2/3] Add titan-test-system-framework - Compilation will failed --- .gitmodules | 4 ++++ titan-test-system-framework | 1 + 2 files changed, 5 insertions(+) create mode 160000 titan-test-system-framework diff --git a/.gitmodules b/.gitmodules index ef8f3cb..c7e1567 100644 --- a/.gitmodules +++ b/.gitmodules @@ -40,3 +40,7 @@ [submodule "ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module"] path = ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module url = https://github.com/eclipse/titan.TestPorts.Common_Components.Abstract_Socket.git +[submodule "titan-test-system-framework"] + path = titan-test-system-framework + url = https://labs.etsi.org/rep/cti-tools/titan-test-system-framework.git + branch = devel diff --git a/titan-test-system-framework b/titan-test-system-framework new file mode 160000 index 0000000..13e13a5 --- /dev/null +++ b/titan-test-system-framework @@ -0,0 +1 @@ +Subproject commit 13e13a5759ad795a8726bdcdad30232d454fafd2 -- GitLab From a7d6a25c1a75077a1d8d663f67cf472c8c73af10 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Thu, 29 Sep 2022 13:21:07 +0200 Subject: [PATCH 3/3] Finalyze support if titan-test-system-framework --- LICENSE | 2 +- ccsrc/EncDec/module.mk | 4 +- .../Ports/LibIts_ports/Http_ports/HttpPort.cc | 8 +- ccsrc/Protocols/Http/http_codec_its.cc | 80 +++++++++++++++++++ ccsrc/Protocols/Http/http_codec_its.hh | 16 ++++ ccsrc/Protocols/Http/module.mk | 3 + ccsrc/Protocols/UpperTester/module.mk | 2 +- titan-test-system-framework | 2 +- ttcn/patch_lib_http/module.mk | 3 + .../ttcn/LibHttp_BinaryMessageBodyTypes.ttcn | 35 ++++++++ .../ttcn/LibHttp_BinaryTemplates.ttcn | 62 ++++++++++++++ .../docker/home/etc/init.d/40-ttf011.sh | 8 +- virtualization/vagrant/provisioner.bash | 8 +- 13 files changed, 223 insertions(+), 10 deletions(-) create mode 100644 ccsrc/Protocols/Http/http_codec_its.cc create mode 100644 ccsrc/Protocols/Http/http_codec_its.hh create mode 100644 ccsrc/Protocols/Http/module.mk create mode 100644 ttcn/patch_lib_http/module.mk create mode 100644 ttcn/patch_lib_http/ttcn/LibHttp_BinaryMessageBodyTypes.ttcn create mode 100644 ttcn/patch_lib_http/ttcn/LibHttp_BinaryTemplates.ttcn diff --git a/LICENSE b/LICENSE index c7a6ba0..7cae155 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2019 ETSI +Copyright 2019-2022 ETSI Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/ccsrc/EncDec/module.mk b/ccsrc/EncDec/module.mk index e99d90e..578e439 100644 --- a/ccsrc/EncDec/module.mk +++ b/ccsrc/EncDec/module.mk @@ -25,7 +25,6 @@ sources += \ LibItsBtp_Encdec.cc \ LibItsCam_Encdec.cc \ LibItsDenm_Encdec.cc \ - LibHttp_Encdec.cc \ LibItsMapemSpatem_Encdec.cc \ LibItsSremSsem_Encdec.cc \ LibItsRtcmem_Encdec.cc \ @@ -54,6 +53,5 @@ ifeq (AtsPki, $(ATS)) sources += \ LibItsBtp_Encdec.cc \ LibItsPki_Encdec.cc \ - LibItsCam_Encdec.cc \ - LibHttp_Encdec.cc + LibItsCam_Encdec.cc endif diff --git a/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.cc b/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.cc index 0696d26..8537544 100644 --- a/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.cc +++ b/ccsrc/Ports/LibIts_ports/Http_ports/HttpPort.cc @@ -1,5 +1,7 @@ #include "HttpPort.hh" #include "http_layer_factory.hh" +#include "http_layer.hh" +#include "http_codec_its.hh" #include "loggers.hh" #include "LibHttp_TypesAndValues.hh" @@ -47,11 +49,13 @@ namespace LibHttp__TestSystem { params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless // Create layer _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); - if (static_cast(_layer) == nullptr) { + if (static_cast(_layer) == nullptr) { loggers::get_instance().error("HttpPort::user_map: Invalid stack configuration: %s", it->second.c_str()); } + if (!static_cast(_layer)->set_codec(new http_codec_its())) { + loggers::get_instance().error("HttpPort::user_map: Null codec"); + } static_cast(_layer)->add_upper_port(this); - } else { loggers::get_instance().error("HttpPort::user_map: No layers defined in configuration file"); } diff --git a/ccsrc/Protocols/Http/http_codec_its.cc b/ccsrc/Protocols/Http/http_codec_its.cc new file mode 100644 index 0000000..fc477a2 --- /dev/null +++ b/ccsrc/Protocols/Http/http_codec_its.cc @@ -0,0 +1,80 @@ +#include "http_codec_its.hh" + +#include "loggers.hh" + +#include "http_etsi_ieee1609dot2_codec.hh" + +bool http_codec_its::encode_body_binary(const LibHttp__BinaryMessageBodyTypes::BinaryBody &p_binary_body, OCTETSTRING &p_encoding_buffer, const std::string &p_content_type) { + loggers::get_instance().log(">>> http_codec_its::encode_body_binary"); + + std::map>>::const_iterator it; + bool processed = false; + if (p_content_type.find("x-its") != std::string::npos) { + loggers::get_instance().log("http_codec_its::encode_body_binary: Find x-its"); + it = _codecs.find("http_its"); // TODO Use params + if (it != _codecs.cend()) { + loggers::get_instance().log("http_codec_its::encode_body_binary: Call '%s'", it->first.c_str()); + if (p_binary_body.ischosen(LibHttp__BinaryMessageBodyTypes::BinaryBody::ALT_ieee1609dot2__data)) { + _codecs["http_its"]->encode((Record_Type &)p_binary_body.ieee1609dot2__data(), p_encoding_buffer); // TODO Use params + processed = true; + } else if (p_binary_body.ischosen(LibHttp__BinaryMessageBodyTypes::BinaryBody::ALT_ieee1609dot2__certificate)) { + _codecs["http_its"]->encode((Record_Type &)p_binary_body.ieee1609dot2__certificate(), p_encoding_buffer); // TODO Use params + processed = true; + } else { + loggers::get_instance().warning("http_codec_its::encode_body_binary: Unsupported variant"); + } + } + } // TODO Add new HTTP message codec here + if (!processed) { + loggers::get_instance().warning("http_codec_its::encode_body_binary: Unsupported HTTP codec, use raw field as default"); + p_encoding_buffer = OCTETSTRING(0, nullptr); + } + + return true; +} + +bool http_codec_its::decode_body_binary(const OCTETSTRING &p_data, LibHttp__BinaryMessageBodyTypes::BinaryBody &p_binary_body, const std::string &p_content_type, params* p_params) { + loggers::get_instance().log(">>> http_codec_its::decode_body_binary"); + + std::map>>::const_iterator it; + bool processed = false; + // TODO To be refined adding a string identifier to check which codec to use. E.g. held_code.id() returns "xmlns=\"urn:ietf:params:xml:ns:geopriv:held\">" + if ((p_content_type.find("x-its") != std::string::npos) || (p_content_type.find("application/octet-stream") != std::string::npos)) { + loggers::get_instance().log("http_codec_its::decode_body_binary: Find 'x-its'"); + it = _codecs.cbegin(); //_codecs.find("http_its"); + if (it != _codecs.cend()) { + /*** + FIXME: + This code generate a codedump, I don't undertsand the reason. + The same code works file for Ng112 HELD & LOST codec. Ununderstandable!!!! + ==> Use a patch + if (_codecs["http_its"].get() != nullptr) { + loggers::get_instance().log("http_codec_its::decode_body_binary: Call 'http_etsi_ieee1609dot2_codec'"); + if (_codecs["http_its"]->decode(p_data, (Record_Type&)binary_body) == 0) { + processed = true; + } + }*/ + loggers::get_instance().log("http_codec_its::decode_body_binary: Call '%s'", it->first.c_str()); + http_etsi_ieee1609dot2_codec *codec = new http_etsi_ieee1609dot2_codec(); + if (p_data[0].get_octet() != 0x80) { + if (codec->decode(p_data, p_binary_body.ieee1609dot2__data()) == 0) { + processed = true; + } + } else { + if (codec->decode(p_data, p_binary_body.ieee1609dot2__certificate()) == 0) { + processed = true; + } + } + delete codec; + } + if (!processed) { + loggers::get_instance().warning("http_codec_its::decode_body_binary: Unsupported HTTP codec, use raw field as default"); + p_binary_body.raw() = p_data; + } + } else { + loggers::get_instance().warning("http_codec_its::decode_body_binary: Unsupported HTTP codec, use raw field as default"); + p_binary_body.raw() = p_data; + } + + return true; +} diff --git a/ccsrc/Protocols/Http/http_codec_its.hh b/ccsrc/Protocols/Http/http_codec_its.hh new file mode 100644 index 0000000..e9cb631 --- /dev/null +++ b/ccsrc/Protocols/Http/http_codec_its.hh @@ -0,0 +1,16 @@ +#pragma once + +#include "http_codec.hh" + +#include "LibHttp_MessageBodyTypes.hh" + +class http_codec_its : public http_codec { + +public: + explicit http_codec_its() : http_codec() {}; + virtual ~http_codec_its(){}; + +protected: //! \protectedsection + bool encode_body_binary(const LibHttp__BinaryMessageBodyTypes::BinaryBody &p_binary_body, OCTETSTRING &p_encoding_buffer, const std::string &p_content_type); + bool decode_body_binary(const OCTETSTRING &p_data, LibHttp__BinaryMessageBodyTypes::BinaryBody &p_binary_body, const std::string &p_content_type, params* p_params); +}; \ No newline at end of file diff --git a/ccsrc/Protocols/Http/module.mk b/ccsrc/Protocols/Http/module.mk new file mode 100644 index 0000000..9b5d32c --- /dev/null +++ b/ccsrc/Protocols/Http/module.mk @@ -0,0 +1,3 @@ +sources := http_codec_its.cc +includes := . + diff --git a/ccsrc/Protocols/UpperTester/module.mk b/ccsrc/Protocols/UpperTester/module.mk index c013e3f..c8ea294 100644 --- a/ccsrc/Protocols/UpperTester/module.mk +++ b/ccsrc/Protocols/UpperTester/module.mk @@ -43,4 +43,4 @@ endif includes := . -modules += ../../../framework/ccsrc/Protocols/UDP +modules += ../../../titan-test-system-framework/ccsrc/Protocols/UDP diff --git a/titan-test-system-framework b/titan-test-system-framework index 13e13a5..efce1fb 160000 --- a/titan-test-system-framework +++ b/titan-test-system-framework @@ -1 +1 @@ -Subproject commit 13e13a5759ad795a8726bdcdad30232d454fafd2 +Subproject commit efce1fbd81bf78207a428d1e0ab4c1d436bfa469 diff --git a/ttcn/patch_lib_http/module.mk b/ttcn/patch_lib_http/module.mk new file mode 100644 index 0000000..a2200f4 --- /dev/null +++ b/ttcn/patch_lib_http/module.mk @@ -0,0 +1,3 @@ +sources := \ + ttcn/LibHttp_BinaryMessageBodyTypes.ttcn \ + ttcn/LibHttp_BinaryTemplates.ttcn \ diff --git a/ttcn/patch_lib_http/ttcn/LibHttp_BinaryMessageBodyTypes.ttcn b/ttcn/patch_lib_http/ttcn/LibHttp_BinaryMessageBodyTypes.ttcn new file mode 100644 index 0000000..ff2492a --- /dev/null +++ b/ttcn/patch_lib_http/ttcn/LibHttp_BinaryMessageBodyTypes.ttcn @@ -0,0 +1,35 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the custom binary types for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibHttp_BinaryMessageBodyTypes { + + /** + * This file volontary contains a trivial declaration of the type BinaryBodu. + * In accordance with your TTCN-3 module LibHttp_XMLTypes, you have to change the BinaryBody typing. + */ + // TODO Add here your custom binary import + // LibIts + import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; + import from Ieee1609Dot2 language "ASN.1:1997" all; + import from EtsiTs102941BaseTypes language "ASN.1:1997" all; + import from EtsiTs102941TypesEnrolment language "ASN.1:1997" all; + import from EtsiTs102941MessagesCa language "ASN.1:1997" all; + import from EtsiTs103097Module language "ASN.1:1997" all; + + type union BinaryBody { + // TODO Add here your custom variants + Ieee1609Dot2Data ieee1609dot2_data, + Certificate ieee1609dot2_certificate, + octetstring raw + } with { + variant "" + } + +} // End of LibHttp_BinaryMessageBodyTypes diff --git a/ttcn/patch_lib_http/ttcn/LibHttp_BinaryTemplates.ttcn b/ttcn/patch_lib_http/ttcn/LibHttp_BinaryTemplates.ttcn new file mode 100644 index 0000000..5319d23 --- /dev/null +++ b/ttcn/patch_lib_http/ttcn/LibHttp_BinaryTemplates.ttcn @@ -0,0 +1,62 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the custom templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibHttp_BinaryTemplates { + + // LibHttp + import from LibHttp_BinaryMessageBodyTypes all; + + // TODO Add here your custom binary import + // LibIts + import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; + import from Ieee1609Dot2 language "ASN.1:1997" all; + import from EtsiTs102941BaseTypes language "ASN.1:1997" all; + import from EtsiTs102941TypesEnrolment language "ASN.1:1997" all; + import from EtsiTs102941MessagesCa language "ASN.1:1997" all; + import from EtsiTs103097Module language "ASN.1:1997" all; + + template (value) BinaryBody m_binary_body_raw( + in template (value) octetstring p_raw + ) := { + raw := p_raw + } // End of template m_binary_body_raw + + template (present) BinaryBody mw_binary_body_raw( + template (present) octetstring p_raw := ? + ) := { + raw := p_raw + } // End of template mw_binary_body_raw + + // TODO Add here your custom binary template + template (value) BinaryBody m_binary_body_ieee1609dot2_data( + in template (value) Ieee1609Dot2Data p_ieee1609dot2_data + ) := { + ieee1609dot2_data := p_ieee1609dot2_data + } // End of template m_binary_body_ieee1609dot2_data + + template (present) BinaryBody mw_binary_body_ieee1609dot2_data( + template (present) Ieee1609Dot2Data p_ieee1609dot2_data := ? + ) := { + ieee1609dot2_data := p_ieee1609dot2_data + } // End of template mw_binary_body_ieee1609dot2_data + + template (value) BinaryBody m_binary_body_ieee1609dot2_certificate( + in template (value) CertificateBase p_ieee1609dot2_certificate + ) := { + ieee1609dot2_certificate := p_ieee1609dot2_certificate + } // End of template m_binary_body_ieee1609dot2_certificate + + template (present) BinaryBody mw_binary_body_ieee1609dot2_certificate( + template (present) CertificateBase p_ieee1609dot2_certificate := ? + ) := { + ieee1609dot2_certificate := p_ieee1609dot2_certificate + } // End of template mw_binary_body_ieee1609dot2_certificate + +} // End of module LibHttp_BinaryTemplates diff --git a/virtualization/docker/home/etc/init.d/40-ttf011.sh b/virtualization/docker/home/etc/init.d/40-ttf011.sh index f7ac5fb..f8639c4 100755 --- a/virtualization/docker/home/etc/init.d/40-ttf011.sh +++ b/virtualization/docker/home/etc/init.d/40-ttf011.sh @@ -30,8 +30,14 @@ do fi cd - done +cd ${HOME}/dev/TS.ITS/titan-test-system-framework +git checkout devel +cd ./ttcn/LibHttp +ln -sf module_its.mk module.mk cd ${HOME}/dev/TS.ITS/ttcn/LibIts -git checkout TS.ITS +git checkout devel + +echo -e "*****************************\n* Setup environment\n*****************************\n" cd ${HOME}/dev/TS.ITS/scripts chmod 775 *.bash devenv.bash.* cd ${HOME} diff --git a/virtualization/vagrant/provisioner.bash b/virtualization/vagrant/provisioner.bash index 9dee974..91c4747 100755 --- a/virtualization/vagrant/provisioner.bash +++ b/virtualization/vagrant/provisioner.bash @@ -68,6 +68,7 @@ then exit -1 fi +# Checkout TS.ITS sources cd /home/vagrant/dev git clone --recurse-submodules --single-branch https://forge.etsi.org/rep/ITS/TS.ITS.git TS.ITS cd ./TS.ITS @@ -93,9 +94,14 @@ do fi cd - done +cd /home/vagrant/dev/TS.ITS/titan-test-system-framework +git checkout devel +cd ./ttcn/LibHttp +ln -sf module_its.mk module.mk cd /home/vagrant/dev/TS.ITS/ttcn/LibIts -git checkout TS.ITS +git checkout devel +# Setup environment cd /home/vagrant/dev/TS.ITS/scripts chmod 775 *.bash devenv.bash.* ./update_user_name.sh -- GitLab