Received packet details obtained via sl_rail_get_rx_packet_details().

Note

Public Attributes#

The time stamp of the received packet in the RAIL timebase.

bool

Indicates whether the received packet successfully passed CRC checks or failed (not just CRC failure).

bool

Indicate whether the received packet was the expected Ack.

int8_t

RSSI of the received packet in integer dBm.

uint8_t

The link quality indicator of the received packet.

uint8_t

For radios and PHY configurations that support multiple sync words, this number is the ID of the sync word that was used for this packet.

uint8_t

In configurations where the radio has the option of receiving a given packet in multiple ways, indicates which of the sub-PHY options was used to receive the packet.

uint8_t

For Antenna Control configurations where the device has multiple antennas, this indicates which antenna received the packet.

uint8_t

When channel hopping is enabled, this field will contain the index of the channel in sl_rail_rx_channel_hopping_config_t::p_entries on which this packet was received, or a sentinel value.

uint16_t

The channel on which the packet was received.

Public Attribute Documentation#

time_received#

sl_rail_packet_time_stamp_t sl_rail_rx_packet_details_t::time_received

The time stamp of the received packet in the RAIL timebase.

When not available it will be SL_RAIL_PACKET_TIME_INVALID.


crc_passed#

bool sl_rail_rx_packet_details_t::crc_passed

Indicates whether the received packet successfully passed CRC checks or failed (not just CRC failure).

It is true for SL_RAIL_RX_PACKET_READY_SUCCESS packets and false for all other sl_rail_rx_packet_status_t values reported in sl_rail_rx_packet_info_t::packet_status.

It is always available.


is_ack#

bool sl_rail_rx_packet_details_t::is_ack

Indicate whether the received packet was the expected Ack.

It is true for the expected Ack and false otherwise.

It is always available.

An expected Ack is defined as a protocol-correct Ack packet successfully-received (SL_RAIL_RX_PACKET_READY_SUCCESS or SL_RAIL_RX_PACKET_READY_CRC_ERROR) and whose sync word was detected within the sl_rail_auto_ack_config_t::ack_timeout_us period following a transmit which specified SL_RAIL_TX_OPTION_WAIT_FOR_ACK, requested an Ack, and Auto-Ack is enabled. When true, the ack_timeout_us period was terminated so no SL_RAIL_EVENT_RX_ACK_TIMEOUT will be subsequently posted for the transmit.

A "protocol-correct Ack" applies to the 802.15.4 or Z-Wave protocols for which RAIL can discern the frame type and match the Ack's sequence number with that of the transmitted frame. For other protocols, the first packet successfully-received whose sync word was detected within the sl_rail_auto_ack_config_t::ack_timeout_us period is considered the expected Ack; upper layers are responsible for confirming this.


rssi_dbm#

int8_t sl_rail_rx_packet_details_t::rssi_dbm

RSSI of the received packet in integer dBm.

This RSSI measurement is started as soon as the sync word is detected. The duration of the measurement is PHY-specific.

When not available it will be SL_RAIL_RSSI_INVALID_DBM.


lqi#

uint8_t sl_rail_rx_packet_details_t::lqi

The link quality indicator of the received packet.

A zero would indicate a very low quality packet while a 255 would indicate a very high quality packet.

When not available it will be 0.


sync_word_id#

uint8_t sl_rail_rx_packet_details_t::sync_word_id

For radios and PHY configurations that support multiple sync words, this number is the ID of the sync word that was used for this packet.

It is always available.


sub_phy_id#

uint8_t sl_rail_rx_packet_details_t::sub_phy_id

In configurations where the radio has the option of receiving a given packet in multiple ways, indicates which of the sub-PHY options was used to receive the packet.

Most radio configurations do not have this ability and the sub_phy_id is set to 0.

Currently, this field is used by the BLE Coded PHY, the BLE Simulscan PHY and the SUN OFDM PHYs. In BLE cases, a value of 0 marks a 500 kbps packet, a value of 1 marks a 125 kbps packet, and a value of 2 marks a 1 Mbps packet. Also, see sl_rail_ble_config_phy_coded() and sl_rail_ble_config_phy_simulscan().

In SUN OFDM cases, the value corresponds to the numerical value of the Modulation and Coding Scheme (MCS) level of the last received packet. The packet bitrate depends on the MCS value, as well as the OFDM option. Packets bitrates for SUN OFDM PHYs can be found in 802.15.4-2020 specification, chapter 20.3, table 20-10. Ex: Packet bitrate for OFDM option 1 MCS0 is 100kb/s and 2400kb/s for MCS6.

In WMBUS cases, when using PHY_wMbus_ModeTC_M2O_100k_frameA with simultaneous RX of T and C modes enabled (sl_rail_wmbus_config()), the value corresponds to sl_rail_wmbus_phy_t.

It is always available.


antenna_id#

uint8_t sl_rail_rx_packet_details_t::antenna_id

For Antenna Control configurations where the device has multiple antennas, this indicates which antenna received the packet.

When there is only one antenna, this will be set to the default of 0.

It is always available.


channel_hopping_channel_index#

uint8_t sl_rail_rx_packet_details_t::channel_hopping_channel_index

When channel hopping is enabled, this field will contain the index of the channel in sl_rail_rx_channel_hopping_config_t::p_entries on which this packet was received, or a sentinel value.

It is always available.


channel#

uint16_t sl_rail_rx_packet_details_t::channel

The channel on which the packet was received.

It is always available.

Note

  • It is best to fully process (empty or clear) the receive FIFO before changing channel configurations (sl_rail_config_channels() or a built-in configuration) as unprocessed packets' channel could reflect the wrong configuration.