Z-Wave#

Z-Wave configuration routines.

The functions in this group configure RAIL Z-Wave hardware acceleration features.

To configure Z-Wave functionality, the application must first set up a RAIL instance with RAIL_Init() and other setup functions.

RAIL_ZWAVE_NodeId_t gRecentBeamNodeId;
uint8_t gRecentBeamChannelIndex;

// Main RAIL_EVENT callback
static void RAILCb_Event(RAIL_Handle_t railHandle, RAIL_Events_t events)
{
  // Get beam Node Id and channel index from beam packet
  if (events & RAIL_EVENT_ZWAVE_BEAM) {
    if (RAIL_ZWAVE_IsEnabled(railHandle)) {
      if ((RAIL_ZWAVE_GetBeamNodeId(railHandle, &gRecentBeamNodeId)
           != RAIL_STATUS_NO_ERROR)
          || (RAIL_ZWAVE_GetBeamChannelIndex(railHandle, &gRecentBeamChannelIndex)
              != RAIL_STATUS_NO_ERROR)) {
        return;
      }
    }
  }
}

static const RAIL_ZWAVE_Config_t zwaveConfig = {
  .options = RAIL_ZWAVE_OPTIONS_DEFAULT
};

RAIL_Status_t zwaveInit(void)
{
  // initialize Z-Wave
  RAIL_Status_t status = RAIL_ZWAVE_Init(railHandle, &zwaveConfig);

  if (status != RAIL_STATUS_NO_ERROR) {
    return status;
  }

  uint8_t myHomeId[4] = { 0xDE, 0xAD, 0xBE, 0xEF };
  RAIL_ZWAVE_SetNodeId(railHandle, RAIL_ZWAVE_NODE_ID_DEFAULT);
  RAIL_ZWAVE_SetHomeId(railHandle, myHomeId, RAIL_ZWAVE_HOME_ID_HASH_DONT_CARE);

  // configure region to EU(European Union)
  return RAIL_ZWAVE_ConfigRegion(railHandle, RAIL_ZWAVE_REGION_EU);
}

Modules#

RAIL_ZWAVE_Config_t

RAIL_ZWAVE_LrAckData_t

RAIL_ZWAVE_BeamRxConfig_t

RAIL_ZWAVE_RegionConfig_t

RAIL_ZWAVE_IrcalVal_t

Enumerations#

enum
RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE_SHIFT = 0
RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES_SHIFT = 1
RAIL_ZWAVE_OPTION_NODE_ID_FILTERING_SHIFT = 2
RAIL_ZWAVE_OPTION_PROMISCUOUS_BEAM_MODE_SHIFT = 3
}

Z-Wave options.

enum
RAIL_ZWAVE_NODE_ID_NONE = 0x00U
RAIL_ZWAVE_NODE_ID_BROADCAST = 0xFFU
RAIL_ZWAVE_NODE_ID_DEFAULT = RAIL_ZWAVE_NODE_ID_BROADCAST
RAIL_ZWAVE_NODE_ID_BROADCAST_LONGRANGE = 0xFFFU
RAIL_ZWAVE_NODE_ID_DEFAULT_LONGRANGE = RAIL_ZWAVE_NODE_ID_BROADCAST_LONGRANGE
}

A Z-Wave Node Id.

enum
RAIL_ZWAVE_HOME_ID_UNKNOWN = 0x00000000U
RAIL_ZWAVE_HOME_ID_DEFAULT = 0x54545454U
}

A Z-Wave Home Id.

enum
RAIL_ZWAVE_HOME_ID_HASH_ILLEGAL_1 = 0x0AU
RAIL_ZWAVE_HOME_ID_HASH_ILLEGAL_2 = 0x4AU
RAIL_ZWAVE_HOME_ID_HASH_ILLEGAL_3 = 0x55U
RAIL_ZWAVE_HOME_ID_HASH_DONT_CARE = 0x55U
RAIL_ZWAVE_HOME_ID_HASH_DEFAULT = RAIL_ZWAVE_HOME_ID_HASH_DONT_CARE
}

A Z-Wave Home Id hash.

enum
RAIL_ZWAVE_BAUD_9600
RAIL_ZWAVE_BAUD_40K
RAIL_ZWAVE_BAUD_100K
RAIL_ZWAVE_LR
RAIL_ZWAVE_ENERGY_DETECT = RAIL_ZWAVE_LR
RAIL_ZWAVE_BAUD_INVALID
}

Z-Wave supported baud rates or PHYs.

