ZigBee Device Profile (ZDP) API

The chapter describes the resources of the ZigBee Device Profile (ZDP) API. This API is concerned with sending network requests (for example, binding requests) and receiving responses. The API is defined in the header file zps_apl_zdp.h.

In this chapter:

  • Section 9.1 details the ZDP API functions.

  • Section 9.2 details the ZDP API structures.

  • Section 9.3 describes the broadcast options when sending requests using the ZDP API functions.

ZDP API functions

The ZDP API functions are divided into the following categories:

Common parameters

All the ZDP API functions, except ZPS_bAplZdpUnpackResponse(), are concerned with sending out a request and all use a similar set of parameters. These parameters are described below, but more specific information is provided as part of the function descriptions:

  • hAPdu: This is the unique handle of the APDU (Application Protocol Data Unit) instance for the request to be sent (see below).

  • uDstAddr: This is the IEEE address or network address of the node to which the request is sent (the parameter bExtAddrmust be set according to the type of address used). For a broadcast, uDstAddrmust be set to a special address, as described in Section 9.3.

  • bExtAddr: This is a Boolean indicating the type of address specified in the parameter uDstAddr as a 64-bit IEEE address (TRUE) or 16-bit network address (FALSE).

  • pu8SeqNumber: This is a pointer to the sequence number for the request - each request must have a unique sequence number to help determine the order in which requests were sent. On sending a request, the function automatically increments the sequence number for the next request.

  • u16ProfileId: This is the identifier of the ZigBee application profile being used.

  • psZdpNwkAddrReq: This is a pointer to a structure representing the request. The structure used is dependent on the specific function. The different request structures are detailed in Section 9.2.2.

APDUs for requests and responses

A request generated by this API is sent in an APDU (Application Protocol Data Unit). A local APDU instance for the request must first be allocated using the PDUM function PDUM_hAPduAllocateAPduInstance(). This function returns a handle for the APDU instance, which is subsequently used in the relevant ZDP API request function. Once the request is successfully sent, the APDU instance is automatically de-allocated by the stack (there is no need for the application to de-allocate it).

Note: If the request is not successfully sent (the send function does not return ZPS_E_SUCCESS), then the APDU instance is not de-allocated automatically. In such cases, the application should de-allocate it using the PDUM function PDUM_eAPduFreeAPduInstance().

When a response is subsequently received, the stack automatically allocates a local APDU instance and includes its handle in the notification event for the response. Once the response has been dealt with, the application must de-allocate the APDU instance using the function PDUM_eAPduFreeAPduInstance().

Address discovery functions

The ZDP Address Discovery functions are concerned with obtaining addresses of nodes in the network.

The functions are listed below:

  1. ZPS_eAplZdpNwkAddrRequest

  2. ZPS_eAplZdpIEEEAddrRequest

  3. ZPS_eAplZdpDeviceAnnceRequest

Note: Further addressing functions are provided in the ZDO API and are described in Section 7.1.3.

ZPS_eAplZdpNwkAddrRequest

ZPS\_teStatus ZPS\_eAplZdpNwkAddrRequest\(
        PDUM\_thAPduInstance hAPduInst,
        ZPS\_tuAddress uDstAddr,
        bool bExtAddr,
        uint8 *pu8SeqNumber,
        ZPS\_tsAplZdpNwkAddrReq *psZdpNwkAddrReq);
Description

This function requests the 16-bit network address of the node with a particular 64-bit IEEE (MAC) address. The function sends out an NWK_addr_req request, which can be either unicast or broadcast, as follows:

  • Unicast to another node, specified through uDstAddr, that will ‘know’ the required network address (this may be the parent of the node of interest or the Coordinator)

  • Broadcast to the network, in which case uDstAddrmust be set to the special network address 0xFFFF (see Section 9.3)

The IEEE address of the node of interest must be specified in the request, represented by the structure below (detailed further in Section 9.2.2.1).

typedef struct {
        uint64 u64IeeeAddr;
        uint8 u8RequestType;
        uint8 u8StartIndex;
} ZPS_tsAplZdpNwkAddrReq;

The required network address is received in an NWK_addr_resp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpNwkAddrRsp(detailed in Section 9.2.3.1). Note that this response can optionally contain the network addresses of the responding node’s neighbors (this option is selected as part of the request through u8RequestType).

Parent topic:ZPS_eAplZdpNwkAddrRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpNwkAddrReq: Pointer to request (see above).

Parent topic:ZPS_eAplZdpNwkAddrRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpNwkAddrRequest

Parent topic:Address discovery functions

ZPS_eAplZdpIEEEAddrRequest

ZPS\_teStatus ZPS\_eAplZdpIeeeAddrRequest\(
     PDUM\_thAPduInstance hAPduInst,
     ZPS\_tuAddress uDstAddr,
     bool bExtAddr,
     uint8 *pu8SeqNumber,
     ZPS\_tsAplZdpIeeeAddrReq *psZdpIeeeAddrReq);
Description

This function requests the 64-bit IEEE (MAC) address of the node with a particular 16-bit network address. The function sends an IEEE_addr_req request to the relevant node, specified through uDstAddr.

The network address of the node of interest must also be specified in the request, represented by the structure below (detailed further in Section 9.2.2.2).

typedef struct {

uint16 u16NwkAddrOfInterest; uint8 u8RequestType;

uint8 u8StartIndex;

} ZPS_tsAplZdpIeeeAddrReq;

The required IEEE address is received in an IEEE_addr_resp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpIeeeAddrRsp(detailed in Section 9.2.3.2). Note that this response can optionally contain the IEEE addresses of the responding node’s neighbors (this option is selected as part of the request through u8RequestType).

Parent topic:ZPS_eAplZdpIEEEAddrRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent

  • uDstAddr Network address of destination node of request (bExtAddrmust be set to FALSE - see below)

  • bExtAddr Type of destination address: TRUE: 64-bit IEEE (MAC) address FALSE: 16-bit network address

    • * pu8SeqNumber Pointer to sequence number of request

    • * psZdpIeeeAddrReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpIEEEAddrRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpIEEEAddrRequest

Parent topic:Address discovery functions

ZPS_eAplZdpDeviceAnnceRequest

ZPS_teStatus ZPS_eAplZdpDeviceAnnceRequest(
    PDUM_thAPduInstance hAPduInst,
    uint8 *pu8SeqNumber,
    ZPS_tsAplZdpDeviceAnnceReq *psZdpDeviceAnnceReq);
Description

This function is used to notify other nodes that the local node has joined or rejoined the network. The function broadcasts a Device_annce announcement to the network and is normally automatically called by the ZDO when the local node joins or rejoins the network.

The IEEE (MAC) and allocated network addresses as well as the capabilities of the sending node must be specified in the announcement, represented by the structure below (detailed further in Section 9.2.2.3).

typedef struct {
    uint16 u16NwkAddr;
    uint64 u64IeeeAddr;
    uint8 u8Capability;
} ZPS_tsAplZdpDeviceAnnceReq;

On receiving this announcement, a network node updates any information it holds that relates to the supplied IEEE and network addresses:

  • If it already holds the supplied IEEE address, it updates the corresponding network address with the supplied one (if necessary).

  • If it already holds the supplied network address but with a different corresponding IEEE address, the latter is marked as not having a valid corresponding network address.

Parent topic:ZPS_eAplZdpDeviceAnnceRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent

  • * pu8SeqNumber Pointer to sequence number of announcement

  • * psZdpDeviceAnnceReq Pointer to announcement (see above)

Parent topic:ZPS_eAplZdpDeviceAnnceRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpDeviceAnnceRequest

Parent topic:Address discovery functions

Parent topic:ZDP API functions

Service Discovery functions

The ZDP Service Discovery functions are concerned with obtaining information about the nature and capabilities of a network node.

The functions are listed below.

  1. ZPS_eAplZdpNodeDescRequest

  2. ZPS_eAplZdpPowerDescRequest

  3. ZPS_eAplZdpSimpleDescRequest

  4. ZPS_eAplZdpExtendedSimpleDescRequest

  5. ZPS_eAplZdpComplexDescRequest

  6. ZPS_eAplZdpUserDescRequest

  7. ZPS_eAplZdpMatchDescRequest

  8. ZPS_eAplZdpActiveEpRequest

  9. ZPS_eAplZdpExtendedActiveEpRequest

  10. ZPS_eAplZdpUserDescSetRequest

  11. ZPS_eAplZdpSystemServerDiscoveryRequest

  12. ZPS_eAplZdpDiscoveryCacheRequest

  13. ZPS_eAplZdpDiscoveryStoreRequest

  14. ZPS_eAplZdpNodeDescStoreRequest

  15. ZPS_eAplZdpPowerDescStoreRequest

  16. ZPS_eAplZdpSimpleDescStoreRequest

  17. ZPS_eAplZdpActiveEpStoreRequest

  18. ZPS_eAplZdpFindNodeCacheRequest

  19. ZPS_eAplZdpRemoveNodeCacheRequest

ZPS_eAplZdpNodeDescRequest

ZPS\_teStatus ZPS\_eAplZdpNodeDescRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpNodeDescReq *psZdpNodeDescReq);
Description

This function requests the Node descriptor of the node with a particular network address. The function sends a Node_Desc_req request either to the relevant node or to another node that may hold the required information in its primary discovery cache.

The network address of the node of interest must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.4).

typedef struct {
     uint16 u16NwkAddrOfInterest;
} ZPS_tsAplZdpNodeDescReq;

The required Node descriptor is received in a Node_Desc_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpNodeDescRsp(detailed in Section 9.2.3.3).

Parent topic:ZPS_eAplZdpNodeDescRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpNodeDescReq: Pointer to request (see above).

Parent topic:ZPS_eAplZdpNodeDescRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpNodeDescRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpPowerDescRequest

ZPS\_teStatus ZPS\_eAplZdpPowerDescRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpPowerDescReq *psZdpPowerDescReq);
Description

This function requests the Power descriptor of the node with a particular network address. The function sends a Power_Desc_req request either to the relevant node or to another node that may hold the required information in its primary discovery cache.

The network address of the node of interest must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.5).

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpPowerDescReq;

The required Power descriptor is received in a Power_Desc_rsp response. The descriptor should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpPowerDescRsp(detailed in Section 9.2.3.4).

Parent topic:ZPS_eAplZdpPowerDescRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpPowerDescReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpPowerDescRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpPowerDescRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpSimpleDescRequest

ZPS\_teStatus ZPS\_eAplZdpSimpleDescRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpSimpleDescReq *psZdpSimpleDescReq);
Description

This function requests the Simple descriptor for a specific endpoint on the node with a particular network address. The function sends a Simple_Desc_req request either to the relevant node or to another node that may hold the required information in its primary discovery cache.

The network address of the node of interest and the relevant endpoint on the node must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.6).

typedef struct {

uint16 u16NwkAddrOfInterest; uint8 u8EndPoint;

} ZPS_tsAplZdpSimpleDescReq;

The required Simple descriptor is received in a Simple_Desc_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpSimpleDescRsp(detailed in Section 9.2.3.5).

Parent topic:ZPS_eAplZdpSimpleDescRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpSimpleDescReq: Pointer to request (see above).

Parent topic:ZPS_eAplZdpSimpleDescRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpSimpleDescRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpExtendedSimpleDescRequest

ZPS\_teStatus ZPS\_eAplZdpExtendedSimpleDescRequest\(
  PDUM\_thAPduInstance hAPduInst,
  ZPS\_tuAddress uDstAddr,
  bool bExtAddr,
  uint8 *pu8SeqNumber,
  ZPS\_tsAplZdpExtendedSimpleDescReq
        *psZdpExtendedSimpleDescReq);
Description

This function requests a cluster list for a specific endpoint on the node with a particular network address. The function should be called if the endpoint has more input or output clusters than could be included in the response to ZPS_eAplZdpSimpleDescRequest(). The function sends an Extended_Simple_Desc_req request either to the relevant node or to another node that may hold the required information in its primary discovery cache.

The network address of the node of interest and the relevant endpoint on the node must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.7).

typedef struct { uint16 u16NwkAddr; uint8 u8EndPoint;

uint8 u8StartIndex;

} ZPS_tsAplZdpExtendedSimpleDescReq;

This structure allows you to specify the first input/output cluster of interest in the endpoint’s input and output cluster lists. Thus, this should normally be the cluster after the last one reported following a call to ZPS_eAplZdpSimpleDescRequest().

The required cluster information is received in a Extended_Simple_Desc_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpExtendedSimpleDescRsp(detailed in Section 9.2.3.6).

Parent topic:ZPS_eAplZdpExtendedSimpleDescRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpExtendedSimpleDescReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpExtendedSimpleDescRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpExtendedSimpleDescRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpComplexDescRequest

ZPS\_teStatus ZPS\_eAplZdpComplexDescRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
ZPS\_tsAplZdpComplexDescReq *psZdpComplexDescReq);
Description

This function requests the Complex descriptor of the node with a particular network address. The function sends a Complex_Desc_req request either to the relevant node or to another node that may hold the required information in its primary discovery cache.

The network address of the node of interest must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.8).

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpComplexDescReq;

The required Complex descriptor will be received in a Complex_Desc_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpComplexDescRsp(detailed in Section 9.2.3.7).

Parent topic:ZPS_eAplZdpComplexDescRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpComplexDescReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpComplexDescRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpComplexDescRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpUserDescRequest

ZPS_teStatus ZPS_eAplZdpUserDescRequest(
    PDUM_thAPduInstance hAPduInst,
    ZPS_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
ZPS_tsAplZdpUserDescReq *psZdpUserDescReq);
Description

This function requests the User descriptor of the node with a particular network address. The function sends a User_Desc_req request either to the relevant node or to another node that may hold the required information in its primary discovery cache.

Note: This function can only be used to access the User descriptor of a non-NXP device (which supports this descriptor), since the storage of a User descriptor on an NXP remove device is not supported.

The network address of the node of interest must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.9).

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpUserDescReq;

The required User descriptor will be received in a User_Desc_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpUserDescRsp(detailed in Section 9.2.3.8).

Parent topic:ZPS_eAplZdpUserDescRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpUserDescReq: Pointer to request (see above).

Parent topic:ZPS_eAplZdpUserDescRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpUserDescRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpMatchDescRequest

ZPS\_teStatus ZPS\_eAplZdpMatchDescRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpMatchDescReq *psZdpMatchDescReq);
Description

This function requests responses from network nodes with endpoints that match specified criteria in their Simple descriptors. More specifically, these criteria include: application profile, number of input clusters, number of output clusters, list of input clusters, and list of output clusters. The function sends out a Match_Desc_req command, as a broadcast to all network nodes. It might also be sent as a unicast to either a specific node of interest or to another node that may hold the required information in its primary discovery cache. The wildcard profile (0xFFFF) can be used to match any profile ID.

The request is represented by the structure below (further detailed in Section 9.2.2.10).

typedef struct {
    uint16 u16NwkAddrOfInterest;
    uint16 u16ProfileId;
    /* rest of message is variable length */
    uint8 u8NumInClusters;
    uint16* pu16InClusterList;
    uint8 u8NumOutClusters;
    uint16* pu16OutClusterList;
} ZPS_tsAplZdpMatchDescReq;

A node with matching endpoint criteria responds with a Match_Desc_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMatchDescRsp(detailed in Section9.2.3.9).

Parent topic:ZPS_eAplZdpMatchDescRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpMatchDescReq: Pointer to request (see above).

Parent topic:ZPS_eAplZdpMatchDescRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMatchDescRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpActiveEpRequest

ZPS\_teStatus ZPS\_eAplZdpActiveEpRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpActiveEpReq *psZdpActiveEpReq);
Description

This function requests a list of the active endpoints on a remote node. The function sends an Active_EP_req request either to the relevant node or to another node that may hold the required information in its primary discovery cache.

The network address of the node of interest must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.11).

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpActiveEpReq;

The endpoint list is received in an Active_EP_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpActiveEpRsp(detailed in Section 9.2.3.10).

Parent topic:ZPS_eAplZdpActiveEpRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent

  • uDstAddr: Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpActiveEpReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpActiveEpRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpActiveEpRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpExtendedActiveEpRequest

ZPS_teStatus ZPS_eAplZdpExtendedActiveEpRequest(
    PDUM_thAPduInstance hAPduInst,
    ZPS_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS_tsAplZdpExtendedActiveEpReq
    *psZdpExtendedActiveEpReq);
Description

This function requests a list of the active endpoints on a remote node. The function should be called if the node has more active endpoints than could be included in a response to ZPS_eAplZdpActiveEpRequest(). The function sends an Extended_Active_EP_req request either to the relevant node or to another node that may hold the required information in its primary discovery cache.

The network address of the node of interest must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.12).

typedef struct { uint16 u16NwkAddr;

uint8 u8StartIndex;

} ZPS_tsAplZdpExtendedActiveEpReq;

This structure allows you to specify the first endpoint of interest for the request.

The endpoint list is received in an Extended_Active_EP_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpExtendedActiveEpRsp(detailed in Section9.2.3.11).

Parent topic:ZPS_eAplZdpExtendedActiveEpRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpActiveEpReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpExtendedActiveEpRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpExtendedActiveEpRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpUserDescSetRequest

ZPS_teStatus ZPS_eAplZdpUserDescSetRequest(
    PDUM_thAPduInstance hAPduInst,
    ZPS_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS_tsAplZdpUserDescSet *psZdpUserDescSetReq);
Description

This function can be used to configure the User descriptor on a remote node. The function sends a User_Desc_set request either to the remote node or to another node that may hold the relevant User descriptor in its primary discovery cache.

Note: This function can only be used to access the User descriptor of a non-NXP device (which supports this descriptor), since the storage of a User descriptor on an NXP device is not supported.

The network address of the node of interest as well as the required modifications must be specified in the request, which is represented by the structure below (further detailed in Section 9.2.2.13).

typedef struct {

uint16 u16NwkAddrOfInterest; uint8 u8Length;

char szUserDescriptor[ZPS_ZDP_LENGTH_OF_USER_DESC];

} ZPS_tsAplZdpUserDescSet;

If the specified User descriptor was successfully modified, a User_Desc_conf response is received. This response should be collected by the application task using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpUserDescConf(detailed in Section 9.2.3.12).

Parent topic:ZPS_eAplZdpUserDescSetRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpUserDescSetReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpUserDescSetRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpUserDescSetRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpSystemServerDiscoveryRequest

ZPS\_teStatus ZPS\_eAplZdpSystemServerDiscoveryRequest\(
    PDUM\_thAPduInstance hAPduInst,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpSystemServerDiscoveryReq
                     *psZdpSystemServerDiscoveryReq);
Description

This function can be used to request information on the available servers hosted by remote nodes (Primary or Backup Trust Centre, Primary or Backup Binding Table Cache, Primary or Backup Discovery Cache, Network Manager). The function broadcasts a System_Server_Discovery_req request to all network nodes.

The required servers must be specified by means of a bitmask in the request, which is represented by the structure below (further detailed in Section 9.2.2.14).

typedef struct {

uint16 u16ServerMask;

} ZPS_tsAplZdpSystemServerDiscoveryReq;

A remote node replies with a System_Server_Discovery_rsp response, indicating which of the requested servers are implemented. This response should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpSystemServerDiscoveryRsp(detailed in Section 9.2.3.13).

Parent topic:ZPS_eAplZdpSystemServerDiscoveryRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • *pu8SeqNumber Pointer to sequence number of request

  • *psZdpSystemServerDiscoveryReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpSystemServerDiscoveryRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpSystemServerDiscoveryRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpDiscoveryCacheRequest

ZPS\_teStatus ZPS\_eAplZdpDiscoveryCacheRequest\(
    PDUM\_thAPduInstance hAPduInst,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpDiscoveryCacheReq
                    *psZdpDiscoveryCacheReq);
Description

This function is used to discover which nodes in the network have a primary discovery cache - that is, a bank of information about other nodes in the network. The function broadcasts a Discovery_Cache_req request to the network.

The request includes the network and IEEE addresses of the sending device, and is represented by the structure below (further detailed in Section 9.2.2.15).

typedef struct {

uint16 u16NwkAddr;

uint64 u64IeeeAddr;

} ZPS_tsAplZdpDiscoveryCacheReq;

