Logo
25.06.00
MCUXpresso SDK Project v: latest
Document Release Versions
25.06.00
25.06.00-pvw2
25.06.00-pvw1
25.03.00
25.03.00-pvw2
latest

Introduction

  • MCUXPresso SDK

Getting Started

  • Github Repository
  • Zip Package

User Guide

  • Drivers
  • Examples
  • Middleware
    • Boot
    • Cloud
    • Connectivity
    • eIQ
    • File System
    • Motor Control
    • MultiCore
    • Multimedia
    • Wireless
      • NXP Wireless Framework and Stacks
        • Wi-Fi, Bluetooth, 802.15.4
        • Wireless Zigbee
          • ZigBee Demo Applications User's Guide (UG10194)
          • ZigBee 3.0 Stack User Guide (JN-UG-3130)
          • ZigBee 3.0 Devices User Guide (JN-UG-3131)
          • ZigBee 3.0 Cluster Library (JN-UG-3132)
          • ZigBee NCP Host Coordinator Example
          • ZigBee NCP Host Router Example
          • Zigbee Coordinator and Bluetooth LE Example
          • Zigbee Router and Bluetooth LE Example
        • NXP Bluetooth LE Host and Sample Applications
        • Wireless Framework
        • Wireless IEEE
      • Wi-Fi
      • EdgeFast Bluetooth
    • Sensors
  • RTOS
  • Boards

Development

  • Build And Configuration System
  • Developing with MCUXpresso SDK

Releases

  • Release Notes
mcuxsdk
  • Docs / 25.06.00 »
  • Middleware »
  • Wireless »
  • NXP Wireless Framework and Stacks »
  • Wireless Zigbee »
  • JNUG3132 »
  • Touchlink Commissioning Cluster
  • Open on Repo Report an issue with this page

Touchlink Commissioning Cluster

This chapter describes the Touchlink Commissioning cluster, which can be used when forming a network or adding a new node to an existing network.

The Touchlink Commissioning cluster has a Cluster ID of 0x1000.

Overview

The Touchlink Commissioning cluster is associated with a node as a whole, rather than with individual ZigBee devices on the node. It must be used on nodes that incorporate one or more of the ZigBee devices indicated in Table 83 below, which shows the supported devices when the Touchlink Commissioning cluster acts as a client, server and combined client/server.

Client

Client/Server

Server

Colour Controller

Colour Controller

Colour Controller

Colour Scene Controller

Colour Scene Controller

Colour Scene Controller

Non-Colour Controller

Non-Colour Controller

Non-Colour Controller

Non-Colour Scene Controller

Non-Colour Scene Controller

Non-Colour Scene Controller

Control Bridge

Control Bridge

Control Bridge

On/Off Sensor

On/Off Sensor

On/Off Sensor

On/Off Light

On/Off Light

On/Off Plug-in Unit

On/Off Plug-in Unit

Dimmable Light

Dimmable Light

Dimmable Plug-in Unit

Dimmable Plug-in Unit

Colour Light

Colour Light

Extended Colour Light

Extended Colour Light

Colour Temperature Light

Colour Temperature Light

This cluster supports two sets of functionality, corresponding to two distinct commands sets:

  • Touchlink

  • Commissioning Utility

Functions are provided for implementing both sets of commands. These functions are referenced in Section 44.4 and Section 44.5, and detailed in Section 44.7.

The Commissioning Utility functionality is not required on Lighting devices.

For the compile-time options for enabling the Touchlink Commissioning cluster for Touchlink and the Commissioning Utility, refer to Section 44.10.

Parent topic:Touchlink Commissioning Cluster

Cluster structure and attributes

This cluster has no attributes, as a server or a client. Therefore, the cluster structure tsCLD_ZllCommission is referred to using a null pointer.

Parent topic:Touchlink Commissioning Cluster

Commissioning operations

Commissioning involves forming a network or adding a new node to an existing network. A node from which commissioning can be initiated is referred to as an ‘initiator’ - this may be a remote control unit, but could also be a lamp.

  • An ‘initiator’ node must support the Touchlink Commissioning cluster as a client.

  • A node to be added to the network must support the Touchlink Commissioning cluster as a server (or as both a server and client).

Note that commissioning a new network involves adding at least one node to the new network (as well as the initiator).

Commissioning may involve two stages, depending on the type of node added to the network by the initiator:

  1. The node is added to the network using the Touchlink commands of the Touchlink Commissioning cluster. In practice for the user, this typically involves bringing the initiator node physically close to the target node and pressing a button.

  2. If the initiator node and the new node will both be used to control lights in the network, the new node must learn certain information (such as controlled endpoints and configured groups) from the initiator. This exchange of information uses the Commissioning Utility commands of the Touchlink Commissioning cluster.

Note: **Note:**The Touchlink Commissioning cluster instance for Touchlink must reside on its own endpoint on a node. Therefore, a Touchlink commissioning application must be provided which is distinct from the main application. However, the cluster instance for the Commissioning Utility can reside on the same endpoint as the main application (and be used in this application).

Commissioning using the supplied functions for Touchlink and the Commissioning Utilty is described in Section 44.4 and Section 44.5.

Parent topic:Touchlink Commissioning Cluster

Using Touchlink

Touchlink is used for the basic commissioning of a new network or adding a new node to an existing network. A dedicated Touchlink application (which is distinct from the main application on the node) must reside on its own endpoint. This requires:

  • a Touchlink Commissioning cluster instance as a client to be created on the endpoint on the initiator node.

  • a Touchlink Commissioning cluster instance as a server to be created on the endpoint on the target node.

The initiator node also requires a Touchlink Commissioning cluster instance as a server (on the same endpoint), since the node also needs the capability to join an existing network.

An endpoint is registered for Touchlink (on both nodes) using the function eZLL_RegisterCommissionEndPoint(). This function also creates a Touchlink Commissioning cluster instance of the type (server, client or both) determined by the compile-time options in the header file zcl_options.h (see Section 44.10).

The initiator must then send a sequence of request commands to the target node. The Touchlink request command set is summarized in Table 1. Touchlink functions for issuing these commands are provided and are detailed in Section 44.7.1.

Using Touchlink

Command

Identifier

Description

Scan Request *

0x00

Requests other devices (potential nodes) in the local neighbourhood to respond. A scan request is first performed on channel 11, up to five times until a response is received. If no response is received, a scan request is then performed once on each of channels 15, 20 and 25, and then the remaining channels (12, 13, 14, 16, etc) until a response is detected.

Device Information Request *

0x02

Requests information about the devices on a remote node

Identify Request

0x06

Requests a remote node to physically identify itself (for example, visually by flashing an LED)

Reset To Factory New Request

0x07

Requests a factory reset of a remote node

Network Start Request *

0x10

Requests a new network to be created comprising the initiator and a detected Router

Network Join Router Request *

0x12

Requests a Router to join the network

Network Join End Device Request *

0x14

Requests an End Device to join the network

Network Update Request *

0x16

Requests an update of the network settings on a remote node (if the supplied Network Update Identifier is more recent than the one on the node)

* These commands have corresponding responses.

All Touchlink commands are sent as inter-PAN messages.

Use of the above commands and associated functions is described in the sub-sections below.

Creating a network

A network is formed from an initiator node and a Router node (usually the initiator is an End Device and will have no routing capability in the network). The Touchlink network creation process is described below and is illustrated in the figure below. (also refer to the command list in the table in the Section Using Touchlink).

Note: Received Touchlink requests and responses are handled as ZigBee PRO events. The event handling is not detailed below but is outlined in Section 44.6.

  1. Scan Request: The initiator sends a Scan Request to nodes in its vicinity. The required function is:
    eCLD\_ZllCommissionCommandScanReqCommandSend\(\)

  2. Scan Response: A receiving node replies to the Scan Request by sending a Scan Response, which includes the device type of the responding node (e.g. Router). The required function is: eCLD\_ZllCommissionCommandScanRspCommandSend\(\)

  3. Device Information Request: The initiator sends a Device Information Request to the detected Routers that are of interest. The required function is: eCLD\_ZllCommissionCommandDeviceInfoReqCommandSend\(\)

  4. Device Information Response: A receiving Router replies to the Device Information Request by sending a Device Information Response. The required function is:
    eCLD\_ZllCommissionCommandDeviceInfoRspCommandSend\(\)

  5. Identify Request (Optional): The initiator may send an Identify Request to the node which has been chosen as the first Router of the new network, in order to confirm that the correct physical node is being commissioned. The required function is:

    eCLD\_ZllCommissionCommandDeviceIdentifyReqCommandSend\(\)

  6. Network Start Request: The intiator sends a Network Start Request to the chosen Router in order to create and start the network. The required function is:
    eCLD\_ZllCommissionCommandNetworkStartReqCommandSend\(\)

  7. Network Start Response: The Router replies to the Network Start Request by sending a Network Start Response. The required function is: eCLD\_ZllCommissionCommandNetworkStartRspCommandSend\(\)

Once the Router has started the network, the initiator joins the network (Router). The initiator then collects endpoint and cluster information from the Lighting device(s) on the Router node, and stores this information in a local lighting database.

Once the network (consisting of the initiator and one Router) is up and running, further nodes may be added as described in Section 44.4.2.

Creating a Network |Creating a Network|

Parent topic:Using Touchlink

Adding to an existing network

A network (that has been set up as described in Section 44.4.1) can be extended by adding a node. The Touchlink extension process is described below and illustrated in the figure below (also refer to the command list in Table 1).

