Telematics SDK - Interface Specification  v1.46.10

Data Structures

class  telux::cv2x::ICv2xConfigListener
 Listeners for ICv2xConfig must implement this interface. More...
 
class  telux::cv2x::ICv2xConfig
 Cv2xConfig provide operations to update or request cv2x configuration. More...
 
class  telux::cv2x::Cv2xFactory
 Cv2xFactory is the factory that creates the Cv2x Radio. More...
 
class  telux::cv2x::ICv2xRadio
 
class  telux::cv2x::ICv2xRadioListener
 Listeners for Cv2xRadio must implement this interface. More...
 
class  telux::cv2x::ICv2xRadioManager
 Cv2xRadioManager manages instances of Cv2xRadio. More...
 
struct  telux::cv2x::SocketInfo
 
struct  telux::cv2x::Cv2xStatus
 
struct  telux::cv2x::Cv2xPoolStatus
 
struct  telux::cv2x::Cv2xStatusEx
 
struct  telux::cv2x::TxPoolIdInfo
 
struct  telux::cv2x::EventFlowInfo
 
struct  telux::cv2x::SpsFlowInfo
 
struct  telux::cv2x::Cv2xRadioCapabilities
 
struct  telux::cv2x::MacDetails
 
struct  telux::cv2x::SpsSchedulingInfo
 
struct  telux::cv2x::TrustedUEInfo
 
struct  telux::cv2x::TrustedUEInfoList
 
struct  telux::cv2x::IPv6Address
 
struct  telux::cv2x::DataSessionSettings
 
struct  telux::cv2x::ConfigEventInfo
 
struct  telux::cv2x::L2FilterInfo
 
struct  telux::cv2x::RFTxInfo
 
struct  telux::cv2x::TxStatusReport
 
struct  telux::cv2x::IPv6AddrType
 
struct  telux::cv2x::GlobalIPUnicastRoutingInfo
 
struct  telux::cv2x::RxPacketMetaDataReport
 
class  telux::cv2x::Cv2xRxMetaDataHelper
 
class  telux::cv2x::ICv2xRxSubscription
 
class  telux::cv2x::ICv2xThrottleManagerListener
 Listener class for getting filter rate update notification. More...
 
class  telux::cv2x::ICv2xThrottleManager
 ThrottleManager provides throttle manager client interface. More...
 
class  telux::cv2x::ICv2xTxFlow
 
class  telux::cv2x::ICv2xTxRxSocket
 
class  telux::cv2x::ICv2xTxStatusReportListener
 Listeners for CV2X Tx status report must implement this interface. More...
 
class  telux::cv2x::Cv2xUtil
 

Typedefs

using telux::cv2x::RxMetaDataValidity = uint32_t
 
using telux::cv2x::setVerificationLoadCallback = std::function< void(telux::common::ErrorCode error)>
 

Enumerations

enum  telux::cv2x::TrafficCategory { telux::cv2x::TrafficCategory::SAFETY_TYPE, telux::cv2x::TrafficCategory::NON_SAFETY_TYPE }
 
enum  telux::cv2x::Cv2xStatusType { telux::cv2x::Cv2xStatusType::INACTIVE, telux::cv2x::Cv2xStatusType::ACTIVE, telux::cv2x::Cv2xStatusType::SUSPENDED, telux::cv2x::Cv2xStatusType::UNKNOWN }
 
enum  telux::cv2x::Cv2xCauseType {
  telux::cv2x::Cv2xCauseType::TIMING, telux::cv2x::Cv2xCauseType::CONFIG, telux::cv2x::Cv2xCauseType::UE_MODE, telux::cv2x::Cv2xCauseType::GEOPOLYGON,
  telux::cv2x::Cv2xCauseType::LPM, telux::cv2x::Cv2xCauseType::UNKNOWN
}
 
enum  telux::cv2x::TrafficIpType { telux::cv2x::TrafficIpType::TRAFFIC_IP, telux::cv2x::TrafficIpType::TRAFFIC_NON_IP }
 
enum  telux::cv2x::RadioConcurrencyMode { telux::cv2x::RadioConcurrencyMode::WWAN_NONCONCURRENT, telux::cv2x::RadioConcurrencyMode::WWAN_CONCURRENT }
 
enum  telux::cv2x::Cv2xEvent { telux::cv2x::Cv2xEvent::CV2X_INACTIVE, telux::cv2x::Cv2xEvent::CV2X_ACTIVE, telux::cv2x::Cv2xEvent::TX_SUSPENDED, telux::cv2x::Cv2xEvent::TXRX_SUSPENDED }
 
enum  telux::cv2x::Priority {
  telux::cv2x::Priority::MOST_URGENT, telux::cv2x::Priority::PRIORITY_1, telux::cv2x::Priority::PRIORITY_2, telux::cv2x::Priority::PRIORITY_3,
  telux::cv2x::Priority::PRIORITY_4, telux::cv2x::Priority::PRIORITY_5, telux::cv2x::Priority::PRIORITY_6, telux::cv2x::Priority::PRIORITY_BACKGROUND,
  telux::cv2x::Priority::PRIORITY_UNKNOWN
}
 
enum  telux::cv2x::Periodicity {
  telux::cv2x::Periodicity::PERIODICITY_10MS, telux::cv2x::Periodicity::PERIODICITY_20MS, telux::cv2x::Periodicity::PERIODICITY_50MS, telux::cv2x::Periodicity::PERIODICITY_100MS,
  telux::cv2x::Periodicity::PERIODICITY_UNKNOWN
}
 
enum  telux::cv2x::ConfigSourceType { telux::cv2x::ConfigSourceType::UNKNOWN = 0u, telux::cv2x::ConfigSourceType::PRECONFIG = 1u, telux::cv2x::ConfigSourceType::SIM_CARD = 2u, telux::cv2x::ConfigSourceType::OMA_DM = 4u }
 
enum  telux::cv2x::ConfigEvent { telux::cv2x::ConfigEvent::CHANGED = 0u, telux::cv2x::ConfigEvent::EXPIRED = 1u }
 
enum  telux::cv2x::RFTxStatus { telux::cv2x::RFTxStatus::INACTIVE, telux::cv2x::RFTxStatus::OPERATIONAL, telux::cv2x::RFTxStatus::FAULT }
 
enum  telux::cv2x::SegmentType { telux::cv2x::SegmentType::FIRST, telux::cv2x::SegmentType::LAST, telux::cv2x::SegmentType::MIDDLE, telux::cv2x::SegmentType::ONLY_ONE }
 
enum  telux::cv2x::TxType { telux::cv2x::TxType::NEW_TX, telux::cv2x::TxType::RE_TX }
 
enum  telux::cv2x::RxMetaDataValidityType {
  telux::cv2x::RX_SUBFRAME_NUMBER = (1 << 0), telux::cv2x::RX_SUBCHANNEL_INDEX = (1 << 1), telux::cv2x::RX_SUBCHANNEL_NUMBER = (1 << 2), telux::cv2x::RX_PRX_RSSI = (1 << 3),
  telux::cv2x::RX_DRX_RSSI = (1 << 4), telux::cv2x::RX_L2_DEST_ID = (1 << 5), telux::cv2x::RX_SCI_FORMAT1 = (1 << 6), telux::cv2x::RX_DELAY_ESTIMATION = (1 << 7)
}
 

Variables

constexpr uint8_t telux::cv2x::MAX_ANTENNAS_SUPPORTED = 2u
 

Detailed Description

This section contains C++ APIs related to Cellular-V2X operation. Applications need to have "radio" Linux group permissions to be able to operate successfully with underlying services.


Data Structure Documentation

class telux::cv2x::ICv2xConfigListener

Listeners for ICv2xConfig must implement this interface.

Public Member Functions

virtual void onConfigChanged (const ConfigEventInfo &info)
 
virtual ~ICv2xConfigListener ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xConfigListener::~ICv2xConfigListener ( )
virtual

Destructor for ICv2xConfigListener

Member Function Documentation

virtual void telux::cv2x::ICv2xConfigListener::onConfigChanged ( const ConfigEventInfo info)
virtual

Called when CV2X configuration has changed in the below scenarios:

  1. The specified configuration source has expired.
  2. The active configuration source has changed to the specified configuration source type due to the expiration of the configuration source being used.
  3. The specified configuration source has been updated.
Parameters
[in]info- Information of CV2X configuration event.
class telux::cv2x::ICv2xConfig

Cv2xConfig provide operations to update or request cv2x configuration.

Public Member Functions

virtual ~ICv2xConfig ()
 
virtual bool isReady ()=0
 
virtual std::future< bool > onReady ()=0
 
virtual telux::common::ServiceStatus getServiceStatus ()=0
 
virtual telux::common::Status updateConfiguration (const std::string &configFilePath, telux::common::ResponseCallback cb)=0
 
virtual telux::common::Status retrieveConfiguration (const std::string &configFilePath, telux::common::ResponseCallback cb)=0
 
virtual telux::common::Status registerListener (std::weak_ptr< ICv2xConfigListener > listener)=0
 