A node with a primary discovery cache replies with a Discovery_Cache_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpDiscoveryCacheRsp(detailed in Section 9.2.3.14).

Parent topic:ZPS_eAplZdpDiscoveryCacheRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent.

  • *pu8SeqNumber: Pointer to sequence number of request.

  • *psZdpDiscoveryCacheReq: Pointer to request (see above).

Parent topic:ZPS_eAplZdpDiscoveryCacheRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpDiscoveryCacheRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpDiscoveryStoreRequest

ZPS\_teStatus ZPS\_eAplZdpDiscoveryStoreRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpDiscoveryStoreReq
                  *psZdpDiscoveryStoreReq);
Description

This function can be called on an End Device to request a remote node to reserve memory space to store the local node’s ‘discovery information’. To do this, the remote node must contain a primary discovery cache. The ‘discovery information’ includes the local node’s IEEE address, network address, Node descriptor, Power descriptor, Simple descriptor and number of active endpoints. The function sends a Discovery_store_req request to the remote node.

This request includes the network and IEEE addresses of the sending node as well as the amount of storage space (in bytes) needed to store the information. The request is represented by the structure below (further detailed in Section 9.2.2.16).

typedef struct {
        uint16 u16NwkAddr;
        uint64 u64IeeeAddr;
        uint8 u8NodeDescSize;
        uint8 u8PowerDescSize;
        uint8 u8ActiveEpSize;
        uint8 u8SimpleDescCount;
        /* Rest of message is variable length */
        uint8* pu8SimpleDescSizeList;
} ZPS_tsAplZdpDiscoveryStoreReq;

On receiving this request, the remote node first checks whether it has a primary discovery cache. If this is the case, it checks whether it has storage space in the cache for the new discovery information. If the space is available, it is reserved until the information is later uploaded from the local node.

The node replies with a Discovery_store_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpDiscoveryStoreRsp(detailed in Section 9.2.3.15).

Parent topic:ZPS_eAplZdpDiscoveryStoreRequest

Parameters
  • hAPduInst:**** Handle of APDU instance in which request is sent.

  • uDstAddr: Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpDiscoveryStoreReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpDiscoveryStoreRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpDiscoveryStoreRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpNodeDescStoreRequest

ZPS\_teStatus ZPS\_eAplZdpNodeDescStoreRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpNodeDescStoreReq
    *psZdpNodeDescStoreReq);
Description

This function can be called on an End Device to upload the local node’s Node descriptor for storage in the primary discovery cache on a remote node. The function sends a Node_Desc_store_req command to the remote node.

This request includes the network and IEEE addresses of the sending node as well as the Node descriptor to store. The request is represented by the structure below (further detailed in Section 9.2.2.17).

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;

/* Rest of message is variable length */ ZPS_tsAplZdpNodeDescriptor sNodeDescriptor;

} ZPS_tsAplZdpNodeDescStoreReq;

On receiving the request, the remote node will first check whether it has a primary discovery cache. If this is the case, it will check whether it has previously reserved storage space in its cache for the local node. If it has, it will store the Node descriptor in its cache.

The node replies with a Node_Desc_store_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpNodeDescStoreRsp(detailed in Section 9.2.3.16).

Note: This function should only be called if storage space for the local node’s ‘discovery information’ has previously been reserved on the remote node following a call to ZPS_eAplZdpDiscoveryStoreRequest().

Parent topic:ZPS_eAplZdpNodeDescStoreRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent.

  • uDstAddr: Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpNodeDescStoreReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpNodeDescStoreRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpNodeDescStoreRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpPowerDescStoreRequest

ZPS\_teStatus ZPS\_eAplZdpPowerDescStoreRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpPowerDescStoreReq
    *psZdpPowerDescStoreReq);
Description

This function can be called on an End Device to upload the local node’s Power descriptor for storage in the primary discovery cache on a remote node. The function sends a Power_Desc_store_req request to the remote node.

This request includes the network and IEEE addresses of the sending node as well as the Power descriptor to store. The request is represented by the structure below (further detailed in Section 9.2.2.18).

typedef struct {
    uint16 u16NwkAddr;
    uint64 u64IeeeAddr;
    /* Rest of message is variable length */
    ZPS_tsAplZdpNodePowerDescriptor sPowerDescriptor;
} ZPS_tsAplZdpPowerDescStoreReq;

On receiving the request, the remote node first checks whether it has a primary discovery cache. If this is the case, it checks whether it has previously reserved storage space in its cache for the local node. If it has, it stores the Power descriptor in its cache.

The node replies with a Power_Desc_store_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpPowerDescStoreRsp(detailed in Section 9.2.3.17).

Note: This function should only be called if storage space for the local node’s ‘discovery information’ has previously been reserved on the remote node following a call to ZPS_eAplZdpDiscoveryStoreRequest().

Parent topic:ZPS_eAplZdpPowerDescStoreRequest

Parameters
  • hAPduInst:**** Handle of APDU instance in which request is sent.

  • uDstAddr: Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpPowerDescStoreReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpPowerDescStoreRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpPowerDescStoreRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpSimpleDescStoreRequest

ZPS\_teStatus ZPS\_eAplZdpSimpleDescStoreRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpSimpleDescStoreReq
                *psZdpSimpleDescStoreReq);
Description

This function can be called on an End Device to upload a Simple descriptor from the local node for storage in the primary discovery cache on the specified remote node. The Simple descriptor for each endpoint on the local node must be uploaded separately using this function. The function sends a Simple_Desc_store_req request to the remote node.

This request includes the network and IEEE addresses of the sending node as well as the Simple descriptor to store. The request is represented by the structure below (further detailed in Section 9.2.2.19).

typedef struct {
    uint16 u16NwkAddr;
    uint64 u64IeeeAddr;
    uint8 u8Length;
    /* Rest of message is variable length */
    ZPS_tsAplZdpSimpleDescType sSimpleDescriptor;
} ZPS_tsAplZdpSimpleDescStoreReq;

On receiving the request, the remote node first checks whether it has a primary discovery cache. If this is the case, it checks whether it has previously reserved storage space in its cache for the local node. If it has, it stores the Simple descriptor in its cache.

The node replies with a Simple_Desc_store_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpSimpleDescStoreRsp(detailed in Section 9.2.3.18).

Note: This function should only be called if storage space for the local node’s ‘discovery information’ has previously been reserved on the remote node following a call to ZPS_eAplZdpDiscoveryStoreRequest().

Parent topic:ZPS_eAplZdpSimpleDescStoreRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent.

  • uDstAddr: Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpSimpleDescStoreReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpSimpleDescStoreRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpSimpleDescStoreRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpActiveEpStoreRequest

ZPS\_teStatus ZPS\_eAplZdpActiveEpStoreRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpActiveEpStoreReq
                *psZdpActiveEpStoreReq);
Description

This function can be called on an End Device to upload a list of its active endpoints for storage in the primary discovery cache on a remote node. The function sends an Active_EP_store_req command to the remote node.

This request includes the network and IEEE addresses of the sending node as well as the list of active endpoints to store. The request is represented by the structure below (further detailed in Section 9.2.2.20).

typedef struct {
    uint16 u16NwkAddr;
    uint64 u64IeeeAddr;
    uint8 u8ActiveEPCount;
    /* Rest of message is variable length */
    uint8* pu8ActiveEpList;
} ZPS_tsAplZdpActiveEpStoreReq;

On receiving the request, the remote node first checks whether it has a primary discovery cache. If this is the case, it checks whether it has previously reserved storage space in its cache for the local node. If it has, it stores the list of active endpoints in its cache.

The node replies with an Active_EP_store_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpActiveEpStoreRsp(detailed in Section 9.2.3.19).

Note: This function should only be called if storage space for the local node’s ‘discovery information’ has previously been reserved on the remote node following a call to ZPS_eAplZdpDiscoveryStoreRequest().

Parent topic:ZPS_eAplZdpActiveEpStoreRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent.

  • uDstAddr: Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpActiveEpStoreReq: Pointer to request (see above).

Parent topic:ZPS_eAplZdpActiveEpStoreRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpActiveEpStoreRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpFindNodeCacheRequest

ZPS\_teStatus ZPS\_eAplZdpFindNodeCacheRequest\(
  PDUM\_thAPduInstance hAPduInst,
  uint8 *pu8SeqNumber,
  ZPS\_tsAplZdpFindNodeCacheReq
            *psZdpFindNodeCacheReq);
Description

This function can be used to search for nodes in the network that hold ‘discovery information’ about a particular node. The function broadcasts a Find_node_cache_reqrequest to the network.

This request includes the network and IEEE addresses of the node of interest. The request is represented by the structure below (further detailed in Section 8.2.2.21).

typedef struct {
    uint16 u16NwkAddr;
    uint64 u64IeeeAddr;
} ZPS_tsAplZdpFindNodeCacheReq;

On receiving the request, a remote node first checks whether it has a primary discovery cache, or is the specified node itself. If either is the case, it checks whether it holds the required information and, if this is the case, replies with a Find_node_cache_rspresponse. This response should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpFindNodeCacheRsp(detailed in Section 8.2.3.20).

Only nodes that hold the required information respond to the request.

Parent topic:ZPS_eAplZdpFindNodeCacheRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent.

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpFindNodeCacheReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpFindNodeCacheRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpFindNodeCacheRequest

Parent topic:Service Discovery functions

ZPS_eAplZdpRemoveNodeCacheRequest

ZPS\_teStatus ZPS\_eAplZdpRemoveNodeCacheRequest\(
    PDUM\_thAPduInstance hAPduInst,
    ZPS\_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS\_tsAplZdpRemoveNodeCacheReq
                    *psZdpRemoveNodeCacheReq);
Description

This function requests a Primary Discovery Cache node to remove from its cache all ‘discovery information’ relating to a particular End Device. The function sends a Remove_node_cache_req request to the Primary Discovery Cache node.

The effect of a successful request is to remove the relevant ‘discovery information’ and free the corresponding storage space in the cache previously reserved by ZPS_eAplZdpDiscoveryStoreRequest()\ (which may have been called from another node in the network).

This request includes the network and IEEE addresses of the End Device whose ‘discovery information’ is to be removed. The request is represented by the structure below (further detailed in Section 9.2.2.22).

typedef struct {
    uint16 u16NwkAddr;
    uint64 u64IeeeAddr;
} ZPS_tsAplZdpRemoveNodeCacheReq;

On receiving the request, the remote node first checks whether it has a primary discovery cache. If this is the case, it checks whether it has previously received and implemented a Discovery_store_reqrequest for the specified End Device, resulting from a call to ZPS_eAplZdpDiscoveryStoreRequest(). If it has, it deletes the relevant data and unreserve the corresponding part of the cache.

The node replies with a Remove_node_cache_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpRemoveNodeCacheRsp(detailed in Section 9.2.3.21).