Note: Received Touchlink requests and responses are handled as ZigBee PRO events. The event handling is not detailed below but is outlined in Section 44.6.

  1. Scan Request: The initiator sends a Scan Request to nodes in its vicinity. The required function is:

  • eCLD_ZllCommissionCommandScanReqCommandSend()

  1. Scan Response: A receiving node replies to the Scan Request by sending a Scan Response. The required function is:

  • eCLD_ZllCommissionCommandScanRspCommandSend()

  1. Device Information Request: The initiator sends a Device Information Request to those detected nodes that are of interest. The required function is:

  • eCLD_ZllCommissionCommandDeviceInfoReqCommandSend()

  1. Device Information Response: A receiving node replies to the Device Information Request by sending a Device Information Response. The required function is:

  • eCLD_ZllCommissionCommandDeviceInfoRspCommandSend()

  1. Identify Request (Optional): The initiator may send an Identify Request to the node which has been chosen to be added to the network, in order to confirm that the correct physical node is being commissioned. The required function is:

  • eCLD_ZllCommissionCommandDeviceIdentifyReqCommandSend()

  1. Network Join Request: Depending on the target node type, the initiator sends a Network Join Router Request or Network Join End Device Request, as appropriate, to the target node. The required function is one of:

  • eCLD_ZllCommissionCommandNetworkJoinRouterReqCommandSend()

  • eCLD_ZllCommissionCommandNetworkJoinEndDeviceReqCommandSend()

  1. Network Join Response: Depending on the receiving node type, the node replies to the join request by sending a Network Join Router Response or Network Join End Device Response. The required function is one of:

  • eCLD_ZllCommissionCommandNetworkJoinRouterRspCommandSend()

  • eCLD_ZllCommissionCommandNetworkJoinEndDeviceRspCommandSend()

The node should now be a member of the network. The initiator then collects endpoint and cluster information from any Lighting device(s) on the new node, and stores this information in its local lighting database.

If the new node is to be used to control the light nodes of the network then it will need to learn certain information (such as controlled endpoints and configured groups) from the initiator - this is done using the Commissioning Utility commands, as described in Section 44.5.

Extending a Network (Adding a Node)

Extending a Network (Adding a Node)

Parent topic:Using Touchlink

Updating network settings

If one or more of the network settings change (e.g. the radio channel used), all nodes of the network need to be updated with the new settings.

To allow nodes to keep track of the status of the network settings, the Network Update Identifier is used. This identifier takes a value in the range 0x00 to 0xFF and is incremented when a network update has occurred (the value wraps around at 0xFF).

A node can be instructed to update its network settings by sending a Network Update Request to it. The required function is:

eCLD_ZllCommissionCommandNetworkUpdateReqCommandSend()

The payload of the sent command contains the latest network settings and the current value of the Network Update Identifier (see Section 44.8.17). If the payload value is more recent than the value held by the target node, the node should update its network settings with those in the payload.

Parent topic:Using Touchlink

Stealing a node

A node that is already part of a network can be taken or ‘stolen’ by another network using Touchlink (in which case, the stolen node will cease to be a member of its previous network). This transfer can only be performed on a node which supports one or more Lighting devices (and not Controller devices).

The node is stolen using an initiator in the new network, e.g. from a remote control unit. The ‘stealing’ process is as follows:

  1. The initiator sends a Scan Request to nodes in its vicinity. The required function is:

  • eCLD_ZllCommissionCommandScanReqCommandSend()

  1. A receiving node replies to the Scan Request by sending a Scan Response. The required function is:

  • eCLD_ZllCommissionCommandScanRspCommandSend()

  1. The initiator receives Scan Responses from one or more nodes and, based on these responses, selects a node (containing a Lighting device) that is already a member of another network.

  2. The initiator then sends a Reset To Factory New Request to the desired node. The required function is:

  • eCLD_ZllCommissionCommandFactoryResetReqCommandSend()

  1. On receiving this request on the target node, the event E_CLD_COMMISSION_CMD_FACTORY_RESET_REQ is generated and the function ZPS_eAplZdoLeaveNetwork() should be called. In addition, all persistent data should be reset.

  2. The node can then be commissioned into the new network by following the process in Section 44.4.2 from Step3.

Alternatively, instead of following the above process, a node can be stolen by either:

  • Following the full process for creating a network in Section 44.4.1 and calling **ZPS_eAplZdoLeaveNetwork()**on the target node when a Network Start Request is received.

  • Following the full process for adding a node in Section 44.4.2 and calling **ZPS_eAplZdoLeaveNetwork()**on the target node when a Network Join Router Request or Network Join End Device Request is received.

Note: If a node containing a Controller device (e.g. a remote control unit) is to be used in another network, it must first be reset using a Reset To Factory New Request. It can then be used to create a new network (see Section 44.4.1) or to learn the control information of an existing network (see Section 44.5).

Parent topic:Using Touchlink

Parent topic:Touchlink Commissioning Cluster

Using the Commissioning Utility

The Commissioning Utility is used when a network node needs to learn lighting control information (such as controlled endpoints and configured groups) from another node in the network. It is typically used when a new remote control unit is introduced into the network and needs to learn information from an existing remote control unit.

Unlike Touchlink, the Commissioning Utility can be incorporated in the main application on the node (and therefore use the same endpoint). This requires:

  • a Touchlink Commissioning cluster instance as a client to be created on the endpoint on the ‘learner’ node

  • a Touchlink Commissioning cluster instance as a server to be created on the endpoint on the ‘teacher’ node

A Touchlink Commissioning cluster instance for the Commissioning Utility can be created using the function eCLD_ZllUtilityCreateUtility(), on both nodes.

It is the responsibility of the learner node to request the required information from the teacher node. The Commissioning Utility command set is summarised in Table 85. Commissioning Utility functions for issuing these commands are provided and are detailed in Section 44.7.2.

Command

Identifier

Description

Endpoint information

0x40

Sends information about local endpoint (from teacher to learner)

Get Group Identifiers Request

0x41

Requests Group information from a remote node (from learner to teacher)

Get Endpoint List Request

0x42

Requests endpoint information from a remote node (from learner to teacher)

Use of the above commands and associated functions is described below and is illustrated in the figure below.

Note: Received Commissioning Utility requests and responses are handled as ZigBee PRO events by the ZCL (this event handling is therefore transparent to the application).

  1. Endpoint Information command: The teacher node first sends an Endpoint Information command containing basic information about its local endpoint (IEEE address, network address endpoint number, Profile ID, Device ID) to the learner node. The required function is:

  • eCLD_ZllUtilityCommandEndpointInformationCommandSend()

  • Note that the teacher node will already have the relevant target endpoint on the learner node from the joining process (described in Section 44.4).

  1. Get Endpoint List Request: The learner node then sends a Get Endpoint List Request to the teacher node to request information about the remote endpoints that the teacher node controls. The required function is:

  • eCLD_ZllUtilityCommandGetEndpointListReqCommandSend()

  • The teacher node automatically replies to the Get Endpoint List Request by sending a Get Endpoint List Response containing the requested information.

  1. Get Group Identifiers Request: The learner node then sends a Get Group Identifiers Request to the teacher node to request a list of the lighting groups configured on the teacher node. The required function is:

  • eCLD_ZllUtilityCommandGetGroupIdReqCommandSend()

  • The teacher node automatically replies to the Get Group Identifiers Request by sending a Get Group Identifiers Response containing the requested information.

Learning Process

Learning Process

To complete the learning process, the learner node may need other information which can be acquired using commands/functions of the relevant cluster.

Parent topic:Touchlink Commissioning Cluster

Touchlink Commissioning events

Touchlink Commissioning cluster events that result from receiving Touchlink requests and responses must be handled at the application level (while events that result from Commissioning Utility requests and responses are handled by the ZCL).

When a Touchlink request or response command (e.g. a Scan Request) is received by a node, a stack event is generated which is wrapped in a tsZCL_CallBackEvent structure. In this structure:

  • eEventType field is set to E_ZCL_CBET_CLUSTER_CUSTOM

  • sClusterCustomMessage field’s tsZCL_ClusterCustomMessage structure is filled in by:

    • setting u16ClusterId to ZLL_CLUSTER_ID_COMMISSIONING

    • pointing pvCustomData to the payload data of the received command

      • The above structure is described in Section 6.1.15.

The payload data contains a command ID, which uses one of the enumerations listed in Section 44.6.1. The event is passed to the ZCL event handler which checks that the command ID is valid for the target endpoint. If it is valid, the user-defined callback function is invoked that was specified through the function eZLL_RegisterCommissionEndPoint(). The callback function can access the payload through the tsCLD_ZllCommissionCustomDataStructure structure, which is created when the above function is called.

Thus, the above user-defined callback function must be designed to handle the relevant Touchlink events:

  • For a request, the callback function may need to populate a structure with the required data and send a response using the appropriate response function, e.g. by calling eCLD_ZllCommissionCommandScanRspCommandSend() to respond to a Scan Request.

  • For a response, the callback function may just need to extract the returned data from the event.

Alternatively, the callback function may simply notify the main application of the received command and provide the payload, so that the application can process the command.

Touchlink command events

The events that can be generated for Touchlink are listed and described below (the enumerations are defined in the structure teCLD_ZllCommission_Command, shown in Section 44.9.1).

Event

Description

E_CLD_COMMISSION_CMD_SCAN_REQ