enum
RAIL_ZWAVE_REGIONID_UNKNOWN = 0
RAIL_ZWAVE_REGIONID_EU = 1
RAIL_ZWAVE_REGIONID_US = 2
RAIL_ZWAVE_REGIONID_ANZ = 3
RAIL_ZWAVE_REGIONID_HK = 4
RAIL_ZWAVE_REGIONID_MY = 5
RAIL_ZWAVE_REGIONID_IN = 6
RAIL_ZWAVE_REGIONID_JP = 7
RAIL_ZWAVE_REGIONID_RU = 8
RAIL_ZWAVE_REGIONID_IL = 9
RAIL_ZWAVE_REGIONID_KR = 10
RAIL_ZWAVE_REGIONID_CN = 11
RAIL_ZWAVE_REGIONID_US_LR1 = 12
RAIL_ZWAVE_REGIONID_US_LR2 = 13
RAIL_ZWAVE_REGIONID_US_LR3 = 14
RAIL_ZWAVE_REGIONID_US_LR_END_DEVICE = RAIL_ZWAVE_REGIONID_US_LR3
RAIL_ZWAVE_REGIONID_EU_LR1 = 15
RAIL_ZWAVE_REGIONID_EU_LR2 = 16
RAIL_ZWAVE_REGIONID_EU_LR3 = 17
RAIL_ZWAVE_REGIONID_EU_LR_END_DEVICE = RAIL_ZWAVE_REGIONID_EU_LR3
RAIL_ZWAVE_REGIONID_COUNT
}

Z-Wave region identifications.

Typedefs#

Rx channel hopping on-channel time for all Z-Wave channels in a region.

Functions#

RAIL_ZWAVE_ConfigRegion(RAIL_Handle_t railHandle, const RAIL_ZWAVE_RegionConfig_t *regionCfg)

Switch the Z-Wave region.

RAIL_ZWAVE_PerformIrcal(RAIL_Handle_t railHandle, RAIL_ZWAVE_IrcalVal_t *pIrCalVals, bool forceIrcal)

Perform image rejection calibration on all valid channels of a Z-Wave region.

RAIL_ZWAVE_Init(RAIL_Handle_t railHandle, const RAIL_ZWAVE_Config_t *config)

Initialize RAIL for Z-Wave features.

RAIL_ZWAVE_Deinit(RAIL_Handle_t railHandle)

De-initialize Z-Wave hardware acceleration.

bool
RAIL_ZWAVE_IsEnabled(RAIL_Handle_t railHandle)

Return whether Z-Wave hardware acceleration is currently enabled.

RAIL_ZWAVE_ConfigOptions(RAIL_Handle_t railHandle, RAIL_ZWAVE_Options_t mask, RAIL_ZWAVE_Options_t options)

Configure Z-Wave options.

RAIL_ZWAVE_SetNodeId(RAIL_Handle_t railHandle, RAIL_ZWAVE_NodeId_t nodeId)

Inform RAIL of the Z-Wave node's Node Id for receive filtering.

RAIL_ZWAVE_SetHomeId(RAIL_Handle_t railHandle, RAIL_ZWAVE_HomeId_t homeId, RAIL_ZWAVE_HomeIdHash_t homeIdHash)

Inform RAIL of the Z-Wave node's Home Id and its hash for receive filtering.

RAIL_ZWAVE_GetBeamNodeId(RAIL_Handle_t railHandle, RAIL_ZWAVE_NodeId_t *pNodeId)

Get the Node Id of the most recently seen beam frame that triggered RAIL_EVENT_ZWAVE_BEAM.

RAIL_ZWAVE_GetBeamHomeIdHash(RAIL_Handle_t railHandle, RAIL_ZWAVE_HomeIdHash_t *pBeamHomeIdHash)

Get the Home Id hash of the most recently seen beam frame that triggered RAIL_EVENT_ZWAVE_BEAM.

RAIL_ZWAVE_GetBeamChannelIndex(RAIL_Handle_t railHandle, uint8_t *pChannelIndex)

Get the channel hopping index of the most recently seen beam frame that triggered RAIL_EVENT_ZWAVE_BEAM.

RAIL_ZWAVE_GetLrBeamTxPower(RAIL_Handle_t railHandle, uint8_t *pLrBeamTxPower)

Get the TX power used by the transmitter of the most recently seen long range beam frame that triggered RAIL_EVENT_ZWAVE_BEAM.

RAIL_ZWAVE_GetBeamRssi(RAIL_Handle_t railHandle, int8_t *pBeamRssi)

Get the RSSI of the received beam frame.

RAIL_ZWAVE_SetTxLowPower(RAIL_Handle_t railHandle, uint8_t powerLevel)

Set the Raw Low Power settings.

RAIL_ZWAVE_SetTxLowPowerDbm(RAIL_Handle_t railHandle, RAIL_TxPower_t powerLevel)

Set the Low Power settings in deci-dBm.

RAIL_ZWAVE_GetTxLowPower(RAIL_Handle_t railHandle)

Get the TX low power in raw units (see rail_chip_specific.h for value ranges).

RAIL_ZWAVE_GetTxLowPowerDbm(RAIL_Handle_t railHandle)

Get the TX low power in terms of deci-dBm instead of raw power level.

RAIL_ZWAVE_ReceiveBeam(RAIL_Handle_t railHandle, uint8_t *beamDetectIndex, const RAIL_SchedulerInfo_t *schedulerInfo)

Implement beam detection and reception algorithms.

RAIL_ZWAVE_ConfigBeamRx(RAIL_Handle_t railHandle, RAIL_ZWAVE_BeamRxConfig_t *config)

Configure the receive algorithm used in RAIL_ZWAVE_ReceiveBeam().