Parent topic:ZPS_eAplZdpRemoveNodeCacheRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent.

  • uDstAddr: Address of destination node of request(can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr: Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpRemoveNodeCacheReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpRemoveNodeCacheRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpRemoveNodeCacheRequest

Parent topic:Service Discovery functions

Parent topic:ZDP API functions

Binding functions

The ZDP Binding functions are concerned with binding nodes together, to aid communication between them, and managing binding tables.

  1. ZPS_eAplZdpEndDeviceBindRequest

  2. ZPS_eAplZdpBindUnbindRequest

  3. ZPS_eAplZdpBindRegisterRequest

  4. ZPS_eAplZdpReplaceDeviceRequest

  5. ZPS_eAplZdpStoreBkupBindEntryRequest

  6. ZPS_eAplZdpRemoveBkupBindEntryRequest

  7. ZPS_eAplZdpBackupBindTableRequest

  8. ZPS_eAplZdpRecoverBindTableRequest

  9. ZPS_eAplZdpBackupSourceBindRequest

  10. ZPS_eAplZdpRecoverSourceBindRequest

  11. ZPS_eAplAibRemoveBindTableEntryForMacAddress

Note:

  1. Some of the above binding functions cannot be used to send requests to nodes that run the NXP ZigBee PRO stack. They are supplied in the NXP ZDP API in order to facilitate interoperability with nodes based on non-NXP software, which supports the corresponding requests. If applicable, this restriction is noted in the function description.

  2. Further binding functions are provided in the ZDO API and are described in Section 7.1.1, “Network Deployment Functions”.

ZPS_eAplZdpEndDeviceBindRequest

ZPS\_teStatus ZPS\_eAplZdpEndDeviceBindRequest\(
        PDUM\_thAPduInstance hAPduInst,
        uint8 *pu8SeqNumber,
        ZPS\_tsAplZdpEndDeviceBindReq
                    *psZdpEndDeviceBindReq);

Description

This function sends a binding request to the Coordinator in order to bind an endpoint on the local node to an endpoint on a remote node (these nodes can be End Devices or Routers). The function should normally be invoked as the result of a user action on the local node, such as pressing a button. The function sends an End_Device_Bind_req request to the Coordinator.

This request includes details of the source node, endpoint and clusters. The request is represented by the structure below (further detailed in Section 9.2.2.23).

typedef struct {
  uint16 u16BindingTarget;
  uint64 u64SrcIeeeAddress;
  uint8 u8SrcEndpoint;
  uint16 u16ProfileId;
  /* Rest of message is variable length */
  uint8 u8NumInClusters;
  uint16 *pu16InClusterList;
  uint8 u8NumOutClusters;
  uint16 *pu16OutClusterList;
} ZPS_tsAplZdpEndDeviceBindReq;

On receiving the request, the Coordinator waits (for a pre-defined timeout period) for another binding request, from a different node, so that it can pair the requests and bind the endpoints. In order to bind the endpoints, their application profile IDs must match, and they must have compatible clusters in their input and output cluster lists.

The Coordinator replies to a binding request with an End_Device_Bind_rsp response, which should be collected on the requesting node using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpEndDeviceBindRsp(detailed in Section 9.2.3.22).

The stack will automatically update the Binding tables on the two End Devices (following further bind requests from the Coordinator) and an ZPS_EVENT_ZDO_BIND event will be generated on the End Devices to signal these updates.

Description

This function sends a binding request to the Coordinator in order to bind an endpoint on the local node to an endpoint on a remote node (these nodes can be End Devices or Routers). The function should normally be invoked as the result of a user action on the local node, such as pressing a button. The function sends an End_Device_Bind_req request to the Coordinator.

This request includes details of the source node, endpoint and clusters. The request is represented by the structure below (further detailed in Section 9.2.2.23).

typedef struct {
  uint16 u16BindingTarget;
  uint64 u64SrcIeeeAddress;
  uint8 u8SrcEndpoint;
  uint16 u16ProfileId;
  /* Rest of message is variable length */
  uint8 u8NumInClusters;
  uint16 *pu16InClusterList;
  uint8 u8NumOutClusters;
  uint16 *pu16OutClusterList;
} ZPS_tsAplZdpEndDeviceBindReq;

On receiving the request, the Coordinator waits (for a pre-defined timeout period) for another binding request, from a different node, so that it can pair the requests and bind the endpoints. In order to bind the endpoints, their application profile IDs must match, and they must have compatible clusters in their input and output cluster lists.

The Coordinator replies to a binding request with an End_Device_Bind_rsp response, which should be collected on the requesting node using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpEndDeviceBindRsp(detailed in Section 9.2.3.22).

The stack automatically updates the Binding tables on the two End Devices (following further bind requests from the Coordinator) and an ZPS_EVENT_ZDO_BIND event is generated on the End Devices to signal these updates.

Parent topic:ZPS_eAplZdpEndDeviceBindRequest

Parameters
  • hAPduInst: Handle of APDU instance in which request is sent.

  • *pu8SeqNumber: Pointer to sequence number of request

  • *psZdpEndDeviceBindReq: Pointer to request (see above)

Parent topic:ZPS_eAplZdpEndDeviceBindRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpEndDeviceBindRequest

Parent topic:Binding functions

ZPS_eAplZdpBindUnbindRequest

ZPS\_teStatus ZPS\_eAplZdpBindUnbindRequest\(
            PDUM\_thAPduInstance hAPduInst,
            ZPS\_tuAddress uDstAddr,
            bool bExtAddr,
            uint8 *pu8SeqNumber,
            bool bBindReq,
            ZPS\_tsAplZdpBindUnbindReq *psZdpBindReq);
Description

This function sends a binding or unbinding request (as specified) to a remote node which hosts a binding table. The function requests a modification of the binding table in order to bind or unbind two endpoints of nodes in the network. The nodes to be bound/unbound may be different from the node sending the request and the node receiving the request. The latter must be either a node with a primary binding table cache or the source node for the binding. This function could typically be used in a commissioning application to configure bindings between nodes during system set- up.

The function sends a Bind_req or Unbind_req request to the remote node which hosts the binding table to be modified. This request includes details of the source node and endpoint, and the target node and endpoint for the binding. The request is represented by the structure below (further detailed in Section 9.2.2.24).

typedef struct {
        uint64 u64SrcAddress;
        uint8 u8SrcEndpoint;
        uint16 u16ClusterId;
        uint8 u8DstAddrMode;
        union {
            struct {
                uint16 u16DstAddress;
            } sShort;
            struct {
                uint64 u64DstAddress;
                uint8 u8DstEndPoint;
            } sExtended;
    } uAddressField;
} ZPS_tsAplZdpBindUnbindReq;

On receiving the request, the remote node adds or removes the relevant entry in its binding table and locally generates the event ZPS_EVENT_ZDO_BIND or ZPS_EVENT_ZDO_UNBIND, as appropriate, to signal the relevant update.

If the remote node holds a primary binding table cache, it checks whether the source node for the binding holds a table of its own source bindings (see the description of ZPS_eAplZdpBindRegisterRequest()). If it is so, it automatically requests an update of this table. A node with a primary binding table cache also requests an update of the back-up cache, if one exists.

The remote node replies with a Bind_rsp or Unbind_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpBindRsp(detailed in Section 9.2.3.23) or ZPS_tsAplZdpUnbindRsp(detailed in Section 9.2.3.24).

Parent topic:ZPS_eAplZdpBindUnbindRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • bBindReq Bind or unbind request:

    • TRUE: bind

    • FALSE: unbind

  • * psZdpBindReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpBindUnbindRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpBindUnbindRequest

Parent topic:Binding functions

ZPS_eAplZdpBindRegisterRequest

ZPS_teStatus ZPS_eAplZdpBindRegisterRequest(
     PDUM_thAPduInstance hAPduInst,
     ZPS_tuAddress uDstAddr,
     bool bExtAddr,
     uint8 *pu8SeqNumber,
     ZPS_tsAplZdpBindRegisterReq *psZdpBindRegisterReq);
Description

This function informs a remote node with a primary binding table cache that the local node will hold its own binding table entries (and therefore the remote node does not need to hold these entries). The function sends a Bind_Register_req request to the remote node.

The IEEE address of the local node must be specified in the request, which is represented by the structure below (further detailed in Section 8.2.2.25).

typedef struct {

uint64 u64NodeAddress;

} ZPS_tsAplZdpBindRegisterReq;

The remote node replies with a Bind_Register_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpBindRegisterRsp(detailed in Section 9.2.3.25). This response contains any information stored about the binding on the remote.

Parent topic:ZPS_eAplZdpBindRegisterRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpPowerDescReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpBindRegisterRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpBindRegisterRequest

Parent topic:Binding functions

ZPS_eAplZdpReplaceDeviceRequest

ZPS_teStatus ZPS_eAplZdpReplaceDeviceRequest(
            PDUM_thAPduInstance hAPduInst,
            ZPS_tuAddress uDstAddr,
            bool bExtAddr,
            uint8 *pu8SeqNumber,
    ZPS_tsAplZdpReplaceDeviceReq *psZdpReplaceDeviceReq);
Description

This function requests a remote node with a primary binding table cache to modify binding table entries with new data - more specifically, binding table entries can be modified by replacing an IEEE address and/or associated endpoint number. This function could typically be used in a commissioning application to modify bindings between nodes. The function sends a Replace_Device_req request to the remote node.

This request must include the old IEEE address and its replacement, as well as the corresponding endpoint number and its replacement (if any). The request is represented by the structure below (further detailed in Section 9.2.2.26).

typedef struct {

uint64 u64OldAddress;

uint8 u8OldEndPoint;

uint64 u64NewAddress;

uint8 u8NewEndPoint;

} ZPS_tsAplZdpReplaceDeviceReq;

On receiving this request, the remote node will search its binding table for entries containing the old IEEE address and old endpoint number from the request - this pair of values may make up the source or destination data of the binding table entry.

These values will be replaced by the new IEEE address and endpoint number from the request. Note that if the endpoint number in the request is zero, only the address will be included in the ‘search and replace’ (the endpoint number in the modified binding table entries will be left unchanged).

The remote node will check whether a node affected by a binding table change holds a table of its own source bindings (see ZPS_eAplZdpBindRegisterRequest()) and, if so, automatically requests an update of this table. The remote node will also request an update of the back-up of the primary binding table cache, if one exists.

The remote node will reply with a Replace_Device_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpReplaceDeviceRsp(detailed in Section 9.2.3.26).

Parent topic:ZPS_eAplZdpReplaceDeviceRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpReplaceDeviceReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpReplaceDeviceRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpReplaceDeviceRequest

Parent topic:Binding functions

ZPS_eAplZdpStoreBkupBindEntryRequest

ZPS_teStatus ZPS_eAplZdpStoreBkupBindEntryRequest(
            PDUM_thAPdu hAPdu,
            ZPS_tuAddress uDstAddr,
            bool bExtAddr,
            uint8 *pu8SeqNumber,
            uint16 u16ProfileId,
            ZPS_tsAplZdpStoreBkupBindEntryReq
                      *psZdpStoreBkupBindEntryReq);
Description

This function requests that a back-up of an entry in the local primary binding table cache is performed on a remote node. The destination node of the request must hold the corresponding back-up binding table cache. The back-up operation is normally required when a new entry has been added to the primary binding table cache.

Note: This function is provided in the NXP ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

This request must include the binding table entry to be backed up. The request is represented by the structure below (further detailed in Section 9.2.2.27).

typedef struct {
        uint64 u64SrcAddress;
        uint8 u8SrcEndPoint;
        uint16 u16ClusterId;
        uint8 u8DstAddrMode;
        union {
           struct {
                uint16 u16DstAddress;
                  } sShort;
        struct {
        uint64 u64DstAddress;
        uint8 u8DstEndPoint;
        } sExtended;
      };
} ZPS_tsAplZdpStoreBkupBindEntryReq;

On receiving the request, the remote node adds the specified binding table entry to its back-up binding table cache, if possible.

The remote node replies with a Store_Bkup_Bind_Entry_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpStoreBkupBindEntryRsp(detailed in Section 9.2.3.27).

Parent topic:ZPS_eAplZdpStoreBkupBindEntryRequest

Parameters
  • hAPdu Handle of APDU in which request is sent.

  • uDstAddr Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • u16ProfileId Application profile ID

  • * psZdpStoreBkupBindEntryReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpStoreBkupBindEntryRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpStoreBkupBindEntryRequest

Parent topic:Binding functions

ZPS_eAplZdpRemoveBkupBindEntryRequest

ZPS_teStatus ZPS_eAplZdpRemoveBkupBindEntryRequest(
    PDUM_thAPduInstance hAPduInst,
    ZPS_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS_tsAplZdpRemoveBkupBindEntryReq
            *psZdpRemoveBkupBindEntryReq);
Description

This function requests the removal of an entry in the back-up binding table cache on a remote node. The function must be called from the node with the corresponding primary binding table cache. The removal of a back-up entry is normally required when an entry in the primary binding table cache has been removed.

Note: This function is provided in the NXP ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

This request must include the binding table entry to be removed. The request is represented by the structure below (further detailed in Section 9.2.2.28).

typedef struct {

uint64 u64SrcAddress; uint8 u8SrcEndPoint; uint16 u16ClusterId; uint8 u8DstAddrMode; union {

struct {

uint16 u16DstAddress;

} sShort; struct {

uint64 u64DstAddress; uint8 u8DstEndPoint;

} sExtended;

};

} ZPS_tsAplZdpRemoveBkupBindEntryReq;

On receiving the request, the remote node removes the specified binding table entry from its back-up binding table cache, if possible.

The remote node replies with a Remove_Bkup_Bind_Entry_rsp response, which should be collected using the function **ZQ_bZQueueReceive()**and stored in a structure of type ZPS_tsAplZdpRemoveBkupBindEntryRsp(detailed in Section9.2.3.28).

Parent topic:ZPS_eAplZdpRemoveBkupBindEntryRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpRemoveBkupBindEntryReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpRemoveBkupBindEntryRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpRemoveBkupBindEntryRequest

Parent topic:Binding functions

ZPS_eAplZdpBackupBindTableRequest

ZPS_teStatus ZPS_eAplZdpBackupBindTableRequest(
  PDUM_thAPduInstance hAPduInst,
  ZPS_tuAddress uDstAddr,
  bool bExtAddr,
  uint8 *pu8SeqNumber,
  ZPS_tsAplZdpBackupBindTableReq
                     *psZdpBackupBindTableReq);
Description

This function requests that a back-up of the locally held primary binding table cache is performed on a remote node - the whole or part of the table can be backed up. The destination node of the request must hold the corresponding back-up binding table cache. The latter must already exist and be associated with the cache on the local node through a previous discovery.

Note: This function is provided in the NXP ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

This request must include the binding table entries to be backed up. The request is represented by the structure below (further detailed in Section 9.2.2.29).

typedef struct {

uint16 u16BindingTableEntries; uint16 u16StartIndex;

uint16 u16BindingTableListCount;

/* Rest of message is variable length */ ZPS_tsAplZdpBindingTable sBindingTable;

} ZPS_tsAplZdpBackupBindTableReq;

On receiving the request, the remote node saves the new binding table, if possible, overwriting existing entries. If the new table is longer than the previous one, as many extra entries as possible will be saved.

The remote node replies with a Backup_Bind_Table_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpBackupBindTableRsp(detailed in Section 9.2.3.29).

Parent topic:ZPS_eAplZdpBackupBindTableRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpBackupBindTableReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpBackupBindTableRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpBackupBindTableRequest

Parent topic:Binding functions

ZPS_eAplZdpRecoverBindTableRequest

ZPS_teStatus ZPS_eAplZdpRecoverBindTableRequest(
    PDUM_thAPduInstance hAPduInst,
    ZPS_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS_tsAplZdpRecoverBindTableReq
                    *psZdpRecoverBindTableReq);
Description

This function requests that a back-up of the locally held primary binding table cache is recovered from a remote node. The destination node of the request must hold the back-up binding table cache which is associated with the primary cache on the local node.

Note: This function is provided in the NXP ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

This request must indicate the starting index in the binding table for the recovery. The request is represented by the structure below (further detailed in Section 9.2.2.30).

typedef struct {

uint16 u16StartIndex;

} ZPS_tsAplZdpRecoverBindTableReq;

The remote node replies with a Recover_Bind_Table_rsp response containing the required binding table entries, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpRecoverBindTableRsp(detailed in Section 9.2.3.30). As many binding entries as possible are included in this response. If the returned binding table is incomplete, this is indicated in the response and this function must be called again, with the appropriate starting index, to recover the rest of the table.

Parent topic:ZPS_eAplZdpRecoverBindTableRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpRecoverBindTableReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpRecoverBindTableRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpRecoverBindTableRequest

Parent topic:Binding functions

ZPS_eAplZdpBackupSourceBindRequest

ZPS_teStatus ZPS_eAplZdpBackupSourceBindRequest(
 PDUM_thAPduInstance hAPduInst,
 ZPS_tuAddress uDstAddr,
 bool bExtAddr,
 uint8 *pu8SeqNumber,
 ZPS_tsAplZdpBackupSourceBindReq
                 *psZdpBackupSourceBindReq);
Description

This function requests that a back-up of the locally held source binding table is performed on a remote node. This source binding table contains entries only relevant to the local node. The function must be called from a node with a primary binding table cache and the destination node of the request must hold the corresponding back-up binding table cache.

Note: This function is provided in the NXP ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

This request must include the source binding table entries to be backed up. The request is represented by the structure below (further detailed in Section 9.2.2.31).

typedef struct {

uint16 u16SourceTableEntries; uint16 u16StartIndex;

uint16 u16SourceTableListCount;

/* Rest of message is variable length */ uint64* pu64SourceAddress;

} ZPS_tsAplZdpBackupSourceBindReq;

On receiving the request, the remote node saves the new source binding table, if possible, overwriting existing entries. If the new table is longer than the previous one, as many extra entries as possible will be saved.

The remote node replies with a Backup_Source_Bind_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpBackupSourceBindRsp(detailed in Section 9.2.3.31).

Parent topic:ZPS_eAplZdpBackupSourceBindRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpBackupSourceBindReqPointer to request (see above)

Parent topic:ZPS_eAplZdpBackupSourceBindRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpBackupSourceBindRequest

Parent topic:Binding functions

ZPS_eAplZdpRecoverSourceBindRequest

ZPS_teStatus ZPS_eAplZdpBackupSourceBindRequest(
    PDUM_thAPduInstance hAPduInst,
    ZPS_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS_tsAplZdpBackupSourceBindReq
                    *psZdpBackupSourceBindReq);
Description

This function requests that a back-up of the locally held source binding table is recovered from a remote node. The function must be called from a node with a primary binding table cache and the destination node of the request must hold the corresponding back-up binding table cache.

Note: This function is provided in the NXP ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

This request must indicate the starting index in the binding table for the recovery. The request is represented by the structure below (further detailed in Section 9.2.2.32).

typedef struct {

uint16 u16StartIndex;

} ZPS_tsAplZdpRecoverSourceBindReq;

The remote node replies with a Recover_Source_Bind_rsp response containing the required binding table entries, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpRecoverSourceBindRsp(detailed in Section 9.2.3.32). As many binding entries as possible are included in this response. If the returned binding table is incomplete, this is indicated in the response and this function must be called again, with the appropriate starting index, to recover the rest of the table.

Parent topic:ZPS_eAplZdpRecoverSourceBindRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpRecoverSourceBindReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpRecoverSourceBindRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpRecoverSourceBindRequest

Parent topic:Binding functions

ZPS_eAplAibRemoveBindTableEntryForMacAddress

ZPS_teStatus
    ZPS_eAplAibRemoveBindTableEntryForMacAddress(
                            uint64 u64MacAddress);
Description

This function requests the removal of the entry corresponding to the specified IEEE/ MAC address from the local binding table.

Parent topic:ZPS_eAplAibRemoveBindTableEntryForMacAddress

Parameters

u64MacAddress IEEE/MAC address contained in the binding table entry to be removed

Parent topic:ZPS_eAplAibRemoveBindTableEntryForMacAddress

Returns

ZPS_E_SUCCESS

Parent topic:ZPS_eAplAibRemoveBindTableEntryForMacAddress

Parent topic:Binding functions

Parent topic:ZDP API functions

Network Management Services functions

The ZDP Network Management Services functions are concerned with requests for network operations to be implemented remotely.

The functions are listed below.

  1. ZPS_eAplZdpMgmtNwkDiscRequest

  2. ZPS_eAplZdpMgmtLqiRequest

  3. ZPS_eAplZdpMgmtRtgRequest

  4. ZPS_eAplZdpMgmtBindRequest

  5. ZPS_eAplZdpMgmtLeaveRequest

  6. ZPS_eAplZdpMgmtDirectJoinRequest

  7. ZPS_eAplZdpMgmtPermitJoiningRequest

  8. ZPS_eAplZdpMgmtCacheRequest

  9. ZPS_eAplZdpMgmtNwkUpdateRequest

  10. ZPS_eAplZdpParentAnnceReq

Note: Some of these functions cannot be used to send requests to nodes that run the NXP ZigBee PRO stack. They are supplied in the ZDP API in order to facilitate interoperability with nodes based on non-NXP software which supports the corresponding requests.

ZPS_eAplZdpMgmtNwkDiscRequest

ZPS_teStatus ZPS_eAplZdpMgmtNwkDiscRequest(
            PDUM_thAPduInstance hAPduInst,
            ZPS_tuAddress uDstAddr,
            bool bExtAddr,
            uint8 *pu8SeqNumber,
            ZPS_tsAplZdpMgmtNwkDiscReq
                        *psZdpMgmtNwkDiscReq);
Description

This function requests a remote node to perform a channel scan in order to discover any other wireless networks that are operating in the neighborhood.

Note: This function is provided in the ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

This request must specify the requirements for the scan: channels to scan, duration of scan, starting channel. The request is represented by the structure below (further detailed in Section 8.2.2.33).

typedef struct {

uint32 u32ScanChannels;

uint8 u8ScanDuration;

uint8 u8StartIndex;

} ZPS_tsAplZdpMgmtNwkDiscReq;

The remote node replies with a Mgmt_NWK_Disc_rsp response containing the scan results, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtNwkDiscRsp(detailed in Section 8.2.3.33).

Parent topic:ZPS_eAplZdpMgmtNwkDiscRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtNwkDiscReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtNwkDiscRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtNwkDiscRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpMgmtLqiRequest

ZPS_teStatus ZPS_eAplZdpMgmtLqiRequest(
            PDUM_thAPduInstance hAPduInst,
            ZPS_tuAddress uDstAddr,
            bool bExtAddr,
            uint8 *pu8SeqNumber,
            ZPS_tsAplZdpMgmtLqiReq *psZdpMgmtLqiReq);
Description

This function requests a remote node to provide a list of neighboring nodes, from its Neighbor table, including LQI (link quality) values for radio transmissions from each of these nodes. The destination node of this request must be a Router or the Co- ordinator.

This request must specify the index of the first node in the Neighbor table to report. The request is represented by the structure below (further detailed in Section 8.2.2.34).

typedef struct {

uint8 u8StartIndex;

} ZPS_tsAplZdpMgmtLqiReq;

The remote node replies with a Mgmt_Lqi_rsp response containing the required information, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtLqiRsp(detailed in Section 8.2.3.34).

Parent topic:ZPS_eAplZdpMgmtLqiRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtLqiReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtLqiRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtLqiRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpMgmtRtgRequest

ZPS_teStatus ZPS_eAplZdpMgmtRtgRequest(
        PDUM_thAPduInstance hAPduInst,
        ZPS_tuAddress uDstAddr,
        bool bExtAddr,
        uint8 *pu8SeqNumber,
        ZPS_tsAplZdpMgmtRtgReq *psZdpMgmtRtgReq);
Description

This function requests a remote node to provide the contents of its Routing table. The destination node of this request must be a Router or the Coordinator.

This request must specify the index of the first entry in the Routing table to report. The request is represented by the structure below (further detailed in Section 8.2.2.35).

typedef struct {

uint8 u8StartIndex;

} ZPS_tsAplZdpMgmtRtgReq;

The remote node replies with a Mgmt_Rtg_rsp response containing the required information, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtRtgRsp(detailed in Section 8.2.3.35).

Parent topic:ZPS_eAplZdpMgmtRtgRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtRtgReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtRtgRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtRtgRequest

Parent topic:ZPS_eAplZdpMgmtBindRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpMgmtBindRequest

ZPS_teStatus ZPS_eAplZdpMgmtBindRequest(
        PDUM_thAPduInstance hAPduInst,
        ZPS_tuAddress uDstAddr,
        bool bExtAddr,
        uint8 *pu8SeqNumber,
        ZPS_tsAplZdpMgmtBindReq *psZdpMgmtBindReq);
Description

This function requests a remote node to provide the contents of its Binding table. The destination node of this request must be a Router or the Coordinator.

This request must specify the index of the first entry in the Binding table to report. The request is represented by the structure below (further detailed in Section8.2.2.36).

typedef struct {

uint8 u8StartIndex;

} ZPS_tsAplZdpMgmtBindReq;

The remote node replies with a Mgmt_Bind_rsp response containing the required information, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtBindRsp(detailed in Section8.2.3.36).

Parent topic:ZPS_eAplZdpMgmtBindRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtBindReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtBindRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtRtgRequest

Parent topic:ZPS_eAplZdpMgmtBindRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpMgmtLeaveRequest

ZPS_teStatus ZPS_eAplZdpMgmtLeaveRequest(
            PDUM_thAPduInstance hAPduInst,
            ZPS_tuAddress uDstAddr,
            bool bExtAddr,
            uint8 *pu8SeqNumber,
            ZPS_tsAplZdpMgmtLeaveReq *psZdpMgmtLeaveReq);
Description

This function requests a remote node to leave the network. The request also indicates whether the children of the leaving node should also be requested to leave and whether the leaving node(s) should subsequently attempt to rejoin the network.

Note: This function is provided in the ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

The IEEE address of the node to leave the network must be included in the request, as well as flags indicating the children and rejoin choices (see above). The request is represented by the structure below (further detailed in Section 8.2.2.37).

typedef struct {

uint64 u64DeviceAddress;

uint8 u8Flags;

} ZPS_tsAplZdpMgmtLeaveReq;

The remote node replies with a Mgmt_Leave_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtLeaveRsp(detailed in Section 8.2.3.37).

Parent topic:ZPS_eAplZdpMgmtLeaveRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtLeaveReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtLeaveRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtLeaveRequest

Parent topic:ZPS_eAplZdpMgmtDirectJoinRequest

Parent topic:ZPS_eAplZdpMgmtPermitJoiningRequest

Parent topic:ZPS_eAplZdpMgmtCacheRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpMgmtDirectJoinRequest

ZPS_teStatus ZPS_eAplZdpMgmtDirectJoinRequest(
            PDUM_thAPduInstance hAPduInst,
            ZPS_tuAddress uDstAddr,
            bool bExtAddr,
            uint8 *pu8SeqNumber,
            ZPS_tsAplZdpMgmtDirectJoinReq
            *psZdpMgmtDirectJoinReq);
Description

This function requests a remote node to allow a particular device (identified through its IEEE address) to join the network as a child of the node. Thus, joining should be enabled on the remote node just for the nominated device. The destination node of this request must be a Router or the Coordinator.

Note: This function is provided in the ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

The IEEE address of the nominated device as well as its capabilities must be included in the request. The request is represented by the structure below (further detailed in Section 8.2.2.38).

typedef struct {

uint64 u64DeviceAddress; uint8 u8Capability;

} ZPS_tsAplZdpMgmtDirectJoinReq;

The remote node replies with a Mgmt_Direct_Join_req response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtDirectJoinRsp(detailed in Section 8.2.3.38).

Parent topic:ZPS_eAplZdpMgmtDirectJoinRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtDirectJoinReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtDirectJoinRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtLeaveRequest

Parent topic:ZPS_eAplZdpMgmtDirectJoinRequest

Parent topic:ZPS_eAplZdpMgmtPermitJoiningRequest

Parent topic:ZPS_eAplZdpMgmtCacheRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpMgmtPermitJoiningRequest

ZPS_teStatus ZPS_eAplZdpMgmtPermitJoiningRequest(
            PDUM_thAPduInstance hAPduInst,
            ZPS_tuAddress uDstAddr,
            bool bExtAddr,
            uint8 *pu8SeqNumber,
            ZPS_tsAplZdpMgmtPermitJoiningReq
            *psZdpMgmtPermitJoiningReq);
Description

This function requests a remote node to enable or disable joining for a specified amount of time. The destination node of this request must be a Router or the Co- ordinator. The request can be unicast to a particular node or broadcast to all routing nodes (for which the destination address must be set to the 16-bit network address 0xFFFC).

Note: This function is provided in the ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

The duration of the enable or disable joining state must be specified in the request. The request is represented by the structure below (further detailed in Section8.2.2.39).

typedef struct {

uint8 u8PermitDuration; bool_t bTcSignificance;

} ZPS_tsAplZdpMgmtPermitJoiningReq;

If the request was unicast, the remote node replies with a Mgmt_Permit_Joining_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtPermitJoiningRsp(detailed in Section 8.2.3.39).

Parent topic:ZPS_eAplZdpMgmtPermitJoiningRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtPermitJoiningReqPointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtPermitJoiningRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtLeaveRequest

Parent topic:ZPS_eAplZdpMgmtDirectJoinRequest

Parent topic:ZPS_eAplZdpMgmtPermitJoiningRequest

Parent topic:ZPS_eAplZdpMgmtCacheRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpMgmtCacheRequest

ZPS_teStatus ZPS_eAplZdpMgmtCacheRequest(
    PDUM_thAPduInstance hAPduInst,
    ZPS_tuAddress uDstAddr,
    bool bExtAddr,
    uint8 *pu8SeqNumber,
    ZPS_tsAplZdpMgmtCacheReq *psZdpMgmtCacheReq);
Description

This function requests a remote node to provide a list of the End Devices registered in its primary discovery cache. Therefore, the destination node must contain a primary discovery cache.

Note: This function is provided in the ZDP API for the reason of interoperability with nodes running non-NXP ZigBee PRO stacks that support the generated request. On receiving a request from this function, the NXP ZigBee PRO stack will return the status ZPS_ZDP_NOT_SUPPORTED.

The request is represented by the structure below (further detailed in Section9.2.2.40).

typedef struct {

uint8 u8StartIndex;

} ZPS_tsAplZdpMgmtCacheReq;

The remote node replies with a Mgmt_Cache_rsp response, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtCacheRsp(detailed in Section 9.2.3.40).

Parent topic:ZPS_eAplZdpMgmtCacheRequest

Parameters
  • hAPduInst Handle of APDU in which request is sent.

  • uDstAddr Address of destination node of request

  • (can be 16- or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtCacheReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtCacheRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtLeaveRequest

Parent topic:ZPS_eAplZdpMgmtDirectJoinRequest

Parent topic:ZPS_eAplZdpMgmtPermitJoiningRequest

Parent topic:ZPS_eAplZdpMgmtCacheRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpMgmtNwkUpdateRequest

ZPS_teStatus ZPS_eAplZdpMgmtNwkUpdateRequest(
        PDUM_thAPduInstance hAPduInst,
        ZPS_tuAddress uDstAddr,
        bool bExtAddr,
        uint8 *pu8SeqNumber,
        ZPS_tsAplZdpMgmtNwkUpdateReq
                        *psZdpMgmtNwkUpdateReq);
Description

This function requests an update of network parameters related to radio communication. The request can specify any of the following:

  • update the radio channel mask (for scans) and the 16-bit network address of the network manager (node nominated to manage radio-band operation of network)

  • change the radio channel used

  • scan radio channels and report the results

The request can be broadcast or unicast to nodes with radio receivers that are configured to remain on during idle periods.

The request is represented by the structure below (further detailed in Section9.2.2.41).

typedef struct {

uint32 u32ScanChannels;

uint8 u8ScanDuration;

uint8 u8ScanCount;

uint8 u8NwkUpdateId;

uint16 u16NwkManagerAddr;

} ZPS_tsAplZdpMgmtNwkUpdateReq;

The specific action to be taken as a result of this request is indicated through the element u8ScanDuration, as described in the table below.

**u8ScanDuration**

Action

0x00-0x05

Perform radio channel scan on the set of channels specified through u32ScanChannels. The time, in seconds, spent scanning each channel is determined by the value of u8ScanDurationand the number of scans is equal to the value of u8ScanCount. Valid for unicasts only.

0x06-0xFD

Reserved

0xFE

Change radio channel to single channel specified through u32ScanChannelsand set the network man- ager address to that specified through u16NwkManag- erAddr. Valid for broadcasts only.

0xFF

Update the stored radio channel mask with that specified through u32ScanChannels(but do not scan).
Valid for broadcasts only.

The remote node replies with a Mgmt_NWK_Update_notify notification, which should be collected using the function ZQ_bZQueueReceive() and stored in a structure of type ZPS_tsAplZdpMgmtNwkUpdateNotify(detailed in Section 9.2.3.41).

Parent topic:ZPS_eAplZdpMgmtNwkUpdateRequest

Parameters
  • hAPduInst Handle of APDU instance in which request is sent.

  • uDstAddr Address of destination node of request (can be 16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address:

    • TRUE: 64-bit IEEE (MAC) address

    • FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of request

  • * psZdpMgmtNwkUpdateReq Pointer to request (see above)

Parent topic:ZPS_eAplZdpMgmtNwkUpdateRequest

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpMgmtNwkUpdateRequest

Parent topic:Network Management Services functions

ZPS_eAplZdpParentAnnceReq

ZPS_teStatus ZPS_eAplZdpParentAnnceReq(
        PDUM_thAPduInstance hAPduInst,
        ZPS_tuAddress uDstAddr,
        bool bExtAddr,
        uint8 *pu8SeqNumber,
        ZPS_tsAplZdpParentAnnceReq *psZdpParentAnnceReq);
Description

This function is used on a Router or the Coordinator to send a Parent Announcement message to one or more other nodes. In this announcement, the originating node declares which nodes it has as children. These child nodes are specified using their IEEE/MAC addresses.

The message contains the above data in following structure (further detailed in Section 8.2.2.42):

typedef struct {

uint8 u8NumberOfChildren;

uint64* pu64ChildList;

} ZPS_tsAplZdpParentAnnceReq;

If a node which receives this message also has one of the specified nodes as its child (so there is a conflict), the receiving node broadcasts a response to indicate this. The response data is contained in the structure below (further detailed in Section 8.2.3.42):

typedef struct {

uint64* pu64ChildList; uint8 u8NumberOfChildren; uint8 u8Status;

} ZPS_tsAplZdpParentAnnceRsp;

Parent topic:ZPS_eAplZdpParentAnnceReq

Parameters
  • hAPduInst Handle of APDU instance in which message is sent.

  • uDstAddr Address of destination node of message (16-bit or 64-bit, as specified by bExtAddr)

  • bExtAddr Type of destination address: TRUE: 64-bit IEEE (MAC) address FALSE: 16-bit network address

  • * pu8SeqNumber Pointer to sequence number of message

  • * psZdpParentAnnceReq Pointer to message (see above)

Parent topic:ZPS_eAplZdpParentAnnceReq

Returns
  • ZPS_E_SUCCESS (request successfully sent)

  • APS return codes, listed and described in Section 11.2.2

  • NWK return codes, listed and described in Section 11.2.3

  • MAC return codes, listed and described in Section 11.2.4

Parent topic:ZPS_eAplZdpParentAnnceReq

Parent topic:Network Management Services functions

Parent topic:ZDP API functions

Response Data Extraction Function

The ZDP Response Data Extraction function is concerned with obtaining the data from a received response packet which is destined for the ZDO. The function should be called when a ZPS_EVENT_APS_DATA_INDICATION event is generated for destination endpoint 0.

Note: This function and the related structure ZPS_tsAfZdpEvent are defined in the header file

appZdpExtraction.h.

The function is listed below:

ZPS_bAplZdpUnpackResponse ZPS_bAplZdpUnpackResponse

Function Page

Parent topic:Response Data Extraction Function

ZPS_bAplZdpUnpackResponse

bool ZPS_bAplZdpUnpackResponse(
            ZPS_tsAfEvent *psZdoServerEvent,
            ZPS_tsAfZdpEvent *psReturnStruct);
Description

This function can be used to extract data received in a response packet which is destined for the ZDO (at endpoint 0). When such a packet is received, the event ZPS_EVENT_APS_DATA_INDICATION is generated. The application must then check whether the destination endpoint number is 0 in the event and, if this is the case, call this function to extract the response data from the event.

A pointer to a ZPS_tsAfZdpEventstructure must be provided, which the function will populate with the extracted data.

Parent topic:ZPS_bAplZdpUnpackResponse

Parameters
  • * psZdoServerEvent Pointer to structure containing the event (see Section 7.2.2.1)

  • * psReturnStruct Pointer to structure to receive extracted data (see Section 7.2.2.25)

Parent topic:ZPS_bAplZdpUnpackResponse

Returns
  • TRUE if data successfully extracted

  • FALSE if data not successfully extracted

Parent topic:ZPS_bAplZdpUnpackResponse

Parent topic:Response Data Extraction Function

Parent topic:ZDP API functions

Parent topic:ZigBee Device Profile (ZDP) API

ZDP structures

This section describes the structures used by the ZigBee Device Profile (ZDP) API. Three sets of structures are presented:

  • Structures used to represent the descriptors that reside on a node - see Section9.2.1

  • Structures used to issue requests using the ZDP functions - see Section 9.2.2

  • Structures used to receive responses to the ZDP requests - see Section 9.2.3

Descriptor structures

These structures are used to represent the following descriptors that contain information about the host node:

  • Node descriptor

  • Node Power descriptor

  • Simple descriptor

The structures are listed below.

ZPS_tsAplZdpNodeDescriptor

The ZDP Node descriptor structure ZPS_tsAplZdpNodeDescriptoris shown below.

typedef struct {
    union
    {
        ZPS_tsAplZdpNodeDescBitFields sBitFields;
        uint16 u16Value;
    } uBitUnion;
    uint8 u8MacFlags;
    uint16 u16ManufacturerCode;
    uint8 u8MaxBufferSize;
    uint16 u16MaxRxSize;
    uint16 u16ServerMask;
    uint16 u16MaxTxSize;
    uint8 u8DescriptorCapability;
} ZPS_tsAplZdpNodeDescriptor;

where:

  • sBitFieldsis a structure of the type ZPS_tsAplZdpNodeDescBitFields

(described below) containing various items of information about the node.

  • u16Valueis used for the union and should be set to 0x0000.

  • eMacFlagscontains 8 bits (bits 0-7) indicating the node capabilities, as required by the IEEE 802.15.4 MAC sub-layer. These node capability flags are described in Table 8.

  • u16ManufacturerCodecontains 16 bits (bits 0-15) indicating the manufacturer code for the node, where this code is allocated to the manufacturer by the ZigBee Alliance.

  • u8MaxBufferSizeis the maximum size, in bytes, of an NPDU (Network Protocol Data Unit).

  • u16MaxRxSizeis the maximum size, in bytes, of an APDU (Application Protocol Data Unit). This value can be greater than the value of u8MaxBufferSize, due to the fragmentation of an APDU into NPDUs.

  • u16ServerMaskcontains 8 bits (bits 0-7) indicating the server status of the node. This server mask is detailed in Table 18 on page 389.

  • u16MaxTxSizeis the maximum size, in bytes, of the ASDU (Application Sub- layer Data Unit) in which a message can be sent (the message may actually be transmitted in smaller fragments)

  • u8DescriptorCapabilitycontains 8 bits (bits 0-7) indicating the properties of the node that can be used by other nodes in network discovery, as indicated in the table below.

Bit

Description

0

Set to 1 if Extended Active Endpoint List is available on the node, 0 otherwise.

1

Set to 1 if Extended Simple Descriptor List is available on the node, 0 otherwise.

2-7

Reserved

ZPS_tsAplZdpNodeDescBitFields

The ZPS_tsAplZdpNodeDescBitFieldsstructure is used by the sBitFields

element in the Node descriptor structure (see above), and is shown below:

typedef struct {
    unsigned eFrequencyBand : 5;
    unsigned eApsFlags : 3;
    unsigned eReserved : 3; /* reserved */
    unsigned bUserDescAvail : 1;
    unsigned bComplexDescAvail : 1;
    unsigned eLogicalType : 3;
}ZPS_tsAplZdpNodeDescBitFields;

where:

  • eFrequencyBandis a 5-bit value representing the IEEE 802.15.4 radio- frequency band used by the node:

    • 0: 868-MHz band

    • 2: 915-MHz band

    • 3: 2400-MHz band

  • eApsFlagsis a 3-bit value containing flags that indicate the ZigBee APS capabilities of the node (not currently supported and should be set to 0).

  • eReservedis a 3-bit reserved value.

  • bUserDescAvailis a 1-bit value indicating whether a User descriptor is available for the node - 1 indicates available, 0 indicates unavailable.

  • bComplexDescAvailis a 1-bit value indicating whether a Complex descriptor is available for the node - 1 indicates available, 0 indicates unavailable.

  • eLogicalTypeis a 3-bit value indicating the ZigBee device of the node:

    • 0: Coordinator

    • 1: Router

    • 2: End Device

Parent topic:ZPS_tsAplZdpNodeDescriptor

Parent topic:Descriptor structures

ZPS_tsAplZdpNodePowerDescriptor

The ZDP Node Power descriptor structure ZPS_tsAplZdpNodePowerDescriptoris shown below.

typedef struct {
    union
    {
            ZPS_tsAplZdpPowerDescBitFields sBitFields;
            uint16 u16Value;
    }uBitUnion;
} ZPS_tsAplZdpNodePowerDescriptor;

where:

  • sBitFieldsis a structure of type ZPS_tsAplZdpPowerDescBitFields(described below) containing various items of information about the node’s power.

  • u16valueis used for the union and should be set to 0x0000.

ZPS_tsAplZdpPowerDescBitFields

The ZPS_tsAplZdpPowerDescBitFieldsstructure is used by the sBitFields

element in the Node Power descriptor structure (see above), and is shown below:

typedef struct {
    unsigned eCurrentPowerSourceLevel : 4;
    unsigned eCurrentPowerSource : 4;
    unsigned eAvailablePowerSource : 4;
    unsigned eCurrentPowerMode : 4;
}ZPS_tsAplZdpPowerDescBitFields;

where:

  • eCurrentPowerSourceLevelis a 4-bit value roughly indicating the level of charge of the node’s power source (mainly useful for batteries), as follows:

    • 0000: Critically low

    • 0100: Approximately 33%

    • 1000: Approximately 66%

    • 1100: Approximately 100% (near fully charged)

  • eCurrentPowerSourceis a 4-bit value indicating the current power source for the node, as detailed below (the bit corresponding to the current power source is set to 1, all other bits are set to 0):

    • Bit 0: Permanent mains supply

    • Bit 1: Rechargeable battery

    • Bit 2: Disposable battery

    • Bit 4: Reserved

  • eAvailablePowerSourceis a 4-bit value indicating the available power sources for the node, as detailed above (a bit is set to 1 if the corresponding power source is available).

  • eCurrentPowerModeis a 4-bit value indicating the power mode currently used by the node, as follows:

    • 0000: Receiver synchronized with the “receiver on when idle” subfield of the Node descriptor

    • 0001: Receiver switched on periodically, as defined by the Node Power descriptor

    • 0010: Receiver switched on when stimulated, for example, by pressing a button

    • All other values are reserved.

Parent topic:ZPS_tsAplZdpNodePowerDescriptor

Parent topic:Descriptor structures

ZPS_tsAplZdpSimpleDescType

The ZDP Simple descriptor structure ZPS_tsAplZdpSimpleDescTypeis shown below.

typedef struct {
        uint8 u8Endpoint;
        uint16 u16ApplicationProfileId;
        uint16 u16DeviceId;
    union
    {
        ZPS_tsAplZdpSimpleDescBitFields sBitFields;
        uint8 u8Value;
    }uBitUnion;
uint8 u8InClusterCount;
uint16* pu16InClusterList;
uint8 u8OutClusterCount;
uint16* pu16OutClusterList;
}ZPS_tsAplZdpSimpleDescType;

where:

  • u8Endpointis the number, in the range 1-240, of the endpoint to which the Simple descriptor corresponds.

  • u16ApplicationProfileIdis the 16-bit identifier of the ZigBee application profile supported by the endpoint. This must be an application profile identifier issued by the ZigBee Alliance (for Lighting & Occupancy devices, it is 0x0104).

  • u16DeviceIdis the 16-bit identifier of the ZigBee device description supported by the endpoint. This must be a device description identifier issued by the ZigBee Alliance.

  • sBitFieldsis a structure of type ZPS_tsAplZdpSimpleDescBitFields (described below) containing information about the endpoint.

  • u8Valueis used for the union and must be set to 0x00.

  • u8InClusterCountis an 8-bit count of the number of input clusters, supported on the endpoint, that will appear in the list pointed to by the pu16InClusterListelement.

  • *pu16InClusterListis a pointer to the list of input clusters supported by the endpoint (for use during the service discovery and binding procedures). This is a sequence of 16-bit values, representing the cluster numbers (in the range 1-240), where the number of values is equal to count u8InClusterCount. If this count is zero, the pointer can be set to NULL.

  • u8OutClusterCountis an 8-bit count of the number of output clusters, supported on the endpoint, that will appear in the pu16OutClusterListelement.

  • *pu16OutClusterListis a pointer to the list of output clusters supported by the endpoint (for use during the service discovery and binding procedures). This is a sequence of 16-bit values, representing the cluster numbers (in the range 1-240), where the number of values is equal to count u8OutClusterCount. If this count is zero, the pointer can be set to NULL.

ZPS_tsAplZdpSimpleDescBitFields

The ZPS_tsAplZdpSimpleDescBitFieldsstructure is used by the sBitFields element in the Simple descriptor structure (see above), and is shown below:

typedef struct
{
unsigned eDeviceVersion :4;
unsigned eReserved :4;
}ZPS_tsAplZdpSimpleDescBitFields;

where:

  • eDeviceVersionis a 4-bit value identifying the version of the device description supported by the endpoint.

  • eReservedis a 4-bit reserved value.

Parent topic:ZPS_tsAplZdpSimpleDescType

Parent topic:Descriptor structures

Parent topic:ZDP structures

ZDP Request structures

These structures are used to represent requests in the ZDP functions.

The ZDP request structures are listed below.

Address Discovery Request Structures

  1. ZPS_tsAplZdpNwkAddrReq

  2. ZPS_tsAplZdpIEEEAddrReq

  3. ZPS_tsAplZdpDeviceAnnceReq

    Service Discovery Request Structures

  4. ZPS_tsAplZdpNodeDescReq

  5. ZPS_tsAplZdpPowerDescReq

  6. ZPS_tsAplZdpSimpleDescReq

  7. ZPS_tsAplZdpExtendedSimpleDescReq

  8. ZPS_tsAplZdpComplexDescReq

  9. ZPS_tsAplZdpUserDescReq

  10. ZPS_tsAplZdpMatchDescReq

  11. ZPS_tsAplZdpActiveEpReq

  12. ZPS_tsAplZdpExtendedActiveEpReq

  13. ZPS_tsAplZdpUserDescSet

  14. ZPS_tsAplZdpSystemServerDiscoveryReq

  15. ZPS_tsAplZdpDiscoveryCacheReq

  16. ZPS_tsAplZdpDiscoveryStoreReq

  17. ZPS_tsAplZdpNodeDescStoreReq

  18. ZPS_tsAplZdpPowerDescStoreReq

  19. ZPS_tsAplZdpSimpleDescStoreReq

  20. ZPS_tsAplZdpActiveEpStoreReq

  21. ZPS_tsAplZdpFindNodeCacheReq

  22. ZPS_tsAplZdpRemoveNodeCacheReq

    Binding Request Structures

  23. ZPS_tsAplZdpEndDeviceBindReq

  24. ZPS_tsAplZdpBindUnbindReq

  25. ZPS_tsAplZdpBindUnbindReq

  26. ZPS_tsAplZdpBindRegisterReq

  27. ZPS_tsAplZdpReplaceDeviceReq

  28. ZPS_tsAplZdpStoreBkupBindEntryReq

  29. ZPS_tsAplZdpRemoveBkupBindEntryReq

  30. ZPS_tsAplZdpBackupBindTableReq

  31. ZPS_tsAplZdpRecoverBindTableReq

  32. ZPS_tsAplZdpBackupSourceBindReq

  33. ZPS_tsAplZdpRecoverSourceBindReq

    Network Management Services Request Structures

  34. ZPS_tsAplZdpMgmtNwkDiscReq

  35. ZPS_tsAplZdpMgmtLqiReq

  36. ZPS_tsAplZdpMgmtRtgReq

  37. ZPS_tsAplZdpMgmtBindReq

  38. ZPS_tsAplZdpMgmtLeaveReq

  39. ZPS_tsAplZdpMgmtDirectJoinReq

  40. ZPS_tsAplZdpMgmtPermitJoiningReq

  41. ZPS_tsAplZdpMgmtCacheReq

  42. ZPS_tsAplZdpMgmtNwkUpdateReq

  43. ZPS_tsAplZdpParentAnnceReq

ZPS_tsAplZdpNwkAddrReq

This structure is used by the function ZPS_eAplZdpNwkAddrRequest(). It represents a request for the network address of the node with a given IEEE address.

The ZPS_tsAplZdpNwkAddrReqstructure is detailed below.

typedef struct {
  uint64 u64IeeeAddr;
  uint8 u8RequestType;
  uint8 u8StartIndex;
} ZPS_tsAplZdpNwkAddrReq;

where:

  • u64IeeeAddr is the IEEE address of the node of interest.

  • u8RequestType is the type of response required:

    • 0x00: Single device response, which contains only the network address of the target node.

    • 0x01: Extended response, which also includes the network addresses of neighboring nodes.

    • All other values are reserved.

  • u8StartIndex is the Neighbor table index of the first neighboring node to be included in the response, if an extended response has been selected.

Parent topic:ZDP Request structures

ZPS_tsAplZdpIEEEAddrReq

This structure is used by the function ZPS_eAplZdpIEEEAddrRequest(). It represents a request for the IEEE address of a node with a given network address.

The ZPS_tsAplZdpIEEEAddrReqstructure is detailed below.

typedef struct {

uint16 u16NwkAddrOfInterest; uint8 u8RequestType;

uint8 u8StartIndex;

} ZPS_tsAplZdpIEEEAddrReq;

where:

  • u16NwkAddrOfInterestis the network address of the node of interest

  • u8RequestTypeis the type of response required:

    • 0x00: Single device response, which will contain only the IEEE address of the target node

    • 0x01: Extended response, which will also include the IEEE addresses of neighboring nodes

    • All other values are reserved

  • u8StartIndexis the Neighbor table index of the first neighboring node to be included in the response, if an extended response has been selected

Parent topic:ZDP Request structures

ZPS_tsAplZdpDeviceAnnceReq

This structure is used by the function ZPS_eAplZdpDeviceAnnceRequest(). It represents an announcement that the sending node has joined or rejoined the network.

The ZPS_tsAplZdpDeviceAnnceReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;

uint8 u8Capability;

} ZPS_tsAplZdpDeviceAnnceReq;

where:

  • u16NwkAddris the network address of the sending node

  • u64IeeeAddris the IEEE address of the sending node

  • u8Capabilityis a bitmap representing the capabilities of the sending node. This bitmap is detailed in Table 1 in section ZPS_tsAfNwkJoinIndEvent.

Parent topic:ZDP Request structures

ZPS_tsAplZdpNodeDescReq

This structure is used by the function ZPS_eAplZdpNodeDescRequest(). It represents a request for the Node descriptor of the node with a given network address.

The ZPS_tsAplZdpNodeDescReqstructure is detailed below.

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpNodeDescReq;

where u16NwkAddrOfInterestis the network address of the node of interest.

Parent topic:ZDP Request structures

ZPS_tsAplZdpPowerDescReq

This structure is used by the function ZPS_eAplZdpPowerDescRequest(). It represents a request for the Power descriptor of the node with a given network address.

The ZPS_tsAplZdpPowerDescReqstructure is detailed below.

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpPowerDescReq;

where u16NwkAddrOfInterestis the network address of the node of interest.

Parent topic:ZDP Request structures

ZPS_tsAplZdpSimpleDescReq

This structure is used by the function ZPS_eAplZdpSimpleDescRequest(). It represents a request for the Simple descriptor of an endpoint on the node with a given network address.

The ZPS_tsAplZdpSimpleDescReqstructure is detailed below.

typedef struct {
    uint16 u16NwkAddrOfInterest;
    uint8 u8EndPoint;
} ZPS_tsAplZdpSimpleDescReq;

where:

  • u16NwkAddrOfInterestis the network address of the node of interest.

  • u8EndPointis the number of the relevant endpoint on the node (1-240).

Parent topic:ZDP Request structures

ZPS_tsAplZdpExtendedSimpleDescReq

This structure is used by the **ZPS_eAplZdpExtendedSimpleDescRequest()**function. It represents a request for the Simple descriptor of an endpoint on the node with a given network address. This request is required when the endpoint has more input/output clusters than the usual ZPS_eAplZdpSimpleDescRequest() function can deal with.

The ZPS_tsAplZdpExtendedSimpleDescReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint8 u8EndPoint;

uint8 u8StartIndex;

} ZPS_tsAplZdpExtendedSimpleDescReq;

where:

  • u16NwkAddrOfInterestis the network address of the node of interest

  • u8EndPointis the number of the relevant endpoint on the node (1-240)

  • u8StartIndexis the index of the first cluster of interest in the input and output cluster lists for the endpoint (this and subsequent clusters will be reported in the response)

Parent topic:ZDP Request structures

ZPS_tsAplZdpComplexDescReq

This structure is used by the function ZPS_eAplZdpComplexDescRequest(). It represents a request for the Complex descriptor of the node with a given network address.

The ZPS_tsAplZdpComplexDescReqstructure is detailed below.

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpComplexDescReq;

where u16NwkAddrOfInterestis the network address of the node of interest.

Parent topic:ZDP Request structures

ZPS_tsAplZdpUserDescReq

This structure is used by the function ZPS_eAplZdpUserDescRequest(). It represents a request for the User descriptor of the node with a given network address.

The ZPS_tsAplZdpUserDescReqstructure is detailed below.

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpUserDescReq;

where u16NwkAddrOfInterestis the network address of the node of interest.

Parent topic:ZDP Request structures

ZPS_tsAplZdpMatchDescReq

This structure is used by the function ZPS_eAplZdpMatchDescRequest(). It represents a request for nodes with endpoints that match certain criteria in their Simple descriptors.

The ZPS_tsAplZdpMatchDescReqstructure is detailed below.

typedef struct {

uint16 u16NwkAddrOfInterest; uint16 u16ProfileId;

/* rest of message is variable length */ uint8 u8NumInClusters;

uint16* pu16InClusterList; uint8 u8NumOutClusters; uint16* pu16OutClusterList;

} ZPS_tsAplZdpMatchDescReq;

where:

  • u16NwkAddrOfInterestis the network address of the node of interest

  • u16ProfileIdis the identifier of the ZigBee application profile used

  • u8NumInClustersis the number of input clusters to be matched

  • pu16InClusterListis a pointer to the list of input clusters to be matched - this is a variable-length list of input cluster IDs, two bytes for each cluster

  • u8NumOutClustersis the number of output clusters to be matched

  • pu16OutClusterListis a pointer to the list of output clusters to be matched - this is a variable-length list of output cluster IDs, two bytes for each cluster

Parent topic:ZDP Request structures

ZPS_tsAplZdpActiveEpReq

This structure is used by the function ZPS_eAplZdpActiveEpRequest(). It represents a request for a list of the active endpoints on the node with a given network address.

The ZPS_tsAplZdpActiveEpReqstructure is detailed below.

typedef struct {

uint16 u16NwkAddrOfInterest;

} ZPS_tsAplZdpActiveEpReq;

where u16NwkAddrOfInterestis the network address of the node of interest.

Parent topic:ZDP Request structures

ZPS_tsAplZdpExtendedActiveEpReq

This structure is used by the function ZPS_eAplZdpExtendedActiveEpRequest(). It represents a request for a list of the active endpoints on the node with a given network address. This request is required when the node has more active endpoints than the usual ZPS_eAplZdpActiveEpRequest() function can deal with.

The ZPS_tsAplZdpExtendedActiveEpReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr;

uint8 u8StartIndex;

} ZPS_tsAplZdpExtendedActiveEpReq;

