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#

EmberStatus
emberAfPluginZclIpGenerateOutgoingProxyPacket(EmberApsFrame *apsFrame, EmberNodeId nodeId, EmberEUI64 eui64, uint8_t *zclMessageBuffer, uint16_t zclMessageBufferLength)

Generate the outgoing proxy packet.

EmberStatus
emberAfPluginZclIpGenerateOutgoingKeepalive(uint32_t unixTime, uint32_t nextKeepaliveDelaySeconds)

Generate the outgoing keep alive.

EmberStatus
emberAfPluginZclIpRetrieveIncomingEncapsulatedZclProxyPacket(EmberAfClusterCommand *returnCmd, EmberEUI64 returnEui64)

Retrieve incoming encapsulated ZCL proxy packet.

EmberStatus
emberAfPluginZclIpRetrieveIncomingKeepalive(uint32_t *unixTimeSinceEpoch, uint32_t *nextKeepaliveDelaySeconds)

Retrieve incoming keepalive.

EmberStatus
emberAfPluginZclIpRetrieveIncomingConfigureRemoteClusters(EmberAfRemoteClusterStruct *returnData, uint16_t maxCount, uint16_t *returnedCount)

Retrieve incoming configure remote clusters.

EmberStatus
emberAfPluginZclIpGenerateOutgoingConfigureRemoteCluster(uint16_t count, const EmberAfRemoteClusterStruct *records)

Generate outgoing configure remote cluster.

EmberStatus
emberAfPluginZclIpGenerateOutgoingAddDevice(EmberEUI64 newDeviceEui64, const EmberKeyData *newDeviceKeyData)

Generate outgoing add device.

EmberStatus
emberAfPluginZclIpGenerateOutgoingConfigureRemoteBinding(EmberEUI64 targetEUI64, uint8_t sourceEndpoint, uint8_t destEndpoint, uint16_t clusterId, EmberEUI64 destEUI64, EmberEUI64 sourceEUI64)

Generate outgoing configure remote binding.

EmberStatus

Generate outgoing device discovery update.

