ETSI STF525 / Internal Testing test suite
This project provides an internal testing test suite and its associated Test Adapter/Codec
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
geonetworking_layer Class Reference

This class provides description of ITS GeoNetworking protocol layer. More...

#include <geonetworking_layer.hh>

Inheritance diagram for geonetworking_layer:
t_layer< LibItsGeoNetworking__TestSystem::GeoNetworkingPort > layer

Public Member Functions

 geonetworking_layer ()
 
 geonetworking_layer (const std::string &p_type, const std::string &param)
 
virtual ~geonetworking_layer ()
 
void sendMsg (const LibItsGeoNetworking__TestSystem::GeoNetworkingReq &p_gn_req, Params &p_param)
 Send GeoNetworking message to the lower layers. More...
 
virtual void send_data (OCTETSTRING &data, Params &params)
 Send bytes formated data to the lower layers. More...
 
virtual void receive_data (OCTETSTRING &data, Params &info)
 Receive bytes formated data from the lower layers. More...
 
virtual OCTETSTRING trigger_ac_event (OCTETSTRING &data, Params &params)
 
const LibItsGeoNetworking__TypesAndValues::LongPosVector * get_lpv (const LibItsGeoNetworking__TypesAndValues::GN__Address &p_gn_address)
 
void start_beaconing ()
 
void start_beaconing (const LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu &p_beacon)
 
void stop_beaconing ()
 
void start_pass_beaconing (const LibItsGeoNetworking__TypesAndValues::BeaconHeader &p_beacon)
 
void stop_pass_beaconing ()
 
int enable_secured_mode (const std::string &p_certificate_id, const boolean p_enforce_security=false)
 
int disable_secured_mode ()
 
- Public Member Functions inherited from t_layer< LibItsGeoNetworking__TestSystem::GeoNetworkingPort >
 t_layer ()
 The list of the upper ports. More...
 
 t_layer (const std::string &p_type)
 Specialized constructor Create a new instance of the layer class with its type description. More...
 
void add_upper_port (LibItsGeoNetworking__TestSystem::GeoNetworkingPort *p_port)
 Add a new upper port layer. More...
 
void remove_upper_port (LibItsGeoNetworking__TestSystem::GeoNetworkingPort *)
 Remove the specified upper layer port protocol from the list of the upper layers. More...
 
- Public Member Functions inherited from layer
 layer ()
 Type description, it indicates the protocol type (e.g. CAM, DENM, GN, ETH, PCAP...) More...
 
 layer (const std::string &p_type)
 Specialized constructor Create a new instance of the layer class with its type description. More...
 
virtual ~layer ()
 Default destructor. More...
 
void delete_layer ()
 Delete this layer. More...
 
void add_upper_layer (layer *p_layer)
 Add a new layer in the list of the upper layer. More...
 
void remove_upper_layer (layer *p_layer)
 Remove the specified upper layer protocol from the list of the upper layer. More...
 
const std::string & to_string () const
 Remove the specified upper layer protocol from the list of the upper layer. More...
 

Private Member Functions

void fill_beacon (const OCTETSTRING &p_ll_address, const INTEGER p_station_type=5, const INTEGER p_country=0, const INTEGER type_of_address=1)
 Initialize a beacon object for a stand alone beaconing This object could be replaced in case of start_beaconing call from the Adapter Control Port. More...
 
void fill_gbc_packet (const OCTETSTRING &p_ll_address, const INTEGER &p_geoAreaPosLatitude, const INTEGER &p_geoAreaPosLongitude, const INTEGER &p_distanceA, const INTEGER &p_distanceB, const INTEGER &p_angle)
 Initialize a GeoNetworking packet to send GeoNetworking Facility messages This object shall be updated before to be sent. More...
 
void fill_shb_packet (const OCTETSTRING &p_ll_address)
 Initialize a GeoNetworking packet to send GeoNetworking Facility messages This object shall be updated before to be sent. More...
 
void fill_tsb_packet (const OCTETSTRING &p_ll_address, const int p_hop_number=3, const int p_max_hop_limit=5)
 Initialize a GeoNetworking packet to send GeoNetworking Facility messages This object shall be updated before to be sent. More...
 
void fill_ls_reply (const OCTETSTRING &p_ll_address)
 Initialize an LS_REPLY GeoNetworking packet to reply to an LS_REQUEST This object shall be updated before to be sent. More...
 
void send_beacon ()
 
int build_geonetworking_pdu (OCTETSTRING &data, Params &params)
 
int build_secured_pdu (OCTETSTRING &data, Params &params)
 
int decode_basic_header (const OCTETSTRING &p_data, LibItsGeoNetworking__TypesAndValues::BasicHeader &p_basic_header)
 
int setup_secured_mode ()
 

Static Private Member Functions