A Scan Request has been received (by server)

E_CLD_COMMISSION_CMD_SCAN_RSP

A Scan Response has been received (by client)

E_CLD_COMMISSION_CMD_DEVICE_INFO_REQ

A Device Information Request has been received (by server)

E_CLD_COMMISSION_CMD_DEVICE_INFO_RSP

A Device Information Response has been received (by client)

E_CLD_COMMISSION_CMD_IDENTIFY_REQ

An Identify Request has been received (by server)

E_CLD_COMMISSION_CMD_FACTORY_RESET_REQ

A Reset To Factory New Request has been received (by server)

E_CLD_COMMISSION_CMD_NETWORK_START_REQ

A Network Start Request has been received (by server)

E_CLD_COMMISSION_CMD_NETWORK_START_RSP

A Network Start Response has been received (by cli-ent)

E_CLD_COMMISSION_CMD_NETWORK_JOIN_

ROUTER_REQ

|A Network Join Router Request has been received (by server)| |E_CLD_COMMISSION_CMD_NETWORK_JOIN_

ROUTER_RSP

|A Network Join Router Response has been received (by client)| |E_CLD_COMMISSION_CMD_NETWORK_JOIN_

END_DEVICE_REQ

|A Network Join End Device Request has been received (by server)| |E_CLD_COMMISSION_CMD_NETWORK_JOIN_

END_DEVICE_RSP

|A Network Join End Device Response has been received (by client)| |E_CLD_COMMISSION_CMD_NETWORK_UPDATE_REQ|A Network Update Request has been received (by server)|

Parent topic:Touchlink Commissioning events

Commissioning Utility Command Events

The events that can be generated for the Commissioning Utility are listed and described below (the enumerations are defined in the structure teCLD_ZllUtility_Command, shown in Section 44.9.2).

Event

Description

E_CLD_UTILITY_CMD_ENDPOINT_INFO

An Endpoint Information command has been received (by client)

E_CLD_UTILITY_CMD_GET_GROUP_ID_REQ_RSP

A Get Group Identifiers Request has been received (by server) or a Get Group Identifiers Response has been received (by client)

E_CLD_UTILITY_CMD_GET_ENDPOINT_LIST_REQ_RSP

A Get Endpoint List Request has been received (by server) or a Get Endpoint List Response has been received (by client)

Parent topic:Touchlink Commissioning events

Parent topic:Touchlink Commissioning Cluster

Functions

The functions of the Touchlink Commissioning cluster are divided into two categories:

  • Touchlink functions, detailed in Section 44.7.1

  • Commissioning Utility functions, detailed in Section 44.7.2

Touchlink functions

The following Touchlink functions are provided:

  1. eZLL_RegisterCommissionEndPoint

  2. eCLD_ZllCommissionCreateCommission

  3. eCLD_ZllCommissionCommandScanReqCommandSend

  4. eCLD_ZllCommissionCommandScanRspCommandSend

  5. eCLD_ZllCommissionCommandDeviceInfoReqCommandSend

  6. eCLD_ZllCommissionCommandDeviceInfoRspCommandSend

  7. eCLD_ZllCommissionCommandDeviceIdentifyReqCommandSend

  8. eCLD_ZllCommissionCommandFactoryResetReqCommandSend

  9. eCLD_ZllCommissionCommandNetworkStartReqCommandSend

  10. eCLD_ZllCommissionCommandNetworkStartRspCommandSend

  11. eCLD_ZllCommissionCommandNetworkJoinRouterReqCommandSend

  12. eCLD_ZllCommissionCommandNetworkJoinRouterRspCommandSend

  13. eCLD_ZllCommissionCommandNetworkJoinEndDeviceReqCommandSend

  14. eCLD_ZllCommissionCommandNetworkJoinEndDeviceRspCommandSend

  15. eCLD_ZllCommissionCommandNetworkUpdateReqCommandSend

eZLL_RegisterCommissionEndPoint

teZCL_Status eZLL_RegisterCommissionEndPoint(
    uint8 u8EndPointIdentifier,
    tfpZCL_ZCLCallBackFunction cbCallBack,
    tsZLL_CommissionEndpoint *psDeviceInfo);

Description

This function registers a ‘commissioning’ endpoint for Touchlink and creates a Touchlink Commissioning cluster instance on the endpoint.

Touchlink must have its own application (separate from the main application) on its own endpoint.

This function uses eCLD_ZllCommissionCreateCommission() to create the cluster instance. The type of cluster instance to be created (server or client, or both) is determined using the compile-time options in the header file zcl_options.h (refer to Section 44.10).

Parameters
  • u8EndPointIdentifier        Identifier of endpoint to be registered - this is an endpoint number in the range 1 to 240

  • cbCallBack        Pointer to a callback function to handle events associated with the registered endpoint

  • psDeviceInfo        Pointer to structure to be used to hold Touchlink endpoint information (see Section 44.8.1)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCreateCommission

teZCL_Status eCLD_ZllCommissionCreateCommission(
    tsZCL_ClusterInstance *psClusterInstance,
    bool_t bIsServer,
    tsZCL_ClusterDefinition *psClusterDefinition,
    void *pvSharedStructPtr,
    tsZCL_AttributeStatus *psAttributeStatus,
    tsCLD_ZllCommissionCustomDataStructure
*psCustomDataStructure);

Description

This function creates a Touchlink Commissioning cluster instance for Touchlink on the endpoint of the calling application. The type of cluster instance (server or client) to be created must be specified.

In practice, this function does not need to be called explicitly by the application, as the function eZLL_RegisterCommissionEndPoint() calls this function to create the cluster instance.

Parameters
  • psClusterInstance        Pointer to cluster instance structure on local endpoint

  • bIsServer        Type of cluster instance (server or client) to be created:

  • TRUE - server

  • FALSE - client

  • psClusterDefinition        Pointer to cluster definition structure containing information about the cluster

  • pvSharedStructPtr        Pointer to structure containing the shared storage for the cluster

  • psAttributeStatus        Pointer to a structure containing the storage for each attribute’s status

  • psCustomDataStructure        Pointer to custom data to be provided to the cluster (see Section 44.8.3)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandScanReqCommandSend

eCLD_ZllCommissionCommandScanReqCommandSend(
    ZPS_tsInterPanAddress *psDestinationAddress,
     *pu8TransactionSequenceNumber,
    tsCLD_ZllCommission_ScanReqCommandPayload
    *psPayload);

Description

This function is used to send a Scan Request command to initiate a scan for other nodes in the local neighbourhood. The command is sent as an inter-PAN message.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node(s)

  • pu8TransactionSequenceNumber        Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • psPayload        Pointer to structure containing payload data for the Scan Request command (see Section44.8.5)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandScanRspCommandSend

PUBLIC teZCL_Status eCLD_ZllCommissionCommandScanRspCommandSend(
    ZPS_tsInterPanAddress *psDestinationAddress,
    uint8 *pu8TransactionSequenceNumber,
    tsCLD_ZllCommission_ScanRspCommandPayload
*psPayload);

Description

This function is used to send a Scan Response command containing information about the local node in reply to a received Scan Request from a remote node. The command is sent as an inter-PAN message.

A pointer must be provided to a structure containing the data to be returned.

The specified Transaction Sequence Number (TSN) of the response must match the TSN of the corresponding request, as this will allow the response to be paired with the request at the destination.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber        Pointer to location containing the Transaction Sequence Number (TSN) of the response

  • psPayload        Pointer to structure containing payload data for the Scan Response command (see Section 44.8.6)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandDeviceInfoReqCommandSend

teZCL_Status eCLD_ZllCommissionCommandDeviceInfoReqCommandSend(
ZPS_tsInterPanAddress *psDestinationAddress,
uint8 *pu8TransactionSequenceNumber, tsCLD_ZllCommission_DeviceInfoReqCommandPayload *psPayload);

Description

This function is used to send a Device Information Request command to obtain information about the devices on a remote node. The command is sent as an inter-PAN message.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber        Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • psPayload        Pointer to structure containing payload data for the Device Information Request command (see Section 44.8.7)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandDeviceInfoRspCommandSend

PUBLIC teZCL_Status eCLD_ZllCommissionCommandDeviceInfoRspCommandSend(
ZPS_tsInterPanAddress *psDestinationAddress,
uint8 *pu8TransactionSequenceNumber,
tsCLD_ZllCommission_DeviceInfoRspCommandPayload
*psPayload);

Description

This function is used to send a Device Information Response command containing information about the devices on the local node in reply to a received Device Information Request from a remote node. The command is sent as an inter-PAN message.

A pointer must be provided to a structure containing the data to be returned.

The specified Transaction Sequence Number (TSN) of the response must match the TSN of the corresponding request, as this will allow the response to be paired with the request at the destination.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber        Pointer to location containing the Transaction Sequence Number (TSN) of the response

  • psPayload        Pointer to structure containing payload data for the Device Information Response command (see Section 44.8.8)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommission​​​CommandDeviceIdentify​ReqCommandSend

teZCL_Status eCLD_ZllCommissionCommandDeviceIdentifyReqCommandSend(
ZPS_tsInterPanAddress *psDestinationAddress,
uint8 *pu8TransactionSequenceNumber,
tsCLD_ZllCommission_IdentifyReqCommandPayload
*psPayload);

Description

This function is used to send an Identify Request command to ask a remote node to identify itself by entering ‘identify mode’ (this is a visual indication, such as flashing a LED). The command is sent as an inter-PAN message.