uint16_t
emberAfPluginZclIpGetPacketLength(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.

EmberStatus
emberAfPluginZclIpRetrieveIncomingAddDevice(EmberEUI64 newDeviceEui64, EmberKeyData *newDeviceKeyData)

Retrieved incoming add device.

EmberStatus
emberAfPluginZclIpRetrieveIncomingConfigureRemoteBinding(EmberAfRemoteBindingStruct *returnData)
EmberStatus

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#

emberAfPluginZclIpGenerateOutgoingProxyPacket#

EmberStatus emberAfPluginZclIpGenerateOutgoingProxyPacket (EmberApsFrame * apsFrame, EmberNodeId nodeId, EmberEUI64 eui64, uint8_t * zclMessageBuffer, uint16_t zclMessageBufferLength)

Generate the outgoing proxy packet.

Parameters
TypeDirectionArgument NameDescription
EmberApsFrame *N/AapsFrame
EmberNodeIdN/AnodeId
EmberEUI64N/Aeui64
uint8_t *N/AzclMessageBuffer
uint16_tN/AzclMessageBufferLength

Returns

  • EmberStatus status code


emberAfPluginZclIpGenerateOutgoingKeepalive#

EmberStatus emberAfPluginZclIpGenerateOutgoingKeepalive (uint32_t unixTime, uint32_t nextKeepaliveDelaySeconds)

Generate the outgoing keep alive.

Parameters
TypeDirectionArgument NameDescription
uint32_tN/AunixTime
uint32_tN/AnextKeepaliveDelaySeconds

Returns

  • EmberStatus status code


emberAfPluginZclIpRetrieveIncomingEncapsulatedZclProxyPacket#

EmberStatus emberAfPluginZclIpRetrieveIncomingEncapsulatedZclProxyPacket (EmberAfClusterCommand * returnCmd, EmberEUI64 returnEui64)

Retrieve incoming encapsulated ZCL proxy packet.

Parameters
TypeDirectionArgument NameDescription
EmberAfClusterCommand *N/AreturnCmd
EmberEUI64N/AreturnEui64

Returns

  • EmberStatus status code


emberAfPluginZclIpRetrieveIncomingKeepalive#

EmberStatus emberAfPluginZclIpRetrieveIncomingKeepalive (uint32_t * unixTimeSinceEpoch, uint32_t * nextKeepaliveDelaySeconds)

Retrieve incoming keepalive.

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

Returns

  • EmberStatus status code


emberAfPluginZclIpRetrieveIncomingConfigureRemoteClusters#

EmberStatus emberAfPluginZclIpRetrieveIncomingConfigureRemoteClusters (EmberAfRemoteClusterStruct * returnData, uint16_t maxCount, uint16_t * returnedCount)

Retrieve incoming configure remote clusters.

Parameters
TypeDirectionArgument NameDescription
EmberAfRemoteClusterStruct *N/AreturnData

struct for remote cluster data

uint16_tN/AmaxCount
uint16_t *N/AreturnedCount

Returns

  • EmberStatus status code


emberAfPluginZclIpGenerateOutgoingConfigureRemoteCluster#

EmberStatus emberAfPluginZclIpGenerateOutgoingConfigureRemoteCluster (uint16_t count, const EmberAfRemoteClusterStruct * records)

Generate outgoing configure remote cluster.

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

struct for remote cluster data

Returns

  • EmberStatus status code


emberAfPluginZclIpGenerateOutgoingAddDevice#

EmberStatus emberAfPluginZclIpGenerateOutgoingAddDevice (EmberEUI64 newDeviceEui64, const EmberKeyData * newDeviceKeyData)

Generate outgoing add device.

Parameters
TypeDirectionArgument NameDescription
EmberEUI64N/AnewDeviceEui64
const EmberKeyData *N/AnewDeviceKeyData

Returns

  • EmberStatus status code


emberAfPluginZclIpGenerateOutgoingConfigureRemoteBinding#

EmberStatus emberAfPluginZclIpGenerateOutgoingConfigureRemoteBinding (EmberEUI64 targetEUI64, uint8_t sourceEndpoint, uint8_t destEndpoint, uint16_t clusterId, EmberEUI64 destEUI64, EmberEUI64 sourceEUI64)

Generate outgoing configure remote binding.

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

Returns

  • EmberStatus status code


emberAfPluginZclIpGenerateOutgoingDeviceDiscoveryUpdate#

EmberStatus emberAfPluginZclIpGenerateOutgoingDeviceDiscoveryUpdate (const EmberAfDeviceInfo * device)

Generate outgoing device discovery update.

Parameters
TypeDirectionArgument NameDescription
const EmberAfDeviceInfo *N/Adevice

Pointer to device info struct

Returns

  • EmberStatus status code


emberAfPluginZclIpGetPacketLength#

uint16_t emberAfPluginZclIpGetPacketLength (const uint8_t * zclIpPacket)

Get packet length.

Parameters
TypeDirectionArgument NameDescription
const uint8_t *N/AzclIpPacket

Returns

  • uint16_t packet length


emberAfPluginZclIpGetReceivedPacketPointer#

uint8_t * emberAfPluginZclIpGetReceivedPacketPointer (void )

Get received packet pointer.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • uint8_t* pointer to the received packet


emberAfPluginZclIpGetReceivedPacketCommandId#

uint16_t emberAfPluginZclIpGetReceivedPacketCommandId (void )

Get received packet command ID.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • uint16_t command ID


emberAfPluginZclIpGetReceivedProxyPacketEui64Pointer#

uint8_t * emberAfPluginZclIpGetReceivedProxyPacketEui64Pointer (void )

Get received proxy packet eui64 pointer.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • uint8_t eui64 packet pointer


emberAfPluginZclIpRetrieveIncomingAddDevice#

EmberStatus emberAfPluginZclIpRetrieveIncomingAddDevice (EmberEUI64 newDeviceEui64, EmberKeyData * newDeviceKeyData)

Retrieved incoming add device.

Parameters
TypeDirectionArgument NameDescription
EmberEUI64N/AnewDeviceEui64
EmberKeyData *N/AnewDeviceKeyData

Returns

  • EmberStatus status code


emberAfPluginZclIpRetrieveIncomingConfigureRemoteBinding#

EmberStatus emberAfPluginZclIpRetrieveIncomingConfigureRemoteBinding (EmberAfRemoteBindingStruct * returnData)
Parameters
TypeDirectionArgument NameDescription
EmberAfRemoteBindingStruct *N/AreturnData

Pointer to the remote binding struct

Retrieve incoming configure remote binding.

Returns

  • EmberStatus status code


emberAfPluginZclIpRetrieveIncomingDeviceDiscoveryUpdate#

EmberStatus emberAfPluginZclIpRetrieveIncomingDeviceDiscoveryUpdate (EmberAfDeviceInfo * device)
Parameters
TypeDirectionArgument NameDescription
EmberAfDeviceInfo *N/Adevice

pointer to the device info struct

Retrieve incoming device discovery update.

Returns

  • EmberStatus status code