static void timer_irq_sigalrm_handler (int p_signal, siginfo_t *p_signal_info, void *p_uc)
 

Private Attributes

Params _params
 
GeoNetworkingCodec _codec
 
LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu * _beacon
 
LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu * _gbc_packet
 
LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu * _shb_packet
 
LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu * _tsb_packet
 
LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu * _ls_reply
 
location_table _location_table
 
location_table _pass_beacon_table
 
bool _device_mode
 
bool _secured_mode
 
bool _encrypted_mode
 
bool _enable_security_checks
 
std::mutex _sendData
 
timer_t _timerid
 
struct sigevent _sev
 
struct itimerspec _its
 
long long _freq_nanosecs
 
sigset_t _mask
 
struct sigaction _sa
 
unsigned int _sequence_number
 
int _latitude
 
int _longitude
 
const int _signal_id = SIGTERM
 

Additional Inherited Members

- Protected Member Functions inherited from t_layer< LibItsGeoNetworking__TestSystem::GeoNetworkingPort >
void to_all_upper_ports (const TMessage &p_message, const Params &p_params)
 Forward the message to all available upper port layers. More...
 
- Protected Member Functions inherited from layer
void to_all_layers (std::vector< layer *> &layers, OCTETSTRING &data, Params &params)
 
void receive_to_all_layers (OCTETSTRING &data, Params &params)
 
void send_to_all_layers (OCTETSTRING &data, Params &params)
 
- Protected Attributes inherited from layer
std::string type
 List of the lower protocol layers. More...
 

Detailed Description

This class provides description of ITS GeoNetworking protocol layer.

Constructor & Destructor Documentation

◆ geonetworking_layer() [1/2]

geonetworking_layer::geonetworking_layer ( )
inlineexplicit

◆ geonetworking_layer() [2/2]

geonetworking_layer::geonetworking_layer ( const std::string &  p_type,
const std::string &  param 
)

◆ ~geonetworking_layer()

geonetworking_layer::~geonetworking_layer ( )
virtual

Member Function Documentation

◆ build_geonetworking_pdu()

int geonetworking_layer::build_geonetworking_pdu ( OCTETSTRING &  data,
Params params 
)
private

◆ build_secured_pdu()

int geonetworking_layer::build_secured_pdu ( OCTETSTRING &  data,
Params params 
)
private

◆ decode_basic_header()

int geonetworking_layer::decode_basic_header ( const OCTETSTRING &  p_data,
LibItsGeoNetworking__TypesAndValues::BasicHeader &  p_basic_header 
)
private

◆ disable_secured_mode()

int geonetworking_layer::disable_secured_mode ( )

◆ enable_secured_mode()

int geonetworking_layer::enable_secured_mode ( const std::string &  p_certificate_id,
const boolean  p_enforce_security = false 
)

◆ fill_beacon()

void geonetworking_layer::fill_beacon ( const OCTETSTRING &  p_ll_address,
const INTEGER  p_station_type = 5,
const INTEGER  p_country = 0,
const INTEGER  type_of_address = 1 
)
private

Initialize a beacon object for a stand alone beaconing This object could be replaced in case of start_beaconing call from the Adapter Control Port.

Parameters
[in]p_latitude
[in]p_longitude
[in]p_address

◆ fill_gbc_packet()

void geonetworking_layer::fill_gbc_packet ( const OCTETSTRING &  p_ll_address,
const INTEGER &  p_geoAreaPosLatitude,
const INTEGER &  p_geoAreaPosLongitude,
const INTEGER &  p_distanceA,
const INTEGER &  p_distanceB,
const INTEGER &  p_angle 
)
private

Initialize a GeoNetworking packet to send GeoNetworking Facility messages This object shall be updated before to be sent.

Parameters
[in]p_latitude
[in]p_longitude
[in]p_address

◆ fill_ls_reply()

void geonetworking_layer::fill_ls_reply ( const OCTETSTRING &  p_ll_address)
private

Initialize an LS_REPLY GeoNetworking packet to reply to an LS_REQUEST This object shall be updated before to be sent.

Parameters
[in]p_latitude
[in]p_longitude
[in]p_address

◆ fill_shb_packet()

void geonetworking_layer::fill_shb_packet ( const OCTETSTRING &  p_ll_address)
private

Initialize a GeoNetworking packet to send GeoNetworking Facility messages This object shall be updated before to be sent.

Parameters
[in]p_latitude
[in]p_longitude
[in]p_address

◆ fill_tsb_packet()

void geonetworking_layer::fill_tsb_packet ( const OCTETSTRING &  p_ll_address,
const int  p_hop_number = 3,
const int  p_max_hop_limit = 5 
)
private

Initialize a GeoNetworking packet to send GeoNetworking Facility messages This object shall be updated before to be sent.

