Trident IoT Z-Wave SDK
 
Loading...
Searching...
No Matches
zpal_radio.h File Reference
#include <stdbool.h>
#include <stdint.h>
#include "zpal_status.h"
+ Include dependency graph for zpal_radio.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  zpal_radio_transmit_parameter_t
 Parameters required when transmitting a frame. More...
 
struct  zpal_radio_rx_parameters_t
 Structure with radio parameters for a received frame. More...
 
struct  zpal_radio_receive_frame_t
 Z-Wave receive frame. More...
 
struct  zpal_radio_network_stats_t
 Network statistics structure. More...
 
struct  zpal_radio_rf_channel_statistic_t
 rf channel statistics structure More...
 
struct  zpal_radio_profile_t
 Radio Profile containing region, baud rate, and wakeup interval for this device. More...
 

Macros

#define ZPAL_RADIO_INVALID_RSSI_DBM   (-128)
 The RSSI value is invalid.
 
#define ZPAL_RADIO_RSSI_NOT_AVAILABLE   (127)
 The RSSI value is not available, probably because it has not been measured yet.
 
#define ZW_TX_POWER_10DBM   100
 10 dBm transmit power definition.
 
#define ZW_TX_POWER_14DBM   140
 14 dBm transmit power definition.
 
#define ZW_TX_POWER_20DBM   200
 20 dBm transmit power definition.
 
#define ZPAL_RADIO_NUM_CHANNELS   3
 Number of channels of classic Z-Wave protocol.
 
#define ZPAL_RADIO_NUM_CHANNELS_LR_CH_CFG_1_2   4
 
#define ZPAL_RADIO_NUM_CHANNELS_LR_CH_CFG3   2
 LRA and LRB (channel configuration 3)
 
#define REGION_2CH_NUM   = (REGION_2CH_END - REGION_2CH_FIRST)
 Number of 2 channel regions.
 
#define REGION_3CH_NUM   = (REGION_3CH_END - REGION_3CH_FIRST)
 Number of 3 channel regions.
 

Typedefs

typedef uint16_t node_id_t
 Node ID type.
 
typedef int16_t zpal_tx_power_t
 Parameter type to store deci dBm values.
 
typedef void(* zpal_radio_callback_t) (zpal_radio_event_t event)
 Callback type used for radio events.
 
typedef void(* zpal_radio_receive_handler_t) (zpal_radio_rx_parameters_t *rx_parameters, zpal_radio_receive_frame_t *frame)
 Function pointer declaration for handling of received frames.
 

Enumerations

enum  zpal_radio_mode_t {
  ZPAL_RADIO_MODE_NON_LISTENING ,
  ZPAL_RADIO_MODE_ALWAYS_LISTENING ,
  ZPAL_RADIO_MODE_FLIRS
}
 Defines the different radio modes supported by Z-Wave. More...
 
enum  zpal_radio_wakeup_t {
  ZPAL_RADIO_WAKEUP_NEVER_LISTEN ,
  ZPAL_RADIO_WAKEUP_ALWAYS_LISTEN ,
  ZPAL_RADIO_WAKEUP_EVERY_250ms ,
  ZPAL_RADIO_WAKEUP_EVERY_1000ms
}
 Wakeup interval for the radio. A FLiRS node will use 250 or 1000 ms interval, all other nodes should be configured as always listening. More...
 
enum  zpal_radio_crc_t {
  ZPAL_RADIO_CRC_NONE ,
  ZPAL_RADIO_CRC_8_BIT_XOR ,
  ZPAL_RADIO_CRC_16_BIT_CCITT
}
 Enumeration containing supported checksum types in Z-Wave. More...
 
enum  zpal_radio_speed_t {
  ZPAL_RADIO_SPEED_UNDEFINED ,
  ZPAL_RADIO_SPEED_9600 ,
  ZPAL_RADIO_SPEED_40K ,
  ZPAL_RADIO_SPEED_100K ,
  ZPAL_RADIO_SPEED_100KLR
}
 Enumeration containing supported baud rates. More...
 
enum  zpal_radio_lr_channel_t {
  ZPAL_RADIO_LR_CHANNEL_UNINITIALIZED ,
  ZPAL_RADIO_LR_CHANNEL_A ,
  ZPAL_RADIO_LR_CHANNEL_B ,
  ZPAL_RADIO_LR_CHANNEL_UNKNOWN ,
  ZPAL_RADIO_LR_CHANNEL_AUTO = 255
}
 Enumeration containing Long Range Channels. More...
 