virtual telux::common::Status deregisterListener (std::weak_ptr< ICv2xConfigListener > listener)=0
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xConfig::~ICv2xConfig ( )
virtual

Member Function Documentation

virtual bool telux::cv2x::ICv2xConfig::isReady ( )
pure virtual

Checks if the Cv2x Config Manager is ready.

Returns
True if Cv2x Config is ready for service, otherwise returns false.
Deprecated:
use getServiceStatus instead
virtual std::future<bool> telux::cv2x::ICv2xConfig::onReady ( )
pure virtual

Wait for Cv2x Config to be ready.

Returns
A future that caller can wait on to be notified when Cv2x Radio Manager is ready.
Deprecated:
the readiness can be notified via the callback passed to Cv2xFactory::getCv2xConfig.
virtual telux::common::ServiceStatus telux::cv2x::ICv2xConfig::getServiceStatus ( )
pure virtual

This status indicates whether the Cv2xConfig is in a usable state.

Returns
SERVICE_AVAILABLE - If cv2x config is ready for service. SERVICE_UNAVAILABLE - If cv2x config is temporarily unavailable. SERVICE_FAILED - If cv2x config encountered an irrecoverable failure.
Note
Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::cv2x::ICv2xConfig::updateConfiguration ( const std::string &  configFilePath,
telux::common::ResponseCallback  cb 
)
pure virtual

Updates CV2X configuration. Requires CV2X TX/RX radio status be Inactive. If CV2X radio status is Active or Suspended, call ICv2xRadioManager::stopCv2x before trying to update configuration. The functionality of V2X configuration expiration is supported by adding an expiration leaf to the V2X configuration file passed in. When the active configuration expires, the system fallbacks to a lower priority V2X configuration ConfigSourceType if existed. If the V2X stauts is active, it changes to suspended when the active V2X configuration expires and then changes to active after the system fallbacks to a lower priority V2X configuration or changes to inactive if no V2X configuration is available.

Parameters
[in]configFilePath- Path to config file. This is the fully qualified file path including the name of the file.
[in]cb- Callback that is invoked when the send is complete. This may be null.
virtual telux::common::Status telux::cv2x::ICv2xConfig::retrieveConfiguration ( const std::string &  configFilePath,
telux::common::ResponseCallback  cb 
)
pure virtual

Retrieve active CV2X configuration. The calling application should have write access to the path specified by . And if the v2x configuration retrieval request succeed, the file specified by will be created and filled with the configuration contents. Otherwise, no file will be created.

Parameters
[in]configFilePath- Path to config file. This is the fully qualified file path including the name of the file.
[in]cb- Callback that is invoked when the configuration retrival is complete. This may be null.
virtual telux::common::Status telux::cv2x::ICv2xConfig::registerListener ( std::weak_ptr< ICv2xConfigListener listener)
pure virtual

Registers a listener for this ICv2xConfig.

Parameters
[in]listener- Listener that implements ICv2xConfigListener interface.
virtual telux::common::Status telux::cv2x::ICv2xConfig::deregisterListener ( std::weak_ptr< ICv2xConfigListener listener)
pure virtual

Deregisters a listener for this ICv2xConfig.

Parameters
[in]listener- Previously registered ICv2xConfigListener that is to be deregistered.
class telux::cv2x::Cv2xFactory

Cv2xFactory is the factory that creates the Cv2x Radio.

Public Member Functions

std::shared_ptr< ICv2xRadioManagergetCv2xRadioManager (telux::common::InitResponseCb cb=nullptr)
 
std::shared_ptr< ICv2xConfiggetCv2xConfig (telux::common::InitResponseCb cb=nullptr)
 
std::shared_ptr< ICv2xThrottleManagergetCv2xThrottleManager (telux::common::InitResponseCb cb=nullptr)
 

Static Public Member Functions

static Cv2xFactorygetInstance ()
 

Member Function Documentation

static Cv2xFactory& telux::cv2x::Cv2xFactory::getInstance ( )
static

Get Cv2xFactory instance

Returns
Reference to Cv2xFactory singleton.
std::shared_ptr<ICv2xRadioManager> telux::cv2x::Cv2xFactory::getCv2xRadioManager ( telux::common::InitResponseCb  cb = nullptr)

Get Cv2xRadioManager instance.

Parameters
[in]cb- Optional callback to get Cv2xRadioManager initialization status
Returns
shared pointer to Cv2x Radio Manager upon success. nullptr otherwise.
std::shared_ptr<ICv2xConfig> telux::cv2x::Cv2xFactory::getCv2xConfig ( telux::common::InitResponseCb  cb = nullptr)

Get Cv2xConfig instance.

Parameters
[in]cb- Optional callback to get Cv2xConfig initialization status
Returns
shared pointer to Cv2x Config upon success. nullptr otherwise.
std::shared_ptr<ICv2xThrottleManager> telux::cv2x::Cv2xFactory::getCv2xThrottleManager ( telux::common::InitResponseCb  cb = nullptr)

Get Cv2xThrottleManager instance.

Returns
shared pointer to Cv2x ThrottleManager upon success. nullptr otherwise.
class telux::cv2x::ICv2xRadio

This is class encapsulates a Cv2xRadio interface.

Returned from getCv2xRadio in Cv2xFactory

Public Member Functions

virtual Cv2xRadioCapabilities getCapabilities () const =0
 
virtual bool isReady () const =0
 
virtual bool isInitialized () const =0
 
virtual std::future< telux::common::StatusonReady ()=0
 
virtual telux::common::Status registerListener (std::weak_ptr< ICv2xRadioListener > listener)=0
 
virtual telux::common::Status deregisterListener (std::weak_ptr< ICv2xRadioListener > listener)=0
 
virtual telux::common::Status createRxSubscription (TrafficIpType ipType, uint16_t port, CreateRxSubscriptionCallback cb, std::shared_ptr< std::vector< uint32_t >> idList=nullptr)=0
 
virtual telux::common::Status enableRxMetaDataReport (TrafficIpType ipType, bool enable, std::shared_ptr< std::vector< std::uint32_t >> idList, telux::common::ResponseCallback cb)=0
 
virtual telux::common::Status createTxSpsFlow (TrafficIpType ipType, uint32_t serviceId, const SpsFlowInfo &spsInfo, uint16_t spsSrcPort, bool eventSrcPortValid, uint16_t eventSrcPort, CreateTxSpsFlowCallback cb)=0
 
virtual telux::common::Status createTxEventFlow (TrafficIpType ipType, uint32_t serviceId, uint16_t eventSrcPort, CreateTxEventFlowCallback cb)=0
 
virtual telux::common::Status createTxEventFlow (TrafficIpType ipType, uint32_t serviceId, const EventFlowInfo &flowInfo, uint16_t eventSrcPort, CreateTxEventFlowCallback cb)=0
 
virtual telux::common::Status closeRxSubscription (std::shared_ptr< ICv2xRxSubscription > rxSub, CloseRxSubscriptionCallback cb)=0
 
virtual telux::common::Status closeTxFlow (std::shared_ptr< ICv2xTxFlow > txFlow, CloseTxFlowCallback cb)=0
 
virtual telux::common::Status changeSpsFlowInfo (std::shared_ptr< ICv2xTxFlow > txFlow, const SpsFlowInfo &spsInfo, ChangeSpsFlowInfoCallback cb)=0
 
virtual telux::common::Status requestSpsFlowInfo (std::shared_ptr< ICv2xTxFlow > txFlow, RequestSpsFlowInfoCallback cb)=0
 
virtual telux::common::Status changeEventFlowInfo (std::shared_ptr< ICv2xTxFlow > txFlow, const EventFlowInfo &flowInfo, ChangeEventFlowInfoCallback cb)=0
 
virtual telux::common::Status requestCapabilities (RequestCapabilitiesCallback cb)=0
 
virtual telux::common::Status requestDataSessionSettings (RequestDataSessionSettingsCallback cb)=0
 
virtual telux::common::Status updateSrcL2Info (UpdateSrcL2InfoCallback cb)=0
 
virtual telux::common::Status updateTrustedUEList (const TrustedUEInfoList &infoList, UpdateTrustedUEListCallback cb)=0
 
virtual ~ICv2xRadio ()
 
virtual std::string getIfaceNameFromIpType (TrafficIpType ipType)=0
 
virtual telux::common::Status createCv2xTcpSocket (const EventFlowInfo &eventInfo, const SocketInfo &sockInfo, CreateTcpSocketCallback cb)=0
 
virtual telux::common::Status closeCv2xTcpSocket (std::shared_ptr< ICv2xTxRxSocket > sock, CloseTcpSocketCallback cb)=0
 
virtual telux::common::Status registerTxStatusReportListener (uint16_t port, std::shared_ptr< ICv2xTxStatusReportListener > listener, telux::common::ResponseCallback cb)=0
 
virtual telux::common::Status deregisterTxStatusReportListener (uint16_t port, telux::common::ResponseCallback cb)=0
 
