ZCL IP#

API and Callbacks for the ZCL IP Component.

This component provides functionality to encapsulate and extract ZCL packets over IP to a remote Internet-connected host.

API#

sl_zigbee_af_zcl_ip_generate_outgoing_proxy_packet(sl_zigbee_aps_frame_t *apsFrame, sl_802154_short_addr_t nodeId, sl_802154_long_addr_t eui64, uint8_t *zclMessageBuffer, uint16_t zclMessageBufferLength)

Generate the outgoing proxy packet.

sl_zigbee_af_zcl_ip_generate_outgoing_keepalive(uint32_t unixTime, uint32_t nextKeepaliveDelaySeconds)

Generate the outgoing keep alive.

sl_zigbee_af_zcl_ip_retrieve_incoming_encapsulated_zcl_proxy_packet(sl_zigbee_af_cluster_command_t *returnCmd, sl_802154_long_addr_t returnEui64)

Retrieve incoming encapsulated ZCL proxy packet.

sl_zigbee_af_zcl_ip_retrieve_incoming_keepalive(uint32_t *unixTimeSinceEpoch, uint32_t *nextKeepaliveDelaySeconds)

Retrieve incoming keepalive.

sl_zigbee_af_zcl_ip_retrieve_incoming_configure_remote_clusters(sl_zigbee_af_remote_cluster_struct_t *returnData, uint16_t maxCount, uint16_t *returnedCount)

Retrieve incoming configure remote clusters.

sl_zigbee_af_zcl_ip_generate_outgoing_configure_remote_cluster(uint16_t count, const sl_zigbee_af_remote_cluster_struct_t *records)

Generate outgoing configure remote cluster.

sl_zigbee_af_zcl_ip_generate_outgoing_add_device(sl_802154_long_addr_t newDeviceEui64, const sl_zigbee_key_data_t *newDeviceKeyData)

Generate outgoing add device.

sl_zigbee_af_zcl_ip_generate_outgoing_configure_remote_binding(sl_802154_long_addr_t targetEUI64, uint8_t sourceEndpoint, uint8_t destEndpoint, uint16_t clusterId, sl_802154_long_addr_t destEUI64, sl_802154_long_addr_t sourceEUI64)

Generate outgoing configure remote binding.

sl_zigbee_af_zcl_ip_generate_outgoing_device_discovery_update(const sl_zigbee_af_device_info_t *device)

Generate outgoing device discovery update.

uint16_t
sl_zigbee_af_zcl_ip_get_packet_length(const uint8_t *zclIpPacket)

Get packet length.

uint8_t *

Get received packet pointer.

uint16_t

Get received packet command ID.

uint8_t *

Get received proxy packet eui64 pointer.

sl_zigbee_af_zcl_ip_retrieve_incoming_add_device(sl_802154_long_addr_t newDeviceEui64, sl_zigbee_key_data_t *newDeviceKeyData)

Retrieved incoming add device.

sl_zigbee_af_zcl_ip_retrieve_incoming_configure_remote_binding(sl_zigbee_af_remote_binding_struct_t *returnData)

Macros#