where:

  • u16NwkAddris the network address of the node of interest

  • u8StartIndexis the index of the first endpoint of interest in the list of active endpoints (this and subsequent endpoints will be reported in the response)

Parent topic:ZDP Request structures

ZPS_tsAplZdpUserDescSet

This structure is used by the function ZPS_eAplZdpUserDescSetRequest(). It represents a request used to configure the User descriptor on a remote node.

The ZPS_tsAplZdpUserDescSetstructure is detailed below.

typedef struct {

uint16 u16NwkAddrOfInterest; uint8 u8Length;

char szUserDescriptor[ZPS_ZDP_LENGTH_OF_USER_DESC];

} ZPS_tsAplZdpUserDescSet;

where:

  • u16NwkAddrOfInterestis the network address of the node of interest

  • u8Lengthis the length of the User descriptor

  • szUserDescriptoris the new User descriptor for the remote node as a character array.

Parent topic:ZDP Request structures

ZPS_tsAplZdpSystemServerDiscoveryReq

This structure is used by the ZPS_eAplZdpSystemServerDiscoveryRequest() function. It represents a request for information on the available services of a remote node.

The ZPS_tsAplZdpSystemServerDiscoveryReqstructure is detailed below.

typedef struct {
uint16 u16ServerMask;
} ZPS_tsAplZdpSystemServerDiscoveryReq;