virtual telux::common::Status setGlobalIPInfo (const IPv6AddrType &ipv6Addr, common::ResponseCallback cb)=0
 
virtual telux::common::Status setGlobalIPUnicastRoutingInfo (const GlobalIPUnicastRoutingInfo &destL2Addr, common::ResponseCallback cb)=0
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xRadio::~ICv2xRadio ( )
virtual

Destructor for ICv2xRadio

Member Function Documentation

virtual Cv2xRadioCapabilities telux::cv2x::ICv2xRadio::getCapabilities ( ) const
pure virtual

Get the capabilities of this Cv2xRadio.

Returns
Cv2xRadioCapabilities - Contains capabilities of this Cv2xRadio.
Deprecated:
Use requestCapabilities() API
virtual bool telux::cv2x::ICv2xRadio::isReady ( ) const
pure virtual

Returns true if the radio interface was successfully initialized.

Returns
True if ready. False otherwise.
virtual bool telux::cv2x::ICv2xRadio::isInitialized ( ) const
pure virtual

Returns true if the radio interface has completed initialization.

Returns
True if initialized. False otherwise.
virtual std::future<telux::common::Status> telux::cv2x::ICv2xRadio::onReady ( )
pure virtual

Returns a future that indicated if the radio interface is ready or if radio failed to initialize.

Returns
SUCCESS if Cv2xRadio initialization was successful. Otherwise it returns an Error Code.
virtual telux::common::Status telux::cv2x::ICv2xRadio::registerListener ( std::weak_ptr< ICv2xRadioListener listener)
pure virtual

Registers a listener for this Cv2xRadio.

Parameters
[in]listener- Listener that implements Cv2xRadioListener interface.
virtual telux::common::Status telux::cv2x::ICv2xRadio::deregisterListener ( std::weak_ptr< ICv2xRadioListener listener)
pure virtual

Deregisters a listener from this Cv2xRadio.

Parameters
[in]listener- Previously registered Cv2xRadioListener that is to be deregistered.
virtual telux::common::Status telux::cv2x::ICv2xRadio::createRxSubscription ( TrafficIpType  ipType,
uint16_t  port,
CreateRxSubscriptionCallback  cb,
std::shared_ptr< std::vector< uint32_t >>  idList = nullptr 
)
pure virtual

Creates and initializes a new Rx subscription which will be returned in the user-supplied callback.

Parameters
[in]ipType- IP traffic type (IP or NON-IP)
[in]port- Rx port number
[in]cb- Callback function that is invoked when socket creation is complete.
[in]idList- Service ID list to subscribe, optional parameter using nullptr by default. Subscribe wildcard if this parameter is set to nullptr.
Returns
SUCCESS on success. Error status otherwise.
Dependencies The interface must be pre-initialized with init().
virtual telux::common::Status telux::cv2x::ICv2xRadio::enableRxMetaDataReport ( TrafficIpType  ipType,
bool  enable,
std::shared_ptr< std::vector< std::uint32_t >>  idList,
telux::common::ResponseCallback  cb 
)
pure virtual

Enable or disable (depends on the parameter "bool enable") the received packets' meta data report for the service IDs provided.

The meta data consist of RF RSSI (received signal strength indicator) status, 32-bit SCI Format 1 (3GPP TS 36.213, section 14.1), packet delay estimation, L2 destination ID, and the resource blocks used for the packet's transmission: subframe, subchannel index.

Parameters
[in]ipType- IP traffic type (IP or NON-IP)
[in]enable- enable the rx meta data if set to true, otherwise disable
[in]idList- Service ID list of which the received packets' report are desired
[in]cb- Callback that is invoked when meta data is enabled or disabled.
Returns
SUCCESS if no error occurred
Meta data report for IP packets is not supported yet, it will return NOSUPPORTED.
virtual telux::common::Status telux::cv2x::ICv2xRadio::createTxSpsFlow ( TrafficIpType  ipType,
uint32_t  serviceId,
const SpsFlowInfo spsInfo,
uint16_t  spsSrcPort,
bool  eventSrcPortValid,
uint16_t  eventSrcPort,
CreateTxSpsFlowCallback  cb 
)
pure virtual

Creates a Tx SPS flow with the specified IP type, serviceId, and other parameters specified in reservation. Additionally, an option event flow will be created with the same IP type and serviceId. A Tx socket will be created and initialized for the SPS flow. A Tx socket will be created and initialized for the event flow if the optional event flow is specified.

Parameters
[in]ipType- IP traffic type (IP or NON-IP)
[in]serviceId- ID used for transmissions that will be mapped to an L2 destination address. Variable length 4-byte PSID or ITS_AID, or another service ID.
[in]spsInfo- SPS reservation parameters.
[in]spsPort- Requested source port number for the bandwidth reserved SPS transmissions.
[in]eventSrcPortValid- True if an optional event flow is desired. If this field is left false, the event flow will not be created.
[in]eventSrcPort- Requested source port number for the optional event flow.
[in]cb- Callback function that is invoked when socket creation is complete. This must not be null.
This caller is expected to identify two unused local port numbers
to use for binding: one for the event-driven flow and one for the SPS flow.
Returns
SUCCESS upon success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadio::createTxEventFlow ( TrafficIpType  ipType,
uint32_t  serviceId,
uint16_t  eventSrcPort,
CreateTxEventFlowCallback  cb 
)
pure virtual

Creates an event flow. An associated Tx socket will be created and initialized.

Parameters
[in]ipType- IP traffic type (IP or NON-IP)
[in]serviceId- ID used for transmissions that will be mapped to an L2 destination address. Variable length 4-byte PSID or ITS_AID, or another service ID.
[in]eventSrcPort- Local port number to which the socket is bound. Used for transmissions of this ID.
[in]cb- Callback function that is invoked when socket creation is complete. This must not be null.
Detailed description This function is used only for TX when no periodicity is
available for the application type. If your transmit data periodicity is known, use createTxSpsFlow() instead.
These even-driven sockets pay attention to the QoS parameters in
the IP socket.
Returns
SUCCESS upon success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadio::createTxEventFlow ( TrafficIpType  ipType,
uint32_t  serviceId,
const EventFlowInfo flowInfo,
uint16_t  eventSrcPort,
CreateTxEventFlowCallback  cb 
)
pure virtual

Creates an event flow. An associated Tx socket will be created and initialized.

Parameters
[in]ipType- IP traffic type (IP or NON-IP)
[in]serviceId- ID used for transmissions that will be mapped to an L2 destination address. Variable length 4-byte PSID or ITS_AID, or another service ID.
[in]flowInfo- Flow configuration parameters
[in]eventSrcPort- Local port number to which the socket is bound. Used for transmissions of this ID.
[in]cb- Callback function that is invoked when socket creation is complete. This must not be null.
Detailed description This function is used only for TX when no periodicity is
available for the application type. If your transmit data periodicity is known, use createTxSpsFlow() instead.
These even-driven sockets pay attention to the QoS parameters in
the IP socket.
Returns
SUCCESS upon success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadio::closeRxSubscription ( std::shared_ptr< ICv2xRxSubscription rxSub,
CloseRxSubscriptionCallback  cb 
)
pure virtual

Closes the RxSubscription and frees resources (such as the Rx socket) associated with it.

Parameters
[in]rxSub- RxSubscription to close
[in]cb- Callback that is invoked when socket close is complete. This may be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::closeTxFlow ( std::shared_ptr< ICv2xTxFlow txFlow,
CloseTxFlowCallback  cb 
)
pure virtual

Closes the TxFlow and frees resources associated with it (such as reserved SPS bandwidth contracts and sockets). This function works on both SPS and event flows.

Parameters
[in]txFlow- Tx (SPS or event) flow to close.
[in]cb- Callback that is invoked when Tx flow close is complete. This may be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::changeSpsFlowInfo ( std::shared_ptr< ICv2xTxFlow txFlow,
const SpsFlowInfo spsInfo,
ChangeSpsFlowInfoCallback  cb 
)
pure virtual

Request to change TX SPS Flow reservation parameters.

Parameters
[in]txFlow- Tx SPS flow
[in]spsInfo- Desired SPS reservation parameters
[in]cb- Callback that is invoked upon reservation change. This may be null.
Detailed description
This function does not update reservation priority
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::requestSpsFlowInfo ( std::shared_ptr< ICv2xTxFlow txFlow,
RequestSpsFlowInfoCallback  cb 
)
pure virtual

Request SPS flow info.

Parameters
[in]sock- Tx SPS flow
[in]cb- Callback that will be invoked and returns the SPS info. Must not be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::changeEventFlowInfo ( std::shared_ptr< ICv2xTxFlow txFlow,
const EventFlowInfo flowInfo,
ChangeEventFlowInfoCallback  cb 
)
pure virtual

Request to change TX Event Flow reservation parameters.

Parameters
[in]txFlow- Tx Event flow
[in]flowInfo- Desired Event flow parameters
[in]cb- Callback that is invoked upon parameter change. This may be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::requestCapabilities ( RequestCapabilitiesCallback  cb)
pure virtual