The command payload contains a value indicating the length of time, in seconds, that the target device should remain in identify mode. It is also possible to use this command to instruct the target node to immediately exit identify mode (if it is already in this mode).

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • psDestinationAddress Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber  Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • psPayload  Pointer to structure containing payload data for the Identify Request command (see Section 44.8.9)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandFactoryResetReqCommandSend

teZCL_Status eCLD_ZllCommissionCommandFactoryResetReqCommandSend(
    ZPS_tsInterPanAddress *psDestinationAddress,
    uint8 *pu8TransactionSequenceNumber,
    tsCLD_ZllCommission_FactoryResetReqCommandPayload
    *psPayload);

Description

This function is used to send a Reset to Factory New Request command to ask a remote node to return to its ‘factory new’ state. The command is sent as an inter-PAN message.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber        Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • psPayload        Pointer to structure containing payload data for the Reset to Factory New Request command (see Section 44.8.10)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandNetworkStartReqCommandSend

teZCL_Status eCLD_ZllCommissionCommandNetworkStartReqCommandSend(
    ZPS_tsInterPanAddress *psDestinationAddress,
    uint8 *pu8TransactionSequenceNumber,
    tsCLD_ZllCommission_NetworkStartReqCommandPayload
*psPayload);

Description

This function is used to send a Network Start Request command to create a new network with a detected Router. The command is sent as an inter-PAN message.

The function is called once the results of a Scan Request command have been received and a detected Router has been selected.

The command payload contains information about the network and the local node, as well as certain data for the target node. This payload information is detailed in Section 44.8.11.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber        Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • psPayload        Pointer to structure containing payload data for the Network Start Request command (see Section 44.8.11)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandNetworkStartRspCommandSend

PUBLIC teZCL_Status     eCLD_ZllCommissionCommandNetworkStartRspCommandSend(
    ZPS_tsInterPanAddress *psDestinationAddress,
    uint8 *pu8TransactionSequenceNumber,
    tsCLD_ZllCommission_NetworkStartRspCommandPayload
    *psPayload);

Description

This function is used to send a Network Start Response command to confirm that the local (Router) node is ready to be the first node to join a newly created network in reply to a received Network Start Request from a remote node. The command is sent as an inter-PAN message.

A pointer must be provided to a structure containing the data to be returned.

The specified Transaction Sequence Number (TSN) of the response must match the TSN of the corresponding request, as this will allow the response to be paired with the request at the destination.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber        Pointer to location containing the Transaction Sequence Number (TSN) of the response

  • psPayload        Pointer to structure containing payload data for the Network Start Response command (see Section 44.8.12)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandNetworkJoinRouterReqCommandSend

teZCL_Status eCLD_ZllCommissionCommandNetworkJoinRouterReqCommandSend(
    ZPS_tsInterPanAddress *psDestinationAddress,
    uint8 *pu8TransactionSequenceNumber,
    tsCLD_ZllCommission_NetworkJoinRouterReqCommandPayload
    *psPayload);

Description

This function is used to send a Network Join Router Request command to allow a detected Router to join the created network. The command is sent as an inter-PAN message.

The function can be called once a network has been created. The target Router is distinct from the Router that was included when network was created.

The command payload contains information about the network and the local node, as well as certain data for the target node. This payload information is detailed in Section 44.8.13.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber        Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • psPayload        Pointer to structure containing payload data for the Network Join Router Request command (see Section 44.8.13)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandNetworkJoinRouterRspCommandSend

PUBLIC teZCL_Status eCLD_ZllCommissionCommandNetworkJoinRouterRspCommandSend(
    ZPS_tsInterPanAddress psDestinationAddress,
    uint8 *pu8TransactionSequenceNumber,
    tsCLD_ZllCommission_NetworkJoinRouterRspCommandPayload
    *psPayload);

Description

This function is used to send a Network Join Router Response command to confirm that the local (Router) node is ready to join a network in reply to a received Network Join Router Request from a remote node. The command is sent as an inter-PAN message.

A pointer must be provided to a structure containing the data to be returned.

The specified Transaction Sequence Number (TSN) of the response must match the TSN of the corresponding request, as this will allow the response to be paired with the request at the destination.

Parameters
  • psDestinationAddress                Pointer to stucture containing PAN ID and address information for target node

  • psDestinationAddress        Pointer to location containing the Transaction Sequence Number (TSN) of the response

  • *psPayload        Pointer to structure containing payload data for the Network Join Router Response command (see Section 44.8.14)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandNetworkJoinEndDeviceReqCommandSend

teZCL_Status    eCLD_ZllCommissionCommandNetworkJoinEndDeviceReqCommandSend(
    ZPS_tsInterPanAddress *psDestinationAddress,
    uint8 *pu8TransactionSequenceNumber,
    tsCLD_ZllCommission_NetworkJoinEndDeviceReqCommandPayload
*psPayload);

Description

This function is used to send a Network Join End Device Request command to allow a detected End Device to join the created network. The command is sent as an inter-PAN message.

The function can be called once a network has been created.

The command payload contains information about the network and the local node, as well as certain data for the target node. This data includes a range of network addresses and a range of group IDs from which the target End Device can assign values to the other nodes - in this case, the End Device would typically be a remote control unit. This payload information is detailed in Section 44.8.15.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • psDestinationAddress:  Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber:  Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • psPayload:  Pointer to structure containing payload data for the Network Join End Device Request command (see Section 44.8.15)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandNetworkJoinEndDeviceRspCommandSend

PUBLIC teZCL_Status eCLD_ZllCommissionCommandNetworkJoinEndDeviceRspCommandSend(
ZPS_tsInterPanAddress *psDestinationAddress,
uint8 *pu8TransactionSequenceNumber,
tsCLD_ZllCommission_NetworkJoinEndDeviceRspCommandPayload
*psPayload);

Description

This function is used to send a Network Join End Device Response command to confirm that the local (End Device) node is ready to join a network in reply to a received Network Join End Device Request from a remote node. The command is sent as an inter-PAN message.

A pointer must be provided to a structure containing the data to be returned.

The specified Transaction Sequence Number (TSN) of the response must match the TSN of the corresponding request, as this will allow the response to be paired with the request at the destination.

Parameters
  • psDestinationAddress Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber Pointer to location containing the Transaction Sequence Number (TSN) of the response

  • psPayload Pointer to structure containing payload data for the Network Join End Device Response command (see Section 44.8.16)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

eCLD_ZllCommissionCommandNetworkUpdateReqCommandSend

teZCL_Status eCLD_ZllCommissionCommandNetworkUpdateReqCommandSend(
        ZPS_tsInterPanAddress *psDestinationAddress,
        uint8 *pu8TransactionSequenceNumber,
        tsCLD_ZllCommission_NetworkUpdateReqCommandPayload
        *psPayload);

Description

This function is used to send a Network Update Request command to bring a node that has missed a network update back into the network. The command is sent as an inter-PAN message.

The command payload contains information about the network, including the current value of the Network Update Identifier. This identifier takes a value in the range 0x00 to 0xFF and is incremented when a network update has occurred (the value wraps around at 0xFF). Thus, if this value in the payload is more recent than the value of this identifier held by the target node, the node should update its network settings using the values in the rest of the payload. The payload information is detailed in Section 44.8.17.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • psDestinationAddress Pointer to stucture containing PAN ID and address information for target node

  • pu8TransactionSequenceNumber Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • psPayload Pointer to structure containing payload data for the Network Update Request command (see Section 44.8.17)

Returns
  • E_ZCL_SUCCESS

Parent topic:Touchlink functions

Parent topic:Functions

Commissioning Utility functions

The following Commissioning Utility functions are provided:

  1. eCLD_ZllUtilityCreateUtility

  2. eCLD_ZllUtilityCommandEndpointInformationCommandSend

  3. eCLD_ZllUtilityCommandGetGroupIdReqCommandSend

  4. eCLD_ZllUtilityCommandGetGroupIdRspCommandSend

  5. eCLD_ZllUtilityCommandGetEndpointListReqCommandSend

  6. eCLD_ZllUtilityCommandGetEndpointListRspCommandSend

  7. eCLD_ZllUtilityCommandHandler

eCLD_ZllUtilityCreateUtility

teZCL_Status eCLD_ZllUtilityCreateUtility(
        tsZCL_ClusterInstance *psClusterInstance,
        bool_t bIsServer,
        tsZCL_ClusterDefinition *psClusterDefinition,
        void *pvSharedStructPtr,
        tsZCL_AttributeStatus psAttributeStatus,
        tsCLD_ZllUtilityCustomDataStructure
    *psCustomDataStructure);

Description

This function creates a Touchlink Commissioning cluster instance for the Commissioning Utility. The cluster instance is created on the endpoint of the calling application, which should be the main application on the node. The type of cluster instance (server or client) to be created must be specified.

Parameters
  • psClusterInstance Pointer to cluster instance structure on local endpoint

  • bIsServer Type of cluster instance (server or client) to be created:

  • TRUE - server

  • FALSE - client

  • psClusterDefinition Pointer to cluster definition structure containing information about the cluster

  • pvSharedStructPtr Pointer to structure containing the shared storage for the cluster

  • psAttributeStatus Pointer to a structure containing the storage for each attribute’s status

  • psCustomDataStructure Pointer to custom data to be provided to the cluster (see Section 44.8.20)

Returns
  • E_ZCL_SUCCESS

Parent topic:Commissioning Utility functions