#define
EM_AF_ZCL_IP_VERSION 0x01
#define
EM_AF_ZCL_IP_HEADER_INDEX 0
#define
EM_AF_ZCL_IP_PACKET_LENGTH_INDEX 2
#define
EM_AF_ZCL_IP_COMMAND_ID_INDEX 4
#define
EM_AF_ZCL_IP_COMMAND_ID_FIELD_LENGTH 2
#define
EM_AF_ZCL_IP_MINIMUM_PACKET_SIZE (EM_AF_ZCL_IP_COMMAND_ID_INDEX + EM_AF_ZCL_IP_COMMAND_ID_FIELD_LENGTH)
#define
EM_AF_ZCL_IP_KEEPALIVE_PACKET_ID 0x0000
#define
EM_AF_ZCL_IP_COMMAND_ZCL_PROXY_PACKET_ID 0x0001
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_ID 0x0002
#define
EM_AF_ZCL_IP_ADD_DEVICE_ID 0x0003
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_BINDING_ID 0x0004
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_ID 0x0005
#define
EM_AF_ZCL_IP_UNIX_TIME_INDEX 6
#define
EM_AF_ZCL_IP_KEEPALIVE_DELAY_SECONDS_INDEX 10
#define
EM_AF_ZCL_IP_KEEPALIVE_DELAY_SECONDS_SIZE 4
#define
EM_AF_ZCL_IP_KEEPALIVE_PACKET_SIZE (EM_AF_ZCL_IP_KEEPALIVE_DELAY_SECONDS_INDEX + EM_AF_ZCL_IP_KEEPALIVE_DELAY_SECONDS_SIZE)
#define
EM_AF_ZCL_IP_CLUSTER_ID_INDEX 6
#define
EM_AF_ZCL_IP_PROFILE_ID_INDEX 8
#define
EM_AF_ZCL_IP_SOURCE_EP_INDEX 10
#define
EM_AF_ZCL_IP_DEST_EP_INDEX 11
#define
EM_AF_ZCL_IP_EUI64_INDEX 12
#define
EM_AF_ZCL_IP_APS_OPTIONS_INDEX 20
#define
EM_AF_ZCL_IP_ZCL_LENGTH_INDEX 22
#define
EM_AF_ZCL_IP_ZCL_PAYLOAD_INDEX 24
#define
EM_AF_ZCL_IP_PROXY_PACKET_MINIMUM_SIZE (EM_AF_ZCL_IP_ZCL_PAYLOAD_INDEX)
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_COUNT_INDEX 6
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_RECORD_START_INDEX 8
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_COMMAND_OVERHEAD 2
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_RECORD_CLUSTER_OFFSET 0
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_RECORD_PROFILE_OFFSET 2
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_RECORD_DEVICE_ID_OFFSET 4
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_RECORD_ENDPOINT_OFFSET 6
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_RECORD_TYPE_OFFSET 7
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_RECORD_TYPE_OFFSET_LENGTH 2
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_CLUSTERS_RECORD_LENGTH undefined
#define
EM_AF_ZCL_IP_ADD_DEVICE_EUI64_INDEX 6
#define
EM_AF_ZCL_IP_ADD_DEVICE_LINK_KEY_INDEX 14
#define
EM_AF_ZCL_IP_ADD_DEVICE_COMMAND_LENGTH 30
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_BINDING_COMMAND_TARGET_EUI_OFFSET 6
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_BINDING_COMMAND_SOURCE_ENDPOINT_OFFSET 14
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_BINDING_COMMAND_DEST_ENDPOINT_OFFSET 15
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_BINDING_COMMAND_CLUSTER_ID_OFFSET 16
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_BINDING_COMMAND_DEST_EUI_OFFSET 18
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_BINDING_COMMAND_SOURCE_EUI_OFFSET 26
#define
EM_AF_ZCL_IP_CONFIGURE_REMOTE_BINDING_COMMAND_LENGTH 34
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_EUI64_INDEX 6
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_STATUS_INDEX 14
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_CAPABILITIES_INDEX 15
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_ENDPOINT_COUNT_INDEX 16
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_ENDPOINT_INFO_INDEX 17
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_ENDPOINT_OFFSET 0
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_PROFILE_ID_OFFSET 1
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_DEVICE_ID_OFFSET 3
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_CLUSTER_COUNT_OFFSET 5
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_CLUSTER_ID_OFFSET 6
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_ENDPOINT_INFO_MIN_LENGTH EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_CLUSTER_ID_OFFSET
#define
EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_MIN_LENGTH EM_AF_ZCL_IP_DEVICE_DISCOVERY_UPDATE_COMMAND_ENDPOINT_INFO_INDEX

API Documentation#

sl_zigbee_af_zcl_ip_generate_outgoing_proxy_packet#

sl_status_t sl_zigbee_af_zcl_ip_generate_outgoing_proxy_packet (sl_zigbee_aps_frame_t * apsFrame, sl_802154_short_addr_t nodeId, sl_802154_long_addr_t eui64, uint8_t * zclMessageBuffer, uint16_t zclMessageBufferLength)

Generate the outgoing proxy packet.

Parameters
TypeDirectionArgument NameDescription
sl_zigbee_aps_frame_t *N/AapsFrame
sl_802154_short_addr_tN/AnodeId
sl_802154_long_addr_tN/Aeui64
uint8_t *N/AzclMessageBuffer
uint16_tN/AzclMessageBufferLength

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_generate_outgoing_keepalive#

sl_status_t sl_zigbee_af_zcl_ip_generate_outgoing_keepalive (uint32_t unixTime, uint32_t nextKeepaliveDelaySeconds)

Generate the outgoing keep alive.

Parameters
TypeDirectionArgument NameDescription
uint32_tN/AunixTime
uint32_tN/AnextKeepaliveDelaySeconds

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_retrieve_incoming_encapsulated_zcl_proxy_packet#

sl_status_t sl_zigbee_af_zcl_ip_retrieve_incoming_encapsulated_zcl_proxy_packet (sl_zigbee_af_cluster_command_t * returnCmd, sl_802154_long_addr_t returnEui64)

Retrieve incoming encapsulated ZCL proxy packet.

Parameters
TypeDirectionArgument NameDescription
sl_zigbee_af_cluster_command_t *N/AreturnCmd
sl_802154_long_addr_tN/AreturnEui64

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_retrieve_incoming_keepalive#

sl_status_t sl_zigbee_af_zcl_ip_retrieve_incoming_keepalive (uint32_t * unixTimeSinceEpoch, uint32_t * nextKeepaliveDelaySeconds)

Retrieve incoming keepalive.

Parameters
TypeDirectionArgument NameDescription
uint32_t *N/AunixTimeSinceEpoch
uint32_t *N/AnextKeepaliveDelaySeconds

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_retrieve_incoming_configure_remote_clusters#