enum  zpal_radio_zwave_channel_t {
  ZPAL_RADIO_ZWAVE_CHANNEL_0 = 0 ,
  ZPAL_RADIO_ZWAVE_CHANNEL_1 = 1 ,
  ZPAL_RADIO_ZWAVE_CHANNEL_2 = 2 ,
  ZPAL_RADIO_ZWAVE_CHANNEL_3 = 3 ,
  ZPAL_RADIO_ZWAVE_CHANNEL_4 = 4 ,
  ZPAL_RADIO_ZWAVE_CHANNEL_UNKNOWN = 0xFF
}
 Enumeration containing Z-Wave channels. More...
 
enum  zpal_radio_protocol_mode_t {
  ZPAL_RADIO_PROTOCOL_MODE_1 ,
  ZPAL_RADIO_PROTOCOL_MODE_2 ,
  ZPAL_RADIO_PROTOCOL_MODE_3 ,
  ZPAL_RADIO_PROTOCOL_MODE_4 ,
  ZPAL_RADIO_PROTOCOL_MODE_UNDEFINED = 0xFF
}
 Enumeration containing Z-Wave channels known as protocol modes. More...
 
enum  zpal_radio_lr_channel_config_t {
  ZPAL_RADIO_LR_CH_CFG_NO_LR ,
  ZPAL_RADIO_LR_CH_CFG1 ,
  ZPAL_RADIO_LR_CH_CFG2 ,
  ZPAL_RADIO_LR_CH_CFG3 ,
  ZPAL_RADIO_LR_CH_CFG_COUNT
}
 List of LR channel configurations. Used to select the correct phy configuration. More...
 
enum  zpal_radio_region_t {
  REGION_2CH_FIRST = 0 ,
  REGION_EU = REGION_2CH_FIRST ,
  REGION_US ,
  REGION_ANZ ,
  REGION_HK ,
  REGION_DEPRECATED_4 ,
  REGION_IN = 5 ,
  REGION_IL ,
  REGION_RU ,
  REGION_CN ,
  REGION_US_LR ,
  REGION_DEPRECATED_10 ,
  REGION_EU_LR ,
  REGION_2CH_END ,
  REGION_3CH_FIRST = 32 ,
  REGION_JP = REGION_3CH_FIRST ,
  REGION_KR ,
  REGION_3CH_END ,
  REGION_DEPRECATED_48 = 48 ,
  REGION_UNDEFINED = 0xFE ,
  REGION_DEFAULT = 0xFF
}
 Enumeration official Z-Wave regions. More...
 
enum  zpal_radio_tx_power_t {
  ZPAL_RADIO_TX_POWER_DEFAULT ,
  ZPAL_RADIO_TX_POWER_MINUS1_DBM ,
  ZPAL_RADIO_TX_POWER_MINUS2_DBM ,
  ZPAL_RADIO_TX_POWER_MINUS3_DBM ,
  ZPAL_RADIO_TX_POWER_MINUS4_DBM ,
  ZPAL_RADIO_TX_POWER_MINUS5_DBM ,
  ZPAL_RADIO_TX_POWER_MINUS6_DBM ,
  ZPAL_RADIO_TX_POWER_MINUS7_DBM ,
  ZPAL_RADIO_TX_POWER_MINUS8_DBM ,
  ZPAL_RADIO_TX_POWER_MINUS9_DBM ,
  ZPAL_RADIO_TX_POWER_UNINITIALIZED = 126 ,
  ZPAL_RADIO_TX_POWER_REDUCED = 127
}
 Enumeration containing Tx power settings. More...
 
enum  zpal_radio_header_type_t {
  ZPAL_RADIO_HEADER_TYPE_2CH ,
  ZPAL_RADIO_HEADER_TYPE_3CH ,
  ZPAL_RADIO_HEADER_TYPE_LR ,
  ZPAL_RADIO_HEADER_TYPE_UNDEFINED
}
 Z-Wave Frame header format types. More...
 
enum  zpal_radio_event_t {
  ZPAL_RADIO_EVENT_NONE ,
  ZPAL_RADIO_EVENT_RX_COMPLETE ,
  ZPAL_RADIO_EVENT_TX_COMPLETE ,
  ZPAL_RADIO_EVENT_RX_BEAM_COMPLETE ,
  ZPAL_RADIO_EVENT_TX_BEAM_COMPLETE ,
  ZPAL_RADIO_EVENT_RX_ABORT ,
  ZPAL_RADIO_EVENT_TX_FAIL ,
  ZPAL_RADIO_EVENT_TX_FAIL_LBT ,
  ZPAL_RADIO_EVENT_RXTX_CALIBRATE ,
  ZPAL_RADIO_EVENT_MASK = 0x1F ,
  ZPAL_RADIO_EVENT_FLAG_SUCCESS = 0x80 ,
  ZPAL_RADIO_EVENT_TX_TIMEOUT = 254 ,
  ZPAL_RADIO_EVENT_RX_TIMEOUT = 255
}
 Enumeratio radio events. More...
 
