Telematics SDK - Interface Specification  v1.42.0
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
C Radio APIs

Data Structures

struct  trusted_ue_info_t
 
struct  tx_pool_id_info_t
 
struct  v2x_iface_capabilities_t
 
struct  v2x_tx_bandwidth_reservation_t
 
struct  v2x_chan_meas_params_t
 
struct  v2x_chan_measurements_t
 
struct  v2x_radio_calls_t
 
struct  v2x_sps_mac_details_t
 
struct  v2x_per_sps_reservation_calls_t
 
struct  v2x_tx_flow_info_t
 
struct  v2x_sock_info_t
 
struct  v2x_sid_list_t
 
struct  v2x_tx_sps_flow_info_t
 
struct  socket_info_t
 

Macros

#define V2X_RADIO_HANDLE_BAD   (-1)
 
#define V2X_MAX_RADIO_SESSIONS   (10)
 
#define V2X_RX_WILDCARD_PORTNUM   (9000)
 
#define MAX_POOL_IDS_LIST_LEN   (20)
 
#define MAX_MALICIOUS_IDS_LIST_LEN   (50)
 
#define MAX_TRUSTED_IDS_LIST_LEN   (50)
 
#define MAX_SUBSCRIBE_SIDS_LIST_LEN   (10)
 
#define MAX_FILTER_IDS_LIST_LEN   (50)
 

Typedefs

typedef int v2x_radio_handle_t
 
typedef traffic_ip_type_t traffic_ip_type
 

Enumerations

enum  v2x_concurrency_sel_t { V2X_WWAN_NONCONCURRENT = 0, V2X_WWAN_CONCURRENT = 1 }
 
enum  v2x_event_t {
  V2X_INACTIVE = 0, V2X_ACTIVE, V2X_TX_SUSPENDED, V2X_RX_SUSPENDED,
  V2X_TXRX_SUSPENDED
}
 
enum  v2x_priority_et {
  V2X_PRIO_MOST_URGENT = 0, V2X_PRIO_1 = 1, V2X_PRIO_2 = 2, V2X_PRIO_3 = 3,
  V2X_PRIO_4 = 4, V2X_PRIO_5 = 5, V2X_PRIO_6 = 6, V2X_PRIO_BACKGROUND = 7
}
 
enum  v2x_service_status_t { SERVICE_UNAVAILABLE = 0, SERVICE_AVAILABLE = 1, SERVICE_FAILED = 2 }
 
enum  v2x_auto_retransmit_policy_t { V2X_AUTO_RETRANSMIT_DISABLED = 0, V2X_AUTO_RETRANSMIT_ENABLED = 1, V2X_AUTO_RETRANSMIT_DONT_CARE = 2 }
 
enum  traffic_ip_type_t { TRAFFIC_IP = 0, TRAFFIC_NON_IP = 1 }
 

Functions

uint16_t v2x_convert_priority_to_traffic_class (v2x_priority_et priority)
 
v2x_priority_et v2x_convert_traffic_class_to_priority (uint16_t traffic_class)
 

Variables

uint32_t trusted_ue_info_t::source_l2_id
 
float trusted_ue_info_t::time_uncertainty
 
uint16_t trusted_ue_info_t::time_confidence_level
 
uint16_t trusted_ue_info_t::position_confidence_level
 
uint32_t trusted_ue_info_t::propagation_delay
 
uint8_t tx_pool_id_info_t::pool_id
 
uint16_t tx_pool_id_info_t::min_freq
 
uint16_t tx_pool_id_info_t::max_freq
 
int v2x_iface_capabilities_t::link_ip_MTU_bytes
 
int v2x_iface_capabilities_t::link_non_ip_MTU_bytes
 
v2x_concurrency_sel_t v2x_iface_capabilities_t::max_supported_concurrency
 
uint16_t v2x_iface_capabilities_t::non_ip_tx_payload_offset_bytes
 
uint16_t v2x_iface_capabilities_t::non_ip_rx_payload_offset_bytes
 
uint16_t v2x_iface_capabilities_t::int_min_periodicity_multiplier_ms
 
uint16_t v2x_iface_capabilities_t::int_maximum_periodicity_ms
 
unsigned v2x_iface_capabilities_t::supports_10ms_periodicity: 1
 
unsigned v2x_iface_capabilities_t::supports_20ms_periodicity: 1
 
unsigned v2x_iface_capabilities_t::supports_50ms_periodicity: 1
 
unsigned v2x_iface_capabilities_t::supports_100ms_periodicity: 1
 
unsigned v2x_iface_capabilities_t::max_quantity_of_auto_retrans: 4
 
unsigned v2x_iface_capabilities_t::size_of_layer2_mac_address: 4
 
uint16_t v2x_iface_capabilities_t::v2x_number_of_priority_levels
 
uint16_t v2x_iface_capabilities_t::highest_priority_value
 
uint16_t v2x_iface_capabilities_t::lowest_priority_value
 