eCLD_ZllUtilityCommandEndpointInformationCommandSend

teZCL_Status eCLD_ZllUtilityCommandEndpointInformationCommandSend(
        uint8 u8SrcEndpoint,
        uint8 u8DstEndpoint,
        tsZCL_Address *psDestinationAddress,
        uint8 *pu8TransactionSequenceNumber,
        tsCLD_ZllUtility_EndpointInformationCommandPayload
*psPayload);

Description

This function is used to send an Endpoint Information command to provide a remote endpoint with general information about the local endpoint (this may prompt the remote endpoint to request further information about the local endpoint). The function would typically be used to send local endpoint information from a ‘teacher’ node to a ‘learner’ node, in order to facilitate two-way communication between the Commissioning Utilities on the two nodes.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the command. The TSN in the response is set to match the specified TSN, allowing an incoming response to be paired with the original command. This is useful when sending more than one command to the same destination endpoint.

Parameters
  • u8SrcEndpoint Number of local endpoint (1-240)

  • u8DstEndpoint Number of destination endpoint (1-240)

  • psDestinationAddress Pointer to stucture containing address information for target node

  • pu8TransactionSequenceNumber Pointer to a location to store the Transaction Sequence Number (TSN) of the command

  • psPayload Pointer to structure to contain payload data for the Endpoint Information command (see Section 44.8.20)

Returns
  • E_ZCL_SUCCESS

Parent topic:Commissioning Utility functions

eCLD_ZllUtilityCommandGetGroupIdReqCommandSend

teZCL_Status eCLD_ZllUtilityCommandGetGroupIdReqCommandSend(
        uint8 u8Srcendpoint,
        uint8 u8DstEndpoint,
        tsZCL_Address *psDestinationAddress,
        uint8 *pu8TransactionSequenceNumber,
        uint8 u8StartIndex);

Description

This function is used to send a Get Group Identifiers Request command to obtain information about the groups (of lights) that have been configured on a remote endpoint. The function would typically be used on a ‘learner’ node to request the groups that have been configured on a ‘teacher’ node.

The first group from the groups list to be included in the returned information must be specified in terms of an index.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • u8SrcEndpoint Number of local endpoint (1-240)

  • u8DstEndpoint Number of destination endpoint (1-240)

  • psDestinationAddress Pointer to stucture containing address information for target node

  • pu8TransactionSequenceNumber Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • u8StartIndex Index in group list of the first group to include in the returned information

Returns
  • E_ZCL_SUCCESS

Parent topic:Commissioning Utility functions

eCLD_ZllUtilityCommandGetGroupIdRspCommandSend

PUBLIC teZCL_Status   eCLD_ZllUtilityCommandGetGroupIdRspCommandSend(
        uint8 u8SrcEndpoint,
        uint8 u8DstEndpoint,
        tsZCL_Address *psDestinationAddress,
        uint8 *pu8TransactionSequenceNumber,
        uint8 u8StartIndex);

Description

This function is used to send a Get Group Identifiers Response command containing information about the groups (of lights) that have been configured on the local endpoint. The function would typically be used on a ‘teacher’ node to respond to a Get Group Identifiers Request from a ‘learner’ node.

The first group from the groups list to be included in the returned information must be specified in terms of an index. The returned information includes this index, the number of (consecutive) groups included and the identifier of each group.

The specified Transaction Sequence Number (TSN) of the response must match the TSN of the corresponding request, as this will allow the response to be paired with the request at the destination.

Parameters
  • u8SrcEndpoint Number of local endpoint (1-240)

  • u8DstEndpoint Number of destination endpoint (1-240)

  • psDestinationAddress Pointer to stucture containing address information for target node

  • pu8TransactionSequenceNumber Pointer to location containing the Transaction Sequence Number (TSN) of the response

  • u8StartIndex Index in group list of the first group to include in the returned information

Returns
  • E_ZCL_SUCCESS

Parent topic:Commissioning Utility functions

eCLD_ZllUtilityCommandGetEndpointListReqCommandSend

teZCL_Status eCLD_ZllUtilityCommandGetEndpointListReqCommandSend(
        uint8 u8SrcEndpoint,
        uint8 u8DstEndpoint,
        tsZCL_Address *psDestinationAddress,
        uint8 *pu8TransactionSequenceNumber,
        uint8 u8StartIndex);

Description

This function is used to send a Get Endpoint List Request command to obtain information about controlled endpoints. The function would typically be used on a ‘learner’ node to request the remote endpoints that a ‘teacher’ node controls.

The first endpoint from the endpoints list to be included in the returned information must be specified in terms of an index.

You are required to provide a pointer to a location to receive a Transaction Sequence Number (TSN) for the request. The TSN in the response is set to match the TSN in the request, allowing an incoming response to be paired with a request. This is useful when sending more than one request to the same destination endpoint.

Parameters
  • u8SrcEndpoint Number of local endpoint (1-240)

  • u8DstEndpoint Number of destination endpoint (1-240)

  • psDestinationAddress Pointer to stucture containing address information for target node

  • pu8TransactionSequenceNumber Pointer to a location to store the Transaction Sequence Number (TSN) of the request

  • u8StartIndex Index in endpoint list of the first endpoint to include in the returned information

Returns
  • E_ZCL_SUCCESS

Parent topic:Commissioning Utility functions

eCLD_ZllUtilityCommandGetEndpointListRspCommandSend

PUBLIC teZCL_Status eCLD_ZllUtilityCommandGetEndpointListRspCommandSend(
        uint8 u8SrcEndpoint,
        uint8 u8DstEndpoint,
        tsZCL_Address *psDestinationAddress,
        uint8 *pu8TransactionSequenceNumber,
        uint8 u8StartIndex);

Description

This function is used to send a Get Endpoint List Response command containing information about controlled endpoints. The function would typically be used on a ‘teacher’ node to respond to a Get Endpoint List Request from a ‘learner’ node.

The first endpoint from the endpoints list to be included in the returned information must be specified in terms of an index. The returned information will include this index, the number of (consecutive) endpoints included and the information about each endpoint (including endpoint number, identifier of resident ZigBee device and version of this device).

The specified Transaction Sequence Number (TSN) of the response must match the TSN of the corresponding request, as this will allow the response to be paired with the request at the destination.

Parameters
  • u8SrcEndpoint Number of local endpoint (1-240)

  • u8DstEndpoint Number of destination endpoint (1-240)

  • psDestinationAddress Pointer to stucture containing address information for target node

  • pu8TransactionSequenceNumber Pointer to location containing the Transaction Sequence Number (TSN) of the response

  • u8StartIndex Index in endpoint list of the first endpoint to include in the returned information

Returns
  • E_ZCL_SUCCESS

Parent topic:Commissioning Utility functions

eCLD_ZllUtilityCommandHandler

teZCL_Status eCLD_ZllUtilityCommandHandler(
    ZPS_tsAfEvent *pZPSevent,
    tsZCL_EndPointDefinition *psEndPointDefinition,
    tsZCL_ClusterInstance *psClusterInstance);

Description

This function parses a ZigBee PRO event and invokes the user-defined callback function that has been registered for the device (using the relevant endpoint registration function).

The registered user-defined callback function must be designed to handle events associated with the Commissioning Utility.

Parameters
  • pZPSevent        Pointer to received ZigBee PRO event

  • psEndPointDefinition        Pointer to structure which defines endpoint on which the Commissioning Utility resides

  • psClusterInstance        Pointer to Touchlink Commissioning cluster instance structure

Returns
  • E_ZCL_SUCCESS

Parent topic:Commissioning Utility functions

Parent topic:Functions

Parent topic:Touchlink Commissioning Cluster

Structures

This section details the structures used in the Touchlink Commissioning cluster (both Touchlink and Commissioning Utility parts).

tsZLL_CommissionEndpoint

This structure is used to hold endpoint information for a Touchlink application.

typedef struct
{
tsZCL_EndPointDefinition sEndPoint;
tsZLL_CommissionEndpointClusterInstances sClusterInstance;
#if (defined CLD_ZLL_COMMISSION) && (defined ZLL_COMMISSION_SERVER)
    tsCLD_ZllCommission sZllCommissionServerCluster;
    tsCLD_ZllCommissionCustomDataStructure      
                sZllCommissionServerCustomDataStructure;
#endif
#if (defined CLD_ZLL_COMMISSION) && (defined ZLL_COMMISSION_CLIENT)
    tsCLD_ZllCommission sZllCommissionClientCluster;
    tsCLD_ZllCommissionCustomDataStructure      
               sZllCommissionClientCustomDataStructure;
#endif
} tsZLL_CommissionEndpoint;

where:

  • sEndPoint is a ZCL structure containing information about the endpoint (refer to Section 6.1.1).

  • sClusterInstance is a structure containing information about the Touchlink Commissioning cluster instance on the endpoint (see Section 44.8.2).

  • For a Touchlink server, the following fields are used:

    • sZllCommissionServerCluster is the Touchlink Commissioning cluster structure (which contains no attributes).

    • sZllCommissionServerCustomDataStructure is a structure containing custom data for the cluster server (see Section 44.8.3).

  • For a Touchlink client, the following fields are used:

    • sZllCommissionClientClusteris the Touchlink Commissioning cluster structure (which contains no attributes).

    • sZllCommissionClientCustomDataStructure is a structure containing custom data for the cluster client (see Section 44.8.3).

Parent topic:Structures

tsZLL_CommissionEndpointClusterInstances

