The master include file for the Ember ApplicationFramework API.

License#

Copyright 2018 Silicon Laboratories Inc. www.silabs.com

The licensor of this software is Silicon Laboratories Inc. Your use of this software is governed by the terms of Silicon Labs Master Software License Agreement (MSLA) available at www.silabs.com/about-us/legal/master-software-license-agreement. This software is distributed to you in Source Code format and is governed by the sections of the MSLA applicable to Source Code.

/***************************************************************************/
#ifndef SILABS_AF_API
#define SILABS_AF_API

// Micro and compiler-specific typedefs and macros
#include PLATFORM_HEADER

#ifndef CONFIGURATION_HEADER
  #define CONFIGURATION_HEADER "app/framework/util/config.h"
#endif
#include CONFIGURATION_HEADER

#ifdef EZSP_HOST
// Includes needed for ember related functions for the EZSP host
  #include "stack/include/error.h"
  #include "stack/include/ember-types.h"
  #include "stack/include/ember-random-api.h"
  #include "app/util/ezsp/ezsp-protocol.h"
  #include "app/util/ezsp/ezsp.h"
  #include "app/util/ezsp/ezsp-utils.h"
  #include "app/util/ezsp/serial-interface.h"
#else
// Includes needed for ember related functions for the SoC
  #include "stack/include/ember.h"
#endif // EZSP_HOST

#include "hal/hal.h"
#include "event_queue/event-queue.h"
#include "stack/include/error.h"
#include "af-types.h"
#include "app/framework/util/print.h"
#include "app/framework/util/time-util.h"

#ifdef UC_BUILD
#include "serial/serial.h"
#include "sl_endianness.h"
// Temporary fix for UC_ALPHA_2, see EMZIGBEE-6782
#include "plugin-component-mappings.h"
#include "af-storage.h"
#include "zap-command.h"
#include "zap-id.h"
#include "zap-type.h"
#include "zap-print.h"
#include "app/framework/util/util.h"
#include "app/framework/util/global-callback.h"
#include "app/framework/util/global-other-callback.h"
#include "app/framework/service-function/sl_service_function.h"
#include "zap-enabled-incoming-commands.h"
#include "zigbee_app_framework_common.h"
#include "app/framework/util/zcl-debug-print.h"
#else // !UC_BUILD
#include "plugin/serial/serial.h"
#include "event_control/event.h"
#include "att-storage.h"
#include "call-command-handler.h"
#include "client-command-macro.h"
#include "callback.h"
#include "af-structs.h"
#include "attribute-type.h"
#include "attribute-id.h"
#include "cluster-id.h"
#include "command-id.h"
#include "enums.h"
#include "print-cluster.h"
#include "af-legacy.h"
#include "debug-printing.h"
#include "app/util/serial/command-interpreter2.h"
#include "app/framework/cli/zcl-cli.h"
#endif // UC_BUILD

#include "app/framework/util/client-api.h"

// TODO: EMZIGBEE-6322 Remove this file when doing the UC_BUILD cleanup works.
#include "app/util/common/uc-temp-macros.h"

// @{

EmberAfAttributeMetadata *emberAfLocateAttributeMetadata(uint8_t endpoint,
                                                         EmberAfClusterId clusterId,
                                                         EmberAfAttributeId attributeId,
                                                         uint8_t mask,
                                                         uint16_t manufacturerCode);

#ifdef DOXYGEN_SHOULD_SKIP_THIS

bool emberAfContainsAttribute(uint8_t endpoint,
                              EmberAfClusterId clusterId,
                              EmberAfAttributeId attributeId,
                              uint8_t mask,
                              uint16_t manufacturerCode);
#else
  #define emberAfContainsAttribute(endpoint, clusterId, attributeId, mask, manufacturerCode) \
  (emberAfLocateAttributeMetadata(endpoint, clusterId, attributeId, mask, manufacturerCode) != NULL)
#endif

bool emberAfContainsClusterWithMfgCode(uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode);

bool emberAfContainsCluster(uint8_t endpoint, EmberAfClusterId clusterId);

bool emberAfContainsServerWithMfgCode(uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode);

bool emberAfContainsServer(uint8_t endpoint, EmberAfClusterId clusterId);

bool emberAfContainsClientWithMfgCode(uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode);

bool emberAfContainsClient(uint8_t endpoint, EmberAfClusterId clusterId);

EmberAfStatus emberAfWriteAttribute(uint8_t endpoint,
                                    EmberAfClusterId cluster,
                                    EmberAfAttributeId attributeID,
                                    uint8_t mask,
                                    uint8_t* dataPtr,
                                    EmberAfAttributeType dataType);

EmberAfStatus emberAfWriteServerAttribute(uint8_t endpoint,
                                          EmberAfClusterId cluster,
                                          EmberAfAttributeId attributeID,
                                          uint8_t* dataPtr,
                                          EmberAfAttributeType dataType);

EmberAfStatus emberAfWriteClientAttribute(uint8_t endpoint,
                                          EmberAfClusterId cluster,
                                          EmberAfAttributeId attributeID,
                                          uint8_t* dataPtr,
                                          EmberAfAttributeType dataType);

EmberAfStatus emberAfWriteManufacturerSpecificServerAttribute(uint8_t endpoint,
                                                              EmberAfClusterId cluster,
                                                              EmberAfAttributeId attributeID,
                                                              uint16_t manufacturerCode,
                                                              uint8_t* dataPtr,
                                                              EmberAfAttributeType dataType);

EmberAfStatus emberAfWriteManufacturerSpecificClientAttribute(uint8_t endpoint,
                                                              EmberAfClusterId cluster,
                                                              EmberAfAttributeId attributeID,
                                                              uint16_t manufacturerCode,
                                                              uint8_t* dataPtr,
                                                              EmberAfAttributeType dataType);

EmberAfStatus emberAfVerifyAttributeWrite(uint8_t endpoint,
                                          EmberAfClusterId cluster,
                                          EmberAfAttributeId attributeID,
                                          uint8_t mask,
                                          uint16_t manufacturerCode,
                                          uint8_t* dataPtr,
                                          EmberAfAttributeType dataType);

EmberAfStatus emberAfReadAttribute(uint8_t endpoint,
                                   EmberAfClusterId cluster,
                                   EmberAfAttributeId attributeID,
                                   uint8_t mask,
                                   uint8_t* dataPtr,
                                   uint8_t readLength,
                                   EmberAfAttributeType* dataType);

EmberAfStatus emberAfReadServerAttribute(uint8_t endpoint,
                                         EmberAfClusterId cluster,
                                         EmberAfAttributeId attributeID,
                                         uint8_t* dataPtr,
                                         uint8_t readLength);

EmberAfStatus emberAfReadClientAttribute(uint8_t endpoint,
                                         EmberAfClusterId cluster,
                                         EmberAfAttributeId attributeID,
                                         uint8_t* dataPtr,
                                         uint8_t readLength);

EmberAfStatus emberAfReadManufacturerSpecificServerAttribute(uint8_t endpoint,
                                                             EmberAfClusterId cluster,
                                                             EmberAfAttributeId attributeID,
                                                             uint16_t manufacturerCode,
                                                             uint8_t* dataPtr,
                                                             uint8_t readLength);

EmberAfStatus emberAfReadManufacturerSpecificClientAttribute(uint8_t endpoint,
                                                             EmberAfClusterId cluster,
                                                             EmberAfAttributeId attributeID,
                                                             uint16_t manufacturerCode,
                                                             uint8_t* dataPtr,
                                                             uint8_t readLength);

uint8_t emberAfGetDataSize(uint8_t dataType);

uint8_t emberAfGetOpenNetworkDurationSec(void);

#define emberAfClusterIsManufacturerSpecific(cluster) ((cluster)->clusterId >= 0xFC00u)

#define emberAfAttributeIsReadOnly(metadata) (((metadata)->mask & ATTRIBUTE_MASK_WRITABLE) == 0)

#define emberAfAttributeIsClient(metadata) (((metadata)->mask & ATTRIBUTE_MASK_CLIENT) != 0)

#define emberAfAttributeIsTokenized(metadata) (((metadata)->mask & ATTRIBUTE_MASK_TOKENIZE) != 0)

#define emberAfAttributeIsExternal(metadata) (((metadata)->mask & ATTRIBUTE_MASK_EXTERNAL_STORAGE) != 0)

#define emberAfAttributeIsSingleton(metadata) (((metadata)->mask & ATTRIBUTE_MASK_SINGLETON) != 0)

#define emberAfAttributeIsManufacturerSpecific(metadata) (((metadata)->mask & ATTRIBUTE_MASK_MANUFACTURER_SPECIFIC) != 0)

#define emberAfAttributeSize(metadata) ((metadata)->size)

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)
// master array of all defined endpoints
extern EmberAfDefinedEndpoint emAfEndpoints[];

// Master array of all zigbee PRO networks.
extern const EmAfZigbeeProNetwork emAfZigbeeProNetworks[];

// The current zigbee PRO network or NULL.
extern const EmAfZigbeeProNetwork *emAfCurrentZigbeeProNetwork;

// true if the current network is a zigbee PRO network.
#define emAfProIsCurrentNetwork() (emAfCurrentZigbeeProNetwork != NULL)
#endif

uint8_t emberAfEndpointFromIndex(uint8_t index);

uint8_t emberAfIndexFromEndpoint(uint8_t endpoint);

uint8_t emberAfIndexFromEndpointIncludingDisabledEndpoints(uint8_t endpoint);

uint8_t emberAfFindClusterClientEndpointIndex(uint8_t endpoint, EmberAfClusterId clusterId);

uint8_t emberAfFindClusterServerEndpointIndex(uint8_t endpoint, EmberAfClusterId clusterId);

#define emberAfProfileIdFromIndex(index) (emAfEndpoints[(index)].profileId)

#define emberAfDeviceIdFromIndex(index) (emAfEndpoints[(index)].deviceId)

#define emberAfDeviceVersionFromIndex(index) (emAfEndpoints[(index)].deviceVersion)

#define emberAfNetworkIndexFromEndpointIndex(index) (emAfEndpoints[(index)].networkIndex)

uint8_t emberAfNetworkIndexFromEndpoint(uint8_t endpoint);

#define emberAfPrimaryProfileId()       emberAfProfileIdFromIndex(0)

#define emberAfPrimaryEndpoint() (emAfEndpoints[0].endpoint)

uint8_t emberAfEndpointCount(void);

uint8_t emberAfFixedEndpointCount(void);

#ifndef DOXYGEN_SHOULD_SKIP_THIS

enum {
  EMBER_AF_DATA_TYPE_ANALOG     = 0,
  EMBER_AF_DATA_TYPE_DISCRETE   = 1,
  EMBER_AF_DATA_TYPE_NONE       = 2
};
#endif //DOXYGEN_SHOULD_SKIP_THIS

uint8_t emberAfGetAttributeAnalogOrDiscreteType(uint8_t dataType);

bool emberAfIsTypeSigned(EmberAfAttributeType dataType);

uint32_t emberAfGetInt32u(const uint8_t* message, uint16_t currentIndex, uint16_t msgLen);

uint32_t emberAfGetInt24u(const uint8_t* message, uint16_t currentIndex, uint16_t msgLen);

uint16_t emberAfGetInt16u(const uint8_t* message, uint16_t currentIndex, uint16_t msgLen);
uint8_t* emberAfGetString(uint8_t* message, uint16_t currentIndex, uint16_t msgLen);
uint8_t* emberAfGetLongString(uint8_t* message, uint16_t currentIndex, uint16_t msgLen);
/*
 * @brief Extract a ZCL Date from the message buffer and returns it
 * in the given destination. Returns the number of bytes copied.
 */
uint8_t emberAfGetDate(uint8_t* message, uint16_t currentIndex, uint16_t msgLen, EmberAfDate *destination);

#define emberAfGetInt8u(message, currentIndex, msgLen) message[currentIndex]

#define emberAfCopyInt8u(data, index, x) (data[index] = (x))

void emberAfCopyInt16u(uint8_t *data, uint16_t index, uint16_t x);
void emberAfCopyInt24u(uint8_t *data, uint16_t index, uint32_t x);
void emberAfCopyInt32u(uint8_t *data, uint16_t index, uint32_t x);
/*
 * @brief Copy a ZCL string type into a buffer.  The size
 * parameter should indicate the maximum number of characters to copy to the
 * destination buffer not including the length byte.
 */
void emberAfCopyString(uint8_t *dest, uint8_t *src, uint8_t size);
/*
 * @brief Copy a ZCL long string into a buffer.  The size
 * parameter should indicate the maximum number of characters to copy to the
 * destination buffer not including the length bytes.
 */
void emberAfCopyLongString(uint8_t *dest, uint8_t *src, uint16_t size);
/*
 * @brief Determine the length of a Zigbee Cluster Library string
 *   (where the first byte is assumed to be the length).
 */
uint8_t emberAfStringLength(const uint8_t *buffer);
/*
 * @brief Determine the length of a Zigbee Cluster Library long string.
 *   (where the first two bytes are assumed to be the length).
 */
uint16_t emberAfLongStringLength(const uint8_t *buffer);

/*
 * @brief Determine the size of a Zigbee Cluster Library
 * attribute value.
 *
 * The attribute could be non-string, string, or long string. For strings,
 * the size includes the length of the string plus the number of the string's
 * length prefix byte(s).
 *
 * Additionally, checks that the resulting size does not exceed the
 * specified buffer size.
 *
 * @param dataType Zigbee data type
 * @param buffer pointer to a buffer containing a string value
 * @param bufferSize size of the buffer
 *
 * @return 0 if dataType is unrecognized or data size exceeds buffer size
 *.        nonzero for valid data size
 */
uint16_t emberAfAttributeValueSize(EmberAfAttributeType dataType,
                                   const uint8_t *buffer,
                                   const uint16_t bufferSize);
 // end of name API // end of attribute-storage

// @{

bool emberAfIsDeviceEnabled(uint8_t endpoint);

bool emberAfIsDeviceIdentifying(uint8_t endpoint);

void emberAfSetDeviceEnabled(uint8_t endpoint, bool enabled);
 // end of name API // end of device-control

// @{

void sl_zigbee_common_rtos_wakeup_stack_task(void);

bool emberAfEndpointEnableDisable(uint8_t endpoint, bool enable);

bool emberAfEndpointIndexIsEnabled(uint8_t index);

#define EMBER_AF_NEW_IMAGE_VERIFICATION true

#define EMBER_AF_CONTINUE_IMAGE_VERIFY  false

extern const EmberAfOtaImageId emberAfInvalidImageId;

bool emberAfIsThisDataTypeAStringType(EmberAfAttributeType dataType);

bool emberAfIsStringAttributeType(EmberAfAttributeType attributeType);

bool emberAfIsLongStringAttributeType(EmberAfAttributeType attributeType);

#define EMBER_AF_ZCL_SEQUENCE_MASK 0x7Fu

#define EMBER_AF_MESSAGE_TAG_MASK 0x7Fu

uint8_t emberAfNextSequence(void);

uint8_t emberAfGetLastSequenceNumber(void);

int8_t emberAfCompareValues(uint8_t* val1, uint8_t* val2, uint8_t len, bool signedNumber);

void emberAfGetEui64(EmberEUI64 returnEui64);

#ifdef EZSP_HOST
// Normally this is provided by the stack code, but on the host
// it is provided by the application code.
void emberReverseMemCopy(uint8_t* dest, const uint8_t* src, uint16_t length);
#endif // EZSP_HOST

EmberNodeId emberAfGetNodeId(void);

#if defined(DOXYGEN_SHOULD_SKIP_THIS) || defined(EZSP_HOST)

EmberStatus emberAfGenerateRandomKey(EmberKeyData *result);
#else
  #define emberAfGenerateRandomKey(result) emberGenerateRandomKey(result)
#endif

EmberPanId emberAfGetPanId(void);

uint8_t emberAfGetRadioChannel(void);

/*
 * @brief Return a binding index that matches the current incoming message, if
 * known.
 */
uint8_t emberAfGetBindingIndex(void);

/*
 * @brief Return an address index that matches the current incoming message,
 * if known.
 */
uint8_t emberAfGetAddressIndex(void);

EmberNetworkStatus emberAfNetworkState(void);

uint8_t emberAfGetRadioChannel(void);

EmberStatus emberAfGetNetworkParameters(EmberNodeType *nodeType,
                                        EmberNetworkParameters *parameters);

EmberStatus emberAfGetNodeType(EmberNodeType *nodeType);

#define EMBER_AF_REJOIN_DUE_TO_END_DEVICE_MOVE            0xA0u
#define EMBER_AF_REJOIN_DUE_TO_TC_KEEPALIVE_FAILURE       0xA1u
#define EMBER_AF_REJOIN_DUE_TO_CLI_COMMAND                0xA2u
#define EMBER_AF_REJOIN_DUE_TO_WWAH_CONNECTIVITY_MANAGER  0xA3u

#define EMBER_AF_REJOIN_FIRST_REASON                EMBER_AF_REJOIN_DUE_TO_END_DEVICE_MOVE
#define EMBER_AF_REJOIN_LAST_REASON                 EMBER_AF_REJOIN_DUE_TO_END_DEVICE_MOVE

EmberStatus emberAfPermitJoin(uint8_t duration,
                              bool broadcastMgmtPermitJoin);

#ifdef DOXYGEN_SHOULD_SKIP_THIS

EmberStatus emberAfBroadcastPermitJoin(uint8_t duration);
#else
  #define emberAfBroadcastPermitJoin(duration) \
  emberAfPermitJoin((duration), true)
#endif
 // end of name API // end of miscellaneous

// @{

#define EMBER_AF_CLIENT_CLUSTER_TICK true

#define EMBER_AF_SERVER_CLUSTER_TICK false

EmberStatus sl_zigbee_zcl_schedule_tick_extended(uint8_t endpoint,
                                                 EmberAfClusterId clusterId,
                                                 bool isClient,
                                                 uint32_t delayMs,
                                                 EmberAfEventPollControl pollControl,
                                                 EmberAfEventSleepControl sleepControl);

EmberStatus sl_zigbee_zcl_schedule_cluster_tick(uint8_t endpoint,
                                                EmberAfClusterId clusterId,
                                                bool isClient,
                                                uint32_t delayMs,
                                                EmberAfEventSleepControl sleepControl);

EmberStatus sl_zigbee_zcl_schedule_client_tick_extended(uint8_t endpoint,
                                                        EmberAfClusterId clusterId,
                                                        uint32_t delayMs,
                                                        EmberAfEventPollControl pollControl,
                                                        EmberAfEventSleepControl sleepControl);

EmberStatus sl_zigbee_zcl_schedule_client_tick(uint8_t endpoint,
                                               EmberAfClusterId clusterId,
                                               uint32_t delayMs);

EmberStatus sl_zigbee_zcl_schedule_server_tick_extended(uint8_t endpoint,
                                                        EmberAfClusterId clusterId,
                                                        uint32_t delayMs,
                                                        EmberAfEventPollControl pollControl,
                                                        EmberAfEventSleepControl sleepControl);

EmberStatus sl_zigbee_zcl_schedule_server_tick(uint8_t endpoint,
                                               EmberAfClusterId clusterId,
                                               uint32_t delayMs);

EmberStatus sl_zigbee_zcl_deactivate_cluster_tick(uint8_t endpoint,
                                                  EmberAfClusterId clusterId,
                                                  bool isClient);

EmberStatus sl_zigbee_zcl_deactivate_client_tick(uint8_t endpoint,
                                                 EmberAfClusterId clusterId);

EmberStatus sl_zigbee_zcl_deactivate_server_tick(uint8_t endpoint,
                                                 EmberAfClusterId clusterId);

#define emberAfGetCurrentSleepControl() \
  emberAfGetCurrentSleepControlCallback()

#define  emberAfSetDefaultSleepControl(x) \
  emberAfSetDefaultSleepControlCallback(x)

#define emberAfGetDefaultSleepControl() \
  emberAfGetDefaultSleepControlCallback()

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)

#define emberAfAddToCurrentAppTasks(x) \
  emberAfAddToCurrentAppTasksCallback(x)

#define emberAfRemoveFromCurrentAppTasks(x) \
  emberAfRemoveFromCurrentAppTasksCallback(x)

#define emberAfCurrentAppTasks() emberAfGetCurrentAppTasksCallback()
#endif // !DOXYGEN_SHOULD_SKIP_THIS
 // end of name API // end of sleep-control

// @{

EmberStatus emberAfSendResponse(void);

EmberStatus emberAfSendResponseWithCallback(EmberAfMessageSentFunction callback);

EmberStatus emberAfSendMulticast(EmberMulticastId multicastId,
                                 EmberApsFrame *apsFrame,
                                 uint16_t messageLength,
                                 uint8_t* message);

EmberStatus emberAfSendMulticastToBindings(EmberApsFrame *apsFrame,
                                           uint16_t messageLength,
                                           uint8_t* message);

EmberStatus emberAfSendMulticastWithAliasWithCallback(EmberMulticastId multicastId,
                                                      EmberApsFrame *apsFrame,
                                                      uint16_t messageLength,
                                                      uint8_t *message,
                                                      EmberNodeId alias,
                                                      uint8_t sequence,
                                                      EmberAfMessageSentFunction callback);

EmberStatus emberAfSendMulticastWithCallback(EmberMulticastId multicastId,
                                             EmberApsFrame *apsFrame,
                                             uint16_t messageLength,
                                             uint8_t* message,
                                             EmberAfMessageSentFunction callback);

EmberStatus emberAfSendBroadcast(EmberNodeId destination,
                                 EmberApsFrame *apsFrame,
                                 uint16_t messageLength,
                                 uint8_t* message);

EmberStatus emberAfSendBroadcastWithCallback(EmberNodeId destination,
                                             EmberApsFrame *apsFrame,
                                             uint16_t messageLength,
                                             uint8_t* message,
                                             EmberAfMessageSentFunction callback);

EmberStatus emberAfSendBroadcastWithAliasWithCallback(EmberNodeId destination,
                                                      EmberApsFrame *apsFrame,
                                                      uint16_t messageLength,
                                                      uint8_t *message,
                                                      EmberNodeId alias,
                                                      uint8_t sequence,
                                                      EmberAfMessageSentFunction callback);

EmberStatus emberAfSendUnicast(EmberOutgoingMessageType type,
                               uint16_t indexOrDestination,
                               EmberApsFrame *apsFrame,
                               uint16_t messageLength,
                               uint8_t* message);

EmberStatus emberAfSendUnicastWithCallback(EmberOutgoingMessageType type,
                                           uint16_t indexOrDestination,
                                           EmberApsFrame *apsFrame,
                                           uint16_t messageLength,
                                           uint8_t* message,
                                           EmberAfMessageSentFunction callback);

EmberStatus emberAfSendUnicastToBindings(EmberApsFrame *apsFrame,
                                         uint16_t messageLength,
                                         uint8_t* message);

EmberStatus emberAfSendUnicastToBindingsWithCallback(EmberApsFrame *apsFrame,
                                                     uint16_t messageLength,
                                                     uint8_t* message,
                                                     EmberAfMessageSentFunction callback);

EmberStatus emberAfSendInterPan(EmberPanId panId,
                                const EmberEUI64 destinationLongId,
                                EmberNodeId destinationShortId,
                                EmberMulticastId multicastId,
                                EmberAfClusterId clusterId,
                                EmberAfProfileId profileId,
                                uint16_t messageLength,
                                uint8_t* messageBytes);

EmberStatus emberAfSendEndDeviceBind(uint8_t endpoint);

EmberStatus emberAfSendCommandUnicastToBindings(void);

EmberStatus emberAfSendCommandUnicastToBindingsWithCallback(EmberAfMessageSentFunction callback);

EmberStatus emberAfSendCommandMulticast(EmberMulticastId multicastId);

EmberStatus emberAfSendCommandMulticastWithAlias(EmberMulticastId multicastId, EmberNodeId alias, uint8_t sequence);

EmberStatus emberAfSendCommandMulticastWithCallback(EmberMulticastId multicastId,
                                                    EmberAfMessageSentFunction callback);

EmberStatus emberAfSendCommandMulticastToBindings(void);
EmberStatus emberAfSendCommandUnicast(EmberOutgoingMessageType type,
                                      uint16_t indexOrDestination);

EmberStatus emberAfSendCommandUnicastWithCallback(EmberOutgoingMessageType type,
                                                  uint16_t indexOrDestination,
                                                  EmberAfMessageSentFunction callback);

EmberStatus emberAfSendCommandBroadcast(EmberNodeId destination);

EmberStatus emberAfSendCommandBroadcastWithCallback(EmberNodeId destination,
                                                    EmberAfMessageSentFunction callback);

EmberStatus emberAfSendCommandBroadcastWithAliasWithCallback(EmberNodeId destination,
                                                             EmberNodeId alias,
                                                             uint8_t sequence,
                                                             EmberAfMessageSentFunction callback);

EmberStatus emberAfSendCommandBroadcastWithAlias(EmberNodeId destination,
                                                 EmberNodeId alias,
                                                 uint8_t sequence);
EmberStatus emberAfSendCommandInterPan(EmberPanId panId,
                                       const EmberEUI64 destinationLongId,
                                       EmberNodeId destinationShortId,
                                       EmberMulticastId multicastId,
                                       EmberAfProfileId profileId);

EmberStatus emberAfSendDefaultResponse(const EmberAfClusterCommand *cmd,
                                       EmberAfStatus status);

EmberStatus emberAfSendDefaultResponseWithCallback(const EmberAfClusterCommand *cmd,
                                                   EmberAfStatus status,
                                                   EmberAfMessageSentFunction callback);

EmberStatus emberAfSendImmediateDefaultResponse(EmberAfStatus status);

EmberStatus emberAfSendImmediateDefaultResponseWithCallback(EmberAfStatus status,
                                                            EmberAfMessageSentFunction callback);

uint8_t emberAfMaximumApsPayloadLength(EmberOutgoingMessageType type,
                                       uint16_t indexOrDestination,
                                       EmberApsFrame *apsFrame);

EmberApsFrame *emberAfGetCommandApsFrame(void);

void emberAfSetCommandEndpoints(uint8_t sourceEndpoint, uint8_t destinationEndpoint);

#define EMBER_AF_CLIENT_CLUSTER_DISCOVERY false

#define EMBER_AF_SERVER_CLUSTER_DISCOVERY true

EmberStatus emberAfFindDevicesByProfileAndCluster(EmberNodeId target,
                                                  EmberAfProfileId profileId,
                                                  EmberAfClusterId clusterId,
                                                  bool serverCluster,
                                                  EmberAfServiceDiscoveryCallback *callback);

EmberStatus emberAfFindClustersByDeviceAndEndpoint(EmberNodeId target,
                                                   uint8_t targetEndpoint,
                                                   EmberAfServiceDiscoveryCallback *callback);

EmberStatus emberAfFindIeeeAddress(EmberNodeId shortAddress,
                                   EmberAfServiceDiscoveryCallback *callback);

EmberStatus emberAfFindNodeId(EmberEUI64 longAddress,
                              EmberAfServiceDiscoveryCallback *callback);

EmberStatus emberAfFindActiveEndpoints(EmberNodeId target,
                                       EmberAfServiceDiscoveryCallback *callback);

uint8_t emberAfAddAddressTableEntry(EmberEUI64 longId, EmberNodeId shortId);

EmberStatus emberAfSetAddressTableEntry(uint8_t index,
                                        EmberEUI64 longId,
                                        EmberNodeId shortId);

EmberStatus emberAfRemoveAddressTableEntry(uint8_t index);

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)

#define emberAfCurrentCommand() (emAfCurrentCommand)
extern EmberAfClusterCommand *emAfCurrentCommand;
#endif

#define emberAfCurrentEndpoint() (emberAfCurrentCommand()->apsFrame->destinationEndpoint)

#ifdef DOXYGEN_SHOULD_SKIP_THIS

EmberStatus emberAfInitiateKeyEstablishment(EmberNodeId nodeId, uint8_t endpoint);

EmberStatus emberAfInitiateInterPanKeyEstablishment(EmberPanId panId,
                                                    const EmberEUI64 eui64);

bool emberAfPerformingKeyEstablishment(void);

EmberStatus emberAfInitiatePartnerLinkKeyExchange(EmberNodeId target,
                                                  uint8_t endpoint,
                                                  EmberAfPartnerLinkKeyExchangeCallback *callback);
#else
  #define emberAfInitiateKeyEstablishment(nodeId, endpoint) \
  emberAfInitiateKeyEstablishmentCallback(nodeId, endpoint)
  #define emberAfInitiateInterPanKeyEstablishment(panId, eui64) \
  emberAfInitiateInterPanKeyEstablishmentCallback(panId, eui64)
  #define emberAfPerformingKeyEstablishment() \
  emberAfPerformingKeyEstablishmentCallback()
  #define emberAfInitiatePartnerLinkKeyExchange(target, endpoint, callback) \
  emberAfInitiatePartnerLinkKeyExchangeCallback(target, endpoint, callback)
#endif

bool emberAfIsCurrentSecurityProfileSmartEnergy(void);
 // end of name API // end of messaging

// @{

#ifdef UC_BUILD

sl_status_t sl_zigbee_subscribe_to_zcl_commands(uint16_t cluster_id,
                                                uint16_t manufacturer_id,
                                                uint8_t direction,
                                                sl_service_function_t service_function);
#endif // UC_BUILD
 // end of name API // end of zcl_commands

// Frame control fields (8 bits total)
// Bits 0 and 1 are Frame Type Sub-field
#define ZCL_FRAME_CONTROL_FRAME_TYPE_MASK     (BIT(0) | BIT(1))
#define ZCL_CLUSTER_SPECIFIC_COMMAND          BIT(0)
#define ZCL_PROFILE_WIDE_COMMAND              0u
#define ZCL_GLOBAL_COMMAND                    (ZCL_PROFILE_WIDE_COMMAND)
// Bit 2 is Manufacturer Specific Sub-field
#define ZCL_MANUFACTURER_SPECIFIC_MASK        BIT(2)
// Bit 3 is Direction Sub-field
#define ZCL_FRAME_CONTROL_DIRECTION_MASK      BIT(3)
#define ZCL_FRAME_CONTROL_SERVER_TO_CLIENT    BIT(3)
#define ZCL_FRAME_CONTROL_CLIENT_TO_SERVER    0u
// Bit 4 is Disable Default Response Sub-field
#define ZCL_DISABLE_DEFAULT_RESPONSE_MASK     BIT(4)
// Bits 5 to 7 are reserved

#define ZCL_DIRECTION_CLIENT_TO_SERVER 0u
#define ZCL_DIRECTION_SERVER_TO_CLIENT 1u

// Packet must be at least 3 bytes for ZCL overhead.
//   Frame Control (1-byte)
//   Sequence Number (1-byte)
//   Command Id (1-byte)
#define EMBER_AF_ZCL_OVERHEAD                       3
#define EMBER_AF_ZCL_MANUFACTURER_SPECIFIC_OVERHEAD 5

// Permitted values for emberAfSetFormAndJoinMode
#define FIND_AND_JOIN_MODE_ALLOW_2_4_GHZ        BIT(0)
#define FIND_AND_JOIN_MODE_ALLOW_SUB_GHZ        BIT(1)
#define FIND_AND_JOIN_MODE_ALLOW_BOTH           (FIND_AND_JOIN_MODE_ALLOW_2_4_GHZ | FIND_AND_JOIN_MODE_ALLOW_SUB_GHZ)
 // end of zcl-macros

// @{

EmberStatus emberAfFormNetwork(EmberNetworkParameters *parameters);

EmberStatus emberAfJoinNetwork(EmberNetworkParameters *parameters);

#ifdef DOXYGEN_SHOULD_SKIP_THIS

EmberStatus emberAfFindUnusedPanIdAndForm(void);
EmberStatus emberAfStartSearchForJoinableNetwork(void);
#else
  #define emberAfFindUnusedPanIdAndForm()        emberAfFindUnusedPanIdAndFormCallback()
  #define emberAfStartSearchForJoinableNetwork() emberAfStartSearchForJoinableNetworkCallback()
#endif

EmberStatus emberAfPushNetworkIndex(uint8_t networkIndex);
EmberStatus emberAfPushCallbackNetworkIndex(void);
EmberStatus emberAfPushEndpointNetworkIndex(uint8_t endpoint);
EmberStatus emberAfPopNetworkIndex(void);
uint8_t emberAfPrimaryEndpointForNetworkIndex(uint8_t networkIndex);
uint8_t emberAfPrimaryEndpointForCurrentNetworkIndex(void);

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)

EmberStatus emAfInitializeNetworkIndexStack(void);
void emAfAssertNetworkIndexStackIsEmpty(void);
#endif
 // end of API // end of network-utility-functions

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)
  #if defined(EMBER_TEST)
    #define EMBER_TEST_ASSERT(x) assert(x)
  #else
    #define EMBER_TEST_ASSERT(x)
  #endif
#endif

// Note:  This is a #define for now but could be a real function call in the future.
#define emberAfMaxPowerLevel() (3)

#if !defined(DOXYGEN_SHOULD_SKIP_THIS)
#ifdef UC_BUILD
// This macro used to be generated by AppBuilder, defining it disables legacy CLI commands.
// Legacy CLI is no longer supported and will eventually be cleaned up (see EMZIGBEE-868),
// until then define this statically.
#define EMBER_AF_GENERATE_CLI
#endif // UC_BUILD
#endif // !DOXYGEN_SHOULD_SKIP_THIS