RAIL_ZWAVE_SetDefaultRxBeamConfig(RAIL_Handle_t railHandle)

Set the default RX beam configuration.

RAIL_ZWAVE_GetRxBeamConfig(RAIL_ZWAVE_BeamRxConfig_t *pConfig)

Get the current RX beam configuration.

RAIL_ZWAVE_ConfigRxChannelHopping(RAIL_Handle_t railHandle, RAIL_RxChannelHoppingConfig_t *config)

Configure the channel hop timings for use in Z-Wave RX channel hop configuration.

RAIL_ZWAVE_GetRegion(RAIL_Handle_t railHandle)

Get the Z-Wave region.

RAIL_ZWAVE_SetLrAckData(RAIL_Handle_t railHandle, const RAIL_ZWAVE_LrAckData_t *pLrAckData)

Write the Auto-Ack FIFO for the next outgoing Z-Wave Long Range Ack.

Macros#

#define

A value representing no options.

#define
RAIL_ZWAVE_OPTIONS_DEFAULT RAIL_ZWAVE_OPTIONS_NONE

All options are disabled by default.

#define
RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE (1u << RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE_SHIFT)

An option to configure promiscuous mode, accepting non-beam packets regardless of their Home Id.

#define
RAIL_ZWAVE_OPTION_NODE_ID_FILTERING (1u << RAIL_ZWAVE_OPTION_NODE_ID_FILTERING_SHIFT)

An option to filter non-beam packets based on their Node Id when RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE is disabled.

#define
RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES (1u << RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES_SHIFT)

An option to configure beam frame recognition.

#define
RAIL_ZWAVE_OPTION_PROMISCUOUS_BEAM_MODE (1u << RAIL_ZWAVE_OPTION_PROMISCUOUS_BEAM_MODE_SHIFT)

An option to receive all beams promiscuously when RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES is enabled.

#define

A value representing all options.

#define

Sentinel value to indicate that a channel (and thus its frequency) are invalid.

#define

Invalid beam TX power value returned when RAIL_ZWAVE_GetLrBeamTxPower() is called after receiving a regular non-long-range beam.

#define

Number of channels in each of Z-Wave's region-based PHYs.

#define
RAIL_ZWAVE_REGION_US_LR_END_DEVICE RAIL_ZWAVE_REGION_US_LR3

Backwards-compatible define.

#define
RAIL_ZWAVE_REGION_EU_LR_END_DEVICE RAIL_ZWAVE_REGION_EU_LR3

Backwards-compatible define.

Enumeration Documentation#

RAIL_ZWAVE_Options_t#

RAIL_ZWAVE_Options_t

Z-Wave options.

Enumerator
RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE_SHIFT

Shift position of RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE bit.

RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES_SHIFT

Shift position of RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES bit.

RAIL_ZWAVE_OPTION_NODE_ID_FILTERING_SHIFT

Shift position of RAIL_ZWAVE_OPTION_NODE_ID_FILTERING bit.

RAIL_ZWAVE_OPTION_PROMISCUOUS_BEAM_MODE_SHIFT

Shift position of RAIL_ZWAVE_OPTION_PROMISCUOUS_BEAM_MODE bit.


Definition at line 97 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_NodeId_t#

RAIL_ZWAVE_NodeId_t

A Z-Wave Node Id.

This data type is 12 bits wide when using the ZWave Long Range PHY, and 8 bits wide otherwise.

Note

  • When using the Long Range PHY, values 0xFA1..0xFFE are reserved. Otherwise, values 0xE9..0xFE are reserved.

Enumerator
RAIL_ZWAVE_NODE_ID_NONE

The unknown Node Id for uninitialized nodes.

RAIL_ZWAVE_NODE_ID_BROADCAST

The broadcast Node Id.

RAIL_ZWAVE_NODE_ID_DEFAULT

Default to the broadcast Node Id.

RAIL_ZWAVE_NODE_ID_BROADCAST_LONGRANGE

The Long Range broadcast Node Id.

RAIL_ZWAVE_NODE_ID_DEFAULT_LONGRANGE

Default to the Long Range broadcast Node Id.


Definition at line 175 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_HomeId_t#

RAIL_ZWAVE_HomeId_t

A Z-Wave Home Id.

Note

  • Home Ids in the range 0x54000000..0x55FFFFFF are illegal.

Enumerator
RAIL_ZWAVE_HOME_ID_UNKNOWN

The unknown Home Id.

RAIL_ZWAVE_HOME_ID_DEFAULT

An impossible and unlikely Home Id.


Definition at line 213 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_HomeIdHash_t#

RAIL_ZWAVE_HomeIdHash_t

A Z-Wave Home Id hash.

Note

  • Certain values (as shown) are illegal.

Enumerator
RAIL_ZWAVE_HOME_ID_HASH_ILLEGAL_1

An illegal Home Id hash value.

RAIL_ZWAVE_HOME_ID_HASH_ILLEGAL_2

An illegal Home Id hash value.

RAIL_ZWAVE_HOME_ID_HASH_ILLEGAL_3