where u16ServerMaskis a bitmask representing the required services (1 for ‘required’, 0 for ‘not required’). This bitmask is detailed in the table below.

Services Bitmask

Bit

Service

0

Primary Trust Centre

1

Backup Trust Centre

2

Primary Binding Table Cache

3

Backup Binding Table Cache

4

Primary Discovery Cache

5

Back-up Discovery Cache

6

Network Manager

7-15

Reserved

Parent topic:ZDP Request structures

ZPS_tsAplZdpDiscoveryCacheReq

This structure is used by the function ZPS_eAplZdpDiscoveryCacheRequest(). It represents a request to find the nodes in the network which have a primary discovery cache.

The ZPS_tsAplZdpDiscoveryCacheReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;

} ZPS_tsAplZdpDiscoveryCacheReq;

where:

  • u16NwkAddris the network address of the sending node

  • u64IeeeAddris the IEEE address of the sending node

Parent topic:ZDP Request structures

ZPS_tsAplZdpDiscoveryStoreReq

This structure is used by the function ZPS_eAplZdpDiscoveryStoreRequest(). It represents a request to a remote node to reserve memory space to store the local node’s ‘discovery information’.

The ZPS_tsAplZdpDiscoveryStoreReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;

uint8 u8NodeDescSize; uint8 u8PowerDescSize; uint8 u8ActiveEpSize; uint8 u8SimpleDescCount;

/* Rest of message is variable length */ uint8* pu8SimpleDescSizeList;

} ZPS_tsAplZdpDiscoveryStoreReq;

where:

  • u16NwkAddris the network address of the sending node

  • u64IeeeAddris the IEEE address of the sending node

  • u8NodeDescSizeis the size of the Node descriptor to store

  • u8PowerDescSizeis the size of the Power descriptor to store

  • u8ActiveEpSizeis the size of the list of active endpoints to store

  • u8SimpleDescCountis the number of Simple descriptors to store

  • pu8SimpleDescSizeListis a pointer to a list of sizes of the Simple descriptors

Parent topic:ZDP Request structures

ZPS_tsAplZdpNodeDescStoreReq

This structure is used by the function ZPS_eAplZdpNodeDescStoreRequest(). It represents a request to a remote node to store the Node descriptor of the local node.

The ZPS_tsAplZdpNodeDescStoreReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;

/* Rest of message is variable length */ ZPS_tsAplZdpNodeDescriptor sNodeDescriptor;

} ZPS_tsAplZdpNodeDescStoreReq;

where:

  • u16NwkAddris the network address of the sending node

  • u64IeeeAddris the IEEE address of the sending node

  • sNodeDescriptoris a pointer to the Node descriptor to store (this is itself a structure of the type ZPS_tsAplZdpNodeDescriptor, detailed in Section8.2.1.1)

Parent topic:ZDP Request structures

ZPS_tsAplZdpPowerDescStoreReq

This structure is used by the function ZPS_eAplZdpPowerDescStoreRequest(). It represents a request to a remote node to store the Power descriptor of the local node.

The ZPS_tsAplZdpPowerDescStoreReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;

/* Rest of message is variable length */ ZPS_tsAplZdpNodePowerDescriptor sPowerDescriptor;

} ZPS_tsAplZdpPowerDescStoreReq;

where:

  • u16NwkAddris the network address of the sending node

  • u64IeeeAddris the IEEE address of the sending node

  • sPowerDescriptoris a pointer to the Power descriptor to store (this is itself a structure of the type ZPS_tsAplZdpNodePowerDescriptor, detailed in Section8.2.1.2)

Parent topic:ZDP Request structures

ZPS_tsAplZdpSimpleDescStoreReq

This structure is used by the function ZPS_eAplZdpSimpleDescStoreRequest(). It represents a request to a remote node to store the Simple descriptor of one of the local node’s endpoints.

The ZPS_tsAplZdpSimpleDescStoreReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr; uint8 u8Length;

/* Rest of message is variable length */ ZPS_tsAplZdpSimpleDescType sSimpleDescriptor;

} ZPS_tsAplZdpSimpleDescStoreReq;

where:

  • u16NwkAddris the network address of the sending node

  • u64IeeeAddris the IEEE address of the sending node

  • u8Lengthis the length of the Simple descriptor to store

  • sSimpleDescriptoris a pointer to the Simple descriptor to store (this is itself a structure of the type ZPS_tsAplZdpSimpleDescType, detailed in Section8.2.1.3)

Parent topic:ZDP Request structures

ZPS_tsAplZdpActiveEpStoreReq

This structure is used by the function ZPS_eAplZdpActiveEpStoreRequest(). It represents a request to a remote node to store the list of active endpoints of the local node.

The ZPS_tsAplZdpActiveEpStoreReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;

uint8 u8ActiveEPCount;

/* Rest of message is variable length */ uint8* pu8ActiveEpList;

} ZPS_tsAplZdpActiveEpStoreReq;

where:

  • u16NwkAddris the network address of the sending node

  • u64IeeeAddris the IEEE address of the sending node

  • u8ActiveEPCountis the number of active endpoints in the list to store

  • pu8ActiveEpListis a pointer to the list of active endpoints to store

Parent topic:ZDP Request structures

ZPS_tsAplZdpFindNodeCacheReq

This structure is used by the function ZPS_eAplZdpActiveEpStoreRequest(). It represents a request to search for nodes in the network that hold ‘discovery information’ about a particular node.

The ZPS_tsAplZdpFindNodeCacheReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;
} ZPS_tsAplZdpFindNodeCacheReq;

where:

  • u16NwkAddris the network address of the node of interest

  • u64IeeeAddris the IEEE address of the node of interest

Parent topic:ZDP Request structures

ZPS_tsAplZdpRemoveNodeCacheReq

This structure is used by the function ZPS_eAplZdpActiveEpStoreRequest(). It represents a request to a remote node to remove from its Primary Discovery Cache all ‘discovery information’ relating to a particular End Device.

The ZPS_tsAplZdpRemoveNodeCacheReqstructure is detailed below.

typedef struct { uint16 u16NwkAddr; uint64 u64IeeeAddr;
} ZPS_tsAplZdpRemoveNodeCacheReq;

where:

  • u16NwkAddris the network address of the End Device of interest

  • u64IeeeAddris the IEEE address of the End Device of interest

Parent topic:ZDP Request structures

ZPS_tsAplZdpEndDeviceBindReq

This structure is used by the function ZPS_eAplZdpEndDeviceBindRequest(). It represents a request to the Coordinator to bind an endpoint on the local node to an endpoint on a remote node (the Coordinator must match two such binding requests, from the local node and remote node).

The ZPS_tsAplZdpEndDeviceBindReqstructure is detailed below.

typedef struct {
uint16 u16BindingTarget;
uint64 u64SrcIeeeAddress;
uint8 u8SrcEndpoint;
uint16 u16ProfileId;
/* Rest of the message is variable length */
uint8 u8NumInClusters;
uint16 *pu16InClusterList;
uint8 u8NumOutClusters;
uint16 *pu16OutClusterList;
} ZPS_tsAplZdpEndDeviceBindReq;

where:

  • u16BindingTargetis the network address of the node to hold the binding (either a node with primary binding table cache or the local node).

  • u64SrcIeeeAddressis the IEEE address of the local node.

  • u8SrcEndpointis the number of the local endpoint to be bound (1-240).

  • u16ProfileIdis the application profile ID to be matched for the binding.

  • u8NumInClustersis the number of input clusters of the local endpoint (available for matching with output clusters of remote node to be bound).

  • pu16InClusterListis a pointer to the input cluster list of the local endpoint (containing clusters for matching with output clusters of remote node).

  • u8NumOutClustersis the number of output clusters of the local endpoint (available for matching with input clusters of remote node to be bound).

  • pu16OutClusterListis a pointer to the output cluster list of the local endpoint (containing clusters for matching with input clusters of remote node).

Parent topic:ZDP Request structures

ZPS_tsAplZdpBindUnbindReq

This structure is used by the function ZPS_eAplZdpBindUnbindRequest(). It represents a request for a modification of the Binding table on the target node, in order to either bind or unbind two nodes in the network.

The ZPS_tsAplZdpBindUnbindReqstructure is detailed below.

typedef struct {
uint64 u64SrcAddress;
uint8 u8SrcEndpoint;
uint16 u16ClusterId;
uint8 u8DstAddrMode;
union {
  struct {
      uint16 u16DstAddress;
         } sShort;
  struct {
      uint64 u64DstAddress;
      uint8 u8DstEndPoint;
         } sExtended;
  } uAddressField;
} ZPS_tsAplZdpBindUnbindReq;

where:

  • u64SrcAddressis the IEEE address of the source node for the binding

  • u8SrcEndpointis the number of the source endpoint for the binding (1-240)

  • u16ClusterIdis the ID of the cluster (on the local endpoint) for the binding

  • u8DstAddrModeis the destination addressing mode (see Table 14 below):

    • ZPS_E_ADDR_MODE_SHORT: network address (u8DstEndPointis unspecified)

    • ZPS_E_ADDR_MODE_IEEE: IEEE address (u8DstEndPointis specified)

    • All other values are reserved

  • u16DstAddressor u64DstAddressis the address of the destination node for the binding:

    • network address u16DstAddressif u8DstAddrModeis set to ZPS_E_ADDR_MODE_SHORT

    • IEEE address u64DstAddressif 8DstAddrModeis set to ZPS_E_ADDR_MODE_IEEE

  • u8DstEndPointis the number of the destination endpoint for the binding

(1-240) - not required if u8DstAddrModeset to ZPS_E_ADDR_MODE_SHORT (network address)

Addressing modes

u8DstAddrMode

Code

Description

0x02

ZPS_E_ADDR_MODE_SHORT

16-bit Network (Short) address

0x03

ZPS_E_ADDR_MODE_IEEE

64-bit IEEE/MAC address

Parent topic:ZDP Request structures

ZPS_tsAplZdpBindRegisterReq

This structure is used by the function ZPS_eAplZdpBindRegisterRequest(). It represents a request to inform a remote node with a primary binding table cache that the local node will hold its own Binding table entries.

The ZPS_tsAplZdpBindRegisterReqstructure is detailed below.

typedef struct {

uint64 u64NodeAddress;

} ZPS_tsAplZdpBindRegisterReq;

where u64NodeAddressis the IEEE address of the local node.

Parent topic:ZDP Request structures

ZPS_tsAplZdpReplaceDeviceReq

This structure is used by the function ZPS_eAplZdpReplaceDeviceRequest(). It represents a request to a remote node (with a primary binding table cache) to modify its binding table entries by replacing an IEEE address and/or associated endpoint number.

The ZPS_tsAplZdpReplaceDeviceReqstructure is detailed below.

typedef struct {

uint64 u64OldAddress; uint8 u8OldEndPoint; uint64 u64NewAddress; uint8 u8NewEndPoint;

} ZPS_tsAplZdpReplaceDeviceReq;

where:

  • u64OldAddressis the IEEE address to be replaced

  • u8OldEndPointis the endpoint number to be replaced

(0-240, where 0 indicates that the endpoint number is not to be replaced)

  • u64NewAddressis the replacement IEEE address

  • u8NewEndPointis the replacement endpoint number (1-240)

Parent topic:ZDP Request structures

ZPS_tsAplZdpStoreBkupBindEntryReq

This structure is used by the function ZPS_eAplZdpStoreBkupBindEntryRequest(). It represents a request to a remote node to save a back-up of an entry from the local primary binding table cache.

The ZPS_tsAplZdpStoreBkupBindEntryReqstructure is detailed below.