Request modem Cv2x capability information.

Parameters
[in]cb- Callback that will be invoked and returns the capability info. Must not be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::requestDataSessionSettings ( RequestDataSessionSettingsCallback  cb)
pure virtual

Request data session settings currently in use.

Parameters
[in]cb- Callback that will be invoked and returns the data session settings. Must not be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::updateSrcL2Info ( UpdateSrcL2InfoCallback  cb)
pure virtual

Requests modem to change L2 info.

Parameters
[in]cb- Callback that will be invoked and returns status. Must not be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::updateTrustedUEList ( const TrustedUEInfoList infoList,
UpdateTrustedUEListCallback  cb 
)
pure virtual

Send request to modem to update the list of malicious UE source IDs and trusted UE source IDs with corresponding confidence information.

Parameters
[in]infoList- Trusted and malicious UE information list
[in]cb- Callback that will be invoked and returns status. Must not be null.
Returns
SUCCESS if no error occurred.
virtual std::string telux::cv2x::ICv2xRadio::getIfaceNameFromIpType ( TrafficIpType  ipType)
pure virtual

Get interface name based on ipType.

Parameters
ipType- IP traffic type (IP or NON-IP)
Returns
Interface name as a string
virtual telux::common::Status telux::cv2x::ICv2xRadio::createCv2xTcpSocket ( const EventFlowInfo eventInfo,
const SocketInfo sockInfo,
CreateTcpSocketCallback  cb 
)
pure virtual

Creates a CV2X TCP socket with specified event flow information and TCP socket information. The TCP socket will be created and bound to the IPv6 address of local IP interface with specifed source port. Additionally, this API also registers a Tx event flow and subscribes Rx with specified service ID. If the created socket is expected to work as TCP client mode, the caller must connect the created socket to a destination using connect() and then use the socket for send() and recv() on successful connection. If the created socket is expected to work as TCP server mode, the caller must mark this socket as a listening socket using listen() and accept connections received from this listening socket using accept(), and then use the accepted sockets returned from accept() for send() or recv().

Parameters
[in]eventInfo- Information for the Event flow.
[in]sockInfo- Information for the TCP socket.
[in]cb- Callback function that is invoked when socket creation is complete. This must not be null.
The caller is expected to identify an unused local port number as the source
port number in structure SocketInfo to use for binding.
The caller must release the created socket and associated resources with
closeCv2xTcpSocket. Additionally, if the created socket is marked as a listening socket, the caller must close all the accepted sockets returned by accept() using close() first, and then release the listening socket and associated resources by calling closeCv2xTcpSocket.
Returns
SUCCESS upon success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadio::closeCv2xTcpSocket ( std::shared_ptr< ICv2xTxRxSocket sock,
CloseTcpSocketCallback  cb 
)
pure virtual

Closes the CV2X TCP socket and frees resources associated with it (such as registered event Tx flow and subscribed Rx service ID and created TCP socket).

Parameters
[in]sock- CV2X TCP socket to close.
[in]cb- Callback that is invoked when CV2X TCP socket close is complete. This may be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::registerTxStatusReportListener ( uint16_t  port,
std::shared_ptr< ICv2xTxStatusReportListener listener,
telux::common::ResponseCallback  cb 
)
pure virtual

Registers a listener for Tx status report.

Parameters
[in]port- Set this value to the port number of registered Tx Flow if user wants to receive Tx status report associated with its own Tx flow. If user wants to receive Tx status report associated with all Tx flows in system, set this value to 0.
[in]listener- Listener that implements ICv2xTxStatusReportListener interface.
[in]cb- Callback that is invoked when the registration of CV2X Tx status report is complete.
virtual telux::common::Status telux::cv2x::ICv2xRadio::deregisterTxStatusReportListener ( uint16_t  port,
telux::common::ResponseCallback  cb 
)
pure virtual

Deregisters a listener for Tx status report.

Parameters
[in]port- Port number of previously registered ICv2xTxStatusReportListener that is to be deregistered. If the listener is registered with port number 0, set this value to 0 to deregister the listener.
[in]cb- Callback that is invoked when the deregistration of CV2X Tx status report is complete.
virtual telux::common::Status telux::cv2x::ICv2xRadio::setGlobalIPInfo ( const IPv6AddrType ipv6Addr,
common::ResponseCallback  cb 
)
pure virtual

Set CV2X global IP address for the IP interface.

Use case and Precondition: OBU: Registers a TX/RX NON IP flow for receiving the signed WSA/WRA for IP session initiation; Once receives the IP prefix in the WDS/WRA from RSU, call this method.

RSU: Specifies its own global prefix via this method, and creates/composes WSA/WRA advertising the IP configs.

Parameters
[in]ipv6Addr- CV2X global IP address.
[in]cb- Callback that is invoked when set the global IP address complete. This may be null.
Returns
SUCCESS if no error occurred.
virtual telux::common::Status telux::cv2x::ICv2xRadio::setGlobalIPUnicastRoutingInfo ( const GlobalIPUnicastRoutingInfo destL2Addr,
common::ResponseCallback  cb 
)
pure virtual

Set CV2X IP interface global IP unicast routing information.

Use case and Precondition: OBU: Registers a TX/RX NON IP flow for receiving the signed WSA/WRA for IP session initiation; Once receives the IP prefix in the WSA/WRA from RSU, call the setGlobalIPInfo method to update the ip interface with global IP; Now call this method to set the routing information with dest L2 addr negotiated in WSA/WRA.

RSU: Specifies its own global prefix via setGlobalIPInfo, and creates/composes WSA/WRA advertising the IP configs; Now set routing information of its own via this method.

Parameters
[in]destL2Addr- CV2X destination L2 address for unicast routing purpose.
[in]cb- Callback that is invoked when set global IP unicast routing information complete. This may be null.
Returns
SUCCESS if no error occurred.
class telux::cv2x::ICv2xRadioListener

Listeners for Cv2xRadio must implement this interface.

Public Member Functions

virtual void onStatusChanged (Cv2xStatus status)
 
virtual void onStatusChanged (Cv2xStatusEx status)
 
virtual void onL2AddrChanged (uint32_t newL2Address)
 
virtual void onSpsOffsetChanged (int spsId, MacDetails details)
 
virtual void onSpsSchedulingChanged (const SpsSchedulingInfo &schedulingInfo)
 
virtual void onCapabilitiesChanged (const Cv2xRadioCapabilities &capabilities)
 
virtual ~ICv2xRadioListener ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xRadioListener::~ICv2xRadioListener ( )
virtual

Destructor for ICv2xRadioListener

Member Function Documentation

virtual void telux::cv2x::ICv2xRadioListener::onStatusChanged ( Cv2xStatus  status)
virtual

Called when the status of the CV2X radio has changed.

Parameters
[in]status- CV2X radio status.
Deprecated:
use onStatusChanged in Cv2xListener
virtual void telux::cv2x::ICv2xRadioListener::onStatusChanged ( Cv2xStatusEx  status)
virtual

Called when the status of the CV2X radio has changed.

Parameters
[in]status- CV2X radio status.
Deprecated:
use onStatusChanged in Cv2xListener
virtual void telux::cv2x::ICv2xRadioListener::onL2AddrChanged ( uint32_t  newL2Address)
virtual

Called when the L2 Address has changed.

Parameters
[in]newL2Address- The new L2 address.
virtual void telux::cv2x::ICv2xRadioListener::onSpsOffsetChanged ( int  spsId,
MacDetails  details 
)
virtual

Called when SPS offset has changed.

Parameters
[in]spsId- SPS Id of the SPS flow
[in]details- new SPS MAC PHY details.
Deprecated:
use onSpsSchedulingChanged
virtual void telux::cv2x::ICv2xRadioListener::onSpsSchedulingChanged ( const SpsSchedulingInfo schedulingInfo)
virtual

Called when SPS scheduling has changed.

Parameters
[in]schedulingInfo- SPS scheduling information .
virtual void telux::cv2x::ICv2xRadioListener::onCapabilitiesChanged ( const Cv2xRadioCapabilities capabilities)
virtual

Called when Cv2x radio capabilities have changed.

Parameters
[in]capabilities- Capabilities of the CV2X radio .
class telux::cv2x::ICv2xRadioManager

Cv2xRadioManager manages instances of Cv2xRadio.

Public Member Functions

virtual bool isReady ()=0
 
virtual std::future< bool > onReady ()=0
 
virtual telux::common::ServiceStatus getServiceStatus ()=0
 
virtual std::shared_ptr< ICv2xRadiogetCv2xRadio (TrafficCategory category)=0
 
virtual telux::common::Status startCv2x (StartCv2xCallback cb)=0
 
virtual telux::common::Status stopCv2x (StopCv2xCallback cb)=0
 
virtual telux::common::Status requestCv2xStatus (RequestCv2xStatusCallback cb)=0
 
virtual telux::common::Status requestCv2xStatus (RequestCv2xStatusCallbackEx cb)=0
 
