Z-Wave Protocol Controller Reference
zwapi_protocol_basis.h
Go to the documentation of this file.
1/******************************************************************************
2 * # License
3 * <b>Copyright 2021 Silicon Laboratories Inc. www.silabs.com</b>
4 ******************************************************************************
5 * The licensor of this software is Silicon Laboratories Inc. Your use of this
6 * software is governed by the terms of Silicon Labs Master Software License
7 * Agreement (MSLA) available at
8 * www.silabs.com/about-us/legal/master-software-license-agreement. This
9 * software is distributed to you in Source Code format and is governed by the
10 * sections of the MSLA applicable to Source Code.
11 *
12 *****************************************************************************/
13
19#ifndef ZWAPI_PROTOCOL_BASIS_H
20#define ZWAPI_PROTOCOL_BASIS_H
21
22#include <stdint.h>
23#include <stdbool.h>
24#include "sl_status.h"
25#include "zwave_rf_region.h"
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
42typedef enum {
56
63
66#define ZW_PROTOCOL_STATUS_ROUTING 0x01
67#define ZW_PROTOCOL_STATUS_SUC 0x02
69
72#define ZW_INT_MASK_EXT1 0x02
73
74#define ZW_AV_VERSION_MAJOR 1
75#define ZW_AV_VERSION_MINOR 0
76
79#define ZW_500_SERIES_CHIP_TYPE 5
80#define ZW_500_SERIES_CHIP_REVISION 0
82
85#define ZW_GECKO_CHIP_TYPE(x) ((x == 7) || (x == 8))
86#define ZW_GECKO_CHIP_700 7
87#define ZW_GECKO_CHIP_REVISION 0
89
92typedef struct {
93 int8_t normal;
94 int8_t
97
100typedef enum {
113
116#define APPLICATION_NODEINFO_NOT_LISTENING 0x00
117#define APPLICATION_NODEINFO_LISTENING 0x01
118#define APPLICATION_NODEINFO_OPTIONAL_FUNCTIONALITY 0x02
119#define APPLICATION_FREQ_LISTENING_MODE_1000ms 0x10
120#define APPLICATION_FREQ_LISTENING_MODE_250ms 0x20
122
136
178 uint8_t txOptions,
179 void (*completedFunc)(uint8_t));
180
191uint8_t zwapi_get_zw_library_version(uint8_t *dst);
192
204uint8_t zwapi_get_zw_library_type(void);
205
228
244
256
283
341
356
370
377
401
409sl_status_t zwapi_get_maximum_payload_size(uint8_t *maximum_size);
410
419
429
437
453
482 rf_power_level_t power_level,
483 void (*callback_function)(uint8_t tx_status));
484
500uint8_t zwapi_get_zw_protocol_status(void);
501
510
519
530
546sl_status_t zwapi_get_random_word(uint8_t *random_buffer,
547 uint8_t number_of_random_bytes);
548
562sl_status_t zwapi_get_random_byte(uint8_t *user_byte);
563
586
609
622sl_status_t zwapi_get_background_rssi(uint8_t *rssi_values,
623 uint8_t *values_length);
624
638 node_type_t node_type,
639 const uint8_t *nodeParm,
640 uint8_t parmLength);
641
655sl_status_t zwapi_get_long_range_nodes(uint16_t *number_of_bytes,
656 zwave_nodemask_t lr_node_list);
657
674sl_status_t zwapi_get_long_range_channel(uint8_t *lr_channel);
675
684sl_status_t zwapi_set_long_range_channel(uint8_t lr_channel);
685
694
703
709bool zwapi_supports_nls(void);
710
712
713#ifdef __cplusplus
714}
715#endif
716
717#endif // ZWAPI_PROTOCOL_BASIS_H
sl_status_t zwapi_send_test_frame(zwave_node_id_t node_id, rf_power_level_t power_level, void(*callback_function)(uint8_t tx_status))
Send a test frame to specified NodeID.
Definition: zwapi_protocol_basis.c:539
sl_status_t zwapi_set_application_node_information(uint8_t listening, node_type_t node_type, const uint8_t *nodeParm, uint8_t parmLength)
Set ApplicationNodeInformation data to be used in subsequent calls to zwapi_send_node_information().
Definition: zwapi_protocol_basis.c:705
sl_status_t zwapi_set_node_id_basetype(zwave_node_id_basetype_t basetype)
Set Z-Wave node ID basetype, either 8 bits or 16 bits used to store a node ID.
Definition: zwapi_protocol_basis.c:489
sl_status_t zwapi_enable_watchdog()
Enable the Watchdog.
Definition: zwapi_protocol_basis.c:666
rf_power_level_t zwapi_get_rf_power_level(void)
Get the current power level used in RF transmitting.
Definition: zwapi_protocol_basis.c:161
bool zwapi_supports_long_range()
Return whether the Z-Wave module supports Long Range.
Definition: zwapi_protocol_basis.c:828
sl_status_t zwapi_start_watchdog()
Enable Watchdog and start kicking it in the Z-Wave chip.
Definition: zwapi_protocol_basis.c:671
sl_status_t zwapi_get_long_range_nodes(uint16_t *number_of_bytes, zwave_nodemask_t lr_node_list)
Get Z-Wave Long Range node list in ZW_LR_NODEMASK_OFFSET offset of zwave_nodemask_t.
Definition: zwapi_protocol_basis.c:750
rf_power_level_t zwapi_set_rf_power_level(rf_power_level_t powerLevel)
Set the power level to used in RF transmissions.
Definition: zwapi_protocol_basis.c:140
zwave_rf_region_t zwapi_get_rf_region(void)
Get the current RF region.
Definition: zwapi_protocol_basis.c:401
sl_status_t zwapi_set_long_range_channel(uint8_t lr_channel)
Set the Z-Wave Long Range radio channel in use.
Definition: zwapi_protocol_basis.c:815
sl_status_t zwapi_soft_reset(void)
Reset the Z-Wave module.
Definition: zwapi_protocol_basis.c:43
sl_status_t zwapi_enable_auto_program_mode(void)
Enable Auto Programming mode.
Definition: zwapi_protocol_basis.c:725
bool zwapi_supports_nls(void)
Return whether the Z-Wave module supports Network Layer Security.
Definition: zwapi_protocol_basis.c:843
sl_status_t zwapi_set_rf_receive_mode(uint8_t mode)
Initialize the Z-Wave RF chip.
Definition: zwapi_protocol_basis.c:119
sl_status_t zwapi_get_maximum_payload_size(uint8_t *maximum_size)
Get the maximum payload size allowed for sending frames in Z-Wave.
Definition: zwapi_protocol_basis.c:433
sl_status_t zwapi_get_background_rssi(uint8_t *rssi_values, uint8_t *values_length)
Get the latest value of the background RSSI.
Definition: zwapi_protocol_basis.c:676
sl_status_t zwapi_set_rf_region(zwave_rf_region_t rfregion)
Set the current RF region.
Definition: zwapi_protocol_basis.c:368
tx_power_level_t zwapi_get_tx_power_level(void)
Get the current TX power level in effect.
Definition: zwapi_protocol_basis.c:284
bool zwapi_is_pti_supported()
Check if PTI supported.
Definition: zwapi_protocol_basis.c:314
bool zwapi_is_pti_enabled()
Get the current state of pti.
Definition: zwapi_protocol_basis.c:323
sl_status_t zwapi_get_full_node_list(zwave_nodemask_t node_list)
Get the entire list of nodes in our network (both Z-Wave and Z-Wave Long Range)
Definition: zwapi_protocol_basis.c:732
int16_t zwapi_get_max_lr_tx_power_level(void)
Get the current MAX Long Range TX power level in effect.
Definition: zwapi_protocol_basis.c:256
zwave_node_id_basetype_t zwapi_get_node_id_basetype()
Get the current node ID basetype setting.
Definition: zwapi_protocol_basis.c:518
sl_status_t zwapi_explore_request_exclusion()
Transmit a request for exclusion via an explore frame.
Definition: zwapi_protocol_basis.c:642
sl_status_t zwapi_get_lr_maximum_payload_size(uint8_t *maximum_size)
Get the maximum payload size allowed for sending frames in Z-Wave Long Range.
Definition: zwapi_protocol_basis.c:461
sl_status_t zwapi_send_node_information(zwave_node_id_t destNode, uint8_t txOptions, void(*completedFunc)(uint8_t))
Create and transmit a "Node Information" frame.
Definition: zwapi_protocol_basis.c:523
sl_status_t zwapi_get_random_word(uint8_t *random_buffer, uint8_t number_of_random_bytes)
Generate an array of random bytes using the random number generator (RNG) on the Z-Wave module.
Definition: zwapi_protocol_basis.c:566
sl_status_t zwapi_explore_request_inclusion()
Transmit a request for inclusion via an explore frame.
Definition: zwapi_protocol_basis.c:620
uint8_t zwapi_get_zw_library_type(void)
Get the Z-Wave library type.
Definition: zwapi_protocol_basis.c:79
sl_status_t zwapi_set_tx_power_level(tx_power_level_t zw_txpowerlevel)
Set the current TX power level.
Definition: zwapi_protocol_basis.c:229
sl_status_t zwapi_set_tx_status_reporting(bool enable)
Configure whether zwapi_send_data callbacks should contain tx_status report information.
Definition: zwapi_protocol_basis.c:178
uint8_t zwapi_get_zw_library_version(uint8_t *dst)
Get the Z-Wave library basis version.
Definition: zwapi_protocol_basis.c:98
serial_api_setup_cmd_t
Bitflag definitions for FUNC_ID_SERIAL_API_SETUP command.
Definition: zwapi_protocol_basis.h:42
sl_status_t zwapi_set_max_lr_tx_power_level(int16_t level)
Set the current MAX Long Range TX power level.
Definition: zwapi_protocol_basis.c:202
rf_power_level_t
Definition: zwapi_protocol_basis.h:100
uint8_t zwapi_get_zw_protocol_status(void)
Report the status of the Z-Wave protocol.
Definition: zwapi_protocol_basis.c:61
zwave_node_id_basetype_t
Definition: zwapi_protocol_basis.h:61
sl_status_t zwapi_disable_watchdog()
Disable the Watchdog.
Definition: zwapi_protocol_basis.c:661
sl_status_t zwapi_get_random_byte(uint8_t *user_byte)
Generate a random byte using the random number generator (RNG) on the Z-Wave module.
Definition: zwapi_protocol_basis.c:599
sl_status_t zwapi_get_long_range_channel(uint8_t *lr_channel)
Get the Z-Wave Long Range radio channel in use.
Definition: zwapi_protocol_basis.c:799
sl_status_t zwapi_set_radio_pti(bool state)
Enable/disable the PTI on Z-Wave Radio.
Definition: zwapi_protocol_basis.c:344
@ SERIAL_API_SETUP_CMD_LR_MAXIMUM_PAYLOAD_SIZE_GET
Definition: zwapi_protocol_basis.h:51
@ SERIAL_API_SETUP_CMD_SUPPORTED
Definition: zwapi_protocol_basis.h:44
@ SERIAL_API_SETUP_CMD_NODEID_BASETYPE_SET
Definition: zwapi_protocol_basis.h:54
@ SERIAL_API_SETUP_CMD_UNSUPPORTED
Definition: zwapi_protocol_basis.h:43
@ SERIAL_API_SETUP_CMD_TX_STATUS_REPORT
Definition: zwapi_protocol_basis.h:45
@ SERIAL_API_SETUP_CMD_MAX_LR_TX_PWR_SET
Definition: zwapi_protocol_basis.h:46
@ SERIAL_API_SETUP_CMD_MAX_LR_TX_PWR_GET
Definition: zwapi_protocol_basis.h:48
@ SERIAL_API_SETUP_CMD_TX_POWERLEVEL_GET
Definition: zwapi_protocol_basis.h:49
@ SERIAL_API_SETUP_CMD_TX_POWERLEVEL_SET
Definition: zwapi_protocol_basis.h:47
@ SERIAL_API_SETUP_CMD_RF_REGION_GET
Definition: zwapi_protocol_basis.h:52
@ SERIAL_API_SETUP_CMD_RF_REGION_SET
Definition: zwapi_protocol_basis.h:53
@ SERIAL_API_SETUP_CMD_MAXIMUM_PAYLOAD_SIZE_GET
Definition: zwapi_protocol_basis.h:50
@ MINUS_9_DBM
Normal power - 9dB (mapped to minus10dB)
Definition: zwapi_protocol_basis.h:110
@ MINUS_7_DBM
Normal power - 7dB (mapped to minus8dB)
Definition: zwapi_protocol_basis.h:108
@ MINUS_1_DBM
Normal power - 1dB (mapped to minus2dB)
Definition: zwapi_protocol_basis.h:102
@ MINUS_3_DBM
Normal power - 3dB (mapped to minus4dB)
Definition: zwapi_protocol_basis.h:104
@ MINUS_5_DBM
Normal power - 5dB (mapped to minus6dB)
Definition: zwapi_protocol_basis.h:106
@ MINUS_6_DBM
Normal power - 6dB.
Definition: zwapi_protocol_basis.h:107
@ MINUS_8_DBM
Normal power - 8dB.
Definition: zwapi_protocol_basis.h:109
@ MINUS_2_DBM
Normal power - 2dB.
Definition: zwapi_protocol_basis.h:103
@ NORMAL_POWER
Max power possible.
Definition: zwapi_protocol_basis.h:101
@ MINIMUM_POWER
Equal to minus9dBm.
Definition: zwapi_protocol_basis.h:111
@ MINUS_4_DBM
Normal power - 4dB.
Definition: zwapi_protocol_basis.h:105
@ NODEID_16BITS
Definition: zwapi_protocol_basis.h:61
@ NODEID_8BITS
Definition: zwapi_protocol_basis.h:61
uint32_t sl_status_t
Definition: sl_status.h:139
uint8_t zwave_nodemask_t[ZW_LR_MAX_NODEMASK_LENGTH]
Node mask.
Definition: zwave_node_id_definitions.h:81
uint16_t zwave_node_id_t
Z-Wave NodeID type.
Definition: zwave_node_id_definitions.h:84
zwave_rf_region_t
Definition: zwave_rf_region.h:31
SL Status Codes.
Node type structure, used in Node Information Frames.
Definition: zwave_node_id_definitions.h:128
Definition: zwapi_protocol_basis.h:92
int8_t normal
TX power level at normal power.
Definition: zwapi_protocol_basis.h:93
int8_t measured0dBm
Measured output power from antenna when normal is set to 0.
Definition: zwapi_protocol_basis.h:95
const zwave_node_id_t node_id
static send_data_state_t state
Definition: zwave_crc16_transport.c:52