typedef struct {
uint64 u64SrcAddress;
uint8 u8SrcEndPoint;
uint16 u16ClusterId;
uint8 u8DstAddrMode;
union {
    struct {
        uint16 u16DstAddress;
            } sShort;
     struct {
        uint64 u64DstAddress;
        uint8 u8DstEndPoint;
    } sExtended;
     };
} ZPS_tsAplZdpStoreBkupBindEntryReq;

where:

  • u64SrcAddressis the IEEE address of the source node for the binding entry

  • u8SrcEndpointis the number of the source endpoint for the binding (1-240)

  • u16ClusterIdis the ID of the cluster (on the local endpoint) for the binding

  • u8DstAddrModeis the destination addressing mode for remaining elements (see Table 15 below)

  • u16DstAddressis the address of the destination node for the binding (address type according to setting of u8DstAddrMode)

  • u8DstEndPointis the number of the destination endpoint for the binding (1-240)

Addressing modes

u8DstAddrMode

Code

Description

0x01

ZPS_E_ADDR_MODE_GROUP

16-bit Group address

0x03

ZPS_E_ADDR_MODE_IEEE

64-bit IEEE/MAC address

Parent topic:ZDP Request structures

ZPS_tsAplZdpRemoveBkupBindEntryReq

This structure is used by the ZPS_eAplZdpRemoveBkupBindEntryRequest() function. It represents a request to a remote node to remove the back-up of an entry from the local primary binding table cache.

The ZPS_tsAplZdpRemoveBkupBindEntryReqstructure is detailed below.

typedef struct {
uint64 u64SrcAddress;
uint8 u8SrcEndPoint;
uint16 u16ClusterId;
uint8 u8DstAddrMode;
 union {
    struct {
      uint16 u16DstAddress;
      } sShort;
    struct
          {
      uint64 u64DstAddress;
      uint8 u8DstEndPoint;
      } sExtended;
        };
} ZPS_tsAplZdpRemoveBkupBindEntryReq;

where:

  • u64SrcAddressis the IEEE address of the source node for the binding entry.

  • u8SrcEndpointis the number of the source endpoint for the binding (1-240).

  • u16ClusterIdis the ID of the cluster (on the local endpoint) for the binding.

  • u8DstAddrModeis the destination addressing mode for remaining elements (see the Table below) .

  • u16DstAddressis the address the destination node for the binding (address type according to setting of u8DstAddrMode).

  • u8DstEndPointis the number of the destination endpoint for the binding (1-240).

Addressing modes

u8DstAddrMode

Code

Description

0x01

ZPS_E_ADDR_MODE_GROUP

16-bit Group address

0x03

ZPS_E_ADDR_MODE_IEEE

64-bit IEEE/MAC address

Parent topic:ZDP Request structures

ZPS_tsAplZdpBackupBindTableReq

This structure is used by the function ZPS_eAplZdpBackupBindTableRequest(). It represents a request to a remote node to save a back-up of the local primary binding table cache (whole or in part).

The ZPS_tsAplZdpBackupBindTableReqstructure is detailed below.

typedef struct {
    uint16 u16BindingTableEntries;
    uint16 u16StartIndex;
    uint16 u16BindingTableListCount;
    /* Rest of message is variable length */
    ZPS_tsAplZdpBindingTable sBindingTable;
} ZPS_tsAplZdpBackupBindTableReq;

where:

  • u16BindingTableEntriesis the total number of entries in the primary binding table cache.

  • u16StartIndexis the binding table index of the first entry to be backed up.

  • u16BindingTableListCountis the number of binding table entries in the list to be backed up (sBindingTable).

  • sBindingTableis a pointer to the list of binding table entries to be backed up. Each list item is of the type ZPS_tsAplZdpBindingTabledetailed below:

ZPS_tsAplZdpBindingTable

typedef struct
{
uint64 u64SourceAddress;
ZPS_tsAplZdpBindingTableEntry* psBindingTableEntryForSpSrcAddr;
}ZPS_tsAplZdpBindingTable;

where:

  • u64SourceAddressis the IEEE source address for the binding table entry.

  • psBindingTableEntryForSpSrcAddris the binding table entry. This is of the type ZPS_tsAplZdpBindingTableEntrydetailed below.

ZPS_tsAplZdpBindingTableEntry

typedef struct
{
    uint16 u16ClusterId;
    uint8 u8SourceEndpoint;
    uint8 u8DstAddrMode;
union {
     struct {
        uint16 u16DstAddress;
      } sShort;
     struct {
        uint64 u64DstAddress;
        uint8 u8DstEndPoint;
      } sExtended;
    };
}ZPS_tsAplZdpBindingTableEntry;

where:

  • u16ClusterIdis the ID of the cluster (on the local endpoint) for the binding

  • u8SrcEndpointis the number of the source endpoint for the binding (1-240)

  • u8DstAddrModeis the destination addressing mode for remaining elements (see Table below)

  • u16DstAddressis the address the destination node for the binding (address type according to setting of u8DstAddrMode)

  • u8DstEndPointis the number of the destination endpoint for the binding (1-240)

Addressing modes

u8DstAddrMode

Code

Description

0x01

ZPS_E_ADDR_MODE_GROUP

16-bit Group address

0x03

ZPS_E_ADDR_MODE_IEEE

64-bit IEEE/MAC address

Parent topic:ZDP Request structures

ZPS_tsAplZdpRecoverBindTableReq

This structure is used by the function ZPS_eAplZdpRecoverBindTableRequest(). It represents a request to a remote node to recover a back-up of the local primary binding table cache.

The ZPS_tsAplZdpRecoverBindTableReqstructure is detailed below.

typedef struct {
uint16 u16StartIndex;
} ZPS_tsAplZdpRecoverBindTableReq;

where u16StartIndexis the binding table index of the first entry to be recovered.

Parent topic:ZDP Request structures

ZPS_tsAplZdpBackupSourceBindReq

This structure is used by the function ZPS_eAplZdpBackupSourceBindRequest(). It represents a request to a remote node to save a back-up of the local node’s source binding table (whole or in part).

The ZPS_tsAplZdpBackupSourceBindReqstructure is detailed below.

typedef struct {
  uint16 u16SourceTableEntries;
  uint16 u16StartIndex;
  uint16 u16SourceTableListCount;
  /* Rest of message is variable length */
  uint64* pu64SourceAddress;
} ZPS_tsAplZdpBackupSourceBindReq;

where:

  • u16SourceTableEntriesis the total number of entries in the source binding table.

  • u16StartIndexis the binding table index of the first entry to be backed up.

  • u16SourceTableListCountis the number of binding table entries in the list to be backed up (pu64SourceAddress).

  • pu64SourceAddressis a pointer to the list of IEEE source addresses corresponding to the binding table entries to be backed up.

Parent topic:ZDP Request structures

ZPS_tsAplZdpRecoverSourceBindReq

This structure is used by the function ZPS_eAplZdpRecoverSourceBindRequest(). It represents a request to a remote node to recover the back-up of the local node’s source binding table (whole or in part).

The ZPS_tsAplZdpRecoverSourceBindReqstructure is detailed below.

typedef struct {
uint16 u16StartIndex;
} ZPS_tsAplZdpRecoverSourceBindReq;

where u16StartIndexis the binding table index of the first entry to be recovered.

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtNwkDiscReq

This structure is used by the function ZPS_eAplZdpMgmtNwkDiscRequest(). It represents a request to a remote node to discover any other wireless networks that are operating in the neighborhood.

The ZPS_tsAplZdpMgmtNwkDiscReqstructure is detailed below.

typedef struct {
 uint32 u32ScanChannels;
 uint8 u8ScanDuration;
 uint8 u8StartIndex;
} ZPS_tsAplZdpMgmtNwkDiscReq;

where:

  • u32ScanChannelsis a bitmask of the radio channels to scan (‘1’ means scan, ‘0’ means do not scan):

    • Bits 0 to 26 respectively represent channels 0 to 26 (only bits 11 to 26 are relevant to the 2400-MHz band)

    • Bits 27 to 31 are reserved

  • u8ScanDurationis a value in the range 0x00 to 0x0E that determines the time spent scanning each channel - this time is proportional to 2u8ScanDuration+1

  • u8StartIndexis the index of the first result from the results list to include in the response to this request

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtLqiReq

This structure is used by the function ZPS_eAplZdpMgmtLqiRequest(). It represents a request to a remote node to provide a list of neighboring nodes, from its Neighbor table, including a radio signal strength (LQI) value for each of these nodes.

The ZPS_tsAplZdpMgmtLqiReqstructure is detailed below.

typedef struct {
uint8 u8StartIndex;
} ZPS_tsAplZdpMgmtLqiReq;

where u8StartIndexis the Neighbor table index of the first entry to be included in the response to this request.

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtRtgReq

This structure is used by the function ZPS_eAplZdpMgmtRtgRequest(). It represents a request to a remote node to provide the contents of its Routing table.

The ZPS_tsAplZdpMgmtRtgReqstructure is detailed below.

typedef struct {
uint8 u8StartIndex;
} ZPS_tsAplZdpMgmtRtgReq;

where u8StartIndexis the Routing table index of the first entry to be included in the response to this request.

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtBindReq

This structure is used by the function ZPS_eAplZdpMgmtBindRequest(). It represents a request to a remote node to provide the contents of its Binding table.

The ZPS_tsAplZdpMgmtBindReqstructure is detailed below.

typedef struct {
    uint8 u8StartIndex;
} ZPS_tsAplZdpMgmtBindReq;

where u8StartIndexis the Binding table index of the first entry to be included in the response to this request.

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtLeaveReq

This structure is used by the function ZPS_eAplZdpMgmtLeaveRequest(). It requests a remote node to leave the network.

The ZPS_tsAplZdpMgmtLeaveReqstructure is detailed below.

typedef struct {
    uint64 u64DeviceAddress;
    uint8 u8Flags;
} ZPS_tsAplZdpMgmtLeaveReq;

where:

  • u64DeviceAddressis the IEEE address of the device being asked to leave the network.

  • u8Flagsis an 8-bit bitmap containing the following flags:

    • Rejoin flag (bit 0): Set to 1 if the node requested to leave the network should immediately try to rejoin the network, otherwise set to 0.

    • Remove Children flag (bit 1): Set to 1 if the node requested to leave the network should also request its own children (if any) to leave the network, otherwise set to 0.

    • Reserved (bits 7-2).

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtDirectJoinReq

This structure is used by the function ZPS_eAplZdpMgmtDirectJoinRequest(). It requests a remote node to allow a particular device to join it (and therefore the network).

The ZPS_tsAplZdpMgmtDirectJoinReqstructure is detailed below.

typedef struct { uint64 u64DeviceAddress; uint8 u8Capability; } ZPS_tsAplZdpMgmtDirectJoinReq;

where:

  • u64DeviceAddressis the IEEE address of the device to be allowed to join

  • u8Capabilityis a bitmask of the operating capabilities of the device to be allowed to join. This bitmap is detailed in Table in section ZPS_tsAfNwkJoinIndEvent.

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtPermitJoiningReq

This structure is used by the function ZPS_eAplZdpMgmtPermitJoiningRequest(). It requests a remote node (Router or Coordinator) to enable or disable joining for a specified amount of time.

The ZPS_tsAplZdpMgmtPermitJoiningReqstructure is detailed below.

typedef struct {

uint8 u8PermitDuration; bool_t bTcSignificance;

} ZPS_tsAplZdpMgmtPermitJoiningReq;

where:

  • u8PermitDurationis the time period, in seconds, during which joining will be allowed (0x00 means that joining is enabled or disabled with no time limit)

  • bTcSignificancedetermines whether the remote device is a ‘Trust Centre’:

    • TRUE: A Trust Centre

    • FALSE: Not a Trust Centre

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtCacheReq

This structure is used by the function ZPS_eAplZdpMgmtCacheRequest(). It requests a remote node to provide a list of the End Devices registered in its primary discovery cache.

The ZPS_tsAplZdpMgmtCacheReqstructure is detailed below.

typedef struct {

uint8 u8StartIndex;

} ZPS_tsAplZdpMgmtCacheReq;

where u8StartIndexis the discovery cache index of the first entry to be included in the response to this request.

Parent topic:ZDP Request structures

ZPS_tsAplZdpMgmtNwkUpdateReq

This structure is used by the function ZPS_eAplZdpMgmtNwkUpdateRequest(). It requests an update of network parameters related to radio communication and may optionally initiate an energy scan in the 2400-MHz band.

The ZPS_tsAplZdpMgmtNwkUpdateReqstructure is detailed below.

typedef struct {

uint32 u32ScanChannels; uint8 u8ScanDuration; uint8 u8ScanCount; uint8 u8NwkUpdateId;

uint16 u16NwkManagerAddr;

} ZPS_tsAplZdpMgmtNwkUpdateReq;

where:

  • u32ScanChannelsis a bitmask of the radio channels to be scanned (‘1’ means scan, ‘0’ means do not scan):

    • Bits 0 to 26 respectively represent channels 0 to 26 (only bits 11 to 26 are relevant to the 2400-MHz band)

    • Bits 27 to 31 are reserved

  • u8ScanDurationis a key value used to determine the action to be taken, as follows:

    • 0x00-0x05: Indicates that an energy scan is required and determines the time to be spent scanning each channel - this time is proportional to 2u8ScanDuration+1. The set of channels to scan is specified through

u32ScanChannelsand the maximum number of scans is equal to the value of u8ScanCount. Valid for unicasts only

  • 0x06-0xFD: Reserved

  • 0xFE: Indicates that radio channel is to be changed to single channel specified through u32ScanChannelsand that network manager address to be set to that specified through u16NwkManagerAddr. Valid for broadcasts only

  • 0xFF: Indicates that stored radio channel mask to be updated with that specified through u32ScanChannels(but scan not required). Valid for broadcasts only.

  • u8ScanCountis the number of energy scans to be conducted and reported. Valid only if a scan has been enabled through u8ScanDuration(0x00-0x05)

  • u8NwkUpdateIdis a value set by the Network Channel Manager before the request is sent. Valid only if u8ScanDurationset to 0xFE or 0xFF

  • u16NwkManagerAddris the 16-bit network address of the Network Manager (node nominated to manage radio-band operation of network). Valid only if u8ScanDurationset to 0xFF

Parent topic:ZDP Request structures

ZPS_tsAplZdpParentAnnceReq

This structure is used by the function ZPS_eAplZdpParentAnnceReq(), which sends out a Parent Announcement message. The structure specifies the nodes that are the children of the local node which called the function.

The ZPS_tsAplZdpParentAnnceReqstructure is detailed below.

typedef struct {

uint8 u8NumberOfChildren; uint64* pu64ChildList;

} ZPS_tsAplZdpParentAnnceReq;

where:

  • u8NumberOfChildrenis the number of child nodes

  • pu64ChildListis a pointer to a list of the 64-bit IEEE/MAC addresses of the child nodes

Parent topic:ZDP Request structures

Parent topic:ZDP structures

ZDP response structures

This section details the structures that are used to store ZDP responses, resulting from requests sent using the ZDP functions. A received response is collected using the function ZQ_bZQueueReceive(). As part of this function call, you must provide a pointer to a structure to store the message data. This structure must be of the appropriate type for the response, from those described in this section.

The ZDP response structures are listed below.

  1. ZPS_tsAplZdpNwkAddrRsp

  2. ZPS_tsAplZdpIeeeAddrRsp

    Service Discovery Response Structures

  3. ZPS_tsAplZdpNodeDescRsp

  4. ZPS_tsAplZdpPowerDescRsp

  5. ZPS_tsAplZdpSimpleDescRsp

  6. ZPS_tsAplZdpExtendedSimpleDescRsp

  7. ZPS_tsAplZdpComplexDescRsp

  8. ZPS_tsAplZdpUserDescRsp

  9. ZPS_tsAplZdpMatchDescRsp

  10. ZPS_tsAplZdpActiveEpRsp

  11. ZPS_tsAplZdpExtendedActiveEpRsp

  12. ZPS_tsAplZdpUserDescConf

  13. ZPS_tsAplZdpSystemServerDiscoveryRsp

  14. ZPS_tsAplZdpDiscoveryCacheRsp

  15. ZPS_tsAplZdpDiscoveryStoreRsp

  16. ZPS_tsAplZdpNodeDescStoreRsp

  17. ZPS_tsAplZdpPowerDescStoreRsp

  18. ZPS_tsAplZdpSimpleDescStoreRsp

  19. ZPS_tsAplZdpActiveEpStoreRsp

  20. ZPS_tsAplZdpFindNodeCacheRsp

  21. ZPS_tsAplZdpRemoveNodeCacheRsp

    Binding Response Structures

  22. ZPS_tsAplZdpEndDeviceBindRsp

  23. ZPS_tsAplZdpBindRsp

  24. ZPS_tsAplZdpUnbindRsp

  25. ZPS_tsAplZdpBindRegisterRsp

  26. ZPS_tsAplZdpReplaceDeviceRsp

  27. ZPS_tsAplZdpStoreBkupBindEntryRsp

  28. ZPS_tsAplZdpRemoveBkupBindEntryRsp

  29. ZPS_tsAplZdpBackupBindTableRsp

  30. ZPS_tsAplZdpRecoverBindTableRsp

  31. ZPS_tsAplZdpBackupSourceBindRsp

  32. ZPS_tsAplZdpRecoverSourceBindRsp

    Network Management Services Response Structures

  33. ZPS_tsAplZdpMgmtNwkDiscRsp

  34. ZPS_tsAplZdpMgmtLqiRsp

  35. ZPS_tsAplZdpMgmtRtgRsp

  36. ZPS_tsAplZdpMgmtBindRsp

  37. ZPS_tsAplZdpMgmtLeaveRsp

  38. ZPS_tsAplZdpMgmtDirectJoinRsp

  39. ZPS_tsAplZdpMgmtPermitJoiningRsp

  40. ZPS_tsAplZdpMgmtCacheRsp

  41. ZPS_tsAplZdpMgmtNwkUpdateNotify

  42. ZPS_tsAplZdpParentAnnceRsp

ZPS_tsAplZdpNwkAddrRsp

This structure is used to store NWK_addr_rsp message data - a response to a call to the function ZPS_eAplZdpNwkAddrRequest(). This response contains the network address of the node with a given IEEE address.

The ZPS_tsAplZdpNwkAddrRspstructure is detailed below.

typedef struct { uint8 u8Status;
     uint64 u64IeeeAddrRemoteDev;
     uint16 u16NwkAddrRemoteDev;
     uint8 u8NumAssocDev;
     uint8 u8StartIndex;
     /* Rest of the message is variable Length */
     uint16* pNwkAddrAssocDevList;
} ZPS_tsAplZdpNwkAddrRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpNwkAddrRequest()

  • u64IeeeAddrRemoteDevis the IEEE address of the remote node that sent the response (this is the IEEE address specified in the original request)

  • u16NwkAddrRemoteDevis the network address of the remote node that sent the response (this is the network address that was requested)

  • u8NumAssocDevis the number of neighboring nodes for which network addresses are also being reported (in the remainder of the structure)

  • u8StartIndexis the index in the remote node’s Neighbor table of the first entry to be included in this report. This element should be ignored if the element u8NumAssocDevis 0.

  • pNwkAddrAssocDevListis a pointer to a list of 16-bit network addresses of the remote node’s neighbors (this is a variable-length list with four bytes per node). This element should be ignored if the element u8NumAssocDevis 0.

Parent topic:ZDP response structures

ZPS_tsAplZdpIeeeAddrRsp

This structure is used to store IEEE_addr_rsp message data - a response to a call to the function ZPS_eAplZdpIeeeAddrRequest(). This response contains the IEEE address of the node with a given network address.

The ZPS_tsAplZdpIeeeAddrRspstructure is detailed below.