Parameters
[in]p_latitude
[in]p_longitude
[in]p_address
[in]p_hop_number
[in]p_max_hop_number

◆ get_lpv()

const LongPosVector * geonetworking_layer::get_lpv ( const LibItsGeoNetworking__TypesAndValues::GN__Address &  p_gn_address)

◆ receive_data()

void geonetworking_layer::receive_data ( OCTETSTRING &  data,
Params params 
)
virtual

Receive bytes formated data from the lower layers.

Parameters
[in]p_dataThe bytes formated data received
[in]p_paramsSome lower layers parameters values when data was received

Reimplemented from layer.

◆ send_beacon()

void geonetworking_layer::send_beacon ( )
private

◆ send_data()

void geonetworking_layer::send_data ( OCTETSTRING &  data,
Params params 
)
virtual

Send bytes formated data to the lower layers.

Parameters
[in]p_dataThe data to be sent
[in]p_paramsSome parameters to overwrite default value of the lower layers parameters

Reimplemented from layer.

◆ sendMsg()

void geonetworking_layer::sendMsg ( const LibItsGeoNetworking__TestSystem::GeoNetworkingReq &  p_gn_req,
Params p_param 
)

Send GeoNetworking message to the lower layers.

Parameters
[in]p_gn_reqThe GeoNetworking message to be sent
[in]p_paramsSome parameters to overwrite default value of the lower layers parameters

◆ setup_secured_mode()

int geonetworking_layer::setup_secured_mode ( )
private

◆ start_beaconing() [1/2]

void geonetworking_layer::start_beaconing ( )

◆ start_beaconing() [2/2]

void geonetworking_layer::start_beaconing ( const LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu &  p_beacon)

◆ start_pass_beaconing()

void geonetworking_layer::start_pass_beaconing ( const LibItsGeoNetworking__TypesAndValues::BeaconHeader &  p_beacon)

◆ stop_beaconing()

void geonetworking_layer::stop_beaconing ( )

◆ stop_pass_beaconing()

void geonetworking_layer::stop_pass_beaconing ( )

◆ timer_irq_sigalrm_handler()

void geonetworking_layer::timer_irq_sigalrm_handler ( int  p_signal,
siginfo_t *  p_signal_info,
void *  p_uc 
)
staticprivate

◆ trigger_ac_event()

OCTETSTRING geonetworking_layer::trigger_ac_event ( OCTETSTRING &  data,
Params params 
)
virtual

Member Data Documentation

◆ _beacon

LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu* geonetworking_layer::_beacon
private

Data structure used for beaconing

◆ _codec

GeoNetworkingCodec geonetworking_layer::_codec
private

GeoNetworking codec object reference.

See also
GeoNetworkingCodec

◆ _device_mode

bool geonetworking_layer::_device_mode
private

◆ _enable_security_checks

bool geonetworking_layer::_enable_security_checks
private

◆ _encrypted_mode

bool geonetworking_layer::_encrypted_mode
private

◆ _freq_nanosecs

long long geonetworking_layer::_freq_nanosecs
private

◆ _gbc_packet

LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu* geonetworking_layer::_gbc_packet
private

Data structure used to encapsulate upper layer PDU into a GeoNetworking packet as a Geobroadcast

◆ _its

struct itimerspec geonetworking_layer::_its
private

◆ _latitude

int geonetworking_layer::_latitude
private

◆ _location_table

location_table geonetworking_layer::_location_table
private

Location table, used when device_mode is set

◆ _longitude

int geonetworking_layer::_longitude
private

◆ _ls_reply

LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu* geonetworking_layer::_ls_reply
private

Data structure used to reply to an incoming LS_REQUEST

◆ _mask

sigset_t geonetworking_layer::_mask
private

◆ _params

Params geonetworking_layer::_params
private

Layer parameters

◆ _pass_beacon_table

location_table geonetworking_layer::_pass_beacon_table
private

Beaconing filter table

◆ _sa

struct sigaction geonetworking_layer::_sa
private

◆ _secured_mode

bool geonetworking_layer::_secured_mode
private

◆ _sendData

std::mutex geonetworking_layer::_sendData
private

◆ _sequence_number

unsigned int geonetworking_layer::_sequence_number
private

◆ _sev

struct sigevent geonetworking_layer::_sev
private

◆ _shb_packet

LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu* geonetworking_layer::_shb_packet
private

Data structure used to encapsulate upper layer PDU into a GeoNetworking packet as a SHB

◆ _signal_id

const int geonetworking_layer::_signal_id = SIGTERM
private

◆ _timerid

timer_t geonetworking_layer::_timerid
private

◆ _tsb_packet

LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu* geonetworking_layer::_tsb_packet
private

Data structure used to encapsulate upper layer PDU into a GeoNetworking packet as a TSB


The documentation for this class was generated from the following files: