Modules#

EmberAfDefaultAttributeValue

EmberAfAttributeMinMaxValue

EmberAfDefaultOrMinMaxAttributeValue

EmberAfAttributeMetadata

EmberAfCluster

EmberAfAttributeSearchRecord

EmberAfManufacturerCodeEntry

EmberAfIncomingMessage

EmberAfInterpanHeader

EmberAfAllowedInterPanMessage

EmberAfClusterCommand

EmberAfEndpointType

EmberAfSecurityProfileData

EmberAfDefinedEndpoint

EmberAfLoadControlEvent

EmberAfServiceDiscoveryResult

EmberAfEndpointList

EmberAfClusterList

EmberAfEventContext

EmberAfSceneTableEntry

EmberAfPluginMessagingClientMessage

EmberAfPluginPriceClientPrice

EmberAfPluginReportingEntry

EmberAfOtaImageId

EmberAfImageBlockRequestCallbackStruct

EmberAfOtaHeader

EmberAfTagData

EmberAfMessageStruct

EmberAfLinkKeyBackupData

EmberAfTrustCenterBackupData

EmberAfStandaloneBootloaderQueryResponseData

EmberAfCommandMetadata

EmberAfTimeStruct

EmberAfDate

EmberAfDeviceManagementTenancy

EmberAfDeviceManagementSupplier

EmberAfDeviceManagementSupply

EmberAfDeviceManagementSiteId

EmberAfDeviceManagementCIN

EmberAfDeviceManagementSupplyStatusFlags

EmberAfDeviceManagementUncontrolledFlowThreshold

EmberAfDeviceManagementSupplyStatus

EmberAfDeviceManagementPassword

EmberAfDeviceManagementInfo

EmberAfDeviceManagementAttributeRange

EmberAfDeviceManagementAttributeTable

EmberAfGbzMessageData

EmberAfGpfMessage

EmberAfRemoteClusterStruct

EmberAfRemoteBindingStruct

EmberAfClusterInfo

EmberAfEndpointInfoStruct

EmberAfDeviceInfo

EmberAfDeviceDatabaseIterator

EmberAfJoiningDevice

The include file for all the types for Ember ApplicationFramework.

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_TYPES
#define SILABS_AF_API_TYPES

#include "enums.h"

#ifdef EZSP_HOST
#include "app/util/ezsp/ezsp-enum.h"
#endif

typedef uint16_t EmberAfProfileId;

typedef uint16_t EmberAfAttributeId;

typedef uint16_t EmberAfClusterId;

typedef uint8_t EmberAfAttributeType;

typedef uint8_t EmberAfClusterMask;

typedef uint8_t EmberAfAttributeMask;

typedef void (*EmberAfGenericClusterFunction)(void);

#define EMBER_AF_NULL_MANUFACTURER_CODE 0x0000u

 #define EMBER_AF_INVALID_PROFILE_ID 0xFFFFu

typedef union {
  uint8_t *ptrToDefaultValue;
  uint16_t defaultValue;
} EmberAfDefaultAttributeValue;

typedef struct {
  EmberAfDefaultAttributeValue defaultValue;
  EmberAfDefaultAttributeValue minValue;
  EmberAfDefaultAttributeValue maxValue;
} EmberAfAttributeMinMaxValue;

typedef union {
  uint8_t *ptrToDefaultValue;
  uint16_t defaultValue;
  EmberAfAttributeMinMaxValue *ptrToMinMaxValue;
} EmberAfDefaultOrMinMaxAttributeValue;

typedef struct {
  EmberAfAttributeId attributeId;
  EmberAfAttributeType attributeType;
  uint8_t size;
  EmberAfAttributeMask mask;
  EmberAfDefaultOrMinMaxAttributeValue  defaultValue;
} EmberAfAttributeMetadata;

typedef struct {
  EmberAfClusterId clusterId;
  EmberAfAttributeMetadata *attributes;
  uint16_t attributeCount;
  uint16_t clusterSize;
  EmberAfClusterMask mask;

  const EmberAfGenericClusterFunction *functions;
} EmberAfCluster;

typedef struct {
  uint8_t endpoint;

  EmberAfClusterId clusterId;

  EmberAfClusterMask clusterMask;

  EmberAfAttributeId attributeId;

  uint16_t manufacturerCode;
} EmberAfAttributeSearchRecord;

typedef struct {
  uint16_t index;
  uint16_t manufacturerCode;
} EmberAfManufacturerCodeEntry;

#ifdef HAL_HAS_INT64
typedef uint64_t EmberAfDifferenceType;
#else
typedef uint32_t EmberAfDifferenceType;
#endif

typedef struct {
  EmberIncomingMessageType type;
  EmberApsFrame* apsFrame;
  uint8_t* message;
  uint16_t msgLen;
  uint16_t source;
  uint8_t lastHopLqi;
  int8_t lastHopRssi;
  uint8_t bindingTableIndex;
  uint8_t addressTableIndex;
  uint8_t networkIndex;
} EmberAfIncomingMessage;

typedef uint8_t EmberAfInterpanMessageType;
#define EMBER_AF_INTER_PAN_UNICAST   0x00u
#define EMBER_AF_INTER_PAN_BROADCAST 0x08u
#define EMBER_AF_INTER_PAN_MULTICAST 0x0Cu

// Legacy names
#define INTER_PAN_UNICAST   EMBER_AF_INTER_PAN_UNICAST
#define INTER_PAN_BROADCAST EMBER_AF_INTER_PAN_BROADCAST
#define INTER_PAN_MULTICAST EMBER_AF_INTER_PAN_MULTICAST

#define EMBER_AF_INTERPAN_OPTION_NONE                 0x0000u
#define EMBER_AF_INTERPAN_OPTION_APS_ENCRYPT          0x0001u
#define EMBER_AF_INTERPAN_OPTION_MAC_HAS_LONG_ADDRESS 0x0002u

typedef uint16_t EmberAfInterpanOptions;

typedef struct {
  EmberAfInterpanMessageType messageType;

  EmberEUI64 longAddress;
  EmberNodeId shortAddress;
  EmberPanId panId;

  EmberAfProfileId profileId;
  EmberAfClusterId clusterId;
  EmberMulticastId groupId;
  EmberAfInterpanOptions options;
} EmberAfInterpanHeader;

// Legacy Name
#define InterPanHeader EmberAfInterpanHeader

typedef uint8_t EmberAfAllowedInterpanOptions;

#define EMBER_AF_INTERPAN_DIRECTION_CLIENT_TO_SERVER 0x01u
#define EMBER_AF_INTERPAN_DIRECTION_SERVER_TO_CLIENT 0x02u
#define EMBER_AF_INTERPAN_DIRECTION_BOTH             0x03u
#define EMBER_AF_INTERPAN_GLOBAL_COMMAND             0x04u
#define EMBER_AF_INTERPAN_MANUFACTURER_SPECIFIC      0x08u

typedef struct {
  EmberAfProfileId profileId;
  EmberAfClusterId clusterId;
  uint8_t commandId;
  EmberAfAllowedInterpanOptions options;
} EmberAfAllowedInterPanMessage;

typedef struct {
  EmberApsFrame            *apsFrame;
  EmberIncomingMessageType  type;
  EmberNodeId               source;
  uint8_t                    *buffer;
  uint16_t                    bufLen;
  bool                   clusterSpecific;
  bool                   mfgSpecific;
  uint16_t                    mfgCode;
  uint8_t                     seqNum;
  uint8_t                     commandId;
  uint8_t                     payloadStartIndex;
  uint8_t                     direction;
  EmberAfInterpanHeader    *interPanHeader;
  uint8_t                     networkIndex;
} EmberAfClusterCommand;

typedef struct {
  EmberAfCluster *cluster;
  uint8_t  clusterCount;
  uint16_t endpointSize;
} EmberAfEndpointType;

#ifdef EZSP_HOST
typedef EzspDecisionId EmberAfTcLinkKeyRequestPolicy;
typedef EzspDecisionId EmberAfAppLinkKeyRequestPolicy;
  #define EMBER_AF_ALLOW_TC_KEY_REQUESTS                       EZSP_ALLOW_TC_KEY_REQUESTS_AND_SEND_CURRENT_KEY
  #define EMBER_AF_DENY_TC_KEY_REQUESTS                        EZSP_DENY_TC_KEY_REQUESTS
  #define EMBER_AF_ALLOW_APP_KEY_REQUESTS                      EZSP_ALLOW_APP_KEY_REQUESTS
  #define EMBER_AF_DENY_APP_KEY_REQUESTS                       EZSP_DENY_APP_KEY_REQUESTS
#else
typedef EmberTcLinkKeyRequestPolicy EmberAfTcLinkKeyRequestPolicy;
typedef EmberAppLinkKeyRequestPolicy EmberAfAppLinkKeyRequestPolicy;
  #define EMBER_AF_ALLOW_TC_KEY_REQUESTS                       EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_SEND_CURRENT_KEY
  #define EMBER_AF_DENY_TC_KEY_REQUESTS                        EMBER_DENY_TC_LINK_KEY_REQUESTS
  #define EMBER_AF_ALLOW_APP_KEY_REQUESTS                      EMBER_ALLOW_APP_LINK_KEY_REQUEST
  #define EMBER_AF_DENY_APP_KEY_REQUESTS                       EMBER_DENY_APP_LINK_KEY_REQUESTS
#endif

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfSecurityProfile
#else
typedef uint8_t EmberAfSecurityProfile;
enum
#endif
{
  EMBER_AF_SECURITY_PROFILE_NONE    = 0x00,
  EMBER_AF_SECURITY_PROFILE_HA      = 0x01,
  EMBER_AF_SECURITY_PROFILE_HA12    = 0x02,
  EMBER_AF_SECURITY_PROFILE_SE_TEST = 0x03,
  EMBER_AF_SECURITY_PROFILE_SE_FULL = 0x04,
  EMBER_AF_SECURITY_PROFILE_Z3      = 0x05,
  EMBER_AF_SECURITY_PROFILE_CUSTOM  = 0xFF,
};

typedef struct {
  EmberAfSecurityProfile       securityProfile;
  uint16_t                       tcBitmask;
  EmberExtendedSecurityBitmask tcExtendedBitmask;
  uint16_t                       nodeBitmask;
  EmberExtendedSecurityBitmask nodeExtendedBitmask;
  EmberAfTcLinkKeyRequestPolicy  tcLinkKeyRequestPolicy;
  EmberAfAppLinkKeyRequestPolicy  appLinkKeyRequestPolicy;
  EmberKeyData                 preconfiguredKey;
} EmberAfSecurityProfileData;

#ifndef DOXYGEN_SHOULD_SKIP_THIS
typedef struct {
  EmberNodeType nodeType;
  EmberAfSecurityProfile securityProfile;
} EmAfZigbeeProNetwork;

#endif

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfEndpointBitmask;
#else
typedef uint8_t EmberAfEndpointBitmask;
enum
#endif
{
  EMBER_AF_ENDPOINT_DISABLED = 0x00,
  EMBER_AF_ENDPOINT_ENABLED  = 0x01,
};

typedef struct {
  uint8_t endpoint;
  EmberAfProfileId profileId;
  uint16_t deviceId;
  uint8_t deviceVersion;
  EmberAfEndpointType *endpointType;
  uint8_t networkIndex;
  EmberAfEndpointBitmask bitmask;
} EmberAfDefinedEndpoint;

// Cluster specific types

#if (EMBER_AF_PLUGIN_ESI_MANAGEMENT_ESI_TABLE_SIZE <= 8)
typedef uint8_t EmberAfPluginEsiManagementBitmask;
#elif (EMBER_AF_PLUGIN_ESI_MANAGEMENT_ESI_TABLE_SIZE <= 16)
typedef uint16_t EmberAfPluginEsiManagementBitmask;
#elif (EMBER_AF_PLUGIN_ESI_MANAGEMENT_ESI_TABLE_SIZE <= 32)
typedef uint32_t EmberAfPluginEsiManagementBitmask;
#else
  #error "EMBER_AF_PLUGIN_ESI_MANAGEMENT_ESI_TABLE_SIZE cannot exceed 32"
#endif

typedef struct {
  uint32_t     eventId;
#ifdef EMBER_AF_PLUGIN_DRLC_SERVER
  EmberEUI64 source;
  uint8_t      sourceEndpoint;
#endif //EMBER_AF_PLUGIN_DRLC_SERVER

#ifdef EMBER_AF_PLUGIN_DRLC
  EmberAfPluginEsiManagementBitmask esiBitmask;
#endif //EMBER_AF_PLUGIN_DRLC

  uint8_t      destinationEndpoint;
  uint16_t     deviceClass;
  uint8_t      utilityEnrollmentGroup;
  uint32_t     startTime;
  uint16_t     duration;
  uint8_t      criticalityLevel;
  uint8_t      coolingTempOffset;
  uint8_t      heatingTempOffset;
  int16_t     coolingTempSetPoint;
  int16_t     heatingTempSetPoint;
  int8_t      avgLoadPercentage;
  uint8_t      dutyCycle;
  uint8_t      eventControl;
  uint32_t     startRand;
  uint32_t     durationRand;
  uint8_t      optionControl;
} EmberAfLoadControlEvent;

typedef enum {
  EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE               = 0x00,
  EMBER_AF_BROADCAST_SERVICE_DISCOVERY_RESPONSE_RECEIVED      = 0x01,
  EMBER_AF_UNICAST_SERVICE_DISCOVERY_TIMEOUT                  = 0x02,
  EMBER_AF_UNICAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE   = 0x03,
  EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE = 0x04,
  EMBER_AF_UNICAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE   = 0x05,
  EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE = 0x06,
} EmberAfServiceDiscoveryStatus;

#define EM_AF_DISCOVERY_RESPONSE_MASK (0x05)

#define emberAfHaveDiscoveryResponseStatus(status)  ((status) & EM_AF_DISCOVERY_RESPONSE_MASK)

typedef struct {
  EmberAfServiceDiscoveryStatus status;

  uint16_t zdoRequestClusterId;

  EmberNodeId matchAddress;

  const void* responseData;
} EmberAfServiceDiscoveryResult;

typedef struct {
  uint8_t count;
  const uint8_t* list;
} EmberAfEndpointList;

typedef struct {
  uint8_t inClusterCount;
  const uint16_t* inClusterList;
  uint8_t outClusterCount;
  const uint16_t* outClusterList;
  EmberAfProfileId profileId;
  uint16_t deviceId;
  uint8_t endpoint;
} EmberAfClusterList;

typedef void (EmberAfServiceDiscoveryCallback)(const EmberAfServiceDiscoveryResult* result);

typedef void (EmberAfPartnerLinkKeyExchangeCallback)(bool success);

typedef enum {
  EMBER_AF_LONG_POLL,
  EMBER_AF_SHORT_POLL,
} EmberAfEventPollControl;

typedef enum {
  EMBER_AF_OK_TO_SLEEP,
  EMBER_AF_OK_TO_HIBERNATE = EMBER_AF_OK_TO_SLEEP,
  EMBER_AF_OK_TO_NAP,
  EMBER_AF_STAY_AWAKE,
} EmberAfEventSleepControl;

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfApplicationTask
#else
typedef uint32_t EmberAfApplicationTask;
enum
#endif
{
  // we may be able to remove these top two since they are
  // handled by the stack on the SOC.
  EMBER_AF_WAITING_FOR_DATA_ACK                     = 0x00000001, //not needed?
  EMBER_AF_LAST_POLL_GOT_DATA                       = 0x00000002, //not needed?
  EMBER_AF_WAITING_FOR_SERVICE_DISCOVERY            = 0x00000004,
  EMBER_AF_WAITING_FOR_ZDO_RESPONSE                 = 0x00000008,
  EMBER_AF_WAITING_FOR_ZCL_RESPONSE                 = 0x00000010,
  EMBER_AF_WAITING_FOR_REGISTRATION                 = 0x00000020,
  EMBER_AF_WAITING_FOR_PARTNER_LINK_KEY_EXCHANGE    = 0x00000040,
  EMBER_AF_FORCE_SHORT_POLL                         = 0x00000080,
  EMBER_AF_FRAGMENTATION_IN_PROGRESS                = 0x00000100,
  EMBER_AF_FORCE_SHORT_POLL_FOR_PARENT_CONNECTIVITY = 0x00000200,
  EMBER_AF_WAITING_FOR_TC_KEY_UPDATE                = 0x00000400,
};

typedef struct {
  uint8_t endpoint;
  EmberAfClusterId clusterId;
  bool isClient;
  EmberAfEventPollControl pollControl;
  EmberAfEventSleepControl sleepControl;
  EmberEventControl *eventControl;
} EmberAfEventContext;

typedef void (*EmberAfNetworkEventHandler)(void);

typedef void (*EmberAfEndpointEventHandler)(uint8_t endpoint);

#ifdef EMBER_AF_PLUGIN_GROUPS_SERVER

#define EMBER_AF_GROUP_TABLE_NULL_INDEX 0xFFu

#define EMBER_AF_GROUP_TABLE_UNUSED_ENDPOINT_ID 0x00u

#define ZCL_GROUPS_CLUSTER_MAXIMUM_NAME_LENGTH 16

typedef struct {
  uint8_t  endpoint; // 0x00 when not in use
  uint16_t groupId;
  uint8_t  bindingIndex;
#ifdef EMBER_AF_PLUGIN_GROUPS_SERVER_NAME_SUPPORT
  uint8_t  name[ZCL_GROUPS_CLUSTER_MAXIMUM_NAME_LENGTH + 1];
#endif
} EmberAfGroupTableEntry;
#endif //EMBER_AF_PLUGIN_GROUPS_SERVER

#define EMBER_AF_SCENE_TABLE_NULL_INDEX 0xFFu

#define EMBER_AF_SCENE_TABLE_UNUSED_ENDPOINT_ID 0x00u

#define ZCL_SCENES_CLUSTER_MAXIMUM_NAME_LENGTH 16

#define ZCL_SCENES_GLOBAL_SCENE_GROUP_ID 0x0000u

#define ZCL_SCENES_GLOBAL_SCENE_SCENE_ID 0x00u

typedef struct {
  uint8_t   endpoint;                // 0x00 when this record is not in use
  uint16_t  groupId;                 // 0x0000 if not associated with a group
  uint8_t   sceneId;
#ifdef EMBER_AF_PLUGIN_SCENES_NAME_SUPPORT
  uint8_t   name[ZCL_SCENES_CLUSTER_MAXIMUM_NAME_LENGTH + 1];
#endif
  uint16_t  transitionTime;          // in seconds
  uint8_t   transitionTime100ms;     // in tenths of a seconds
#ifdef ZCL_USING_ON_OFF_CLUSTER_SERVER
  bool hasOnOffValue;
  bool onOffValue;
#endif
#ifdef ZCL_USING_LEVEL_CONTROL_CLUSTER_SERVER
  bool hasCurrentLevelValue;
  uint8_t   currentLevelValue;
#endif
#ifdef ZCL_USING_THERMOSTAT_CLUSTER_SERVER
  bool hasOccupiedCoolingSetpointValue;
  int16_t  occupiedCoolingSetpointValue;
  bool hasOccupiedHeatingSetpointValue;
  int16_t  occupiedHeatingSetpointValue;
  bool hasSystemModeValue;
  uint8_t   systemModeValue;
#endif
#ifdef ZCL_USING_COLOR_CONTROL_CLUSTER_SERVER
  bool hasCurrentXValue;
  uint16_t  currentXValue;
  bool hasCurrentYValue;
  uint16_t  currentYValue;
  bool hasEnhancedCurrentHueValue;
  uint16_t  enhancedCurrentHueValue;
  bool hasCurrentSaturationValue;
  uint8_t   currentSaturationValue;
  bool hasColorLoopActiveValue;
  uint8_t   colorLoopActiveValue;
  bool hasColorLoopDirectionValue;
  uint8_t   colorLoopDirectionValue;
  bool hasColorLoopTimeValue;
  uint16_t  colorLoopTimeValue;
  bool hasColorTemperatureMiredsValue;
  uint16_t  colorTemperatureMiredsValue;
#endif //ZCL_USING_COLOR_CONTROL_CLUSTER_SERVER
#ifdef ZCL_USING_DOOR_LOCK_CLUSTER_SERVER
  bool hasLockStateValue;
  uint8_t   lockStateValue;
#endif
#ifdef ZCL_USING_WINDOW_COVERING_CLUSTER_SERVER
  bool hasCurrentPositionLiftPercentageValue;
  uint8_t   currentPositionLiftPercentageValue;
  bool hasCurrentPositionTiltPercentageValue;
  uint8_t   currentPositionTiltPercentageValue;
#endif
} EmberAfSceneTableEntry;

#if !defined(EMBER_AF_PLUGIN_MESSAGING_CLIENT)
// In order to be able to forward declare callbacks regardless of whether the plugin
// is enabled, we need to define all data structures.  In order to be able to define
// the messaging client data struct, we need to declare this variable.
  #define EMBER_AF_PLUGIN_MESSAGING_CLIENT_MESSAGE_SIZE 0
#endif

typedef struct {
  bool    valid;
  bool    active;
  EmberAfPluginEsiManagementBitmask esiBitmask;
  uint8_t      clientEndpoint;
  uint32_t     messageId;
  uint8_t      messageControl;
  uint32_t     startTime;
  uint32_t     endTime;
  uint16_t     durationInMinutes;
  uint8_t      message[EMBER_AF_PLUGIN_MESSAGING_CLIENT_MESSAGE_SIZE + 1];
} EmberAfPluginMessagingClientMessage;

#define ZCL_PRICE_CLUSTER_MAXIMUM_RATE_LABEL_LENGTH 11
typedef struct {
  bool valid;
  bool active;
  uint8_t   clientEndpoint;
  uint32_t  providerId;
  uint8_t   rateLabel[ZCL_PRICE_CLUSTER_MAXIMUM_RATE_LABEL_LENGTH + 1];
  uint32_t  issuerEventId;
  uint32_t  currentTime;
  uint8_t   unitOfMeasure;
  uint16_t  currency;
  uint8_t   priceTrailingDigitAndPriceTier;
  uint8_t   numberOfPriceTiersAndRegisterTier;
  uint32_t  startTime;
  uint32_t  endTime;
  uint16_t  durationInMinutes;
  uint32_t  price;
  uint8_t   priceRatio;
  uint32_t  generationPrice;
  uint8_t   generationPriceRatio;
  uint32_t  alternateCostDelivered;
  uint8_t   alternateCostUnit;
  uint8_t   alternateCostTrailingDigit;
  uint8_t   numberOfBlockThresholds;
  uint8_t   priceControl;
} EmberAfPluginPriceClientPrice;

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfPluginPriceCppAuth
#else
typedef uint8_t EmberAfPluginPriceCppAuth;
enum
#endif
{
  EMBER_AF_PLUGIN_PRICE_CPP_AUTH_PENDING  = 0,
  EMBER_AF_PLUGIN_PRICE_CPP_AUTH_ACCEPTED = 1,
  EMBER_AF_PLUGIN_PRICE_CPP_AUTH_REJECTED = 2,
  EMBER_AF_PLUGIN_PRICE_CPP_AUTH_FORCED   = 3,
  EMBER_AF_PLUGIN_PRICE_CPP_AUTH_RESERVED = 4
};

#define EMBER_AF_PLUGIN_REPORTING_UNUSED_ENDPOINT_ID 0x00u

typedef struct {
  EmberAfReportingDirection direction;
  uint8_t endpoint;
  EmberAfClusterId clusterId;
  EmberAfAttributeId attributeId;
  uint8_t mask;
  uint16_t manufacturerCode;
  union {
    struct {
      uint16_t minInterval;
      uint16_t maxInterval;
      uint32_t reportableChange;
    } reported;
    struct {
      EmberNodeId source;
      uint8_t endpoint;
      uint16_t timeout;
    } received;
  } data;
} EmberAfPluginReportingEntry;

typedef enum {
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_SUCCESS                          = 0x00,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_BUSY                             = 0x01,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_NO_MORE_TUNNEL_IDS               = 0x02,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_PROTOCOL_NOT_SUPPORTED           = 0x03,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_FLOW_CONTROL_NOT_SUPPORTED       = 0x04,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_IEEE_ADDRESS_REQUEST_FAILED      = 0xF9,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_IEEE_ADDRESS_NOT_FOUND           = 0xFA,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_ADDRESS_TABLE_FULL               = 0xFB,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_LINK_KEY_EXCHANGE_REQUEST_FAILED = 0xFC,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_LINK_KEY_EXCHANGE_FAILED         = 0xFD,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_REQUEST_TUNNEL_FAILED            = 0xFE,
  EMBER_AF_PLUGIN_TUNNELING_CLIENT_REQUEST_TUNNEL_TIMEOUT           = 0xFF,
} EmberAfPluginTunnelingClientStatus;

#ifdef EMBER_AF_PLUGIN_ZLL_COMMISSIONING_COMMON

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfZllCommissioningStatus
#else
typedef uint8_t EmberAfZllCommissioningStatus;
enum
#endif
{
  EMBER_AF_ZLL_ABORTED_BY_APPLICATION                      = 0x00,
  EMBER_AF_ZLL_CHANNEL_CHANGE_FAILED                       = 0x01,
  EMBER_AF_ZLL_JOINING_FAILED                              = 0x02,
  EMBER_AF_ZLL_NO_NETWORKS_FOUND                           = 0x03,
  EMBER_AF_ZLL_PREEMPTED_BY_STACK                          = 0x04,
  EMBER_AF_ZLL_SENDING_START_JOIN_FAILED                   = 0x05,
  EMBER_AF_ZLL_SENDING_DEVICE_INFORMATION_REQUEST_FAILED   = 0x06,
  EMBER_AF_ZLL_SENDING_IDENTIFY_REQUEST_FAILED             = 0x07,
  EMBER_AF_ZLL_SENDING_RESET_TO_FACTORY_NEW_REQUEST_FAILED = 0x08,
  EMBER_AF_ZLL_NETWORK_FORMATION_FAILED                    = 0x09,
  EMBER_AF_ZLL_NETWORK_UPDATE_OPERATION                    = 0x0A,
};

typedef struct {
  EmberMulticastId groupId;
  uint8_t            groupType;
} EmberAfPluginZllCommissioningGroupInformationRecord;

typedef struct {
  EmberNodeId networkAddress;
  uint8_t       endpointId;
  uint16_t      profileId;
  uint16_t      deviceId;
  uint8_t       version;
} EmberAfPluginZllCommissioningEndpointInformationRecord;
#endif

typedef struct {
  uint16_t manufacturerId;
  uint16_t imageTypeId;
  uint32_t firmwareVersion;

  uint8_t deviceSpecificFileEui64[EUI64_SIZE];
} EmberAfOtaImageId;

enum {
  EMBER_AF_IMAGE_BLOCK_REQUEST_OPTIONS_NONE                          = 0x00,
  // Client supports Min Block Request field
  EMBER_AF_IMAGE_BLOCK_REQUEST_MIN_BLOCK_REQUEST_SUPPORTED_BY_CLIENT = 0x01,
  // Server supports Min Block Request field
  EMBER_AF_IMAGE_BLOCK_REQUEST_MIN_BLOCK_REQUEST_SUPPORTED_BY_SERVER = 0x02,
  // The Image Block Request is actually simulated in place of an actually
  // received Image Page Request
  EMBER_AF_IMAGE_BLOCK_REQUEST_SIMULATED_FROM_PAGE_REQUEST           = 0x04
};
typedef uint8_t EmberAfImageBlockRequestOptions;

typedef struct {
  const EmberAfOtaImageId* id;
  uint32_t offset;
  uint32_t waitTimeSecondsResponse;
  EmberNodeId source;
  EmberEUI64 sourceEui;           // optionally present in messages
  // The minBlockRequestPeriod can be treated as milliseconds or seconds on the
  // client. The OTA server plugin has optional support to probe clients and
  // treat this field with appropriate units (ms or sec)
  uint16_t minBlockRequestPeriod; // optionally present in messages
  uint8_t maxDataSize;
  uint8_t clientEndpoint;
  EmberAfImageBlockRequestOptions bitmask;
} EmberAfImageBlockRequestCallbackStruct;

