Digi XBee(R) ANSI C Host Library
Data Structures | Macros | Typedefs | Functions

ZigBee Device Objects (ZDO) and ZigBee Device Profile (ZDP). More...

#include "wpan/types.h"
#include "wpan/aps.h"

Go to the source code of this file.

Data Structures

struct  zdo_nwk_addr_req_t
 frame format for ZDO NKW_addr request More...
 
struct  zdo_nwk_addr_rsp_header_t
 
struct  zdo_ieee_addr_req_t
 frame format for ZDO IEEE_addr request More...
 
struct  zdo_node_desc_req_t
 frame format for ZDO Node_Desc request More...
 
struct  zdo_node_desc_t
 frame format for ZDO Node_Desc response More...
 
struct  zdo_node_desc_resp_t
 < see ZDO_STATUS_* macros More...
 
struct  zdo_power_desc_req_t
 frame format for ZDO Power_Desc request More...
 
struct  zdo_power_desc_t
 format for ZDO PowerDescriptor More...
 
struct  zdo_power_desc_rsp_t
 frame format for ZDO Power_Desc response More...
 
struct  zdo_simple_desc_req_t
 frame format for ZDO Simple_Desc request More...
 
struct  zdo_simple_desc_resp_header_t
 header for ZDO Simple_Desc response, followed by a SimpleDescriptor More...
 
struct  zdo_simple_desc_header_t
 header for ZDO SimpleDescriptor (part of a Simple_Desc response), followed by uint8_t input cluster count, multiple uint16_t input cluster IDs, uint8_t output cluster count, multiple uint16_t output cluster IDs More...
 
struct  zdo_active_ep_req_t
 frame format for ZDO Active_EP request More...
 
struct  zdo_active_ep_rsp_header_t
 header for ZDO Active_EP response, followed by .ep_count uint8_t endpoints More...
 
struct  zdo_match_desc_req_t
 header for ZDO Match_Desc request More...
 
struct  zdo_match_desc_out_clust_t
 Second half of Match_Desc request. More...
 
struct  zdo_match_desc_rsp_header_t
 header for ZDO Match_Desc response, followed by .match_length uint8_t endpoints More...
 
struct  zdo_complex_desc_req_t
 frame format for ZDO Complex_Desc request More...
 
struct  zdo_user_desc_req_t
 frame format for ZDO Complex_Desc request More...
 
struct  zdo_device_annce_t
 frame format for a ZDO Device_annce announcement More...
 
struct  zdo_bind_req_header_t
 
struct  zdo_bind_group_req_t
 frame format for a ZDO Bind Request with a group address as the destination (header.dst_addr_mode == ZDO_BIND_DST_MODE_GROUP) More...
 
struct  zdo_bind_address_req_t
 frame format for a ZDO Bind Request with an IEEE address and endpoint as the destination (header.dst_addr_mode == ZDO_BIND_DST_MODE_ADDR) More...
 
union  zdo_bind_req_t
 
struct  zdo_mgmt_leave_req_t
 frame format for a ZDO Management Leave Request More...
 
struct  zdo_mgmt_leave_rsp_t
 

Macros

#define ZDO_CONVERSATION_TIMEOUT   15
 number of seconds to wait for ZDO responses before timing out
 
#define ZDO_ENDPOINT(state)
 Macro for ZDO endpoint table entry. More...
 
#define ZDO_CLUST_RESPONSE_MASK   0x8000
 Cluster IDs with the high bit set are responses.
 
#define ZDO_CLUST_IS_RESPONSE(c)   (c & ZDO_CLUST_RESPONSE_MASK)
 
#define ZDO_NWK_ADDR_REQ   0x0000
 cluster ID for ZDO NWK_addr request
 
#define ZDO_NWK_ADDR_RSP   0x8000
 cluster ID for ZDO NWK_addr response
 
#define ZDO_NET_ADDR_PENDING   0xFFFE
 
#define ZDO_NET_ADDR_TIMEOUT   0xFFFF
 
#define ZDO_NET_ADDR_ERROR   0xFFFD
 
#define ZDO_IEEE_ADDR_REQ   0x0001
 cluster ID for ZDO IEEE_addr request
 
#define ZDO_IEEE_ADDR_RSP   0x8001
 cluster ID for ZDO IEEE_addr response
 
