Telematics SDK - API Reference
v1.64.0
|
Typedefs | |
using | telux::cv2x::RxMetaDataValidity = uint32_t |
using | telux::cv2x::setVerificationLoadCallback = std::function< void(telux::common::ErrorCode error)> |
using | telux::cv2x::prop::CongestionControlMap = std::map< uint64_t, CongestionControlData > |
Functions | |
void | telux::cv2x::prop::printPosition (Position &position) |
void | telux::cv2x::prop::printChannelData (ChannelData &channelData) |
void | telux::cv2x::prop::printTrackingErrorData (TrackingErrorData &teData) |
void | telux::cv2x::prop::printSPSEnhanceConfig (SPSEnhanceConfig &spsEnhanceConfig) |
void | telux::cv2x::prop::printDensityConfig (DensityConfig &densConfig) |
void | telux::cv2x::prop::printPERConfig (PERConfig &perConfig) |
void | telux::cv2x::prop::printCQIConfig (CQIConfig &cqiConfig) |
void | telux::cv2x::prop::printCBPConfig (CBPConfig &cbpConfig) |
void | telux::cv2x::prop::printTEConfig (TEConfig &teConfig) |
void | telux::cv2x::prop::printITTConfig (ITTConfig &ittConfig) |
void | telux::cv2x::prop::printPowerConfig (PowerConfig &powerConfig) |
Variables | |
constexpr uint8_t | telux::cv2x::MAX_ANTENNAS_SUPPORTED = 2u |
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.
class telux::cv2x::ICv2xConfigListener |
Listeners for ICv2xConfig must implement this interface.
Public Member Functions | |
virtual void | onConfigChanged (const ConfigEventInfo &info) |
virtual | ~ICv2xConfigListener () |
|
virtual |
Destructor for ICv2xConfigListener
|
virtual |
Called when CV2X configuration has changed in the below scenarios:
[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 |
|
virtual |
|
pure virtual |
Checks if the Cv2x Config Manager is ready.
|
pure virtual |
Wait for Cv2x Config to be ready.
|
pure virtual |
|
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.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[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. |
|
pure virtual |
Retrieve active CV2X configuration. The calling application should have write access to the path specified by configFilePath. And if the v2x configuration retrieval request succeed, the file specified by configFilePath will be created and filled with the configuration contents. Otherwise, no file will be created.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[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. |
|
pure virtual |
Registers a listener for this ICv2xConfig.
[in] | listener | - Listener that implements ICv2xConfigListener interface. |
|
pure virtual |
Deregisters a listener for this ICv2xConfig.
[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 | |
virtual std::shared_ptr< ICv2xRadioManager > | getCv2xRadioManager (telux::common::InitResponseCb cb=nullptr) |
virtual std::shared_ptr< ICv2xConfig > | getCv2xConfig (telux::common::InitResponseCb cb=nullptr) |
virtual std::shared_ptr< ICv2xThrottleManager > | getCv2xThrottleManager (telux::common::InitResponseCb cb=nullptr) |
Static Public Member Functions | |
static Cv2xFactory & | getInstance () |
|
static |
Get Cv2xFactory instance
|
virtual |
Get Cv2xRadioManager instance.
[in] | cb | - Optional callback to get Cv2xRadioManager initialization status |
|
virtual |
Get Cv2xConfig instance.
[in] | cb | - Optional callback to get Cv2xConfig initialization status |
|
virtual |
Get Cv2xThrottleManager instance.
class telux::cv2x::ICv2xRadio |
This is class encapsulates a Cv2xRadio interface.
Returned from ICv2xRadioManager::getCv2xRadio
|
virtual |
Destructor for ICv2xRadio
|
pure virtual |
Returns true if the radio interface has completed initialization.
|
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. |
[in] | idList | - Service ID list to subscribe, optional parameter using nullptr by default. Subscribe wildcard if this parameter is set to nullptr. |
On platforms with access control enabled, the caller needs to have TELUX_CV2X_FLOW_OPS permission to successfully invoke this API.
|
pure virtual |
|
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.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_INFO permission to successfully invoke this API.
[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. |
|
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.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_FLOW_OPS permission to successfully invoke this API.
[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] | spsSrcPort | - 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.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_FLOW_OPS permission to successfully invoke this API.
[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 |
Creates an event flow. An associated Tx socket will be created and initialized.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_FLOW_OPS permission to successfully invoke this API.
[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. |
|
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.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_FLOW_OPS permission to successfully invoke this API.
[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] | txFlow | - Tx SPS flow |
[in] | cb | - Callback that will be invoked and returns the SPS info. Must not be null. |
|
pure virtual |
Request to change TX Event Flow reservation parameters.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_FLOW_OPS permission to successfully invoke this API.
[in] | txFlow | - Tx Event flow |
[in] | flowInfo | - Desired Event flow parameters |
[in] | cb | - Callback that is invoked upon parameter change. This may be null. |
|
pure virtual |
Request modem Cv2x capability information.
[in] | cb | - Callback that will be invoked and returns the capability info. Must not be null. |
|
pure virtual |
Request data session settings currently in use.
[in] | cb | - Callback that will be invoked and returns the data session settings. Must not be null. |
|
pure virtual |
Requests modem to change L2 info.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[in] | cb | - Callback that will be invoked and returns status. Must not be null. |
|
pure virtual |
Send request to modem to update the list of malicious UE source IDs and trusted UE source IDs with corresponding confidence information.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to invoke this API successf
[in] | infoList | - Trusted and malicious UE information list |
[in] | cb | - Callback that will be invoked and returns status. Must not be null. |
|
pure virtual |
Get interface name based on ipType.
ipType | - IP traffic type (IP or NON-IP) |
|
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().
On platforms with access control enabled, the caller needs to have TELUX_CV2X_FLOW_OPS permission to successfully invoke this API.
[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. |
|
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).
On platforms with access control enabled, the caller needs to have TELUX_CV2X_FLOW_OPS permission to successfully invoke this API.
[in] | sock | - CV2X TCP socket to close. |
[in] | cb | - Callback that is invoked when CV2X TCP socket close is complete. This may be null. |
|
pure virtual |
Registers a listener for Tx status report.
[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. |
|
pure virtual |
Deregisters a listener for Tx status report.
[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. |
|
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.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[in] | ipv6Addr | - CV2X global IP address. |
[in] | cb | - Callback that is invoked when set the global IP address complete. This may be null. |
|
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.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[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. |
|
pure virtual |
Get the capabilities of this Cv2xRadio.
|
pure virtual |
Returns true if the radio interface was successfully initialized.
|
pure virtual |
Returns a future that indicated if the radio interface is ready or if radio failed to initialize.
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 void | onMacAddressCloneAttack (const bool detected) |
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 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. |
|
virtual |
Called when SPS scheduling has changed.
[in] | schedulingInfo | - SPS scheduling information . |
|
virtual |
Called when Cv2x radio capabilities have changed.
[in] | capabilities | - Capabilities of the CV2X radio . |
|
virtual |
Called when a MAC address cloning attack is detected or cleared. MAC address collisions should be extremely rare. If they are happening frequently within a detetion period, it will be identified as a MAC address cloning attack and users will be notified through this API. This API is also invoked when the attack is cleared. The collision count threshold and the detection period for MAC address cloning attack detection are configurable by setting parameter cv2x.collision.threshold and cv2x.collision.window.size in the file /etc/tel.conf on device.
[out] | detected | - True when a MAC address cloning attack is detected. False when a MAC address cloning attack is cleared. |
class telux::cv2x::ICv2xRadioManager |
Cv2xRadioManager manages instances of Cv2xRadio.
|
virtual |
|
pure virtual |
Checks if the Cv2x Radio Manager is ready.
|
pure virtual |
Wait for Cv2x Radio Manager to be ready.
|
pure virtual |
|
pure virtual |
Get Cv2xRadio instance
[in] | category | - Specifies the category of the client application. This field is currently unused. |
[in] | cb | - Optional callback to get Cv2xRadio initialization status |
|
pure virtual |
Put modem into CV2X mode.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_OPS permission to successfully invoke this API.
[in] | cb | - Callback that is invoked when Cv2x mode is started |
|
pure virtual |
Take modem outo of CV2X mode
On platforms with access control enabled, the caller needs to have TELUX_CV2X_OPS permission to successfully invoke this API.
[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 |
request CV2X status from modem
[in] | cb | - Callback that is invoked when Cv2x status is retrieved |
|
pure virtual |
Registers a listener for this manager.
[in] | listener | - Listener that implements Cv2xListener interface. |
|
pure virtual |
Deregisters a Cv2xListener for this manager.
[in] | listener | - Previously registered CvListener that is to be deregistered. |
|
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.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[in] | configFilePath | - Path to config file. |
[in] | cb | - Callback that is invoked when the send is complete. This may be null. |
|
pure virtual |
Set RF peak cv2x transmit power. This affects the power for all existing flows and for any flow created int the future
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[in] | txPower | - Desired global Cv2x peak tx power in dbm |
[in] | cb | - Callback that is invoked when Cv2x peak tx power is set |
|
pure virtual |
Request to install remote UE src L2 filters. This affects receiving of the UEs' packets in specified period with specified PPPP
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[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 |
|
pure virtual |
Remove the previously installed filters matching src L2 address list. Hence forth this would allow reception of packets from specified UE's
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[in] | l2IdList | - remote UE src L2 Id list, max size 50 |
[in] | cb | - Callback that is invoked when the request is sent |
|
pure virtual |
Get CV2X SLSS Rx information from modem.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_INFO permission to successfully invoke this API.
[in] | cb | - Callback that is invoked when Cv2x SLSS Rx information is retrieved. |
|
pure virtual |
Inject coarse UTC time when UE is synchronized to SLSS.
GNSS fix is not available when UE is synchronized to SLSS. To get accurate UTC time in this case, user can register a listener by invoking ICv2xRadioManager::registerListener and then inject coarse UTC time derrived from received application messages using this API. The age of injected UTC time could be nearly 10 seconds at most. After that, accurate UTC time will be notified to user periodically through the registered listener.
On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONFIG permission to successfully invoke this API.
[in] | utc | - UTC time since Jan. 1, 1970. Units: Milliseconds. |
[in] | cb | - Callback that is invoked when UTC inject complete. This may be null. |
struct telux::cv2x::SyncRefUeInfo |
Encapsulates parameters of an SLSS sync reference UE. Used in SlssRxInfo.
Data Fields | ||
---|---|---|
uint16_t | slssId |
The SLSS ID of the sync reference UE that is defined in 3GPP TS 36.331 chapter 6.3.8. |
bool | inCoverage |
Indicates whether or not the UE is in coverage of GNSS that is defined in 3GPP TS 36.331 chapter 6.5.2. |
SlssSyncPattern | pattern |
Indicates the SLSS sync pattern of the UE that is defined in 3GPP TS 36.331 chapter 6.3.8. |
uint8_t | rsrp |
SLSS RSRP value of the UE in dBm is ((float)rsrp - 256)/2. |
bool | selected |
Indicates whether or not the sync reference UE has been selected as the timing source. |
struct telux::cv2x::SlssRxInfo |
Encapsulates parameters of CV2X SLSS Rx Information.
Data Fields | ||
---|---|---|
vector< SyncRefUeInfo > | ueInfo |
Vector of detected SLSS sync reference UEs. |
struct telux::cv2x::SocketInfo |
Encapsulates parameters of a CV2X socket.
Used in ICv2xRadio::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 ICv2xRadioManager::requestCv2xStatus and ICv2xRadioListener.
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 ICv2xRadioManager::requestCv2xStatus 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 EARFCNs 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. Both edge guard bands are not included in the EARFCN range reported. The calculation for the full bandwidth includes both edge guard bands is: bandwidth(MHz) = (maxFreq-minFreq)/9.
Used in Cv2xRadioCapabilities
Data Fields | ||
---|---|---|
uint8_t | poolId |
TX pool ID. |
uint16_t | minFreq |
Minimum EARFCN of this pool. |
uint16_t | maxFreq |
Maximum EARFCN of this pool. |
struct telux::cv2x::EventFlowInfo |
Contains event flow configuration parameters.
Used in ICv2xRadio::createTxEventFlow
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 ICv2xRadio::createTxSpsFlow and ICv2xRadio::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 | |
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 ICv2xRadio::requestCapabilities and ICv2xRadioListener::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.
|
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.
struct telux::cv2x::SpsSchedulingInfo |
struct telux::cv2x::TrustedUEInfo |
Contains time confidence, position confidence, and propogation delay for a trusted UE.
Used in TrustedUEInfo
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 ICv2xRadio::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.
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.
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 ICv2xRadioManager::setL2Filters
struct telux::cv2x::RFTxInfo |
Tx status per Tx chain and Tx power per Tx antenna for a specific transport block.
Used in TxStatusReport
Data Fields | ||
---|---|---|
RFTxStatus | status |
Fault detection status for a specific Tx chain. |
int32_t | power |
The target Tx power after MPR/AMPR reduction for a specific Tx antenna in dBm*10 format. Invalid value is -700, it means the corresponding antenna is not being used for the transmission of this transport block. |
struct telux::cv2x::TxStatusReport |
Information on Tx status of a V2X transport block that is reported from low layer.
Data Fields | ||
---|---|---|
RFTxInfo | rfInfo[MAX_ANTENNAS_SUPPORTED] |
Tx status per Tx chain and Tx power per Tx antenna. |
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 ICv2xRadio::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 |
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) |
|
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 ICv2xRadio::createRxSubscription and ICv2xRadio::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 () |
|
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
|
pure virtual |
Get subscriptions's service ID list
|
pure virtual |
Set subscriptions's service ID list
[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 void | onSanityStateUpdate (bool state) |
virtual | ~ICv2xThrottleManagerListener () |
|
virtual |
Destructor of ICv2xThrottleManagerListener
|
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
[in] | rate | the reported filter rate adjustment value. |
|
virtual |
This API is invoked when the service status changes for example when a subsytem restart (SSR) occurs
[in] | status | - telux::common::ServiceStatus |
|
virtual |
This API is invoked when capacity of underlying message verification module is tampered
[in] | state | - mvm state, true if mvm is in good state, otherwise false. |
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 () |
|
virtual |
|
pure virtual |
This status indicates whether the object is in a usable state.
|
pure virtual |
Registers a listener to receive the updated filer rate adjustment data.
[in] | listener | - Listener that implement ICv2xThrottleManagerListener interface. |
|
pure virtual |
Deregister a ICv2xThrottleManagerListener.
[in] | listener | - Previously registered Cv2xThrottleManagerListener that is deregistered. |
|
pure virtual |
Set current measured/average verification load.
[in] | load | - current measured verification load(verification/second). |
[in] | cb | - callack for indicating the result of set verfication load. |
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 ICv2xRadio::createTxSpsFlow, ICv2xRadio::createTxEventFlow, and ICv2xRadio::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
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 ICv2xRadio::createCv2xTcpSocket and ICv2xRadio::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 () |
|
virtual |
|
pure virtual |
Accessor for Cv2xRadio socket ID. The socket ID should be unique within a process but will not be unique between processes.
|
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 local port number bound to the socket
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 () |
|
virtual |
Destructor for ICv2xTxStatusReportListener
|
virtual |
Called when a CV2X transport block is transmitted in low layer if a listener for Tx status report has been registered by calling ICv2xRadio::registerTxStatusReportListener.
[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) |
|
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.
[in] | priority | - cv2x flow priority |
|
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.
[in] | trafficClass | - class or priority of IPv6 packet(See RFC2460 section-7) |
struct telux::cv2x::prop::Position |
Position in terms of latitude, longitude, and elevation along with its heading.
struct telux::cv2x::prop::SubPERInterData |
sub per interval data (5 times per RV)
struct telux::cv2x::prop::PERInterData |
per interval data (1 time per RV)
struct telux::cv2x::prop::CongestionControlData |
data for each vehicle general information provided from the sender's message contents and also contains information updated while congestion control is running such as packet error rate (per) data
Data Fields | ||
---|---|---|
Position | pos |
Latest position of this vehicle |
double | speed |
Latest speed of this vehicle |
uint64_t | rxTimeStamp |
Latest received message time stamp of this vehicle |
uint64_t | currMsgCnt |
Latest msg cnt of this per interval (filled by the client) |
vector< struct SubPERInterData > | subPERInterData |
Packet error rate data for this vehicle updated every PER sub interval |
PERInterData | packetErrInterData |
Packet error rate data for this vehicle updated every PER interval |
bool | newPERSubInterval |
Flag indicating a new packet error rate (PER) sub interval is occurring |
bool | inRange |
Flag indicating this vehicle is in range within a specified threshold |
uint64_t | lastTxMsgTime |
Timestamp of last sent message |
uint64_t | lastGnssFixTime |
Latest GNSS fix time |
double | trackingErr |
Latest calculated tracking error. The difference between the last assumed known position and the assumed estimated position. |
struct telux::cv2x::prop::ChannelData |
channel quality related data
struct telux::cv2x::prop::SpsEnhanceData |
Output for sps enhancements
struct telux::cv2x::prop::TrackingErrorData |
Data for tracking error calculation
Data Fields | ||
---|---|---|
Position | lastPosSent |
Last position sent out via message |
double | lastSpeedSent |
Last speed sent out via message |
double | lastHeadingSent |
Last heading sent out via message |
Position | currPos |
Curent position |
double | currSpeed |
Current speed |
double | currHeading |
Current heading |
struct telux::cv2x::prop::CongestionControlCalculations |
Output of congestion control
Data Fields | ||
---|---|---|
bool | updateMaxITT |
Alert the user to update their max ITT value if it needs to be |
uint64_t | maxITT |
Current max Inter-Transmit Time |
bool | sendCriticalMsg |
Alert the user to send a critical BSM via event flow |
bool | sendNow |
Alert the user to send at this moment |
uint64_t | priority |
New priority for the next packet sent OTA * |
uint64_t | txPower |
New transmit power |
double | trackingError |
Latest calculated tracking error |
double | smoothDens |
Latest calculated smoothed average density |
int | totalRvsInRange |
Latest unsmoothed density in range |
shared_ptr< ChannelData > | channData |
Latest calculated channel quality indicator and packet error rates |
shared_ptr< SpsEnhanceData > | spsEnhanceData |
SPS flow changes that may need to be made for congestion control |
struct telux::cv2x::prop::CongestionControlUserData |
User-provided struct for congestion control outputs Will contain the relevant information to let user know when to TX and also other settings/data that it should change/use for congestion control.
Data Fields | ||
---|---|---|
void * | spsTransmit |
Pointer to be set to a TransmitFlow based class or data struct |
bool | spsEnhancementsEnabled |
Flag to let the manager know that sps enhancements are enabled |
shared_ptr < CongestionControlCalculations > |
congestionControlCalculations |
Output for the congestion control algorithm for user |
sem_t * | congestionControlSem |
Semaphore to prevent any race conditions when using output |
struct telux::cv2x::prop::SPSEnhanceConfig |
Config for all SPS Enhancements
struct telux::cv2x::prop::DensityConfig |
Config for density calculation
struct telux::cv2x::prop::PERConfig |
Config for packet error rate calculation
struct telux::cv2x::prop::CQIConfig |
struct telux::cv2x::prop::CBPConfig |
struct telux::cv2x::prop::TEConfig |
Config for tracking error (TE).
struct telux::cv2x::prop::ITTConfig |
Config for inter-transmit time
struct telux::cv2x::prop::PowerConfig |
struct telux::cv2x::prop::CongestionControlConfig |
Config for congestion control which contains sub-config items
Data Fields | ||
---|---|---|
PowerConfig | pwrConfig |
Power calculation Configuration parameters |
CBPConfig | cbpConfig |
Channel Busy Percentage calculation Configuration parameters |
CQIConfig | cqiConfig |
Channel Quality Indication calculation Configuration parameters |
PERConfig | perConfig |
Packet Error Rate calculation Configuration parameters |
DensityConfig | densConfig |
Smoothed In-Range Density calculation Configuration parameters |
TEConfig | teConfig |
Tracking Error calculation Configuration parameters |
ITTConfig | ittConfig |
Inter-Transmit Time calculation Configuration parameters |
bool | enableSpsEnhance |
Flag to enable SPS enhancements |
SPSEnhanceConfig | spsEnhanceConfig |
SPS Enhancements Configuration parameters |
CongestionControlType | congestionControlType |
Type of congestion control to be used. SAE only supported today |
class telux::cv2x::prop::CongestionControlUtility |
Utility class for congestion control logging and testing purposes.
Static Public Member Functions | |
static void | setLoggingLevel (uint8_t loggingLevelIn) |
static uint8_t | getLoggingLevel () |
static void | addDensity (uint64_t density, uint64_t initDistance) |
|
static |
Sets the logging level
[in] | loggingLevel | - value to indicate level of console logging |
|
static |
Gets the logging level
|
static |
Adds an artificial density over time
[in] | density | - artificial density that should be incorporated |
[in] | initDistance | - the initial distance from host vehicle to artifical density |
class telux::cv2x::prop::ICongestionControlListener |
Congestion Control listeners implement this interface.
Public Member Functions | |
virtual void | onCongestionControlDataReady (std::shared_ptr< CongestionControlUserData > congestionControlUserData, bool critEvent) |
virtual | ~ICongestionControlListener () |
|
virtual |
Destructor for ICongestionControlListener
|
virtual |
Called when the new congestion control data is available.
[in] | congestionControlUserData | - pointer to output user data which manager will fill. Lets the user know they should immediately send a new message. If SPS enhancements are enabled, they may also need to perform SPS periodicity change. |
[in] | critEvent | - tells the listener that there is a critical event |
class telux::cv2x::prop::ICongestionControlManager |
CongestionControl Manager is a primary interface for CongestionControl related functionality.
Public Member Functions | |
virtual CCErrorCode | updateCongestionControlConfig (std::shared_ptr< CongestionControlConfig > congestionControlConfigIn)=0 |
virtual CCErrorCode | updateCongestionControlType (CongestionControlType congestionControlType)=0 |
virtual CCErrorCode | startCongestionControl ()=0 |
virtual CCErrorCode | stopCongestionControl ()=0 |
virtual CCErrorCode | registerListener (std::weak_ptr< ICongestionControlListener > congCtrlListener)=0 |
virtual CCErrorCode | deregisterListener (std::weak_ptr< ICongestionControlListener > congCtrlListener)=0 |
virtual std::shared_ptr< CongestionControlUserData > | getCongestionControlUserData ()=0 |
virtual CCErrorCode | updateCbpConfig (double cbpWeightFactor, uint64_t cbpInterval)=0 |
virtual CCErrorCode | updatePERConfig (double maxPacketErrorRate, int packetErrorRateInterval, int packetErrorRateSubInterval)=0 |
virtual CCErrorCode | updateDensConfig (double densCoeff, double densWeightFactor, uint64_t distThresh)=0 |
virtual CCErrorCode | updateTeConfig (uint64_t txCtrlInterval, uint64_t hvMinTimeDiff, uint64_t hvMaxTimeDiff, uint64_t rvMinTimeDiff, uint64_t rvMaxTimeDiff, uint64_t teLowerThresh, uint64_t teUpperThresh, uint64_t errSensitivity)=0 |
virtual CCErrorCode | updateIttConfig (uint64_t reschedThresh, uint64_t timeAccuracy, uint64_t minIttThresh, uint64_t maxIttThresh, uint64_t txRand)=0 |
virtual CCErrorCode | updateTxRateCtrlInterval (uint64_t txCtrlInterval)=0 |
virtual CCErrorCode | updateSpsEnhanceConfig (uint64_t spsPeriodicity, uint64_t changeFrequency, double hysterPercent)=0 |
virtual void | enableSpsEnhancements (bool enable)=0 |
virtual bool | isSpsEnhanceEnabled ()=0 |
virtual CCErrorCode | updateHostVehicleData (Position &pos, double speed)=0 |
virtual CCErrorCode | updateLastTxTime (uint64_t lastTxTime)=0 |
virtual CCErrorCode | updateHvGnssFixTime (uint64_t gnssFixTimestamp)=0 |
virtual CCErrorCode | updateChannelBusyRate (double channBusyRatio)=0 |
virtual CCErrorCode | notifyCriticalEvent ()=0 |
virtual CCErrorCode | disableCriticalEvent ()=0 |
virtual CCErrorCode | addCongestionControlData (uint64_t id, double latitude, double longitude, double heading, double speed, uint64_t timestamp, uint64_t msgCount)=0 |
virtual CCErrorCode | removeCongestionControlData (uint64_t id)=0 |
virtual std::shared_ptr< CongestionControlData > | getCongestionControlData (uint64_t id)=0 |
ICongestionControlManager () | |
~ICongestionControlManager () | |
telux::cv2x::prop::ICongestionControlManager::ICongestionControlManager | ( | ) |
telux::cv2x::prop::ICongestionControlManager::~ICongestionControlManager | ( | ) |
|
pure virtual |
Called to update the internal config parameters with custom values
[in] | congestionControlConfigIn | - a struct that holds various smaller config structs for each component of congestion control |
|
pure virtual |
Called to update the type of congestion control
[in] | congestionControlType | - type of congestion control to be performed |
|
pure virtual |
The primary congestion control driver to be called after initialization. Launches various threads for different components of congestion control. Including channel quality, packet error rate, density, and inter-transmit time calculations.
|
pure virtual |
Gracefully closes any lingering threads, semaphores, and cleans up any allocated data.
|
pure virtual |
Called to register a ICongestionControlListener, which will be notified when new congestion control data is ready.
[in] | congCtrlListener | - user-implemented class to listen for output user data which manager will fill. Lets the user know they should immediately send a new message. If SPS enhancements are enabled, they may perform SPS periodicity change. |
|
pure virtual |
Called to deregister a ICongestionControlListener implementation
[in] | congCtrlListener | - user-implemented class to be deregistered |
|
pure virtual |
Called to get a shared pointer to the results of the Congestion Control periodic calculations.
|
pure virtual |
Update the channel busy percentage related configs
[in] | cbpWeightFactor | - weight factor for channel busy percentage calculation |
[in] | cbpInterval | - interval for channel busy percentage calculation |
|
pure virtual |
Update the packet error rate related configs
[in] | maxPacketErrorRate | - maximum packet error rate |
[in] | packetErrorRateInterval | - overall interval time for packet error calculation |
[in] | packetErrorRateSubInterval | - sub interval time for packet error rate calculation |
|
pure virtual |
Update the density related configs
[in] | densCoeff | - density coefficient for evaluating maximum inter-transmit time |
[in] | densWeightFactor | - weight factor coefficient for smoothed density |
[in] | distThresh | - threshold for minimal distance between host and remote vehicles |
|
pure virtual |
Update the tracking error related configs
[in] | txCtrlInterval | - interval for transmit rate control |
[in] | hvMinTimeDiff | - min time difference between hv last known position and current |
[in] | hvMaxTimeDiff | - max time difference between hv last known position and current |
[in] | rvMinTimeDiff | - min time difference between rv last known position and current |
[in] | rvMaxTimeDiff | - max time difference between rv last known position and current |
[in] | teLowerThresh | - tracking error lower threshold |
[in] | teUpperThresh | - tracking error upper threshold |
[in] | errSensitivity | - tracking error sensitivity |
|
pure virtual |
Update the inter-transmit time related configs
[in] | reschedThresh | - threshold for rescheduling frequency |
[in] | timeAccuracy | - accuracy of time |
[in] | minIttThresh | - minimum inter-transmit time |
[in] | maxIttThresh | - maximum inter-transmit time |
[in] | txRand | - transmission chance randomness |
|
pure virtual |
Update the transmit rate control related configs
[in] | txCtrlInterval | - time interval for periodic calculations of tracking error and inter-transmit time. |
|
pure virtual |
Update the sps enhancements related config
[in] | spsPeriodicity | - New periodicity of sps flow to be set by user |
[in] | changeFrequency | - Random chance to not change sps flow periodicity and inter-transmit time |
[in] | hysterPercent | - Hysteresis percentage for choosing the inter-transmit time thresholds. Used to prevent frequent changes to sps flow periodicity. |
|
pure virtual |
Enables sps ennhancements
[in] | enable | - Boolean to enable or disable sps enhancements |
|
pure virtual |
Used to check if sps enhancements are enabled
|
pure virtual |
Used whenever the user needs to update latest host vehicle information to manager
[in] | pos | - latest position (lat, long, elevation) of host vehicle |
[in] | speed | - latest speed of host vehicle |
|
pure virtual |
Used whenever the user needs to update latest host vehicle information to manager
[in] | lastTxTime | - latest tx time of host vehicle (if any) used for scheduling |
|
pure virtual |
Update the host vehicle gnss fix time
[in] | gnssFixTimestamp | - the new host vehicle gnss fix timestamp |
|
pure virtual |
Update the channel busy ratio
[in] | channBusyRatio | - current channel busy ratio of host vehicle |
|
pure virtual |
Should be called when user detects a critical event. This function notifies the congestion control manager about the critical event. This is important so that the manager can update the internal transmit schedule for a specified time.
|
pure virtual |
Called when user needs to notify congestion control to disable critical event
|
pure virtual |
Called whenever there is a packet received from new vehicle nearby
[in] | id | - A remote vehicle identity |
[in] | - | latitude - latitude of the vehicle |
[in] | - | longitude - longitude of the vehicle |
[in] | - | heading - heading of the vehicle |
[in] | - | speed - speed of the vehicle |
[in] | - | timestamp - timestamp at which the message was received |
[in] | - | msgCount - Current message count taken from the decoded message |
|
pure virtual |
Called when we need to remove data related to a vehicle
[in] | id | - A remote vehicle identity whose CongestionControlData will be removed from the manager. This API is called when a remote vehicle has left a specified range or is no longer important for congestion control. |
|
pure virtual |
Called when user needs to access a nearby vehicle's latest congestion control data
[in] | id | - A remote vehicle identity |
class telux::cv2x::prop::CongestionControlUtil |
Public Member Functions | |
uint64_t | timestamp_now (void) |
uint64_t | timestamp_now_ms (void) |
uint64_t | timestamp_now_ns (void) |
uint64_t telux::cv2x::prop::CongestionControlUtil::timestamp_now | ( | void | ) |
Return current time stamp in seconds
uint64_t telux::cv2x::prop::CongestionControlUtil::timestamp_now_ms | ( | void | ) |
Return current time stamp in milliseconds
uint64_t telux::cv2x::prop::CongestionControlUtil::timestamp_now_ns | ( | void | ) |
Return current time stamp in nanoseconds
class telux::cv2x::prop::V2xPropFactory |
V2xPropFactory allows creation of ICongestionControlManager.
Public Member Functions | |
virtual std::shared_ptr< ICongestionControlManager > | getCongestionControlManager ()=0 |
Static Public Member Functions | |
static V2xPropFactory & | getInstance () |
|
static |
Gets the V2xPropFactory instance. On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONGESTION_CONTROL permission to successfully invoke this API.
|
pure virtual |
Provides a CongestionControlManager instance to be used to perform v2x congestion control. On platforms with access control enabled, the caller needs to have TELUX_CV2X_CONGESTION_CONTROL permission to successfully invoke this API.
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 ICv2xThrottleManager::setVerificationLoad
[in] | error | - SUCCESS if verification load was set successfully
|
using telux::cv2x::prop::CongestionControlMap = typedef std::map<uint64_t, CongestionControlData> |
uin64_t refers to the a vehicle's identity field provided in messages
|
strong |
|
strong |
Defines possible values for CV2X radio RX/TX status.
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. The cause code is only associated with cv2x suspend/inactive status, if cv2x is active, the cause code has no meaning. Used in Cv2xStatus
Enumerator | |
---|---|
TIMING |
CV2X is suspended due to the outage of timing reference. |
CONFIG |
CV2X is inactive due to v2x.xml is missing, invalid, or expired. |
UE_MODE |
CV2X is inactive due to CV2X mode is not started. |
GEOPOLYGON |
CV2X is inactive due to UE enters a geo-polygon that does not support cv2x. |
THERMAL |
CV2X is suspended when the device's temperature is high. |
THERMAL_ECALL |
CV2X is suspended when the device's temperature is high and emergency call is ongoing. |
GEOPOLYGON_SWITCH |
CV2X is suspended when UE switches to a new geopolygon that also supports CV2X and UE is already in CV2X active status, CV2X status will change to active after the update is done. |
SENSING |
CV2X Tx is suspended when GNSS signal recovers or CV2X mode just starts. UE needs sensing for 1 second before Tx can begin, Tx status will change to active after sensing is done. |
LPM |
CV2X is inactive when UE enters Low Power Mode. |
DISABLED |
CV2X is inactive due to CV2X is disabled in the EFS. |
NO_GNSS |
CV2X is inactive due to GNSS signal is not available when starting CV2X. |
INVALID_LICENSE |
CV2X is inactive due to invalid license. |
UNKNOWN |
Invalid cause type only used internally. |
|
strong |
Defines possible values for SLSS sync pattern. Used in SyncRefUeInfo
|
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 ICv2xRadioListener::onStatusChanged
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 |
|
strong |
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 |
|
strong |
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 |
|
strong |
Fault detection for 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. |
|
strong |
Defines possible values for the segment type of a transport block.
Used in TxStatusReport
|
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. |
SLSS_TX |
Tx of SLSS. |
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 |
|
strong |
|
strong |
void telux::cv2x::prop::printPosition | ( | Position & | position | ) |
Print Position items
[in] | position | - position struct reference |
void telux::cv2x::prop::printChannelData | ( | ChannelData & | channelData | ) |
Print ChannelData items
[in] | channelData | - channel data struct reference |
void telux::cv2x::prop::printTrackingErrorData | ( | TrackingErrorData & | teData | ) |
Print TrackingErrorData items
[in] | teData | - tracking error input struct reference |
void telux::cv2x::prop::printSPSEnhanceConfig | ( | SPSEnhanceConfig & | spsEnhanceConfig | ) |
Print SPSEnhanceConfig items
[in] | spsEnhanceConfig | - sps enhancements config struct reference |
void telux::cv2x::prop::printDensityConfig | ( | DensityConfig & | densConfig | ) |
Print DensityConfig items
[in] | densConfig | - density config struct reference |
void telux::cv2x::prop::printPERConfig | ( | PERConfig & | perConfig | ) |
Print PERConfig items
[in] | perConfig | - packet error rate config struct reference |
void telux::cv2x::prop::printCQIConfig | ( | CQIConfig & | cqiConfig | ) |
Print CQIConfig
[in] | cqiConfig | - channel quality indication config struct reference |
void telux::cv2x::prop::printCBPConfig | ( | CBPConfig & | cbpConfig | ) |
Print CBPConfig items
[in] | cbpConfig | - channel busy percentage config struct reference |
void telux::cv2x::prop::printTEConfig | ( | TEConfig & | teConfig | ) |
Print TEConfig items
[in] | teConfig | - tracking error config struct reference |
void telux::cv2x::prop::printITTConfig | ( | ITTConfig & | ittConfig | ) |
Print ITTConfig items
[in] | ittConfig | - inter transmit time config struct reference |
void telux::cv2x::prop::printPowerConfig | ( | PowerConfig & | powerConfig | ) |
Print PowerConfig items
[in] | powerConfig | - power config struct reference |
constexpr uint8_t telux::cv2x::MAX_ANTENNAS_SUPPORTED = 2u |
Defines Maximum number of antennas that is supported.
Used in TxStatusReport