ZigBee Device Object (ZDO) functions included in the stack.
See ZigBee Device Object for documentation.
License#
Copyright 2018 Silicon Laboratories Inc. www.silabs.com
The licensor of this software is Silicon Laboratories Inc. Your use of this software is governed by the terms of Silicon Labs Master Software License Agreement (MSLA) available at www.silabs.com/about-us/legal/master-software-license-agreement. This software is distributed to you in Source Code format and is governed by the sections of the MSLA applicable to Source Code.
/***************************************************************************/
#ifndef SILABS_ZIGBEE_DEVICE_STACK_H
#define SILABS_ZIGBEE_DEVICE_STACK_H
#include "stack/include/sl_zigbee_types.h"
sl_status_t sl_zigbee_network_address_request(sl_802154_long_addr_t target,
bool reportKids,
uint8_t childStartIndex);
sl_status_t sl_zigbee_set_manufacturer_code(uint16_t code);
sl_status_t sl_zigbee_ieee_address_request(sl_802154_short_addr_t target,
bool reportKids,
uint8_t childStartIndex,
sl_zigbee_aps_option_t options);
sl_status_t sl_zigbee_ieee_address_request_to_target(sl_802154_short_addr_t discoveryNodeId,
bool reportKids,
uint8_t childStartIndex,
sl_zigbee_aps_option_t options,
sl_802154_short_addr_t targetNodeIdOfRequest);
sl_status_t sl_zigbee_energy_scan_request(sl_802154_short_addr_t target,
uint32_t scanChannels,
uint8_t scanDuration,
uint16_t scanCount);
#ifdef DOXYGEN_SHOULD_SKIP_THIS
sl_status_t sl_zigbee_set_network_manager_request(sl_802154_short_addr_t networkManager,
uint32_t activeChannels);
#else
#define sl_zigbee_set_network_manager_request(manager, channels) \
(sl_zigbee_energy_scan_request(SL_ZIGBEE_SLEEPY_BROADCAST_ADDRESS, \
(channels), \
0xFF, \
(manager)))
#endif
#ifdef DOXYGEN_SHOULD_SKIP_THIS
sl_status_t sl_zigbee_channel_change_request(uint8_t channel);
#else
#define sl_zigbee_channel_change_request(channel) \
(sl_zigbee_energy_scan_request(SL_ZIGBEE_SLEEPY_BROADCAST_ADDRESS, \
BIT32(channel), \
0xFE, \
0))
#endif
sl_status_t sl_zigbee_send_device_announcement(void);
sl_status_t sl_zigbee_send_parent_announcement(void);
uint8_t sl_zigbee_get_last_stack_zig_dev_request_sequence(void);
void sl_zigbee_set_zdo_configuration_mode(bool enabled);
void sl_zigbee_set_pending_network_update_channel(uint8_t channel);
void sl_set_device_capability_extension_field_for_zigbee_virtual_device(boolean attach_tlv, uint16_t capability_extension_bitmask);
#define NETWORK_ADDRESS_REQUEST 0x0000u
#define NETWORK_ADDRESS_RESPONSE 0x8000u
#define IEEE_ADDRESS_REQUEST 0x0001u
#define IEEE_ADDRESS_RESPONSE 0x8001u
// <node descriptor: 13> <tlvs: varies>
//
// Node Descriptor field is divided into subfields of bitmasks as follows:
// (Note: All lengths below are given in bits rather than bytes.)
// Logical Type: 3
// Complex Descriptor Available: 1
// User Descriptor Available: 1
// (reserved/unused): 3
// APS Flags: 3
// Frequency Band: 5
// MAC capability flags: 8
// Manufacturer Code: 16
// Maximum buffer size: 8
// Maximum incoming transfer size: 16
// Server mask: 16
// Maximum outgoing transfer size: 16
// Descriptor Capability Flags: 8
// See ZigBee document 053474, Section 2.3.2.3 for more details.
#define NODE_DESCRIPTOR_REQUEST 0x0002u
#define NODE_DESCRIPTOR_RESPONSE 0x8002u
// See ZigBee document 053474, Section 2.3.2.4 for more details.
#define POWER_DESCRIPTOR_REQUEST 0x0003u
#define POWER_DESCRIPTOR_RESPONSE 0x8003u
#define SIMPLE_DESCRIPTOR_REQUEST 0x0004u
#define SIMPLE_DESCRIPTOR_RESPONSE 0x8004u
#define ACTIVE_ENDPOINTS_REQUEST 0x0005u
#define ACTIVE_ENDPOINTS_RESPONSE 0x8005u
#define MATCH_DESCRIPTORS_REQUEST 0x0006u
#define MATCH_DESCRIPTORS_RESPONSE 0x8006u
#define END_DEVICE_ANNOUNCE 0x0013u
#define END_DEVICE_ANNOUNCE_RESPONSE 0x8013u
#define SYSTEM_SERVER_DISCOVERY_REQUEST 0x0015u
#define SYSTEM_SERVER_DISCOVERY_RESPONSE 0x8015u
#define PARENT_ANNOUNCE 0x001Fu
#define PARENT_ANNOUNCE_RESPONSE 0x801Fu
#define FIND_NODE_CACHE_REQUEST 0x001Cu
#define FIND_NODE_CACHE_RESPONSE 0x801Cu
#define END_DEVICE_BIND_REQUEST 0x0020u
#define END_DEVICE_BIND_RESPONSE 0x8020u
#define CLEAR_ALL_BINDINGS_REQUEST 0x002Bu
#define CLEAR_ALL_BINDINGS_RESPONSE 0x802Bu
#define UNICAST_BINDING 0x03u
#define UNICAST_MANY_TO_ONE_BINDING 0x83u
#define MULTICAST_BINDING 0x01u
#define BIND_REQUEST 0x0021u
#define BIND_RESPONSE 0x8021u
#define UNBIND_REQUEST 0x0022u
#define UNBIND_RESPONSE 0x8022u
#define LQI_TABLE_REQUEST 0x0031u
#define LQI_TABLE_RESPONSE 0x8031u
#define ROUTING_TABLE_REQUEST 0x0032u
#define ROUTING_TABLE_RESPONSE 0x8032u
#define BINDING_TABLE_REQUEST 0x0033u
#define BINDING_TABLE_RESPONSE 0x8033u
#define LEAVE_REQUEST 0x0034u
#define LEAVE_RESPONSE 0x8034u
#define LEAVE_REQUEST_REMOVE_CHILDREN_FLAG 0x40u
#define LEAVE_REQUEST_REJOIN_FLAG 0x80u
#define PERMIT_JOINING_REQUEST 0x0036u
#define PERMIT_JOINING_RESPONSE 0x8036u
#define NWK_UPDATE_REQUEST 0x0038u
#define NWK_UPDATE_RESPONSE 0x8038u
#define NWK_UPDATE_ENHANCED_REQUEST 0x0039u
#define NWK_UPDATE_ENHANCED_RESPONSE 0x8039u
#define NWK_UPDATE_IEEE_JOINING_LIST_REQUEST 0x003Au
#define NWK_UPDATE_IEEE_JOINING_LIST_REPONSE 0x803Au
#define NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFY 0x803Bu
#define BEACON_SURVEY_REQUEST 0x003Cu
#define BEACON_SURVEY_RESPONSE 0x803Cu
#define KEY_NEGOTIATION_REQUEST 0x0040u
#define KEY_NEGOTIATION_RESPONSE 0x8040u
#define AUTHENTICATION_TOKEN_REQUEST 0x0041u
#define AUTHENTICATION_TOKEN_RESPONSE 0x8041u
#define AUTHENTICATION_LEVEL_REQUEST 0x0042u
#define AUTHENTICATION_LEVEL_RESPONSE 0x8042u
#define SET_CONFIGURATION_REQUEST 0x0043u
#define SET_CONFIGURATION_RESPONSE 0x8043u
#define GET_CONFIGURATION_REQUEST 0x0044u
#define GET_CONFIGURATION_RESPONSE 0x8044u
#define KEY_UPDATE_REQUEST 0x0045u
#define KEY_UPDATE_RESPONSE 0x8045u
#define SECURITY_DECOMMISSION_REQUEST 0x0046u
#define SECURITY_DECOMMISSION_RESPONSE 0x8046u
#define SECURITY_CHALLENGE_REQUEST 0x0047u
#define SECURITY_CHALLENGE_RESPONSE 0x8047u
#define COMPLEX_DESCRIPTOR_REQUEST 0x0010u
#define COMPLEX_DESCRIPTOR_RESPONSE 0x8010u
#define USER_DESCRIPTOR_REQUEST 0x0011u
#define USER_DESCRIPTOR_RESPONSE 0x8011u
#define DISCOVERY_REGISTER_REQUEST 0x0012u
#define DISCOVERY_REGISTER_RESPONSE 0x8012u
#define USER_DESCRIPTOR_SET 0x0014u
#define USER_DESCRIPTOR_CONFIRM 0x8014u
#define NETWORK_DISCOVERY_REQUEST 0x0030u
#define NETWORK_DISCOVERY_RESPONSE 0x8030u
#define DIRECT_JOIN_REQUEST 0x0035u
#define DIRECT_JOIN_RESPONSE 0x8035u
#define DISCOVERY_CACHE_REQUEST 0x0012u
#define DISCOVERY_CACHE_RESPONSE 0x8012u
#define CLUSTER_ID_RESPONSE_MINIMUM 0x8000u
#endif // SILABS_ZIGBEE_DEVICE_STACK_H
Network and IEEE Address Request/Response#
Defines for ZigBee device profile cluster IDs follow. These include descriptions of the formats of the messages.Note that each message starts with a 1-byte transaction sequence number. This sequence number is used to match a response command frame to the request frame that it is replying to. The application shall maintain a 1-byte counter that is copied into this field and incremented by one for each command sent. When a value of 0xff is reached, the next command shall re-start the counter with a value of 0x00.Network request: <transaction sequence number: 1> <EUI64:8> <type:1> <start index:1>IEEE request: <transaction sequence number: 1> <node ID:2> <type:1> <start index:1> <type> = 0x00 single address response, ignore the start index = 0x01 extended response -> sends kid's IDs as wellResponse: <transaction sequence number: 1> <status:1> <EUI64:8> <node ID:2> <ID count:1> <start index:1> <child ID:2>*
Node Descriptor Request/Response#
Request: <transaction sequence number: 1> <node ID:2> <tlvs: varies> Response: <transaction sequence number: 1> <status:1> <node ID:2>// <node descriptor: 13> <tlvs: varies>//// Node Descriptor field is divided into subfields of bitmasks as follows:// (Note: All lengths below are given in bits rather than bytes.)// Logical Type: 3// Complex Descriptor Available: 1// User Descriptor Available: 1// (reserved/unused): 3// APS Flags: 3// Frequency Band: 5// MAC capability flags: 8// Manufacturer Code: 16// Maximum buffer size: 8// Maximum incoming transfer size: 16// Server mask: 16// Maximum outgoing transfer size: 16// Descriptor Capability Flags: 8// See ZigBee document 053474, Section 2.3.2.3 for more details.
Power Descriptor Request / Response#
Request: <transaction sequence number: 1> <node ID:2> Response: <transaction sequence number: 1> <status:1> <node ID:2> <current power mode, available power sources:1> <current power source, current power source level:1>// See ZigBee document 053474, Section 2.3.2.4 for more details.
Simple Descriptor Request / Response#
Request: <transaction sequence number: 1> <node ID:2> <endpoint:1>Response: <transaction sequence number: 1> <status:1> <node ID:2> <length:1> <endpoint:1> <app profile ID:2> <app device ID:2> <app device version, app flags:1> <input cluster count:1> <input cluster:2>* <output cluster count:1> <output cluster:2>*
Active Endpoints Request / Response#
Request: <transaction sequence number: 1> <node ID:2>Response: <transaction sequence number: 1> <status:1> <node ID:2> <endpoint count:1> <endpoint:1>*
Match Descriptors Request / Response#
Request: <transaction sequence number: 1> <node ID:2> <app profile ID:2> <input cluster count:1> <input cluster:2>* <output cluster count:1> <output cluster:2>*Response: <transaction sequence number: 1> <status:1> <node ID:2> <endpoint count:1> <endpoint:1>*
End Device Announce and End Device Announce Response#
Request: <transaction sequence number: 1> <node ID:2> <EUI64:8> <capabilities:1>No response is sent.
System Server Discovery Request / Response#
This is broadcast and only servers which have matching services respond. The response contains the request services that the recipient provides.Request: <transaction sequence number: 1> <server mask:2>Response: <transaction sequence number: 1> <status (== SL_ZIGBEE_ZDP_SUCCESS):1> <server mask:2>
Parent Announce and Parent Announce Response#
This is broadcast and only servers which have matching children respond. The response contains the list of children that the recipient now holds.Request: <transaction sequence number: 1> <number of children:1> <child EUI64:8> <child Age:4>*Response: <transaction sequence number: 1> <number of children:1> <child EUI64:8> <child Age:4>*
Find Node Cache Request / Response#
This is broadcast and only discovery servers which have the information for the device of interest, or the device of interest itself, respond. The requesting device can then direct any service discovery requests to the responder.Request: <transaction sequence number: 1> <device of interest ID:2> <d-of-i EUI64:8>Response: <transaction sequence number: 1> <responder ID:2> <device of interest ID:2> <d-of-i EUI64:8>
End Device Bind Request / Response#
Request: <transaction sequence number: 1> <node ID:2> <EUI64:8> <endpoint:1> <app profile ID:2> <input cluster count:1> <input cluster:2>* <output cluster count:1> <output cluster:2>*Response: <transaction sequence number: 1> <status:1>
Clear All Bindings Request / Response#
Request: <transaction sequence number: 1> <clear all bindings request EUI64 TLV:Variable>Clear all bindings request EUI64 TLV: <Count N:1><EUI64 1:8>...<EUI64 N:8>Response: <transaction sequence number: 1> <status:1>
Binding types and Request / Response#
Bind and unbind have the same formats. There are two possible formats, depending on whether the destination is a group address or a device address. Device addresses include an endpoint, groups don't.Request: <transaction sequence number: 1> <source EUI64:8> <source endpoint:1> <cluster ID:2> <destination address:3 or 10>Destination address: <0x01:1> <destination group:2>Or: <0x03:1> <destination EUI64:8> <destination endpoint:1>Response: <transaction sequence number: 1> <status:1>
LQI Table Request / Response#
Request: <transaction sequence number: 1> <start index:1>Response: <transaction sequence number: 1> <status:1> <neighbor table entries:1> <start index:1> <entry count:1> <entry:22>* <entry> = <extended PAN ID:8> <EUI64:8> <node ID:2> <device type, RX on when idle, relationship:1> <permit joining:1> <depth:1> <LQI:1>The device-type byte has the following fields: Name Mask Valuesdevice type 0x03 0x00 coordinator 0x01 router 0x02 end device 0x03 unknownrx mode 0x0C 0x00 off when idle 0x04 on when idle 0x08 unknownrelationship 0x70 0x00 parent 0x10 child 0x20 sibling 0x30 other 0x40 previous childreserved 0x10The permit-joining byte has the following fields Name Mask Valuespermit joining 0x03 0x00 not accepting join requests 0x01 accepting join requests 0x02 unknownreserved 0xFC
Routing Table Request / Response#
Request: <transaction sequence number: 1> <start index:1>Response: <transaction sequence number: 1> <status:1> <routing table entries:1> <start index:1> <entry count:1> <entry:5>* <entry> = <destination address:2> <status:1> <next hop:2>The status byte has the following fields: Name Mask Valuesstatus 0x07 0x00 active 0x01 discovery underway 0x02 discovery failed 0x03 inactive 0x04 validation underwayflags 0x38 0x08 memory constrained 0x10 many-to-one 0x20 route record requiredreserved 0xC0
Binding Table Request / Response#
Request: <transaction sequence number: 1> <start index:1>Response: <transaction sequence number: 1> <status:1> <binding table entries:1> <start index:1> <entry count:1> <entry:14/21>* <entry> = <source EUI64:8> <source endpoint:1> <cluster ID:2> <dest addr mode:1> <dest:2/8> <dest endpoint:0/1>If Dest. Address Mode = 0x03, then the Long Dest. Address will be used and Dest. endpoint will be included. If Dest. Address Mode = 0x01, then the Short Dest. Address will be used and there will be no Dest. endpoint.
Leave Request / Response#
Request: <transaction sequence number: 1> <EUI64:8> <flags:1> The flag bits are: 0x40 remove children 0x80 rejoinResponse: <transaction sequence number: 1> <status:1>
Permit Joining Request / Response#
Request: <transaction sequence number: 1> <duration:1> <permit authentication:1>Response: <transaction sequence number: 1> <status:1>
Network Update Request / Response#
Request: <transaction sequence number: 1> <scan channels:4> <duration:1> <count:0/1> <manager:0/2> If the duration is in 0x00 ... 0x05, 'count' is present but not 'manager'. Perform 'count' scans of the given duration on the given channels. If duration is 0xFE, 'channels' should have a single channel and 'count' and 'manager' are not present. Switch to the indicated channel. If duration is 0xFF, 'count' is not present. Set the active channels and the network manager ID to the values given. Unicast requests always get a response, which is INVALID_REQUEST if the duration is not a legal value.Response: <transaction sequence number: 1> <status:1> <scanned channels:4> <transmissions:2> <failures:2> <energy count:1> <energy:1>*
Beacon Survey Request / Response#
This command can be used by a remote device to survey the end devices to determine how many potential parents they have access to.Request: <transaction sequence number: 1> <TLVs: varies>Contains one Beacon Survey Configuration TLV (variable octets),which contain the ScanChannelListStructure (variable length)and the ConfigurationBitmask (1 octet). This information providesthe configuration for the end device's beacon survey.See R23 spec section 2.4.3.3.12 for the request and 3.2.2.2.1for the ChannelListStructure.@codeResponse: <transaction sequence number: 1> <status: 1> <TLVs: varies>Contains one Beacon Survey Results TLV (4 octets), which containthe number of on-network, off-network, potential parent and totalbeacons recorded. If the device that received the request is not arouter, a Potential Parent TLV (variable octects) will be found. Thiswill contain information on the device's current parent, as well asany potential parents found via beacons (up to a maximum of 5). APan ID Conflict TLV can also found in the response.See R23 spec section 2.4.4.3.13 for the response.
Security Start Key Negotiation Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more Curve25519 Public Point TLVs (40 octets),which contain an EUI64 and the 32-byte Curve public point.See R23 spec section 2.4.3.4.1@note This command SHALL NOT be APS encrypted regardless ofwhether sent before or after the device joins the network.This command SHALL be network encrypted if the device has anetwork key, i.e. it has joined the network earlier and wantsto negotiate or renegotiate a new link key; otherwise, if itis used prior to joining the network, it SHALL NOT be network encrypted.Response: <transaction sequence number: 1> <status:1> <TLVs: varies>Contains one or more Curve25519 Public Point TLVs (40 octets),which contain an EUI64 and the 32-byte Curve public point, orLocal TLVs.See R23 spec section 2.4.4.4.1@note This command SHALL NOT be APS encrypted. When performingKey Negotiation with an unauthenticated neighbor that is notyet on the network, network layer encryption SHALL NOT be usedon the message. If the message is being sent to unauthenticateddevice that is not on the network and is not a neighbor, itSHALL be relayed as described in section 4.6.3.7.7. Otherwisethe message SHALL have network layer encryption.
Retrieve Authentication Token Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more Authentication Token ID TLVs (1 octet),which contain the TLV Type Tag ID of the source of theauthentication token. See R23 spec section 2.4.3.4.2Response: <transaction sequence number: 1> <status:1> <TLVs: varies>Contains one or more 128-bit Symmetric Passphrase Global TLVs(16 octets), which contain the symmetric passphrase authenticationtoken. See R23 spec section 2.4.4.4.2
Retrieve Authentication Level Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more Target IEEE Address TLVs (8 octets),which contain the EUI64 of the device of interest.See R23 spec section 2.4.3.4.3Response: <transaction sequence number: 1> <status:1> <TLVs: varies>Contains one or more Device Authentication Level TLVs(10 octets), which contain the EUI64 of the inquired device,along with the its initial join method and its active linkkey update method.See R23 spec section 2.4.4.4.3
Set Configuration Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more Global TLVs (1 octet),which contain the TLV Type Tag ID, and theirvalue.Response: <transaction sequence number: 1> <status:1>
Get Configuration Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more TLVs (1 octet),which the sender wants to get informationResponse: <transaction sequence number: 1> <status:1> <TLVs: varies>Contains one or more TLV tag Ids and their valuesin response to the request
Security Start Key Update Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more TLVs. These TLVs can be Selected KeyNegotiation Method TLVs (10 octets), Fragmentation ParametersGlobal TLVs (5 octets), or other TLVs.See R23 spec section 2.4.3.4.6@note This SHALL NOT be APS encrypted or NWK encrypted if thelink key update mechanism is done as part of the initial joinand before the receiving device has been issued a networkkey. This SHALL be both APS encrypted and NWK encrypted ifthe link key update mechanism is performed to refresh thelink key when the receiving device has the network key andhas previously successfully joined the network.Response: <transaction sequence number: 1> <status:1>See R23 spec section 2.4.4.4.6@note This command SHALL be APS encrypted.
Security Decommission Request / Response#
Request: <transaction sequence number: 1> <security decommission request EUI64 TLV:Variable>Security Decommission request EUI64 TLV: <Count N:1><EUI64 1:8>...<EUI64 N:8>Response: <transaction sequence number: 1> <status:1>
Challenge for APS frame counter synchronization#
Request: <transaction sequence number: 1> <TLVs: varies>Contains at least the APS Frame Counter Challenge TLV, which holds thesender EUI and the 64 bit challenge value.Response: <transaction sequence number: 1> <TLVs: varies>Contains at least the APS Frame Counter Response TLV, which holds thesender EUI, received challenge value, APS frame counter, challengesecurity frame counter, and 8-byte MIC.
Unsupported#
Not mandatory and not supported.
Discovery Cache Request / Response#
DEPRECATED Request: <transaction sequence number: 1> <source node ID:2> <source EUI64:8>Response: <transaction sequence number: 1> <status (== SL_ZIGBEE_ZDP_SUCCESS):1>
Macros#
Functions#
Request the 16 bit network address of a node whose EUI64 is known.
Set the manufacturer code to the specified value. The manufacturer code is one of the fields of the node descriptor.
Request the EUI64 of a node whose 16 bit network address is known.
Request that an energy scan be performed and its results returned. This request may only be sent by the current network manager and must be unicast, not broadcast.
Broadcast a request to set the identity of the network manager and the active channel mask. The mask is used when scanning for the network after missing a channel update.
Broadcast a request to change the channel. This request may only be sent by the current network manager. A several second delay occurs from receipt of the broadcast to changing the channel to allow time for the broadcast to propagate.
Send a broadcast for a ZDO Device announcement. Normally, it is NOT required to call this as the stack automatically sends a device announcement during joining or rejoining, as per the spec.
Send a broadcast for a ZDO Parent Announcement. Normally, it is NOT required to call this as the stack automatically sends a Parent Announce when a Zigbee Router/Coordinator reboots, is in a joined or authenticated state, and has at least one device.
Provide access to the stack ZDO transaction sequence number for the last request.
Set the ZDO (WWAH) configuration mode in the stack. ZDO configuration mode is used to enable/disable ZDO command processing and to protect the device from unauthorized configuration changes during normal operation.
Set the channel number the device will accept in ZDO Mgmt Network Update command to change channel.
This is an API to set the device capability extension TLV used by Zigbee Direct.
Network and IEEE Address Request/Response Documentation#
NETWORK_ADDRESS_REQUEST#
#define NETWORK_ADDRESS_REQUESTValue:
0x0000u
258
of file stack/include/zigbee-device-stack.h
NETWORK_ADDRESS_RESPONSE#
#define NETWORK_ADDRESS_RESPONSEValue:
0x8000u
259
of file stack/include/zigbee-device-stack.h
IEEE_ADDRESS_REQUEST#
#define IEEE_ADDRESS_REQUESTValue:
0x0001u
260
of file stack/include/zigbee-device-stack.h
IEEE_ADDRESS_RESPONSE#
#define IEEE_ADDRESS_RESPONSEValue:
0x8001u
261
of file stack/include/zigbee-device-stack.h
Node Descriptor Request/Response Documentation#
NODE_DESCRIPTOR_REQUEST#
#define NODE_DESCRIPTOR_REQUESTValue:
0x0002u
289
of file stack/include/zigbee-device-stack.h
NODE_DESCRIPTOR_RESPONSE#
#define NODE_DESCRIPTOR_RESPONSEValue:
0x8002u
290
of file stack/include/zigbee-device-stack.h
Power Descriptor Request / Response Documentation#
POWER_DESCRIPTOR_REQUEST#
#define POWER_DESCRIPTOR_REQUESTValue:
0x0003u
303
of file stack/include/zigbee-device-stack.h
POWER_DESCRIPTOR_RESPONSE#
#define POWER_DESCRIPTOR_RESPONSEValue:
0x8003u
304
of file stack/include/zigbee-device-stack.h
Simple Descriptor Request / Response Documentation#
SIMPLE_DESCRIPTOR_REQUEST#
#define SIMPLE_DESCRIPTOR_REQUESTValue:
0x0004u
320
of file stack/include/zigbee-device-stack.h
SIMPLE_DESCRIPTOR_RESPONSE#
#define SIMPLE_DESCRIPTOR_RESPONSEValue:
0x8004u
321
of file stack/include/zigbee-device-stack.h
Active Endpoints Request / Response Documentation#
ACTIVE_ENDPOINTS_REQUEST#
#define ACTIVE_ENDPOINTS_REQUESTValue:
0x0005u
332
of file stack/include/zigbee-device-stack.h
ACTIVE_ENDPOINTS_RESPONSE#
#define ACTIVE_ENDPOINTS_RESPONSEValue:
0x8005u
333
of file stack/include/zigbee-device-stack.h
Match Descriptors Request / Response Documentation#
MATCH_DESCRIPTORS_REQUEST#
#define MATCH_DESCRIPTORS_REQUESTValue:
0x0006u
347
of file stack/include/zigbee-device-stack.h
MATCH_DESCRIPTORS_RESPONSE#
#define MATCH_DESCRIPTORS_RESPONSEValue:
0x8006u
348
of file stack/include/zigbee-device-stack.h
End Device Announce and End Device Announce Response Documentation#
END_DEVICE_ANNOUNCE#
#define END_DEVICE_ANNOUNCEValue:
0x0013u
359
of file stack/include/zigbee-device-stack.h
END_DEVICE_ANNOUNCE_RESPONSE#
#define END_DEVICE_ANNOUNCE_RESPONSEValue:
0x8013u
360
of file stack/include/zigbee-device-stack.h
System Server Discovery Request / Response Documentation#
SYSTEM_SERVER_DISCOVERY_REQUEST#
#define SYSTEM_SERVER_DISCOVERY_REQUESTValue:
0x0015u
374
of file stack/include/zigbee-device-stack.h
SYSTEM_SERVER_DISCOVERY_RESPONSE#
#define SYSTEM_SERVER_DISCOVERY_RESPONSEValue:
0x8015u
375
of file stack/include/zigbee-device-stack.h
Parent Announce and Parent Announce Response Documentation#
PARENT_ANNOUNCE#
#define PARENT_ANNOUNCEValue:
0x001Fu
390
of file stack/include/zigbee-device-stack.h
PARENT_ANNOUNCE_RESPONSE#
#define PARENT_ANNOUNCE_RESPONSEValue:
0x801Fu
391
of file stack/include/zigbee-device-stack.h
Find Node Cache Request / Response Documentation#
FIND_NODE_CACHE_REQUEST#
#define FIND_NODE_CACHE_REQUESTValue:
0x001Cu
407
of file stack/include/zigbee-device-stack.h
FIND_NODE_CACHE_RESPONSE#
#define FIND_NODE_CACHE_RESPONSEValue:
0x801Cu
408
of file stack/include/zigbee-device-stack.h
End Device Bind Request / Response Documentation#
END_DEVICE_BIND_REQUEST#
#define END_DEVICE_BIND_REQUESTValue:
0x0020u
421
of file stack/include/zigbee-device-stack.h
END_DEVICE_BIND_RESPONSE#
#define END_DEVICE_BIND_RESPONSEValue:
0x8020u
422
of file stack/include/zigbee-device-stack.h
Clear All Bindings Request / Response Documentation#
CLEAR_ALL_BINDINGS_REQUEST#
#define CLEAR_ALL_BINDINGS_REQUESTValue:
0x002Bu
435
of file stack/include/zigbee-device-stack.h
CLEAR_ALL_BINDINGS_RESPONSE#
#define CLEAR_ALL_BINDINGS_RESPONSEValue:
0x802Bu
436
of file stack/include/zigbee-device-stack.h
Binding types and Request / Response Documentation#
UNICAST_BINDING#
#define UNICAST_BINDINGValue:
0x03u
456
of file stack/include/zigbee-device-stack.h
UNICAST_MANY_TO_ONE_BINDING#
#define UNICAST_MANY_TO_ONE_BINDINGValue:
0x83u
457
of file stack/include/zigbee-device-stack.h
MULTICAST_BINDING#
#define MULTICAST_BINDINGValue:
0x01u
458
of file stack/include/zigbee-device-stack.h
BIND_REQUEST#
#define BIND_REQUESTValue:
0x0021u
460
of file stack/include/zigbee-device-stack.h
BIND_RESPONSE#
#define BIND_RESPONSEValue:
0x8021u
461
of file stack/include/zigbee-device-stack.h
UNBIND_REQUEST#
#define UNBIND_REQUESTValue:
0x0022u
462
of file stack/include/zigbee-device-stack.h
UNBIND_RESPONSE#
#define UNBIND_RESPONSEValue:
0x8022u
463
of file stack/include/zigbee-device-stack.h
LQI Table Request / Response Documentation#
LQI_TABLE_REQUEST#
#define LQI_TABLE_REQUESTValue:
0x0031u
513
of file stack/include/zigbee-device-stack.h
LQI_TABLE_RESPONSE#
#define LQI_TABLE_RESPONSEValue:
0x8031u
514
of file stack/include/zigbee-device-stack.h
Routing Table Request / Response Documentation#
ROUTING_TABLE_REQUEST#
#define ROUTING_TABLE_REQUESTValue:
0x0032u
549
of file stack/include/zigbee-device-stack.h
ROUTING_TABLE_RESPONSE#
#define ROUTING_TABLE_RESPONSEValue:
0x8032u
550
of file stack/include/zigbee-device-stack.h
Binding Table Request / Response Documentation#
BINDING_TABLE_REQUEST#
#define BINDING_TABLE_REQUESTValue:
0x0033u
571
of file stack/include/zigbee-device-stack.h
BINDING_TABLE_RESPONSE#
#define BINDING_TABLE_RESPONSEValue:
0x8033u
572
of file stack/include/zigbee-device-stack.h
Leave Request / Response Documentation#
LEAVE_REQUEST#
#define LEAVE_REQUESTValue:
0x0034u
585
of file stack/include/zigbee-device-stack.h
LEAVE_RESPONSE#
#define LEAVE_RESPONSEValue:
0x8034u
586
of file stack/include/zigbee-device-stack.h
LEAVE_REQUEST_REMOVE_CHILDREN_FLAG#
#define LEAVE_REQUEST_REMOVE_CHILDREN_FLAGValue:
0x40u
588
of file stack/include/zigbee-device-stack.h
LEAVE_REQUEST_REJOIN_FLAG#
#define LEAVE_REQUEST_REJOIN_FLAGValue:
0x80u
589
of file stack/include/zigbee-device-stack.h
Permit Joining Request / Response Documentation#
PERMIT_JOINING_REQUEST#
#define PERMIT_JOINING_REQUESTValue:
0x0036u
600
of file stack/include/zigbee-device-stack.h
PERMIT_JOINING_RESPONSE#
#define PERMIT_JOINING_RESPONSEValue:
0x8036u
601
of file stack/include/zigbee-device-stack.h
Network Update Request / Response Documentation#
NWK_UPDATE_REQUEST#
#define NWK_UPDATE_REQUESTValue:
0x0038u
629
of file stack/include/zigbee-device-stack.h
NWK_UPDATE_RESPONSE#
#define NWK_UPDATE_RESPONSEValue:
0x8038u
630
of file stack/include/zigbee-device-stack.h
NWK_UPDATE_ENHANCED_REQUEST#
#define NWK_UPDATE_ENHANCED_REQUESTValue:
0x0039u
632
of file stack/include/zigbee-device-stack.h
NWK_UPDATE_ENHANCED_RESPONSE#
#define NWK_UPDATE_ENHANCED_RESPONSEValue:
0x8039u
633
of file stack/include/zigbee-device-stack.h
NWK_UPDATE_IEEE_JOINING_LIST_REQUEST#
#define NWK_UPDATE_IEEE_JOINING_LIST_REQUESTValue:
0x003Au
635
of file stack/include/zigbee-device-stack.h
NWK_UPDATE_IEEE_JOINING_LIST_REPONSE#
#define NWK_UPDATE_IEEE_JOINING_LIST_REPONSEValue:
0x803Au
636
of file stack/include/zigbee-device-stack.h
NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFY#
#define NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFYValue:
0x803Bu
638
of file stack/include/zigbee-device-stack.h
Beacon Survey Request / Response Documentation#
BEACON_SURVEY_REQUEST#
#define BEACON_SURVEY_REQUESTValue:
0x003Cu
674
of file stack/include/zigbee-device-stack.h
BEACON_SURVEY_RESPONSE#
#define BEACON_SURVEY_RESPONSEValue:
0x803Cu
675
of file stack/include/zigbee-device-stack.h
Security Start Key Negotiation Request / Response Documentation#
KEY_NEGOTIATION_REQUEST#
#define KEY_NEGOTIATION_REQUESTValue:
0x0040u
713
of file stack/include/zigbee-device-stack.h
KEY_NEGOTIATION_RESPONSE#
#define KEY_NEGOTIATION_RESPONSEValue:
0x8040u
714
of file stack/include/zigbee-device-stack.h
Retrieve Authentication Token Request / Response Documentation#
AUTHENTICATION_TOKEN_REQUEST#
#define AUTHENTICATION_TOKEN_REQUESTValue:
0x0041u
736
of file stack/include/zigbee-device-stack.h
AUTHENTICATION_TOKEN_RESPONSE#
#define AUTHENTICATION_TOKEN_RESPONSEValue:
0x8041u
737
of file stack/include/zigbee-device-stack.h
Retrieve Authentication Level Request / Response Documentation#
AUTHENTICATION_LEVEL_REQUEST#
#define AUTHENTICATION_LEVEL_REQUESTValue:
0x0042u
761
of file stack/include/zigbee-device-stack.h
AUTHENTICATION_LEVEL_RESPONSE#
#define AUTHENTICATION_LEVEL_RESPONSEValue:
0x8042u
762
of file stack/include/zigbee-device-stack.h
Set Configuration Request / Response Documentation#
SET_CONFIGURATION_REQUEST#
#define SET_CONFIGURATION_REQUESTValue:
0x0043u
779
of file stack/include/zigbee-device-stack.h
SET_CONFIGURATION_RESPONSE#
#define SET_CONFIGURATION_RESPONSEValue:
0x8043u
780
of file stack/include/zigbee-device-stack.h
Get Configuration Request / Response Documentation#
GET_CONFIGURATION_REQUEST#
#define GET_CONFIGURATION_REQUESTValue:
0x0044u
800
of file stack/include/zigbee-device-stack.h
GET_CONFIGURATION_RESPONSE#
#define GET_CONFIGURATION_RESPONSEValue:
0x8044u
801
of file stack/include/zigbee-device-stack.h
Security Start Key Update Request / Response Documentation#
KEY_UPDATE_REQUEST#
#define KEY_UPDATE_REQUESTValue:
0x0045u
830
of file stack/include/zigbee-device-stack.h
KEY_UPDATE_RESPONSE#
#define KEY_UPDATE_RESPONSEValue:
0x8045u
831
of file stack/include/zigbee-device-stack.h
Security Decommission Request / Response Documentation#
SECURITY_DECOMMISSION_REQUEST#
#define SECURITY_DECOMMISSION_REQUESTValue:
0x0046u
844
of file stack/include/zigbee-device-stack.h
SECURITY_DECOMMISSION_RESPONSE#
#define SECURITY_DECOMMISSION_RESPONSEValue:
0x8046u
845
of file stack/include/zigbee-device-stack.h
Challenge for APS frame counter synchronization Documentation#
SECURITY_CHALLENGE_REQUEST#
#define SECURITY_CHALLENGE_REQUESTValue:
0x0047u
866
of file stack/include/zigbee-device-stack.h
SECURITY_CHALLENGE_RESPONSE#
#define SECURITY_CHALLENGE_RESPONSEValue:
0x8047u
867
of file stack/include/zigbee-device-stack.h
Unsupported Documentation#
COMPLEX_DESCRIPTOR_REQUEST#
#define COMPLEX_DESCRIPTOR_REQUESTValue:
0x0010u
873
of file stack/include/zigbee-device-stack.h
COMPLEX_DESCRIPTOR_RESPONSE#
#define COMPLEX_DESCRIPTOR_RESPONSEValue:
0x8010u
874
of file stack/include/zigbee-device-stack.h
USER_DESCRIPTOR_REQUEST#
#define USER_DESCRIPTOR_REQUESTValue:
0x0011u
875
of file stack/include/zigbee-device-stack.h
USER_DESCRIPTOR_RESPONSE#
#define USER_DESCRIPTOR_RESPONSEValue:
0x8011u
876
of file stack/include/zigbee-device-stack.h
DISCOVERY_REGISTER_REQUEST#
#define DISCOVERY_REGISTER_REQUESTValue:
0x0012u
877
of file stack/include/zigbee-device-stack.h
DISCOVERY_REGISTER_RESPONSE#
#define DISCOVERY_REGISTER_RESPONSEValue:
0x8012u
878
of file stack/include/zigbee-device-stack.h
USER_DESCRIPTOR_SET#
#define USER_DESCRIPTOR_SETValue:
0x0014u
879
of file stack/include/zigbee-device-stack.h
USER_DESCRIPTOR_CONFIRM#
#define USER_DESCRIPTOR_CONFIRMValue:
0x8014u
880
of file stack/include/zigbee-device-stack.h
NETWORK_DISCOVERY_REQUEST#
#define NETWORK_DISCOVERY_REQUESTValue:
0x0030u
881
of file stack/include/zigbee-device-stack.h
NETWORK_DISCOVERY_RESPONSE#
#define NETWORK_DISCOVERY_RESPONSEValue:
0x8030u
882
of file stack/include/zigbee-device-stack.h
DIRECT_JOIN_REQUEST#
#define DIRECT_JOIN_REQUESTValue:
0x0035u
883
of file stack/include/zigbee-device-stack.h
DIRECT_JOIN_RESPONSE#
#define DIRECT_JOIN_RESPONSEValue:
0x8035u
884
of file stack/include/zigbee-device-stack.h
Discovery Cache Request / Response Documentation#
DISCOVERY_CACHE_REQUEST#
#define DISCOVERY_CACHE_REQUESTValue:
0x0012u
895
of file stack/include/zigbee-device-stack.h
DISCOVERY_CACHE_RESPONSE#
#define DISCOVERY_CACHE_RESPONSEValue:
0x8012u
896
of file stack/include/zigbee-device-stack.h
Macro Definition Documentation#
CLUSTER_ID_RESPONSE_MINIMUM#
#define CLUSTER_ID_RESPONSE_MINIMUMValue:
0x8000u
899
of file stack/include/zigbee-device-stack.h
Function Documentation#
sl_zigbee_network_address_request#
sl_status_t sl_zigbee_network_address_request (sl_802154_long_addr_t target, bool reportKids, uint8_t childStartIndex)
Request the 16 bit network address of a node whose EUI64 is known.
N/A | target | The EUI64 of the node. |
N/A | reportKids | True to request that the target list their children in the response. |
N/A | childStartIndex | The index of the first child to list in the response. Ignored if |
Returns
An ::sl_status_t value.
::SL_STATUS_OK - The request was transmitted successfully.
::SL_STATUS_ALLOCATION_FAILED - Insufficient message buffers were available to construct the request.
::SL_STATUS_NETWORK_DOWN - The node is not part of a network.
::SL_STATUS_BUSY - Transmission of the request failed.
47
of file stack/include/zigbee-device-stack.h
sl_zigbee_set_manufacturer_code#
sl_status_t sl_zigbee_set_manufacturer_code (uint16_t code)
Set the manufacturer code to the specified value. The manufacturer code is one of the fields of the node descriptor.
N/A | code | The manufacturer code for the local node. |
56
of file stack/include/zigbee-device-stack.h
sl_zigbee_ieee_address_request#
sl_status_t sl_zigbee_ieee_address_request (sl_802154_short_addr_t target, bool reportKids, uint8_t childStartIndex, sl_zigbee_aps_option_t options)
Request the EUI64 of a node whose 16 bit network address is known.
N/A | target | The network address of the node. |
N/A | reportKids | True to request that the target list their children in the response. |
N/A | childStartIndex | The index of the first child to list in the response. Ignored if reportKids is false. |
N/A | options | The options to use when sending the request. See sl_zigbee_send_unicast() for a description. |
Returns
An ::sl_status_t value.
::SL_STATUS_OK
::SL_STATUS_ALLOCATION_FAILED
::SL_STATUS_NETWORK_DOWN
::SL_STATUS_BUSY
74
of file stack/include/zigbee-device-stack.h
sl_zigbee_ieee_address_request_to_target#
sl_status_t sl_zigbee_ieee_address_request_to_target (sl_802154_short_addr_t discoveryNodeId, bool reportKids, uint8_t childStartIndex, sl_zigbee_aps_option_t options, sl_802154_short_addr_t targetNodeIdOfRequest)
N/A | discoveryNodeId | |
N/A | reportKids | |
N/A | childStartIndex | |
N/A | options | |
N/A | targetNodeIdOfRequest |
79
of file stack/include/zigbee-device-stack.h
sl_zigbee_energy_scan_request#
sl_status_t sl_zigbee_energy_scan_request (sl_802154_short_addr_t target, uint32_t scanChannels, uint8_t scanDuration, uint16_t scanCount)
Request that an energy scan be performed and its results returned. This request may only be sent by the current network manager and must be unicast, not broadcast.
N/A | target | The network address of the node to perform the scan. |
N/A | scanChannels | A mask of the channels to be scanned. |
N/A | scanDuration | How long to scan on each channel. Allowed values are 0..5, with the scan times as specified by 802.15.4 (0 = 31 ms, 1 = 46 ms, 2 = 77 ms, 3 = 138 ms, 4 = 261 ms, 5 = 507 ms). |
N/A | scanCount | The number of scans to be performed on each channel (1 .. 8). |
Returns
An ::sl_status_t value.
::SL_STATUS_OK
::SL_STATUS_ALLOCATION_FAILED
::SL_STATUS_NETWORK_DOWN
::SL_STATUS_BUSY
104
of file stack/include/zigbee-device-stack.h
sl_zigbee_set_network_manager_request#
sl_status_t sl_zigbee_set_network_manager_request (sl_802154_short_addr_t networkManager, uint32_t activeChannels)
Broadcast a request to set the identity of the network manager and the active channel mask. The mask is used when scanning for the network after missing a channel update.
N/A | networkManager | The network address of the network manager. |
N/A | activeChannels | The new active channel mask. |
Returns
An ::sl_status_t value.
::SL_STATUS_OK
::SL_STATUS_ALLOCATION_FAILED
::SL_STATUS_NETWORK_DOWN
::SL_STATUS_BUSY
123
of file stack/include/zigbee-device-stack.h
sl_zigbee_channel_change_request#
sl_status_t sl_zigbee_channel_change_request (uint8_t channel)
Broadcast a request to change the channel. This request may only be sent by the current network manager. A several second delay occurs from receipt of the broadcast to changing the channel to allow time for the broadcast to propagate.
N/A | channel | The channel to change to. |
Returns
An ::sl_status_t value.
::SL_STATUS_OK
::SL_STATUS_ALLOCATION_FAILED
::SL_STATUS_NETWORK_DOWN
::SL_STATUS_BUSY
147
of file stack/include/zigbee-device-stack.h
sl_zigbee_send_device_announcement#
sl_status_t sl_zigbee_send_device_announcement (void )
Send a broadcast for a ZDO Device announcement. Normally, it is NOT required to call this as the stack automatically sends a device announcement during joining or rejoining, as per the spec.
N/A |
May be used to re-send the device announcement.
Returns
An ::sl_status_t value.
::SL_STATUS_OK
::SL_STATUS_INVALID_STATE
166
of file stack/include/zigbee-device-stack.h
sl_zigbee_send_parent_announcement#
sl_status_t sl_zigbee_send_parent_announcement (void )
Send a broadcast for a ZDO Parent Announcement. Normally, it is NOT required to call this as the stack automatically sends a Parent Announce when a Zigbee Router/Coordinator reboots, is in a joined or authenticated state, and has at least one device.
N/A |
May be used to re-send the parent announcement.
Returns
An ::sl_status_t value.
::SL_STATUS_OK
::SL_STATUS_INVALID_STATE
179
of file stack/include/zigbee-device-stack.h
sl_zigbee_get_last_stack_zig_dev_request_sequence#
uint8_t sl_zigbee_get_last_stack_zig_dev_request_sequence (void )
Provide access to the stack ZDO transaction sequence number for the last request.
N/A |
Returns
The last stack ZDO transaction sequence number used.
187
of file stack/include/zigbee-device-stack.h
sl_zigbee_set_zdo_configuration_mode#
void sl_zigbee_set_zdo_configuration_mode (bool enabled)
Set the ZDO (WWAH) configuration mode in the stack. ZDO configuration mode is used to enable/disable ZDO command processing and to protect the device from unauthorized configuration changes during normal operation.
N/A | enabled |
199
of file stack/include/zigbee-device-stack.h
sl_zigbee_set_pending_network_update_channel#
void sl_zigbee_set_pending_network_update_channel (uint8_t channel)
Set the channel number the device will accept in ZDO Mgmt Network Update command to change channel.
N/A | channel | A pending network update channel number. |
If a ZDO Mgmt Network Update command is received by the device specifying a channel that does not match with the given channel, the ZDO Mgmt Network Update command will be ignored by the device. A value of 0xFF indicates that any channel received in a ZDO Mgmt Network Update command will be accepted which is also the default value set by the stack.
213
of file stack/include/zigbee-device-stack.h
sl_set_device_capability_extension_field_for_zigbee_virtual_device#
void sl_set_device_capability_extension_field_for_zigbee_virtual_device (boolean attach_tlv, uint16_t capability_extension_bitmask)
This is an API to set the device capability extension TLV used by Zigbee Direct.
N/A | attach_tlv | boolean value to indicate if the tlv should be attached to the joiner encapsulation tlv , set true to attach |
N/A | capability_extension_bitmask | 2 bytes value to be set as described in the Zigbee Direct specification. |
If the local device is a Zigbee virtual Device it needs to present the capability extension TLV in the network commissioning request within the joiner encapsulation TLV. This is required only for a Zigbee Virtual Device.
225
of file stack/include/zigbee-device-stack.h