#define ZDO_IEEE_ADDR_PENDING   WPAN_IEEE_ADDR_UNDEFINED
 
#define ZDO_IEEE_ADDR_TIMEOUT   WPAN_IEEE_ADDR_BROADCAST
 
#define ZDO_IEEE_ADDR_ERROR   WPAN_IEEE_ADDR_ALL_ZEROS
 
#define ZDO_NODE_DESC_REQ   0x0002
 cluster ID for ZDO Node_Desc request
 
#define ZDO_NODE_DESC_RSP   0x8002
 cluster ID for ZDO Node_Desc response
 
#define ZDO_NODE_DESC_FLAGS0_TYPE_MASK   0x07
 
#define ZDO_NODE_DESC_FLAGS0_TYPE_COORD   0x00
 
#define ZDO_NODE_DESC_FLAGS0_TYPE_ROUTER   0x01
 
#define ZDO_NODE_DESC_FLAGS0_TYPE_ENDDEV   0x02
 
#define ZDO_NODE_DESC_FLAGS0_COMPLEX_DESC_AVAIL   0x08
 
#define ZDO_NODE_DESC_FLAGS0_USER_DESC_AVAIL   0x10
 
#define ZDO_NODE_DESC_FLAGS0_RESERVED   0xE0
 
#define ZDO_NODE_DESC_FLAGS1_APS_FIELD   0x07
 
#define ZDO_NODE_DESC_FLAGS1_FREQUENCY_MASK   0xF8
 
#define ZDO_NODE_DESC_FLAGS1_FREQ_868   (1<<0)
 
#define ZDO_NODE_DESC_FLAGS1_FREQ_RESERVED_1   (1<<1)
 
#define ZDO_NODE_DESC_FLAGS1_FREQ_900   (1<<2)
 
#define ZDO_NODE_DESC_FLAGS1_FREQ_2400   (1<<3)
 
#define ZDO_NODE_DESC_FLAGS1_FREQ_RESERVED_4   (1<<4)
 
#define ZDO_POWER_DESC_REQ   0x0003
 cluster ID for ZDO Power_Desc request
 
#define ZDO_POWER_DESC_RSP   0x8003
 cluster ID for ZDO Power_Desc response
 
#define ZDO_SIMPLE_DESC_REQ   0x0004
 cluster ID for ZDO Simple_Desc request
 
#define ZDO_SIMPLE_DESC_RSP   0x8004
 cluster ID for ZDO Simple_Desc response
 
#define ZDO_ACTIVE_EP_REQ   0x0005
 cluster ID for ZDO Active_EP request
 
#define ZDO_ACTIVE_EP_RSP   0x8005
 cluster ID for ZDO Active_EP response
 
#define ZDO_MATCH_DESC_REQ   0x0006
 cluster ID for ZDO Match_Desc request
 
#define ZDO_MATCH_DESC_RSP   0x8006
 cluster ID for ZDO Match_Desc response
 
#define ZDO_COMPLEX_DESC_REQ   0x0007
 cluster ID for ZDO Complex_Desc request
 
#define ZDO_COMPLEX_DESC_RSP   0x8007
 cluster ID for ZDO Complex_Desc response
 
#define ZDO_USER_DESC_REQ   0x0011
 cluster ID for ZDO User_Desc request
 
#define ZDO_USER_DESC_RSP   0x8011
 cluster ID for ZDO User_Desc response
 
#define ZDO_DEVICE_ANNCE   0x0013
 cluster ID for ZDO Device_annce announcement
 
#define ZDO_DEVICE_ANNCE_CLUSTER(handler, context)
 Entry for Device Annce handler in cluster table of ZDO endpoint. More...
 
#define ZDO_BIND_REQ   0x0021
 cluster ID for ZDO Bind request
 
#define ZDO_BIND_RSP   0x8021
 cluster ID for ZDO Bind response
 
#define ZDO_UNBIND_REQ   0x0022
 cluster ID for ZDO Unbind request
 
#define ZDO_UNBIND_RSP   0x8022
 cluster ID for ZDO Unbind response
 
#define ZDO_BIND_DST_MODE_GROUP   0x01
 zdo_bind_req_t contains 16-bit group address
 
#define ZDO_BIND_DST_MODE_ADDR   0x03
 zdo_bind_req_t contains 64-bit destination address and endpoint
 