typedef enum {
  EMBER_AF_OTA_STORAGE_SUCCESS               = 0,
  EMBER_AF_OTA_STORAGE_ERROR                 = 1,
  EMBER_AF_OTA_STORAGE_RETURN_DATA_TOO_LONG  = 2,
  EMBER_AF_OTA_STORAGE_PARTIAL_FILE_FOUND    = 3,
  EMBER_AF_OTA_STORAGE_OPERATION_IN_PROGRESS = 4,
} EmberAfOtaStorageStatus;

enum {
  EMBER_AF_OTA_DOWNLOAD_AND_VERIFY_SUCCESS = 0,
  EMBER_AF_OTA_DOWNLOAD_TIME_OUT           = 1,
  EMBER_AF_OTA_VERIFY_FAILED               = 2,
  EMBER_AF_OTA_SERVER_ABORTED              = 3,
  EMBER_AF_OTA_CLIENT_ABORTED              = 4,
  EMBER_AF_OTA_ERASE_FAILED                = 5,
};
typedef uint8_t EmberAfOtaDownloadResult;

#define EMBER_AF_OTA_MAX_HEADER_STRING_LENGTH 32

#define UID_SIZE 32

typedef struct {
  // Magic Number omitted since it is always the same.
  uint16_t headerVersion;
  uint16_t headerLength;
  uint16_t fieldControl;
  uint16_t manufacturerId;
  uint16_t imageTypeId;           // a.k.a. Device ID
  uint32_t firmwareVersion;
  uint16_t zigbeeStackVersion;

  uint8_t headerString[EMBER_AF_OTA_MAX_HEADER_STRING_LENGTH + 1];

  uint32_t imageSize;

  uint8_t securityCredentials;
  union {
    uint8_t EUI64[EUI64_SIZE];
    uint8_t UID[UID_SIZE];
  } upgradeFileDestination;
  uint16_t minimumHardwareVersion;
  uint16_t maximumHardwareVersion;
} EmberAfOtaHeader;

typedef struct {
  uint16_t id;
  uint32_t length;
} EmberAfTagData;

typedef enum {
  NO_APP_MESSAGE               = 0,
  RECEIVED_PARTNER_CERTIFICATE = 1,
  GENERATING_EPHEMERAL_KEYS    = 2,
  GENERATING_SHARED_SECRET     = 3,
  KEY_GENERATION_DONE          = 4,
  GENERATE_SHARED_SECRET_DONE  = 5,
  LINK_KEY_ESTABLISHED         = 6,

  NO_LOCAL_RESOURCES          = 7,
  PARTNER_NO_RESOURCES        = 8,
  TIMEOUT_OCCURRED            = 9,
  INVALID_APP_COMMAND         = 10,
  MESSAGE_SEND_FAILURE        = 11,
  PARTNER_SENT_TERMINATE      = 12,
  INVALID_PARTNER_MESSAGE     = 13,
  PARTNER_SENT_DEFAULT_RESPONSE_ERROR = 14,

  BAD_CERTIFICATE_ISSUER      = 15,
  KEY_CONFIRM_FAILURE         = 16,
  BAD_KEY_ESTABLISHMENT_SUITE = 17,

  KEY_TABLE_FULL              = 18,

  NO_ESTABLISHMENT_ALLOWED    = 19,

  /* 283k1 certificates need to have valid key usage
   */
  INVALID_CERTIFICATE_KEY_USAGE = 20,
} EmberAfKeyEstablishmentNotifyMessage;

#define APP_NOTIFY_ERROR_CODE_START NO_LOCAL_RESOURCES
#define APP_NOTIFY_MESSAGE_TEXT { \
    "None",                       \
    "Received Cert",              \
    "Generate keys",              \
    "Generate secret",            \
    "Key generate done",          \
    "Generate secret done",       \
    "Link key verified",          \
                                  \
    /* Transient Error codes */   \
    "No local resources",         \
    "Partner no resources",       \
    "Timeout",                    \
    "Invalid app. command",       \
    "Message send failure",       \
    "Partner sent terminate",     \
    "Bad message",                \
    "Partner sent Default Rsp",   \
                                  \
    /* Fatal errors */            \
    "Bad cert issuer",            \
    "Key confirm failure",        \
    "Bad key est. suite",         \
    "Key table full",             \
    "Not allowed",                \
    "Invalid Key Usage",          \
}

typedef enum {
  EMBER_AF_IMAGE_GOOD                 = 0,
  EMBER_AF_IMAGE_BAD                  = 1,
  EMBER_AF_IMAGE_VERIFY_IN_PROGRESS   = 2,

#ifndef DOXYGEN_SHOULD_SKIP_THIS
  // Internal use only.
  EMBER_AF_IMAGE_VERIFY_WAIT          = 3,
  EMBER_AF_IMAGE_VERIFY_ERROR         = 4,
  EMBER_AF_IMAGE_UNKNOWN              = 5,
  EMBER_AF_NO_IMAGE_VERIFY_SUPPORT    = 6,
#endif
} EmberAfImageVerifyStatus;

typedef void (*EmberAfTickFunction)(uint8_t endpoint);

typedef void (*EmberAfInitFunction)(uint8_t endpoint);

typedef void (*EmberAfClusterAttributeChangedCallback)(uint8_t endpoint,
                                                       EmberAfAttributeId attributeId);

typedef void (*EmberAfManufacturerSpecificClusterAttributeChangedCallback)(uint8_t endpoint,
                                                                           EmberAfAttributeId attributeId,
                                                                           uint16_t manufacturerCode);

typedef EmberAfStatus (*EmberAfClusterPreAttributeChangedCallback)(uint8_t endpoint,
                                                                   EmberAfAttributeId attributeId,
                                                                   EmberAfAttributeType attributeType,
                                                                   uint8_t size,
                                                                   uint8_t *value);

typedef void (*EmberAfDefaultResponseFunction)(uint8_t endpoint,
                                               uint8_t commandId,
                                               EmberAfStatus status);

typedef void (*EmberAfMessageSentFunction)(EmberOutgoingMessageType type,
                                           uint16_t indexOrDestination,
                                           EmberApsFrame *apsFrame,
                                           uint16_t msgLen,
                                           uint8_t *message,
                                           EmberStatus status);

typedef struct {
  EmberAfMessageSentFunction callback;
  EmberApsFrame* apsFrame;
  uint8_t* message;
  uint16_t indexOrDestination;
  uint16_t messageLength;
  EmberOutgoingMessageType type;
  bool broadcast;
} EmberAfMessageStruct;

typedef struct {
  EmberEUI64 deviceId;
  EmberKeyData key;
} EmberAfLinkKeyBackupData;

typedef struct {
  EmberEUI64 extendedPanId;
  uint8_t keyListLength;
  uint8_t maxKeyListLength;
  EmberAfLinkKeyBackupData* keyList;
} EmberAfTrustCenterBackupData;

#define EMBER_AF_STANDALONE_BOOTLOADER_HARDWARE_TAG_LENGTH 16

typedef struct {
  uint8_t hardwareTag[EMBER_AF_STANDALONE_BOOTLOADER_HARDWARE_TAG_LENGTH];
  uint8_t eui64[EUI64_SIZE];
  uint16_t mfgId;
  uint16_t bootloaderVersion;
  uint8_t capabilities;
  uint8_t platform;
  uint8_t micro;
  uint8_t phy;
  bool bootloaderActive;
} EmberAfStandaloneBootloaderQueryResponseData;

typedef struct {
  uint16_t clusterId;
  uint8_t commandId;
  uint8_t mask;
} EmberAfCommandMetadata;

typedef struct {
  uint16_t year;
  uint8_t month;
  uint8_t day;
  uint8_t hours;
  uint8_t minutes;
  uint8_t seconds;
} EmberAfTimeStruct;

typedef struct {
  uint8_t year;
  uint8_t month;
  uint8_t dayOfMonth;
  uint8_t dayOfWeek;
} EmberAfDate;

/* Simple Metering Server Test Code */
#define EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_ELECTRIC_METER 0
#define EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_GAS_METER 1

// Functional Notification Flags
// Also #defined in enums.h under slightly different names
#define EMBER_AF_METERING_FNF_NEW_OTA_FIRMWARE                               0x00000001
#define EMBER_AF_METERING_FNF_CBKE_UPDATE_REQUEST                            0x00000002
#define EMBER_AF_METERING_FNF_TIME_SYNC                                      0x00000004
#define EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_HAN                         0x00000010
#define EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_WAN                         0x00000020
#define EMBER_AF_METERING_FNF_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET    0x000001C0
#define EMBER_AF_METERING_FNF_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET  0x00000E00
#define EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER             0x00001000
#define EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_METERING_CLUSTER          0x00002000
#define EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER        0x00004000
#define EMBER_AF_METERING_FNF_NETWORK_KEY_ACTIVE                             0x00008000
#define EMBER_AF_METERING_FNF_DISPLAY_MESSAGE                                0x00010000
#define EMBER_AF_METERING_FNF_CANCEL_ALL_MESSAGES                            0x00020000
#define EMBER_AF_METERING_FNF_CHANGE_SUPPLY                                  0x00040000
#define EMBER_AF_METERING_FNF_LOCAL_CHANGE_SUPPLY                            0x00080000
#define EMBER_AF_METERING_FNF_SET_UNCONTROLLED_FLOW_THRESHOLD                0x00100000
#define EMBER_AF_METERING_FNF_TUNNEL_MESSAGE_PENDING                         0x00200000
#define EMBER_AF_METERING_FNF_GET_SNAPSHOT                                   0x00400000
#define EMBER_AF_METERING_FNF_GET_SAMPLED_DATA                               0x00800000
#define EMBER_AF_METERING_FNF_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE            0x01000000
#define EMBER_AF_METERING_FNF_ENERGY_SCAN_PENDING                            0x02000000
#define EMBER_AF_METERING_FNF_CHANNEL_CHANGE_PENDING                         0x04000000

// Notification Flags 2
#define EMBER_AF_METERING_NF2_PUBLISH_PRICE                                  0x00000001
#define EMBER_AF_METERING_NF2_PUBLISH_BLOCK_PERIOD                           0x00000002
#define EMBER_AF_METERING_NF2_PUBLISH_TARIFF_INFORMATION                     0x00000004
#define EMBER_AF_METERING_NF2_PUBLISH_CONVERSION_FACTOR                      0x00000008
#define EMBER_AF_METERING_NF2_PUBLISH_CALORIFIC_VALUE                        0x00000010
#define EMBER_AF_METERING_NF2_PUBLISH_CO2_VALUE                              0x00000020
#define EMBER_AF_METERING_NF2_PUBLISH_BILLING_PERIOD                         0x00000040
#define EMBER_AF_METERING_NF2_PUBLISH_CONSOLIDATED_BILL                      0x00000080
#define EMBER_AF_METERING_NF2_PUBLISH_PRICE_MATRIX                           0x00000100
#define EMBER_AF_METERING_NF2_PUBLISH_BLOCK_THRESHOLDS                       0x00000200
#define EMBER_AF_METERING_NF2_PUBLISH_CURRENCY_CONVERSION                    0x00000400
#define EMBER_AF_METERING_NF2_PUBLISH_CREDIT_PAYMENT_INFO                    0x00001000
#define EMBER_AF_METERING_NF2_PUBLISH_CPP_EVENT                              0x00002000
#define EMBER_AF_METERING_NF2_PUBLISH_TIER_LABELS                            0x00004000
#define EMBER_AF_METERING_NF2_CANCEL_TARIFF                                  0x00008000

// Notification Flags 3
#define EMBER_AF_METERING_NF3_PUBLISH_CALENDAR                               0x00000001
#define EMBER_AF_METERING_NF3_PUBLISH_SPECIAL_DAYS                           0x00000002
#define EMBER_AF_METERING_NF3_PUBLISH_SEASONS                                0x00000004
#define EMBER_AF_METERING_NF3_PUBLISH_WEEK                                   0x00000008
#define EMBER_AF_METERING_NF3_PUBLISH_DAY                                    0x00000010
#define EMBER_AF_METERING_NF3_CANCEL_CALENDAR                                0x00000020

// Notification Flags 4
#define EMBER_AF_METERING_NF4_SELECT_AVAILABLE_EMERGENCY_CREDIT              0x00000001
#define EMBER_AF_METERING_NF4_CHANGE_DEBT                                    0x00000002
#define EMBER_AF_METERING_NF4_EMERGENCY_CREDIT_SETUP                         0x00000004
#define EMBER_AF_METERING_NF4_CONSUMER_TOP_UP                                0x00000008
#define EMBER_AF_METERING_NF4_CREDIT_ADJUSTMENT                              0x00000010
#define EMBER_AF_METERING_NF4_CHANGE_PAYMENT_MODE                            0x00000020
#define EMBER_AF_METERING_NF4_GET_PREPAY_SNAPSHOT                            0x00000040
#define EMBER_AF_METERING_NF4_GET_TOP_UP_LOG                                 0x00000080
#define EMBER_AF_METERING_NF4_SET_LOW_CREDIT_WARNING_LEVEL                   0x00000100
#define EMBER_AF_METERING_NF4_GET_DEBT_REPAYMENT_LOG                         0x00000200
#define EMBER_AF_METERING_NF4_SET_MAXIMUM_CREDIT_LIMIT                       0x00000400
#define EMBER_AF_METERING_NF4_SET_OVERALL_DEBT_CAP                           0x00000800

// Notification Flags 5
#define EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_TENANCY                      0x00000001
#define EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_SUPPLIER                     0x00000002
#define EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_1_RESPONSE                0x00000004
#define EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_2_RESPONSE                0x00000008
#define EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_3_RESPONSE                0x00000010
#define EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_4_RESPONSE                0x00000020
#define EMBER_AF_METERING_NF5_UPDATE_SITE_ID                                 0x00000040
#define EMBER_AF_METERING_NF5_RESET_BATTERY_COUNTER                          0x00000080
#define EMBER_AF_METERING_NF5_UPDATE_CIN                                     0x00000100

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfCbkeKeyEstablishmentSuite
#else
typedef uint16_t EmberAfCbkeKeyEstablishmentSuite;
enum
#endif
{
  EMBER_AF_INVALID_KEY_ESTABLISHMENT_SUITE      = 0x0000,
  EMBER_AF_CBKE_KEY_ESTABLISHMENT_SUITE_163K1   = 0x0001,
  EMBER_AF_CBKE_KEY_ESTABLISHMENT_SUITE_283K1   = 0x0002,
};