This structure holds information about the Touchlink Commissioning cluster instance on an endpoint.

typedef struct PACK
{
#if (defined CLD_ZLL_COMMISSION) && (defined ZLL_COMMISSION_SERVER)
    tsZCL_ClusterInstance sZllCommissionServer;
#endif
#if (defined CLD_ZLL_COMMISSION) && (defined ZLL_COMMISSION_CLIENT)
    tsZCL_ClusterInstance sZllCommissionClient;
#endif
} tsZLL_CommissionEndpointClusterInstances;

where:

  • s``ZllCommissionServer is a ZCL structure containing information about the Touchlink Commissioning cluster server instance (refer to Section 6.1.16).

  • s``ZllCommissionClient is a ZCL structure containing information about the Touchlink Commissioning cluster client instance (refer to Section 6.1.16).

Parent topic:Structures

tsCLD_ZllCommissionCustomDataStructure

This structure is used to hold the data for a Touchlink command received by a node.

typedef struct
{
    tsZCL_ReceiveEventAddressInterPan    sRxInterPanAddr;
    tsZCL_CallBackEvent                  sCustomCallBackEvent;
    tsCLD_ZllCommissionCallBackMessage   sCallBackMessage;
} tsCLD_ZllCommissionCustomDataStructure;

where:

  • RxInterPanAddr is a ZCL structure containing the Inter-PAN addresses of the source and destination nodes of the command.

  • sCustomCallBackEvent is the ZCL event structure for the command.

  • sCallBackMessage is a structure containing the command ID and payload (see Section 44.8.4).

Parent topic:Structures

tsCLD_ZllCommissionCallBackMessage

This structure contains the command ID and payload for a received Touchlink command.

typedef struct
{
    uint8   u8CommandId;
    union
    {
        tsCLD_ZllCommission_ScanReqCommandPayload                   
                                    *psScanReqPayload;
        tsCLD_ZllCommission_ScanRspCommandPayload                   
                                    *psScanRspPayload;
        tsCLD_ZllCommission_IdentifyReqCommandPayload               
                                    *psIdentifyReqPayload;
        tsCLD_ZllCommission_DeviceInfoReqCommandPayload             
                                    *psDeviceInfoReqPayload;
        tsCLD_ZllCommission_DeviceInfoRspCommandPayload             
                                    *psDeviceInfoRspPayload;
        tsCLD_ZllCommission_FactoryResetReqCommandPayload           
                                    *psFactoryResetPayload;
        tsCLD_ZllCommission_NetworkStartReqCommandPayload           
                                    *psNwkStartReqPayload;
        tsCLD_ZllCommission_NetworkStartRspCommandPayload           
                                    *psNwkStartRspPayload;
        tsCLD_ZllCommission_NetworkJoinRouterReqCommandPayload      
                                    *psNwkJoinRouterReqPayload;
        tsCLD_ZllCommission_NetworkJoinRouterRspCommandPayload      
                                    *psNwkJoinRouterRspPayload;
        tsCLD_ZllCommission_NetworkJoinEndDeviceReqCommandPayload   
                                    *psNwkJoinEndDeviceReqPayload;
        tsCLD_ZllCommission_NetworkJoinEndDeviceRspCommandPayload   
                                    *psNwkJoinEndDeviceRspPayload;
        tsCLD_ZllCommission_NetworkUpdateReqCommandPayload          
                                    *psNwkUpdateReqPayload;
    } uMessage;
} tsCLD_ZllCommissionCallBackMessage;

where:

  • u8CommandId is the command ID - enumerations are provided, as detailed in Section 44.6.1.

  • uMessage contains the payload of the command, where the structure used depends on the command ID (the structures are detailed in the sections below).

Parent topic:Structures

tsCLD_ZllCommission_ScanReqCommandPayload

This structure is used to hold the payload data for a Touchlink Scan Request command.

typedef struct
{
    uint32 u32TransactionId;
    uint8  u8ZigbeeInfo;
    uint8  u8ZllInfo;
} tsCLD_ZllCommission_ScanReqCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the request. This is a random number generated and inserted automatically.

  • u8ZigbeeInfo is a bitmap of ZigBee information which indicates the ZigBee device type of the sending node and whether the radio receiver remains on when the node is idle. This information is inserted by the ZigBee stack.

  • u8ZllInfo is a bitmap indicating properties of the sending node, including whether the node is factory new, whether the node is able to assign addresses to other nodes and whether the node is able to initiate a link operation (supports Touchlink Commissioning cluster on the client side). This information is inserted automatically.

Parent topic:Structures

tsCLD_ZllCommission_ScanRspCommandPayload

This structure is used to hold the payload data for a Touchlink Scan Response command.

typedef struct
{
    uint32  u32TransactionId;
    uint8   u8RSSICorrection;
    uint8   u8ZigbeeInfo;
    uint8   u8ZllInfo;
    uint16  u16KeyMask;
    uint32  u32ResponseId;
    uint64  u64ExtPanId;
    uint8   u8NwkUpdateId;
    uint8   u8LogicalChannel;
    uint16  u16PanId;
    uint16  u16NwkAddr;
    uint8   u8NumberSubDevices;
    uint8   u8TotalGroupIds;
    uint8   u8Endpoint;
    uint16  u16ProfileId;
    uint16  u16DeviceId;
    uint8   u8Version;
    uint8   u8GroupIdCount;
} tsCLD_ZllCommission_ScanRspCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the response, which must take the same value as the identifier in the corresponding request.

  • u8RSSICorrection is the 8-bit RSSI correction offset for the node, in the range 0x00 to 0x20.

  • u8ZigbeeInfo is an 8-bit field containing the following ZigBee-related information:

    • Bits 1-0: Node type (00 - Co-ordinator, 01 - Router, 10 - End Device)

    • Bit 2: Rx on when idle (1 - On, 0 - Off)

    • Bits 7-3: Reserved

  • u8ZllInfo is an 8-bit field containing the following information:

    • Bit 0: Factory new (1 - Yes, 0 - No)

    • Bit 1: Address assignment capability (1 - Yes, 0 - No)

    • Bits 3-2: Reserved

    • Bit 4: Touchlink initiator (1 - Yes, 0 - No)

    • Bit 5: Touchlink priority request (1 - Yes, 0 - No)

    • Bits 7-6: Reserved

  • u16KeyMask is a 16-bit bitmap indicating which link key is installed on the node - only one bit should be set to ‘1’, corresponding to the key that is in use. The possible values and keys are:

    • 0x0001 (bit 0 set): Development key (defined by developer for use during application development)

    • 0x0010 (bit 4 set): Master key (obtained from the ZigBee Alliance after successful certification and agreement with the terms of the ‘ZLL Security Key Licence and Confidentialty Agreement’)

    • 0x8000 (bit 15 set): Certification key (defined in the ZLL Specification for use during development and during certification at test houses)

  • u``32ResponseId is a 32-bit random identifier for the response, used during network key transfer.

  • u64ExtPanId is the 64-bit Extended PAN ID of a network to which the node already belongs, if any (a zero value indicates no network membership).

  • u8NwkUpdateId is the current value of the Network Update Identifier on the node (see Section 44.4.3).

  • u8LogicalChannel is the number of the IEEE 802.15.4 radio channel used by a network to which the node already belongs, if any (a zero value indicates no network membership and therefore that no particular channel is used).

  • u16PanId is the 16-bit PAN ID of a network to which the node already belongs, if any (a zero value indicates no network membership).

  • u16NwkAddr is the 16-bit network address currently assigned to the node (the value 0xFFFF indicates that the node is ‘factory new’ and has no assigned network address).

  • u8NumberSubDevices is the number of ZigBee devices on the node.

  • u8TotalGroupIds is the total number of groups (of lights) supported on the node (across all devices).

  • u8Endpoint is number of the endpoint (in the range 1-240) on which the ZigBee device is resident (this field is only used when there is only one ZigBee device on the node).

  • u16ProfileId is the 16-bit identifier of the ZigBee application profile that is supported by the device (this field is only used when there is only one ZigBee device on the node).

  • u16DeviceId is the 16-bit Device Identifier supported by the device (this field is only used when there is only one ZigBee device on the node).

  • u8Version is an 8-bit version number for the device - the four least significant bits are from the Application Device Version field of the appropriate Simple Descriptor and the four most significant bits are zero (this field is only used when there is only one ZigBee device on the node).

  • u8GroupIdCount is the number of groups (of lights) supported by the device (this field is only used when there is only one ZigBee device on the node).

Parent topic:Structures

tsCLD_ZllCommission_DeviceInfoReqCommandPayload

This structure is used to hold the payload data for a Touchlink Device Information Request command.

typedef struct
{
    uint32 u32TransactionId;
    uint8  u8StartIndex;
} tsCLD_ZllCommission_DeviceInfoReqCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the request. This is a random number generated and inserted automatically.

  • u8StartIndex specifies the index (starting from 0) of the first entry in the device table from which device information should be obtained.

Parent topic:Structures

tsCLD_ZllCommission_DeviceInfoRspCommandPayload

This structure is used to hold the payload data for a Touchlink Device Information Response command.