uint16_t v2x_iface_capabilities_t::max_qty_SPS_flows
 
uint16_t v2x_iface_capabilities_t::max_qty_non_SPS_flows
 
int32_t v2x_iface_capabilities_t::max_tx_pwr
 
int32_t v2x_iface_capabilities_t::min_tx_pwr
 
uint32_t v2x_iface_capabilities_t::tx_pool_ids_supported_len
 
tx_pool_id_info_t v2x_iface_capabilities_t::tx_pool_ids_supported [MAX_POOL_IDS_LIST_LEN]
 
int v2x_radio_macphy_params_t::channel_center_khz
 
int v2x_radio_macphy_params_t::channel_bandwidth_mhz
 
int v2x_radio_macphy_params_t::tx_power_limit_decidbm
 
int v2x_radio_macphy_params_t::qty_auto_retrans
 
uint8_t v2x_radio_macphy_params_t::l2_source_addr_length_bytes
 
uint8_t * v2x_radio_macphy_params_t::l2_source_addr_p
 
int v2x_tx_bandwidth_reservation_t::v2xid
 
v2x_priority_et v2x_tx_bandwidth_reservation_t::priority
 
int v2x_tx_bandwidth_reservation_t::period_interval_ms
 
int v2x_tx_bandwidth_reservation_t::tx_reservation_size_bytes
 
int v2x_chan_meas_params_t::channel_measurement_interval_us
 
int v2x_chan_meas_params_t::rs_threshold_decidbm
 
float v2x_chan_measurements_t::channel_busy_percentage
 
float v2x_chan_measurements_t::noise_floor
 
float v2x_chan_measurements_t::time_uncertainty
 
void(* v2x_radio_calls_t::v2x_radio_init_complete )(v2x_status_enum_type status, void *context)
 
void(* v2x_radio_calls_t::v2x_radio_status_listener )(v2x_event_t event, void *context)
 
void(* v2x_radio_calls_t::v2x_radio_chan_meas_listener )(v2x_chan_measurements_t *measurements, void *context)
 
void(* v2x_radio_calls_t::v2x_radio_l2_addr_changed_listener )(int new_l2_address, void *context)
 
void(* v2x_radio_calls_t::v2x_radio_macphy_change_complete_cb )(void *context)
 
void(* v2x_radio_calls_t::v2x_radio_capabilities_listener )(v2x_iface_capabilities_t *caps, void *context)
 
void(* v2x_radio_calls_t::v2x_service_status_listener )(v2x_service_status_t status, void *context)
 
uint32_t v2x_sps_mac_details_t::periodicity_in_use_ns
 
uint16_t v2x_sps_mac_details_t::currently_reserved_periodic_bytes
 
uint32_t v2x_sps_mac_details_t::tx_reservation_offset_ns
 
uint64_t v2x_sps_mac_details_t::utc_time_ns
 
void(* v2x_per_sps_reservation_calls_t::v2x_radio_l2_reservation_change_complete_cb )(void *context, v2x_sps_mac_details_t *details)
 
void(* v2x_per_sps_reservation_calls_t::v2x_radio_sps_offset_changed )(void *context, v2x_sps_mac_details_t *details)
 
v2x_auto_retransmit_policy_t v2x_tx_flow_info_t::retransmit_policy
 
uint8_t v2x_tx_flow_info_t::default_tx_power_valid
 
int32_t v2x_tx_flow_info_t::default_tx_power
 
uint8_t v2x_tx_flow_info_t::mcs_index_valid
 
uint8_t v2x_tx_flow_info_t::mcs_index
 
uint8_t v2x_tx_flow_info_t::tx_pool_id_valid
 
uint8_t v2x_tx_flow_info_t::tx_pool_id
 
uint8_t v2x_tx_flow_info_t::is_unicast_valid
 
uint8_t v2x_tx_flow_info_t::is_unicast
 
int v2x_sock_info_t::sock
 
struct sockaddr_in6 v2x_sock_info_t::sockaddr
 
int v2x_sid_list_t::length
 
uint32_t v2x_sid_list_t::sid [MAX_SUBSCRIBE_SIDS_LIST_LEN]
 
v2x_tx_bandwidth_reservation_t v2x_tx_sps_flow_info_t::reservation
 
v2x_tx_flow_info_t v2x_tx_sps_flow_info_t::flow_info
 
uint32_t socket_info_t::service_id
 
uint16_t socket_info_t::local_port
 

Detailed Description

This section contains C Radio APIs related to Cellular-V2X operation. For any new CV2x development, it is recommended to use the C++ telux::cv2x::* APIs

Abstraction of the radio driver parameters for a V2X broadcast socket interface, including 3GPP CV2X QoS bandwidth contracts.


Data Structure Documentation

struct trusted_ue_info_t

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

Data Fields
uint32_t source_l2_id

L2 ID of the trusted source

float time_uncertainty