#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_NAME_LENGTH (16)
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_CONTACT_DETAILS_LENGTH (18)
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_SITE_ID_LENGTH (32)
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_CIN_LENGTH (24)
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PASSWORD_LENGTH (10)

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfDeviceManagementPasswordType
#else
typedef uint16_t EmberAfDeviceManagementPasswordType;
enum
#endif
{
  UNUSED_PASSWORD   = 0x00,
  SERVICE_PASSWORD  = 0x01,
  CONSUMER_PASSWORD = 0x02,
};

#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfDeviceManagementChangePendingFlags
#else
typedef uint8_t EmberAfDeviceManagementChangePendingFlags;
enum
#endif
{
  EMBER_AF_DEVICE_MANAGEMENT_CHANGE_OF_TENANCY_PENDING_MASK              = 0x01,
  EMBER_AF_DEVICE_MANAGEMENT_CHANGE_OF_SUPPLIER_PENDING_MASK             = 0x02,
  EMBER_AF_DEVICE_MANAGEMENT_UPDATE_SITE_ID_PENDING_MASK                 = 0x04,
  EMBER_AF_DEVICE_MANAGEMENT_UPDATE_CIN_PENDING_MASK                     = 0x08,
  EMBER_AF_DEVICE_MANAGEMENT_UPDATE_SERVICE_PASSWORD_PENDING_MASK        = 0x10,
  EMBER_AF_DEVICE_MANAGEMENT_UPDATE_CONSUMER_PASSWORD_PENDING_MASK       = 0x20,
};

typedef struct {
  // Optional fields only used by Gas Proxy Function plugin.
  uint32_t providerId;
  uint32_t issuerEventId;
  uint8_t tariffType;

  // always used fields
  uint32_t implementationDateTime;
  uint32_t tenancy;
} EmberAfDeviceManagementTenancy;

typedef struct {
  uint32_t proposedProviderId;
  uint32_t implementationDateTime;
  uint32_t providerChangeControl;
  uint8_t proposedProviderName[EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_NAME_LENGTH + 1];
  uint8_t proposedProviderContactDetails[EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_CONTACT_DETAILS_LENGTH + 1];
} EmberAfDeviceManagementSupplier;

typedef struct {
  uint32_t requestDateTime;
  uint32_t implementationDateTime;
  uint8_t supplyStatus;
  uint8_t originatorIdSupplyControlBits;
} EmberAfDeviceManagementSupply;

typedef struct {
  uint8_t siteId[EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_SITE_ID_LENGTH + 1];
  uint32_t implementationDateTime;
  uint32_t issuerEventId;
} EmberAfDeviceManagementSiteId;

typedef struct {
  uint8_t cin[EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_CIN_LENGTH + 1];
  uint32_t implementationDateTime;
  uint32_t issuerEventId;
} EmberAfDeviceManagementCIN;

typedef struct {
  bool supplyTamperState;
  bool supplyDepletionState;
  bool supplyUncontrolledFlowState;
  bool loadLimitSupplyState;
} EmberAfDeviceManagementSupplyStatusFlags;

typedef struct {
  uint16_t uncontrolledFlowThreshold;
  uint16_t multiplier;
  uint16_t divisor;
  uint16_t measurementPeriod;
  uint8_t unitOfMeasure;
  uint8_t stabilisationPeriod;
} EmberAfDeviceManagementUncontrolledFlowThreshold;

typedef struct {
  uint32_t implementationDateTime;
  uint8_t supplyStatus;
} EmberAfDeviceManagementSupplyStatus;

typedef struct {
  uint8_t password[EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PASSWORD_LENGTH + 1];
  uint32_t implementationDateTime;
  uint16_t durationInMinutes;
  EmberAfDeviceManagementPasswordType passwordType;
} EmberAfDeviceManagementPassword;

typedef struct {
  EmberAfDeviceManagementTenancy tenancy;
  EmberAfDeviceManagementSupplier supplier;
  EmberAfDeviceManagementSupply supply;
  EmberAfDeviceManagementSiteId siteId;
  EmberAfDeviceManagementCIN cin;
  EmberAfDeviceManagementSupplyStatusFlags supplyStatusFlags;
  EmberAfDeviceManagementSupplyStatus supplyStatus;
  //TODO: These passwords ought to be tokenized / hashed
  EmberAfDeviceManagementPassword servicePassword;
  EmberAfDeviceManagementPassword consumerPassword;
  EmberAfDeviceManagementUncontrolledFlowThreshold threshold;
  uint32_t providerId;
  uint32_t issuerEventId;
  uint8_t proposedLocalSupplyStatus;
  EmberAfTariffType tariffType;
  EmberAfDeviceManagementChangePendingFlags pendingUpdates;
} EmberAfDeviceManagementInfo;

typedef struct {
  uint8_t startIndex;
  uint8_t endIndex;
} EmberAfDeviceManagementAttributeRange;

// attrRange is a list of attributeId values in a cluster. It's needed to track contigous
// segments of valid attributeId's with gaps in the middle.
// attributeSetId is the value of the upper byte in the attributeId. It ranges from 0x01(Price)
// to 0x08(OTA Event Configuration)
// Eg. {0x00,0x05} and {0x08,0x0A}
// We're betting that there isn't a list of cluster attributes that has more than 5 gaps.
typedef struct {
  uint8_t attributeSetId;
  EmberAfDeviceManagementAttributeRange attributeRange[7];
} EmberAfDeviceManagementAttributeTable;

typedef struct {
  bool encryption;

  uint8_t * plainPayload;
  uint16_t plainPayloadLength;

  uint8_t * encryptedPayload;
  uint16_t encryptedPayloadLength;
} EmberAfGbzMessageData;

typedef struct {
  uint8_t * gbzCommands;
  uint16_t  gbzCommandsLength;
  uint8_t * gbzCommandsResponse;
  uint16_t  gbzCommandsResponseLength;
  uint16_t  messageCode;
} EmberAfGpfMessage;

typedef uint16_t EmberAfRemoteClusterType;

#define EMBER_AF_REMOTE_CLUSTER_TYPE_NONE     0x0000u
#define EMBER_AF_REMOTE_CLUSTER_TYPE_SERVER   0x0001u
#define EMBER_AF_REMOTE_CLUSTER_TYPE_CLIENT   0x0002u
#define EMBER_AF_REMOTE_CLUSTER_TYPE_INVALID  0xFFFFu

typedef struct {
  EmberAfClusterId clusterId;
  EmberAfProfileId profileId;
  uint16_t deviceId;
  uint8_t endpoint;
  EmberAfRemoteClusterType type;
} EmberAfRemoteClusterStruct;

typedef struct {
  EmberEUI64 targetEUI64;
  uint8_t sourceEndpoint;
  uint8_t destEndpoint;
  uint16_t clusterId;
  EmberEUI64 destEUI64;
  EmberEUI64 sourceEUI64;
} EmberAfRemoteBindingStruct;

typedef struct {
  EmberAfClusterId clusterId;
  bool server;
} EmberAfClusterInfo;

#if !defined(EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT)
  #define EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT 3
#endif

typedef struct {
  EmberAfClusterInfo clusters[EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT];
  EmberAfProfileId profileId;
  uint16_t deviceId;
  uint8_t endpoint;
  uint8_t clusterCount;
} EmberAfEndpointInfoStruct;

#if !defined(EMBER_AF_MAX_ENDPOINTS_PER_DEVICE)
  #define EMBER_AF_MAX_ENDPOINTS_PER_DEVICE 1
#endif

// Although we treat this like a bitmap, only 1 bit is set at a time.
// We use the bitmap feature to allow us to find all devices
// with any in a set of status codes using
// emberAfPluginDeviceDatabaseFindDeviceByStatus().
typedef enum {
  EMBER_AF_DEVICE_DISCOVERY_STATUS_NONE                 = 0x00,
  EMBER_AF_DEVICE_DISCOVERY_STATUS_NEW                  = 0x01,
  EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_ENDPOINTS       = 0x02,
  EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_CLUSTERS        = 0x04,
  EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_STACK_REVISION  = 0x08,

  EMBER_AF_DEVICE_DISCOVERY_STATUS_DONE      = 0x40,
  EMBER_AF_DEVICE_DISCOVERY_STATUS_FAILED    = 0x80,
} EmberAfDeviceDiscoveryStatus;

typedef struct {
  EmberEUI64 eui64;
  EmberAfEndpointInfoStruct endpoints[EMBER_AF_MAX_ENDPOINTS_PER_DEVICE];
  EmberAfDeviceDiscoveryStatus status;
  uint8_t discoveryFailures;
  uint8_t capabilities;
  uint8_t endpointCount;
  uint8_t stackRevision;
} EmberAfDeviceInfo;

typedef struct {
  uint16_t deviceIndex;
} EmberAfDeviceDatabaseIterator;

typedef struct {
  EmberNodeId emberNodeId;
  uint32_t timeStamp;
} EmberAfJoiningDevice;

#define EMBER_AF_INVALID_CLUSTER_ID 0xFFFFu

#define EMBER_AF_INVALID_ENDPOINT 0xFFu

#define EMBER_AF_INVALID_PAN_ID 0xFFFFu

#define EMBER_AF_PERMIT_JOIN_FOREVER     0xFF
#define EMBER_AF_PERMIT_JOIN_MAX_TIMEOUT 0xFE

#define EMBER_AF_ZDO_RESPONSE_OVERHEAD 2

#endif // SILABS_AF_API_TYPES

Macros#

#define

A distinguished manufacturer code that is used to indicate the absence of a manufacturer-specific profile, cluster, command, or attribute.

#define

An invalid profile ID This is a reserved profileId.

#define
INTER_PAN_UNICAST EMBER_AF_INTER_PAN_UNICAST
#define
INTER_PAN_BROADCAST EMBER_AF_INTER_PAN_BROADCAST
#define
INTER_PAN_MULTICAST EMBER_AF_INTER_PAN_MULTICAST
#define
InterPanHeader EmberAfInterpanHeader
#define
EMBER_AF_ALLOW_TC_KEY_REQUESTS EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_SEND_CURRENT_KEY
#define
EMBER_AF_DENY_TC_KEY_REQUESTS EMBER_DENY_TC_LINK_KEY_REQUESTS
#define
EMBER_AF_ALLOW_APP_KEY_REQUESTS EMBER_ALLOW_APP_LINK_KEY_REQUEST
#define
EMBER_AF_DENY_APP_KEY_REQUESTS EMBER_DENY_APP_LINK_KEY_REQUESTS
#define

A simple way to determine if the service discovery callback has a response.

#define

Indicates the absence of a Scene table entry.

#define

Value used when setting or getting the endpoint in a Scene table entry. It indicates that the entry is not in use.

#define

Maximum length of Scene names, not including the length byte.

#define

The group identifier for the global scene.

#define

The scene identifier for the global scene.

#define

Value used when setting or getting the endpoint in a report table entry. It indicates that the entry is not in use.

#define

The maximum size of the string that is present in the header of the zigbee Over-the-air file format.

#define
#define
APP_NOTIFY_ERROR_CODE_START NO_LOCAL_RESOURCES
#define
#define

The length of the hardware tag in the Ember Bootloader Query Response.

#define
#define

Permit join times.

#define

The overhead of the ZDO response. 1 byte for the sequence and 1 byte for the status code.

Enumerations#

enum
EMBER_AF_SECURITY_PROFILE_NONE = 0x00
EMBER_AF_SECURITY_PROFILE_HA = 0x01
EMBER_AF_SECURITY_PROFILE_HA12 = 0x02
EMBER_AF_SECURITY_PROFILE_SE_TEST = 0x03
EMBER_AF_SECURITY_PROFILE_SE_FULL = 0x04
EMBER_AF_SECURITY_PROFILE_Z3 = 0x05
EMBER_AF_SECURITY_PROFILE_CUSTOM = 0xFF
}
enum
EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE = 0x00
EMBER_AF_BROADCAST_SERVICE_DISCOVERY_RESPONSE_RECEIVED = 0x01
EMBER_AF_UNICAST_SERVICE_DISCOVERY_TIMEOUT = 0x02
EMBER_AF_UNICAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE = 0x03
EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE = 0x04
EMBER_AF_UNICAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE = 0x05
EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE = 0x06
}

This is an enum used to indicate the result of the service discovery. Unicast discoveries are completed as soon as a response is received. Broadcast discoveries wait a period of time for multiple responses to be received.

enum
EMBER_AF_LONG_POLL
EMBER_AF_SHORT_POLL
}

This is an enum used to control how the device will poll for a given active cluster-related event. When the event is scheduled, the application can pass a poll control value which will be stored along with the event. The processor is only allowed to poll according to the most restrictive value for all active event. For instance, if two events are active, one with EMBER_AF_LONG_POLL and the other with EMBER_AF_SHORT_POLL, then the processor will short poll until the second event is deactivated.

enum
EMBER_AF_OK_TO_SLEEP
EMBER_AF_OK_TO_HIBERNATE = EMBER_AF_OK_TO_SLEEP
EMBER_AF_OK_TO_NAP
EMBER_AF_STAY_AWAKE
EMBER_AF_OK_TO_SLEEP
EMBER_AF_OK_TO_HIBERNATE = EMBER_AF_OK_TO_SLEEP
EMBER_AF_OK_TO_NAP
EMBER_AF_STAY_AWAKE
}

This is an enum used to control how the device will sleep for a given active cluster related event. When the event is scheduled, the scheduling code can pass a sleep control value which will be stored along with the event. The processor is only allowed to sleep according to the most restrictive sleep control value for any active event. For instance, if two events are active, one with EMBER_AF_OK_TO_HIBERNATE and the other with EMBER_AF_OK_TO_NAP, then the processor will only be allowed to nap until the second event is deactivated.