An illegal Home Id hash value.

RAIL_ZWAVE_HOME_ID_HASH_DONT_CARE

Illegal Home Id hash value that suppresses checking the Home Id hash field of beam packets.

RAIL_ZWAVE_HOME_ID_HASH_DEFAULT

Default to don't care.


Definition at line 232 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_Baud_t#

RAIL_ZWAVE_Baud_t

Z-Wave supported baud rates or PHYs.

Enumerator
RAIL_ZWAVE_BAUD_9600

9.6 kbps baud rate.

RAIL_ZWAVE_BAUD_40K

40 kbps baud rate.

RAIL_ZWAVE_BAUD_100K

100 kbps baud rate.

RAIL_ZWAVE_LR

Long Range PHY.

RAIL_ZWAVE_ENERGY_DETECT

Energy detection PHY.

RAIL_ZWAVE_BAUD_INVALID

Sentinel value for invalid baud rate.


Definition at line 280 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_RegionId_t#

RAIL_ZWAVE_RegionId_t

Z-Wave region identifications.

Enumerator
RAIL_ZWAVE_REGIONID_UNKNOWN

Unknown/Invalid.

RAIL_ZWAVE_REGIONID_EU

European Union.

RAIL_ZWAVE_REGIONID_US

United States.

RAIL_ZWAVE_REGIONID_ANZ

Australia/New Zealand.

RAIL_ZWAVE_REGIONID_HK

Hong Kong.

RAIL_ZWAVE_REGIONID_MY

Malaysia.

RAIL_ZWAVE_REGIONID_IN

India.

RAIL_ZWAVE_REGIONID_JP

Japan.

RAIL_ZWAVE_REGIONID_RU

Russian Federation.

RAIL_ZWAVE_REGIONID_IL

Israel.

RAIL_ZWAVE_REGIONID_KR

Korea.

RAIL_ZWAVE_REGIONID_CN

China.

RAIL_ZWAVE_REGIONID_US_LR1

United States, with first long range PHY.

RAIL_ZWAVE_REGIONID_US_LR2

United States, with second long range PHY.

RAIL_ZWAVE_REGIONID_US_LR3

United States, with third long range PHY.

RAIL_ZWAVE_REGIONID_US_LR_END_DEVICE

DeprecatedBackwards compatible name.

RAIL_ZWAVE_REGIONID_EU_LR1

European Union, with first long range PHY.

RAIL_ZWAVE_REGIONID_EU_LR2

European Union, with second long range PHY.

RAIL_ZWAVE_REGIONID_EU_LR3

European Union, with third long range PHY.

RAIL_ZWAVE_REGIONID_EU_LR_END_DEVICE

DeprecatedBackwards compatible name.

RAIL_ZWAVE_REGIONID_COUNT

Count of known regions.


Definition at line 345 of file protocol/zwave/rail_zwave.h

Typedef Documentation#

RAIL_RxChannelHoppingParameters_t#

RAIL_RxChannelHoppingParameters_t [(4U)]

Rx channel hopping on-channel time for all Z-Wave channels in a region.


Definition at line 504 of file protocol/zwave/rail_zwave.h

Variable Documentation#

RAIL_ZWAVE_REGION_EU#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_EU

EU-European Union.


Definition at line 930 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_US#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_US

US-United States.


Definition at line 933 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_ANZ#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_ANZ

ANZ-Australia/New Zealand.


Definition at line 936 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_HK#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_HK

HK-Hong Kong.


Definition at line 939 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_MY#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_MY

MY-Malaysia.


Definition at line 942 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_IN#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_IN

IN-India.


Definition at line 945 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_JP#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_JP

JP-Japan.


Definition at line 948 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_JPED#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_JPED

JP-Japan Energy-Detect.


Definition at line 951 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_RU#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_RU

RU-Russia.


Definition at line 954 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_IL#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_IL

IL-Israel.


Definition at line 957 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_KR#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_KR

KR-Korea.


Definition at line 960 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_KRED#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_KRED

KR-Korea Energy-Detect.


Definition at line 963 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_CN#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_CN

CN-China.


Definition at line 966 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_US_LR1#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_US_LR1

US-Long Range 1.


Definition at line 969 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_US_LR2#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_US_LR2

US-Long Range 2.


Definition at line 972 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_US_LR3#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_US_LR3

US-Long Range 3.


Definition at line 975 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_EU_LR1#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_EU_LR1

EU-Long Range 1.


Definition at line 980 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_EU_LR2#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_EU_LR2

EU-Long Range 2.


Definition at line 983 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_EU_LR3#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_EU_LR3

EU-Long Range 3.


Definition at line 986 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_INVALID#

const RAIL_ZWAVE_RegionConfig_t RAIL_ZWAVE_REGION_INVALID

Invalid Region.


Definition at line 991 of file protocol/zwave/rail_zwave.h

Function Documentation#

RAIL_ZWAVE_ConfigRegion#

RAIL_Status_t RAIL_ZWAVE_ConfigRegion (RAIL_Handle_t railHandle, const RAIL_ZWAVE_RegionConfig_t * regionCfg)