typedef struct
    { uint8 u8Status;
     uint64 u64IeeeAddrRemoteDev;
     uint16 u16NwkAddrRemoteDev;
     uint8 u8NumAssocDev;
     uint8 u8StartIndex;
    /* Rest of the message is variable Length */
     uint16* pNwkAddrAssocDevList;
} ZPS_tsAplZdpIeeeAddrRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpIeeeAddrRequest().

  • u64IeeeAddrRemoteDevis the IEEE address of the remote node that sent the response (this is the IEEE address that was requested).

  • u16NwkAddrRemoteDevis the network address of the remote node that sent the response (this is the network address specified in the original request).

  • u8NumAssocDevis the number of neighboring nodes for which network addresses are also being reported (in the remainder of the structure).

  • u8StartIndexis the index in the remote node’s Neighbor table of the first entry to be included in this report. This element should be ignored if the element u8NumAssocDevis 0.

  • pNwkAddrAssocDevListis a pointer to a list of 16-bit network addresses of the remote node’s neighbors (this is a variable-length list with four bytes per node). This element should be ignored if the element u8NumAssocDevis 0.

Parent topic:ZDP response structures

ZPS_tsAplZdpNodeDescRsp

This structure is used to store Node_Desc_rsp message data - a response to a call to the function ZPS_eAplZdpNodeDescRequest(). This response contains the Node descriptor of the node with a given network address.

The ZPS_tsAplZdpNodeDescRspstructure is detailed below.

typedef struct {
    uint8     u8Status;
    uint16    u16NwkAddrOfInterest;
    /* Rest of the message is variable length */
    ZPS_tsAplZdpNodeDescriptor tsNodeDescriptor;
} ZPS_tsAplZdpNodeDescRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpNodeDescRequest().

  • u16NwkAddrOfInterestis the network address of the remote node that sent the response (this is the network address that was specified in the request).

  • tsNodeDescriptoris the returned Node descriptor, a structure of type ZPS_tsAplZdpNodeDescriptor(detailed in Section 9.2.1.1). This is only included if u8Statusreports success.

Parent topic:ZDP response structures

ZPS_tsAplZdpPowerDescRsp

This structure is used to store Power_Desc_rsp message data - a response to a call to the function ZPS_eAplZdpPowerDescRequest(). This response contains the Power descriptor of the node with a given network address.

The ZPS_tsAplZdpPowerDescRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16NwkAddrOfInterest;
    /* Rest of the message is variable length */
    ZPS_tsAplZdpNodePowerDescriptor sPowerDescriptor;
} ZPS_tsAplZdpPowerDescRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpPowerDescRequest()

  • u16NwkAddrOfInterestis the network address of the remote node that sent the response (this is the network address that was specified in the request)

  • sPowerDescriptoris the returned Power descriptor, a structure of type ZPS_tsAplZdpNodePowerDescriptor(detailed in Section 9.2.1.2). This is only included if u8Statusreports success

Parent topic:ZDP response structures

ZPS_tsAplZdpSimpleDescRsp

This structure is used to store Simple_Desc_rsp message data - a response to a call to the function ZPS_eAplZdpSimpleDescRequest(). This response contains the Simple descriptor of a given endpoint on the node with a given network address.

The ZPS_tsAplZdpSimpleDescRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16NwkAddrOfInterest;
    uint8 u8Length;
    /* Rest of the message is variable length */
    ZPS_tsAplZdpSimpleDescType sSimpleDescriptor;
} ZPS_tsAplZdpSimpleDescRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpSimpleDescRequest().

  • u16NwkAddrOfInterestis the network address of the remote node that sent the response (this is the network address that was specified in the request).

  • u8Lengthis the length of the returned Simple descriptor, in bytes (depends on the number of clusters supported by the endpoint).

  • sSimpleDescriptoris the returned Simple descriptor, a structure of type ZPS_tsAplZdpSimpleDescType(detailed in Section 9.2.1.3). This is only included if u8Statusreports success.

Parent topic:ZDP response structures

ZPS_tsAplZdpExtendedSimpleDescRsp

This structure is used to store Extended_Simple_Desc_rsp message data - a response to a call to the function ZPS_eAplZdpExtendedSimpleDescRequest(). This response contains a cluster list (combined input and output) for a given endpoint on the node with a given network address.

The ZPS_tsAplZdpExtendedSimpleDescRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16NwkAddr;
    uint8 u8EndPoint;
    uint8 u8AppInputClusterCount;
    uint8 u8AppOutputClusterCount;
    uint8 u8StartIndex;
    /* Rest of the message is variable length */
    uint16* pAppClusterList;
} ZPS_tsAplZdpExtendedSimpleDescRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpExtendedSimpleDescRequest()

  • u16NwkAddris the network address of the remote node that sent the response (this is the network address that was specified in the request)

  • u8EndPointis the number of the endpoint for which the response was sent (this is the endpoint number that was specified in the request)

  • u8AppInputClusterCountis the total number of input clusters in the endpoint’s complete input cluster list

  • u8AppOutputClusterCountis the total number of output clusters in the endpoint’s complete output cluster list

  • u8StartIndexis the index, in the endpoint’s complete input or output cluster list, of the first cluster reported in this response

  • pAppClusterListis a pointer to the reported cluster list, input clusters first then output clusters. This is only included if u8Statusreports success

Parent topic:ZDP response structures

ZPS_tsAplZdpComplexDescRsp

This structure is used to store Complex_Desc_rsp message data - a response to a call to the function ZPS_eAplZdpComplexDescRequest(). This response contains the Complex descriptor of the node with a given network address.

The ZPS_tsAplZdpComplexDescRspstructure is detailed below.

typedef struct {
        uint8 u8Status;
        uint16 u16NwkAddrOfInterest;
        uint8 u8Length;
        /* Rest of the message is variable Length */
        ZPS_tsAplZdpComplexDescElement sComplexDescriptor;
} ZPS_tsAplZdpComplexDescRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpComplexDescRequest().

  • u16NwkAddrOfInterestis the network address of the remote node that sent the response (this is the network address that was specified in the request).

  • u8Lengthis the length of the returned Complex descriptor, in bytes.

  • sComplexDescriptoris the returned Complex descriptor, a structure of type. ZPS_tsAplZdpComplexDescRsp(described below). This is only included if u8Statusreports success .

ZPS_tsAplZdpComplexDescElement
typedef struct { uint8 u8XMLTag;
        uint8 u8FieldCount;
        uint8 *pu8Data;
} ZPS_tsAplZdpComplexDescElement;

where:

  • u8XMLTagis the XML tag for the current field.

  • u8FieldCountis the number of fields in the Complex descriptor.

  • *pu8Datais a pointer to the data of the current field.

Parent topic:ZPS_tsAplZdpComplexDescRsp

Parent topic:ZDP response structures

ZPS_tsAplZdpUserDescRsp

This structure is used to store User_Desc_rsp message data - a response to a call to the function ZPS_eAplZdpUserDescRequest(). This response contains the User descriptor of the node with a given network address.

The ZPS_tsAplZdpUserDescRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16NwkAddrOfInterest;
    uint8 u8Length;
    /* Rest of the message is variable Length */
    char szUserDescriptor[ZPS_ZDP_LENGTH_OF_USER_DESC];
} ZPS_tsAplZdpUserDescRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpUserDescRequest().

  • u16NwkAddrOfInterestis the network address of the remote node that sent the response (this is the network address that was specified in the request).

  • u8Lengthis the length of the returned User descriptor, in bytes (maximum: 16).

  • szUserDescriptoris the returned User descriptor as a character array. This is only included if u8Statusreports success.

Parent topic:ZDP response structures

ZPS_tsAplZdpMatchDescRsp

This structure is used to store Match_Desc_rsp message data - a response to a call to the function ZPS_eAplZdpMatchDescRequest(). This response contains details of the endpoints on the remote node that matched the criteria specified in the original request.

The ZPS_tsAplZdpMatchDescRspstructure is detailed below.

typedef struct {
        uint8 u8Status;
        uint16 u16NwkAddrOfInterest;
        uint8 u8MatchLength;
        /* Rest of message is variable length */
        uint8* u8MatchList;
} ZPS_tsAplZdpMatchDescRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpMatchDescRequest().

  • u16NwkAddrOfInterestis the network address of the remote node that sent the response (this is the network address that was specified in the request).

  • u8MatchLengthis the length of the list of matched endpoints, in bytes.

  • u8MatchListis a pointer to the list of matched endpoints, where each endpoint is represented by an 8-bit value (in the range 1-240).

Parent topic:ZDP response structures

ZPS_tsAplZdpActiveEpRsp

This structure is used to store Active_EP_rsp message data - a response to a call to the function ZPS_eAplZdpActiveEpRequest(). This response contains a list of the active endpoints on a given network node.

The ZPS_tsAplZdpActiveEpRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16NwkAddrOfInterest;
    uint8 u8ActiveEpCount;
    /* Rest of the message is variable */
    uint8* pActiveEpList;
} ZPS_tsAplZdpActiveEpRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpActiveEpRequest().

  • u16NwkAddrOfInterestis the network address of the remote node that sent the response (this is the network address that was specified in the request).

  • u8ActiveEpCountis the number of active endpoints on the node.

  • pActiveEpListis a pointer to the list of active endpoints, where each endpoint is represented by an 8-bit value (in the range 1-240).

Parent topic:ZDP response structures

ZPS_tsAplZdpExtendedActiveEpRsp

This structure is used to store Extended_Active_EP_rsp message data - a response to a call to the function ZPS_eAplZdpExtendedActiveEpRequest(). This response contains a list of the active endpoints on the node with a given network address.

The ZPS_tsAplZdpExtendedActiveEpRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16NwkAddr;
    uint8 u8ActiveEpCount;
    uint8 u8StartIndex;
    /* Rest of the message is variable Length */
    uint8* pActiveEpList;
} ZPS_tsAplZdpExtendedActiveEpRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpExtendedActiveEpRequest().

  • 16NwkAddris the network address of the remote node that sent the response (this is the network address that was specified in the request).

  • u8ActiveEpCountis the total number of active endpoints on the node.

  • u8StartIndexis the index, in the node’s list of active endpoints, of the first endpoint reported in this response.

  • pActiveEpListis a pointer to the reported list of active endpoints (starting with the endpoint with index u8StartIndex).

Parent topic:ZDP response structures

ZPS_tsAplZdpUserDescConf

This structure is used to store User_Desc_conf message data - a response to a call to the function ZPS_eAplZdpUserDescSetRequest(). This response contains a confirmation of the requested configuration of the User descriptor on a given network node.

The ZPS_tsAplZdpUserDescConfstructure is detailed below.

typedef struct {
        uint8 u8Status;
        uint16 u16NwkAddrOfInterest;
} ZPS_tsAplZdpUserDescConf;

where:

  • u8Statusis the return status for ZPS_eAplZdpUserDescSetRequest().

  • u16NwkAddrOfInterestis the network address of the remote node that sent the response (this is the network address that was specified in the request).

Parent topic:ZDP response structures

ZPS_tsAplZdpSystemServerDiscoveryRsp

This structure is used to store System_Server_Discovery_rsp message data - a response to a call to the function ZPS_eAplZdpSystemServerDiscoveryRequest(). This response indicates which of the requested services are supported by a given network node.

The ZPS_tsAplZdpSystemServerDiscoveryRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16ServerMask;
} ZPS_tsAplZdpSystemServerDiscoveryRsp;

where:

  • u8Statusis the return status for the function ZPS_eAplZdpSystemServerDiscoveryRequest().

  • u16ServerMaskis the returned bitmask that summarizes the requested services supported by the node (1 for ‘supported’, 0 for ‘not supported’ or ‘not requested’). This bitmask is detailed in the table below.

Services Bitmask

Bit

Service

0

Primary Trust Centre

1

Backup Trust Centre

2

Primary Binding Table Cache

3

Backup Binding Table Cache

4

Primary Discovery Cache

5

Back-up Discovery Cache

6

Network Manager

7-15

Reserved

Parent topic:ZDP response structures

ZPS_tsAplZdpDiscoveryCacheRsp

This structure is used to store Discovery_Cache_rsp message data - a response to a call to the function ZPS_eAplZdpDiscoveryCacheRequest(). This response indicates that the sending node has a primary discovery cache.

The ZPS_tsAplZdpDiscoveryCacheRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpDiscoveryCacheRsp;

where u8Statusis the return status for ZPS_eAplZdpDiscoveryCacheRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpDiscoveryStoreRsp

This structure is used to store Discovery_Store_rsp message data - a response to a call to the function ZPS_eAplZdpDiscoveryStoreRequest(). This response indicates whether the sending node has successfully reserved space in its primary discovery cache.

The ZPS_tsAplZdpDiscoveryStoreRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpDiscoveryStoreRsp;

where u8Statusis the return status for ZPS_eAplZdpDiscoveryStoreRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpNodeDescStoreRsp

This structure is used to store Node_Desc_store_rsp message data - a response to a call to the function ZPS_eAplZdpNodeDescStoreRequest(). This response indicates whether the sending node has successfully stored the received Node descriptor in its primary discovery cache.

The ZPS_tsAplZdpNodeDescStoreRspstructure is detailed below.

typedef struct {
     uint8 u8Status;
} ZPS_tsAplZdpNodeDescStoreRsp;

where u8Statusis the return status for ZPS_eAplZdpNodeDescStoreRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpPowerDescStoreRsp

This structure is used to store Power_Desc_store_rsp message data - a response to a call to the function ZPS_eAplZdpPowerDescStoreRequest(). This response indicates whether the sending node has successfully stored the received Power descriptor in its primary discovery cache.

The ZPS_tsAplZdpPowerDescStoreRspstructure is detailed below.

typedef struct {
        uint8 u8Status;
        uint64 u64IeeeAddr;
        /* Rest of message is variable length */
        ZPS_tsAplZdpNodePowerDescriptor sPowerDescriptor;
} ZPS_tsAplZdpPowerDescStoreRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpPowerDescStoreRequest().

  • u64IeeeAddris the IEEE/MAC address of the device whose Power descriptor has been stored in the primary discovery cache.

  • sPowerDescriptoris the Power descriptor stored (see Section 9.2.1.1).

Parent topic:ZDP response structures

ZPS_tsAplZdpSimpleDescStoreRsp

This structure is used to store Power_Desc_store_rsp message data - a response to a call to the function ZPS_eAplZdpSimpleDescStoreRequest(). This response indicates whether the sending node has successfully stored the received Simple descriptor in its primary discovery cache.

The ZPS_tsAplZdpSimpleDescStoreRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpSimpleDescStoreRsp;

where u8Statusis the return status for ZPS_eAplZdpSimpleDescStoreRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpActiveEpStoreRsp

This structure is used to store Active_EP_store_rsp message data - a response to a call to the function ZPS_eAplZdpActiveEpStoreRequest(). This response indicates whether the sending node has successfully stored the received list of active endpoints in its primary discovery cache.

The ZPS_tsAplZdpActiveEpStoreRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpActiveEpStoreRsp;

where u8Statusis the return status for ZPS_eAplZdpActiveEpStoreRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpFindNodeCacheRsp

This structure is used to store Find_node_cache_rsp message data - a response to a call to the function ZPS_eAplZdpFindNodeCacheRequest(). This response indicates that the sending node holds ‘discovery information’ about a given network node in its primary discovery cache.

The ZPS_tsAplZdpFindNodeCacheRspstructure is detailed below.

typedef struct {
    uint16 u16CacheNwkAddr;
    uint16 u16NwkAddr;
    uint64 u64IeeeAddr;
} ZPS_tsAplZdpFindNodeCacheRsp;

where:

  • u16CacheNwkAddris the network address of the remote node that sent the response.

  • u16NwkAddris the network address of the node of interest (this is the network address that was specified in the request).

  • u64IeeeAddris the IEEE address of the node of interest (this is the IEEE address that was specified in the request).

Parent topic:ZDP response structures

ZPS_tsAplZdpRemoveNodeCacheRsp

This structure is used to store Remove_node_cache_rsp message data - a response to a call to the function ZPS_eAplZdpRemoveNodeCacheRequest(). This response indicates whether the sending node has successfully removed from its primary discovery cache all ‘discovery information’ relating to a given End Device node.

The ZPS_tsAplZdpRemoveNodeCacheRspstructure is detailed below.

typedef struct {
     uint8 u8Status;
} ZPS_tsAplZdpRemoveNodeCacheRsp;

where u8Statusis the return status for the function ZPS_eAplZdpRemoveNodeCacheRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpEndDeviceBindRsp

This structure is used to store End_Device_Bind_rsp message data - a response to a call to the function ZPS_eAplZdpEndDeviceBindRequest(). This response is issued by the Coordinator to indicate the status of an End Device binding request.

The ZPS_tsAplZdpEndDeviceBindRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpEndDeviceBindRsp;

where u8Statusis the return status for ZPS_eAplZdpEndDeviceBindRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpBindRsp

This structure is used to store Bind_rsp message data - a response to a call to the function ZPS_eAplZdpBindUnbindRequest(). This response indicates the status of a binding request (a request to modify of a binding table).

The ZPS_tsAplZdpBindRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpBindRsp;

where u8Statusis the return status for ZPS_eAplZdpBindUnbindRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpUnbindRsp

This structure is used to store Unbind_rsp message data - a response to a call to the function ZPS_eAplZdpBindUnbindRequest(). This response indicates the status of an unbinding request (a request to modify of a binding table).

The ZPS_tsAplZdpUnbindRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpUnbindRsp;

where u8Statusis the return status for ZPS_eAplZdpBindUnbindRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpBindRegisterRsp

This structure is used to store Bind_Register_rsp message data - a response to a call to the function ZPS_eAplZdpBindRegisterRequest(). This response contains binding information held on the responding node concerning the requesting node.

The ZPS_tsAplZdpBindRegisterRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16BindingTableEntries;
    uint16 u16BindingTableListCount;
    /* Rest of the message is variable Length */
    ZPS_tsAplZdpBindingTable sBindingTableList;
} ZPS_tsAplZdpBindRegisterRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpBindRegisterRequest().

  • u16BindingTableEntriesis the total number of binding table entries concerning the requesting node held on the responding node.

  • u16BindingTableListCountis the number of binding table entries concerning the requesting node contained in this response.

  • sBindingTableListis a pointer to the first item in the list of reported binding table entries. A list item is of type ZPS_tsAplZdpBindingTabledetailed below.

ZPS_tsAplZdpBindingTable
typedef struct
{
uint64 u64SourceAddress;
ZPS_tsAplZdpBindingTableEntry* psBindingTableEntryForSpSrcAddr;
}ZPS_tsAplZdpBindingTable;

where:

  • u64SourceAddressis the IEEE address of the node to which the binding table entry relates.

  • psBindingTableEntryForSpSrcAddris a pointer to the relevant binding table information. This information is contained in a structure of type ZPS_tsAplZdpBindingTableEntrydetailed below.

Parent topic:ZPS_tsAplZdpBindRegisterRsp

ZPS_tsAplZdpBindingTableEntry
typedef struct
{
    uint8 u8SourceEndpoint;
    uint16 u16ClusterId;
    uint8 u8DstAddrMode;
    union {
        struct {
        uint16 u16DstAddress;
        } sShort;
        struct {
        uint64 u64DstAddress;
        uint8 u8DstEndPoint;
        } sExtended;
    };
}ZPS_tsAplZdpBindingTableEntry;

where:

  • u8SourceEndpointis the number of the bound endpoint (1-240) on the source node of the binding

  • u16ClusterIdis the ID of the cluster involved in the binding, on the source node of the binding

  • u8DstAddrModeis the addressing mode used in the rest of the structure (see Table 19 below)

  • u16DstAddressis the network address of the destination node of the binding (this is only application if u8DstAddrModeis set to 0x03)

  • u64DstAddressis the IEEE address of the destination node of the binding (this is only application if u8DstAddrModeis set to 0x04)

  • u8DstEndPointis the number of the bound endpoint (1-240) on the destination node of the binding

Addressing modes

u8DstAddrMode

Code

Description

0x00

ZPS_E_ADDR_MODE_BOUND

Bound endpoint

0x01

ZPS_E_ADDR_MODE_GROUP

16-bit Group address

0x02

ZPS_E_ADDR_MODE_SHORT

16-bit Network (Short) address

0x03

ZPS_E_ADDR_MODE_IEEE

64-bit IEEE/MAC address

Parent topic:ZPS_tsAplZdpBindRegisterRsp

Parent topic:ZDP response structures

ZPS_tsAplZdpReplaceDeviceRsp