Time uncertainty in milliseconds.

uint16_t time_confidence_level

Deprecated. Use time_uncertainty instead.

Confidence level of the time period.

[block]Supported values: 0 through 127, where 0 is invalid or unavailable and 127 is the most confident

uint16_t position_confidence_level

Confidence level of the position.

[block]Supported values: 0 through 127, where 0 is invalid or unavailable and 127 is the most confident

uint32_t propagation_delay

Propagation delay in microseconds.

struct tx_pool_id_info_t

Contains minimum and maximum frequencies for a Tx pool ID. This struct is used in v2x_iface_capabilities_t.

Data Fields
uint8_t pool_id

ID of the Tx pool.

uint16_t min_freq

Minimum frequency in MHz.

uint16_t max_freq

Maximum frequency in MHz.

struct v2x_iface_capabilities_t

Contains information on the capabilities of a Radio interface.

Data Fields
int link_ip_MTU_bytes

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

int link_non_ip_MTU_bytes

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

v2x_concurrency_sel_t max_supported_concurrency

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

uint16_t non_ip_tx_payload_offset_bytes

Byte offset in a non-IP Tx packet before the actual payload begins. In 3GPP CV2X, the first byte after the offset is the 1-byte V2X Family ID.

This offset is to the left for a per-packet Tx header that includes Tx information that might be inserted in front of the packet payload (in subsequent releases).

An example of Tx information is MAC/Phy parameters (power, rate, retransmissions policy, and so on).

Currently, this value is expected to be 0. But it is reserved to support possible per-packet Tx/Rx headers that might be added in future releases of this API.

uint16_t non_ip_rx_payload_offset_bytes

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

Initially, this value is zero. But it allows for later insertion of per-packet Rx information (sometimes called metadata) to be added to the front of the data payload. An example of Rx information is MAC/Phy measurements (receive signal strength, timestamps, and so on).

The V2X Family ID is considered as part of the payload in the 3GPP CV2X. Higher layers (applications that are clients to this API) must remove or advance past that 1 byte to get to the more familiar actual WSMP/Geonetworking payload.

uint16_t int_min_periodicity_multiplier_ms

Lowest number of milliseconds requested for a bandwidth.

This value is also the basis for all possible bandwidth reservation periods. For example, if this multiplier=100 ms, applications can only reserve bandwidths of 100 ms, 200 ms, up to 1000 ms.

uint16_t int_maximum_periodicity_ms

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

unsigned supports_10ms_periodicity: 1

Indicates whether n*10 ms periodicities are supported.

[block]Supported values:
  • 0 – Not supported
  • 1 – Supported
unsigned supports_20ms_periodicity: 1

Indicates whether an n*20 ms bandwidth reservation is supported.

[block]Supported values:
  • 0 – Not supported
  • 1 – Supported
unsigned supports_50ms_periodicity: 1

Indicates whether 50 ms periodicity is supported.

[block]Supported values:
  • 0 – Not supported
  • 1 – Supported
unsigned supports_100ms_periodicity: 1

Indicates whether the basic minimum periodicity of 100 ms is supported.

[block]Supported values:
  • 0 – Not supported
  • 1 – Supported
unsigned max_quantity_of_auto_retrans: 4

Maximum number automatic retransmissions.

[block]Supported values: 0 through 15

unsigned size_of_layer2_mac_address: 4

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.

uint16_t v2x_number_of_priority_levels

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

uint16_t highest_priority_value

Least urgent priority number supported by this radio.

Higher numbers are lower priority, so if the full range is supported, this value is V2X_PRIO_BACKGROUND.

uint16_t lowest_priority_value

Highest priority value (most urgent traffic).

Lower numbers are higher priority, so if the highest level supported this value is V2X_PRIO_MOST_URGENT.

uint16_t max_qty_SPS_flows

Maximum number of supported SPS reservations.

uint16_t max_qty_non_SPS_flows

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

int32_t max_tx_pwr

Maximum supported transmission power in dBm.

int32_t min_tx_pwr

Minimum supported transmission power in dBm.

uint32_t tx_pool_ids_supported_len

Length of the tx_pool_ids_supported array.

tx_pool_id_info_t tx_pool_ids_supported[MAX_POOL_IDS_LIST_LEN]

Array of Tx pool IDs and their associated minimum and maximum frequencies.

struct v2x_tx_bandwidth_reservation_t

Used when requesting a QoS bandwidth contract, which is implemented in PC5 3GPP V2-X radio as a Semi Persistent Flow (SPS).

The underlying radio providing the interface might support periodicities of various granularity in 100 ms integer multiples (such as 200 ms, 300 ms, and 400 ms).

The reservation is also used internally as a handle.

Data Fields
int v2xid

Variable length 4-byte PSID or ITS_AID, or another application ID.

v2x_priority_et priority

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

Use v2x_radio_query_parameters() to get the exact number of supported priority levels.