enum
EMBER_AF_WAITING_FOR_DATA_ACK = 0x00000001
EMBER_AF_LAST_POLL_GOT_DATA = 0x00000002
EMBER_AF_WAITING_FOR_SERVICE_DISCOVERY = 0x00000004
EMBER_AF_WAITING_FOR_ZDO_RESPONSE = 0x00000008
EMBER_AF_WAITING_FOR_ZCL_RESPONSE = 0x00000010
EMBER_AF_WAITING_FOR_REGISTRATION = 0x00000020
EMBER_AF_WAITING_FOR_PARTNER_LINK_KEY_EXCHANGE = 0x00000040
EMBER_AF_FORCE_SHORT_POLL = 0x00000080
EMBER_AF_FRAGMENTATION_IN_PROGRESS = 0x00000100
EMBER_AF_FORCE_SHORT_POLL_FOR_PARENT_CONNECTIVITY = 0x00000200
EMBER_AF_WAITING_FOR_TC_KEY_UPDATE = 0x00000400
}

An enum used to track the tasks that the Application framework cares about. These are intended to be tasks that should keep the device out of hibernation like an application level request / response. If the response does not come in as a data ack, then the application will need to stay out of hibernation to wait and poll for it.

enum
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_PENDING = 0
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_ACCEPTED = 1
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_REJECTED = 2
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_FORCED = 3
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_RESERVED = 4
}

Specifies CPP Authorization values.

enum
EMBER_AF_PLUGIN_TUNNELING_CLIENT_SUCCESS = 0x00
EMBER_AF_PLUGIN_TUNNELING_CLIENT_BUSY = 0x01
EMBER_AF_PLUGIN_TUNNELING_CLIENT_NO_MORE_TUNNEL_IDS = 0x02
EMBER_AF_PLUGIN_TUNNELING_CLIENT_PROTOCOL_NOT_SUPPORTED = 0x03
EMBER_AF_PLUGIN_TUNNELING_CLIENT_FLOW_CONTROL_NOT_SUPPORTED = 0x04
EMBER_AF_PLUGIN_TUNNELING_CLIENT_IEEE_ADDRESS_REQUEST_FAILED = 0xF9
EMBER_AF_PLUGIN_TUNNELING_CLIENT_IEEE_ADDRESS_NOT_FOUND = 0xFA
EMBER_AF_PLUGIN_TUNNELING_CLIENT_ADDRESS_TABLE_FULL = 0xFB
EMBER_AF_PLUGIN_TUNNELING_CLIENT_LINK_KEY_EXCHANGE_REQUEST_FAILED = 0xFC
EMBER_AF_PLUGIN_TUNNELING_CLIENT_LINK_KEY_EXCHANGE_FAILED = 0xFD
EMBER_AF_PLUGIN_TUNNELING_CLIENT_REQUEST_TUNNEL_FAILED = 0xFE
EMBER_AF_PLUGIN_TUNNELING_CLIENT_REQUEST_TUNNEL_TIMEOUT = 0xFF
}
enum
@0 {
EMBER_AF_IMAGE_BLOCK_REQUEST_OPTIONS_NONE = 0x00
EMBER_AF_IMAGE_BLOCK_REQUEST_MIN_BLOCK_REQUEST_SUPPORTED_BY_CLIENT = 0x01
EMBER_AF_IMAGE_BLOCK_REQUEST_MIN_BLOCK_REQUEST_SUPPORTED_BY_SERVER = 0x02
EMBER_AF_IMAGE_BLOCK_REQUEST_SIMULATED_FROM_PAGE_REQUEST = 0x04
EMBER_AF_DATA_TYPE_ANALOG = 0
EMBER_AF_DATA_TYPE_DISCRETE = 1
EMBER_AF_DATA_TYPE_NONE = 2
PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION = 0x0001
PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY = 0x0002
TC_CONNECTIVITY = 0x0010
LONG_UPTIME = 0x0020
BAD_PARENT_CONNECTIVITY = 0x0040
}

The list of options possible for the image block request/response.

enum
EMBER_AF_OTA_STORAGE_SUCCESS = 0
EMBER_AF_OTA_STORAGE_ERROR = 1
EMBER_AF_OTA_STORAGE_RETURN_DATA_TOO_LONG = 2
EMBER_AF_OTA_STORAGE_PARTIAL_FILE_FOUND = 3
EMBER_AF_OTA_STORAGE_OPERATION_IN_PROGRESS = 4
}

This status contains the success or error code of an OTA storage device operation.

enum
@1 {
EMBER_AF_OTA_DOWNLOAD_AND_VERIFY_SUCCESS = 0
EMBER_AF_OTA_DOWNLOAD_TIME_OUT = 1
EMBER_AF_OTA_VERIFY_FAILED = 2
EMBER_AF_OTA_SERVER_ABORTED = 3
EMBER_AF_OTA_CLIENT_ABORTED = 4
EMBER_AF_OTA_ERASE_FAILED = 5
EMBER_POLL_TIMEOUT_10_SECONDS = 0
EMBER_POLL_TIMEOUT_2_MINUTES = 1
EMBER_POLL_TIMEOUT_4_MINUTES = 2
EMBER_POLL_TIMEOUT_8_MINUTES = 3
EMBER_POLL_TIMEOUT_16_MINUTES = 4
EMBER_POLL_TIMEOUT_32_MINUTES = 5
EMBER_POLL_TIMEOUT_64_MINUTES = 6
EMBER_POLL_TIMEOUT_128_MINUTES = 7
EMBER_POLL_TIMEOUT_256_MINUTES = 8
EMBER_POLL_TIMEOUT_512_MINUTES = 9
EMBER_POLL_TIMEOUT_1024_MINUTES = 10
EMBER_POLL_TIMEOUT_2048_MINUTES = 11
EMBER_POLL_TIMEOUT_4096_MINUTES = 12
EMBER_POLL_TIMEOUT_8192_MINUTES = 13
EMBER_POLL_TIMEOUT_16384_MINUTES = 14
}

This status contains the success or error code of an OTA download operation.

enum
NO_APP_MESSAGE = 0
RECEIVED_PARTNER_CERTIFICATE = 1
GENERATING_EPHEMERAL_KEYS = 2
GENERATING_SHARED_SECRET = 3
KEY_GENERATION_DONE = 4
GENERATE_SHARED_SECRET_DONE = 5
LINK_KEY_ESTABLISHED = 6
NO_LOCAL_RESOURCES = 7
PARTNER_NO_RESOURCES = 8
TIMEOUT_OCCURRED = 9
INVALID_APP_COMMAND = 10
MESSAGE_SEND_FAILURE = 11
PARTNER_SENT_TERMINATE = 12
INVALID_PARTNER_MESSAGE = 13
PARTNER_SENT_DEFAULT_RESPONSE_ERROR = 14
BAD_CERTIFICATE_ISSUER = 15
KEY_CONFIRM_FAILURE = 16
BAD_KEY_ESTABLISHMENT_SUITE = 17
KEY_TABLE_FULL = 18
NO_ESTABLISHMENT_ALLOWED = 19
INVALID_CERTIFICATE_KEY_USAGE = 20
}
enum
EMBER_AF_IMAGE_GOOD = 0
EMBER_AF_IMAGE_BAD = 1
EMBER_AF_IMAGE_VERIFY_IN_PROGRESS = 2
}

This enumeration is used to indicate the state of an OTA bootload image undergoing verification. This is used both for cryptographic verification and manufacturer specific verification.

enum
EMBER_AF_INVALID_KEY_ESTABLISHMENT_SUITE = 0x0000
EMBER_AF_CBKE_KEY_ESTABLISHMENT_SUITE_163K1 = 0x0001
EMBER_AF_CBKE_KEY_ESTABLISHMENT_SUITE_283K1 = 0x0002
}

CBKE Library types.

enum
UNUSED_PASSWORD = 0x00
SERVICE_PASSWORD = 0x01
CONSUMER_PASSWORD = 0x02
}
enum
EMBER_AF_DEVICE_MANAGEMENT_CHANGE_OF_TENANCY_PENDING_MASK = 0x01
EMBER_AF_DEVICE_MANAGEMENT_CHANGE_OF_SUPPLIER_PENDING_MASK = 0x02
EMBER_AF_DEVICE_MANAGEMENT_UPDATE_SITE_ID_PENDING_MASK = 0x04
EMBER_AF_DEVICE_MANAGEMENT_UPDATE_CIN_PENDING_MASK = 0x08
EMBER_AF_DEVICE_MANAGEMENT_UPDATE_SERVICE_PASSWORD_PENDING_MASK = 0x10
EMBER_AF_DEVICE_MANAGEMENT_UPDATE_CONSUMER_PASSWORD_PENDING_MASK = 0x20
}
enum
EMBER_AF_DEVICE_DISCOVERY_STATUS_NONE = 0x00
EMBER_AF_DEVICE_DISCOVERY_STATUS_NEW = 0x01
EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_ENDPOINTS = 0x02
EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_CLUSTERS = 0x04
EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_STACK_REVISION = 0x08
EMBER_AF_DEVICE_DISCOVERY_STATUS_DONE = 0x40
EMBER_AF_DEVICE_DISCOVERY_STATUS_FAILED = 0x80
}

Typedefs#

typedef uint16_t

Type for referring to zigbee application profile id.

typedef uint16_t

Type for referring to ZCL attribute id.

typedef uint16_t

Type for referring to ZCL cluster id.

typedef uint8_t

Type for referring to ZCL attribute type.

typedef uint8_t

Type for the cluster mask.

typedef uint8_t

Type for the attribute mask.