#define ZDO_MGMT_LEAVE_REQ   0x0034
 cluster ID for ZDO Management Leave Request
 
#define ZDO_MGMT_LEAVE_RSP   0x8034
 cluster ID for ZDO Management Leave Response
 
#define ZDO_MGMT_LEAVE_REQ_ENCRYPTED   0x0100
 extra sending option for zdo_mgmt_leave_req
 

Typedefs

typedef zdo_nwk_addr_rsp_header_t zdo_ieee_addr_rsp_header_t
 

Functions

wpan_ep_state_t FARzdo_endpoint_state (wpan_dev_t *dev)
 Returns the ZDO endpoint's state if a device has a ZDO endpoint. More...
 
int zdo_handler (const wpan_envelope_t FAR *envelope, wpan_ep_state_t FAR *ep_state)
 Process ZDO frames (received on endpoint 0 with Profile ID 0). More...
 
int zdo_send_response (const wpan_envelope_t FAR *request, const void FAR *response, uint16_t length)
 Send a response to a ZDO request. More...
 
int zdo_match_desc_request (void *buffer, int16_t buflen, uint16_t addr_of_interest, uint16_t profile_id, const uint16_t *inClust, const uint16_t *outClust)
 Generate a Match_Desc (Match Descriptor) request (ZigBee spec 2.4.3.1.7) to send on the network. More...
 
int zdo_send_nwk_addr_req (wpan_dev_t *dev, const addr64 FAR *ieee_be, uint16_t FAR *net)
 Given a device's IEEE (64-bit) address, get its 16-bit network address by unicasting a ZDO NWK_addr request to it. More...
 
int zdo_send_ieee_addr_req (wpan_dev_t *dev, uint16_t net_addr, addr64 FAR *ieee_be)
 Given a device's 16-bit network address, get its IEEE (64-bit) address by unicasting a ZDO IEEE_addr request to it. More...
 
int zdo_simple_desc_request (wpan_envelope_t *envelope, uint16_t addr_of_interest, uint_fast8_t endpoint, wpan_response_fn callback, const void FAR *context)
 Send a ZDO Simple Descriptor Request. More...
 
int zdo_send_bind_req (wpan_envelope_t *envelope, uint16_t type, wpan_response_fn callback, void FAR *context)
 Send a ZDO Bind (or Unbind) Request to the destination address in the envelope. More...
 
int zdo_mgmt_leave_req (wpan_dev_t *dev, const addr64 *address, uint16_t flags)
 Send a ZDO Management Leave Request. More...
 
int zdo_send_descriptor_req (wpan_envelope_t *envelope, uint16_t cluster, uint16_t addr_of_interest, wpan_response_fn callback, const void FAR *context)
 Send a ZDO Node, Power, Complex or User Descriptor request, or an Active Endpoint request. More...
 

values for .request_type in NWK and IEEE address requests

#define ZDO_REQUEST_TYPE_SINGLE   0x00
 
#define ZDO_REQUEST_TYPE_EXTENDED   0x01
 

ZDO Mac Capability Flags

#define ZDO_CAPABILITY_ALTERNATE_PAN   0x01
 
#define ZDO_CAPABILITY_FULL_FUNCTION   0x02
 
#define ZDO_CAPABILITY_MAINS_POWER   0x04
 
#define ZDO_CAPABILITY_RX_ON_IDLE   0x08
 
#define ZDO_CAPABILITY_RESERVED_1   0x10
 
#define ZDO_CAPABILITY_RESERVED_2   0x20
 
#define ZDO_CAPABILITY_SECURITY   0x40
 
#define ZDO_CAPABILITY_ALLOCATE_ADDR   0x80
 

ZDO Status Values

#define ZDO_STATUS_SUCCESS   0x00
 
#define ZDO_STATUS_INV_REQUESTTYPE   0x80
 
#define ZDO_STATUS_DEVICE_NOT_FOUND   0x81
 
#define ZDO_STATUS_INVALID_EP   0x82
 
#define ZDO_STATUS_NOT_ACTIVE   0x83
 
#define ZDO_STATUS_NOT_SUPPORTED   0x84
 
#define ZDO_STATUS_TIMEOUT   0x85
 
#define ZDO_STATUS_NO_MATCH   0x86
 