int period_interval_ms

Bandwidth-reserved periodicity interval in milliseconds.

There are limits on which intervals the underlying radio supports. Use the capabilities query method to discover the int_min_periodicity_multiplier_ms and int_maximum_periodicity_ms supported intervals.

int tx_reservation_size_bytes

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

struct v2x_chan_meas_params_t

Contains the measurement parameters for configuring the MAC/Phy radio channel measurements (such as CBR utilization).

The radio chip contains requests on radio measurement parameters that API clients can use to specify the following:

  • How their higher-level application requires the CBR/CBP to be measured
  • Over which time window
  • When to send a report
Data Fields
int channel_measurement_interval_us

Duration in microseconds of the sliding window size.

int rs_threshold_decidbm

Parameter to the radio CBR measurement that is used for determining how busy the channel is.

Signals weaker than the specified receive strength (RSRP, or RSSI) are not considered to be in use (busy).

struct v2x_chan_measurements_t

Periodically returned by the radio with all measurements about the radio channel, such as the amount of noise and bandwidth saturation (channel_busy_percentage, or CBR).

Data Fields
float channel_busy_percentage

No measurement parameters are supplied.

float noise_floor

Measurement of the background noise for a quiet channel.

float time_uncertainty

V2X time uncertainty in milliseconds.

struct v2x_radio_calls_t

Contains callback functions used in a v2x_radio_init() and v2x_radio_init_v2 call.

The radio interface uses these callback functions for events such as completion of initialization, a Layer-02 MAC address change, or a status event (loss of sufficient GPS time precision to transmit).

These callbacks are related to a specific radio interface, and its MAC/Phy parameters, such as transmit power, bandwidth utilization, and changes in radio status.

Data Fields

void(* v2x_radio_init_complete )(v2x_status_enum_type status, void *context)
 
void(* v2x_radio_status_listener )(v2x_event_t event, void *context)
 
void(* v2x_radio_chan_meas_listener )(v2x_chan_measurements_t *measurements, void *context)
 
void(* v2x_radio_l2_addr_changed_listener )(int new_l2_address, void *context)
 
void(* v2x_radio_macphy_change_complete_cb )(void *context)
 
void(* v2x_radio_capabilities_listener )(v2x_iface_capabilities_t *caps, void *context)
 
void(* v2x_service_status_listener )(v2x_service_status_t status, void *context)
 
struct v2x_sps_mac_details_t

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 periodicity_in_use_ns

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

uint16_t currently_reserved_periodic_bytes

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

uint32_t tx_reservation_offset_ns

Actual offset, from a 1PPS pulse and Tx flow periodicity, that the MAC selected and is using for the transmit reservation.

If data goes to the radio with enough time, it can be transmitted on the medium in the next immediately scheduled slot.

uint64_t utc_time_ns

Absolute UTC start time of next selected grant, in nanoseconds.

struct v2x_per_sps_reservation_calls_t

Callback functions used in v2x_radio_tx_sps_sock_create_and_bind() calls.

Data Fields

void(* v2x_radio_l2_reservation_change_complete_cb )(void *context, v2x_sps_mac_details_t *details)
 
void(* v2x_radio_sps_offset_changed )(void *context, v2x_sps_mac_details_t *details)
 
struct v2x_tx_flow_info_t

Advanced parameters that can be specified for Tx SPS and event-driven flows.

Data Fields
v2x_auto_retransmit_policy_t retransmit_policy

V2X retransmit policy.

uint8_t default_tx_power_valid

Indicates whether the default Tx power is specified.

[block]Supported values:
  • 0 – Default power is not specified
  • 1 – Default power is specified and is valid
int32_t default_tx_power

Default power used for transmission.

uint8_t mcs_index_valid

Indicates whether the MCS index is specified.

[block]Supported values:
  • 0 – Index is not specified
  • 1 – Index is specified and is valid
uint8_t mcs_index

MCS index number

uint8_t tx_pool_id_valid

Indicates whether the Tx pool ID is valid.

[block]Supported values:
  • 0 – ID is not specified
  • 1 – ID is specified and is valid
uint8_t tx_pool_id

ID of the Tx pool.

uint8_t is_unicast_valid

Indicates whether is_unicast is specified.

[block]Supported values:
  • 0 – Is unicast is not specified
  • 1 – Is unicast is specified and is valid
uint8_t is_unicast

Non zero if requested flow is unicast. Note: Unicast flows ignore subscribed Service Ids

struct v2x_sock_info_t

Parameters to identify a Tx or Rx socket.

Data Fields
int sock

Pointer to the file descriptor for the socket.

struct sockaddr_in6 sockaddr

IPv6 socket address. The sockaddr_in6 buffer is initialized with the IPv6 source address and source port that are used for the bind() function.

struct v2x_sid_list_t

Parameters to identify a service ID list.

Data Fields
int length

number of services IDs included in the array of sid.