#endif // SILABS_AF_API

API#

#define

Return true if the cluster is in the manufacturer-specific range.

#define

Return true if the attribute is read only.

#define

Return true if this is a client attribute and false if if it is a server attribute.

#define

Return true if the attribute is saved to a token.

#define

Return true if the attribute is saved in external storage.

#define

Return true if the attribute is a singleton.

#define

Return true if the attribute is manufacturer specific.

#define

Return the size of attribute in bytes.

#define

Take an index of an endpoint and return the profile ID for it.

#define

Take an index of an endpoint and return the device ID for it.

#define

Take an index of an endpoint and return the device version for it.

#define

Take an index of an endpoint and return the network index for it.

#define

Return the primary profile ID.

#define

Return the primary endpoint.

#define
emberAfGetInt8u (message, currentIndex, msgLen)

Extract a single byte out of the message.

#define
emberAfCopyInt8u (data, index, x)

Copy a uint8_t from variable into buffer.

#define

Indicate a new image verification is taking place.

#define

Indicate the continuation of an image verification already in progress.

#define

The mask applied by emberAfNextSequence when generating ZCL sequence numbers.

#define

The mask applied to generated message tags used by the framework when sending messages via EZSP. Customers who call ezspSend functions directly must use message tags outside this mask.

#define

Return true if the cluster is in the manufacturer-specific range.

#define

Return true if the cluster is in the manufacturer-specific range.

#define

Return true if the cluster is in the manufacturer-specific range.

#define

Return true if the cluster is in the manufacturer-specific range.

#define

Return true if the cluster is in the manufacturer-specific range.

#define

Return true if the cluster is in the manufacturer-specific range.

#define

Friendly define for use in the scheduling or canceling client events with sl_zigbee_zcl_schedule_cluster_tick() and sl_zigbee_zcl_deactivate_cluster_tick().

#define

Friendly define for use in the scheduling or canceling server events with sl_zigbee_zcl_schedule_cluster_tick() and sl_zigbee_zcl_deactivate_cluster_tick().

#define

Retrieve the most restrictive sleep control value for all scheduled events. This function is used by emberAfOkToNap and emberAfOkToHibernate to makes sure that there are no events scheduled which will keep the device from hibernating or napping.

#define

Set the default sleep control value against which all scheduled event sleep control values will be evaluated. This can be used to keep a device awake for an extended period of time by setting the default to EMBER_AF_STAY_AWAKE and then resetting the value to EMBER_AF_OK_TO_HIBERNATE once the wake period is complete.

#define

Retrieve the default sleep control against which all event sleep control values are evaluated. The default sleep control value is initialized to EMBER_AF_OK_TO_HIBERNATE but can be changed by the application at any time using the emberAfSetDefaultSleepControl() function.

#define

Friendly define for use in discovering client clusters with emberAfFindDevicesByProfileAndCluster().

#define

Friendly define for use in discovering server clusters with emberAfFindDevicesByProfileAndCluster().

#define

Return the current endpoint that is being served.

This variable defines an invalid image ID. It is used to determine if a returned EmberAfOtaImageId is valid or not. This is done by passing the data to the function emberAfIsOtaImageIdValid().

emberAfLocateAttributeMetadata(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attributeId, uint8_t mask, uint16_t manufacturerCode)

Locate attribute metadata.

bool
emberAfContainsAttribute(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attributeId, uint8_t mask, uint16_t manufacturerCode)

Return true if the attribute exists.

bool
emberAfContainsClusterWithMfgCode(uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode)

Return true if an endpoint contains a cluster, checking for mfg code.

bool
emberAfContainsCluster(uint8_t endpoint, EmberAfClusterId clusterId)

Return true if the endpoint contains the ZCL cluster with specified ID.

bool
emberAfContainsServerWithMfgCode(uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode)

Return true if the endpoint has a cluster server, checking for the mfg code.

bool
emberAfContainsServer(uint8_t endpoint, EmberAfClusterId clusterId)

Return true if the endpoint contains the ZCL server with a specified ID.

bool
emberAfContainsClientWithMfgCode(uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode)

Return true if the endpoint contains the cluster client.

bool
emberAfContainsClient(uint8_t endpoint, EmberAfClusterId clusterId)

Return true if the endpoint contains the ZCL client with a specified ID.

emberAfWriteAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t mask, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write an attribute performing all checks.

emberAfWriteServerAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write a cluster server attribute.

emberAfWriteClientAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write a cluster client attribute.

emberAfWriteManufacturerSpecificServerAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint16_t manufacturerCode, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write a manufacturer-specific server attribute.

emberAfWriteManufacturerSpecificClientAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint16_t manufacturerCode, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write a manufacturer-specific client attribute.

emberAfVerifyAttributeWrite(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t mask, uint16_t manufacturerCode, uint8_t *dataPtr, EmberAfAttributeType dataType)

Test the success of attribute write.

emberAfReadAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t mask, uint8_t *dataPtr, uint8_t readLength, EmberAfAttributeType *dataType)

Read the attribute value performing all the checks.

emberAfReadServerAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t *dataPtr, uint8_t readLength)

Read the server attribute value performing all the checks.

emberAfReadClientAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t *dataPtr, uint8_t readLength)

Read the client attribute value, performing all the checks.

emberAfReadManufacturerSpecificServerAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint16_t manufacturerCode, uint8_t *dataPtr, uint8_t readLength)

Read the manufacturer-specific server attribute value, performing all checks.

emberAfReadManufacturerSpecificClientAttribute(uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint16_t manufacturerCode, uint8_t *dataPtr, uint8_t readLength)

Read the manufacturer-specific client attribute value, performing all checks.

uint8_t
emberAfGetDataSize(uint8_t dataType)

Return the size of the ZCL data in bytes.

uint8_t

Return the number of seconds the network remains open.

uint8_t

Take an index of an endpoint and return the Zigbee endpoint.

uint8_t
emberAfIndexFromEndpoint(uint8_t endpoint)
uint8_t
emberAfFindClusterClientEndpointIndex(uint8_t endpoint, EmberAfClusterId clusterId)
uint8_t
emberAfFindClusterServerEndpointIndex(uint8_t endpoint, EmberAfClusterId clusterId)
uint8_t

Return the network index of a given endpoint.

uint8_t

Return the total number of endpoints (dynamic and pre-compiled).

uint8_t

Return the number of pre-compiled endpoints.

uint8_t

Return the type of the attribute, either ANALOG, DISCRETE, or NONE.

bool
emberAfIsTypeSigned(EmberAfAttributeType dataType)

Return true if type is signed, false otherwise.