typedef void(*

Generic function type, used for either of the cluster function.

typedef uint32_t
typedef uint8_t

Interpan Message type: unicast, broadcast, or multicast.

typedef uint16_t

The options for sending/receiving interpan messages.

typedef uint8_t

The options for what interpan messages are allowed.

typedef uint8_t

Bitmask data type for storing one bit of information for each ESI in the ESI table.

typedef void()
EmberAfServiceDiscoveryCallback(const EmberAfServiceDiscoveryResult *result)

This defines a callback where a code element or cluster can be informed as to the result of a service discovery they have requested. For each match, the callback is fired with all the resulting matches from that source. If the discovery was unicast to a specific device, then the callback will only be fired once with either MATCH_FOUND or COMPLETE (no matches found). If the discovery is broadcast then multiple callbacks may be fired with EMBER_AF_BROADCAST_SERVICE_DISCOVERY_RESPONSE_RECEIVED. After a couple seconds the callback will then be fired with EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE or EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE as the result.

typedef void()

This defines a callback where a code element or cluster can be informed as to the result of a request to initiate a partner link key exchange. The callback will be triggered with success equal to true if the exchange completed successfully.

typedef void(*

Type for referring to the handler for network events.

typedef void(*
EmberAfEndpointEventHandler)(uint8_t endpoint)

Type for referring to the handler for endpoint events.

typedef void(*
EmberAfTickFunction)(uint8_t endpoint)

Type for referring to the tick callback for cluster.

typedef void(*
EmberAfInitFunction)(uint8_t endpoint)

Type for referring to the init callback for cluster.

typedef void(*
EmberAfClusterAttributeChangedCallback)(uint8_t endpoint, EmberAfAttributeId attributeId)

Type for referring to the attribute changed callback function.

typedef void(*
EmberAfManufacturerSpecificClusterAttributeChangedCallback)(uint8_t endpoint, EmberAfAttributeId attributeId, uint16_t manufacturerCode)

Type for referring to the manufacturer specific attribute changed callback function.

typedef EmberAfStatus(*
EmberAfClusterPreAttributeChangedCallback)(uint8_t endpoint, EmberAfAttributeId attributeId, EmberAfAttributeType attributeType, uint8_t size, uint8_t *value)

Type for referring to the pre-attribute changed callback function.

typedef void(*
EmberAfDefaultResponseFunction)(uint8_t endpoint, uint8_t commandId, EmberAfStatus status)

Type for referring to the default response callback function.

typedef void(*
EmberAfMessageSentFunction)(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame, uint16_t msgLen, uint8_t *message, EmberStatus status)

Type for referring to the message sent callback function.

typedef uint16_t

Zigbee Internet Client/Server Remote Cluster Types.

Macro Definition Documentation#

EMBER_AF_NULL_MANUFACTURER_CODE#

#define EMBER_AF_NULL_MANUFACTURER_CODE
Value:
0x0000u

A distinguished manufacturer code that is used to indicate the absence of a manufacturer-specific profile, cluster, command, or attribute.


Definition at line 75 of file ./app/framework/include/af-types.h

EMBER_AF_INVALID_PROFILE_ID#

#define EMBER_AF_INVALID_PROFILE_ID
Value:
0xFFFFu

An invalid profile ID This is a reserved profileId.


Definition at line 81 of file ./app/framework/include/af-types.h

EMBER_AF_INTER_PAN_UNICAST#

#define EMBER_AF_INTER_PAN_UNICAST
Value:
0x00u

Definition at line 330 of file ./app/framework/include/af-types.h

EMBER_AF_INTER_PAN_BROADCAST#

#define EMBER_AF_INTER_PAN_BROADCAST
Value:
0x08u

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

EMBER_AF_INTER_PAN_MULTICAST#

#define EMBER_AF_INTER_PAN_MULTICAST
Value:
0x0Cu

Definition at line 332 of file ./app/framework/include/af-types.h

INTER_PAN_UNICAST#

#define INTER_PAN_UNICAST
Value:
EMBER_AF_INTER_PAN_UNICAST

Definition at line 335 of file ./app/framework/include/af-types.h

INTER_PAN_BROADCAST#

#define INTER_PAN_BROADCAST
Value:
EMBER_AF_INTER_PAN_BROADCAST

Definition at line 336 of file ./app/framework/include/af-types.h

INTER_PAN_MULTICAST#

#define INTER_PAN_MULTICAST
Value:
EMBER_AF_INTER_PAN_MULTICAST

Definition at line 337 of file ./app/framework/include/af-types.h

EMBER_AF_INTERPAN_OPTION_NONE#

#define EMBER_AF_INTERPAN_OPTION_NONE
Value:
0x0000u

Definition at line 339 of file ./app/framework/include/af-types.h

EMBER_AF_INTERPAN_OPTION_APS_ENCRYPT#

#define EMBER_AF_INTERPAN_OPTION_APS_ENCRYPT
Value:
0x0001u

Definition at line 340 of file ./app/framework/include/af-types.h

EMBER_AF_INTERPAN_OPTION_MAC_HAS_LONG_ADDRESS#

#define EMBER_AF_INTERPAN_OPTION_MAC_HAS_LONG_ADDRESS
Value:
0x0002u

Definition at line 341 of file ./app/framework/include/af-types.h

InterPanHeader#

#define InterPanHeader
Value:
EmberAfInterpanHeader

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

EMBER_AF_INTERPAN_DIRECTION_CLIENT_TO_SERVER#

#define EMBER_AF_INTERPAN_DIRECTION_CLIENT_TO_SERVER
Value:
0x01u

Definition at line 385 of file ./app/framework/include/af-types.h

EMBER_AF_INTERPAN_DIRECTION_SERVER_TO_CLIENT#

#define EMBER_AF_INTERPAN_DIRECTION_SERVER_TO_CLIENT
Value:
0x02u

Definition at line 386 of file ./app/framework/include/af-types.h

EMBER_AF_INTERPAN_DIRECTION_BOTH#

#define EMBER_AF_INTERPAN_DIRECTION_BOTH
Value:
0x03u

Definition at line 387 of file ./app/framework/include/af-types.h

EMBER_AF_INTERPAN_GLOBAL_COMMAND#

#define EMBER_AF_INTERPAN_GLOBAL_COMMAND
Value:
0x04u

Definition at line 388 of file ./app/framework/include/af-types.h

EMBER_AF_INTERPAN_MANUFACTURER_SPECIFIC#

#define EMBER_AF_INTERPAN_MANUFACTURER_SPECIFIC
Value:
0x08u

Definition at line 389 of file ./app/framework/include/af-types.h

EMBER_AF_ALLOW_TC_KEY_REQUESTS#

#define EMBER_AF_ALLOW_TC_KEY_REQUESTS
Value:
EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_SEND_CURRENT_KEY

Definition at line 459 of file ./app/framework/include/af-types.h

EMBER_AF_DENY_TC_KEY_REQUESTS#

#define EMBER_AF_DENY_TC_KEY_REQUESTS
Value:
EMBER_DENY_TC_LINK_KEY_REQUESTS

Definition at line 460 of file ./app/framework/include/af-types.h

EMBER_AF_ALLOW_APP_KEY_REQUESTS#

#define EMBER_AF_ALLOW_APP_KEY_REQUESTS
Value:
EMBER_ALLOW_APP_LINK_KEY_REQUEST

Definition at line 461 of file ./app/framework/include/af-types.h

EMBER_AF_DENY_APP_KEY_REQUESTS#

#define EMBER_AF_DENY_APP_KEY_REQUESTS
Value:
EMBER_DENY_APP_LINK_KEY_REQUESTS

Definition at line 462 of file ./app/framework/include/af-types.h

EM_AF_DISCOVERY_RESPONSE_MASK#

#define EM_AF_DISCOVERY_RESPONSE_MASK
Value:
(0x05)

Definition at line 618 of file ./app/framework/include/af-types.h

emberAfHaveDiscoveryResponseStatus#

#define emberAfHaveDiscoveryResponseStatus
Value:
(status)

A simple way to determine if the service discovery callback has a response.


Definition at line 624 of file ./app/framework/include/af-types.h

EMBER_AF_SCENE_TABLE_NULL_INDEX#

#define EMBER_AF_SCENE_TABLE_NULL_INDEX
Value:
0xFFu

Indicates the absence of a Scene table entry.


Definition at line 873 of file ./app/framework/include/af-types.h

EMBER_AF_SCENE_TABLE_UNUSED_ENDPOINT_ID#

#define EMBER_AF_SCENE_TABLE_UNUSED_ENDPOINT_ID
Value:
0x00u

Value used when setting or getting the endpoint in a Scene table entry. It indicates that the entry is not in use.


Definition at line 878 of file ./app/framework/include/af-types.h

ZCL_SCENES_CLUSTER_MAXIMUM_NAME_LENGTH#

#define ZCL_SCENES_CLUSTER_MAXIMUM_NAME_LENGTH
Value:
16

Maximum length of Scene names, not including the length byte.


Definition at line 882 of file ./app/framework/include/af-types.h

ZCL_SCENES_GLOBAL_SCENE_GROUP_ID#

#define ZCL_SCENES_GLOBAL_SCENE_GROUP_ID
Value:
0x0000u

The group identifier for the global scene.


Definition at line 886 of file ./app/framework/include/af-types.h

ZCL_SCENES_GLOBAL_SCENE_SCENE_ID#

#define ZCL_SCENES_GLOBAL_SCENE_SCENE_ID
Value:
0x00u

The scene identifier for the global scene.


Definition at line 890 of file ./app/framework/include/af-types.h

EMBER_AF_PLUGIN_MESSAGING_CLIENT_MESSAGE_SIZE#

#define EMBER_AF_PLUGIN_MESSAGING_CLIENT_MESSAGE_SIZE
Value:
0

Definition at line 955 of file ./app/framework/include/af-types.h

ZCL_PRICE_CLUSTER_MAXIMUM_RATE_LABEL_LENGTH#

#define ZCL_PRICE_CLUSTER_MAXIMUM_RATE_LABEL_LENGTH
Value:
11

Definition at line 971 of file ./app/framework/include/af-types.h

EMBER_AF_PLUGIN_REPORTING_UNUSED_ENDPOINT_ID#

#define EMBER_AF_PLUGIN_REPORTING_UNUSED_ENDPOINT_ID
Value:
0x00u

Value used when setting or getting the endpoint in a report table entry. It indicates that the entry is not in use.


Definition at line 1019 of file ./app/framework/include/af-types.h

EMBER_AF_OTA_MAX_HEADER_STRING_LENGTH#

#define EMBER_AF_OTA_MAX_HEADER_STRING_LENGTH
Value:
32

The maximum size of the string that is present in the header of the zigbee Over-the-air file format.


Definition at line 1217 of file ./app/framework/include/af-types.h

UID_SIZE#

#define UID_SIZE
Value:
32

Definition at line 1219 of file ./app/framework/include/af-types.h

APP_NOTIFY_ERROR_CODE_START#

#define APP_NOTIFY_ERROR_CODE_START
Value:
NO_LOCAL_RESOURCES

Definition at line 1321 of file ./app/framework/include/af-types.h

APP_NOTIFY_MESSAGE_TEXT#

#define APP_NOTIFY_MESSAGE_TEXT
Value:
{ \
"None", \
"Received Cert", \
"Generate keys", \
"Generate secret", \
"Key generate done", \
"Generate secret done", \
"Link key verified", \
\
/* Transient Error codes */ \
"No local resources", \
"Partner no resources", \
"Timeout", \
"Invalid app. command", \
"Message send failure", \
"Partner sent terminate", \
"Bad message", \
"Partner sent Default Rsp", \
\
/* Fatal errors */ \
"Bad cert issuer", \
"Key confirm failure", \
"Bad key est. suite", \
"Key table full", \
"Not allowed", \
"Invalid Key Usage", \
}

Definition at line 1322 of file ./app/framework/include/af-types.h

EMBER_AF_STANDALONE_BOOTLOADER_HARDWARE_TAG_LENGTH#

#define EMBER_AF_STANDALONE_BOOTLOADER_HARDWARE_TAG_LENGTH
Value:
16

The length of the hardware tag in the Ember Bootloader Query Response.


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

EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_ELECTRIC_METER#

#define EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_ELECTRIC_METER
Value:
0

Definition at line 1539 of file ./app/framework/include/af-types.h

EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_GAS_METER#

#define EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_GAS_METER
Value:
1

Definition at line 1540 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_NEW_OTA_FIRMWARE#

#define EMBER_AF_METERING_FNF_NEW_OTA_FIRMWARE
Value:
0x00000001

Definition at line 1544 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_CBKE_UPDATE_REQUEST#

#define EMBER_AF_METERING_FNF_CBKE_UPDATE_REQUEST
Value:
0x00000002

Definition at line 1545 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_TIME_SYNC#

#define EMBER_AF_METERING_FNF_TIME_SYNC
Value:
0x00000004

Definition at line 1546 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_HAN#

#define EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_HAN
Value:
0x00000010

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

EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_WAN#

#define EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_WAN
Value:
0x00000020

Definition at line 1548 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET#

#define EMBER_AF_METERING_FNF_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET
Value:
0x000001C0

Definition at line 1549 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET#

#define EMBER_AF_METERING_FNF_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET
Value:
0x00000E00

Definition at line 1550 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER#

#define EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER
Value:
0x00001000

Definition at line 1551 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_METERING_CLUSTER#

#define EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_METERING_CLUSTER
Value:
0x00002000

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

EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER#

#define EMBER_AF_METERING_FNF_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER
Value:
0x00004000

Definition at line 1553 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_NETWORK_KEY_ACTIVE#

#define EMBER_AF_METERING_FNF_NETWORK_KEY_ACTIVE
Value:
0x00008000

Definition at line 1554 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_DISPLAY_MESSAGE#

#define EMBER_AF_METERING_FNF_DISPLAY_MESSAGE
Value:
0x00010000

Definition at line 1555 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_CANCEL_ALL_MESSAGES#

#define EMBER_AF_METERING_FNF_CANCEL_ALL_MESSAGES
Value:
0x00020000

Definition at line 1556 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_CHANGE_SUPPLY#

#define EMBER_AF_METERING_FNF_CHANGE_SUPPLY
Value:
0x00040000

Definition at line 1557 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_LOCAL_CHANGE_SUPPLY#

#define EMBER_AF_METERING_FNF_LOCAL_CHANGE_SUPPLY
Value:
0x00080000

Definition at line 1558 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_SET_UNCONTROLLED_FLOW_THRESHOLD#

#define EMBER_AF_METERING_FNF_SET_UNCONTROLLED_FLOW_THRESHOLD
Value:
0x00100000

Definition at line 1559 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_TUNNEL_MESSAGE_PENDING#

#define EMBER_AF_METERING_FNF_TUNNEL_MESSAGE_PENDING
Value:
0x00200000

Definition at line 1560 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_GET_SNAPSHOT#

#define EMBER_AF_METERING_FNF_GET_SNAPSHOT
Value:
0x00400000

Definition at line 1561 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_GET_SAMPLED_DATA#

#define EMBER_AF_METERING_FNF_GET_SAMPLED_DATA
Value:
0x00800000

Definition at line 1562 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE#

#define EMBER_AF_METERING_FNF_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE
Value:
0x01000000

Definition at line 1563 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_ENERGY_SCAN_PENDING#

#define EMBER_AF_METERING_FNF_ENERGY_SCAN_PENDING
Value:
0x02000000

Definition at line 1564 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_FNF_CHANNEL_CHANGE_PENDING#

#define EMBER_AF_METERING_FNF_CHANNEL_CHANGE_PENDING
Value:
0x04000000

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

EMBER_AF_METERING_NF2_PUBLISH_PRICE#

#define EMBER_AF_METERING_NF2_PUBLISH_PRICE
Value:
0x00000001

Definition at line 1568 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_BLOCK_PERIOD#

#define EMBER_AF_METERING_NF2_PUBLISH_BLOCK_PERIOD
Value:
0x00000002

Definition at line 1569 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_TARIFF_INFORMATION#

#define EMBER_AF_METERING_NF2_PUBLISH_TARIFF_INFORMATION
Value:
0x00000004

Definition at line 1570 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_CONVERSION_FACTOR#

#define EMBER_AF_METERING_NF2_PUBLISH_CONVERSION_FACTOR
Value:
0x00000008

Definition at line 1571 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_CALORIFIC_VALUE#

#define EMBER_AF_METERING_NF2_PUBLISH_CALORIFIC_VALUE
Value:
0x00000010

Definition at line 1572 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_CO2_VALUE#

#define EMBER_AF_METERING_NF2_PUBLISH_CO2_VALUE
Value:
0x00000020

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

EMBER_AF_METERING_NF2_PUBLISH_BILLING_PERIOD#

#define EMBER_AF_METERING_NF2_PUBLISH_BILLING_PERIOD
Value:
0x00000040

Definition at line 1574 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_CONSOLIDATED_BILL#

#define EMBER_AF_METERING_NF2_PUBLISH_CONSOLIDATED_BILL
Value:
0x00000080

Definition at line 1575 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_PRICE_MATRIX#

#define EMBER_AF_METERING_NF2_PUBLISH_PRICE_MATRIX
Value:
0x00000100

Definition at line 1576 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_BLOCK_THRESHOLDS#

#define EMBER_AF_METERING_NF2_PUBLISH_BLOCK_THRESHOLDS
Value:
0x00000200

Definition at line 1577 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_CURRENCY_CONVERSION#

#define EMBER_AF_METERING_NF2_PUBLISH_CURRENCY_CONVERSION
Value:
0x00000400

Definition at line 1578 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_CREDIT_PAYMENT_INFO#

#define EMBER_AF_METERING_NF2_PUBLISH_CREDIT_PAYMENT_INFO
Value:
0x00001000

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

EMBER_AF_METERING_NF2_PUBLISH_CPP_EVENT#

#define EMBER_AF_METERING_NF2_PUBLISH_CPP_EVENT
Value:
0x00002000

Definition at line 1580 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_PUBLISH_TIER_LABELS#

#define EMBER_AF_METERING_NF2_PUBLISH_TIER_LABELS
Value:
0x00004000

Definition at line 1581 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF2_CANCEL_TARIFF#

#define EMBER_AF_METERING_NF2_CANCEL_TARIFF
Value:
0x00008000

Definition at line 1582 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF3_PUBLISH_CALENDAR#

#define EMBER_AF_METERING_NF3_PUBLISH_CALENDAR
Value:
0x00000001

Definition at line 1585 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF3_PUBLISH_SPECIAL_DAYS#

#define EMBER_AF_METERING_NF3_PUBLISH_SPECIAL_DAYS
Value:
0x00000002

Definition at line 1586 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF3_PUBLISH_SEASONS#

#define EMBER_AF_METERING_NF3_PUBLISH_SEASONS
Value:
0x00000004

Definition at line 1587 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF3_PUBLISH_WEEK#

#define EMBER_AF_METERING_NF3_PUBLISH_WEEK
Value:
0x00000008

Definition at line 1588 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF3_PUBLISH_DAY#

#define EMBER_AF_METERING_NF3_PUBLISH_DAY
Value:
0x00000010

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

EMBER_AF_METERING_NF3_CANCEL_CALENDAR#

#define EMBER_AF_METERING_NF3_CANCEL_CALENDAR
Value:
0x00000020

Definition at line 1590 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_SELECT_AVAILABLE_EMERGENCY_CREDIT#

#define EMBER_AF_METERING_NF4_SELECT_AVAILABLE_EMERGENCY_CREDIT
Value:
0x00000001

Definition at line 1593 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_CHANGE_DEBT#

#define EMBER_AF_METERING_NF4_CHANGE_DEBT
Value:
0x00000002

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

EMBER_AF_METERING_NF4_EMERGENCY_CREDIT_SETUP#

#define EMBER_AF_METERING_NF4_EMERGENCY_CREDIT_SETUP
Value:
0x00000004

Definition at line 1595 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_CONSUMER_TOP_UP#

#define EMBER_AF_METERING_NF4_CONSUMER_TOP_UP
Value:
0x00000008

Definition at line 1596 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_CREDIT_ADJUSTMENT#

#define EMBER_AF_METERING_NF4_CREDIT_ADJUSTMENT
Value:
0x00000010

Definition at line 1597 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_CHANGE_PAYMENT_MODE#

#define EMBER_AF_METERING_NF4_CHANGE_PAYMENT_MODE
Value:
0x00000020

Definition at line 1598 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_GET_PREPAY_SNAPSHOT#

#define EMBER_AF_METERING_NF4_GET_PREPAY_SNAPSHOT
Value:
0x00000040

Definition at line 1599 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_GET_TOP_UP_LOG#

#define EMBER_AF_METERING_NF4_GET_TOP_UP_LOG
Value:
0x00000080

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

EMBER_AF_METERING_NF4_SET_LOW_CREDIT_WARNING_LEVEL#

#define EMBER_AF_METERING_NF4_SET_LOW_CREDIT_WARNING_LEVEL
Value:
0x00000100

Definition at line 1601 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_GET_DEBT_REPAYMENT_LOG#

#define EMBER_AF_METERING_NF4_GET_DEBT_REPAYMENT_LOG
Value:
0x00000200

Definition at line 1602 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_SET_MAXIMUM_CREDIT_LIMIT#

#define EMBER_AF_METERING_NF4_SET_MAXIMUM_CREDIT_LIMIT
Value:
0x00000400

Definition at line 1603 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF4_SET_OVERALL_DEBT_CAP#

#define EMBER_AF_METERING_NF4_SET_OVERALL_DEBT_CAP
Value:
0x00000800

Definition at line 1604 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_TENANCY#

#define EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_TENANCY
Value:
0x00000001

Definition at line 1607 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_SUPPLIER#

#define EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_SUPPLIER
Value:
0x00000002

Definition at line 1608 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_1_RESPONSE#

#define EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_1_RESPONSE
Value:
0x00000004

Definition at line 1609 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_2_RESPONSE#

#define EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_2_RESPONSE
Value:
0x00000008

Definition at line 1610 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_3_RESPONSE#

#define EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_3_RESPONSE
Value:
0x00000010

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

EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_4_RESPONSE#

#define EMBER_AF_METERING_NF5_REQUEST_NEW_PASSWORD_4_RESPONSE
Value:
0x00000020

Definition at line 1612 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF5_UPDATE_SITE_ID#

#define EMBER_AF_METERING_NF5_UPDATE_SITE_ID
Value:
0x00000040

Definition at line 1613 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF5_RESET_BATTERY_COUNTER#

#define EMBER_AF_METERING_NF5_RESET_BATTERY_COUNTER
Value:
0x00000080

Definition at line 1614 of file ./app/framework/include/af-types.h

EMBER_AF_METERING_NF5_UPDATE_CIN#

#define EMBER_AF_METERING_NF5_UPDATE_CIN
Value:
0x00000100

Definition at line 1615 of file ./app/framework/include/af-types.h

EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_NAME_LENGTH#

#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_NAME_LENGTH
Value:
(16)

Device Management plugin types.


Definition at line 1636 of file ./app/framework/include/af-types.h

EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_CONTACT_DETAILS_LENGTH#

#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_CONTACT_DETAILS_LENGTH
Value:
(18)

Definition at line 1637 of file ./app/framework/include/af-types.h

EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_SITE_ID_LENGTH#

#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_SITE_ID_LENGTH
Value:
(32)

Definition at line 1638 of file ./app/framework/include/af-types.h

EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_CIN_LENGTH#

#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_CIN_LENGTH
Value:
(24)

Definition at line 1639 of file ./app/framework/include/af-types.h

EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PASSWORD_LENGTH#

#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PASSWORD_LENGTH
Value:
(10)

Definition at line 1640 of file ./app/framework/include/af-types.h

EMBER_AF_REMOTE_CLUSTER_TYPE_NONE#

#define EMBER_AF_REMOTE_CLUSTER_TYPE_NONE
Value:
0x0000u

Definition at line 1793 of file ./app/framework/include/af-types.h

EMBER_AF_REMOTE_CLUSTER_TYPE_SERVER#

#define EMBER_AF_REMOTE_CLUSTER_TYPE_SERVER
Value:
0x0001u

Definition at line 1794 of file ./app/framework/include/af-types.h

EMBER_AF_REMOTE_CLUSTER_TYPE_CLIENT#

#define EMBER_AF_REMOTE_CLUSTER_TYPE_CLIENT
Value:
0x0002u

Definition at line 1795 of file ./app/framework/include/af-types.h

EMBER_AF_REMOTE_CLUSTER_TYPE_INVALID#

#define EMBER_AF_REMOTE_CLUSTER_TYPE_INVALID
Value:
0xFFFFu

Definition at line 1796 of file ./app/framework/include/af-types.h

EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT#

#define EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT
Value:
3

Definition at line 1827 of file ./app/framework/include/af-types.h

EMBER_AF_MAX_ENDPOINTS_PER_DEVICE#

#define EMBER_AF_MAX_ENDPOINTS_PER_DEVICE
Value:
1

Definition at line 1842 of file ./app/framework/include/af-types.h

EMBER_AF_INVALID_CLUSTER_ID#

#define EMBER_AF_INVALID_CLUSTER_ID
Value:
0xFFFFu

Definition at line 1882 of file ./app/framework/include/af-types.h

EMBER_AF_INVALID_ENDPOINT#

#define EMBER_AF_INVALID_ENDPOINT
Value:
0xFFu

Definition at line 1884 of file ./app/framework/include/af-types.h

EMBER_AF_INVALID_PAN_ID#

#define EMBER_AF_INVALID_PAN_ID
Value:
0xFFFFu

Definition at line 1886 of file ./app/framework/include/af-types.h

EMBER_AF_PERMIT_JOIN_FOREVER#

#define EMBER_AF_PERMIT_JOIN_FOREVER
Value:
0xFF

Permit join times.


Definition at line 1891 of file ./app/framework/include/af-types.h

EMBER_AF_PERMIT_JOIN_MAX_TIMEOUT#

#define EMBER_AF_PERMIT_JOIN_MAX_TIMEOUT
Value:
0xFE

Definition at line 1892 of file ./app/framework/include/af-types.h

EMBER_AF_ZDO_RESPONSE_OVERHEAD#

#define EMBER_AF_ZDO_RESPONSE_OVERHEAD
Value:
2

The overhead of the ZDO response. 1 byte for the sequence and 1 byte for the status code.


Definition at line 1898 of file ./app/framework/include/af-types.h

Enumeration Documentation#

EmberAfSecurityProfile#

EmberAfSecurityProfile
Enumerator
EMBER_AF_SECURITY_PROFILE_NONE
EMBER_AF_SECURITY_PROFILE_HA
EMBER_AF_SECURITY_PROFILE_HA12
EMBER_AF_SECURITY_PROFILE_SE_TEST
EMBER_AF_SECURITY_PROFILE_SE_FULL
EMBER_AF_SECURITY_PROFILE_Z3
EMBER_AF_SECURITY_PROFILE_CUSTOM

Definition at line 466 of file ./app/framework/include/af-types.h

EmberAfServiceDiscoveryStatus#

EmberAfServiceDiscoveryStatus

This is an enum used to indicate the result of the service discovery. Unicast discoveries are completed as soon as a response is received. Broadcast discoveries wait a period of time for multiple responses to be received.

Enumerator
EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE
EMBER_AF_BROADCAST_SERVICE_DISCOVERY_RESPONSE_RECEIVED
EMBER_AF_UNICAST_SERVICE_DISCOVERY_TIMEOUT
EMBER_AF_UNICAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE
EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE
EMBER_AF_UNICAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE
EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE

Definition at line 608 of file ./app/framework/include/af-types.h

EmberAfEventPollControl#

EmberAfEventPollControl

This is an enum used to control how the device will poll for a given active cluster-related event. When the event is scheduled, the application can pass a poll control value which will be stored along with the event. The processor is only allowed to poll according to the most restrictive value for all active event. For instance, if two events are active, one with EMBER_AF_LONG_POLL and the other with EMBER_AF_SHORT_POLL, then the processor will short poll until the second event is deactivated.

Enumerator
EMBER_AF_LONG_POLL
EMBER_AF_SHORT_POLL

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

EmberAfEventSleepControl#

EmberAfEventSleepControl

This is an enum used to control how the device will sleep for a given active cluster related event. When the event is scheduled, the scheduling code can pass a sleep control value which will be stored along with the event. The processor is only allowed to sleep according to the most restrictive sleep control value for any active event. For instance, if two events are active, one with EMBER_AF_OK_TO_HIBERNATE and the other with EMBER_AF_OK_TO_NAP, then the processor will only be allowed to nap until the second event is deactivated.

Enumerator
EMBER_AF_OK_TO_SLEEP
EMBER_AF_OK_TO_HIBERNATE

Deprecated

EMBER_AF_OK_TO_NAP

Deprecated

EMBER_AF_STAY_AWAKE
EMBER_AF_OK_TO_SLEEP
EMBER_AF_OK_TO_HIBERNATE

Deprecated

EMBER_AF_OK_TO_NAP

Deprecated

EMBER_AF_STAY_AWAKE

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

EmberAfApplicationTask#

EmberAfApplicationTask

An enum used to track the tasks that the Application framework cares about. These are intended to be tasks that should keep the device out of hibernation like an application level request / response. If the response does not come in as a data ack, then the application will need to stay out of hibernation to wait and poll for it.

Of course some tasks do not necessarily have a response. For instance, a ZDO request may or may not have a response. In this case, the application framework cannot rely on the fact that a response will come in to end the wake cycle, so the Application framework must timeout the wake cycle if no expected response is received or no other event can be relied upon to end the wake cycle.

Tasks of this type should be added to the wake timeout mask by calling emberAfSetWakeTimeoutBitmaskCallback so that they can be governed by a timeout instead of a request / response

the current tasks bitmask is an uint32_t bitmask used to track which tasks are active at any given time. The bottom 16 bits, values 0x01 - 0x8000 are reserved for Ember's use. The top 16 bits are reserved for the customer, values 0x10000 - 0x80000000

Enumerator
EMBER_AF_WAITING_FOR_DATA_ACK
EMBER_AF_LAST_POLL_GOT_DATA
EMBER_AF_WAITING_FOR_SERVICE_DISCOVERY
EMBER_AF_WAITING_FOR_ZDO_RESPONSE
EMBER_AF_WAITING_FOR_ZCL_RESPONSE
EMBER_AF_WAITING_FOR_REGISTRATION
EMBER_AF_WAITING_FOR_PARTNER_LINK_KEY_EXCHANGE
EMBER_AF_FORCE_SHORT_POLL
EMBER_AF_FRAGMENTATION_IN_PROGRESS
EMBER_AF_FORCE_SHORT_POLL_FOR_PARENT_CONNECTIVITY
EMBER_AF_WAITING_FOR_TC_KEY_UPDATE

Definition at line 772 of file ./app/framework/include/af-types.h

EmberAfPluginPriceCppAuth#

EmberAfPluginPriceCppAuth

Specifies CPP Authorization values.

Enumerator
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_PENDING
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_ACCEPTED
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_REJECTED
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_FORCED
EMBER_AF_PLUGIN_PRICE_CPP_AUTH_RESERVED

Definition at line 1002 of file ./app/framework/include/af-types.h

EmberAfPluginTunnelingClientStatus#

EmberAfPluginTunnelingClientStatus
Enumerator
EMBER_AF_PLUGIN_TUNNELING_CLIENT_SUCCESS
EMBER_AF_PLUGIN_TUNNELING_CLIENT_BUSY
EMBER_AF_PLUGIN_TUNNELING_CLIENT_NO_MORE_TUNNEL_IDS
EMBER_AF_PLUGIN_TUNNELING_CLIENT_PROTOCOL_NOT_SUPPORTED
EMBER_AF_PLUGIN_TUNNELING_CLIENT_FLOW_CONTROL_NOT_SUPPORTED
EMBER_AF_PLUGIN_TUNNELING_CLIENT_IEEE_ADDRESS_REQUEST_FAILED
EMBER_AF_PLUGIN_TUNNELING_CLIENT_IEEE_ADDRESS_NOT_FOUND
EMBER_AF_PLUGIN_TUNNELING_CLIENT_ADDRESS_TABLE_FULL
EMBER_AF_PLUGIN_TUNNELING_CLIENT_LINK_KEY_EXCHANGE_REQUEST_FAILED
EMBER_AF_PLUGIN_TUNNELING_CLIENT_LINK_KEY_EXCHANGE_FAILED
EMBER_AF_PLUGIN_TUNNELING_CLIENT_REQUEST_TUNNEL_FAILED
EMBER_AF_PLUGIN_TUNNELING_CLIENT_REQUEST_TUNNEL_TIMEOUT

Definition at line 1073 of file ./app/framework/include/af-types.h

@0#

@0

The list of options possible for the image block request/response.

Enumerator
EMBER_AF_IMAGE_BLOCK_REQUEST_OPTIONS_NONE
EMBER_AF_IMAGE_BLOCK_REQUEST_MIN_BLOCK_REQUEST_SUPPORTED_BY_CLIENT
EMBER_AF_IMAGE_BLOCK_REQUEST_MIN_BLOCK_REQUEST_SUPPORTED_BY_SERVER
EMBER_AF_IMAGE_BLOCK_REQUEST_SIMULATED_FROM_PAGE_REQUEST
EMBER_AF_DATA_TYPE_ANALOG
EMBER_AF_DATA_TYPE_DISCRETE
EMBER_AF_DATA_TYPE_NONE
PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION
PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY
TC_CONNECTIVITY
LONG_UPTIME
BAD_PARENT_CONNECTIVITY

Definition at line 1156 of file ./app/framework/include/af-types.h

EmberAfOtaStorageStatus#

EmberAfOtaStorageStatus

This status contains the success or error code of an OTA storage device operation.

Enumerator
EMBER_AF_OTA_STORAGE_SUCCESS
EMBER_AF_OTA_STORAGE_ERROR
EMBER_AF_OTA_STORAGE_RETURN_DATA_TOO_LONG
EMBER_AF_OTA_STORAGE_PARTIAL_FILE_FOUND
EMBER_AF_OTA_STORAGE_OPERATION_IN_PROGRESS

Definition at line 1191 of file ./app/framework/include/af-types.h

@1#

@1

This status contains the success or error code of an OTA download operation.

Enumerator
EMBER_AF_OTA_DOWNLOAD_AND_VERIFY_SUCCESS
EMBER_AF_OTA_DOWNLOAD_TIME_OUT
EMBER_AF_OTA_VERIFY_FAILED
EMBER_AF_OTA_SERVER_ABORTED
EMBER_AF_OTA_CLIENT_ABORTED
EMBER_AF_OTA_ERASE_FAILED
EMBER_POLL_TIMEOUT_10_SECONDS
EMBER_POLL_TIMEOUT_2_MINUTES
EMBER_POLL_TIMEOUT_4_MINUTES
EMBER_POLL_TIMEOUT_8_MINUTES
EMBER_POLL_TIMEOUT_16_MINUTES
EMBER_POLL_TIMEOUT_32_MINUTES
EMBER_POLL_TIMEOUT_64_MINUTES
EMBER_POLL_TIMEOUT_128_MINUTES
EMBER_POLL_TIMEOUT_256_MINUTES
EMBER_POLL_TIMEOUT_512_MINUTES
EMBER_POLL_TIMEOUT_1024_MINUTES
EMBER_POLL_TIMEOUT_2048_MINUTES
EMBER_POLL_TIMEOUT_4096_MINUTES
EMBER_POLL_TIMEOUT_8192_MINUTES
EMBER_POLL_TIMEOUT_16384_MINUTES

Definition at line 1203 of file ./app/framework/include/af-types.h

EmberAfKeyEstablishmentNotifyMessage#

EmberAfKeyEstablishmentNotifyMessage
Enumerator
NO_APP_MESSAGE
RECEIVED_PARTNER_CERTIFICATE
GENERATING_EPHEMERAL_KEYS
GENERATING_SHARED_SECRET
KEY_GENERATION_DONE
GENERATE_SHARED_SECRET_DONE
LINK_KEY_ESTABLISHED

LINK_KEY_ESTABLISHED indicates Success, key establishment done.

NO_LOCAL_RESOURCES

Error codes: Transient failures where Key Establishment could be retried

PARTNER_NO_RESOURCES
TIMEOUT_OCCURRED
INVALID_APP_COMMAND
MESSAGE_SEND_FAILURE
PARTNER_SENT_TERMINATE
INVALID_PARTNER_MESSAGE
PARTNER_SENT_DEFAULT_RESPONSE_ERROR
BAD_CERTIFICATE_ISSUER

Fatal Errors: These results are not worth retrying because the outcome will not change

KEY_CONFIRM_FAILURE
BAD_KEY_ESTABLISHMENT_SUITE
KEY_TABLE_FULL
NO_ESTABLISHMENT_ALLOWED

Neither initiator nor responder is an ESP/TC so the key establishment is not allowed per the spec.

INVALID_CERTIFICATE_KEY_USAGE

Definition at line 1272 of file ./app/framework/include/af-types.h

EmberAfImageVerifyStatus#

EmberAfImageVerifyStatus

This enumeration is used to indicate the state of an OTA bootload image undergoing verification. This is used both for cryptographic verification and manufacturer specific verification.

Enumerator
EMBER_AF_IMAGE_GOOD
EMBER_AF_IMAGE_BAD
EMBER_AF_IMAGE_VERIFY_IN_PROGRESS

Definition at line 1355 of file ./app/framework/include/af-types.h

EmberAfCbkeKeyEstablishmentSuite#

EmberAfCbkeKeyEstablishmentSuite

CBKE Library types.

Enumerator
EMBER_AF_INVALID_KEY_ESTABLISHMENT_SUITE
EMBER_AF_CBKE_KEY_ESTABLISHMENT_SUITE_163K1
EMBER_AF_CBKE_KEY_ESTABLISHMENT_SUITE_283K1

Definition at line 1621 of file ./app/framework/include/af-types.h

EmberAfDeviceManagementPasswordType#

EmberAfDeviceManagementPasswordType
Enumerator
UNUSED_PASSWORD
SERVICE_PASSWORD
CONSUMER_PASSWORD

Definition at line 1643 of file ./app/framework/include/af-types.h

EmberAfDeviceManagementChangePendingFlags#

EmberAfDeviceManagementChangePendingFlags
Enumerator
EMBER_AF_DEVICE_MANAGEMENT_CHANGE_OF_TENANCY_PENDING_MASK
EMBER_AF_DEVICE_MANAGEMENT_CHANGE_OF_SUPPLIER_PENDING_MASK
EMBER_AF_DEVICE_MANAGEMENT_UPDATE_SITE_ID_PENDING_MASK
EMBER_AF_DEVICE_MANAGEMENT_UPDATE_CIN_PENDING_MASK
EMBER_AF_DEVICE_MANAGEMENT_UPDATE_SERVICE_PASSWORD_PENDING_MASK
EMBER_AF_DEVICE_MANAGEMENT_UPDATE_CONSUMER_PASSWORD_PENDING_MASK

Definition at line 1655 of file ./app/framework/include/af-types.h

EmberAfDeviceDiscoveryStatus#

EmberAfDeviceDiscoveryStatus
Enumerator
EMBER_AF_DEVICE_DISCOVERY_STATUS_NONE
EMBER_AF_DEVICE_DISCOVERY_STATUS_NEW
EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_ENDPOINTS
EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_CLUSTERS
EMBER_AF_DEVICE_DISCOVERY_STATUS_FIND_STACK_REVISION
EMBER_AF_DEVICE_DISCOVERY_STATUS_DONE
EMBER_AF_DEVICE_DISCOVERY_STATUS_FAILED

Definition at line 1849 of file ./app/framework/include/af-types.h

Typedef Documentation#

EmberAfProfileId#

typedef uint16_t EmberAfProfileId

Type for referring to zigbee application profile id.


Definition at line 36 of file ./app/framework/include/af-types.h

EmberAfAttributeId#

typedef uint16_t EmberAfAttributeId

Type for referring to ZCL attribute id.


Definition at line 41 of file ./app/framework/include/af-types.h

EmberAfClusterId#

typedef uint16_t EmberAfClusterId

Type for referring to ZCL cluster id.


Definition at line 46 of file ./app/framework/include/af-types.h

EmberAfAttributeType#

typedef uint8_t EmberAfAttributeType

Type for referring to ZCL attribute type.


Definition at line 51 of file ./app/framework/include/af-types.h

EmberAfClusterMask#

typedef uint8_t EmberAfClusterMask

Type for the cluster mask.


Definition at line 56 of file ./app/framework/include/af-types.h

EmberAfAttributeMask#

typedef uint8_t EmberAfAttributeMask

Type for the attribute mask.


Definition at line 61 of file ./app/framework/include/af-types.h

EmberAfGenericClusterFunction#

typedef void(* EmberAfGenericClusterFunction) (void) )(void)

Generic function type, used for either of the cluster function.

This type is used for the array of the cluster functions, and should always be cast into one of the specific functions before being called.


Definition at line 69 of file ./app/framework/include/af-types.h

EmberAfDifferenceType#

typedef uint32_t EmberAfDifferenceType

This type is used to compare two ZCL attribute values. The size of this data type depends on the platform.


Definition at line 271 of file ./app/framework/include/af-types.h

EmberAfInterpanMessageType#

typedef uint8_t EmberAfInterpanMessageType

Interpan Message type: unicast, broadcast, or multicast.


Definition at line 329 of file ./app/framework/include/af-types.h

EmberAfInterpanOptions#

typedef uint16_t EmberAfInterpanOptions

The options for sending/receiving interpan messages.


Definition at line 346 of file ./app/framework/include/af-types.h

EmberAfAllowedInterpanOptions#

typedef uint8_t EmberAfAllowedInterpanOptions

The options for what interpan messages are allowed.


Definition at line 383 of file ./app/framework/include/af-types.h

EmberAfTcLinkKeyRequestPolicy#

typedef EmberTcLinkKeyRequestPolicy EmberAfTcLinkKeyRequestPolicy

Definition at line 457 of file ./app/framework/include/af-types.h

EmberAfAppLinkKeyRequestPolicy#

typedef EmberAppLinkKeyRequestPolicy EmberAfAppLinkKeyRequestPolicy

Definition at line 458 of file ./app/framework/include/af-types.h

EmberAfPluginEsiManagementBitmask#

typedef uint8_t EmberAfPluginEsiManagementBitmask

Bitmask data type for storing one bit of information for each ESI in the ESI table.


Definition at line 552 of file ./app/framework/include/af-types.h

EmberAfServiceDiscoveryCallback#

typedef void() EmberAfServiceDiscoveryCallback(const EmberAfServiceDiscoveryResult *result) (const EmberAfServiceDiscoveryResult *result)

This defines a callback where a code element or cluster can be informed as to the result of a service discovery they have requested. For each match, the callback is fired with all the resulting matches from that source. If the discovery was unicast to a specific device, then the callback will only be fired once with either MATCH_FOUND or COMPLETE (no matches found). If the discovery is broadcast then multiple callbacks may be fired with EMBER_AF_BROADCAST_SERVICE_DISCOVERY_RESPONSE_RECEIVED. After a couple seconds the callback will then be fired with EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE or EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE as the result.


Definition at line 699 of file ./app/framework/include/af-types.h

EmberAfPartnerLinkKeyExchangeCallback#

typedef void() EmberAfPartnerLinkKeyExchangeCallback(bool success) (bool success)

This defines a callback where a code element or cluster can be informed as to the result of a request to initiate a partner link key exchange. The callback will be triggered with success equal to true if the exchange completed successfully.


Definition at line 707 of file ./app/framework/include/af-types.h

EmberAfNetworkEventHandler#

typedef void(* EmberAfNetworkEventHandler) (void) )(void)