uint32_t sid[MAX_SUBSCRIBE_SIDS_LIST_LEN]

array of service IDs.

struct v2x_tx_sps_flow_info_t

Advanced parameters that can be specified for Tx SPS flows.

Data Fields
v2x_tx_bandwidth_reservation_t reservation

Transmit reservation information.

v2x_tx_flow_info_t flow_info

Transmit resource information about the SPS Tx flow.

struct socket_info_t

Parameters that can be specified for the creation of CV2X socket.

Data Fields
uint32_t service_id

V2X service ID bound to the CV2X socket.

uint16_t local_port

Local port number of the CV2X socket used for binding.

Macro Definition Documentation

#define V2X_RADIO_HANDLE_BAD   (-1)

Invalid handle returned by v2x_radio_init() and v2x_radio_init_v2() upon an error.

#define V2X_MAX_RADIO_SESSIONS   (10)

Limit on the number of simultaneous RmNet Radio interfaces this library can have open at once.

Typically, there are only a few actual radios. On the same radio however, one interface can be for IP traffic, and another interface can be for non-IP traffic.

#define V2X_RX_WILDCARD_PORTNUM   (9000)

Wildcard value for a port number. When the wildcard is used, all V2X received traffic is routed.

#define MAX_POOL_IDS_LIST_LEN   (20)

Maximum length of the pool ID list that is returned in v2x_iface_capabilities_t.

#define MAX_MALICIOUS_IDS_LIST_LEN   (50)

Maximum length of the malicious ID list that can be passed in v2x_radio_update_trusted_ue_list().

#define MAX_TRUSTED_IDS_LIST_LEN   (50)

Maximum length of the trusted ID list that can be passed in v2x_radio_update_trusted_ue_list().

#define MAX_SUBSCRIBE_SIDS_LIST_LEN   (10)

Maximum length for the subscribed service ID list that can be passed in v2x_radio_rx_sock_create_and_bind_v2().

#define MAX_FILTER_IDS_LIST_LEN   (50)

Maximum length for the L2 ID list that can be passed in v2x_set_l2_filters() and v2x_cancel_l2_filters.

Typedef Documentation

typedef int v2x_radio_handle_t

Radio data handle to the interface.

Enumeration Type Documentation

Describes whether the radio chip modem should attempt or support concurrent 3GPP CV2X operation with a WWAN 4G/5G data call.

Some chips are only capable of operating on CV2X. In this case:

  • The callers can only request V2X_WWAN_NONCONCURRENT.
  • The interface parameters that are returned list v2x_concurrency_sel_t as the value for V2X_WAN_NONCONCURRENT.
Enumerator
V2X_WWAN_NONCONCURRENT 

No simultaneous WWAN + CV2X on this interface.

V2X_WWAN_CONCURRENT 

Interface allows requests for concurrent support of WWAN + CV2X connections.

Event indications sent asynchronously from the radio via callbacks that indicate the state of the radio. The state can change in response to the loss of timing precision or a geofencing change.

Enumerator
V2X_INACTIVE 

V2X communication is disabled.

V2X_ACTIVE 

V2X communication is enabled. Transmit and receive are possible.

V2X_TX_SUSPENDED 

Small loss of timing precision occurred. Transmit is no longer supported.

V2X_RX_SUSPENDED 

Radio can no longer receive any messages.

V2X_TXRX_SUSPENDED 

Radio can no longer transmit or receive for some reason.

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

Enumerator
V2X_PRIO_MOST_URGENT 

Highest priority.

V2X_PRIO_1 
V2X_PRIO_2 
V2X_PRIO_3 
V2X_PRIO_4 
V2X_PRIO_5 
V2X_PRIO_6 
V2X_PRIO_BACKGROUND 

Lowest priority.

Valid service availability states.

Enumerator
SERVICE_UNAVAILABLE 
SERVICE_AVAILABLE 
SERVICE_FAILED 

V2X Tx retransmission policies supported by the modem.

Enumerator
V2X_AUTO_RETRANSMIT_DISABLED 

Retransmit mode is disabled.

V2X_AUTO_RETRANSMIT_ENABLED 

Retransmit mode is enabled.

V2X_AUTO_RETRANSMIT_DONT_CARE 

Modem falls back to its default behavior.

V2X Ip Types

Enumerator
TRAFFIC_IP 

Use Ip type traffic.

TRAFFIC_NON_IP 

Use Non-Ip type traffic.

Function Documentation

uint16_t v2x_convert_priority_to_traffic_class ( v2x_priority_et  priority)

Converts a traffic priority to one of the 255 IPv6 traffic class bytes that are used in the data plane to indicate per-packet priority on non-SPS (event driven) data ports.

Associated data types
v2x_priority_et
Parameters
[in]priorityPacket priority that is to be converted to an IPv6 traffic class.