#define ZDO_STATUS_NO_ENTRY   0x88
 
#define ZDO_STATUS_NO_DESCRIPTOR   0x89
 
#define ZDO_STATUS_INSUFFICIENT_SPACE   0x8A
 
#define ZDO_STATUS_NOT_PERMITTED   0x8B
 
#define ZDO_STATUS_TABLE_FULL   0x8C
 
#define ZDO_STATUS_NOT_AUTHORIZED   0x8D
 

ZDO Node Descriptor - MAC Capability Flags

#define ZDO_NODE_DESC_MAC_CAPABILITY_ALT_PAN_COORD   (1<<0)
 
#define ZDO_NODE_DESC_MAC_CAPABILITY_DEVICE_TYPE   (1<<1)
 
#define ZDO_NODE_DESC_MAC_CAPABILITY_POWER_SOURCE   (1<<2)
 
#define ZDO_NODE_DESC_MAC_CAPABILITY_RX_ON_IDLE   (1<<3)
 
#define ZDO_NODE_DESC_MAC_CAPABILITY_RESERVED_4   (1<<4)
 
#define ZDO_NODE_DESC_MAC_CAPABILITY_RESERVED_5   (1<<5)
 
#define ZDO_NODE_DESC_MAC_CAPABILITY_SECURITY   (1<<6)
 
#define ZDO_NODE_DESC_MAC_CAPABILITY_ALLOCATE_ADDR   (1<<7)
 

ZDO Node Descriptor - Server Mask Bit Assignments

#define ZDO_NODE_DESC_SERVER_MASK_PRIMARY_TRUST   (1<<0)
 
#define ZDO_NODE_DESC_SERVER_MASK_BACKUP_TRUST   (1<<1)
 
#define ZDO_NODE_DESC_SERVER_MASK_PRIMARY_BINDING   (1<<2)
 
#define ZDO_NODE_DESC_SERVER_MASK_BACKUP_BINDING   (1<<3)
 
#define ZDO_NODE_DESC_SERVER_MASK_PRIMARY_DISCOVERY   (1<<4)
 
#define ZDO_NODE_DESC_SERVER_MASK_BACKUP_DISCOVERY   (1<<5)
 
#define ZDO_NODE_DESC_SERVER_MASK_NETWORK_MANAGER   (1<<6)
 

PowerDescriptor macros

macros used in PowerDescriptor (zdo_power_desc_t)

#define ZDO_POWER_SOURCE_MAINS   0x01
 
#define ZDO_POWER_SOURCE_RECHARGABLE   0x02
 
#define ZDO_POWER_SOURCE_DISPOSABLE   0x04
 
#define ZDO_POWER_SOURCE_RESERVED   0x08
 
#define ZDO_POWER0_SYNC   0x00
 
#define ZDO_POWER0_PERIODIC   0x01
 
#define ZDO_POWER0_STIMULATED   0x02
 
#define ZDO_POWER0_AVAIL_MAINS   (ZDO_POWER_SOURCE_MAINS << 4)
 
#define ZDO_POWER0_AVAIL_RECHARGABLE   (ZDO_POWER_SOURCE_RECHARGABLE << 4)
 
#define ZDO_POWER0_AVAIL_DISPOSABLE   (ZDO_POWER_SOURCE_DISPOSABLE << 4)
 
#define ZDO_POWER0_AVAIL_RESERVED   (ZDO_POWER_SOURCE_RESERVED << 4)
 
#define ZDO_POWER1_LEVEL_CRITICAL   0x00
 
#define ZDO_POWER1_LEVEL_33   0x40
 
#define ZDO_POWER1_LEVEL_66   0x80
 
#define ZDO_POWER1_LEVEL_FULL   0xC0
 
#define ZDO_POWER1_CURRENT_MAINS   ZDO_POWER_SOURCE_MAINS
 
#define ZDO_POWER1_CURRENT_RECHARGABLE   ZDO_POWER_SOURCE_RECHARGABLE
 
#define ZDO_POWER1_CURRENT_DISPOSABLE   ZDO_POWER_SOURCE_DISPOSABLE
 
#define ZDO_POWER1_CURRENT_RESERVED   ZDO_POWER_SOURCE_RESERVED
 

Detailed Description

ZigBee Device Objects (ZDO) and ZigBee Device Profile (ZDP).