virtual telux::common::Status registerListener (std::weak_ptr< ICv2xListener > listener)=0
 
virtual telux::common::Status deregisterListener (std::weak_ptr< ICv2xListener > listener)=0
 
virtual telux::common::Status updateConfiguration (const std::string &configFilePath, UpdateConfigurationCallback cb)=0
 
virtual telux::common::Status setPeakTxPower (int8_t txPower, common::ResponseCallback cb)=0
 
virtual telux::common::Status setL2Filters (const std::vector< L2FilterInfo > &filterList, common::ResponseCallback cb)=0
 
virtual telux::common::Status removeL2Filters (const std::vector< uint32_t > &l2IdList, common::ResponseCallback cb)=0
 
virtual ~ICv2xRadioManager ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xRadioManager::~ICv2xRadioManager ( )
virtual

Member Function Documentation

virtual bool telux::cv2x::ICv2xRadioManager::isReady ( )
pure virtual

Checks if the Cv2x Radio Manager is ready.

Returns
True if Cv2x Radio Manager is ready for service, otherwise returns false.
Deprecated:
use getServiceStatus instead
virtual std::future<bool> telux::cv2x::ICv2xRadioManager::onReady ( )
pure virtual

Wait for Cv2x Radio Manager to be ready.

Returns
A future that caller can wait on to be notified when Cv2x Radio Manager is ready.
Deprecated:
the readiness can be notified via the callback passed to Cv2xFactory::getCv2xRadioManager.
virtual telux::common::ServiceStatus telux::cv2x::ICv2xRadioManager::getServiceStatus ( )
pure virtual

This status indicates whether the Cv2xRadioManager is in a usable state.

Returns
SERVICE_AVAILABLE - If cv2x radio manager is ready for service. SERVICE_UNAVAILABLE - If cv2x radio manager is temporarily unavailable. SERVICE_FAILED - If cv2x radio manager encountered an irrecoverable failure.
Note
Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.
virtual std::shared_ptr<ICv2xRadio> telux::cv2x::ICv2xRadioManager::getCv2xRadio ( TrafficCategory  category)
pure virtual

Get Cv2xRadio instance

Parameters
[in]category- Specifies the category of the client application. This field is currently unused.
Returns
Reference to Cv2xRadio interface that corresponds to the Cv2x Traffic Category specified.
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::startCv2x ( StartCv2xCallback  cb)
pure virtual

Put modem into CV2X mode.

Parameters
[in]cb- Callback that is invoked when Cv2x mode is started
Returns
SUCCESS on success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::stopCv2x ( StopCv2xCallback  cb)
pure virtual

Take modem outo of CV2X mode

Parameters
[in]cb- Callback that is invoked when Cv2x mode is stopped
Returns
SUCCESS on success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::requestCv2xStatus ( RequestCv2xStatusCallback  cb)
pure virtual

request CV2X status from modem

Parameters
[in]cb- Callback that is invoked when Cv2x status is retrieved
Returns
SUCCESS on success. Error status otherwise.
Deprecated:
use requestCv2xStatus(RequestCv2xCalbackEx)
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::requestCv2xStatus ( RequestCv2xStatusCallbackEx  cb)
pure virtual

request CV2X status from modem

Parameters
[in]cb- Callback that is invoked when Cv2x status is retrieved
Returns
SUCCESS on success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::registerListener ( std::weak_ptr< ICv2xListener listener)
pure virtual

Registers a listener for this manager.

Parameters
[in]listener- Listener that implements Cv2xListener interface.
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::deregisterListener ( std::weak_ptr< ICv2xListener listener)
pure virtual

Deregisters a Cv2xListener for this manager.

Parameters
[in]listener- Previously registered CvListener that is to be deregistered.
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::updateConfiguration ( const std::string &  configFilePath,
UpdateConfigurationCallback  cb 
)
pure virtual

Updates CV2X configuration. Requires CV2X TX/RX radio status be Inactive. If CV2X radio status is Active or Suspended, call stopCv2x before updateConfiguration.

Parameters
[in]configFilePath- Path to config file.
[in]cb- Callback that is invoked when the send is complete. This may be null.
Deprecated:
Use ICv2xConfig instead
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::setPeakTxPower ( int8_t  txPower,
common::ResponseCallback  cb 
)
pure virtual

Set RF peak cv2x transmit power. This affects the power for all existing flows and for any flow created int the future

Parameters
[in]txPower- Desired global Cv2x peak tx power in dbm
[in]cb- Callback that is invoked when Cv2x peak tx power is set
Returns
SUCCESS on success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::setL2Filters ( const std::vector< L2FilterInfo > &  filterList,
common::ResponseCallback  cb 
)
pure virtual

Request to install remote UE src L2 filters. This affects receiving of the UEs' packets in specified period with specified PPPP

Parameters
[in]filterList- remote UE src L2 Id, filter duration and PPPP list, max size 50
[in]cb- Callback that is invoked when the request is sent
Returns
SUCCESS on success. Error status otherwise.
virtual telux::common::Status telux::cv2x::ICv2xRadioManager::removeL2Filters ( const std::vector< uint32_t > &  l2IdList,
common::ResponseCallback  cb 
)
pure virtual

Remove the previously installed filters matching src L2 address list. Hence forth this would allow reception of packets from specified UE's

Parameters
[in]l2IdList- remote UE src L2 Id list, max size 50
[in]cb- Callback that is invoked when the request is sent
Returns
SUCCESS on success. Error status otherwise.
struct telux::cv2x::SocketInfo

Encapsulates parameters of a CV2X socket.

Used in createCv2xTcpSocket.

Data Fields
uint32_t serviceId

V2X service ID bound to the socket.

uint16_t localPort

Local port number of the socket used for binding.

struct telux::cv2x::Cv2xStatus

Encapsulates status of CV2X radio.

Used in Cv2xRadioManager:requestV2xStatus and Cv2xRadioListener.

Data Fields
Cv2xStatusType rxStatus

RX status

Cv2xStatusType txStatus

TX status

Cv2xCauseType rxCause

RX cause of failure

Cv2xCauseType txCause

TX cause of failure

uint8_t cbrValue

Channel Busy Ratio

bool cbrValueValid

CBR value is valid

struct telux::cv2x::Cv2xPoolStatus

Encapsulates status for single pool.

Used in Cv2xStatusEx.

Data Fields
uint8_t poolId

pool ID

Cv2xStatus status

status

struct telux::cv2x::Cv2xStatusEx

Encapsulates status of CV2X radio and per pool status.

Used in Cv2xRadioManager:requestV2xStatus and Cv2xRadioListener.

Data Fields
Cv2xStatus status

Overall Cv2x status

vector< Cv2xPoolStatus > poolStatus

Multi pool status vector

bool timeUncertaintyValid

Time uncertainty value is valid

float timeUncertainty

Time uncertainty value in milleseconds

struct telux::cv2x::TxPoolIdInfo

Contains minimum and maximum frequency for a given TX pool ID. Multiple TX Pools allow the same radio and overall frequency range to be shared for multiple types of traffic like V2V and V2X. Each pool ID and frequency range corresponds to a certain type of traffic.

Used in Cv2xRadioCapabilities

Data Fields
uint8_t poolId

TX pool ID.

uint16_t minFreq

Minimum frequency in MHz.

uint16_t maxFreq

Maximum frequency in MHz.

struct telux::cv2x::EventFlowInfo

Contains event flow configuration parameters.

Used in createTxEventFlow

Data Fields
bool autoRetransEnabledValid

Set to true if autoRetransEnabled field is specified. If false, the system will use the default setting.

bool autoRetransEnabled

Used to enable automatic-retransmissions.

bool peakTxPowerValid

Set to true if peakTxPower is used. If false, the system will use the default setting.

int32_t peakTxPower

Max Tx power setting in dBm.

bool mcsIndexValid

Set to true if mcsIndex is used. If false, the system will use its default setting.

uint8_t mcsIndex

Modulation and Coding Scheme Index to use.

bool txPoolIdValid

Set to true if txPoolId is used. If false, the system will use its default setting.

uint8_t txPoolId

Transmission Pool ID.

bool isUnicast

Set to true if isUnicast flow. If false, Non-Unicast flow will be created. Note: Unicast flows ignore subscribed Service Ids

struct telux::cv2x::SpsFlowInfo

Used to request the QoS bandwidth contract, implemented in PC5 3GPP V2X radio as a Semi Persistent Flow (SPS).

The underlying radio providing the interface might support periodicities of various granularity in 100ms integer multiples (e.g. 200ms, 300ms).

Used in txSpsCreateAndBindSock and changeSpsFlowInfo

Data Fields
Priority priority

Specifies one of the 3GPP levels of Priority for the traffic that is pre-reserved on the SPS flow. Default is PRIORITY_2.

Use getCapabilities() to discover the supported priority levels. : periodicity, Use new periodicityMs instead

Periodicity periodicity
uint64_t periodicityMs

This is the new interface to specify periodicity in milliseconds for SpsFlowInfo. Enum Periodicity is deprecated and will be removed in future release.Bandwidth-reserved periodicity interval in interval in milliseconds.