sl_status_t sl_zigbee_af_zcl_ip_retrieve_incoming_configure_remote_clusters (sl_zigbee_af_remote_cluster_struct_t * returnData, uint16_t maxCount, uint16_t * returnedCount)

Retrieve incoming configure remote clusters.

Parameters
TypeDirectionArgument NameDescription
sl_zigbee_af_remote_cluster_struct_t *N/AreturnData

struct for remote cluster data

uint16_tN/AmaxCount
uint16_t *N/AreturnedCount

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_generate_outgoing_configure_remote_cluster#

sl_status_t sl_zigbee_af_zcl_ip_generate_outgoing_configure_remote_cluster (uint16_t count, const sl_zigbee_af_remote_cluster_struct_t * records)

Generate outgoing configure remote cluster.

Parameters
TypeDirectionArgument NameDescription
uint16_tN/Acount
const sl_zigbee_af_remote_cluster_struct_t *N/Arecords

struct for remote cluster data

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_generate_outgoing_add_device#

sl_status_t sl_zigbee_af_zcl_ip_generate_outgoing_add_device (sl_802154_long_addr_t newDeviceEui64, const sl_zigbee_key_data_t * newDeviceKeyData)

Generate outgoing add device.

Parameters
TypeDirectionArgument NameDescription
sl_802154_long_addr_tN/AnewDeviceEui64
const sl_zigbee_key_data_t *N/AnewDeviceKeyData

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_generate_outgoing_configure_remote_binding#

sl_status_t sl_zigbee_af_zcl_ip_generate_outgoing_configure_remote_binding (sl_802154_long_addr_t targetEUI64, uint8_t sourceEndpoint, uint8_t destEndpoint, uint16_t clusterId, sl_802154_long_addr_t destEUI64, sl_802154_long_addr_t sourceEUI64)

Generate outgoing configure remote binding.

Parameters
TypeDirectionArgument NameDescription
sl_802154_long_addr_tN/AtargetEUI64
uint8_tN/AsourceEndpoint
uint8_tN/AdestEndpoint
uint16_tN/AclusterId
sl_802154_long_addr_tN/AdestEUI64
sl_802154_long_addr_tN/AsourceEUI64

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_generate_outgoing_device_discovery_update#

sl_status_t sl_zigbee_af_zcl_ip_generate_outgoing_device_discovery_update (const sl_zigbee_af_device_info_t * device)

Generate outgoing device discovery update.

Parameters
TypeDirectionArgument NameDescription
const sl_zigbee_af_device_info_t *N/Adevice

Pointer to device info struct

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_get_packet_length#

uint16_t sl_zigbee_af_zcl_ip_get_packet_length (const uint8_t * zclIpPacket)

Get packet length.

Parameters
TypeDirectionArgument NameDescription
const uint8_t *N/AzclIpPacket

Returns

  • uint16_t packet length


sl_zigbee_af_zcl_ip_get_received_packet_pointer#

uint8_t * sl_zigbee_af_zcl_ip_get_received_packet_pointer (void )

Get received packet pointer.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • uint8_t* pointer to the received packet


sl_zigbee_af_zcl_ip_get_received_packet_command_id#

uint16_t sl_zigbee_af_zcl_ip_get_received_packet_command_id (void )

Get received packet command ID.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • uint16_t command ID


sl_zigbee_af_zcl_ip_get_received_proxy_packet_eui64_pointer#

uint8_t * sl_zigbee_af_zcl_ip_get_received_proxy_packet_eui64_pointer (void )

Get received proxy packet eui64 pointer.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • uint8_t eui64 packet pointer


sl_zigbee_af_zcl_ip_retrieve_incoming_add_device#

sl_status_t sl_zigbee_af_zcl_ip_retrieve_incoming_add_device (sl_802154_long_addr_t newDeviceEui64, sl_zigbee_key_data_t * newDeviceKeyData)

Retrieved incoming add device.

Parameters
TypeDirectionArgument NameDescription
sl_802154_long_addr_tN/AnewDeviceEui64
sl_zigbee_key_data_t *N/AnewDeviceKeyData

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_retrieve_incoming_configure_remote_binding#

sl_status_t sl_zigbee_af_zcl_ip_retrieve_incoming_configure_remote_binding (sl_zigbee_af_remote_binding_struct_t * returnData)
Parameters
TypeDirectionArgument NameDescription
sl_zigbee_af_remote_binding_struct_t *N/AreturnData

Pointer to the remote binding struct

Retrieve incoming configure remote binding.

Returns

  • sl_status_t status code


sl_zigbee_af_zcl_ip_retrieve_incoming_device_discovery_update#

sl_status_t sl_zigbee_af_zcl_ip_retrieve_incoming_device_discovery_update (sl_zigbee_af_device_info_t * device)
Parameters
TypeDirectionArgument NameDescription
sl_zigbee_af_device_info_t *N/Adevice

pointer to the device info struct

Retrieve incoming device discovery update.

Returns

  • sl_status_t status code