This structure is used to store Replace_Device_rsp message data - a response to a call to the function ZPS_eAplZdpReplaceDeviceRequest(). This response indicates the status of the replace request.

The ZPS_tsAplZdpReplaceDeviceRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpReplaceDeviceRsp;

where u8Statusis the return status for ZPS_eAplZdpReplaceDeviceRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpStoreBkupBindEntryRsp

This structure is used to store Store_Bkup_Bind_Entry_rsp message data - a response to a call to the function ZPS_eAplZdpStoreBkupBindEntryRequest(). This response indicates the status of the back-up request.

The ZPS_tsAplZdpStoreBkupBindEntryRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpStoreBkupBindEntryRsp;

where u8Statusis the return status for the function ZPS_eAplZdpStoreBkupBindEntryRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpRemoveBkupBindEntryRsp

This structure is used to store Remove_Bkup_Bind_Entry_rsp message data - a response to a call to the function ZPS_eAplZdpRemoveBkupBindEntryRequest(). This response indicates the status of the remove request.

The ZPS_tsAplZdpRemoveBkupBindEntryRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpRemoveBkupBindEntryRsp;

where u8Statusis the return status for the function ZPS_eAplZdpRemoveBkupBindEntryRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpBackupBindTableRsp

This structure is used to store Backup_Bind_Table_rsp message data - a response to a call to the function ZPS_eAplZdpBackupBindTableRequest(). This response indicates the status of the back-up request.

The ZPS_tsAplZdpBackupBindTableRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16EntryCount;
} ZPS_tsAplZdpBackupBindTableRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpBackupBindTableRequest()

  • u16EntryCountis the number of binding table entries that have been backed up

Parent topic:ZDP response structures

ZPS_tsAplZdpRecoverBindTableRsp

This structure is used to store Recover_Bind_Table_rsp message data - a response to a call to the function ZPS_eAplZdpRecoverBindTableRequest(). This response indicates the status of the recover request and contains the recovered binding table entries.

The ZPS_tsAplZdpRecoverBindTableRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16StartIndex;
    uint16 u16BindingTableEntries;
    uint16 u16BindingTableListCount;
    /* Rest of the message is variable length */
    ZPS_tsAplZdpBindingTable sBindingTableList;
} ZPS_tsAplZdpRecoverBindTableRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpRecoverBindTableRequest()

  • u16StartIndexis the binding table index of the first entry in the set of recovered binding table entries (sBindingTableList)

  • u16BindingTableEntriesis the total number of entries in the back-up binding table cache

  • u16BindingTableListCountis the number of entries in the set of recovered binding table entries (sBindingTableList)

  • sBindingTableListis a pointer to the first item in the list of recovered binding table entries. A list item is of type ZPS_tsAplZdpBindingTable, detailed in Section 8.2.3.26.

Parent topic:ZDP response structures

ZPS_tsAplZdpBackupSourceBindRsp

This structure is used to store Backup_Source_Bind_rsp message data - a response to a call to the function ZPS_eAplZdpBackupSourceBindRequest(). This response indicates the status of the back-up request.

The ZPS_tsAplZdpBackupSourceBindRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpBackupSourceBindRsp;

where u8Statusis the return status for the function ZPS_eAplZdpBackupSourceBindRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpRecoverSourceBindRsp

This structure is used to store Recover_Source_Bind_rsp message data - a response to a call to the function ZPS_eAplZdpRecoverSourceBindRequest(). This response indicates the status of the recover request and contains the recovered binding table entries.

The ZPS_tsAplZdpRecoverSourceBindRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16StartIndex;
    uint16 u16SourceTableEntries;
    uint16 u16SourceTableListCount;
    /* Rest of the message is variable length */
    uint64* pu64SourceTableList;
} ZPS_tsAplZdpRecoverSourceBindRsp;

where:

  • u8Statusis the return status for the function ZPS_eAplZdpRecoverSourceBindRequest().

  • u16StartIndexis the binding table index of the first entry in the set of recovered binding table entries (pu64SourceTableList).

  • u16SourceTableEntriesis the total number of source binding table entries in the back-up binding table cache.

  • u16SourceTableListCountis the number of entries in the set of recovered binding table entries. (pu64SourceTableList).

  • pu64SourceTableListis a pointer to the first item in the list of recovered binding table entries.

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtNwkDiscRsp

This structure is used to store Mgmt_NWK_Disc_rsp message data - a response to a call to the function ZPS_eAplZdpMgmtNwkDiscRequest(). This response reports the networks discovered in a network discovery (all the networks or a subset).

The ZPS_tsAplZdpMgmtNwkDiscRspstructure is detailed below.

typedef struct {
  uint8 u8Status;
  uint8 u8NetworkCount;
  uint8 u8StartIndex;
  uint8 u8NetworkListCount;
  /* Rest of the message is variable length */
  ZPS_tsAplZdpNetworkDescr* psNetworkDescrList;
} ZPS_tsAplZdpMgmtNwkDiscRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpMgmtNwkDiscRequest()

  • u8NetworkCountis the total number of networks discovered

  • u8StartIndexis the index, in the complete list of discovered networks, of the first network reported in this response (through psNetworkDescrList)

  • u8NetworkListCountis the number of discovered networks reported in this response (through psNetworkDescrList)

  • psNetworkDescrListis a pointer to the first entry in a list of network descriptors for the discovered networks. Each entry is of the type ZPS_tsAplZdpNetworkDescrdetailed below.

    ZPS_tsAplZdpNetworkDescr

    
    typedef struct
    {
        uint64 u64ExtPanId;
        uint8 u8LogicalChan;
        uint8 u8StackProfile;
        uint8 u8ZigBeeVersion;
        uint8 u8PermitJoining;
        uint8 u8RouterCapacity;
        uint8 u8EndDeviceCapacity;
    } ZPS_tsAplZdpNetworkDescr;
    

    where:

    • u64ExtPanIdis the 64-bit extended PAN ID of the discovered network.

    • u8LogicalChanis the radio channel in which the discovered network operates (value in range 0 to 26, but only channels 11 to 26 relevant to 2400-MHz band).

    • u8StackProfileis the 4-bit identifier of the ZigBee stack profile used by the discovered network (0 - manufacturer-specific, 1 - ZigBee, 2 - ZigBee PRO, other values reserved) and is fixed at 2 for the NXP stack.

    • u8ZigBeeVersionis the 4-bit version of the ZigBee protocol used by the discovered network.

    • u8PermitJoiningindicates whether the discovered network is currently allowing joinings - that is, at least one node (a Router or the Coordinator) of the network is allowing other nodes to join it:

      • 0x01: Joinings allowed.

      • 0x00: Joinings not allowed.

      • All other values reserved.

    • u8RouterCapacityindicates whether the device is capable of accepting join requests from Routers - set to TRUE if capable, FALSE otherwise.

    • u8EndDeviceCapacityindicates whether the device is capable of accepting join requests from End Devices - set to TRUE capable, FALSE otherwise.

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtLqiRsp

This structure is used to store Mgmt_Lqi_rsp message data - a response to a call to the function ZPS_eAplZdpMgmtLqiRequest(). This response reports a list of neighboring nodes along with their LQI (link quality) values.

The ZPS_tsAplZdpMgmtLqiRspstructure is detailed below.

typedef struct {
  uint8 u8Status;
  uint8 u8NeighborTableEntries;
  uint8 u8StartIndex;
  uint8 u8NeighborTableListCount;
  /* Rest of the message is variable length */
  ZPS_tsAplZdpNtListEntry* pNetworkTableList;
} ZPS_tsAplZdpMgmtLqiRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpMgmtLqiRequest()

  • u8NeighborTableEntriesis the total number of Neighbor table entries on the remote node

  • u8StartIndexis the Neighbor table index of the first entry reported in this response (through pNetworkTableList)

  • u8NetworkListCountis the number of Neighbor table entries reported in this response (through pNetworkTableList)

  • pNetworkTableListis a pointer to the first entry in the list of reported Neighbor table entries. Each entry is of the type ZPS_tsAplZdpNtListEntrydetailed below.

    ZPS_tsAplZdpNtListEntry

    typedef struct
    {
        uint64 u64ExtPanId;
        uint64 u64ExtendedAddress;
        uint16 u16NwkAddr;
        uint8 u8LinkQuality;
        uint8 u8Depth;
        /*
        * Bitfields are used for syntactic neatness and space saving.
        * May need to assess whether these are suitable for embedded
        environment and may need to watch endianness on u8Assignment
        */
      union
        {
          struct
          {
            unsigned u1Reserved1:1;
            unsigned u2Relationship:3;
            unsigned u2RxOnWhenIdle:2;
            unsigned u2DeviceType:2;
            unsigned u6Reserved2:6;
            unsigned u2PermitJoining:2;
          } ;
          uint8 au8Field[2];
      } uAncAttrs;
    } ZPS_tsAplZdpNtListEntry;
    

    where:

    • u64ExtPanIdis the 64-bit extended PAN ID of the network .

    • u64ExtendedAddressis the IEEE address of the neighboring node.

    • u16NwkAddris the network address of the neighboring node.

    • u8LinkQualityis the estimated LQI (link quality) value for radio transmissions from the neighboring node.

    • u8Depthis the tree depth of the neighboring node (where the Coordinator is at depth zero).

    • u1Reserved1:1is a 1-bit reserved value and should be set zero.

    • u2Relationship:3is a 3-bit value representing the neighboring node’s relationship to the local node:

      • 0: Neighbor is the parent.

      • 1: Neighbor is a child.

      • 2: Neighbor is a sibling (has same parent).

      • 3: None of the above.

      • 4: Neighbor is a former child.

    • u2RxOnWhenIdle:2is a 2-bit value indicating whether the neighboring node’s receiver is enable during idle periods:

      • 0: Receiver off when idle (sleeping device)

      • 1: Receiver on when idle (non-sleeping device)

      • 2: Unknown

    • u2DeviceType:2is a 2-bit value representing the ZigBee device type of the neighboring node:

      • 0: Coordinator

      • 1: Router

      • 2: End Device

      • 3: Unknown

    • u6Reserved2:6is a 6-bit reserved value and should be set zero.

    • u2PermitJoining:2is a 2-bit value indicating whether the neighboring node is accepting joining requests:

      • 0: Not accepting join requests

      • 1: Accepting join requests

      • 2: Unknown

    • au8Field[2]is the allocation of two bytes for the union.

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtRtgRsp

This structure is used to store Mgmt_Rtg_rsp message data - a response to a call to the function ZPS_eAplZdpMgmtRtgRequest(). This response reports the contents of the remote node’s Routing table

The ZPS_tsAplZdpMgmtRtgRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint8 u8RoutingTableEntries;
    uint8 u8StartIndex;
    uint8 u8RoutingTableCount;
    /* Rest of the message is variable length */
    ZPS_tsAplZdpRtEntry* pRoutingTableList;
} ZPS_tsAplZdpMgmtRtgRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpMgmtRtgRequest()

  • u8RoutingTableEntriesis the total number of Routing table entries on the remote node

  • u8StartIndexis the Routing table index of the first entry reported in this response (through pRoutingTableList)

  • u8RoutingTableCountis the number of Routing table entries reported in this response (through pRoutingTableList)

  • pRoutingTableListis a pointer to the first entry in the list of reported Routing table entries. Each entry is of the type ZPS_tsAplZdpRtEntrydetailed below

    
    typedef struct
    {
        uint16 u16NwkDstAddr; /**< Destination Network address */
        uint16 u16NwkNxtHopAddr; /**< Next hop Network address */
      union
        {
        struct
           {
            unsigned u3Status:3;
            unsigned u1MemConst:1;
            unsigned u1ManyToOne:1;
            unsigned u1RouteRecordReqd:1;
            unsigned u1Reserved:2;
            } bfBitfields;
            uint8 u8Field;
      } uAncAttrs;
    } ZPS_tsAplZdpRtEntry;
    

    where:

    • u16NwkDstAddris the destination network address of the route.

    • u16NwkNxtHopAddris the ‘next hop’ network address of the route.

    • u3Status:3is the 3-bit status for the route:

      • 000 = ACTIVE

      • 001 = DISCOVERY_UNDERWAY

      • 010 = DISCOVERY_FAILED

      • 011 = INACTIVE

      • 100 = VALIDATION_UNDERWAY

      • 101-111 = Reserved.

    • u1MemConst:1is a bit indicating whether the device is a memory-constrained concentrator.

    • u1ManyToOne:1is a bit indicating whether the destination node is a concentrator that issued a many-to-one request.

    • u1RouteRecordReqd:1is a bit indicating whether a route record command frame. should be sent to the destination before the next data packet.

    • u1Reserved:2are reserved bits.

    • u8Fieldcontains the full set of flags of the bfBitfieldssub-structure, with u3Status:3occupying the most significant bits and u1Reserved:2occupying the least significant bits (for a big-endian device).

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtBindRsp

This structure is used to store Mgmt_Bind_rsp message data - a response to a call to the function ZPS_eAplZdpMgmtBindRequest(). This response reports the contents of the remote node’s Binding table.

The ZPS_tsAplZdpMgmtBindRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint16 u16BindingTableEntries;
    uint16 u16StartIndex;
    uint16 u16BindingTableListCount;
    /* Rest of the message is variable length */
    ZPS_tsAplZdpBindingTable sBindingTableList;
} ZPS_tsAplZdpMgmtBindRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpMgmtBindRequest()

  • u16BindingTableEntriesis the total number of Binding table entries on the remote node

  • u8StartIndexis the Binding table index of the first entry reported in this response (through sBindingTableList)

  • u16BindingTableListCountis the number of Binding table entries reported in this response (through sBindingTableList)

  • sBindingTableListis a pointer to the first entry in the list of reported Binding table entries. Each entry is of the type ZPS_tsAplZdpBindingTable, detailed in Section 9.2.2.29

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtLeaveRsp

This structure is used to store Mgmt_Leave_rsp message data - a response to a call to the function ZPS_eAplZdpMgmtLeaveRequest(). This response is issued by a remote node that has been requested to leave the network.

The ZPS_tsAplZdpMgmtLeaveRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
} ZPS_tsAplZdpMgmtLeaveRsp;

where u8Statusis the return status for ZPS_eAplZdpMgmtLeaveRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtDirectJoinRsp

This structure is used to store Mgmt_Direct_Join_rsp message data - a response to a call to the function ZPS_eAplZdpMgmtDirectJoinRequest(). This response is issued by a remote node (Router or Coordinator) that has been requested to allow a particular device to join the network as a child of the node.

The ZPS_tsAplZdpMgmtDirectJoinRspstructure is detailed below.

typedef struct {
        uint8 u8Status;
} ZPS_tsAplZdpMgmtDirectJoinRsp;

where u8Statusis the return status for ZPS_eAplZdpMgmtDirectJoinRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtPermitJoiningRsp

This structure is used to store Mgmt_Permit_Joining_rsp message data - a response to a call to the function ZPS_eAplZdpMgmtPermitJoiningRequest(). This response is issued by a remote node (Router or Coordinator) that has been requested to enable or disable joining for a specified amount of time. The response is only sent if the original request was unicast (and not if it was broadcast).

The ZPS_tsAplZdpMgmtPermitJoiningRspstructure is detailed below.

typedef struct {
     uint8 u8Status;
} ZPS_tsAplZdpMgmtPermitJoiningRsp;

where u8Statusis the return status for the function ZPS_eAplZdpMgmtPermitJoiningRequest().

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtCacheRsp

This structure is used to store Mgmt_Cache_rsp message data - a response to a call to the function ZPS_eAplZdpMgmtCacheRequest(). This response reports a list of the End Devices registered in the node’s primary discovery cache.

The ZPS_tsAplZdpMgmtCacheRspstructure is detailed below.

typedef struct {
    uint8 u8Status;
    uint8 u8DiscoveryCacheEntries;
    uint8 u8StartIndex;
    uint8 u8DiscoveryCacheListCount;
   /* Rest of the message is variable length */
   ZPS_tsAplDiscoveryCache* pDiscoveryCacheList;
} ZPS_tsAplZdpMgmtCacheRsp;

where:

  • u8Statusis the return status for ZPS_eAplZdpMgmtCacheRequest()

  • u8DiscoveryCacheEntriesis the total number of discovery cache entries on the remote node.

  • u8StartIndexis the discovery cache index of the first entry reported in this response (through pDiscoveryCacheList).

  • u8DiscoveryCacheListCountis the number of discovery cache entries reported in this response (through pDiscoveryCacheList).

  • pRoutingTableListis a pointer to the first entry in the list of reported discovery cache entries. Each entry is of the type ZPS_tsAplDiscoveryCachedetailed below.

ZPS_tsAplDiscoveryCache
typedef struct {
      uint64 u64ExtendedAddress;
      uint16 u16NwkAddress;
} ZPS_tsAplDiscoveryCache;

where:

  • u64ExtendedAddressis the IEEE address of the End Device.

  • u16NwkAddressis the network address of the End Device.

Parent topic:ZPS_tsAplZdpMgmtCacheRsp

Parent topic:ZDP response structures

ZPS_tsAplZdpMgmtNwkUpdateNotify

This structure is used to store Mgmt_NWK_Update_notify message data - a notification which can be sent in response to a call to the function ZPS_eAplZdpMgmtNwkUpdateRequest(). This notification reports the results of an energy scan on the wireless network radio channels.

The ZPS_tsAplZdpMgmtNwkUpdateNotifystructure is detailed below.

Sample Codeblock:

typedef struct {
     uint8 u8Status;
     uint32 u32ScannedChannels;
     uint16 u16TotalTransmissions;
    uint16 u16TransmissionFailures;
    uint8 u8ScannedChannelListCount;
    /* Rest of the message is variable Length */
    uint8* u8EnergyValuesList;
} ZPS_tsAplZdpMgmtNwkUpdateNotify;

where:

  • u8Statusis the return status for ZPS_eAplZdpMgmtNwkUpdateRequest()

  • u32ScannedChannelsis a bitmask of the set of scanned radio channels (‘1’ means scanned, ‘0’ means not scanned):

    • Bits 0 to 26 respectively represent channels 0 to 26 (only bits 11 to 26 are relevant to the 2400-MHz band)

    • Bits 27 to 31 are reserved

  • u16TotalTransmissionsis the total number of transmissions (from other networks) detected during the scan

  • u16TransmissionFailuresis the number of failed transmissions detected during the scan

  • u8ScannedChannelListCountis the number of energy-level measurements (one per scanned channel) reported in this notification (through u8EnergyValuesList)

  • u8EnergyValuesListis a pointer to the first in the set of reported energy-level measurements (the value 0xFF indicates there is too much interference on the channel)

Parent topic:ZDP response structures

ZPS_tsAplZdpParentAnnceRsp

This structure is used to store the data for a response to a Parent Announcement message that was sent using the function ZPS_eAplZdpParentAnnceReq(). This response reports any child nodes of the responding node that conflict with child nodes specified in the received Parent Announcement message.

The ZPS_tsAplZdpParentAnnceRspstructure is detailed below.

typedef struct {
   uint64* pu64ChildList;
   uint8 u8NumberOfChildren;
   uint8 u8Status;
} ZPS_tsAplZdpParentAnnceRsp;

where:

  • pu64ChildListis a pointer to a list of 64-bit IEEE/MAC addresses of the child nodes in common.

  • u8NumberOfChildrenis the number of child nodes in common.

  • u8Statusis the status of the response.

Parent topic:ZDP response structures

Parent topic:ZDP structures

Parent topic:ZigBee Device Profile (ZDP) API

Broadcast addresses

When sending a request using a ZDP API function, the request can be broadcast to all nodes in the network by specifying a special 16-bit network address (0xFFFF) or 64-bit IEEE/MAC address (0xFFFFFFFFFFFFFFFF). Other broadcast options are also available in order to target particular groups of nodes, as indicated in the table below.

Address Type

Broadcast Address

Target Nodes

Network (16-bit)

0xFFFF

All nodes in the network

0xFFFD

All nodes for which ‘Rx on when idle’ is TRUE

0xFFFC

All Routers and the Coordinator

IEEE/MAC (64-bit)

0xFFFFFFFFFFFFFFFF

All nodes in the network

Parent topic:ZigBee Device Profile (ZDP) API