typedef struct
{
    uint32  u32TransactionId;
    uint8   u8NumberSubDevices;
    uint8   u8StartIndex;
    uint8   u8DeviceInfoRecordCount;
    tsCLD_ZllDeviceRecord asDeviceRecords[ZLL_MAX_DEVICE_RECORDS];
} tsCLD_ZllCommission_DeviceInfoRspCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the response, which must take the same value as the identifier in the corresponding request.

  • u8NumberSubDevices is the number of ZigBee devices on the node (as reported in the Scan Response).

  • u8StartIndex is the index (starting from 0) of the first entry in the device table from which device information has been obtained (this value should be as specified in the corresponding request).

  • u8DeviceInfoRecordCount indicates the number of device information records included in the response (in the range 0 to 5).

  • asDeviceRecords[] is an array, where each array element is a tsCLD_ZllDeviceRecord structure containing a device information record for one ZigBee device on the node.

Parent topic:Structures

tsCLD_ZllCommission_IdentifyReqCommandPayload

This structure is used to hold the payload data for a Touchlink Identify Request command.

typedef struct
{
    uint32  u32TransactionId;
    uint16  u16Duration;
} tsCLD_ZllCommission_IdentifyReqCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the request. This is a random number generated and inserted automatically.

  • u16Duration specifies the length of time (in seconds) that the target node is to remain in identify mode. The possible values are:

    • 0x0000: Exit identify mode immediately

    • 0x0001–0xFFFE: Number of seconds to remain in identify mode

    • 0xFFFF: Remain in identify mode for the default time for the target node

      • If the target node is unable to provide accurate timings, it will attempt to remain in identify mode for as close to the requested time as possible

Parent topic:Structures

tsCLD_ZllCommission_FactoryResetReqCommandPayload

This structure is used to hold the payload data for a Touchlink Reset to Factory New Request command.

typedef struct
{
    uint32 u32TransactionId;
} tsCLD_ZllCommission_FactoryResetReqCommandPayload;

where u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the request. This is a random number generated and inserted automatically.

Parent topic:Structures

tsCLD_ZllCommission_NetworkStartReqCommandPayload

This structure is used to hold the payload data for a Touchlink Network Start Request command.

typedef struct
{
    uint32  u32TransactionId;
    uint64  u64ExtPanId;
    uint8   u8KeyIndex;
    uint8   au8NwkKey[16];
    uint8   u8LogicalChannel;
    uint16  u16PanId;
    uint16  u16NwkAddr;
    uint16  u16GroupIdBegin;
    uint16  u16GroupIdEnd;
    uint16  u16FreeNwkAddrBegin;
    uint16  u16FreeNwkAddrEnd;
    uint16  u16FreeGroupIdBegin;
    uint16  u16FreeGroupIdEnd;
    uint64  u64InitiatorIEEEAddr;
    uint16  u16InitiatorNwkAddr;
} tsCLD_ZllCommission_NetworkStartReqCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the request. This is a random number generated and inserted automatically.

  • u64ExtPanId is the Extended PAN ID (EPID) of the new network (if set to zero, the target node will choose the EPID).

  • u8KeyIndex is a value indicating the type of security key used to encrypt the randomly generated network key in au8NwkKey. The valid values are as follows (all other values are reserved for future use):

    • 0: Development key, used during development before ZigBee certification

    • 4: Master key, used after successful ZigBee certification

    • 15: Certification key, used during ZigBee certification testing

  • au8NwkKey[16] is the 128-bit randomly generated network key encrypted using the key specified in u8KeyIndex.

  • u8LogicalChannel is the number of the IEEE 802.15.4 radio channel to be used by the network (if set to zero, the target node will choose the channel).

  • u16PanId is the PAN ID of the new network (if set to zero, the target node will choose the PAN ID).

  • u16NwkAddr is the 16-bit network (short) address assigned to the target node

  • u16GroupIdBegin is the start value of the range of group identifiers that the target node can use for its own endpoints (if set to zero, no range of group identifiers has been allocated).

  • u16GroupIdEnd is the end value of the range of group identifiers that the target node can use for its own endpoints (if set to zero, no range of group identifiers has been allocated).

  • u16FreeNwkAddrBegin is the start address of the range of network addresses that the target node can assign to other nodes (if set to zero, no range of network addresses has been allocated).

  • u16FreeNwkAddrEnd is the end address of the range of network addresses that the target node can assign to other nodes (if set to zero, no range of network addresses has been allocated).

  • u16FreeGroupIdBegin is the start value of the range of free group identifiers that the target node can assign to other nodes (if set to zero, no range of free group identifiers has been allocated).

  • u16FreeGroupIdEnd is the end value of the range of free group identifiers that the target node can assign to other nodes (if set to zero, no range of free group identifiers has been allocated).

  • u64InitiatorIEEEAddr is the IEEE (MAC) address of the local node (network initiator)

  • u16InitiatorNwkAddr is the network (short) address of the local node (network initiator)

Parent topic:Structures

tsCLD_ZllCommission_NetworkStartRspCommandPayload

This structure is used to hold the payload data for a Touchlink Network Start Response command.

typedef struct
{
    uint32  u32TransactionId;
    uint8   u8Status;
    uint64  u64ExtPanId;
    uint8   u8NwkUpdateId;
    uint8   u8LogicalChannel;
    uint16  u16PanId;
} tsCLD_ZllCommission_NetworkStartRspCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the response, which must take the same value as the identifier in the corresponding request.

  • u8Status indicates the outcome of the corresponding Network Start Request: 0x00 for success, 0x01 for failure.

  • u64ExtPanId is the Extended PAN ID (EPID) of the new network (this will be the value specified in the corresponding request or a value chosen by the local node).

  • u8NwkUpdateId is the current value of the Network Update Identifier, which will be set to zero for a new network (see Section 44.4.3).

  • u8LogicalChannel is the number of the IEEE 802.15.4 radio channel to be used by the network (this will be the value specified in the corresponding request or a value chosen by the local node).

  • u16PanId is the PAN ID of the new network (this will be the value specified in the corresponding request or a value chosen by the local node).

Parent topic:Structures

tsCLD_ZllCommission_NetworkJoinRouterReqCommandPayload

This structure is used to hold the payload data for a Touchlink Network Join Router Request command.

typedef struct
{
    uint32  u32TransactionId;
    uint64  u64ExtPanId;
    uint8   u8KeyIndex;
    uint8   au8NwkKey[16];
    uint8   u8NwkUpdateId;
    uint8   u8LogicalChannel;
    uint16  u16PanId;
    uint16  u16NwkAddr;
    uint16  u16GroupIdBegin;
    uint16  u16GroupIdEnd;
    uint16  u16FreeNwkAddrBegin;
    uint16  u16FreeNwkAddrEnd;
    uint16  u16FreeGroupIdBegin;
    uint16  u16FreeGroupIdEnd;
} tsCLD_ZllCommission_NetworkJoinRouterReqCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the request. This is a random number generated and inserted automatically.

  • u64ExtPanId is the Extended PAN ID (EPID) of the network.

  • u8KeyIndex is a value indicating the type of security key used to encrypt the network key in au8NwkKey. The valid values are as follows (all other values are reserved for future use):

    • 0: Development key, used during development before ZigBee certification

    • 4: Master key, used after successful ZigBee certification

    • 15: Certification key, used during ZigBee certification testing

  • au8NwkKey[16] is the 128-bit network key encrypted using the key specified in u8KeyIndex.

  • u8NwkUpdateId is the current value of the Network Update Identifier. This identifier takes a value in the range 0x00 to 0xFF and is incremented when a network update has occurred which requires the network settings on the nodes to be changed.

  • u8LogicalChannel is the number of the IEEE 802.15.4 radio channel used by the network.

  • u16PanId is the PAN ID of the network

  • u16NwkAddr is the 16-bit network (short) address assigned to the target node

  • u16GroupIdBegin is the start value of the range of group identifiers that the target node can use for its own endpoints (if set to zero, no range of group identifiers has been allocated).

  • u16GroupIdEnd is the end value of the range of group identifiers that the target node can use for its own endpoints (if set to zero, no range of group identifiers has been allocated).

  • u16FreeNwkAddrBegin is the start address of the range of network addresses that the target node can assign to other nodes (if set to zero, no range of network addresses has been allocated).

  • u16FreeNwkAddrEnd is the end address of the range of network addresses that the target node can assign to other nodes (if set to zero, no range of network addresses has been allocated).

  • u16FreeGroupIdBegin is the start value of the range of free group identifiers that the target node can assign to other nodes (if set to zero, no range of free group identifiers has been allocated).

  • u16FreeGroupIdEnd is the end value of the range of free group identifiers that the target node can assign to other nodes (if set to zero, no range of free group identifiers has been allocated).

Parent topic:Structures

tsCLD_ZllCommission_NetworkJoinRouterRspCommandPayload

This structure is used to hold the payload data for a Touchlink Network Join Router Response command.

typedef struct
{
    uint32  u32TransactionId;
    uint8   u8Status;
} tsCLD_ZllCommission_NetworkJoinRouterRspCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the response, which must take the same value as the identifier in the corresponding request.

  • u8Status indicates the outcome of the corresponding Network Join Router Request: 0x00 for success, 0x01 for failure.

Parent topic:Structures

tsCLD_ZllCommission_NetworkJoinEndDeviceReqCommandPayload

This structure is used to hold the payload data for a Touchlink Network Join End Device Request command.