This priority is between the lowest and highest priority values returned in v2x_iface_capabilities_t.
Detailed description
This function is symmetric and is a reverse operation.
The traffic priority is one of the values between min_priority_value and max_priority_value returned in the v2x_iface_capabilities_t query.
Returns
IPv6 traffic class for achieving the calling input parameter priority level.
v2x_priority_et v2x_convert_traffic_class_to_priority ( uint16_t  traffic_class)

Maps an IPv6 traffic class to a V2X priority value.

Parameters
[in]traffic_classIPv6 traffic classification that came in a packet from the radio.
Detailed description
This function is the inverse of the v2x_convert_priority_to_traffic_class() function. It is symmetric and is a reverse operation.
Returns
Priority level (between highest and lowest priority values) equivalent to the input IPv6 traffic class parameter.

Variable Documentation

uint32_t trusted_ue_info_t::source_l2_id

L2 ID of the trusted source

float trusted_ue_info_t::time_uncertainty

Time uncertainty in milliseconds.

uint16_t trusted_ue_info_t::time_confidence_level

Deprecated. Use time_uncertainty instead.

Confidence level of the time period.

[block]Supported values: 0 through 127, where 0 is invalid or unavailable and 127 is the most confident

uint16_t trusted_ue_info_t::position_confidence_level

Confidence level of the position.

[block]Supported values: 0 through 127, where 0 is invalid or unavailable and 127 is the most confident

uint32_t trusted_ue_info_t::propagation_delay

Propagation delay in microseconds.

uint8_t tx_pool_id_info_t::pool_id

ID of the Tx pool.

uint16_t tx_pool_id_info_t::min_freq

Minimum frequency in MHz.

uint16_t tx_pool_id_info_t::max_freq

Maximum frequency in MHz.

int v2x_iface_capabilities_t::link_ip_MTU_bytes

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

int v2x_iface_capabilities_t::link_non_ip_MTU_bytes

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

v2x_concurrency_sel_t v2x_iface_capabilities_t::max_supported_concurrency

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

uint16_t v2x_iface_capabilities_t::non_ip_tx_payload_offset_bytes

Byte offset in a non-IP Tx packet before the actual payload begins. In 3GPP CV2X, the first byte after the offset is the 1-byte V2X Family ID.

This offset is to the left for a per-packet Tx header that includes Tx information that might be inserted in front of the packet payload (in subsequent releases).

An example of Tx information is MAC/Phy parameters (power, rate, retransmissions policy, and so on).

Currently, this value is expected to be 0. But it is reserved to support possible per-packet Tx/Rx headers that might be added in future releases of this API.

uint16_t v2x_iface_capabilities_t::non_ip_rx_payload_offset_bytes

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

Initially, this value is zero. But it allows for later insertion of per-packet Rx information (sometimes called metadata) to be added to the front of the data payload. An example of Rx information is MAC/Phy measurements (receive signal strength, timestamps, and so on).

The V2X Family ID is considered as part of the payload in the 3GPP CV2X. Higher layers (applications that are clients to this API) must remove or advance past that 1 byte to get to the more familiar actual WSMP/Geonetworking payload.

uint16_t v2x_iface_capabilities_t::int_min_periodicity_multiplier_ms

Lowest number of milliseconds requested for a bandwidth.

This value is also the basis for all possible bandwidth reservation periods. For example, if this multiplier=100 ms, applications can only reserve bandwidths of 100 ms, 200 ms, up to 1000 ms.

uint16_t v2x_iface_capabilities_t::int_maximum_periodicity_ms

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

unsigned v2x_iface_capabilities_t::supports_10ms_periodicity

Indicates whether n*10 ms periodicities are supported.

[block]Supported values:
  • 0 – Not supported
  • 1 – Supported
unsigned v2x_iface_capabilities_t::supports_20ms_periodicity

Indicates whether an n*20 ms bandwidth reservation is supported.

[block]Supported values:
  • 0 – Not supported
  • 1 – Supported
unsigned v2x_iface_capabilities_t::supports_50ms_periodicity

Indicates whether 50 ms periodicity is supported.

[block]Supported values:
  • 0 – Not supported
  • 1 – Supported
unsigned v2x_iface_capabilities_t::supports_100ms_periodicity

Indicates whether the basic minimum periodicity of 100 ms is supported.

[block]Supported values:
  • 0 – Not supported
  • 1 – Supported
unsigned v2x_iface_capabilities_t::max_quantity_of_auto_retrans

Maximum number automatic retransmissions.

[block]Supported values: 0 through 15

unsigned v2x_iface_capabilities_t::size_of_layer2_mac_address

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.

uint16_t v2x_iface_capabilities_t::v2x_number_of_priority_levels

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

uint16_t v2x_iface_capabilities_t::highest_priority_value

Least urgent priority number supported by this radio.

Higher numbers are lower priority, so if the full range is supported, this value is V2X_PRIO_BACKGROUND.

uint16_t v2x_iface_capabilities_t::lowest_priority_value

Highest priority value (most urgent traffic).