uint32_t
emberAfGetInt32u(const uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a 32-bit integer from the message buffer.

uint32_t
emberAfGetInt24u(const uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a 24-bit integer from the message buffer.

uint16_t
emberAfGetInt16u(const uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a 16-bit integer from the message buffer.

uint8_t *
emberAfGetString(uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a ZCL string from the message buffer.

uint8_t *
emberAfGetLongString(uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a ZCL long string from the message buffer.

uint8_t
emberAfGetDate(uint8_t *message, uint16_t currentIndex, uint16_t msgLen, EmberAfDate *destination)

Return true if the cluster is in the manufacturer-specific range.

void
emberAfCopyInt16u(uint8_t *data, uint16_t index, uint16_t x)

Copy a uint16_t value into a buffer.

void
emberAfCopyInt24u(uint8_t *data, uint16_t index, uint32_t x)

Copy a uint24_t value into a buffer.

void
emberAfCopyInt32u(uint8_t *data, uint16_t index, uint32_t x)

Copy a uint32_t value into a buffer.

void
emberAfCopyString(uint8_t *dest, uint8_t *src, uint8_t size)

Return true if the cluster is in the manufacturer-specific range.

void
emberAfCopyLongString(uint8_t *dest, uint8_t *src, uint16_t size)

Return true if the cluster is in the manufacturer-specific range.

uint8_t
emberAfStringLength(const uint8_t *buffer)

Return true if the cluster is in the manufacturer-specific range.

uint16_t
emberAfLongStringLength(const uint8_t *buffer)

Return true if the cluster is in the manufacturer-specific range.

uint16_t
emberAfAttributeValueSize(EmberAfAttributeType dataType, const uint8_t *buffer, const uint16_t bufferSize)

Return true if the cluster is in the manufacturer-specific range.

bool
emberAfIsDeviceEnabled(uint8_t endpoint)

Check whether the endpoint is enabled.

bool
emberAfIsDeviceIdentifying(uint8_t endpoint)

Check whether the endpoint is identifying.

void
emberAfSetDeviceEnabled(uint8_t endpoint, bool enabled)

Enable or disables an endpoint.

void

When running on an OS, this API sets the Zigbee stack task to ready.

bool
emberAfEndpointEnableDisable(uint8_t endpoint, bool enable)

Enable/disable endpoints.

bool

Determine if an endpoint at the specified index is enabled or disabled.

bool
emberAfIsThisDataTypeAStringType(EmberAfAttributeType dataType)

Return true if a given ZCL data type is a string type.

bool
emberAfIsStringAttributeType(EmberAfAttributeType attributeType)

Return true if the given attribute type is a string.

bool
emberAfIsLongStringAttributeType(EmberAfAttributeType attributeType)

Return true if the given attribute type is a long string.

uint8_t

Increment the ZCL sequence number and returns the value.

uint8_t

Retrieve the last sequence number that was used.

int8_t
emberAfCompareValues(uint8_t *val1, uint8_t *val2, uint8_t len, bool signedNumber)

Simple integer comparison function. Compares two values of a known length as integers. Signed integer comparison are supported for numbers with length of 4 (bytes) or less. The integers are in native endianness.

void
emberAfGetEui64(EmberEUI64 returnEui64)

Populate the passed EUI64 with the local EUI64 MAC address.

EmberNodeId

Return the node ID of the local node.

EmberStatus
emberAfGenerateRandomKey(EmberKeyData *result)

Generate a random key (link, network, or master).

EmberPanId

Return the PAN ID of the local node.

uint8_t

Return the radioChannel of the current network.

uint8_t

Return true if the cluster is in the manufacturer-specific range.

uint8_t

Return true if the cluster is in the manufacturer-specific range.

EmberNetworkStatus

Return the current network state. This call caches the results on the host to prevent frequent EZSP transactions.

EmberStatus
emberAfGetNetworkParameters(EmberNodeType *nodeType, EmberNetworkParameters *parameters)

Return the current network parameters.

EmberStatus
emberAfGetNodeType(EmberNodeType *nodeType)

Returns the current node type.

EmberStatus
emberAfPermitJoin(uint8_t duration, bool broadcastMgmtPermitJoin)

Enable local permit join and optionally broadcasts the ZDO Mgmt_Permit_Join_req message. This API can be called from any device type and still return EMBER_SUCCESS. If the API is called from an end device, the permit association bit will just be left off.

EmberStatus
emberAfBroadcastPermitJoin(uint8_t duration)

Enable local permit join and broadcasts the ZDO Mgmt_Permit_Join_req message. This API can be called from any device type and still return EMBER_SUCCESS. If the API is called from an end device, the permit association bit will just be left off.

EmberStatus
sl_zigbee_zcl_schedule_tick_extended(uint8_t endpoint, EmberAfClusterId clusterId, bool isClient, uint32_t delayMs, EmberAfEventPollControl pollControl, EmberAfEventSleepControl sleepControl)

Schedule a cluster-related event inside the application framework's event mechanism. This function provides a wrapper for the Ember stack event mechanism which allows the cluster code to access its events by their endpoint, cluster ID, and client/server identity. The passed poll and sleep controls allow the cluster to indicate whether it needs to long or short poll and whether it needs to stay awake or if it can sleep.

EmberStatus
sl_zigbee_zcl_schedule_cluster_tick(uint8_t endpoint, EmberAfClusterId clusterId, bool isClient, uint32_t delayMs, EmberAfEventSleepControl sleepControl)

Schedule a cluster-related event inside the This function is a wrapper for ::emberAfScheduleTickExtended. The cluster on the given endpoint will be set to long poll if sleepControl is set to EMBER_AF_OK_TO_HIBERNATE or will be set to short poll otherwise. It will stay awake if sleepControl is EMBER_AF_STAY_AWAKE and will sleep otherwise.

EmberStatus
sl_zigbee_zcl_schedule_client_tick_extended(uint8_t endpoint, EmberAfClusterId clusterId, uint32_t delayMs, EmberAfEventPollControl pollControl, EmberAfEventSleepControl sleepControl)

Schedule a cluster client event. This function is a wrapper for sl_zigbee_zcl_schedule_tick_extended.

EmberStatus
sl_zigbee_zcl_schedule_client_tick(uint8_t endpoint, EmberAfClusterId clusterId, uint32_t delayMs)

Schedule a cluster client event. This function is a wrapper for sl_zigbee_zcl_schedule_client_tick_extended. It indicates that the cluster client on the given endpoint can long poll and can sleep.

EmberStatus
sl_zigbee_zcl_schedule_server_tick_extended(uint8_t endpoint, EmberAfClusterId clusterId, uint32_t delayMs, EmberAfEventPollControl pollControl, EmberAfEventSleepControl sleepControl)

Schedule a cluster server event. This function is a wrapper for sl_zigbee_zcl_schedule_tick_extended.

EmberStatus
sl_zigbee_zcl_schedule_server_tick(uint8_t endpoint, EmberAfClusterId clusterId, uint32_t delayMs)

Schedule a cluster server event. This function is a wrapper for sl_zigbee_zcl_schedule_server_tick_extended. It indicates that the cluster server on the given endpoint can long poll and can sleep.

EmberStatus
sl_zigbee_zcl_deactivate_cluster_tick(uint8_t endpoint, EmberAfClusterId clusterId, bool isClient)

Deactivate a cluster-related event. This function provides a wrapper for the Ember stack's event mechanism which allows an event to be accessed by its endpoint, cluster id, and client/server identity.

EmberStatus
sl_zigbee_zcl_deactivate_client_tick(uint8_t endpoint, EmberAfClusterId clusterId)

Deactivate a cluster client event. This function is a wrapper for sl_zigbee_zcl_deactivate_cluster_tick.

EmberStatus
sl_zigbee_zcl_deactivate_server_tick(uint8_t endpoint, EmberAfClusterId clusterId)

Deactivate a cluster server event. This function is a wrapper for sl_zigbee_zcl_deactivate_cluster_tick.

EmberStatus

Send a ZCL response, based on the information that is currently in the outgoing buffer. It is expected that a complete ZCL message is present, including header. The application may use this method directly from within the message handling function and associated callbacks. However, this will result in the response being sent before the APS ACK is sent which is not ideal.

EmberStatus
emberAfSendResponseWithCallback(EmberAfMessageSentFunction callback)

Send ZCL response with attached message sent callback.

EmberStatus
emberAfSendMulticast(EmberMulticastId multicastId, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Sends multicast.

EmberStatus
emberAfSendMulticastToBindings(EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Multicasts the message to the group in the binding table that matches the cluster and source endpoint in the APS frame. Note: if the binding table contains many matching entries, calling this API cause a significant amount of network traffic. Care should be taken when considering the effects of broadcasts in a network.

EmberStatus
emberAfSendMulticastWithAliasWithCallback(EmberMulticastId multicastId, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberNodeId alias, uint8_t sequence, EmberAfMessageSentFunction callback)

Send Multicast with alias with attached message sent callback.

EmberStatus
emberAfSendMulticastWithCallback(EmberMulticastId multicastId, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberAfMessageSentFunction callback)

Send multicast with attached message sent callback.

EmberStatus
emberAfSendBroadcast(EmberNodeId destination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Send broadcast.

EmberStatus
emberAfSendBroadcastWithCallback(EmberNodeId destination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberAfMessageSentFunction callback)

Send broadcast with attached message sent callback.

EmberStatus
emberAfSendBroadcastWithAliasWithCallback(EmberNodeId destination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberNodeId alias, uint8_t sequence, EmberAfMessageSentFunction callback)

Send broadcast with alias with attached message sent callback.

EmberStatus
emberAfSendUnicast(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Send unicast.

EmberStatus
emberAfSendUnicastWithCallback(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberAfMessageSentFunction callback)

Send unicast with attached message sent callback.

EmberStatus
emberAfSendUnicastToBindings(EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Unicast the message to each remote node in the binding table that matches the cluster and source endpoint in the APS frame. Note: if the binding table contains many matching entries, calling this API cause a significant amount of network traffic.

EmberStatus
emberAfSendUnicastToBindingsWithCallback(EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberAfMessageSentFunction callback)

emberAfSendUnicastToBindings with attached message sent callback.

EmberStatus
emberAfSendInterPan(EmberPanId panId, const EmberEUI64 destinationLongId, EmberNodeId destinationShortId, EmberMulticastId multicastId, EmberAfClusterId clusterId, EmberAfProfileId profileId, uint16_t messageLength, uint8_t *messageBytes)

Send interpan message.

EmberStatus
emberAfSendEndDeviceBind(uint8_t endpoint)

Send end device binding request.

EmberStatus

Send the command prepared with emberAfFill.... macro.

EmberStatus
emberAfSendCommandUnicastToBindingsWithCallback(EmberAfMessageSentFunction callback)

emberAfSendCommandUnicastToBindings with attached message sent callback.

EmberStatus
emberAfSendCommandMulticast(EmberMulticastId multicastId)

Send the command prepared with emberAfFill.... macro.

EmberStatus
emberAfSendCommandMulticastWithAlias(EmberMulticastId multicastId, EmberNodeId alias, uint8_t sequence)

Send the command prepared with emberAfFill.... macro.

EmberStatus
emberAfSendCommandMulticastWithCallback(EmberMulticastId multicastId, EmberAfMessageSentFunction callback)

emberAfSendCommandMulticast with attached message sent callback.

EmberStatus

Send the command prepared with emberAfFill.... macro.

EmberStatus
emberAfSendCommandUnicast(EmberOutgoingMessageType type, uint16_t indexOrDestination)

Send the command prepared with emberAfFill.... macro.

EmberStatus
emberAfSendCommandUnicastWithCallback(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberAfMessageSentFunction callback)

emberAfSendCommandUnicast with attached message sent callback.

EmberStatus
emberAfSendCommandBroadcast(EmberNodeId destination)

Send the command prepared with emberAfFill.... macro.

EmberStatus
emberAfSendCommandBroadcastWithCallback(EmberNodeId destination, EmberAfMessageSentFunction callback)

emberAfSendCommandBroadcast with attached message sent callback.

EmberStatus
emberAfSendCommandBroadcastWithAliasWithCallback(EmberNodeId destination, EmberNodeId alias, uint8_t sequence, EmberAfMessageSentFunction callback)

emberAfSendCommandBroadcast from alias with attached message sent callback.

EmberStatus
emberAfSendCommandBroadcastWithAlias(EmberNodeId destination, EmberNodeId alias, uint8_t sequence)

Send the command prepared with emberAfFill.... macro.

EmberStatus
emberAfSendCommandInterPan(EmberPanId panId, const EmberEUI64 destinationLongId, EmberNodeId destinationShortId, EmberMulticastId multicastId, EmberAfProfileId profileId)

Send the command prepared with emberAfFill.... macro.

EmberStatus
emberAfSendDefaultResponse(const EmberAfClusterCommand *cmd, EmberAfStatus status)

Send a default response to a cluster command.

EmberStatus
emberAfSendDefaultResponseWithCallback(const EmberAfClusterCommand *cmd, EmberAfStatus status, EmberAfMessageSentFunction callback)

emberAfSendDefaultResponse with attached message sent callback.

EmberStatus

Send a default response to a cluster command using the current command.

EmberStatus
emberAfSendImmediateDefaultResponseWithCallback(EmberAfStatus status, EmberAfMessageSentFunction callback)

emberAfSendImmediateDefaultResponse with attached message sent callback.

uint8_t
emberAfMaximumApsPayloadLength(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame)

Return the maximum size of the payload that the Application Support sub-layer will accept for the given message type, destination, and APS frame.

EmberApsFrame *

Access to client API APS frame.

void
emberAfSetCommandEndpoints(uint8_t sourceEndpoint, uint8_t destinationEndpoint)

Set the source and destination endpoints in the client API APS frame.

EmberStatus
emberAfFindDevicesByProfileAndCluster(EmberNodeId target, EmberAfProfileId profileId, EmberAfClusterId clusterId, bool serverCluster, EmberAfServiceDiscoveryCallback *callback)

Use this function to find devices in the network with endpoints matching a given profile ID and cluster ID in their descriptors. Target may either be a specific device, or the broadcast address EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS.

EmberStatus
emberAfFindClustersByDeviceAndEndpoint(EmberNodeId target, uint8_t targetEndpoint, EmberAfServiceDiscoveryCallback *callback)

Use this function to find all of the given in and out clusters implemented on a devices given endpoint. Target should only be the short address of a specific device.

EmberStatus
emberAfFindIeeeAddress(EmberNodeId shortAddress, EmberAfServiceDiscoveryCallback *callback)

Use this function to initiate a discovery for the IEEE address of the specified node id. This will send a unicast sent to the target node ID.

EmberStatus
emberAfFindNodeId(EmberEUI64 longAddress, EmberAfServiceDiscoveryCallback *callback)

Use this function to initiate a discovery for the short ID of the specified long address. This will send a broadcast to all rx-on-when-idle devices (non-sleepies).

EmberStatus
emberAfFindActiveEndpoints(EmberNodeId target, EmberAfServiceDiscoveryCallback *callback)

Initiate an Active Endpoint request ZDO message to the target node ID.

uint8_t
emberAfAddAddressTableEntry(EmberEUI64 longId, EmberNodeId shortId)

Use this function to add an entry for a remote device to the address table.

EmberStatus
emberAfSetAddressTableEntry(uint8_t index, EmberEUI64 longId, EmberNodeId shortId)

Use this function to add an entry for a remote device to the address table at a specific location.

EmberStatus

Use this function to remove a specific entry from the address table.

EmberStatus
emberAfInitiateKeyEstablishment(EmberNodeId nodeId, uint8_t endpoint)

Use this function to initiate key establishment with a remote node. emberAfKeyEstablishmentCallback will be called as events occur and when key establishment completes.

EmberStatus
emberAfInitiateInterPanKeyEstablishment(EmberPanId panId, const EmberEUI64 eui64)

Use this function to initiate key establishment with a remote node on a different PAN. emberAfInterPanKeyEstablishmentCallback will be called as events occur and when key establishment completes.

bool

Use this function to tell if the device is in the process of performing key establishment.

EmberStatus
emberAfInitiatePartnerLinkKeyExchange(EmberNodeId target, uint8_t endpoint, EmberAfPartnerLinkKeyExchangeCallback *callback)

Use this function to initiate partner link key exchange with a remote node.

bool

Use this function to determine if the security profile of the current network was set to Smart Energy. The security profile is configured in AppBuilder. @ return true if the security profile is Smart Energy or false otherwise.

sl_status_t
sl_zigbee_subscribe_to_zcl_commands(uint16_t cluster_id, uint16_t manufacturer_id, uint8_t direction, sl_service_function_t service_function)

Runtime subscription to specific incoming ZCL commands.

EmberStatus
emberAfFormNetwork(EmberNetworkParameters *parameters)

Use this function to form a new network using the specified network parameters.

EmberStatus
emberAfJoinNetwork(EmberNetworkParameters *parameters)

Use this function to associate with the network using the specified network parameters.

EmberStatus

Use this function to find an unused PAN id and form a new network.

EmberStatus

Use this function to find a joinable network and join it.

EmberStatus
emberAfPushNetworkIndex(uint8_t networkIndex)

Set the current network to that of the given index and adds it to the stack of networks maintained by the framework. Every call to this API must be paired with a subsequent call to emberAfPopNetworkIndex.

EmberStatus

Set the current network to the callback network and adds it to the stack of networks maintained by the framework. Every call to this API must be paired with a subsequent call to emberAfPopNetworkIndex.

EmberStatus

Set the current network to that of the given endpoint and adds it to the stack of networks maintained by the framework. Every call to this API must be paired with a subsequent call to emberAfPopNetworkIndex.

EmberStatus

Remove the topmost network from the stack of networks maintained by the framework and sets the current network to the new topmost network. Every call to this API must be paired with a prior call to emberAfPushNetworkIndex, emberAfPushCallbackNetworkIndex, or emberAfPushEndpointNetworkIndex.

uint8_t

Return the primary endpoint of the given network index or 0xFF if no endpoints belong to the network.emberAfStatus.

uint8_t

Returns the primary endpoint of the current network index or 0xFF if no endpoints belong to the current network.

Macros#

#define
CONFIGURATION_HEADER "app/framework/util/config.h"
#define
#define
ZCL_GLOBAL_COMMAND (ZCL_PROFILE_WIDE_COMMAND)
#define
FIND_AND_JOIN_MODE_ALLOW_BOTH (FIND_AND_JOIN_MODE_ALLOW_2_4_GHZ | FIND_AND_JOIN_MODE_ALLOW_SUB_GHZ)
#define

The maximum power level that can be used by the chip.

API Documentation#

emberAfClusterIsManufacturerSpecific#

#define emberAfClusterIsManufacturerSpecific
Value:
(cluster)

Return true if the cluster is in the manufacturer-specific range.


Definition at line 532 of file app/framework/include/af.h

emberAfAttributeIsReadOnly#

#define emberAfAttributeIsReadOnly
Value:
(metadata)

Return true if the attribute is read only.


Definition at line 539 of file app/framework/include/af.h

emberAfAttributeIsClient#

#define emberAfAttributeIsClient
Value:
(metadata)

Return true if this is a client attribute and false if if it is a server attribute.


Definition at line 547 of file app/framework/include/af.h

emberAfAttributeIsTokenized#

#define emberAfAttributeIsTokenized
Value:
(metadata)

Return true if the attribute is saved to a token.


Definition at line 554 of file app/framework/include/af.h

emberAfAttributeIsExternal#

#define emberAfAttributeIsExternal
Value:
(metadata)

Return true if the attribute is saved in external storage.


Definition at line 561 of file app/framework/include/af.h

emberAfAttributeIsSingleton#

#define emberAfAttributeIsSingleton
Value:
(metadata)

Return true if the attribute is a singleton.


Definition at line 568 of file app/framework/include/af.h

emberAfAttributeIsManufacturerSpecific#

#define emberAfAttributeIsManufacturerSpecific
Value:
(metadata)

Return true if the attribute is manufacturer specific.


Definition at line 575 of file app/framework/include/af.h

emberAfAttributeSize#

#define emberAfAttributeSize
Value:
(metadata)

Return the size of attribute in bytes.


Definition at line 582 of file app/framework/include/af.h

emberAfProfileIdFromIndex#

#define emberAfProfileIdFromIndex
Value:
(index)

Take an index of an endpoint and return the profile ID for it.


Definition at line 645 of file app/framework/include/af.h

emberAfDeviceIdFromIndex#

#define emberAfDeviceIdFromIndex
Value:
(index)

Take an index of an endpoint and return the device ID for it.


Definition at line 650 of file app/framework/include/af.h

emberAfDeviceVersionFromIndex#

#define emberAfDeviceVersionFromIndex
Value:
(index)

Take an index of an endpoint and return the device version for it.


Definition at line 655 of file app/framework/include/af.h

emberAfNetworkIndexFromEndpointIndex#

#define emberAfNetworkIndexFromEndpointIndex
Value:
(index)

Take an index of an endpoint and return the network index for it.


Definition at line 660 of file app/framework/include/af.h

emberAfPrimaryProfileId#

#define emberAfPrimaryProfileId
Value:
()

Return the primary profile ID.

Primary profile is the profile of a primary endpoint as defined in AppBuilder.


Definition at line 676 of file app/framework/include/af.h

emberAfPrimaryEndpoint#

#define emberAfPrimaryEndpoint
Value:
()

Return the primary endpoint.


Definition at line 681 of file app/framework/include/af.h

emberAfGetInt8u#

#define emberAfGetInt8u
Value:
(message, currentIndex, msgLen)

Extract a single byte out of the message.


Definition at line 746 of file app/framework/include/af.h

emberAfCopyInt8u#

#define emberAfCopyInt8u
Value:
(data, index, x)

Copy a uint8_t from variable into buffer.


Definition at line 751 of file app/framework/include/af.h

EMBER_AF_NEW_IMAGE_VERIFICATION#

#define EMBER_AF_NEW_IMAGE_VERIFICATION
Value:
true

Indicate a new image verification is taking place.


Definition at line 899 of file app/framework/include/af.h

EMBER_AF_CONTINUE_IMAGE_VERIFY#

#define EMBER_AF_CONTINUE_IMAGE_VERIFY
Value:
false

Indicate the continuation of an image verification already in progress.


Definition at line 905 of file app/framework/include/af.h

EMBER_AF_ZCL_SEQUENCE_MASK#

#define EMBER_AF_ZCL_SEQUENCE_MASK
Value:
0x7Fu

The mask applied by emberAfNextSequence when generating ZCL sequence numbers.


Definition at line 937 of file app/framework/include/af.h

EMBER_AF_MESSAGE_TAG_MASK#

#define EMBER_AF_MESSAGE_TAG_MASK
Value:
0x7Fu

The mask applied to generated message tags used by the framework when sending messages via EZSP. Customers who call ezspSend functions directly must use message tags outside this mask.


Definition at line 943 of file app/framework/include/af.h

EMBER_AF_REJOIN_DUE_TO_END_DEVICE_MOVE#

#define EMBER_AF_REJOIN_DUE_TO_END_DEVICE_MOVE
Value:
(cluster)

Return true if the cluster is in the manufacturer-specific range.


Definition at line 1049 of file app/framework/include/af.h

EMBER_AF_REJOIN_DUE_TO_TC_KEEPALIVE_FAILURE#

#define EMBER_AF_REJOIN_DUE_TO_TC_KEEPALIVE_FAILURE
Value:
(cluster)

Return true if the cluster is in the manufacturer-specific range.


Definition at line 1050 of file app/framework/include/af.h

EMBER_AF_REJOIN_DUE_TO_CLI_COMMAND#

#define EMBER_AF_REJOIN_DUE_TO_CLI_COMMAND
Value:
(cluster)

Return true if the cluster is in the manufacturer-specific range.


Definition at line 1051 of file app/framework/include/af.h

EMBER_AF_REJOIN_DUE_TO_WWAH_CONNECTIVITY_MANAGER#

#define EMBER_AF_REJOIN_DUE_TO_WWAH_CONNECTIVITY_MANAGER
Value:
(cluster)

Return true if the cluster is in the manufacturer-specific range.


Definition at line 1052 of file app/framework/include/af.h

EMBER_AF_REJOIN_FIRST_REASON#

#define EMBER_AF_REJOIN_FIRST_REASON
Value:
(cluster)

Return true if the cluster is in the manufacturer-specific range.


Definition at line 1054 of file app/framework/include/af.h

EMBER_AF_REJOIN_LAST_REASON#

#define EMBER_AF_REJOIN_LAST_REASON
Value:
(cluster)

Return true if the cluster is in the manufacturer-specific range.


Definition at line 1055 of file app/framework/include/af.h

EMBER_AF_CLIENT_CLUSTER_TICK#

#define EMBER_AF_CLIENT_CLUSTER_TICK
Value:
true

Friendly define for use in the scheduling or canceling client events with sl_zigbee_zcl_schedule_cluster_tick() and sl_zigbee_zcl_deactivate_cluster_tick().


Definition at line 1117 of file app/framework/include/af.h

EMBER_AF_SERVER_CLUSTER_TICK#

#define EMBER_AF_SERVER_CLUSTER_TICK
Value:
false

Friendly define for use in the scheduling or canceling server events with sl_zigbee_zcl_schedule_cluster_tick() and sl_zigbee_zcl_deactivate_cluster_tick().


Definition at line 1124 of file app/framework/include/af.h

emberAfGetCurrentSleepControl#

#define emberAfGetCurrentSleepControl
Value:
()

Retrieve the most restrictive sleep control value for all scheduled events. This function is used by emberAfOkToNap and emberAfOkToHibernate to makes sure that there are no events scheduled which will keep the device from hibernating or napping.

Returns

  • The most restrictive sleep control value for all scheduled events or the value returned by emberAfGetDefaultSleepControl() if no events are currently scheduled. The default sleep control value is initialized to EMBER_AF_OK_TO_HIBERNATE but can be changed at any time using the emberAfSetDefaultSleepControl() function.


Definition at line 1306 of file app/framework/include/af.h

emberAfSetDefaultSleepControl#

#define emberAfSetDefaultSleepControl
Value:
(x)

Set the default sleep control value against which all scheduled event sleep control values will be evaluated. This can be used to keep a device awake for an extended period of time by setting the default to EMBER_AF_STAY_AWAKE and then resetting the value to EMBER_AF_OK_TO_HIBERNATE once the wake period is complete.


Definition at line 1318 of file app/framework/include/af.h

emberAfGetDefaultSleepControl#

#define emberAfGetDefaultSleepControl
Value:
()

Retrieve the default sleep control against which all event sleep control values are evaluated. The default sleep control value is initialized to EMBER_AF_OK_TO_HIBERNATE but can be changed by the application at any time using the emberAfSetDefaultSleepControl() function.

Returns

  • The current default sleep control value.


Definition at line 1329 of file app/framework/include/af.h

EMBER_AF_CLIENT_CLUSTER_DISCOVERY#

#define EMBER_AF_CLIENT_CLUSTER_DISCOVERY
Value:
false

Friendly define for use in discovering client clusters with emberAfFindDevicesByProfileAndCluster().


Definition at line 1704 of file app/framework/include/af.h

EMBER_AF_SERVER_CLUSTER_DISCOVERY#

#define EMBER_AF_SERVER_CLUSTER_DISCOVERY
Value:
true

Friendly define for use in discovering server clusters with emberAfFindDevicesByProfileAndCluster().


Definition at line 1710 of file app/framework/include/af.h

emberAfCurrentEndpoint#

#define emberAfCurrentEndpoint
Value:
()

Return the current endpoint that is being served.

The purpose of this macro is mostly to access endpoint that is being served in the command callbacks.


Definition at line 1859 of file app/framework/include/af.h

emberAfInvalidImageId#

const EmberAfOtaImageId emberAfInvalidImageId

This variable defines an invalid image ID. It is used to determine if a returned EmberAfOtaImageId is valid or not. This is done by passing the data to the function emberAfIsOtaImageIdValid().


Definition at line 913 of file app/framework/include/af.h

emberAfLocateAttributeMetadata#

EmberAfAttributeMetadata* emberAfLocateAttributeMetadata (uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attributeId, uint8_t mask, uint16_t manufacturerCode)

Locate attribute metadata.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/AclusterId

Cluster ID of the sought cluster.

N/AattributeId

Attribute ID of the sought attribute.

N/Amask

CLUSTER_MASK_SERVER or CLUSTER_MASK_CLIENT

N/AmanufacturerCode

Manufacturer code of the sough attribute.

Function returns pointer to the attribute metadata structure, or NULL if attribute was not found.

Returns

  • Returns pointer to the attribute metadata location.


Definition at line 124 of file app/framework/include/af.h

emberAfContainsAttribute#

bool emberAfContainsAttribute (uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attributeId, uint8_t mask, uint16_t manufacturerCode)

Return true if the attribute exists.

Parameters
N/Aendpoint
N/AclusterId
N/AattributeId
N/Amask
N/AmanufacturerCode

Definition at line 132 of file app/framework/include/af.h

emberAfContainsClusterWithMfgCode#

bool emberAfContainsClusterWithMfgCode (uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode)

Return true if an endpoint contains a cluster, checking for mfg code.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/AclusterId

Cluster ID of the sought cluster.

N/AmanufacturerCode

Manufacturer code of the sought endpoint.

This function returns true regardless of whether the endpoint contains server, client or both. For standard libraries (when ClusterId < FC00), the manufacturerCode is ignored.


Definition at line 154 of file app/framework/include/af.h

emberAfContainsCluster#

bool emberAfContainsCluster (uint8_t endpoint, EmberAfClusterId clusterId)

Return true if the endpoint contains the ZCL cluster with specified ID.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/AclusterId

Cluster ID of the sought cluster.

This function returns true regardless of whether the endpoint contains server, client or both in the Zigbee cluster Library. This wraps emberAfContainsClusterWithMfgCode with manufacturerCode = EMBER_AF_NULL_MANUFACTURER_CODE If this function is used with a manufacturer specific clusterId, it returns the first cluster that it finds in the Cluster table. It does not return any other clusters that share that ID.


Definition at line 170 of file app/framework/include/af.h

emberAfContainsServerWithMfgCode#

bool emberAfContainsServerWithMfgCode (uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode)

Return true if the endpoint has a cluster server, checking for the mfg code.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/AclusterId

Cluster ID of the sought cluster.

N/AmanufacturerCode

Manufacturer code of the sought cluster.

This function returns true if the endpoint contains server of a given cluster. For standard libraries (when ClusterId < FC00), the manufacturerCode is ignored.


Definition at line 183 of file app/framework/include/af.h

emberAfContainsServer#

bool emberAfContainsServer (uint8_t endpoint, EmberAfClusterId clusterId)

Return true if the endpoint contains the ZCL server with a specified ID.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/AclusterId

Cluster ID of the sought cluster.

This function returns true if the endpoint contains server of a given cluster. This wraps emberAfContainsServer with manufacturerCode = EMBER_AF_NULL_MANUFACTURER_CODE If this function is used with a manufacturer specific clusterId, it returns the first cluster that it finds in the Cluster table. It does not return any other clusters that share that ID.


Definition at line 199 of file app/framework/include/af.h

emberAfContainsClientWithMfgCode#

bool emberAfContainsClientWithMfgCode (uint8_t endpoint, EmberAfClusterId clusterId, uint16_t manufacturerCode)

Return true if the endpoint contains the cluster client.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/AclusterId

Cluster ID of the sought cluster.

N/AmanufacturerCode

Manufacturer code of the sought cluster.

This function returns true if the endpoint contains client of a given cluster. For standard library clusters (when ClusterId < FC00), the manufacturerCode is ignored.


Definition at line 213 of file app/framework/include/af.h

emberAfContainsClient#

bool emberAfContainsClient (uint8_t endpoint, EmberAfClusterId clusterId)

Return true if the endpoint contains the ZCL client with a specified ID.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/AclusterId

Cluster ID of the sought cluster.

This function returns true if the endpoint contains client of a given cluster. It wraps emberAfContainsClient with manufacturerCode = EMBER_AF_NULL_MANUFACTURER_CODE If this function is used with a manufacturer-specific clusterId, it returns the first cluster that it finds in the Cluster table. It does not return any other clusters that share that ID.


Definition at line 229 of file app/framework/include/af.h

emberAfWriteAttribute#

EmberAfStatus emberAfWriteAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t mask, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write an attribute performing all checks.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/Amask

CLUSTER_MASK_SERVER or CLUSTER_MASK_CLIENT.

N/AdataPtr

Pointer to the ZCL attribute.

N/AdataType

ZCL attribute type.

This function attempts to write the attribute value from the provided pointer. It only checks that the attribute exists. If it does, it writes the value into the attribute table for the given attribute.

This function does not check to see if the attribute is writable since the read only / writable characteristic of an attribute only pertains to external devices writing over the air. Because this function is called locally, it assumes that the device knows what it is doing and has permission to perform the given operation.

See Also


Definition at line 257 of file app/framework/include/af.h

emberAfWriteServerAttribute#

EmberAfStatus emberAfWriteServerAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write a cluster server attribute.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/AdataPtr

Pointer to the ZCL attribute.

N/AdataType

ZCL attribute type.

This function is the same as emberAfWriteAttribute except that it saves having to pass the cluster mask. This is useful for code saving because the write attribute is used frequently throughout the framework

See Also


Definition at line 282 of file app/framework/include/af.h

emberAfWriteClientAttribute#

EmberAfStatus emberAfWriteClientAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write a cluster client attribute.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/AdataPtr

Pointer to the ZCL attribute.

N/AdataType

ZCL attribute type.

This function is the same as emberAfWriteAttribute except that it saves having to pass the cluster mask. This is useful for code saving because the write attribute is used frequently throughout the framework.

See Also


Definition at line 306 of file app/framework/include/af.h

emberAfWriteManufacturerSpecificServerAttribute#

EmberAfStatus emberAfWriteManufacturerSpecificServerAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint16_t manufacturerCode, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write a manufacturer-specific server attribute.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/AmanufacturerCode

Manufacturer code of the sought cluster.

N/AdataPtr

Pointer to the ZCL attribute.

N/AdataType

ZCL attribute type.

This function is the same as emberAfWriteAttribute except that it saves having to pass the cluster mask and allows passing a manufacturer code. This is useful for code saving because the write attribute is used frequently throughout the framework.

See Also


Definition at line 331 of file app/framework/include/af.h

emberAfWriteManufacturerSpecificClientAttribute#

EmberAfStatus emberAfWriteManufacturerSpecificClientAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint16_t manufacturerCode, uint8_t *dataPtr, EmberAfAttributeType dataType)

Write a manufacturer-specific client attribute.

Parameters
N/Aendpoint

Zigbee endpoint number.

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/AmanufacturerCode

Manufacturer code of the sought cluster.

N/AdataPtr

Pointer to the ZCL attribute.

N/AdataType

ZCL attribute type.

This function is the same as emberAfWriteAttribute except that it saves having to pass the cluster mask and allows passing of a manufacturer code. This is useful for code saving because the write attribute is used frequently throughout the framework.

See Also


Definition at line 357 of file app/framework/include/af.h

emberAfVerifyAttributeWrite#

EmberAfStatus emberAfVerifyAttributeWrite (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t mask, uint16_t manufacturerCode, uint8_t *dataPtr, EmberAfAttributeType dataType)

Test the success of attribute write.

Parameters
N/Aendpoint

Zigbee endpoint number

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/Amask

CLUSTER_MASK_SERVER or CLUSTER_MASK_CLIENT

N/AmanufacturerCode

Location where attribute will be written from.

N/AdataPtr

ZCL attribute type.

N/AdataType

This function returns success if the attribute write is successful. It does not actually write anything, just validates for read-only and data-type.


Definition at line 378 of file app/framework/include/af.h

emberAfReadAttribute#

EmberAfStatus emberAfReadAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t mask, uint8_t *dataPtr, uint8_t readLength, EmberAfAttributeType *dataType)

Read the attribute value performing all the checks.

Parameters
N/Aendpoint

Zigbee endpoint number

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/Amask

CLUSTER_MASK_SERVER or CLUSTER_MASK_CLIENT

N/AdataPtr

Pointer to the ZCL attribute.

N/AreadLength

Length of the attribute to be read.

N/AdataType

ZCL attribute type.

This function attempts to read the attribute and store it into the pointer. It also reads the data type. Both dataPtr and dataType may be NULL, signifying that either value or type is not desired.

See Also


Definition at line 406 of file app/framework/include/af.h

emberAfReadServerAttribute#

EmberAfStatus emberAfReadServerAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t *dataPtr, uint8_t readLength)

Read the server attribute value performing all the checks.

Parameters
N/Aendpoint

Zigbee endpoint number

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/AdataPtr

Pointer to the server attribute.

N/AreadLength

Length of the attribute to be read.

This function attempts to read the attribute and store it into the pointer. It also reads the data type. Both dataPtr and dataType may be NULL, signifying that either value or type is not desired.

See Also


Definition at line 432 of file app/framework/include/af.h

emberAfReadClientAttribute#

EmberAfStatus emberAfReadClientAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint8_t *dataPtr, uint8_t readLength)

Read the client attribute value, performing all the checks.

Parameters
N/Aendpoint

Zigbee endpoint number

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/AdataPtr

Pointer to the client attribute.

N/AreadLength

Length of the attribute to be read.

This function attempts to read the attribute and store it into the pointer. It also reads the data type. Both dataPtr and dataType may be NULL, signifying that either value or type is not desired.

See Also


Definition at line 456 of file app/framework/include/af.h

emberAfReadManufacturerSpecificServerAttribute#

EmberAfStatus emberAfReadManufacturerSpecificServerAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint16_t manufacturerCode, uint8_t *dataPtr, uint8_t readLength)

Read the manufacturer-specific server attribute value, performing all checks.

Parameters
N/Aendpoint

Zigbee endpoint number

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/AmanufacturerCode

Manufacturer code of the sought cluster.

N/AdataPtr

Pointer to the server attribute.

N/AreadLength

Length of the attribute to be read.

This function attempts to read the attribute and store it into the pointer. It also reads the data type. Both dataPtr and dataType may be NULL, signifying that either value or type is not desired.

See Also


Definition at line 480 of file app/framework/include/af.h

emberAfReadManufacturerSpecificClientAttribute#

EmberAfStatus emberAfReadManufacturerSpecificClientAttribute (uint8_t endpoint, EmberAfClusterId cluster, EmberAfAttributeId attributeID, uint16_t manufacturerCode, uint8_t *dataPtr, uint8_t readLength)

Read the manufacturer-specific client attribute value, performing all checks.

Parameters
N/Aendpoint

Zigbee endpoint number

N/Acluster

Cluster ID of the sought cluster.

N/AattributeID

Attribute ID of the sought attribute.

N/AmanufacturerCode

Manufacturer code of the sought cluster.

N/AdataPtr

Pointer to the server attribute.

N/AreadLength

Length of the attribute to be read.

This function attempts to read the attribute and store it into the pointer. It also reads the data type. Both dataPtr and dataType may be NULL, signifying that either value or type is not desired.

See Also


Definition at line 505 of file app/framework/include/af.h

emberAfGetDataSize#

uint8_t emberAfGetDataSize (uint8_t dataType)

Return the size of the ZCL data in bytes.

Parameters
N/AdataType

ZCL data type

Returns

  • Size in bytes or 0 if invalid data type


Definition at line 518 of file app/framework/include/af.h

emberAfGetOpenNetworkDurationSec#

uint8_t emberAfGetOpenNetworkDurationSec (void)

Return the number of seconds the network remains open.

Parameters
N/A

Returns

  • A return value of 0 indicates that the network is closed.


Definition at line 525 of file app/framework/include/af.h

emberAfEndpointFromIndex#

uint8_t emberAfEndpointFromIndex (uint8_t index)

Take an index of an endpoint and return the Zigbee endpoint.

Parameters
N/Aindex

Index of an endpoint.

Returns

  • Zigbee endpoint.


Definition at line 604 of file app/framework/include/af.h

emberAfIndexFromEndpoint#

uint8_t emberAfIndexFromEndpoint (uint8_t endpoint)
Parameters
N/Aendpoint

Zigbee endpoint.

Return the index of a given endpoint.

Returns

  • Index of a Zigbee endpoint.


Definition at line 612 of file app/framework/include/af.h

emberAfIndexFromEndpointIncludingDisabledEndpoints#

uint8_t emberAfIndexFromEndpointIncludingDisabledEndpoints (uint8_t endpoint)
Parameters
N/Aendpoint

Zigbee endpoint.

Return the index of a given endpoint. It does not ignore disabled endpoints.

Returns

  • Index of a Zigbee endpoint.


Definition at line 620 of file app/framework/include/af.h

emberAfFindClusterClientEndpointIndex#

uint8_t emberAfFindClusterClientEndpointIndex (uint8_t endpoint, EmberAfClusterId clusterId)
Parameters
N/Aendpoint

Zigbee endpoint.

N/AclusterId

Cluster ID of a sought cluster.

Return the endpoint index within a given cluster (Client-side), looking only for standard clusters.

Returns

  • Index of a Zigbee endpoint.


Definition at line 630 of file app/framework/include/af.h

emberAfFindClusterServerEndpointIndex#

uint8_t emberAfFindClusterServerEndpointIndex (uint8_t endpoint, EmberAfClusterId clusterId)
Parameters
N/Aendpoint

Zigbee endpoint.

N/AclusterId

Cluster ID of a sought cluster.

Return the endpoint index within a given cluster (Server-side), looking only for standard clusters.

Returns

  • Index of a Zigbee endpoint.


Definition at line 640 of file app/framework/include/af.h

emberAfNetworkIndexFromEndpoint#

uint8_t emberAfNetworkIndexFromEndpoint (uint8_t endpoint)

Return the network index of a given endpoint.

Parameters
N/Aendpoint

Zigbee endpoint.

Returns

  • Network index of a Zigbee endpoint.


Definition at line 668 of file app/framework/include/af.h

emberAfEndpointCount#

uint8_t emberAfEndpointCount (void)

Return the total number of endpoints (dynamic and pre-compiled).

Parameters
N/A

Definition at line 686 of file app/framework/include/af.h

emberAfFixedEndpointCount#

uint8_t emberAfFixedEndpointCount (void)

Return the number of pre-compiled endpoints.

Parameters
N/A

Definition at line 691 of file app/framework/include/af.h

emberAfGetAttributeAnalogOrDiscreteType#

uint8_t emberAfGetAttributeAnalogOrDiscreteType (uint8_t dataType)

Return the type of the attribute, either ANALOG, DISCRETE, or NONE.

Parameters
N/AdataType

Definition at line 708 of file app/framework/include/af.h

emberAfIsTypeSigned#

bool emberAfIsTypeSigned (EmberAfAttributeType dataType)

Return true if type is signed, false otherwise.

Parameters
N/AdataType

Definition at line 713 of file app/framework/include/af.h

emberAfGetInt32u#

uint32_t emberAfGetInt32u (const uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a 32-bit integer from the message buffer.

Parameters
N/Amessage
N/AcurrentIndex
N/AmsgLen

Definition at line 718 of file app/framework/include/af.h

emberAfGetInt24u#

uint32_t emberAfGetInt24u (const uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a 24-bit integer from the message buffer.

Parameters
N/Amessage
N/AcurrentIndex
N/AmsgLen

Definition at line 723 of file app/framework/include/af.h

emberAfGetInt16u#

uint16_t emberAfGetInt16u (const uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a 16-bit integer from the message buffer.

Parameters
N/Amessage
N/AcurrentIndex
N/AmsgLen

Definition at line 728 of file app/framework/include/af.h

emberAfGetString#

uint8_t* emberAfGetString (uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a ZCL string from the message buffer.

Parameters
N/Amessage
N/AcurrentIndex
N/AmsgLen

Definition at line 732 of file app/framework/include/af.h

emberAfGetLongString#

uint8_t* emberAfGetLongString (uint8_t *message, uint16_t currentIndex, uint16_t msgLen)

Extract a ZCL long string from the message buffer.

Parameters
N/Amessage
N/AcurrentIndex
N/AmsgLen

Definition at line 736 of file app/framework/include/af.h

emberAfGetDate#

uint8_t emberAfGetDate (uint8_t *message, uint16_t currentIndex, uint16_t msgLen, EmberAfDate *destination)

Return true if the cluster is in the manufacturer-specific range.

Parameters
N/Amessage

EmberAfCluster* to consider

N/AcurrentIndex
N/AmsgLen
N/Adestination

Definition at line 741 of file app/framework/include/af.h

emberAfCopyInt16u#

void emberAfCopyInt16u (uint8_t *data, uint16_t index, uint16_t x)

Copy a uint16_t value into a buffer.

Parameters
N/Adata
N/Aindex
N/Ax

Definition at line 755 of file app/framework/include/af.h

emberAfCopyInt24u#

void emberAfCopyInt24u (uint8_t *data, uint16_t index, uint32_t x)

Copy a uint24_t value into a buffer.

Parameters
N/Adata
N/Aindex
N/Ax

Definition at line 759 of file app/framework/include/af.h

emberAfCopyInt32u#

void emberAfCopyInt32u (uint8_t *data, uint16_t index, uint32_t x)

Copy a uint32_t value into a buffer.

Parameters
N/Adata
N/Aindex
N/Ax

Definition at line 763 of file app/framework/include/af.h

emberAfCopyString#

void emberAfCopyString (uint8_t *dest, uint8_t *src, uint8_t size)

Return true if the cluster is in the manufacturer-specific range.

Parameters
N/Adest

EmberAfCluster* to consider

N/Asrc
N/Asize

Definition at line 769 of file app/framework/include/af.h

emberAfCopyLongString#

void emberAfCopyLongString (uint8_t *dest, uint8_t *src, uint16_t size)

Return true if the cluster is in the manufacturer-specific range.

Parameters
N/Adest

EmberAfCluster* to consider

N/Asrc
N/Asize

Definition at line 775 of file app/framework/include/af.h

emberAfStringLength#

uint8_t emberAfStringLength (const uint8_t *buffer)

Return true if the cluster is in the manufacturer-specific range.

Parameters
N/Abuffer

EmberAfCluster* to consider


Definition at line 780 of file app/framework/include/af.h

emberAfLongStringLength#

uint16_t emberAfLongStringLength (const uint8_t *buffer)

Return true if the cluster is in the manufacturer-specific range.

Parameters
N/Abuffer

EmberAfCluster* to consider


Definition at line 785 of file app/framework/include/af.h

emberAfAttributeValueSize#

uint16_t emberAfAttributeValueSize (EmberAfAttributeType dataType, const uint8_t *buffer, const uint16_t bufferSize)

Return true if the cluster is in the manufacturer-specific range.

Parameters
N/AdataType

EmberAfCluster* to consider

N/Abuffer
N/AbufferSize

Definition at line 805 of file app/framework/include/af.h

emberAfIsDeviceEnabled#

bool emberAfIsDeviceEnabled (uint8_t endpoint)

Check whether the endpoint is enabled.

Parameters
N/Aendpoint

Zigbee endpoint number

This function returns true if device at a given endpoint is enabled. At startup all endpoints are enabled.


Definition at line 838 of file app/framework/include/af.h

emberAfIsDeviceIdentifying#

bool emberAfIsDeviceIdentifying (uint8_t endpoint)

Check whether the endpoint is identifying.

Parameters
N/Aendpoint

Zigbee endpoint number

This function returns true if the device at a given endpoint is identifying.


Definition at line 848 of file app/framework/include/af.h

emberAfSetDeviceEnabled#

void emberAfSetDeviceEnabled (uint8_t endpoint, bool enabled)

Enable or disables an endpoint.

Parameters
N/Aendpoint

Zigbee endpoint number

N/Aenabled

By calling this function, you turn off all processing of incoming traffic for a given endpoint.


Definition at line 858 of file app/framework/include/af.h

sl_zigbee_common_rtos_wakeup_stack_task#

void sl_zigbee_common_rtos_wakeup_stack_task (void)

When running on an OS, this API sets the Zigbee stack task to ready.

Parameters
N/A

Definition at line 884 of file app/framework/include/af.h

emberAfEndpointEnableDisable#

bool emberAfEndpointEnableDisable (uint8_t endpoint, bool enable)

Enable/disable endpoints.

Parameters
N/Aendpoint
N/Aenable

Definition at line 889 of file app/framework/include/af.h

emberAfEndpointIndexIsEnabled#

bool emberAfEndpointIndexIsEnabled (uint8_t index)

Determine if an endpoint at the specified index is enabled or disabled.

Parameters
N/Aindex

Definition at line 894 of file app/framework/include/af.h

emberAfIsThisDataTypeAStringType#

bool emberAfIsThisDataTypeAStringType (EmberAfAttributeType dataType)

Return true if a given ZCL data type is a string type.

Parameters
N/AdataType

Use this function to perform a different memory operation on a certain attribute because it is a string type. Since ZCL strings carry length as the first byte(s), it is often required to treat them differently than regular data types.

Returns

  • true if data type is a string.


Definition at line 925 of file app/framework/include/af.h

emberAfIsStringAttributeType#

bool emberAfIsStringAttributeType (EmberAfAttributeType attributeType)

Return true if the given attribute type is a string.

Parameters
N/AattributeType

Definition at line 928 of file app/framework/include/af.h

emberAfIsLongStringAttributeType#

bool emberAfIsLongStringAttributeType (EmberAfAttributeType attributeType)

Return true if the given attribute type is a long string.

Parameters
N/AattributeType

Definition at line 931 of file app/framework/include/af.h

emberAfNextSequence#

uint8_t emberAfNextSequence (void)

Increment the ZCL sequence number and returns the value.

Parameters
N/A

ZCL messages have sequence numbers so that they can be matched up with other messages in the transaction. To avoid conflicts with sequence numbers generated independently by the application, this API returns sequence numbers with the high bit clear. If the application generates its own sequence numbers, it should use numbers with the high bit set.

Returns

  • The next ZCL sequence number.


Definition at line 956 of file app/framework/include/af.h

emberAfGetLastSequenceNumber#

uint8_t emberAfGetLastSequenceNumber (void)

Retrieve the last sequence number that was used.

Parameters
N/A

Definition at line 962 of file app/framework/include/af.h

emberAfCompareValues#

int8_t emberAfCompareValues (uint8_t *val1, uint8_t *val2, uint8_t len, bool signedNumber)

Simple integer comparison function. Compares two values of a known length as integers. Signed integer comparison are supported for numbers with length of 4 (bytes) or less. The integers are in native endianness.

Parameters
N/Aval1
N/Aval2
N/Alen
N/AsignedNumber

Returns

  • -1, if val1 is smaller 0, if they are the same or if two negative numbers with length greater than 4 is being compared 1, if val2 is smaller.


Definition at line 976 of file app/framework/include/af.h

emberAfGetEui64#

void emberAfGetEui64 (EmberEUI64 returnEui64)

Populate the passed EUI64 with the local EUI64 MAC address.

Parameters
N/AreturnEui64

Definition at line 981 of file app/framework/include/af.h

emberAfGetNodeId#

EmberNodeId emberAfGetNodeId (void)

Return the node ID of the local node.

Parameters
N/A

Definition at line 992 of file app/framework/include/af.h

emberAfGenerateRandomKey#

EmberStatus emberAfGenerateRandomKey (EmberKeyData *result)

Generate a random key (link, network, or master).

Parameters
N/Aresult

Definition at line 998 of file app/framework/include/af.h

emberAfGetPanId#

EmberPanId emberAfGetPanId (void)

Return the PAN ID of the local node.

Parameters
N/A

Definition at line 1006 of file app/framework/include/af.h

emberAfGetRadioChannel#

uint8_t emberAfGetRadioChannel (void)

Return the radioChannel of the current network.

Parameters
N/A

Get this node's radio channel for the current network.


Definition at line 1011 of file app/framework/include/af.h

emberAfGetBindingIndex#

uint8_t emberAfGetBindingIndex (void)

Return true if the cluster is in the manufacturer-specific range.

Parameters
N/A

EmberAfCluster* to consider


Definition at line 1017 of file app/framework/include/af.h

emberAfGetAddressIndex#

uint8_t emberAfGetAddressIndex (void)

Return true if the cluster is in the manufacturer-specific range.

Parameters
N/A

EmberAfCluster* to consider


Definition at line 1023 of file app/framework/include/af.h

emberAfNetworkState#

EmberNetworkStatus emberAfNetworkState (void)

Return the current network state. This call caches the results on the host to prevent frequent EZSP transactions.

Parameters
N/A

Definition at line 1029 of file app/framework/include/af.h

emberAfGetNetworkParameters#

EmberStatus emberAfGetNetworkParameters (EmberNodeType *nodeType, EmberNetworkParameters *parameters)

Return the current network parameters.

Parameters
N/AnodeType
N/Aparameters

Definition at line 1039 of file app/framework/include/af.h

emberAfGetNodeType#

EmberStatus emberAfGetNodeType (EmberNodeType *nodeType)

Returns the current node type.

Parameters
N/AnodeType

Definition at line 1045 of file app/framework/include/af.h

emberAfPermitJoin#

EmberStatus emberAfPermitJoin (uint8_t duration, bool broadcastMgmtPermitJoin)

Enable local permit join and optionally broadcasts the ZDO Mgmt_Permit_Join_req message. This API can be called from any device type and still return EMBER_SUCCESS. If the API is called from an end device, the permit association bit will just be left off.

Parameters
N/Aduration

The duration that the permit join bit will remain on and other devices will be able to join the current network.

N/AbroadcastMgmtPermitJoin

whether or not to broadcast the ZDO Mgmt_Permit_Join_req message.

Returns

  • status of whether or not permit join was enabled.


Definition at line 1070 of file app/framework/include/af.h

emberAfBroadcastPermitJoin#

EmberStatus emberAfBroadcastPermitJoin (uint8_t duration)

Enable local permit join and broadcasts the ZDO Mgmt_Permit_Join_req message. This API can be called from any device type and still return EMBER_SUCCESS. If the API is called from an end device, the permit association bit will just be left off.

Parameters
N/Aduration

The duration that the permit join bit will remain on and other devices will be able to join the current network.

Returns

  • status of whether or not permit join was enabled.


Definition at line 1085 of file app/framework/include/af.h

sl_zigbee_zcl_schedule_tick_extended#

EmberStatus sl_zigbee_zcl_schedule_tick_extended (uint8_t endpoint, EmberAfClusterId clusterId, bool isClient, uint32_t delayMs, EmberAfEventPollControl pollControl, EmberAfEventSleepControl sleepControl)

Schedule a cluster-related event inside the application framework's event mechanism. This function provides a wrapper for the Ember stack event mechanism which allows the cluster code to access its events by their endpoint, cluster ID, and client/server identity. The passed poll and sleep controls allow the cluster to indicate whether it needs to long or short poll and whether it needs to stay awake or if it can sleep.

Parameters
N/Aendpoint

The endpoint of the event to be scheduled.

N/AclusterId

The cluster id of the event to be scheduled.

N/AisClient

EMBER_AF_CLIENT_CLUSTER_TICK if the event to be scheduled is associated with a client cluster or EMBER_AF_SERVER_CLUSTER_TICK otherwise.

N/AdelayMs

The number of milliseconds until the event should be called.

N/ApollControl

EMBER_AF_SHORT_POLL if the cluster needs to short poll or EMBER_AF_LONG_POLL otherwise.

N/AsleepControl

EMBER_AF_STAY_AWAKE if the cluster needs to stay awake or EMBER_AF_OK_TO_SLEEP otherwise.

Returns

  • EMBER_SUCCESS if the event was scheduled or an error otherwise.


Definition at line 1148 of file app/framework/include/af.h

sl_zigbee_zcl_schedule_cluster_tick#

EmberStatus sl_zigbee_zcl_schedule_cluster_tick (uint8_t endpoint, EmberAfClusterId clusterId, bool isClient, uint32_t delayMs, EmberAfEventSleepControl sleepControl)

Schedule a cluster-related event inside the This function is a wrapper for ::emberAfScheduleTickExtended. The cluster on the given endpoint will be set to long poll if sleepControl is set to EMBER_AF_OK_TO_HIBERNATE or will be set to short poll otherwise. It will stay awake if sleepControl is EMBER_AF_STAY_AWAKE and will sleep otherwise.

Parameters
N/Aendpoint

The endpoint of the event to be scheduled.

N/AclusterId

The cluster id of the event to be scheduled.

N/AisClient

EMBER_AF_CLIENT_CLUSTER_TICK if the event to be scheduled is associated with a client cluster or EMBER_AF_SERVER_CLUSTER_TICK otherwise.

N/AdelayMs

The number of milliseconds until the event should be called.

N/AsleepControl

the priority of the event, what the processor should be allowed to do in terms of sleeping while the event is active.

Returns

  • EMBER_SUCCESS if the event was scheduled or an error otherwise.


Definition at line 1174 of file app/framework/include/af.h

sl_zigbee_zcl_schedule_client_tick_extended#

EmberStatus sl_zigbee_zcl_schedule_client_tick_extended (uint8_t endpoint, EmberAfClusterId clusterId, uint32_t delayMs, EmberAfEventPollControl pollControl, EmberAfEventSleepControl sleepControl)

Schedule a cluster client event. This function is a wrapper for sl_zigbee_zcl_schedule_tick_extended.

Parameters
N/Aendpoint

The endpoint of the event to be scheduled

N/AclusterId

The cluster id of the event to be scheduled

N/AdelayMs

The number of milliseconds until the event should be called.

N/ApollControl

EMBER_AF_SHORT_POLL if the cluster needs to short poll or EMBER_AF_LONG_POLL otherwise.

N/AsleepControl

EMBER_AF_STAY_AWAKE if the cluster needs to stay awake or EMBER_AF_OK_TO_SLEEP otherwise.

Returns

  • EMBER_SUCCESS if the event was scheduled or an error otherwise.


Definition at line 1194 of file app/framework/include/af.h

sl_zigbee_zcl_schedule_client_tick#

EmberStatus sl_zigbee_zcl_schedule_client_tick (uint8_t endpoint, EmberAfClusterId clusterId, uint32_t delayMs)

Schedule a cluster client event. This function is a wrapper for sl_zigbee_zcl_schedule_client_tick_extended. It indicates that the cluster client on the given endpoint can long poll and can sleep.

Parameters
N/Aendpoint

The endpoint of the event to be scheduled.

N/AclusterId

The cluster id of the event to be scheduled.

N/AdelayMs

The number of milliseconds until the event should be called.

Returns

  • EMBER_SUCCESS if the event was scheduled or an error otherwise.


Definition at line 1211 of file app/framework/include/af.h

sl_zigbee_zcl_schedule_server_tick_extended#

EmberStatus sl_zigbee_zcl_schedule_server_tick_extended (uint8_t endpoint, EmberAfClusterId clusterId, uint32_t delayMs, EmberAfEventPollControl pollControl, EmberAfEventSleepControl sleepControl)

Schedule a cluster server event. This function is a wrapper for sl_zigbee_zcl_schedule_tick_extended.

Parameters
N/Aendpoint

The endpoint of the event to be scheduled.

N/AclusterId

The cluster id of the event to be scheduled.

N/AdelayMs

The number of milliseconds until the event should be called.

N/ApollControl

EMBER_AF_SHORT_POLL if the cluster needs to short poll or EMBER_AF_LONG_POLL otherwise.

N/AsleepControl

EMBER_AF_STAY_AWAKE if the cluster needs to stay awake or EMBER_AF_OK_TO_SLEEP otherwise.

Returns

  • EMBER_SUCCESS if the event was scheduled or an error otherwise.


Definition at line 1229 of file app/framework/include/af.h

sl_zigbee_zcl_schedule_server_tick#

EmberStatus sl_zigbee_zcl_schedule_server_tick (uint8_t endpoint, EmberAfClusterId clusterId, uint32_t delayMs)

Schedule a cluster server event. This function is a wrapper for sl_zigbee_zcl_schedule_server_tick_extended. It indicates that the cluster server on the given endpoint can long poll and can sleep.

Parameters
N/Aendpoint

The endpoint of the event to be scheduled

N/AclusterId

The cluster id of the event to be scheduled.

N/AdelayMs

The number of milliseconds until the event should be called.

Returns

  • EMBER_SUCCESS if the event was scheduled or an error otherwise.


Definition at line 1246 of file app/framework/include/af.h

sl_zigbee_zcl_deactivate_cluster_tick#

EmberStatus sl_zigbee_zcl_deactivate_cluster_tick (uint8_t endpoint, EmberAfClusterId clusterId, bool isClient)

Deactivate a cluster-related event. This function provides a wrapper for the Ember stack's event mechanism which allows an event to be accessed by its endpoint, cluster id, and client/server identity.

Parameters
N/Aendpoint

The endpoint of the event to be deactivated.

N/AclusterId

The cluster id of the event to be deactivated.

N/AisClient

EMBER_AF_CLIENT_CLUSTER_TICK if the event to be deactivated is a client cluster EMBER_AF_SERVER_CLUSTER_TICK otherwise.

Returns

  • EMBER_SUCCESS if the event was deactivated or an error otherwise.


Definition at line 1264 of file app/framework/include/af.h

sl_zigbee_zcl_deactivate_client_tick#

EmberStatus sl_zigbee_zcl_deactivate_client_tick (uint8_t endpoint, EmberAfClusterId clusterId)

Deactivate a cluster client event. This function is a wrapper for sl_zigbee_zcl_deactivate_cluster_tick.

Parameters
N/Aendpoint

The endpoint of the event to be deactivated.

N/AclusterId

The cluster id of the event to be deactivated.

Returns

  • EMBER_SUCCESS if the event was deactivated or an error otherwise.


Definition at line 1277 of file app/framework/include/af.h

sl_zigbee_zcl_deactivate_server_tick#

EmberStatus sl_zigbee_zcl_deactivate_server_tick (uint8_t endpoint, EmberAfClusterId clusterId)

Deactivate a cluster server event. This function is a wrapper for sl_zigbee_zcl_deactivate_cluster_tick.

Parameters
N/Aendpoint

The endpoint of the event to be deactivated.

N/AclusterId

The cluster id of the event to be deactivated.

Returns

  • EMBER_SUCCESS if the event was deactivated or an error otherwise.


Definition at line 1289 of file app/framework/include/af.h

emberAfSendResponse#

EmberStatus emberAfSendResponse (void)

Send a ZCL response, based on the information that is currently in the outgoing buffer. It is expected that a complete ZCL message is present, including header. The application may use this method directly from within the message handling function and associated callbacks. However, this will result in the response being sent before the APS ACK is sent which is not ideal.

Parameters
N/A

NOTE: This will overwrite the ZCL sequence number of the message to use the LAST received sequence number.


Definition at line 1386 of file app/framework/include/af.h

emberAfSendResponseWithCallback#

EmberStatus emberAfSendResponseWithCallback (EmberAfMessageSentFunction callback)

Send ZCL response with attached message sent callback.

Parameters
N/Acallback

Definition at line 1391 of file app/framework/include/af.h

emberAfSendMulticast#

EmberStatus emberAfSendMulticast (EmberMulticastId multicastId, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Sends multicast.

Parameters
N/AmulticastId
N/AapsFrame
N/AmessageLength
N/Amessage

Definition at line 1396 of file app/framework/include/af.h

emberAfSendMulticastToBindings#

EmberStatus emberAfSendMulticastToBindings (EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Multicasts the message to the group in the binding table that matches the cluster and source endpoint in the APS frame. Note: if the binding table contains many matching entries, calling this API cause a significant amount of network traffic. Care should be taken when considering the effects of broadcasts in a network.

Parameters
N/AapsFrame
N/AmessageLength
N/Amessage

Definition at line 1408 of file app/framework/include/af.h

emberAfSendMulticastWithAliasWithCallback#

EmberStatus emberAfSendMulticastWithAliasWithCallback (EmberMulticastId multicastId, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberNodeId alias, uint8_t sequence, EmberAfMessageSentFunction callback)

Send Multicast with alias with attached message sent callback.

Parameters
N/AmulticastId
N/AapsFrame
N/AmessageLength
N/Amessage
N/Aalias
N/Asequence
N/Acallback

Definition at line 1415 of file app/framework/include/af.h

emberAfSendMulticastWithCallback#

EmberStatus emberAfSendMulticastWithCallback (EmberMulticastId multicastId, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberAfMessageSentFunction callback)

Send multicast with attached message sent callback.

Parameters
N/AmulticastId
N/AapsFrame
N/AmessageLength
N/Amessage
N/Acallback

Definition at line 1426 of file app/framework/include/af.h

emberAfSendBroadcast#

EmberStatus emberAfSendBroadcast (EmberNodeId destination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Send broadcast.

Parameters
N/Adestination
N/AapsFrame
N/AmessageLength
N/Amessage

Definition at line 1435 of file app/framework/include/af.h

emberAfSendBroadcastWithCallback#

EmberStatus emberAfSendBroadcastWithCallback (EmberNodeId destination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberAfMessageSentFunction callback)

Send broadcast with attached message sent callback.

Parameters
N/Adestination
N/AapsFrame
N/AmessageLength
N/Amessage
N/Acallback

Definition at line 1443 of file app/framework/include/af.h

emberAfSendBroadcastWithAliasWithCallback#

EmberStatus emberAfSendBroadcastWithAliasWithCallback (EmberNodeId destination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberNodeId alias, uint8_t sequence, EmberAfMessageSentFunction callback)

Send broadcast with alias with attached message sent callback.

Parameters
N/Adestination
N/AapsFrame
N/AmessageLength
N/Amessage
N/Aalias
N/Asequence
N/Acallback

Definition at line 1452 of file app/framework/include/af.h

emberAfSendUnicast#

EmberStatus emberAfSendUnicast (EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Send unicast.

Parameters
N/Atype
N/AindexOrDestination
N/AapsFrame
N/AmessageLength
N/Amessage

Definition at line 1463 of file app/framework/include/af.h

emberAfSendUnicastWithCallback#

EmberStatus emberAfSendUnicastWithCallback (EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberAfMessageSentFunction callback)

Send unicast with attached message sent callback.

Parameters
N/Atype
N/AindexOrDestination
N/AapsFrame
N/AmessageLength
N/Amessage
N/Acallback

Definition at line 1472 of file app/framework/include/af.h

emberAfSendUnicastToBindings#

EmberStatus emberAfSendUnicastToBindings (EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message)

Unicast the message to each remote node in the binding table that matches the cluster and source endpoint in the APS frame. Note: if the binding table contains many matching entries, calling this API cause a significant amount of network traffic.

Parameters
N/AapsFrame
N/AmessageLength
N/Amessage

Definition at line 1485 of file app/framework/include/af.h

emberAfSendUnicastToBindingsWithCallback#

EmberStatus emberAfSendUnicastToBindingsWithCallback (EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message, EmberAfMessageSentFunction callback)

emberAfSendUnicastToBindings with attached message sent callback.

Parameters
N/AapsFrame
N/AmessageLength
N/Amessage
N/Acallback

Definition at line 1492 of file app/framework/include/af.h

emberAfSendInterPan#

EmberStatus emberAfSendInterPan (EmberPanId panId, const EmberEUI64 destinationLongId, EmberNodeId destinationShortId, EmberMulticastId multicastId, EmberAfClusterId clusterId, EmberAfProfileId profileId, uint16_t messageLength, uint8_t *messageBytes)

Send interpan message.

Parameters
N/ApanId
N/AdestinationLongId
N/AdestinationShortId
N/AmulticastId
N/AclusterId
N/AprofileId
N/AmessageLength
N/AmessageBytes

Definition at line 1500 of file app/framework/include/af.h

emberAfSendEndDeviceBind#

EmberStatus emberAfSendEndDeviceBind (uint8_t endpoint)

Send end device binding request.

Parameters
N/Aendpoint

Definition at line 1512 of file app/framework/include/af.h

emberAfSendCommandUnicastToBindings#

EmberStatus emberAfSendCommandUnicastToBindings (void)

Send the command prepared with emberAfFill.... macro.

Parameters
N/A

This function is used to send a command that was previously prepared using the emberAfFill... macros from the client command API. It will be sent as unicast to each remote node in the binding table that matches the cluster and source endpoint in the APS frame. Note: if the binding table contains many matching entries, calling this API cause a significant amount of network traffic.


Definition at line 1524 of file app/framework/include/af.h

emberAfSendCommandUnicastToBindingsWithCallback#

EmberStatus emberAfSendCommandUnicastToBindingsWithCallback (EmberAfMessageSentFunction callback)

emberAfSendCommandUnicastToBindings with attached message sent callback.

Parameters
N/Acallback

Definition at line 1529 of file app/framework/include/af.h

emberAfSendCommandMulticast#

EmberStatus emberAfSendCommandMulticast (EmberMulticastId multicastId)

Send the command prepared with emberAfFill.... macro.

Parameters
N/AmulticastId

This function is used to send a command that was previously prepared using the emberAfFill... macros from the client command API. It will be sent as multicast.


Definition at line 1538 of file app/framework/include/af.h

emberAfSendCommandMulticastWithAlias#

EmberStatus emberAfSendCommandMulticastWithAlias (EmberMulticastId multicastId, EmberNodeId alias, uint8_t sequence)

Send the command prepared with emberAfFill.... macro.

Parameters
N/AmulticastId
N/Aalias
N/Asequence

This function is used to send a command that was previously prepared using the emberAfFill... macros from the client command API. It will be sent as multicast.


Definition at line 1547 of file app/framework/include/af.h

emberAfSendCommandMulticastWithCallback#

EmberStatus emberAfSendCommandMulticastWithCallback (EmberMulticastId multicastId, EmberAfMessageSentFunction callback)

emberAfSendCommandMulticast with attached message sent callback.

Parameters
N/AmulticastId
N/Acallback

Definition at line 1552 of file app/framework/include/af.h

emberAfSendCommandMulticastToBindings#

EmberStatus emberAfSendCommandMulticastToBindings (void)

Send the command prepared with emberAfFill.... macro.

Parameters
N/A

This function is used to send a command that was previously prepared using the emberAfFill... macros from the client command API. It will be sent as multicast to the group specified in the binding table that matches the cluster and source endpoint in the APS frame. Note: if the binding table contains many matching entries, calling this API cause a significant amount of network traffic.


Definition at line 1565 of file app/framework/include/af.h

emberAfSendCommandUnicast#

EmberStatus emberAfSendCommandUnicast (EmberOutgoingMessageType type, uint16_t indexOrDestination)

Send the command prepared with emberAfFill.... macro.

Parameters
N/Atype
N/AindexOrDestination

This function is used to send a command that was previously prepared using the emberAfFill... macros from the client command API. It will be sent as unicast.


Definition at line 1573 of file app/framework/include/af.h

emberAfSendCommandUnicastWithCallback#

EmberStatus emberAfSendCommandUnicastWithCallback (EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberAfMessageSentFunction callback)

emberAfSendCommandUnicast with attached message sent callback.

Parameters
N/Atype
N/AindexOrDestination
N/Acallback

Definition at line 1579 of file app/framework/include/af.h

emberAfSendCommandBroadcast#

EmberStatus emberAfSendCommandBroadcast (EmberNodeId destination)

Send the command prepared with emberAfFill.... macro.

Parameters
N/Adestination

This function is used to send a command that was previously prepared using the emberAfFill... macros from the client command API.


Definition at line 1589 of file app/framework/include/af.h

emberAfSendCommandBroadcastWithCallback#

EmberStatus emberAfSendCommandBroadcastWithCallback (EmberNodeId destination, EmberAfMessageSentFunction callback)

emberAfSendCommandBroadcast with attached message sent callback.

Parameters
N/Adestination
N/Acallback

Definition at line 1594 of file app/framework/include/af.h

emberAfSendCommandBroadcastWithAliasWithCallback#

EmberStatus emberAfSendCommandBroadcastWithAliasWithCallback (EmberNodeId destination, EmberNodeId alias, uint8_t sequence, EmberAfMessageSentFunction callback)

emberAfSendCommandBroadcast from alias with attached message sent callback.

Parameters
N/Adestination
N/Aalias
N/Asequence
N/Acallback

Definition at line 1600 of file app/framework/include/af.h

emberAfSendCommandBroadcastWithAlias#

EmberStatus emberAfSendCommandBroadcastWithAlias (EmberNodeId destination, EmberNodeId alias, uint8_t sequence)

Send the command prepared with emberAfFill.... macro.

Parameters
N/Adestination
N/Aalias
N/Asequence

This function is used to send a command that was previously prepared using the emberAfFill... macros from the client command API.


Definition at line 1611 of file app/framework/include/af.h

emberAfSendCommandInterPan#

EmberStatus emberAfSendCommandInterPan (EmberPanId panId, const EmberEUI64 destinationLongId, EmberNodeId destinationShortId, EmberMulticastId multicastId, EmberAfProfileId profileId)

Send the command prepared with emberAfFill.... macro.

Parameters
N/ApanId
N/AdestinationLongId
N/AdestinationShortId
N/AmulticastId
N/AprofileId

This function is used to send a command that was previously prepared using the emberAfFill... macros from the client command API. It will be sent via inter-PAN. If destinationLongId is not NULL, the message will be sent to that long address using long addressing mode; otherwise, the message will be sent to destinationShortId using short address mode. IF multicastId is not zero, the message will be sent using multicast mode.


Definition at line 1624 of file app/framework/include/af.h

emberAfSendDefaultResponse#

EmberStatus emberAfSendDefaultResponse (const EmberAfClusterCommand *cmd, EmberAfStatus status)

Send a default response to a cluster command.

Parameters
N/Acmd

The cluster command to which to respond.

N/Astatus

Status code for the default response command.

This function is used to prepare and send a default response to a cluster command.

Returns

  • An ::EmberStatus value that indicates the success or failure of sending the response.


Definition at line 1641 of file app/framework/include/af.h

emberAfSendDefaultResponseWithCallback#

EmberStatus emberAfSendDefaultResponseWithCallback (const EmberAfClusterCommand *cmd, EmberAfStatus status, EmberAfMessageSentFunction callback)

emberAfSendDefaultResponse with attached message sent callback.

Parameters
N/Acmd
N/Astatus
N/Acallback

Definition at line 1647 of file app/framework/include/af.h

emberAfSendImmediateDefaultResponse#

EmberStatus emberAfSendImmediateDefaultResponse (EmberAfStatus status)

Send a default response to a cluster command using the current command.

Parameters
N/Astatus

Status code for the default response command.

This function is used to prepare and send a default response to a cluster command.

Returns

  • An ::EmberStatus value that indicates the success or failure of sending the response.


Definition at line 1662 of file app/framework/include/af.h

emberAfSendImmediateDefaultResponseWithCallback#

EmberStatus emberAfSendImmediateDefaultResponseWithCallback (EmberAfStatus status, EmberAfMessageSentFunction callback)

emberAfSendImmediateDefaultResponse with attached message sent callback.

Parameters
N/Astatus
N/Acallback

Definition at line 1667 of file app/framework/include/af.h

emberAfMaximumApsPayloadLength#

uint8_t emberAfMaximumApsPayloadLength (EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame)

Return the maximum size of the payload that the Application Support sub-layer will accept for the given message type, destination, and APS frame.

Parameters
N/Atype

The outgoing message type.

N/AindexOrDestination

Depending on the message type, this is either the EmberNodeId of the destination, an index into the address table, an index into the binding table, the multicast identifier, or a broadcast address.

N/AapsFrame

The APS frame for the message.

The size depends on multiple factors, including the security level in use and additional information added to the message to support the various options.

Returns

  • The maximum APS payload length for the given message.


Definition at line 1686 of file app/framework/include/af.h

emberAfGetCommandApsFrame#

EmberApsFrame* emberAfGetCommandApsFrame (void)

Access to client API APS frame.

Parameters
N/A

Definition at line 1693 of file app/framework/include/af.h

emberAfSetCommandEndpoints#

void emberAfSetCommandEndpoints (uint8_t sourceEndpoint, uint8_t destinationEndpoint)

Set the source and destination endpoints in the client API APS frame.

Parameters
N/AsourceEndpoint
N/AdestinationEndpoint

Definition at line 1698 of file app/framework/include/af.h

emberAfFindDevicesByProfileAndCluster#

EmberStatus emberAfFindDevicesByProfileAndCluster (EmberNodeId target, EmberAfProfileId profileId, EmberAfClusterId clusterId, bool serverCluster, EmberAfServiceDiscoveryCallback *callback)

Use this function to find devices in the network with endpoints matching a given profile ID and cluster ID in their descriptors. Target may either be a specific device, or the broadcast address EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS.

Parameters
N/Atarget

The destination node ID for the discovery; either a specific node's ID or EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS.

N/AprofileId

The application profile for the cluster being discovered.

N/AclusterId

The cluster being discovered.

N/AserverCluster

EMBER_AF_SERVER_CLUSTER_DISCOVERY (true) if discovering servers for the target cluster; EMBER_AF_CLIENT_CLUSTER_DISCOVERY (false) if discovering clients for that cluster.

N/Acallback

Function pointer for the callback function triggered when a match is discovered. (For broadcast discoveries, this is called once per matching node, even if a node has multiple matching endpoints.)

With this function a service discovery is initiated and received responses are returned by executing the callback function passed in. For unicast discoveries, the callback will be executed only once. Either the target will return a result or a timeout will occur. For broadcast discoveries, the callback may be called multiple times and after a period of time the discovery will be finished with a final call to the callback.


Definition at line 1737 of file app/framework/include/af.h

emberAfFindClustersByDeviceAndEndpoint#

EmberStatus emberAfFindClustersByDeviceAndEndpoint (EmberNodeId target, uint8_t targetEndpoint, EmberAfServiceDiscoveryCallback *callback)

Use this function to find all of the given in and out clusters implemented on a devices given endpoint. Target should only be the short address of a specific device.

Parameters
N/Atarget

The destination node ID for the discovery. This should be a specific node's ID and should not be a broadcast address.

N/AtargetEndpoint

The endpoint to target with the discovery process.

N/Acallback

Function pointer for the callback function triggered when the discovery is returned.

With this function a single service discovery is initiated and the response is passed back to the passed callback.


Definition at line 1757 of file app/framework/include/af.h

emberAfFindIeeeAddress#

EmberStatus emberAfFindIeeeAddress (EmberNodeId shortAddress, EmberAfServiceDiscoveryCallback *callback)

Use this function to initiate a discovery for the IEEE address of the specified node id. This will send a unicast sent to the target node ID.

Parameters
N/AshortAddress
N/Acallback

Definition at line 1766 of file app/framework/include/af.h

emberAfFindNodeId#

EmberStatus emberAfFindNodeId (EmberEUI64 longAddress, EmberAfServiceDiscoveryCallback *callback)

Use this function to initiate a discovery for the short ID of the specified long address. This will send a broadcast to all rx-on-when-idle devices (non-sleepies).

Parameters
N/AlongAddress
N/Acallback

Definition at line 1774 of file app/framework/include/af.h

emberAfFindActiveEndpoints#

EmberStatus emberAfFindActiveEndpoints (EmberNodeId target, EmberAfServiceDiscoveryCallback *callback)

Initiate an Active Endpoint request ZDO message to the target node ID.

Parameters
N/Atarget
N/Acallback

Definition at line 1780 of file app/framework/include/af.h

emberAfAddAddressTableEntry#

uint8_t emberAfAddAddressTableEntry (EmberEUI64 longId, EmberNodeId shortId)

Use this function to add an entry for a remote device to the address table.

Parameters
N/AlongId

The EUI64 of the remote device.

N/AshortId

The node id of the remote device or ::EMBER_UNKNOWN_NODE_ID if the node id is currently unknown.

If the EUI64 already exists in the address table, the index of the existing entry will be returned. Otherwise, a new entry will be created and the new new index will be returned. The framework will remember how many times the returned index has been referenced. When the address table entry is no longer needed, the application should remove its reference by calling emberAfRemoveAddressTableEntry.

Returns

  • The index of the address table entry for this remove device or ::EMBER_NULL_ADDRESS_TABLE_INDEX if an error occurred (e.g., the address table is full).


Definition at line 1801 of file app/framework/include/af.h

emberAfSetAddressTableEntry#

EmberStatus emberAfSetAddressTableEntry (uint8_t index, EmberEUI64 longId, EmberNodeId shortId)

Use this function to add an entry for a remote device to the address table at a specific location.

Parameters
N/Aindex

The index of the address table entry.

N/AlongId

The EUI64 of the remote device.

N/AshortId

The node id of the remote device or ::EMBER_UNKNOWN_NODE_ID if the node id is currently unknown.

The framework will remember how many times an address table index has been referenced through emberAfAddAddressTableEntry. If the reference count for the index passed to this function is not zero, the entry will be not changed. When the address table entry is no longer needed, the application should remove its reference by calling emberAfRemoveAddressTableEntry.

Returns

  • ::EMBER_SUCCESS if the address table entry was successfully set, ::EMBER_ADDRESS_TABLE_ENTRY_IS_ACTIVE if any messages are being sent using the existing entry at that index or the entry is still referenced in the framework, or ::EMBER_ADDRESS_TABLE_INDEX_OUT_OF_RANGE if the index is out of range.


Definition at line 1823 of file app/framework/include/af.h

emberAfRemoveAddressTableEntry#

EmberStatus emberAfRemoveAddressTableEntry (uint8_t index)

Use this function to remove a specific entry from the address table.

Parameters
N/Aindex

The index of the address table entry.

The framework will remember how many times an address table index has been referenced through emberAfAddAddressTableEntry and emberAfSetAddressTableEntry. The address table entry at this index will not actually be removed until its reference count reaches zero.

Returns

  • ::EMBER_SUCCESS if the address table entry was successfully removed or ::EMBER_ADDRESS_TABLE_INDEX_OUT_OF_RANGE if the index is out of range.


Definition at line 1839 of file app/framework/include/af.h

emberAfInitiateKeyEstablishment#

EmberStatus emberAfInitiateKeyEstablishment (EmberNodeId nodeId, uint8_t endpoint)

Use this function to initiate key establishment with a remote node. emberAfKeyEstablishmentCallback will be called as events occur and when key establishment completes.

Parameters
N/AnodeId

The node ID of the remote device.

N/Aendpoint

The endpoint on the remote device.

Returns

  • ::EMBER_SUCCESS if key establishment was initiated successfully


Definition at line 1870 of file app/framework/include/af.h

emberAfInitiateInterPanKeyEstablishment#

EmberStatus emberAfInitiateInterPanKeyEstablishment (EmberPanId panId, const EmberEUI64 eui64)

Use this function to initiate key establishment with a remote node on a different PAN. emberAfInterPanKeyEstablishmentCallback will be called as events occur and when key establishment completes.

Parameters
N/ApanId

The PAN id of the remote device.

N/Aeui64

The EUI64 of the remote device.

Returns

  • ::EMBER_SUCCESS if key establishment was initiated successfully


Definition at line 1880 of file app/framework/include/af.h

emberAfPerformingKeyEstablishment#

bool emberAfPerformingKeyEstablishment (void)

Use this function to tell if the device is in the process of performing key establishment.

Parameters
N/A

Returns

  • ::true if key establishment is in progress.


Definition at line 1888 of file app/framework/include/af.h

emberAfInitiatePartnerLinkKeyExchange#

EmberStatus emberAfInitiatePartnerLinkKeyExchange (EmberNodeId target, uint8_t endpoint, EmberAfPartnerLinkKeyExchangeCallback *callback)

Use this function to initiate partner link key exchange with a remote node.

Parameters
N/Atarget

The node id of the remote device.

N/Aendpoint

The key establishment endpoint of the remote device.

N/Acallback

The callback that should be called when the partner link key exchange completes.

Returns

  • ::EMBER_SUCCESS if the partner link key exchange was initiated successfully.


Definition at line 1900 of file app/framework/include/af.h

emberAfIsCurrentSecurityProfileSmartEnergy#

bool emberAfIsCurrentSecurityProfileSmartEnergy (void)

Use this function to determine if the security profile of the current network was set to Smart Energy. The security profile is configured in AppBuilder. @ return true if the security profile is Smart Energy or false otherwise.

Parameters
N/A

Definition at line 1919 of file app/framework/include/af.h

sl_zigbee_subscribe_to_zcl_commands#

sl_status_t sl_zigbee_subscribe_to_zcl_commands (uint16_t cluster_id, uint16_t manufacturer_id, uint8_t direction, sl_service_function_t service_function)

Runtime subscription to specific incoming ZCL commands.

Parameters
N/Acluster_id

The cluster ID of the ZCL messages to subscribe to.

N/Amanufacturer_id

The manufacturer ID if any. If not set, a value of 0xFFFF should be passed in.

N/Adirection

A value of ZCL_DIRECTION_CLIENT_TO_SERVER or ZCL_DIRECTION_SERVER_TO_CLIENT specifying the side (client or server) of the ZCL messages to subscribe to.

N/Aservice_function

A sl_service_function_t function pointer specifying the function to be invoked when an incoming ZCL command matches the criteria specified in this API.

Returns

  • A ::sl_status_t value of:

    • ::SL_STATUS_OK - If the subscription was successful.

    • ::SL_STATUS_INVALID_PARAMETER - If one or more passed parameters are invalid.

    • ::SL_STATUS_ALLOCATION_FAILED - If the system failed to allocate the necessary data structures.


Definition at line 2013 of file app/framework/include/af.h

emberAfFormNetwork#

EmberStatus emberAfFormNetwork (EmberNetworkParameters *parameters)

Use this function to form a new network using the specified network parameters.

Parameters
N/Aparameters

Specification of the new network.

Returns

  • An ::EmberStatus value that indicates either the successful formation of the new network or the reason that the network formation failed.


Definition at line 2094 of file app/framework/include/af.h

emberAfJoinNetwork#

EmberStatus emberAfJoinNetwork (EmberNetworkParameters *parameters)

Use this function to associate with the network using the specified network parameters.

Parameters
N/Aparameters

Specification of the network with which the node should associate.

Returns

  • An ::EmberStatus value that indicates either that the association process began successfully or the reason for failure.


Definition at line 2104 of file app/framework/include/af.h

emberAfFindUnusedPanIdAndForm#

EmberStatus emberAfFindUnusedPanIdAndForm (void)

Use this function to find an unused PAN id and form a new network.

Parameters
N/A

Returns

  • An ::EmberStatus value that indicates either the process begin successfully or the reason for failure.


Definition at line 2112 of file app/framework/include/af.h

emberAfStartSearchForJoinableNetwork#

EmberStatus emberAfStartSearchForJoinableNetwork (void)

Use this function to find a joinable network and join it.

Parameters
N/A

Returns

  • An ::EmberStatus value that indicates either the process begin successfully or the reason for failure.


Definition at line 2118 of file app/framework/include/af.h

emberAfPushNetworkIndex#

EmberStatus emberAfPushNetworkIndex (uint8_t networkIndex)

Set the current network to that of the given index and adds it to the stack of networks maintained by the framework. Every call to this API must be paired with a subsequent call to emberAfPopNetworkIndex.

Parameters
N/AnetworkIndex

Definition at line 2129 of file app/framework/include/af.h

emberAfPushCallbackNetworkIndex#

EmberStatus emberAfPushCallbackNetworkIndex (void)

Set the current network to the callback network and adds it to the stack of networks maintained by the framework. Every call to this API must be paired with a subsequent call to emberAfPopNetworkIndex.

Parameters
N/A

Definition at line 2135 of file app/framework/include/af.h

emberAfPushEndpointNetworkIndex#

EmberStatus emberAfPushEndpointNetworkIndex (uint8_t endpoint)

Set the current network to that of the given endpoint and adds it to the stack of networks maintained by the framework. Every call to this API must be paired with a subsequent call to emberAfPopNetworkIndex.

Parameters
N/Aendpoint

Definition at line 2141 of file app/framework/include/af.h

emberAfPopNetworkIndex#

EmberStatus emberAfPopNetworkIndex (void)

Remove the topmost network from the stack of networks maintained by the framework and sets the current network to the new topmost network. Every call to this API must be paired with a prior call to emberAfPushNetworkIndex, emberAfPushCallbackNetworkIndex, or emberAfPushEndpointNetworkIndex.

Parameters
N/A

Definition at line 2149 of file app/framework/include/af.h

emberAfPrimaryEndpointForNetworkIndex#

uint8_t emberAfPrimaryEndpointForNetworkIndex (uint8_t networkIndex)

Return the primary endpoint of the given network index or 0xFF if no endpoints belong to the network.emberAfStatus.

Parameters
N/AnetworkIndex

Definition at line 2154 of file app/framework/include/af.h

emberAfPrimaryEndpointForCurrentNetworkIndex#

uint8_t emberAfPrimaryEndpointForCurrentNetworkIndex (void)

Returns the primary endpoint of the current network index or 0xFF if no endpoints belong to the current network.

Parameters
N/A

Definition at line 2159 of file app/framework/include/af.h

Macro Definition Documentation#

CONFIGURATION_HEADER#

#define CONFIGURATION_HEADER
Value:
"app/framework/util/config.h"

Definition at line 25 of file app/framework/include/af.h

ZCL_FRAME_CONTROL_FRAME_TYPE_MASK#

#define ZCL_FRAME_CONTROL_FRAME_TYPE_MASK
Value:
(BIT(0) | BIT(1))

Definition at line 2038 of file app/framework/include/af.h

ZCL_CLUSTER_SPECIFIC_COMMAND#

#define ZCL_CLUSTER_SPECIFIC_COMMAND
Value:
BIT(0)

Definition at line 2039 of file app/framework/include/af.h

ZCL_PROFILE_WIDE_COMMAND#

#define ZCL_PROFILE_WIDE_COMMAND
Value:
0u

Definition at line 2040 of file app/framework/include/af.h

ZCL_GLOBAL_COMMAND#

#define ZCL_GLOBAL_COMMAND
Value:
(ZCL_PROFILE_WIDE_COMMAND)

Definition at line 2041 of file app/framework/include/af.h

ZCL_MANUFACTURER_SPECIFIC_MASK#

#define ZCL_MANUFACTURER_SPECIFIC_MASK
Value:
BIT(2)

Definition at line 2043 of file app/framework/include/af.h

ZCL_FRAME_CONTROL_DIRECTION_MASK#

#define ZCL_FRAME_CONTROL_DIRECTION_MASK
Value:
BIT(3)

Definition at line 2045 of file app/framework/include/af.h

ZCL_FRAME_CONTROL_SERVER_TO_CLIENT#

#define ZCL_FRAME_CONTROL_SERVER_TO_CLIENT
Value:
BIT(3)

Definition at line 2046 of file app/framework/include/af.h

ZCL_FRAME_CONTROL_CLIENT_TO_SERVER#

#define ZCL_FRAME_CONTROL_CLIENT_TO_SERVER
Value:
0u

Definition at line 2047 of file app/framework/include/af.h

ZCL_DISABLE_DEFAULT_RESPONSE_MASK#

#define ZCL_DISABLE_DEFAULT_RESPONSE_MASK
Value:
BIT(4)

Definition at line 2049 of file app/framework/include/af.h

ZCL_DIRECTION_CLIENT_TO_SERVER#

#define ZCL_DIRECTION_CLIENT_TO_SERVER
Value:
0u

Definition at line 2052 of file app/framework/include/af.h

ZCL_DIRECTION_SERVER_TO_CLIENT#

#define ZCL_DIRECTION_SERVER_TO_CLIENT
Value:
1u

Definition at line 2053 of file app/framework/include/af.h

EMBER_AF_ZCL_OVERHEAD#

#define EMBER_AF_ZCL_OVERHEAD
Value:
3

Definition at line 2059 of file app/framework/include/af.h

EMBER_AF_ZCL_MANUFACTURER_SPECIFIC_OVERHEAD#

#define EMBER_AF_ZCL_MANUFACTURER_SPECIFIC_OVERHEAD
Value:
5

Definition at line 2060 of file app/framework/include/af.h

FIND_AND_JOIN_MODE_ALLOW_2_4_GHZ#

#define FIND_AND_JOIN_MODE_ALLOW_2_4_GHZ
Value:
BIT(0)

Definition at line 2063 of file app/framework/include/af.h

FIND_AND_JOIN_MODE_ALLOW_SUB_GHZ#

#define FIND_AND_JOIN_MODE_ALLOW_SUB_GHZ
Value:
BIT(1)

Definition at line 2064 of file app/framework/include/af.h

FIND_AND_JOIN_MODE_ALLOW_BOTH#

#define FIND_AND_JOIN_MODE_ALLOW_BOTH
Value:
(FIND_AND_JOIN_MODE_ALLOW_2_4_GHZ | FIND_AND_JOIN_MODE_ALLOW_SUB_GHZ)

Definition at line 2065 of file app/framework/include/af.h

emberAfMaxPowerLevel#

#define emberAfMaxPowerLevel
Value:
()

The maximum power level that can be used by the chip.


Definition at line 2186 of file app/framework/include/af.h