There are limits on which intervals the underlying radio supports. Use getCapabilities() to discover minPeriodicityMultiplierMs and maximumPeriodicityMs.

uint32_t nbytesReserved

Number of bytes of TX bandwidth that are sent every periodicity interval.

bool autoRetransEnabledValid

Set to true if autoRetransEnabled field is specified. If false, the system will use the default setting.

bool autoRetransEnabled

Used to enable automatic-retransmissions.

bool peakTxPowerValid

Set to true if peakTxPower is used. If false, the system will use the default setting.

int32_t peakTxPower

Max Tx power setting in dBm.

bool mcsIndexValid

Set to true if mcsIndex is used. If false, the system will use its default setting.

uint8_t mcsIndex

Modulation and Coding Scheme Index to use.

bool txPoolIdValid

Set to true if txPoolId is used. If false, the system will use its default setting.

uint8_t txPoolId

Transmission Pool ID.

struct telux::cv2x::Cv2xRadioCapabilities

Contains capabilities of the Cv2xRadio.

Used in requestCapabilities and onCapabilitiesChanged

Data Fields
uint32_t linkIpMtuBytes

Maximum data payload length (in bytes) of a packet supported by the IP Radio interface.

uint32_t linkNonIpMtuBytes

Maximum data payload length (in bytes) of a packet supported by the non-IP Radio interface.

RadioConcurrencyMode maxSupportedConcurrency

Indicates whether this interface supports concurrent WWAN with V2X (PC5).

uint16_t nonIpTxPayloadOffsetBytes

Byte offset in a non-IP Tx packet before the actual payload begins.

uint16_t nonIpRxPayloadOffsetBytes

Byte offset in a non-IP Rx packet before the actual payload begins. : periodicitiesSupported, Use new periodicities instead

bitset< 8 > periodicitiesSupported
vector< uint64_t > periodicities

Specifies the periodicities supported

uint8_t maxNumAutoRetransmissions

Least frequent bandwidth periodicity that is supported. Above this value, use event-driven periodic messages of a period larger than this value.

uint8_t layer2MacAddressSize

Size of the L2 MAC address.

Different Radio Access Technologies have different-sized L2 MAC addresses: 802.11 has 6 bytes, whereas 3GPP PC5 has only 3 bytes.

Because a randomized MAC address comes from an HSM with good pseudo random entropy, higher layers must know how many bytes of the MAC address to generate.

bitset< 8 > prioritiesSupported

Bit set of different priority levels supported by this Cv2xRadio. Refer to Priority

uint16_t maxNumSpsFlows

Maximum number of supported SPS reservations.

uint16_t maxNumNonSpsFlows

Maximum number of supported event flows (non-SPS ports).

int32_t maxTxPower

Maximum supported transmission power.

int32_t minTxPower

Minimum supported transmission power.

vector< TxPoolIdInfo > txPoolIdsSupported

Vector of supported transmission pool IDs.

uint8_t isUnicastSupported

Non zero value if UDP event unicast is supported.

struct telux::cv2x::MacDetails

Contains MAC information that is reported from the actual MAC SPS in the radio. The offsets can periodically change on any given transmission report.

Data Fields
uint32_t periodicityInUseNs

Actual transmission interval period (in nanoseconds) scheduled relative to 1PP 0:00.00 time

uint16_t currentlyReservedPeriodicBytes

Actual number of bytes currently reserved at the MAC layer. This number can be slightly larger than original request.

uint32_t txReservationOffsetNs

Actual offset, from a 1PPS pulse and TX flow periodicity, that the MAC selected and is using for the transmit reservation. If the data goes to the radio with enough time, it can be transmitted on the medium in the next immediately scheduled slot.

struct telux::cv2x::SpsSchedulingInfo

Contains SPS packet scheduling information that is reported from the radio.

Used in onSpsSchedulingChanged

Data Fields
uint8_t spsId

SPS ID

uint64_t utcTime

Absolute UTC start time of next selected grant in nanoseconds.

uint32_t periodicity

Periodicity of the grant in milliseconds.

struct telux::cv2x::TrustedUEInfo

Contains time confidence, position confidence, and propogation delay for a trusted UE.

Used in TrustedUEInfo

Data Fields
uint32_t sourceL2Id

Trusted Source L2 ID

float timeUncertainty

Time uncertainty value in milliseconds.

uint16_t timeConfidenceLevel
Deprecated:
Use timeUncertainty Time confidence level. Range from 0 to 127 with 0 being invalid/unavailable and 127 being the most confident.
uint16_t positionConfidenceLevel

Position confidence level. Range from 0 to 127 with 0 being invalid/unavailable and 127 being the most confident.

uint32_t propagationDelay

Propagation delay in microseconds.

struct telux::cv2x::TrustedUEInfoList

Contains list of malicious UE source L2 IDs. Contains list of trusted UE source L2 IDs and associated confidence values.

Used in updateTrustedUEList

Data Fields
bool maliciousIdsValid

Malicious remote UE sources are valid.

vector< uint32_t > maliciousIds

Malicious remote UE source L2 IDs.

bool trustedUEsValid

Trusted remote UE sources are valid.

vector< TrustedUEInfo > trustedUEs

Trusted remote UE sources.

struct telux::cv2x::IPv6Address

Contains IPv6 address.

Used in DataSessionSettings

Data Fields
uint8_t addr[16]
struct telux::cv2x::DataSessionSettings

Contains packet data session settings.

Used in requestDataSessionSettings

Data Fields
bool mtuValid

Set to true if mtu is valid.

uint32_t mtu

MTU size.

bool ipv6AddrValid

Set to true if ipv6 address is valid.

IPv6Address ipv6Addr

IPv6 address.

struct telux::cv2x::ConfigEventInfo

Information about any update to a CV2X config file.

Used in onConfigFileChanged

Data Fields
ConfigSourceType source

The type of the V2X config file.

ConfigEvent event

V2X config event.

struct telux::cv2x::L2FilterInfo

Contains remote UE source L2 ID that modem will drop on Rx.

Used in setL2Filters

Data Fields
uint32_t srcL2Id

< remote UE L2 MAC addr to filter. Duration, in millisec (resolution 100 msec). 0 means delete the filter

uint32_t durationMs