Lower numbers are higher priority, so if the highest level supported this value is V2X_PRIO_MOST_URGENT.

uint16_t v2x_iface_capabilities_t::max_qty_SPS_flows

Maximum number of supported SPS reservations.

uint16_t v2x_iface_capabilities_t::max_qty_non_SPS_flows

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

int32_t v2x_iface_capabilities_t::max_tx_pwr

Maximum supported transmission power in dBm.

int32_t v2x_iface_capabilities_t::min_tx_pwr

Minimum supported transmission power in dBm.

uint32_t v2x_iface_capabilities_t::tx_pool_ids_supported_len

Length of the tx_pool_ids_supported array.

tx_pool_id_info_t v2x_iface_capabilities_t::tx_pool_ids_supported[MAX_POOL_IDS_LIST_LEN]

Array of Tx pool IDs and their associated minimum and maximum frequencies.

int v2x_radio_macphy_params_t::channel_center_khz

Channel center frequency in kHz.

int v2x_radio_macphy_params_t::channel_bandwidth_mhz

Channel bandwidth in MHz, such as 5 MHz, 10 MHz, and 20 MHz.

int v2x_radio_macphy_params_t::tx_power_limit_decidbm

Limit on the transmit power in tenths of a dBm.

Examples of how this field is used:

  • To reduce a range that is possible as the output of an application-layer congestion management scheme.
  • In cases when a small communication range is needed, such as indoors and electronic fare collection.
  • In ETSI use cases where the power might need to be temporarily restricted to accommodate a nearby mobile 5.8 CEN enforcement toll (EFC) reader.
int v2x_radio_macphy_params_t::qty_auto_retrans

Used to request the number of automatic-retransmissions. The maximum supported number is defined in v2x_iface_capabilities_t.

uint8_t v2x_radio_macphy_params_t::l2_source_addr_length_bytes

Length of the L2 MAC address that is supplied to the radio.

uint8_t* v2x_radio_macphy_params_t::l2_source_addr_p

Pointer to l2_source_addr_length_bytes, which contains the L2 SRC address that the application layer selected for the radio.

int v2x_tx_bandwidth_reservation_t::v2xid

Variable length 4-byte PSID or ITS_AID, or another application ID.

v2x_priority_et v2x_tx_bandwidth_reservation_t::priority

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

Use v2x_radio_query_parameters() to get the exact number of supported priority levels.

int v2x_tx_bandwidth_reservation_t::period_interval_ms

Bandwidth-reserved periodicity interval in milliseconds.

There are limits on which intervals the underlying radio supports. Use the capabilities query method to discover the int_min_periodicity_multiplier_ms and int_maximum_periodicity_ms supported intervals.

int v2x_tx_bandwidth_reservation_t::tx_reservation_size_bytes

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

int v2x_chan_meas_params_t::channel_measurement_interval_us

Duration in microseconds of the sliding window size.

int v2x_chan_meas_params_t::rs_threshold_decidbm

Parameter to the radio CBR measurement that is used for determining how busy the channel is.

Signals weaker than the specified receive strength (RSRP, or RSSI) are not considered to be in use (busy).

float v2x_chan_measurements_t::channel_busy_percentage

No measurement parameters are supplied.

float v2x_chan_measurements_t::noise_floor

Measurement of the background noise for a quiet channel.

float v2x_chan_measurements_t::time_uncertainty

V2X time uncertainty in milliseconds.

void(* v2x_radio_calls_t::v2x_radio_init_complete)(v2x_status_enum_type status, void *context)

Callback that indicates initialization is complete.

Associated data types
v2x_status_enum_type
Parameters
[in]statusUpdated current radio status that indicates whether transmit and receive are ready.
[in]contextPointer to the context that was supplied during initial registration.
void(* v2x_radio_calls_t::v2x_radio_status_listener)(v2x_event_t event, void *context)

Callback made when the status in the radio changes. For example, in response to a fault when there is a loss of GPS timing accuracy.

Associated data types
v2x_event_t
Parameters
[in]eventDelivery of the event that just occurred, such losing the ability to transmit.
[in]contextPointer to the context of the caller who originally registered for this callback.
void(* v2x_radio_calls_t::v2x_radio_chan_meas_listener)(v2x_chan_measurements_t *measurements, void *context)

Callback made from lower layers when periodic radio measurements are prepared.

Associated data types
v2x_chan_measurements_t
Parameters
[in]measurementsPointer to the periodic measurements.
[in]contextPointer to the context of the caller who originally registered for this callback.
void(* v2x_radio_calls_t::v2x_radio_l2_addr_changed_listener)(int new_l2_address, void *context)

Callback made by the platform SDK when the MAC address (L2 SRC address) changes.

Parameters
[in]new_l2_addressNew L2 source address as an integer (because the L2 address is 3 bytes).
[in]contextPointer to the context of the caller who originally registered for this callback.
void(* v2x_radio_calls_t::v2x_radio_macphy_change_complete_cb)(void *context)