Switch the Z-Wave region.

Parameters
[in]railHandle

A RAIL instance handle.

[in]regionCfg

A pointer to a Z-Wave channel configuration for the selected region.

Returns

  • Status code indicating success of the function call.

Note

  • Setting a new Z-Wave Region will default any Low Power values to Normal Power values for the region. Z-Wave Region configuration must always be followed by a Low Power setup in case one desires to have the Low Power Acking functionality.


Definition at line 518 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_PerformIrcal#

RAIL_Status_t RAIL_ZWAVE_PerformIrcal (RAIL_Handle_t railHandle, RAIL_ZWAVE_IrcalVal_t * pIrCalVals, bool forceIrcal)

Perform image rejection calibration on all valid channels of a Z-Wave region.

Parameters
[in]railHandle

A RAIL instance handle.

[inout]pIrCalVals

An application-provided pointer of type RAIL_ZWAVE_IrcalVal_t. This is populated with image rejection calibration values, if not NULL or initialized with RAIL_CAL_INVALID_VALUE or if forceIrcal is true.

[in]forceIrcal

If true, will always perform image rejection calibration and not use previously cached values.

Returns

  • Status code indicating success of the function call.

Note


Definition at line 540 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_Init#

RAIL_Status_t RAIL_ZWAVE_Init (RAIL_Handle_t railHandle, const RAIL_ZWAVE_Config_t * config)

Initialize RAIL for Z-Wave features.

Parameters
[in]railHandle

A RAIL instance handle.

[in]config

A pointer to a Z-Wave configuration structure.

Returns

  • Status code indicating success of the function call.

This function is the entry point for working with Z-Wave within RAIL. It sets up relevant hardware acceleration for Z-Wave-specific features, such as Home Id filtering and beam packets (as specified in the configuration) and allows users to select the relevant Z-Wave region-specific PHY via RAIL_ZWAVE_ConfigRegion().


Definition at line 557 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_Deinit#

RAIL_Status_t RAIL_ZWAVE_Deinit (RAIL_Handle_t railHandle)

De-initialize Z-Wave hardware acceleration.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

Disables and resets all Z-Wave hardware acceleration features. This function should only be called when the radio is idle.


Definition at line 569 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_IsEnabled#

bool RAIL_ZWAVE_IsEnabled (RAIL_Handle_t railHandle)

Return whether Z-Wave hardware acceleration is currently enabled.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • true if Z-Wave hardware acceleration was enabled to start with and false otherwise.


Definition at line 578 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_ConfigOptions#

RAIL_Status_t RAIL_ZWAVE_ConfigOptions (RAIL_Handle_t railHandle, RAIL_ZWAVE_Options_t mask, RAIL_ZWAVE_Options_t options)

Configure Z-Wave options.

Parameters
[in]railHandle

A RAIL instance handle.

[in]mask

A bitmask containing which options should be modified.

[in]options

A bitmask containing desired configuration settings. Bit positions for each option are found in the RAIL_ZWAVE_Options_t.

Returns

  • Status code indicating success of the function call.


Definition at line 589 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_SetNodeId#

RAIL_Status_t RAIL_ZWAVE_SetNodeId (RAIL_Handle_t railHandle, RAIL_ZWAVE_NodeId_t nodeId)

Inform RAIL of the Z-Wave node's Node Id for receive filtering.

Parameters
[in]railHandle

A RAIL instance handle.

[in]nodeId

A Z-Wave Node Id.

Returns

  • Status code indicating success of the function call.

Note


Definition at line 603 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_SetHomeId#

RAIL_Status_t RAIL_ZWAVE_SetHomeId (RAIL_Handle_t railHandle, RAIL_ZWAVE_HomeId_t homeId, RAIL_ZWAVE_HomeIdHash_t homeIdHash)

Inform RAIL of the Z-Wave node's Home Id and its hash for receive filtering.

Parameters
[in]railHandle

A RAIL instance handle.

[in]homeId

A Z-Wave Home Id.

[in]homeIdHash

The hash of the Home Id expected in beam frames. If this is RAIL_ZWAVE_HOME_ID_HASH_DONT_CARE, beam frame detection will not check the Home Id hash in a received beam frame at all, and RAIL_EVENT_ZWAVE_BEAM will trigger based solely on the Node Id in the beam frame.

Returns

  • Status code indicating success of the function call.

Note


Definition at line 622 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetBeamNodeId#

RAIL_Status_t RAIL_ZWAVE_GetBeamNodeId (RAIL_Handle_t railHandle, RAIL_ZWAVE_NodeId_t * pNodeId)

Get the Node Id of the most recently seen beam frame that triggered RAIL_EVENT_ZWAVE_BEAM.

Parameters
[in]railHandle

A RAIL instance handle.

[out]pNodeId

A pointer to RAIL_ZWAVE_NodeId_t to populate.

Returns

  • Status code indicating success of the function call.

Note

  • This is best called while handling the RAIL_EVENT_ZWAVE_BEAM event; if multiple beams are received only the most recent beam's NodeId is provided.


Definition at line 638 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetBeamHomeIdHash#