/* Proximity service per packet priority (PPPP), packets with priority above this value will be dropped. Range 0-7, 0 mean all priority pkts from that UE would be dropped

uint8_t pppp
struct telux::cv2x::RFTxInfo

Information of Tx chains retrieved from RF per transport block.

Used in TxStatusReport

Data Fields
RFTxStatus status

The type of Tx chain status.

int32_t power

Tx power of transmitted TB in dBm*10 format, invalid value is -700.

struct telux::cv2x::TxStatusReport

Information on Tx status of a V2X transport block that is reported from low layer. A V2X packet might trigger multiple reports because of the segmentaion and re-Tx in low layer. If a transport block is dropped in low layer, no report will be triggered for that transport block.

Used in onTxStatusReport

Data Fields
RFTxInfo rfInfo[MAX_ANTENNAS_SUPPORTED]

RF information of one or two Tx chains.

uint8_t numRb

Number of resource blocks used for the transport block.

uint8_t startRb

Start resource block index used for the transport block.

uint8_t mcs

Modulation and coding scheme used for the transport block that is defined in 3GPP TS 36.213.

uint8_t segNum

Total number of segments of a V2X packet.

SegmentType segType

Segment type of the transport block.

TxType txType

Indication of new Tx or re-Tx of the transport block.

uint16_t otaTiming

OTA timing in format of system frame number*10 + subframe number.

uint16_t port

Port number that can be used to link the report to a specific Tx flow which has the same source port number.

struct telux::cv2x::IPv6AddrType

Encapsulates ipv6 prefix length in bits and ipv6 prefix.

Used in setGlobalIPInfo.

Data Fields
uint8_t prefixLen

< ipv6 address prefix length in bits, range [64, 128]

uint8_t ipv6Addr[CV2X_IPV6_ADDR_ARRAY_LEN]
struct telux::cv2x::GlobalIPUnicastRoutingInfo

Encapsulates destination L2 address.

Used in setGlobalIPUnicastRoutingInfo.

Data Fields
uint8_t destMacAddr[CV2X_MAC_ADDR_LEN]

< Array that stores CV2X L2 MAC address at the last 3 bytes in big endian order

struct telux::cv2x::RxPacketMetaDataReport

Contains the detailed meta data report of a packet received.

The meta data report comes from the same data interface as the packet itself, it consist of RF RSSI (received signal strength indicator) status, 32-bit SCI Format 1 (3GPP TS 36.213, section 14.1), packet delay estimation, L2 destination ID, and the resource blocks used for the packet's transmission: subframe, subchannel index.

The meta data is always received after the successful receipt of the corresponding packet. In order to associate the meta data report with the specific packet, the sfn and subChannelIndex should be present in the packet's payload and the meta data report, so the meta data report can be matched up to the packet.

There is no guarantee that all items listed above will be presented, metaDataMask need to be used for the validity. Use telux::cv2x::Cv2xRxMetaDataHelper::getRxMetaDataInfo to extract the meta data.

Data Fields
RxMetaDataValidity metaDataMask
uint16_t sfn
uint8_t subChannelIndex
uint8_t subChannelNum
int8_t prxRssi
int8_t drxRssi
uint32_t l2DestinationId
uint32_t sciFormat1Info
int32_t delayEstimation
class telux::cv2x::Cv2xRxMetaDataHelper

Static Public Member Functions

static telux::common::Status getRxMetaDataInfo (const uint8_t *payload, uint32_t payloadLength, size_t &metaDataLen, std::shared_ptr< std::vector< RxPacketMetaDataReport >> metaDatas)
 

Member Function Documentation

static telux::common::Status telux::cv2x::Cv2xRxMetaDataHelper::getRxMetaDataInfo ( const uint8_t *  payload,
uint32_t  payloadLength,
size_t &  metaDataLen,
std::shared_ptr< std::vector< RxPacketMetaDataReport >>  metaDatas 
)
static
class telux::cv2x::ICv2xRxSubscription

This class encapsulates a Cv2xRadio Rx Subscription. It contains the Rx socket associated with the subscription from which client applications can read data. This class is referenced in Cv2xRadio::createRxSubscription and Cv2xRadio::closeRxSubscription.

Public Member Functions

virtual uint32_t getSubscriptionId () const =0
 
virtual TrafficIpType getIpType () const =0
 
virtual int getSock () const =0
 
virtual struct sockaddr_in6 getSockAddr () const =0
 
virtual uint16_t getPortNum () const =0
 
virtual std::shared_ptr< std::vector< uint32_t > > getServiceIDList () const =0
 
virtual void setServiceIDList (const std::shared_ptr< std::vector< uint32_t >> idList)=0
 
virtual ~ICv2xRxSubscription ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xRxSubscription::~ICv2xRxSubscription ( )
virtual

Member Function Documentation

virtual uint32_t telux::cv2x::ICv2xRxSubscription::getSubscriptionId ( ) const
pure virtual

Accessor for Rx subscription ID

Returns
subscription ID
virtual TrafficIpType telux::cv2x::ICv2xRxSubscription::getIpType ( ) const
pure virtual

Accessor for IP traffic type

Returns
The Rx subscriptions's IP traffic type (IP or NON-IP)
virtual int telux::cv2x::ICv2xRxSubscription::getSock ( ) const
pure virtual

Accessor for the socket file descriptor

Returns
The Rx subscriptions's socket fd.
virtual struct sockaddr_in6 telux::cv2x::ICv2xRxSubscription::getSockAddr ( ) const
pure virtual

Accessor for the socket address description

Returns
The Rx subscriptions's socket address
virtual uint16_t telux::cv2x::ICv2xRxSubscription::getPortNum ( ) const
pure virtual

Accessor for the subscriptions's port number

Returns
The Rx subscriptions's port num
virtual std::shared_ptr<std::vector<uint32_t> > telux::cv2x::ICv2xRxSubscription::getServiceIDList ( ) const
pure virtual

Get subscriptions's service ID list

Returns
The Rx subscriptions's service ID list
virtual void telux::cv2x::ICv2xRxSubscription::setServiceIDList ( const std::shared_ptr< std::vector< uint32_t >>  idList)
pure virtual

Set subscriptions's service ID list

Parameters
[in]idList- the subscriptions's service ID list
class telux::cv2x::ICv2xThrottleManagerListener

Listener class for getting filter rate update notification.

Public Member Functions

virtual void onFilterRateAdjustment (int rate)
 
virtual void onServiceStatusChange (telux::common::ServiceStatus status)
 
virtual ~ICv2xThrottleManagerListener ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xThrottleManagerListener::~ICv2xThrottleManagerListener ( )
virtual

Member Function Documentation

virtual void telux::cv2x::ICv2xThrottleManagerListener::onFilterRateAdjustment ( int  rate)
virtual

This API is invoked to advise the client to adjust the incoming message filtering rate by rate messages/second. If the rate is positive, it indicates the client to filter rate more messages/second If the rate is negative, it indicates the client to filter rate less messages/second

Parameters
[in]ratethe reported filter rate adjustment value.
Note
Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.
virtual void telux::cv2x::ICv2xThrottleManagerListener::onServiceStatusChange ( telux::common::ServiceStatus  status)
virtual

This API is invoked when the service status changes for example when a subsytem restart (SSR) occurs

Parameters
[in]status- ServiceStatus
Note
Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.
class telux::cv2x::ICv2xThrottleManager

ThrottleManager provides throttle manager client interface.

ThrottleManager provides APIs that allows applications to specify the incoming verification load on the system. This is used to make decisions on how to optimally use the resources available in the system. The API also provides feedback to clients on the suggested filtering that needs to be done when the incoming message verification rate exceeds the instantaneous system capacity.

Public Member Functions

virtual telux::common::ServiceStatus getServiceStatus ()=0
 
virtual telux::common::Status registerListener (std::weak_ptr< ICv2xThrottleManagerListener > listener)=0
 
virtual telux::common::Status deregisterListener (std::weak_ptr< ICv2xThrottleManagerListener > listener)=0
 
virtual telux::common::Status setVerificationLoad (int load, setVerificationLoadCallback cb)=0
 
virtual ~ICv2xThrottleManager ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xThrottleManager::~ICv2xThrottleManager ( )
virtual

Member Function Documentation

virtual telux::common::ServiceStatus telux::cv2x::ICv2xThrottleManager::getServiceStatus ( )
pure virtual

This status indicates whether the object is in a usable state.

Returns
SERVICE_AVAILABLE - If location manager is ready for service. SERVICE_UNAVAILABLE - If location manager is temporarily unavailable. SERVICE_FAILED - If location manager encountered an irrecoverable failure.
Note
Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::cv2x::ICv2xThrottleManager::registerListener ( std::weak_ptr< ICv2xThrottleManagerListener listener)
pure virtual

Registers a listener to receive the updated filer rate adjustment data.

Parameters
[in]listner- Listener that implement ICv2xThrottleManagerListener interface.
virtual telux::common::Status telux::cv2x::ICv2xThrottleManager::deregisterListener ( std::weak_ptr< ICv2xThrottleManagerListener listener)
pure virtual

Deregister a ICv2xThrottleManagerListener.

Parameters
[in]listener- Previously registered Cv2xThrottleManagerListener that is deregistered.
virtual telux::common::Status telux::cv2x::ICv2xThrottleManager::setVerificationLoad ( int  load,
setVerificationLoadCallback  cb 
)
pure virtual

Set current measured/average verification load.

Parameters
[in]load- current measured verification load(verification/second).
Note
Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.
class telux::cv2x::ICv2xTxFlow

This is class encapsulates a Cv2xRadio Tx flows. It contains the Tx socket associated with the flow through which client applications can send data. This class is referenced in Cv2xRadio::createTxSpsFlow, Cv2xRadio::createTxEventFlow, and Cv2xRadio::closeTxFlow

Public Member Functions

virtual uint32_t getFlowId () const =0
 
virtual TrafficIpType getIpType () const =0
 
virtual uint32_t getServiceId () const =0
 
virtual int getSock () const =0
 
virtual struct sockaddr_in6 getSockAddr () const =0
 
virtual uint16_t getPortNum () const =0
 
virtual ~ICv2xTxFlow ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xTxFlow::~ICv2xTxFlow ( )
virtual

Member Function Documentation

virtual uint32_t telux::cv2x::ICv2xTxFlow::getFlowId ( ) const
pure virtual

Accessor for flow ID. The flow ID should be unique within a process but will not be unique between processes.

Returns
flow ID
virtual TrafficIpType telux::cv2x::ICv2xTxFlow::getIpType ( ) const
pure virtual

Accessor for IP traffic type

Returns
The flow's IP traffic type (IP or NON-IP)
virtual uint32_t telux::cv2x::ICv2xTxFlow::getServiceId ( ) const
pure virtual

Accessor for service ID

Returns
The flow's Service ID.
virtual int telux::cv2x::ICv2xTxFlow::getSock ( ) const
pure virtual

Accessor for the socket file descriptor

Returns
The flow's socket fd.
virtual struct sockaddr_in6 telux::cv2x::ICv2xTxFlow::getSockAddr ( ) const
pure virtual

Accessor for the socket address description

Returns
The flow's socket address
virtual uint16_t telux::cv2x::ICv2xTxFlow::getPortNum ( ) const
pure virtual

Accessor for the flow's source port number

Returns
The flow's source port num
class telux::cv2x::ICv2xTxRxSocket

This is class encapsulates a Cv2xRadio socket for both Tx and Rx. It contains the socket through which client applications can send and receive data. This class is referenced in Cv2xRadio::createCv2xTcpSocket and Cv2xRadio::closeCv2xTcpSocket.

Public Member Functions

virtual uint32_t getId () const =0
 
virtual uint32_t getServiceId () const =0
 
virtual int getSocket () const =0
 
virtual struct sockaddr_in6 getSocketAddr () const =0
 
virtual uint16_t getPortNum () const =0
 
virtual ~ICv2xTxRxSocket ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xTxRxSocket::~ICv2xTxRxSocket ( )
virtual

Member Function Documentation

virtual uint32_t telux::cv2x::ICv2xTxRxSocket::getId ( ) const
pure virtual

Accessor for Cv2xRadio socket ID. The socket ID should be unique within a process but will not be unique between processes.

Returns
Cv2xRadio socket ID
virtual uint32_t telux::cv2x::ICv2xTxRxSocket::getServiceId ( ) const
pure virtual

Accessor for service ID

Returns
The Service ID bound to the socket.
virtual int telux::cv2x::ICv2xTxRxSocket::getSocket ( ) const
pure virtual

Accessor for the socket file descriptor

Returns
The socket fd.
virtual struct sockaddr_in6 telux::cv2x::ICv2xTxRxSocket::getSocketAddr ( ) const
pure virtual

Accessor for the socket address description

Returns
The socket address
virtual uint16_t telux::cv2x::ICv2xTxRxSocket::getPortNum ( ) const
pure virtual

Accessor for the local port number bound to the socket

Returns
The local port number
class telux::cv2x::ICv2xTxStatusReportListener

Listeners for CV2X Tx status report must implement this interface.

Public Member Functions

virtual void onTxStatusReport (const TxStatusReport &info)
 
virtual ~ICv2xTxStatusReportListener ()
 

Constructor & Destructor Documentation

virtual telux::cv2x::ICv2xTxStatusReportListener::~ICv2xTxStatusReportListener ( )
virtual

Member Function Documentation

virtual void telux::cv2x::ICv2xTxStatusReportListener::onTxStatusReport ( const TxStatusReport info)
virtual

Called when a CV2X transport block is transmitted in low layer if CV2X Tx status report has been enabled by calling setTxStatusReport.

Parameters
[in]info- Tx status of the transport block.
class telux::cv2x::Cv2xUtil

Cv2x utility class

Static Public Member Functions

static uint8_t priorityToTrafficClass (Priority priority)
 
static Priority TrafficClassToPriority (uint8_t trafficClass)
 

Member Function Documentation

static uint8_t telux::cv2x::Cv2xUtil::priorityToTrafficClass ( Priority  priority)
static

This function is called to convert cv2x flow priority to traffic class. The Traffic Class indicates class or priority of IPv6 packet. If congestion occurs then packets with least priority will be discarded(See RFC2460 section-7). The result of this method is to fill the IPv6 header traffic class field, it is usually called just before sending IPv6 packet.

Parameters
[in]priority- cv2x flow priority
Returns
uint8_t to indicate the result of traffic class
static Priority telux::cv2x::Cv2xUtil::TrafficClassToPriority ( uint8_t  trafficClass)
static

This function is called to convert IPv6 packet traffic class to cv2x flow priority. The Traffic Class indicates class or priority of IPv6 packet. If congestion occurs then packets with least priority will be discarded(See RFC2460 section-7). It is to get the corresponding cv2x flow priority of the received packets, which usually being called when a new IPv6 packet received.

Parameters
[in]trafficClass- class or priority of IPv6 packet(See RFC2460 section-7)
Returns
cv2x flow priority

Typedef Documentation

using telux::cv2x::RxMetaDataValidity = typedef uint32_t
using telux::cv2x::setVerificationLoadCallback = typedef std::function<void (telux::common::ErrorCode error)>

This function is called as a response to setVerificationLoad

Parameters
[in]error- SUCCESS if verification load was set successfully
  • SUCCESS
  • GENERIC_FAILURE

Enumeration Type Documentation

Defines CV2X Traffic Types.

Used in Cv2xRadioManager::getCv2xRadio

Enumerator
SAFETY_TYPE 

Safety message traffic category

NON_SAFETY_TYPE 

Non-safety message traffic category

Defines possible values for CV2X radio RX/TX status.

Used in Cv2xStatus

Enumerator
INACTIVE 

RX/TX is inactive

ACTIVE 

RX/TX is active

SUSPENDED 

RX/TX is suspended

UNKNOWN 

RX/TX status unknown

Defines possible values for cause of CV2X radio failure.

Used in Cv2xStatus

Enumerator
TIMING 

Timing is invalid

CONFIG 

Config is invalid

UE_MODE 

UE Mode is invalid

GEOPOLYGON 

Left current geopolygon

LPM 

Low Power Mode

UNKNOWN 

Cause is unknown

Defines CV2X traffic type in terms of IP or NON-IP.

Used in createRxSock, createTxSpsSock, and createTxEventSock

Enumerator
TRAFFIC_IP 

IP message traffic

TRAFFIC_NON_IP 

NON-IP message traffic

Defines CV2X modes of concurrency with cellular WWAN.

Used in Cv2xRadioCapabilities

Enumerator
WWAN_NONCONCURRENT 

No simultaneous WWAN + CV2X on this interface

WWAN_CONCURRENT 

Interface supports requests for concurrent WWAN + CV2X connections.

Defines CV2X status change events. The state can change in response to the loss of timing precision or a geofencing change.

Used in onStatusChanged in ICv2xRadioListener

Enumerator
CV2X_INACTIVE 
CV2X_ACTIVE 
TX_SUSPENDED 
TXRX_SUSPENDED 
enum telux::cv2x::Priority
strong

Range of supported priority levels, where a lower number means a higher priority. For example, 8 is the current 3GPP standard.

Used in Cv2xRadioCapabilities and SpsFlowInfo

Enumerator
MOST_URGENT 
PRIORITY_1 
PRIORITY_2 
PRIORITY_3 
PRIORITY_4 
PRIORITY_5 
PRIORITY_6 
PRIORITY_BACKGROUND 
PRIORITY_UNKNOWN 

Range of supported periodicities in milliseconds.

Used in Cv2xRadioCapabilities and SpsFlowInfo

: enum class not going to be supported in future releases. Clients should stop using this. Once a class has been marked as Deprecated, the class could be removed in future releases.

Enumerator
PERIODICITY_10MS 
PERIODICITY_20MS 
PERIODICITY_50MS 
PERIODICITY_100MS 
PERIODICITY_UNKNOWN 

V2X configuration source types listed in ascending order of priority. The system always uses the V2X configuration with the highest priority if multiple V2X configuration sources exist.

Used in ConfigEventInfo

Enumerator
UNKNOWN 

V2X config file source is unknown

PRECONFIG 

V2X config file source is preconfig

SIM_CARD 

V2X config file source is SIM card

OMA_DM 

V2X config file source is OMA-DM

Defines possible values for the events relevant to CV2X config file.

Used in ConfigEventInfo

Enumerator
CHANGED 

V2X config file is changed

EXPIRED 

V2X config file is expired

Fault detection of Tx chain that including PA and front end.

Used in RFTxInfo

Enumerator
INACTIVE 

The Tx chain is not working.

OPERATIONAL 

The Tx chain is operational.

FAULT 

Fault detected on the Tx chain.

Defines possible values for the segment type of a transport block.

Used in TxStatusReport

Enumerator
FIRST 

V2X packet is segmented, it's the first transport block.

LAST 

V2X packet is segmented, it's the last transport block.

MIDDLE 

V2X packet is segmented, it's a transport block between first and last.

ONLY_ONE 

V2X packet is not segmented, it's the only one transport block.

enum telux::cv2x::TxType
strong

Defines new Tx or re-Tx type relevant to a transport block.

Used in TxStatusReport

Enumerator
NEW_TX 

New Tx of the V2X transport block.

RE_TX 

Re-Tx of the V2X transport block.

Specify set of RX Meta data that contribute to received packet's meta data report. Used in RxPacketMetaDataReport

Enumerator
RX_SUBFRAME_NUMBER 

Bit mask to specify whether sfn is valid in RxPacketMetaDataReport Bit mask to specify whether subChannelIndex is valid in RxPacketMetaDataReport

RX_SUBCHANNEL_INDEX 

Bit mask to specify whether subChannelNum is valid in RxPacketMetaDataReport

RX_SUBCHANNEL_NUMBER 

Bit mask to specify whether rssi0 is valid in RxPacketMetaDataReport

RX_PRX_RSSI 

Bit mask to specify whether rssi1 is valid in RxPacketMetaDataReport

RX_DRX_RSSI 

Bit mask to specify whether l2DestinationId is valid in RxPacketMetaDataReport

RX_L2_DEST_ID 

Bit mask to specify whether sciFormat1Info is valid in RxPacketMetaDataReport

RX_SCI_FORMAT1 

Bit mask to specify whether delayEstimation is valid in RxPacketMetaDataReport

RX_DELAY_ESTIMATION 

Variable Documentation

constexpr uint8_t telux::cv2x::MAX_ANTENNAS_SUPPORTED = 2u

Defines Maximum number of antennas that is supported.

Used in TxStatusReport