Callback made to indicate that the requested radio MAC/Phy change (such as channel/frequency and power) has completed.

Parameters
[in]contextPointer to the context of the caller who originally registered for this callback.
void(* v2x_radio_calls_t::v2x_radio_capabilities_listener)(v2x_iface_capabilities_t *caps, void *context)

Callback made when V2X capabilities change.

Associated data types
v2x_iface_capabilities_t
Parameters
[in]capsPointer to the capabilities of this interface.
[in]contextPointer to the context of the caller who originally registered for this callback.
void(* v2x_radio_calls_t::v2x_service_status_listener)(v2x_service_status_t status, void *context)

Callback made when the service status changes.

Associated data types
v2x_service_status_t
Parameters
[in]statusService status.
[in]contextPointer to the context of the caller who originally registered for this callback.
uint32_t v2x_sps_mac_details_t::periodicity_in_use_ns

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

uint16_t v2x_sps_mac_details_t::currently_reserved_periodic_bytes

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

uint32_t v2x_sps_mac_details_t::tx_reservation_offset_ns

Actual offset, from a 1PPS pulse and Tx flow periodicity, that the MAC selected and is using for the transmit reservation.

If data goes to the radio with enough time, it can be transmitted on the medium in the next immediately scheduled slot.

uint64_t v2x_sps_mac_details_t::utc_time_ns

Absolute UTC start time of next selected grant, in nanoseconds.

void(* v2x_per_sps_reservation_calls_t::v2x_radio_l2_reservation_change_complete_cb)(void *context, v2x_sps_mac_details_t *details)

Callback made upon completion of a reservation change that a v2x_radio_tx_reservation_change() call initiated for a MAC/Phy contention.

The current SPS offset and reservation parameter are passed in the details structure returned by the pointer details.

Associated data types
v2x_sps_mac_details_t
Parameters
[in]contextPointer to the application context.
[in]detailsPointer to the MAC information.
void(* v2x_per_sps_reservation_calls_t::v2x_radio_sps_offset_changed)(void *context, v2x_sps_mac_details_t *details)

Callback periodically made when the MAC SPS timeslot changes. The new reservation offset is in the details structure returned by pointer details.

Associated data types
v2x_sps_mac_details_t
Parameters
[in]measurementsPointer to the channel measurements.
[in]contextPointer to the context.
Detailed description
This callback can occur when a MAC contention triggers a new reservation time slot to be selected. It is relevant only to connections opened with v2x_radio_tx_sps_sock_create_and_bind().
v2x_auto_retransmit_policy_t v2x_tx_flow_info_t::retransmit_policy

V2X retransmit policy.

uint8_t v2x_tx_flow_info_t::default_tx_power_valid

Indicates whether the default Tx power is specified.

[block]Supported values:
  • 0 – Default power is not specified
  • 1 – Default power is specified and is valid
int32_t v2x_tx_flow_info_t::default_tx_power

Default power used for transmission.

uint8_t v2x_tx_flow_info_t::mcs_index_valid

Indicates whether the MCS index is specified.

[block]Supported values:
  • 0 – Index is not specified
  • 1 – Index is specified and is valid
uint8_t v2x_tx_flow_info_t::mcs_index

MCS index number

uint8_t v2x_tx_flow_info_t::tx_pool_id_valid

Indicates whether the Tx pool ID is valid.

[block]Supported values:
  • 0 – ID is not specified
  • 1 – ID is specified and is valid
uint8_t v2x_tx_flow_info_t::tx_pool_id

ID of the Tx pool.

uint8_t v2x_tx_flow_info_t::is_unicast_valid

Indicates whether is_unicast is specified.

[block]Supported values:
  • 0 – Is unicast is not specified
  • 1 – Is unicast is specified and is valid
uint8_t v2x_tx_flow_info_t::is_unicast

Non zero if requested flow is unicast. Note: Unicast flows ignore subscribed Service Ids

int v2x_sock_info_t::sock

Pointer to the file descriptor for the socket.

struct sockaddr_in6 v2x_sock_info_t::sockaddr

IPv6 socket address. The sockaddr_in6 buffer is initialized with the IPv6 source address and source port that are used for the bind() function.

int v2x_sid_list_t::length

number of services IDs included in the array of sid.

uint32_t v2x_sid_list_t::sid[MAX_SUBSCRIBE_SIDS_LIST_LEN]

array of service IDs.

v2x_tx_bandwidth_reservation_t v2x_tx_sps_flow_info_t::reservation

Transmit reservation information.

v2x_tx_flow_info_t v2x_tx_sps_flow_info_t::flow_info

Transmit resource information about the SPS Tx flow.

uint32_t socket_info_t::service_id

V2X service ID bound to the CV2X socket.

uint16_t socket_info_t::local_port

Local port number of the CV2X socket used for binding.