RAIL_Status_t RAIL_ZWAVE_GetBeamHomeIdHash (RAIL_Handle_t railHandle, RAIL_ZWAVE_HomeIdHash_t * pBeamHomeIdHash)

Get the Home Id hash of the most recently seen beam frame that triggered RAIL_EVENT_ZWAVE_BEAM.

Parameters
[in]railHandle

A RAIL instance handle.

[out]pBeamHomeIdHash

A pointer to RAIL_ZWAVE_HomeIdHash_t to populate.

Returns

  • Status code indicating success of the function call.

Note

  • This is best called while handling the RAIL_EVENT_ZWAVE_BEAM event; if multiple beams are received only the most recent beam's Home Id hash is provided.


Definition at line 653 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetBeamChannelIndex#

RAIL_Status_t RAIL_ZWAVE_GetBeamChannelIndex (RAIL_Handle_t railHandle, uint8_t * pChannelIndex)

Get the channel hopping index of the most recently seen beam frame that triggered RAIL_EVENT_ZWAVE_BEAM.

Parameters
[in]railHandle

A RAIL instance handle.

[out]pChannelIndex

A pointer to a uint8_t to populate with the channel hopping index. If channel-hopping was off at the time the beam packet was received, RAIL_CHANNEL_HOPPING_INVALID_INDEX is provided.

Returns

  • Status code indicating success of the function call.

Note

  • This is best called while handling the RAIL_EVENT_ZWAVE_BEAM event; if multiple beams are received only the most recent beam's channel hopping index is provided.


Definition at line 671 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetLrBeamTxPower#

RAIL_Status_t RAIL_ZWAVE_GetLrBeamTxPower (RAIL_Handle_t railHandle, uint8_t * pLrBeamTxPower)

Get the TX power used by the transmitter of the most recently seen long range beam frame that triggered RAIL_EVENT_ZWAVE_BEAM.

Parameters
[in]railHandle

A RAIL instance handle.

[out]pLrBeamTxPower

An application provided pointer to a uint8_t to be populated with the TX power of the latest long range beam. This will be set to RAIL_ZWAVE_LR_BEAM_TX_POWER_INVALID if this API is called after receiving a regular non-long-range beam.

Returns

  • Status code indicating success of the function call. This function will return RAIL_STATUS_INVALID_STATE if called after receiving a regular (non-long-range) beam.

Note

  • This is best called while handling the RAIL_EVENT_ZWAVE_BEAM event; if multiple beams are received only the most recent long range beam's TX power is provided.

  • The following table shows long range beam TX power value to dBm value mapping:

Tx Power Value

Description

0

-6 dBm

1

-2 dBm

2

+2 dBm

3

+6 dBm

4

+10 dBm

5

+13 dBm

6

+16 dBm

7

+19 dBm

8

+21 dBm

9

+23 dBm

10

+25 dBm

11

+26 dBm

12

+27 dBm

13

+28 dBm

14

+29 dBm

15

+30 dBm


Definition at line 714 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetBeamRssi#

RAIL_Status_t RAIL_ZWAVE_GetBeamRssi (RAIL_Handle_t railHandle, int8_t * pBeamRssi)

Get the RSSI of the received beam frame.

Parameters
[in]railHandle

A RAIL instance handle.

[out]pBeamRssi

An application provided pointer to a int8_t to be populated with the latest beam's RSSI, in dBm.

Returns

  • Status code indicating success of the function call. This function will return RAIL_STATUS_INVALID_STATE if called without ever having received a beam.

Note

  • This is best called while handling the RAIL_EVENT_ZWAVE_BEAM event; if multiple beams are received only the most recent beam's RSSI is provided.


Definition at line 731 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_SetTxLowPower#

RAIL_Status_t RAIL_ZWAVE_SetTxLowPower (RAIL_Handle_t railHandle, uint8_t powerLevel)

Set the Raw Low Power settings.

Parameters
[in]railHandle

A RAIL instance handle.

[in]powerLevel

Desired low power raw level.

Returns

  • Status code indicating success of the function call.

Low Power settings are required during Ack transmissions when the Low Power Bit is set. This setting is only valid for one subsequent transmission, after which all transmissions will be at the nominal power setting, until re-invoked.


Definition at line 746 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_SetTxLowPowerDbm#

RAIL_Status_t RAIL_ZWAVE_SetTxLowPowerDbm (RAIL_Handle_t railHandle, RAIL_TxPower_t powerLevel)

Set the Low Power settings in deci-dBm.

Parameters
[in]railHandle

A RAIL instance handle.

[in]powerLevel

Desired low power level deci-dBm.

Returns

  • Status code indicating success of the function call.

Low Power settings are required during Ack transmissions when the Low Power Bit is set. This setting is only valid for one subsequent transmission, after which all transmissions will be at the nominal power setting, until re-invoked.


Definition at line 761 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetTxLowPower#

RAIL_TxPowerLevel_t RAIL_ZWAVE_GetTxLowPower (RAIL_Handle_t railHandle)

Get the TX low power in raw units (see rail_chip_specific.h for value ranges).

