libe3 0.2.5
C++ library for E3AP RAN vendor integration
Loading...
Searching...
No Matches
libe3::E3Encoder Class Referenceabstract

Abstract base class for E3AP encoders. More...

#include <e3_encoder.hpp>

Inheritance diagram for libe3::E3Encoder:
libe3::Asn1E3Encoder libe3::JsonE3Encoder libe3::ProtobufE3Encoder

Public Member Functions

virtual ~E3Encoder ()=default
 E3Encoder (const E3Encoder &)=delete
E3Encoder & operator= (const E3Encoder &)=delete
 E3Encoder (E3Encoder &&)=default
E3Encoder & operator= (E3Encoder &&)=default
virtual EncodeResult< EncodedMessage > encode (const Pdu &pdu)=0
 Encode a PDU to bytes.
virtual EncodeResult< Pdu > decode (const EncodedMessage &encoded)=0
 Decode bytes to a PDU.
virtual EncodeResult< Pdu > decode (const uint8_t *data, size_t size)=0
 Decode bytes to a PDU.
virtual EncodingFormat format () const noexcept=0
 Get the encoding format.
EncodeResult< EncodedMessage > encode_setup_request (uint32_t message_id, const std::string &e3ap_protocol_version, const std::string &dapp_name, const std::string &dapp_version, const std::string &vendor)
 Create and encode a Setup Request PDU.
EncodeResult< EncodedMessage > encode_setup_response (uint32_t message_id, uint32_t request_id, ResponseCode response_code, const std::optional< std::string > &e3ap_protocol_version=std::nullopt, const std::optional< uint32_t > &dapp_identifier=std::nullopt, const std::string &ran_identifier="", const std::optional< std::vector< RanFunctionDef > > &ran_function_list=std::nullopt)
 Create and encode a Setup Response PDU.
EncodeResult< EncodedMessage > encode_subscription_request (uint32_t message_id, uint32_t dapp_identifier, uint32_t ran_function_identifier, const std::vector< uint32_t > &telemetry_identifier_list, const std::vector< uint32_t > &control_identifier_list, const std::optional< uint32_t > &subscription_time=std::nullopt)
 Create and encode a Subscription Request PDU.
EncodeResult< EncodedMessage > encode_subscription_delete (uint32_t message_id, uint32_t dapp_identifier, uint32_t subscription_id)
 Create and encode a Subscription Delete PDU.
EncodeResult< EncodedMessage > encode_subscription_response (uint32_t message_id, uint32_t request_id, uint32_t dapp_identifier, ResponseCode response_code, const std::optional< uint32_t > &subscription_id=std::nullopt)
 Create and encode a Subscription Response PDU.
EncodeResult< EncodedMessage > encode_indication_message (uint32_t message_id, uint32_t dapp_identifier, uint32_t ran_function_identifier, const std::vector< uint8_t > &protocol_data)
 Create and encode an Indication Message PDU.
EncodeResult< EncodedMessage > encode_dapp_control_action (uint32_t message_id, uint32_t dapp_identifier, uint32_t ran_function_identifier, uint32_t control_identifier, const std::vector< uint8_t > &action_data)
 Create and encode a dApp Control Action PDU.
EncodeResult< EncodedMessage > encode_dapp_report (uint32_t message_id, uint32_t dapp_identifier, uint32_t ran_function_identifier, const std::vector< uint8_t > &report_data)
 Create and encode a dApp Report PDU.
EncodeResult< EncodedMessage > encode_xapp_control_action (uint32_t message_id, uint32_t dapp_identifier, uint32_t ran_function_identifier, const std::vector< uint8_t > &xapp_control_data)
 Create and encode an xApp Control Action PDU.
EncodeResult< EncodedMessage > encode_message_ack (uint32_t message_id, uint32_t request_id, ResponseCode response_code)
 Create and encode a Message Acknowledgment PDU.