Type for referring to the handler for network events.


Definition at line 834 of file ./app/framework/include/af-types.h

EmberAfEndpointEventHandler#

typedef void(* EmberAfEndpointEventHandler) (uint8_t endpoint) )(uint8_t endpoint)

Type for referring to the handler for endpoint events.


Definition at line 839 of file ./app/framework/include/af-types.h

EmberAfImageBlockRequestOptions#

typedef uint8_t EmberAfImageBlockRequestOptions

Definition at line 1166 of file ./app/framework/include/af-types.h

EmberAfOtaDownloadResult#

typedef uint8_t EmberAfOtaDownloadResult

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

EmberAfTickFunction#

typedef void(* EmberAfTickFunction) (uint8_t endpoint) )(uint8_t endpoint)

Type for referring to the tick callback for cluster.

Tick function will be called once for each tick for each endpoint in the cluster. The rate of tick is determined by the metadata of the cluster.


Definition at line 1376 of file ./app/framework/include/af-types.h

EmberAfInitFunction#

typedef void(* EmberAfInitFunction) (uint8_t endpoint) )(uint8_t endpoint)

Type for referring to the init callback for cluster.

Init function is called when the application starts up, once for each cluster/endpoint combination.


Definition at line 1384 of file ./app/framework/include/af-types.h