Parameters
[in]railHandle

A RAIL instance handle.

Returns

This API returns the low raw power value that was set by RAIL_ZWAVE_SetTxLowPower().

Calling this function before configuring the Low Power PA (i.e., before a successful call to RAIL_ZWAVE_SetTxLowPowerDbm() or RAIL_ZWAVE_SetTxLowPower()) will return a low power value that is the same as the nominal power. Also, calling this function before configuring the PA (i.e., before a successful call to RAIL_ConfigTxPower()) will return RAIL_TX_POWER_LEVEL_INVALID.


Definition at line 783 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetTxLowPowerDbm#

RAIL_TxPower_t RAIL_ZWAVE_GetTxLowPowerDbm (RAIL_Handle_t railHandle)

Get the TX low power in terms of deci-dBm instead of raw power level.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • The chip-specific RAIL_TxPower_t value of the low transmit power in deci-dBm.


Definition at line 792 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_ReceiveBeam#

RAIL_Status_t RAIL_ZWAVE_ReceiveBeam (RAIL_Handle_t railHandle, uint8_t * beamDetectIndex, const RAIL_SchedulerInfo_t * schedulerInfo)

Implement beam detection and reception algorithms.

Parameters
[in]railHandle

A RAIL instance handle.

[out]beamDetectIndex

A pointer to an indicator of whether or not a beam was detected at all, regardless of if it was received, generally for use only by instruction from Silicon Labs. Can be NULL.

[in]schedulerInfo

A pointer to information to allow the radio scheduler to place this operation appropriately. This is only used in multiprotocol version of RAIL and may be set to NULL in all other versions. Note that Z-Wave currently does not support multiprotocol, so this scheduler info exists to future proof the API for when it does.

Returns

  • Status code indicating success of the function call. Reasons for failure include an un-idled radio or a non-Japan non-Korea region configured before calling this function.

This function takes care of all configuration and radio setup to detect and receive beams in the current Z-Wave region. If a beam is detected, RAIL will provide the usual RAIL_EVENT_ZWAVE_BEAM event during which time users can process the beam as expected. However, normal packets may also be received during this time (also triggering RAIL_EVENTS_RX_COMPLETION events), in which case, this API may need to be re-called to receive a beam. Users should also listen for RAIL_EVENT_RX_CHANNEL_HOPPING_COMPLETE, which will indicate that no beam is heard. At that point, the radio will be automatically idled. Until one of these events is received, users should not try to reconfigure radio settings or start another radio operation. If an application needs to do some other operation or configuration, it must first call RAIL_Idle() and wait for the radio to idle.

Note


Definition at line 838 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_ConfigBeamRx#

RAIL_Status_t RAIL_ZWAVE_ConfigBeamRx (RAIL_Handle_t railHandle, RAIL_ZWAVE_BeamRxConfig_t * config)

Configure the receive algorithm used in RAIL_ZWAVE_ReceiveBeam().

Parameters
[in]railHandle

A RAIL instance handle.

[in]config

A pointer to a configuration for the beam detection algorithm.

Returns

  • Status code indicating success of the function call.

Warnings

  • This function should not be used without direct instruction by Silicon Labs.


Definition at line 851 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_SetDefaultRxBeamConfig#

RAIL_Status_t RAIL_ZWAVE_SetDefaultRxBeamConfig (RAIL_Handle_t railHandle)

Set the default RX beam configuration.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

Note


Definition at line 864 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetRxBeamConfig#

RAIL_Status_t RAIL_ZWAVE_GetRxBeamConfig (RAIL_ZWAVE_BeamRxConfig_t * pConfig)

Get the current RX beam configuration.

Parameters
[out]pConfig

A pointer to RAIL_ZWAVE_BeamRxConfig_t to be populated with the current beam configuration.

Returns

  • Status code indicating success of the function call.


Definition at line 873 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_ConfigRxChannelHopping#

RAIL_Status_t RAIL_ZWAVE_ConfigRxChannelHopping (RAIL_Handle_t railHandle, RAIL_RxChannelHoppingConfig_t * config)

Configure the channel hop timings for use in Z-Wave RX channel hop configuration.

Parameters
[in]railHandle

A RAIL instance handle.

[inout]config

A pointer to a configuration for Z-Wave RX channel hopping. This structure must be allocated in application global read-write memory. RAIL will populate fields within or referenced by this structure during its operation. Be sure to allocate RAIL_RxChannelHoppingConfigEntry_t entries[] for RAIL_NUM_ZWAVE_CHANNELS. Be sure to set RAIL_RxChannelHoppingConfig_t::numberOfChannels to the desired number of channels.

Returns

  • Status code indicating success of the function call.

Warnings

  • This function should not be used without direct instruction by Silicon Labs.

Note

  • : This API must be called before RAIL_EnableRxChannelHopping(). This API must never be called while the radio is on with RX Duty Cycle or Channel Hopping enabled.


Definition at line 894 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_GetRegion#

RAIL_ZWAVE_RegionId_t RAIL_ZWAVE_GetRegion (RAIL_Handle_t railHandle)