Protected Member Functions

 E3Encoder ()=default

Detailed Description

Abstract base class for E3AP encoders.

This class defines the interface for encoding and decoding E3AP PDUs. The design allows for multiple encoding formats (ASN.1, JSON) while maintaining the same API.

Derived classes:

  • ASN1E3Encoder: ASN.1 PER encoding (O-RAN standard)
  • JsonE3Encoder: JSON encoding (for development/debugging)

Definition at line 39 of file e3_encoder.hpp.

Constructor & Destructor Documentation

◆ ~E3Encoder()

virtual libe3::E3Encoder::~E3Encoder ( )
virtualdefault

◆ E3Encoder() [1/3]

libe3::E3Encoder::E3Encoder ( const E3Encoder & )
delete

◆ E3Encoder() [2/3]

libe3::E3Encoder::E3Encoder ( E3Encoder && )
default

◆ E3Encoder() [3/3]

libe3::E3Encoder::E3Encoder ( )
protecteddefault

Member Function Documentation

◆ decode() [1/2]

virtual EncodeResult< Pdu > libe3::E3Encoder::decode ( const EncodedMessage & encoded)
pure virtual

Decode bytes to a PDU.

Parameters
encodedEncoded message to decode
Returns
Decoded PDU on success, error code on failure

Implemented in libe3::Asn1E3Encoder, libe3::JsonE3Encoder, and libe3::ProtobufE3Encoder.

◆ decode() [2/2]

virtual EncodeResult< Pdu > libe3::E3Encoder::decode ( const uint8_t * data,
size_t size )
pure virtual

Decode bytes to a PDU.

Parameters
dataRaw data buffer
sizeSize of data
Returns
Decoded PDU on success, error code on failure

Implemented in libe3::Asn1E3Encoder, libe3::JsonE3Encoder, and libe3::ProtobufE3Encoder.

◆ encode()

virtual EncodeResult< EncodedMessage > libe3::E3Encoder::encode ( const Pdu & pdu)
pure virtual

Encode a PDU to bytes.

Parameters
pduPDU to encode
Returns
Encoded message on success, error code on failure

Implemented in libe3::Asn1E3Encoder, libe3::JsonE3Encoder, and libe3::ProtobufE3Encoder.

◆ encode_dapp_control_action()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_dapp_control_action ( uint32_t message_id,
uint32_t dapp_identifier,
uint32_t ran_function_identifier,
uint32_t control_identifier,
const std::vector< uint8_t > & action_data )

Create and encode a dApp Control Action PDU.

Parameters
message_idUnique message ID
dapp_identifierdApp identifier
ran_function_identifierRAN function identifier
control_identifierControl identifier
action_dataAction data

Definition at line 126 of file e3_encoder.cpp.

◆ encode_dapp_report()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_dapp_report ( uint32_t message_id,
uint32_t dapp_identifier,
uint32_t ran_function_identifier,
const std::vector< uint8_t > & report_data )

Create and encode a dApp Report PDU.

Parameters
message_idUnique message ID

Definition at line 144 of file e3_encoder.cpp.

◆ encode_indication_message()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_indication_message ( uint32_t message_id,
uint32_t dapp_identifier,
uint32_t ran_function_identifier,
const std::vector< uint8_t > & protocol_data )

Create and encode an Indication Message PDU.

Parameters
message_idUnique message ID
dapp_identifierdApp identifier
ran_function_identifierRAN function identifier
protocol_dataProtocol data

Definition at line 110 of file e3_encoder.cpp.

◆ encode_message_ack()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_message_ack ( uint32_t message_id,
uint32_t request_id,
ResponseCode response_code )

Create and encode a Message Acknowledgment PDU.

Parameters
message_idUnique message ID

Definition at line 176 of file e3_encoder.cpp.

◆ encode_setup_request()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_setup_request ( uint32_t message_id,
const std::string & e3ap_protocol_version,
const std::string & dapp_name,
const std::string & dapp_version,
const std::string & vendor )

