12#ifndef LIBE3_E3_ENCODER_HPP
13#define LIBE3_E3_ENCODER_HPP
18#include <tl/expected.hpp>
88 const std::
string& e3ap_protocol_version,
89 const std::
string& dapp_name,
90 const std::
string& dapp_version,
91 const std::
string& vendor
110 const std::optional<std::
string>& e3ap_protocol_version = std::nullopt,
111 const std::optional<uint32_t>& dapp_identifier = std::nullopt,
112 const std::
string& ran_identifier =
"",
113 const std::optional<std::vector<
RanFunctionDef>>& ran_function_list = std::nullopt
127 uint32_t dapp_identifier,
128 uint32_t ran_function_identifier,
129 const std::vector<uint32_t>& telemetry_identifier_list,
130 const std::vector<uint32_t>& control_identifier_list,
131 const std::optional<uint32_t>& subscription_time = std::nullopt
142 uint32_t dapp_identifier,
143 uint32_t subscription_id
157 uint32_t dapp_identifier,
159 const std::optional<uint32_t>& subscription_id = std::nullopt
171 uint32_t dapp_identifier,
172 uint32_t ran_function_identifier,
173 const std::vector<uint8_t>& protocol_data
186 uint32_t dapp_identifier,
187 uint32_t ran_function_identifier,
188 uint32_t control_identifier,
189 const std::vector<uint8_t>& action_data
198 uint32_t dapp_identifier,
199 uint32_t ran_function_identifier,
200 const std::vector<uint8_t>& report_data
209 uint32_t dapp_identifier,
210 uint32_t ran_function_identifier,
211 const std::vector<uint8_t>& xapp_control_data
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.
virtual ~E3Encoder()=default
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.
E3Encoder & operator=(E3Encoder &&)=default
E3Encoder & operator=(const E3Encoder &)=delete
E3Encoder(E3Encoder &&)=default
virtual EncodeResult< Pdu > decode(const EncodedMessage &encoded)=0
Decode bytes to a PDU.
E3Encoder(const E3Encoder &)=delete
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.
virtual EncodingFormat format() const noexcept=0
Get the encoding format.
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_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.
virtual EncodeResult< Pdu > decode(const uint8_t *data, size_t size)=0
Decode bytes to a PDU.
EncodeResult< EncodedMessage > encode_message_ack(uint32_t message_id, uint32_t request_id, ResponseCode response_code)
Create and encode a Message Acknowledgment PDU.
virtual EncodeResult< EncodedMessage > encode(const Pdu &pdu)=0
Encode a PDU to bytes.
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_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_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.
std::unique_ptr< E3Encoder > create_encoder(EncodingFormat format)
Factory function to create appropriate encoder.
ResponseCode
E3AP response codes.
EncodingFormat
E3AP encoding formats supported by the library.
tl::expected< T, ErrorCode > EncodeResult
Result type for encoding/decoding operations.
Generic E3AP PDU structure.
RAN Function Definition for Setup Response.
E3AP Protocol Types - Vendor-neutral type definitions.