EmberAfClusterAttributeChangedCallback#

typedef void(* EmberAfClusterAttributeChangedCallback) (uint8_t endpoint, EmberAfAttributeId attributeId) )(uint8_t endpoint, EmberAfAttributeId attributeId)

Type for referring to the attribute changed callback function.

This function is called just after an attribute changes.


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

EmberAfManufacturerSpecificClusterAttributeChangedCallback#

typedef void(* EmberAfManufacturerSpecificClusterAttributeChangedCallback) (uint8_t endpoint, EmberAfAttributeId attributeId, uint16_t manufacturerCode) )(uint8_t endpoint, EmberAfAttributeId attributeId, uint16_t manufacturerCode)

Type for referring to the manufacturer specific attribute changed callback function.

This function is called just after a manufacturer specific attribute changes.


Definition at line 1400 of file ./app/framework/include/af-types.h

EmberAfClusterPreAttributeChangedCallback#

typedef EmberAfStatus(* EmberAfClusterPreAttributeChangedCallback) (uint8_t endpoint, EmberAfAttributeId attributeId, EmberAfAttributeType attributeType, uint8_t size, uint8_t *value) )(uint8_t endpoint, EmberAfAttributeId attributeId, EmberAfAttributeType attributeType, uint8_t size, uint8_t *value)

Type for referring to the pre-attribute changed callback function.

This function is called before an attribute changes.


Definition at line 1409 of file ./app/framework/include/af-types.h

EmberAfDefaultResponseFunction#

typedef void(* EmberAfDefaultResponseFunction) (uint8_t endpoint, uint8_t commandId, EmberAfStatus status) )(uint8_t endpoint, uint8_t commandId, EmberAfStatus status)

Type for referring to the default response callback function.

This function is called when default response is received, before the global callback. Global callback is called immediately afterwards.


Definition at line 1421 of file ./app/framework/include/af-types.h

EmberAfMessageSentFunction#

typedef void(* EmberAfMessageSentFunction) (EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame, uint16_t msgLen, uint8_t *message, EmberStatus status) )(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame, uint16_t msgLen, uint8_t *message, EmberStatus status)

Type for referring to the message sent callback function.

This function is called when a message is sent.


Definition at line 1430 of file ./app/framework/include/af-types.h

EmberAfRemoteClusterType#

typedef uint16_t EmberAfRemoteClusterType

Zigbee Internet Client/Server Remote Cluster Types.


Definition at line 1791 of file ./app/framework/include/af-types.h