Create and encode a Setup Request PDU.

Parameters
message_idUnique message ID
e3ap_protocol_versionE3AP protocol version string (e.g., "0.0.0")
dapp_nameName of the dApp
dapp_versionVersion of the dApp (e.g., "0.0.0")
vendorVendor name (max 30 chars)

Definition at line 16 of file e3_encoder.cpp.

◆ encode_setup_response()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_setup_response ( uint32_t message_id,
uint32_t request_id,
ResponseCode response_code,
const std::optional< std::string > & e3ap_protocol_version = std::nullopt,
const std::optional< uint32_t > & dapp_identifier = std::nullopt,
const std::string & ran_identifier = "",
const std::optional< std::vector< RanFunctionDef > > & ran_function_list = std::nullopt )

Create and encode a Setup Response PDU.

Parameters
message_idUnique message ID
request_idID of the corresponding SetupRequest
response_codeResponse code (positive/negative)
e3ap_protocol_versionE3AP protocol version (optional)
dapp_identifierAssigned dApp identifier (optional)
ran_identifierRAN identifier
ran_function_listList of available RAN functions (optional). std::nullopt and an empty list both encode with the OPTIONAL ranFunctionList absent on the wire.

Definition at line 34 of file e3_encoder.cpp.

◆ encode_subscription_delete()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_subscription_delete ( uint32_t message_id,
uint32_t dapp_identifier,
uint32_t subscription_id )

Create and encode a Subscription Delete PDU.

Parameters
message_idUnique message ID
dapp_identifierdApp identifier
subscription_idSubscription ID to delete

Definition at line 78 of file e3_encoder.cpp.

◆ encode_subscription_request()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_subscription_request ( uint32_t message_id,
uint32_t dapp_identifier,
uint32_t ran_function_identifier,
const std::vector< uint32_t > & telemetry_identifier_list,
const std::vector< uint32_t > & control_identifier_list,
const std::optional< uint32_t > & subscription_time = std::nullopt )

Create and encode a Subscription Request PDU.

Parameters
message_idUnique message ID
dapp_identifierdApp identifier
ran_function_identifierRAN function to subscribe to
telemetry_identifier_listList of telemetry identifiers
control_identifier_listList of control identifiers
subscription_timeHow long to keep the subscription (0-3600 sec, optional)

Definition at line 58 of file e3_encoder.cpp.

◆ encode_subscription_response()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_subscription_response ( uint32_t message_id,
uint32_t request_id,
uint32_t dapp_identifier,
ResponseCode response_code,
const std::optional< uint32_t > & subscription_id = std::nullopt )

Create and encode a Subscription Response PDU.

Parameters
message_idUnique message ID
request_idID of the corresponding SubscriptionRequest
dapp_identifierdApp identifier
response_codeResponse code (positive/negative)
subscription_idSubscription ID (optional)

Definition at line 92 of file e3_encoder.cpp.

◆ encode_xapp_control_action()

EncodeResult< EncodedMessage > libe3::E3Encoder::encode_xapp_control_action ( uint32_t message_id,
uint32_t dapp_identifier,
uint32_t ran_function_identifier,
const std::vector< uint8_t > & xapp_control_data )

Create and encode an xApp Control Action PDU.

Parameters
message_idUnique message ID

Definition at line 160 of file e3_encoder.cpp.

◆ format()

virtual EncodingFormat libe3::E3Encoder::format ( ) const
pure virtualnoexcept

Get the encoding format.

Implemented in libe3::Asn1E3Encoder, libe3::JsonE3Encoder, and libe3::ProtobufE3Encoder.

◆ operator=() [1/2]

E3Encoder & libe3::E3Encoder::operator= ( const E3Encoder & )
delete

◆ operator=() [2/2]

E3Encoder & libe3::E3Encoder::operator= ( E3Encoder && )
default

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