enum  zpal_radio_status_t {
  ZPAL_RADIO_STATUS_IDLE ,
  ZPAL_RADIO_STATUS_RX ,
  ZPAL_RADIO_STATUS_TX ,
  ZPAL_RADIO_STATUS_TX_BEAM ,
  ZPAL_RADIO_STATUS_RX_BEAM
}
 Radio status. More...
 

Functions

void zpal_radio_set_network_ids (uint32_t home_id, node_id_t node_id, zpal_radio_mode_t mode, uint8_t home_id_hash)
 Sets the home ID, the node ID and the radio mode.
 
void zpal_radio_init (zpal_radio_profile_t *const profile)
 Initializes the radio.
 
zpal_status_t zpal_radio_change_region (zpal_radio_region_t eRegion, zpal_radio_lr_channel_config_t eLrChCfg)
 Function used to change region and Long Range mode at the same time.
 
zpal_radio_region_t zpal_radio_get_region (void)
 Function for getting REGION runtime.
 
zpal_status_t zpal_radio_transmit (zpal_radio_transmit_parameter_t const *const tx_parameters, uint8_t frame_header_length, uint8_t const *const frame_header_buffer, uint8_t frame_payload_length, uint8_t const *const frame_payload_buffer, uint8_t use_lbt, int8_t tx_power)
 Function for transmitting a Z-Wave frame though the radio.
 
zpal_status_t zpal_radio_transmit_beam (zpal_radio_transmit_parameter_t const *const tx_parameters, uint8_t beam_data_len, uint8_t const *const beam_data, int8_t tx_power)
 Function for transmitting a Z-Wave Beam frame though the radio.
 
void zpal_radio_start_receive ()
 Starts the receiver and enables reception of frames.
 
void zpal_radio_get_last_received_frame (void)
 Function to get last received frame. If a frame is received, zpal_radio_receive_handler_t will be invoked.
 
void zpal_radio_power_down (void)
 Powers down the radio transceiver.
 
zpal_radio_protocol_mode_t zpal_radio_get_protocol_mode (void)
 Function to get the protocol mode used in the configured region.
 
zpal_radio_zwave_channel_t zpal_radio_get_last_beam_channel (void)
 Get last beam channel. Retrieve the channel on which we have last received a beam on.
 
int8_t zpal_radio_get_last_beam_rssi (void)
 Get last beam RSSI. Retrieve the RSSI of the last beam received.
 
void zpal_radio_set_lbt_level (uint8_t channel, int8_t level)
 Function for setting the LBT RSSI level.
 
void zpal_radio_enable_rx_broadcast_beam (bool enable)
 Enable or disables reception of broadcast beam. Enable or disable FLiRS broadcast address.
 
void zpal_radio_clear_tx_timers (void)
 Function for clearing current Channel Transmit timers.
 
void zpal_radio_clear_network_stats (void)
 Function for clearing current Network statistics.
 
void zpal_radio_rf_channel_statistic_clear (zpal_radio_zwave_channel_t zwavechannel)
 Function for clearing specified rf channel statistics.
 
bool zpal_radio_rf_channel_statistic_get (zpal_radio_zwave_channel_t zwavechannel, zpal_radio_rf_channel_statistic_t *p_radio_channel_statistic)
 
void zpal_radio_rf_channel_statistic_tx_channel_set (zpal_radio_zwave_channel_t zwavechannel)
 Function for setting the zwavechannel used when calling zpal_radio_rf_channel_statistic_tx_frames, zpal_radio_rf_channel_statistic_tx_retries and zpal_radio_rf_channel_statistic_tx_lbt_failures.
 
void zpal_radio_rf_channel_statistic_tx_frames (void)
 Function for incrementing the rf channel tx frame statistic.
 
void zpal_radio_rf_channel_statistic_tx_retries (void)
 Function for incrementing the rf channel tx retries statistic.
 
void zpal_radio_rf_channel_statistic_tx_lbt_failures (void)
 Function for incrementing the rf channel tx lbt failures.
 