typedef struct
{
    uint32  u32TransactionId;
    uint64  u64ExtPanId;
    uint8   u8KeyIndex;
    uint8   au8NwkKey[16];
    uint8   u8NwkUpdateId;
    uint8   u8LogicalChannel;
    uint16  u16PanId;
    uint16  u16NwkAddr;
    uint16  u16GroupIdBegin;
    uint16  u16GroupIdEnd;
    uint16  u16FreeNwkAddrBegin;
    uint16  u16FreeNwkAddrEnd;
    uint16  u16FreeGroupIdBegin;
    uint16  u16FreeGroupIdEnd;
} tsCLD_ZllCommission_NetworkJoinEndDeviceReqCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the request. This is a random number generated and inserted automatically.

  • u64ExtPanId is the Extended PAN ID (EPID) of the network.

  • u8KeyIndex is a value indicating the type of security key used to encrypt the network key in au8NwkKey. The valid values are as follows (all other values are reserved for future use):

    • 0: Development key, used during development before ZigBee certification

    • 4: Master key, used after successful ZigBee certification

    • 15: Certification key, used during ZigBee certification testing

  • au8NwkKey[16] is the 128-bit network key encrypted using the key specified in u8KeyIndex.

  • u8NwkUpdateId is the current value of the Network Update Identifier. This identifier takes a value in the range 0x00 to 0xFF and is incremented when a network update has occurred which requires the network settings on the nodes to be changed.

  • u8LogicalChannel is the number of the IEEE 802.15.4 radio channel used by the network.

  • u16PanId is the PAN ID of the network.

  • u16NwkAddr is the 16-bit network (short) address assigned to the target node.

  • u16GroupIdBegin is the start value of the range of group identifiers that the target node can use for its own endpoints (if set to zero, no range of group identifiers has been allocated).

  • u16GroupIdEnd is the end value of the range of group identifiers that the target node can use for its own endpoints (if set to zero, no range of group identifiers has been allocated).

  • u16FreeNwkAddrBegin is the start address of the range of network addresses that the target node can assign to other nodes (if set to zero, no range of network addresses has been allocated).

  • u16FreeNwkAddrEnd is the end address of the range of network addresses that the target node can assign to other nodes (if set to zero, no range of network addresses has been allocated).

  • u16FreeGroupIdBegin is the start value of the range of free group identifiers that the target node can assign to other nodes (if set to zero, no range of free group identifiers has been allocated).

  • u16FreeGroupIdEnd is the end value of the range of free group identifiers that the target node can assign to other nodes (if set to zero, no range of free group identifiers has been allocated).

Parent topic:Structures

tsCLD_ZllCommission_NetworkJoinEndDeviceRspCommandPayload

This structure is used to hold the payload data for a Touchlink Network Join End Device Response command.

typedef struct
{
    uint32 u32TransactionId;
    uint8   u8Status;
} tsCLD_ZllCommission_NetworkJoinEndDeviceRspCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the response, which must take the same value as the identifier in the corresponding request.

  • u8Status indicates the outcome of the corresponding Network Join End Device Request: 0x00 for success, 0x01 for failure.

Parent topic:Structures

tsCLD_ZllCommission_NetworkUpdateReqCommandPayload

This structure is used to hold the payload data for a Touchlink Network Update Request command.

typedef struct
{
 uint32  u32TransactionId;
 uint64  u64ExtPanId;
 uint8u8NwkUpdateId;
 uint8u8LogicalChannel;
 uint16  u16PanId;
 uint16  u16NwkAddr;
} tsCLD_ZllCommission_NetworkUpdateReqCommandPayload;

where:

  • u32TransactionId is the 32-bit Inter-PAN Transaction Identifier of the request. This is a random number generated and inserted automatically.

  • u64ExtPanId is the Extended PAN ID (EPID) of the network.

  • u8NwkUpdateId is the current value of the Network Update Identifier (see Section 44.4.3).

  • u8LogicalChannel is the number of the IEEE 802.15.4 radio channel used by the network.

  • u16PanId is the PAN ID of the network.

  • u16NwkAddr is the 16-bit network (short) address assigned to the target node.

Parent topic:Structures

tsCLD_ZllUtilityCustomDataStructure

This structure is used to hold custom data for a Commissioning Utility instance of the Touchlink Commissioning cluster.

typedef struct
{
 tsZCL_ReceiveEventAddress sRxAddr;
 tsZCL_CallBackEvent sCustomCallBackEvent;
 tsCLD_ZllUtilityCallBackMessage sCallBackMessage;
} tsCLD_ZllUtilityCustomDataStructure;

where:

  • sRxAddr is a ZCL structure containing the destination address of the command.

  • sCustomCallBackEvent is the ZCL event structure for the command.

  • sCallBackMessage is a structure containing the command ID and payload (see Section 44.8.19).

Parent topic:Structures

tsCLD_ZllUtilityCallBackMessage

This structure contains the command ID and payload for a received Commissioning Utility command.

typedef struct
{
 uint8u8CommandId;
 union
 {
  tsCLD_ZllUtility_EndpointInformationCommandPayload 
 *psEndpointInfoPayload;
  tsCLD_ZllUtility_GetGroupIdReqCommandPayload 
 *psGetGroupIdReqPayload;
  tsCLD_ZllUtility_GetGroupIdRspCommandPayload 
 *psGetGroupIdRspPayload;
  tsCLD_ZllUtility_GetEndpointListReqCommandPayload  
 *psGetEndpointlistReqPayload;
  tsCLD_ZllUtility_GetEndpointListRspCommandPayload  
 *psGetEndpointListRspPayload;
 } uMessage;
} tsCLD_ZllUtilityCallBackMessage;

where:

  • u8CommandId is the command ID - enumerations are provided, as detailed in Section 44.6.2.

  • uMessage contains the payload of the command, where the structure used depends on the command ID (the structures are detailed in the sections below).

Parent topic:Structures

tsCLD_ZllUtility_EndpointInformationCommandPayload

This structure is used to hold the payload data for a Commissioning Utility Endpoint Information command.

typedef struct
{
 uint64  u64IEEEAddr;
 uint16  u16NwkAddr;
 uint8u8Endpoint;
 uint16  u16ProfileID;
 uint16  u16DeviceID;
 uint8u8Version;
} tsCLD_ZllUtility_EndpointInformationCommandPayload;

where:

  • u64IEEEAddr is the IEEE (MAC) address of the local node.

  • u16NwkAddr is the network (short) address of the local node.

  • u8Endpoint is the number of the local endpoint (1-240).

  • u16ProfileID is the identifier of the ZigBee application profile supported on the local endpoint.

  • u16DeviceID is identifier of the ZigBee device on the local endpoint.

  • u8Version specifies the version number of the ZigBee device on the local endpoint.

Parent topic:Structures

Parent topic:Touchlink Commissioning Cluster

Enumerations

Touchlink event enumerations

The event types generated by the Touchlink part of the Touchlink Commissioning cluster are enumerated in the teCLD_ZllCommission_Command structure below:

typedef enum PACK
{
   E_CLD_COMMISSION_CMD_SCAN_REQ  0x00,
   E_CLD_COMMISSION_CMD_SCAN_RSP,
   E_CLD_COMMISSION_CMD_DEVICE_INFO_REQ,
   E_CLD_COMMISSION_CMD_DEVICE_INFO_RSP,
   E_CLD_COMMISSION_CMD_IDENTIFY_REQ  0x06,
   E_CLD_COMMISSION_CMD_FACTORY_RESET_REQ,
   E_CLD_COMMISSION_CMD_NETWORK_START_REQ  0x10,
   E_CLD_COMMISSION_CMD_NETWORK_START_RSP,
   E_CLD_COMMISSION_CMD_NETWORK_JOIN_ROUTER_REQ,
   E_CLD_COMMISSION_CMD_NETWORK_JOIN_ROUTER_RSP,
   E_CLD_COMMISSION_CMD_NETWORK_JOIN_END_DEVICE_REQ,
   E_CLD_COMMISSION_CMD_NETWORK_JOIN_END_DEVICE_RSP,
   E_CLD_COMMISSION_CMD_NETWORK_UPDATE_REQ,
} teCLD_ZllCommission_Command;

Parent topic:Enumerations

Commissioning utility event enumerations

The event types generated by the Commissioning Utility part of the Touchlink Commissioning cluster are enumerated in the teCLD_ZllUtility_Command structure below:

 typedef enum PACK
{
  E_CLD_UTILITY_CMD_ENDPOINT_INFO = 0x40,
  E_CLD_UTILITY_CMD_GET_GROUP_ID_REQ_RSP,
  E_CLD_UTILITY_CMD_GET_ENDPOINT_LIST_REQ_RSP,
} teCLD_ZllUtility_Command;

Parent topic:Enumerations

Parent topic:Touchlink Commissioning Cluster

Compile-time options

This section describes the compile-time options that may be enabled in the zcl_options.h file of an application that uses the Touchlink Commissioning cluster.

The Touchlink Commissioning cluster is enabled as follows:

  • Touchlink - To enable the cluster, define CLD_ZLL_COMMISSION, then:

    • to enable the cluster as a server, define ZLL_COMMISSION_SERVER

    • to enable the cluster as a client, define ZLL_COMMISSION_CLIENT

  • Commissioning Utility - To enable the cluster, define CLD_ZLL_UTILITY, then:

    • to enable the cluster as a server, define ZLL_UTILITY_SERVER

    • to enable the cluster as a client, define ZLL_UTILITY_CLIENT

Parent topic:Touchlink Commissioning Cluster


Copyright 2025, NXP. Last generated on Jun 26, 2025 11:45+0200; branch release/25.06.00, revision 6130022abfc4696d01915519c9392d84dea6b80f.