Get the Z-Wave region.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

Note


Definition at line 907 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_SetLrAckData#

RAIL_Status_t RAIL_ZWAVE_SetLrAckData (RAIL_Handle_t railHandle, const RAIL_ZWAVE_LrAckData_t * pLrAckData)

Write the Auto-Ack FIFO for the next outgoing Z-Wave Long Range Ack.

Parameters
[in]railHandle

A RAIL instance handle.

[in]pLrAckData

An application provided pointer to a const RAIL_ZWAVE_LrAckData_t to populate the noise floor, TX power and receive rssi bytes of the outgoing Z-Wave Long Range Ack packet.

Returns

  • Status code indicating success of the function call.

This function sets the Auto-Ack data to use in acknowledging the frame being received. It must only be called while processing the RAIL_EVENT_ZWAVE_LR_ACK_REQUEST_COMMAND. This will return RAIL_STATUS_INVALID_STATE if it is too late to write the outgoing Ack. When successful, the ackData will only be sent once. Subsequent packets needing an Z-Wave Long Range Ack will each need to call this function to write the Ack information.


Definition at line 926 of file protocol/zwave/rail_zwave.h

Macro Definition Documentation#

RAIL_ZWAVE_OPTIONS_NONE#

#define RAIL_ZWAVE_OPTIONS_NONE
Value:
0U

A value representing no options.


Definition at line 109 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_OPTIONS_DEFAULT#

#define RAIL_ZWAVE_OPTIONS_DEFAULT
Value:
RAIL_ZWAVE_OPTIONS_NONE

All options are disabled by default.


Definition at line 112 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE#

#define RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE
Value:
  (1u << RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE_SHIFT)

An option to configure promiscuous mode, accepting non-beam packets regardless of their Home Id.

By default packets are filtered by their Home Id. When true, such filtering is disabled.


Definition at line 119 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_OPTION_NODE_ID_FILTERING#

#define RAIL_ZWAVE_OPTION_NODE_ID_FILTERING
Value:
  (1u << RAIL_ZWAVE_OPTION_NODE_ID_FILTERING_SHIFT)

An option to filter non-beam packets based on their Node Id when RAIL_ZWAVE_OPTION_PROMISCUOUS_MODE is disabled.

Note


Definition at line 129 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES#

#define RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES
Value:
  (1u << RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES_SHIFT)

An option to configure beam frame recognition.

By default beams are not considered special and will be received as if they were normal Z-Wave frames, assuredly triggering RAIL_EVENT_RX_FRAME_ERROR. When true, beam frames that are broadcast or match the Node Id and Home Id hash values will trigger RAIL_EVENT_ZWAVE_BEAM event. (All beams additionally trigger RAIL_EVENT_RX_PACKET_ABORTED regardless of Node Id / Home Id hash values.)

Note


Definition at line 146 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_OPTION_PROMISCUOUS_BEAM_MODE#

#define RAIL_ZWAVE_OPTION_PROMISCUOUS_BEAM_MODE
Value:
  (1u << RAIL_ZWAVE_OPTION_PROMISCUOUS_BEAM_MODE_SHIFT)

An option to receive all beams promiscuously when RAIL_ZWAVE_OPTION_DETECT_BEAM_FRAMES is enabled.

When true, beam frames are received regardless of their Node Id or Home Id hash resulting in RAIL_EVENT_ZWAVE_BEAM (and also RAIL_EVENT_RX_PACKET_ABORTED) for each beam frame.

Note


Definition at line 159 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_OPTIONS_ALL#

#define RAIL_ZWAVE_OPTIONS_ALL
Value:
0xFFFFFFFFU

A value representing all options.


Definition at line 163 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_FREQ_INVALID#

#define RAIL_ZWAVE_FREQ_INVALID
Value:
0xFFFFFFFFUL

Sentinel value to indicate that a channel (and thus its frequency) are invalid.


Definition at line 339 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_LR_BEAM_TX_POWER_INVALID#

#define RAIL_ZWAVE_LR_BEAM_TX_POWER_INVALID
Value:
(0xFFU)

Invalid beam TX power value returned when RAIL_ZWAVE_GetLrBeamTxPower() is called after receiving a regular non-long-range beam.


Definition at line 432 of file protocol/zwave/rail_zwave.h

RAIL_NUM_ZWAVE_CHANNELS#

#define RAIL_NUM_ZWAVE_CHANNELS
Value:
(4U)

Number of channels in each of Z-Wave's region-based PHYs.


Definition at line 469 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_US_LR_END_DEVICE#

#define RAIL_ZWAVE_REGION_US_LR_END_DEVICE
Value:
RAIL_ZWAVE_REGION_US_LR3

Backwards-compatible define.


Definition at line 977 of file protocol/zwave/rail_zwave.h

RAIL_ZWAVE_REGION_EU_LR_END_DEVICE#

#define RAIL_ZWAVE_REGION_EU_LR_END_DEVICE
Value:
RAIL_ZWAVE_REGION_EU_LR3

Backwards-compatible define.


Definition at line 988 of file protocol/zwave/rail_zwave.h