Telematics SDK - Interface Specification
v1.11.0
|
Data Structures | |
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::Cv2xStatus |
struct | telux::cv2x::SpsFlowInfo |
struct | telux::cv2x::Cv2xRadioCapabilities |
struct | telux::cv2x::MacDetails |
class | telux::cv2x::ICv2xRxSubscription |
class | telux::cv2x::ICv2xTxFlow |
This section contains APIs related to Cellular-V2X operation.
class telux::cv2x::Cv2xFactory |
Cv2xFactory is the factory that creates the Cv2x Radio.
Public Member Functions | |
std::shared_ptr < ICv2xRadioManager > | getCv2xRadioManager () |
Static Public Member Functions | |
static Cv2xFactory & | getInstance () |
|
static |
Get Cv2xFactory instance
std::shared_ptr<ICv2xRadioManager> telux::cv2x::Cv2xFactory::getCv2xRadioManager | ( | ) |
Get Cv2xRadioManager instance.
class telux::cv2x::ICv2xRadio |
This is class encapsulates a Cv2xRadio interface.
Returned from getCv2xRadio in Cv2xFactory
|
virtual |
Destructor for ICv2xRadio
|
pure virtual |
Get the capabilities of this Cv2xRadio.
|
pure virtual |
Returns true if the radio interface has completed initialization.
|
pure virtual |
Returns a future that indicated if the radio interface is ready or if radio failed to initialize.
|
pure virtual |
Registers a listener for this Cv2xRadio.
[in] | listener | - Listener that implements Cv2xRadioListener interface. |
|
pure virtual |
Deregisters a listener from this Cv2xRadio.
[in] | listener | - Previously registered Cv2xRadioListener that is to be deregistered. |
|
pure virtual |
Creates and initializes a new Rx subscription which will be returned in the user-supplied callback.
[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. |
|
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.
[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. |
|
pure virtual |
Creates an event flow. An associated Tx socket will be created and initialized.
[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. |
|
pure virtual |
Closes the RxSubscription and frees resources (such as the Rx socket) associated with it.
[in] | rxSub | - RxSubscription to close |
[in] | cb | - Callback that is invoked when socket close is complete. This may be null. |
|
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.
[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. |
|
pure virtual |
Request to change TX SPS Flow reservation 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. |
|
pure virtual |
Request SPS flow info.
[in] | sock | - Tx SPS flow |
[in] | cb | - Callback that will be invoked and returns the SPS info. Must not be null. |
|
pure virtual |
Requests modem to change L2 info.
[in] | cb | - Callback that will be invoked and returns status. Must not be null. |
class telux::cv2x::ICv2xRadioListener |
Listeners for Cv2xRadio must implement this interface.
Public Member Functions | |
virtual void | onStatusChanged (Cv2xStatus status) |
virtual void | onL2AddrChanged (uint32_t newL2Address) |
virtual void | onSpsOffsetChanged (int spsId, MacDetails details) |
virtual | ~ICv2xRadioListener () |
|
virtual |
Destructor for ICv2xRadioListener
|
virtual |
Called when the status of the CV2X radio has changed.
[in] | status | - CV2X radio status. |
|
virtual |
Called when the L2 Address has changed.
[in] | newL2Address | - The new L2 address. |
|
virtual |
Called when SPS offset has changed.
[in] | spsId | - SPS Id of the SPS flow |
[in] | details | - new SPS MAC PHY details. |
class telux::cv2x::ICv2xRadioManager |
Cv2xRadioManager manages instances of Cv2xRadio.
Public Member Functions | |
virtual std::shared_ptr < ICv2xRadio > | getCv2xRadio (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 | updateConfiguration (const std::string &configFilePath, UpdateConfigurationCallback cb)=0 |
virtual | ~ICv2xRadioManager () |
|
virtual |
|
pure virtual |
Get Cv2xRadio instance
[in] | category | - Specifies the category of the client application. This field is currently unused. |
|
pure virtual |
Put modem into CV2X mode.
[in] | cb | - Callback that is invoked when Cv2x mode is started |
|
pure virtual |
Take modem outo of CV2X mode
[in] | cb | - Callback that is invoked when Cv2x mode is stopped |
|
pure virtual |
request CV2X status from modem
[in] | cb | - Callback that is invoked when Cv2x status is retrieved |
|
pure virtual |
Updates CV2X configuration
[in] | configFilePath | - Path to config file. |
[in] | cb | - Callback that is invoked when the send is complete. This may be null. |
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::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 | periodicity |
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. |
bool | mcsIndexValid |
Set to true if mcsIndex is used. If false, the system will use its default setting. |
uint8_t | mcsIndex |
struct telux::cv2x::Cv2xRadioCapabilities |
Capabilities of the Cv2xRadio.
Returned from getCapabilities
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. |
bitset< 8 > | periodicitiesSupported |
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). |
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.
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 | ~ICv2xRxSubscription () |
|
virtual |
|
pure virtual |
Accessor for Rx subscription ID
|
pure virtual |
Accessor for IP traffic type
|
pure virtual |
Accessor for the socket file descriptor
|
pure virtual |
Accessor for the socket address description
|
pure virtual |
Accessor for the subscriptions's port number
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 () |
|
virtual |
|
pure virtual |
Accessor for flow ID. The flow ID should be unique within a process but will not be unique between processes.
|
pure virtual |
Accessor for IP traffic type
|
pure virtual |
Accessor for service ID
|
pure virtual |
Accessor for the socket file descriptor
|
pure virtual |
Accessor for the socket address description
|
pure virtual |
Accessor for the flow's source port number
|
strong |
|
strong |
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 |
|
strong |
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 |
UNKNOWN |
Cause is unknown |
|
strong |
|
strong |
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. |
|
strong |
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 |
|
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 |
|
strong |
Range of supported periodicities in milliseconds.
Used in Cv2xRadioCapabilities and SpsFlowInfo
Enumerator | |
---|---|
PERIODICITY_10MS | |
PERIODICITY_20MS | |
PERIODICITY_50MS | |
PERIODICITY_100MS | |
PERIODICITY_UNKNOWN |