void zpal_radio_rf_channel_statistic_background_rssi_average_update (zpal_radio_zwave_channel_t zwavechannel, int8_t rssi)
 Function for updating the rf channel background noise rssi average statistic.
 
void zpal_radio_rf_channel_statistic_end_device_rssi_average_update (zpal_radio_zwave_channel_t zwavechannel, int8_t rssi)
 Function for updating the rf channel end device noise rssi average statistic.
 
zpal_status_t zpal_radio_get_background_rssi (uint8_t channel, int8_t *rssi)
 Returns the background RSSI.
 
zpal_tx_power_t zpal_radio_get_default_tx_power (void)
 Function for getting the default tx power in deci dBm.
 
uint8_t zpal_radio_get_reduce_tx_power (void)
 Function for getting the current reduce RF tx power compared to the default normal power in dBm.
 
void zpal_radio_enable_flirs (void)
 Allows the radio to go into FLiRS receive mode.
 
bool zpal_radio_is_flirs_enabled (void)
 Returns whether FLiRS mode is enabled in the radio.
 
void zpal_radio_start_receive_after_power_down (bool wait_for_beam)
 Starts the receiver after power down.
 
void zpal_radio_abort (void)
 Turn radio off without changing configuration.
 
void zpal_radio_reset_after_beam_receive (bool start_receiver)
 Resets the radio configuration to receive mode after having received a beam.
 
bool zpal_radio_is_fragmented_beam_enabled (void)
 Returns whether use of fragmented beams is enabled or not for the active region.
 
void zpal_radio_calibrate (void)
 Calibrates the radio. Z-Wave expects the radio ZPAL implementation to generate a ZPAL_RADIO_EVENT_RXTX_CALIBRATE event when calibration is required. The event will invoke this function in non-interrupt context.
 
bool zpal_radio_is_lbt_enabled (void)
 Returns whether listen before talk (LBT) is enabled.
 
uint16_t zpal_radio_get_beam_startup_time (void)
 Returns the time it takes to start transmission of wake up beams. Includes time spent on LBT.
 
node_id_t zpal_radio_get_beam_node_id (void)
 Returns the node ID associated with most recently received beam frame.
 
zpal_tx_power_t zpal_radio_get_minimum_lr_tx_power (void)
 Returns the minimum transmit power for Z-Wave Long Range.
 
zpal_tx_power_t zpal_radio_get_maximum_lr_tx_power (void)
 Returns the maximum transmit power for Z-Wave Long Range.
 
bool zpal_radio_is_debug_enabled (void)
 Returns whether debug is enabled or disabled.
 
const zpal_radio_profile_tzpal_radio_get_rf_profile (void)
 a getter on the current rf profile. Function return a pointer (instead of a struct) to reduce RAM memory usage and execution time. The pointer target a const structure because it should not be used to modify the content of the structure.
 
zpal_radio_lr_channel_config_t zpal_radio_get_lr_channel_config (void)
 Function to read current Long Range Channel Configuration.
 
zpal_radio_lr_channel_t zpal_radio_get_primary_long_range_channel (void)
 Function to read current Primary Long Range Channel.
 
void zpal_radio_set_primary_long_range_channel (zpal_radio_lr_channel_t channel)
 Function to set the Primary Long Range Channel.
 
bool zpal_radio_get_long_range_channel_auto_mode (void)
 Function to read current Long Range Channel selection mode.
 
void zpal_radio_set_long_range_channel_auto_mode (bool enable)
 Function to set the Long Range Channel selction mode.
 
void zpal_radio_set_long_range_lock (bool lock)
 Function to the set Long Range channel Locked status.
 
bool zpal_radio_is_long_range_locked (void)
 Function to read the Long Range channel Locked status.
 
bool zpal_radio_is_region_supported (const zpal_radio_region_t region)
 Function to check if the stack implementation supports a given region.
 
int8_t zpal_radio_get_flirs_beam_tx_power (void)
 Read the saved tx power of the last received long-range beam.
 
bool zpal_radio_is_transmit_allowed (uint8_t channel, uint8_t frame_length, uint8_t frame_priority)
 Check if transmission is allowed for specified channel.
 
bool zpal_radio_attenuate (uint8_t adjust_tx_power)
 Function to reduce Tx power of classic non-listening devices.
 
zpal_tx_power_t zpal_radio_get_maximum_tx_power (void)
 Return the maximum board supported tx power for classic z-wave.
 
void zpal_radio_request_calibration (bool forced)
 Function to radio calibration.
 

Detailed Description

Defines a platform abstraction layer for the Z-Wave radio.