Modules#
EmberAfDefaultOrMinMaxAttributeValue
EmberAfPluginMessagingClientMessage
EmberAfPluginZllCommissioningGroupInformationRecord
EmberAfPluginZllCommissioningEndpointInformationRecord
EmberAfImageBlockRequestCallbackStruct
EmberAfStandaloneBootloaderQueryResponseData
EmberAfDeviceManagementTenancy
EmberAfDeviceManagementSupplier
EmberAfDeviceManagementSupplyStatusFlags
EmberAfDeviceManagementUncontrolledFlowThreshold
EmberAfDeviceManagementSupplyStatus
EmberAfDeviceManagementPassword
EmberAfDeviceManagementAttributeRange
EmberAfDeviceManagementAttributeTable
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
#ifdef UC_BUILD
#include "sl_component_catalog.h"
#include "zap-type.h"
#include "zigbee_app_framework_common.h"
#ifdef SL_CATALOG_ZIGBEE_MESSAGING_CLIENT_PRESENT
#include "messaging-client-config.h"
#endif // SL_CATALOG_ZIGBEE_MESSAGING_CLIENT_PRESENT
#else
#include "enums.h"
#endif
#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);
typedef struct {
EmberAfClusterId clusterId;
EmberAfClusterMask functionMask;
const EmberAfGenericClusterFunction functionPtr;
} emberClusterFunctionStructure;
#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;
typedef uint64_t EmberAfDifferenceType;
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;
#if defined(EMBER_AF_PLUGIN_DRLC_SERVER) || defined(SL_CATALOG_ZIGBEE_DRLC_SERVER_PRESENT)
EmberEUI64 source;
uint8_t sourceEndpoint;
#endif //EMBER_AF_PLUGIN_DRLC_SERVER || SL_CATALOG_ZIGBEE_DRLC_SERVER_PRESENT
#if defined(EMBER_AF_PLUGIN_DRLC) || defined(SL_CATALOG_ZIGBEE_DRLC_PRESENT)
EmberAfPluginEsiManagementBitmask esiBitmask;
#endif //EMBER_AF_PLUGIN_DRLC || SL_CATALOG_ZIGBEE_DRLC_PRESENT
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 (0x05u)
#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;
#ifdef UC_BUILD
// TODO: update doxygen
typedef struct {
uint8_t endpoint;
EmberAfClusterId clusterId;
bool isClient;
EmberAfEventPollControl pollControl;
EmberAfEventSleepControl sleepControl;
sl_zigbee_event_t *event;
} sl_zigbee_event_context_t;
#endif
typedef void (*EmberAfNetworkEventHandler)(void);
typedef void (*EmberAfEndpointEventHandler)(uint8_t endpoint);
#define EMBER_AF_GROUP_TABLE_NULL_INDEX 0xFFu
#define EMBER_AF_GROUP_TABLE_UNUSED_ENDPOINT_ID 0x00u
#define ZCL_GROUPS_CLUSTER_MAXIMUM_NAME_LENGTH 16u
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;
#define EMBER_AF_SCENE_TABLE_NULL_INDEX 0xFFu
#define EMBER_AF_SCENE_TABLE_UNUSED_ENDPOINT_ID 0x00u
#define ZCL_SCENES_CLUSTER_MAXIMUM_NAME_LENGTH 16u
#define ZCL_SCENES_GLOBAL_SCENE_GROUP_ID 0x0000u
#define ZCL_SCENES_GLOBAL_SCENE_SCENE_ID 0x00u
// EMZIGBEE-6833: EmberAfSceneTableEntry declaration should be moved to the scenes component.
#ifdef UC_BUILD
#include "sl_component_catalog.h"
#ifdef SL_CATALOG_ZIGBEE_SCENES_PRESENT
#include "scenes-config.h"
#if (EMBER_AF_PLUGIN_SCENES_NAME_SUPPORT == 1)
#define SCENES_NAME_SUPPORT
#endif
#endif // SL_CATALOG_ZIGBEE_SCENES_PRESENT
#else // !UC_BUILD
#ifdef EMBER_AF_PLUGIN_SCENES_NAME_SUPPORT
#define SCENES_NAME_SUPPORT
#endif
#endif // UC_BUILD
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 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) && !defined(SL_CATALOG_ZIGBEE_MESSAGING_CLIENT_PRESENT)
// To forward declare callbacks regardless of whether the plugin
// is enabled, define all data structures. To define
// the messaging client data struct, 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 11u
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 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;
typedef struct {
uint16_t manufacturerId;
uint16_t imageTypeId;
uint32_t firmwareVersion;
uint8_t deviceSpecificFileEui64[EUI64_SIZE];
} EmberAfOtaImageId;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfImageBlockRequestOptions
#else
typedef uint8_t EmberAfImageBlockRequestOptions;
enum
#endif
{
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 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;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAfOtaDownloadResult
#else
typedef uint8_t EmberAfOtaDownloadResult;
enum
#endif
{
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,
};
#define EMBER_AF_OTA_MAX_HEADER_STRING_LENGTH 32u
#define UID_SIZE 32u
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 16u
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 (16u)
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PROPOSED_PROVIDER_CONTACT_DETAILS_LENGTH (18u)
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_SITE_ID_LENGTH (32u)
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_CIN_LENGTH (24u)
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PASSWORD_LENGTH (10u)
#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 contiguous
// 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;
#ifdef UC_BUILD
#include "sl_component_catalog.h"
#ifdef SL_CATALOG_ZIGBEE_DEVICE_DATABASE_PRESENT
#include "device-database-config.h"
#else
#define EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT 3u
#define EMBER_AF_MAX_ENDPOINTS_PER_DEVICE 1u
#endif
#else // UC_BUILD
#if !defined(EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT)
#define EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT 3u
#define EMBER_AF_MAX_ENDPOINTS_PER_DEVICE 1u
#endif
#endif // UC_BUILD
typedef struct {
EmberAfClusterInfo clusters[EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT];
EmberAfProfileId profileId;
uint16_t deviceId;
uint8_t endpoint;
uint8_t clusterCount;
} EmberAfEndpointInfoStruct;
// 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 0xFFu
#define EMBER_AF_PERMIT_JOIN_MAX_TIMEOUT 0xFEu
#define EMBER_AF_ZDO_RESPONSE_OVERHEAD 2u
#endif // SILABS_AF_API_TYPES
Macros#
A distinguished manufacturer code that is used to indicate the absence of a manufacturer-specific profile, cluster, command, or attribute.
An invalid profile ID This is a reserved profileId.
A simple way to determine if the service discovery callback has a response.
Indicate the absence of a Group table entry.
Value used when setting or getting the endpoint in a Group table entry. It indicates that the entry is not in use.
Maximum length of Group names, not including the length byte.
Indicates the absence of a Scene table entry.
Value used when setting or getting the endpoint in a Scene table entry. It indicates that the entry is not in use.
Maximum length of Scene names, not including the length byte.
The group identifier for the global scene.
The scene identifier for the global scene.
Use when setting or getting the endpoint in a report table entry. It indicates that the entry is not in use.
The maximum size of the string that is present in the header of the Zigbee Over-the-air file format.
The length of the hardware tag in the Ember Bootloader Query Response.
Device Management plugin types.
Permit join times.
The overhead of the ZDO response. 1 byte for the sequence and 1 byte for the status code.
Enumerations#
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.
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 example, if two events are active, one with EMBER_AF_LONG_POLL and the other with EMBER_AF_SHORT_POLL, the processor will short poll until the second event is deactivated.
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 example, if two events are active, one with EMBER_AF_OK_TO_HIBERNATE and the other with EMBER_AF_OK_TO_NAP, the processor will only be allowed to sleep until the second event is deactivated.
Track 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, the application needs to stay out of hibernation to wait and poll for it.
Specifies CPP Authorization values.
Status codes used by the ZLL Commissioning plugin.
The list of options possible for the image block request/response.
Contain the success or error code of an OTA storage device operation.
Contain the success or error code of an OTA download operation.
Indicate the state of an OTA bootload image undergoing verification. This is used both for cryptographic verification and manufacturer-specific verification.
CBKE Library types.
Typedefs#
Refer to the Zigbee application profile ID.
Refer to the ZCL attribute ID.
Refer to the ZCL cluster ID.
Refer to the ZCL attribute type.
User for the cluster mask.
User for the attribute mask.
Use for either of the cluster functions.
Interpan Message type: unicast, broadcast, or multicast.
The options for sending/receiving interpan messages.
The options for what interpan messages are allowed.
Bitmask data type for storing one bit of information for each ESI in the ESI table.
Define 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, the callback is only fired once with either MATCH_FOUND or COMPLETE (no matches found). If the discovery is broadcast, multiple callbacks may be fired with EMBER_AF_BROADCAST_SERVICE_DISCOVERY_RESPONSE_RECEIVED. After a few seconds, the callback is fired with EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE or EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE as the result.
Define 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.
Refer to the handler for network events.
Refer to the handler for endpoint events.
Refer to the tick callback for cluster.
Refer to the init callback for cluster.
Refer to the attribute changed callback function.
Refer to the manufacturer-specific attribute changed callback function.
Refer to the pre-attribute changed callback function.
Refer to the default response callback function.
Refer to the message sent callback function.
Zigbee Internet Client/Server Remote Cluster Types.
Macro Definition Documentation#
EMBER_AF_NULL_MANUFACTURER_CODE#
#define EMBER_AF_NULL_MANUFACTURER_CODEValue:
0x0000u
A distinguished manufacturer code that is used to indicate the absence of a manufacturer-specific profile, cluster, command, or attribute.
97
of file app/framework/include/af-types.h
EMBER_AF_INVALID_PROFILE_ID#
#define EMBER_AF_INVALID_PROFILE_IDValue:
0xFFFFu
An invalid profile ID This is a reserved profileId.
103
of file app/framework/include/af-types.h
EMBER_AF_INTER_PAN_UNICAST#
#define EMBER_AF_INTER_PAN_UNICASTValue:
0x00u
348
of file app/framework/include/af-types.h
EMBER_AF_INTER_PAN_BROADCAST#
#define EMBER_AF_INTER_PAN_BROADCASTValue:
0x08u
349
of file app/framework/include/af-types.h
EMBER_AF_INTER_PAN_MULTICAST#
#define EMBER_AF_INTER_PAN_MULTICASTValue:
0x0Cu
350
of file app/framework/include/af-types.h
INTER_PAN_UNICAST#
#define INTER_PAN_UNICASTValue:
EMBER_AF_INTER_PAN_UNICAST
353
of file app/framework/include/af-types.h
INTER_PAN_BROADCAST#
#define INTER_PAN_BROADCASTValue:
EMBER_AF_INTER_PAN_BROADCAST
354
of file app/framework/include/af-types.h
INTER_PAN_MULTICAST#
#define INTER_PAN_MULTICASTValue:
EMBER_AF_INTER_PAN_MULTICAST
355
of file app/framework/include/af-types.h
EMBER_AF_INTERPAN_OPTION_NONE#
#define EMBER_AF_INTERPAN_OPTION_NONEValue:
0x0000u
357
of file app/framework/include/af-types.h
EMBER_AF_INTERPAN_OPTION_APS_ENCRYPT#
#define EMBER_AF_INTERPAN_OPTION_APS_ENCRYPTValue:
0x0001u
358
of file app/framework/include/af-types.h
EMBER_AF_INTERPAN_OPTION_MAC_HAS_LONG_ADDRESS#
#define EMBER_AF_INTERPAN_OPTION_MAC_HAS_LONG_ADDRESSValue:
0x0002u
359
of file app/framework/include/af-types.h
InterPanHeader#
#define InterPanHeaderValue:
EmberAfInterpanHeader
396
of file app/framework/include/af-types.h
EMBER_AF_INTERPAN_DIRECTION_CLIENT_TO_SERVER#
#define EMBER_AF_INTERPAN_DIRECTION_CLIENT_TO_SERVERValue:
0x01u
403
of file app/framework/include/af-types.h
EMBER_AF_INTERPAN_DIRECTION_SERVER_TO_CLIENT#
#define EMBER_AF_INTERPAN_DIRECTION_SERVER_TO_CLIENTValue:
0x02u
404
of file app/framework/include/af-types.h
EMBER_AF_INTERPAN_DIRECTION_BOTH#
#define EMBER_AF_INTERPAN_DIRECTION_BOTHValue:
0x03u
405
of file app/framework/include/af-types.h
EMBER_AF_INTERPAN_GLOBAL_COMMAND#
#define EMBER_AF_INTERPAN_GLOBAL_COMMANDValue:
0x04u
406
of file app/framework/include/af-types.h
EMBER_AF_INTERPAN_MANUFACTURER_SPECIFIC#
#define EMBER_AF_INTERPAN_MANUFACTURER_SPECIFICValue:
0x08u
407
of file app/framework/include/af-types.h
EMBER_AF_ALLOW_TC_KEY_REQUESTS#
#define EMBER_AF_ALLOW_TC_KEY_REQUESTSValue:
EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_SEND_CURRENT_KEY
477
of file app/framework/include/af-types.h
EMBER_AF_DENY_TC_KEY_REQUESTS#
#define EMBER_AF_DENY_TC_KEY_REQUESTSValue:
EMBER_DENY_TC_LINK_KEY_REQUESTS
478
of file app/framework/include/af-types.h
EMBER_AF_ALLOW_APP_KEY_REQUESTS#
#define EMBER_AF_ALLOW_APP_KEY_REQUESTSValue:
EMBER_ALLOW_APP_LINK_KEY_REQUEST
479
of file app/framework/include/af-types.h
EMBER_AF_DENY_APP_KEY_REQUESTS#
#define EMBER_AF_DENY_APP_KEY_REQUESTSValue:
EMBER_DENY_APP_LINK_KEY_REQUESTS
480
of file app/framework/include/af-types.h
EM_AF_DISCOVERY_RESPONSE_MASK#
#define EM_AF_DISCOVERY_RESPONSE_MASKValue:
(0x05u)
636
of file app/framework/include/af-types.h
emberAfHaveDiscoveryResponseStatus#
#define emberAfHaveDiscoveryResponseStatusValue:
(status)
A simple way to determine if the service discovery callback has a response.
642
of file app/framework/include/af-types.h
EMBER_AF_GROUP_TABLE_NULL_INDEX#
#define EMBER_AF_GROUP_TABLE_NULL_INDEXValue:
0xFFu
Indicate the absence of a Group table entry.
904
of file app/framework/include/af-types.h
EMBER_AF_GROUP_TABLE_UNUSED_ENDPOINT_ID#
#define EMBER_AF_GROUP_TABLE_UNUSED_ENDPOINT_IDValue:
0x00u
Value used when setting or getting the endpoint in a Group table entry. It indicates that the entry is not in use.
909
of file app/framework/include/af-types.h
ZCL_GROUPS_CLUSTER_MAXIMUM_NAME_LENGTH#
#define ZCL_GROUPS_CLUSTER_MAXIMUM_NAME_LENGTHValue:
16u
Maximum length of Group names, not including the length byte.
913
of file app/framework/include/af-types.h
EMBER_AF_SCENE_TABLE_NULL_INDEX#
#define EMBER_AF_SCENE_TABLE_NULL_INDEXValue:
0xFFu
Indicates the absence of a Scene table entry.
931
of file app/framework/include/af-types.h
EMBER_AF_SCENE_TABLE_UNUSED_ENDPOINT_ID#
#define EMBER_AF_SCENE_TABLE_UNUSED_ENDPOINT_IDValue:
0x00u
Value used when setting or getting the endpoint in a Scene table entry. It indicates that the entry is not in use.
936
of file app/framework/include/af-types.h
ZCL_SCENES_CLUSTER_MAXIMUM_NAME_LENGTH#
#define ZCL_SCENES_CLUSTER_MAXIMUM_NAME_LENGTHValue:
16u
Maximum length of Scene names, not including the length byte.
940
of file app/framework/include/af-types.h
ZCL_SCENES_GLOBAL_SCENE_GROUP_ID#
#define ZCL_SCENES_GLOBAL_SCENE_GROUP_IDValue:
0x0000u
The group identifier for the global scene.
944
of file app/framework/include/af-types.h
ZCL_SCENES_GLOBAL_SCENE_SCENE_ID#
#define ZCL_SCENES_GLOBAL_SCENE_SCENE_IDValue:
0x00u
The scene identifier for the global scene.
948
of file app/framework/include/af-types.h
EMBER_AF_PLUGIN_MESSAGING_CLIENT_MESSAGE_SIZE#
#define EMBER_AF_PLUGIN_MESSAGING_CLIENT_MESSAGE_SIZEValue:
0
1029
of file app/framework/include/af-types.h
ZCL_PRICE_CLUSTER_MAXIMUM_RATE_LABEL_LENGTH#
#define ZCL_PRICE_CLUSTER_MAXIMUM_RATE_LABEL_LENGTHValue:
11u
1045
of file app/framework/include/af-types.h
EMBER_AF_PLUGIN_REPORTING_UNUSED_ENDPOINT_ID#
#define EMBER_AF_PLUGIN_REPORTING_UNUSED_ENDPOINT_IDValue:
0x00u
Use when setting or getting the endpoint in a report table entry. It indicates that the entry is not in use.
1093
of file app/framework/include/af-types.h
EMBER_AF_OTA_MAX_HEADER_STRING_LENGTH#
#define EMBER_AF_OTA_MAX_HEADER_STRING_LENGTHValue:
32u
The maximum size of the string that is present in the header of the Zigbee Over-the-air file format.
1299
of file app/framework/include/af-types.h
APP_NOTIFY_ERROR_CODE_START#
#define APP_NOTIFY_ERROR_CODE_STARTValue:
NO_LOCAL_RESOURCES
1402
of file app/framework/include/af-types.h
APP_NOTIFY_MESSAGE_TEXT#
#define APP_NOTIFY_MESSAGE_TEXTValue:
1403
of file app/framework/include/af-types.h
EMBER_AF_STANDALONE_BOOTLOADER_HARDWARE_TAG_LENGTH#
#define EMBER_AF_STANDALONE_BOOTLOADER_HARDWARE_TAG_LENGTHValue:
16u
The length of the hardware tag in the Ember Bootloader Query Response.
1566
of file app/framework/include/af-types.h
EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_ELECTRIC_METER#
#define EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_ELECTRIC_METERValue:
0
1620
of file app/framework/include/af-types.h
EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_GAS_METER#
#define EMBER_AF_PLUGIN_SIMPLE_METERING_SERVER_GAS_METERValue:
1
1621
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_NEW_OTA_FIRMWARE#
#define EMBER_AF_METERING_FNF_NEW_OTA_FIRMWAREValue:
0x00000001
1625
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_CBKE_UPDATE_REQUEST#
#define EMBER_AF_METERING_FNF_CBKE_UPDATE_REQUESTValue:
0x00000002
1626
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_TIME_SYNC#
#define EMBER_AF_METERING_FNF_TIME_SYNCValue:
0x00000004
1627
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_HAN#
#define EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_HANValue:
0x00000010
1628
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_WAN#
#define EMBER_AF_METERING_FNF_STAY_AWAKE_REQUEST_WANValue:
0x00000020
1629
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_SETValue:
0x000001C0
1630
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_SETValue:
0x00000E00
1631
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_CLUSTERValue:
0x00001000
1632
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_CLUSTERValue:
0x00002000
1633
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_CLUSTERValue:
0x00004000
1634
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_NETWORK_KEY_ACTIVE#
#define EMBER_AF_METERING_FNF_NETWORK_KEY_ACTIVEValue:
0x00008000
1635
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_DISPLAY_MESSAGE#
#define EMBER_AF_METERING_FNF_DISPLAY_MESSAGEValue:
0x00010000
1636
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_CANCEL_ALL_MESSAGES#
#define EMBER_AF_METERING_FNF_CANCEL_ALL_MESSAGESValue:
0x00020000
1637
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_CHANGE_SUPPLY#
#define EMBER_AF_METERING_FNF_CHANGE_SUPPLYValue:
0x00040000
1638
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_LOCAL_CHANGE_SUPPLY#
#define EMBER_AF_METERING_FNF_LOCAL_CHANGE_SUPPLYValue:
0x00080000
1639
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_SET_UNCONTROLLED_FLOW_THRESHOLD#
#define EMBER_AF_METERING_FNF_SET_UNCONTROLLED_FLOW_THRESHOLDValue:
0x00100000
1640
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_TUNNEL_MESSAGE_PENDING#
#define EMBER_AF_METERING_FNF_TUNNEL_MESSAGE_PENDINGValue:
0x00200000
1641
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_GET_SNAPSHOT#
#define EMBER_AF_METERING_FNF_GET_SNAPSHOTValue:
0x00400000
1642
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_GET_SAMPLED_DATA#
#define EMBER_AF_METERING_FNF_GET_SAMPLED_DATAValue:
0x00800000
1643
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_AVAILABLEValue:
0x01000000
1644
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_ENERGY_SCAN_PENDING#
#define EMBER_AF_METERING_FNF_ENERGY_SCAN_PENDINGValue:
0x02000000
1645
of file app/framework/include/af-types.h
EMBER_AF_METERING_FNF_CHANNEL_CHANGE_PENDING#
#define EMBER_AF_METERING_FNF_CHANNEL_CHANGE_PENDINGValue:
0x04000000
1646
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_PRICE#
#define EMBER_AF_METERING_NF2_PUBLISH_PRICEValue:
0x00000001
1649
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_BLOCK_PERIOD#
#define EMBER_AF_METERING_NF2_PUBLISH_BLOCK_PERIODValue:
0x00000002
1650
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_TARIFF_INFORMATION#
#define EMBER_AF_METERING_NF2_PUBLISH_TARIFF_INFORMATIONValue:
0x00000004
1651
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_CONVERSION_FACTOR#
#define EMBER_AF_METERING_NF2_PUBLISH_CONVERSION_FACTORValue:
0x00000008
1652
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_CALORIFIC_VALUE#
#define EMBER_AF_METERING_NF2_PUBLISH_CALORIFIC_VALUEValue:
0x00000010
1653
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_CO2_VALUE#
#define EMBER_AF_METERING_NF2_PUBLISH_CO2_VALUEValue:
0x00000020
1654
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_BILLING_PERIOD#
#define EMBER_AF_METERING_NF2_PUBLISH_BILLING_PERIODValue:
0x00000040
1655
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_CONSOLIDATED_BILL#
#define EMBER_AF_METERING_NF2_PUBLISH_CONSOLIDATED_BILLValue:
0x00000080
1656
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_PRICE_MATRIX#
#define EMBER_AF_METERING_NF2_PUBLISH_PRICE_MATRIXValue:
0x00000100
1657
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_BLOCK_THRESHOLDS#
#define EMBER_AF_METERING_NF2_PUBLISH_BLOCK_THRESHOLDSValue:
0x00000200
1658
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_CURRENCY_CONVERSION#
#define EMBER_AF_METERING_NF2_PUBLISH_CURRENCY_CONVERSIONValue:
0x00000400
1659
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_CREDIT_PAYMENT_INFO#
#define EMBER_AF_METERING_NF2_PUBLISH_CREDIT_PAYMENT_INFOValue:
0x00001000
1660
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_CPP_EVENT#
#define EMBER_AF_METERING_NF2_PUBLISH_CPP_EVENTValue:
0x00002000
1661
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_PUBLISH_TIER_LABELS#
#define EMBER_AF_METERING_NF2_PUBLISH_TIER_LABELSValue:
0x00004000
1662
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF2_CANCEL_TARIFF#
#define EMBER_AF_METERING_NF2_CANCEL_TARIFFValue:
0x00008000
1663
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF3_PUBLISH_CALENDAR#
#define EMBER_AF_METERING_NF3_PUBLISH_CALENDARValue:
0x00000001
1666
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF3_PUBLISH_SPECIAL_DAYS#
#define EMBER_AF_METERING_NF3_PUBLISH_SPECIAL_DAYSValue:
0x00000002
1667
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF3_PUBLISH_SEASONS#
#define EMBER_AF_METERING_NF3_PUBLISH_SEASONSValue:
0x00000004
1668
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF3_PUBLISH_WEEK#
#define EMBER_AF_METERING_NF3_PUBLISH_WEEKValue:
0x00000008
1669
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF3_PUBLISH_DAY#
#define EMBER_AF_METERING_NF3_PUBLISH_DAYValue:
0x00000010
1670
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF3_CANCEL_CALENDAR#
#define EMBER_AF_METERING_NF3_CANCEL_CALENDARValue:
0x00000020
1671
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_SELECT_AVAILABLE_EMERGENCY_CREDIT#
#define EMBER_AF_METERING_NF4_SELECT_AVAILABLE_EMERGENCY_CREDITValue:
0x00000001
1674
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_CHANGE_DEBT#
#define EMBER_AF_METERING_NF4_CHANGE_DEBTValue:
0x00000002
1675
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_EMERGENCY_CREDIT_SETUP#
#define EMBER_AF_METERING_NF4_EMERGENCY_CREDIT_SETUPValue:
0x00000004
1676
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_CONSUMER_TOP_UP#
#define EMBER_AF_METERING_NF4_CONSUMER_TOP_UPValue:
0x00000008
1677
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_CREDIT_ADJUSTMENT#
#define EMBER_AF_METERING_NF4_CREDIT_ADJUSTMENTValue:
0x00000010
1678
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_CHANGE_PAYMENT_MODE#
#define EMBER_AF_METERING_NF4_CHANGE_PAYMENT_MODEValue:
0x00000020
1679
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_GET_PREPAY_SNAPSHOT#
#define EMBER_AF_METERING_NF4_GET_PREPAY_SNAPSHOTValue:
0x00000040
1680
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_GET_TOP_UP_LOG#
#define EMBER_AF_METERING_NF4_GET_TOP_UP_LOGValue:
0x00000080
1681
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_LEVELValue:
0x00000100
1682
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_GET_DEBT_REPAYMENT_LOG#
#define EMBER_AF_METERING_NF4_GET_DEBT_REPAYMENT_LOGValue:
0x00000200
1683
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_SET_MAXIMUM_CREDIT_LIMIT#
#define EMBER_AF_METERING_NF4_SET_MAXIMUM_CREDIT_LIMITValue:
0x00000400
1684
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF4_SET_OVERALL_DEBT_CAP#
#define EMBER_AF_METERING_NF4_SET_OVERALL_DEBT_CAPValue:
0x00000800
1685
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_TENANCY#
#define EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_TENANCYValue:
0x00000001
1688
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_SUPPLIER#
#define EMBER_AF_METERING_NF5_PUBLISH_CHANGE_OF_SUPPLIERValue:
0x00000002
1689
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_RESPONSEValue:
0x00000004
1690
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_RESPONSEValue:
0x00000008
1691
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_RESPONSEValue:
0x00000010
1692
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_RESPONSEValue:
0x00000020
1693
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF5_UPDATE_SITE_ID#
#define EMBER_AF_METERING_NF5_UPDATE_SITE_IDValue:
0x00000040
1694
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF5_RESET_BATTERY_COUNTER#
#define EMBER_AF_METERING_NF5_RESET_BATTERY_COUNTERValue:
0x00000080
1695
of file app/framework/include/af-types.h
EMBER_AF_METERING_NF5_UPDATE_CIN#
#define EMBER_AF_METERING_NF5_UPDATE_CINValue:
0x00000100
1696
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_LENGTHValue:
(16u)
Device Management plugin types.
1717
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_LENGTHValue:
(18u)
1718
of file app/framework/include/af-types.h
EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_SITE_ID_LENGTH#
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_SITE_ID_LENGTHValue:
(32u)
1719
of file app/framework/include/af-types.h
EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_CIN_LENGTH#
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_CIN_LENGTHValue:
(24u)
1720
of file app/framework/include/af-types.h
EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PASSWORD_LENGTH#
#define EMBER_AF_DEVICE_MANAGEMENT_MAXIMUM_PASSWORD_LENGTHValue:
(10u)
1721
of file app/framework/include/af-types.h
EMBER_AF_REMOTE_CLUSTER_TYPE_NONE#
#define EMBER_AF_REMOTE_CLUSTER_TYPE_NONEValue:
0x0000u
1874
of file app/framework/include/af-types.h
EMBER_AF_REMOTE_CLUSTER_TYPE_SERVER#
#define EMBER_AF_REMOTE_CLUSTER_TYPE_SERVERValue:
0x0001u
1875
of file app/framework/include/af-types.h
EMBER_AF_REMOTE_CLUSTER_TYPE_CLIENT#
#define EMBER_AF_REMOTE_CLUSTER_TYPE_CLIENTValue:
0x0002u
1876
of file app/framework/include/af-types.h
EMBER_AF_REMOTE_CLUSTER_TYPE_INVALID#
#define EMBER_AF_REMOTE_CLUSTER_TYPE_INVALIDValue:
0xFFFFu
1877
of file app/framework/include/af-types.h
EMBER_AF_MAX_CLUSTERS_PER_ENDPOINT#
#define EMBER_AF_MAX_CLUSTERS_PER_ENDPOINTValue:
3u
1912
of file app/framework/include/af-types.h
EMBER_AF_MAX_ENDPOINTS_PER_DEVICE#
#define EMBER_AF_MAX_ENDPOINTS_PER_DEVICEValue:
1u
1913
of file app/framework/include/af-types.h
EMBER_AF_INVALID_CLUSTER_ID#
#define EMBER_AF_INVALID_CLUSTER_IDValue:
0xFFFFu
1969
of file app/framework/include/af-types.h
EMBER_AF_INVALID_ENDPOINT#
#define EMBER_AF_INVALID_ENDPOINTValue:
0xFFu
1971
of file app/framework/include/af-types.h
EMBER_AF_INVALID_PAN_ID#
#define EMBER_AF_INVALID_PAN_IDValue:
0xFFFFu
1973
of file app/framework/include/af-types.h
EMBER_AF_PERMIT_JOIN_FOREVER#
#define EMBER_AF_PERMIT_JOIN_FOREVERValue:
0xFFu
Permit join times.
1978
of file app/framework/include/af-types.h
EMBER_AF_PERMIT_JOIN_MAX_TIMEOUT#
#define EMBER_AF_PERMIT_JOIN_MAX_TIMEOUTValue:
0xFEu
1979
of file app/framework/include/af-types.h
EMBER_AF_ZDO_RESPONSE_OVERHEAD#
#define EMBER_AF_ZDO_RESPONSE_OVERHEADValue:
2u
The overhead of the ZDO response. 1 byte for the sequence and 1 byte for the status code.
1985
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 |
489
of file app/framework/include/af-types.h
EmberAfServiceDiscoveryStatus#
EmberAfServiceDiscoveryStatus
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 |
626
of file app/framework/include/af-types.h
EmberAfEventPollControl#
EmberAfEventPollControl
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 example, if two events are active, one with EMBER_AF_LONG_POLL and the other with EMBER_AF_SHORT_POLL, the processor will short poll until the second event is deactivated.
Enumerator | |
---|---|
EMBER_AF_LONG_POLL | |
EMBER_AF_SHORT_POLL |
736
of file app/framework/include/af-types.h
EmberAfEventSleepControl#
EmberAfEventSleepControl
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 example, if two events are active, one with EMBER_AF_OK_TO_HIBERNATE and the other with EMBER_AF_OK_TO_NAP, the processor will only be allowed to sleep 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 |
754
of file app/framework/include/af-types.h
EmberAfApplicationTask#
EmberAfApplicationTask
Track 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, the application needs to stay out of hibernation to wait and poll for it.
Some tasks do not necessarily have a response. For example, 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 time out the wake cycle if no expected response is received or no other event can be relied upon to end the wake cycle.
Add these types of tasks 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 |
795
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 |
1081
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 |
1147
of file app/framework/include/af-types.h
EmberAfZllCommissioningStatus#
EmberAfZllCommissioningStatus
Status codes used by the ZLL Commissioning plugin.
Enumerator | |
---|---|
EMBER_AF_ZLL_ABORTED_BY_APPLICATION | |
EMBER_AF_ZLL_CHANNEL_CHANGE_FAILED | |
EMBER_AF_ZLL_JOINING_FAILED | |
EMBER_AF_ZLL_NO_NETWORKS_FOUND | |
EMBER_AF_ZLL_PREEMPTED_BY_STACK | |
EMBER_AF_ZLL_SENDING_START_JOIN_FAILED | |
EMBER_AF_ZLL_SENDING_DEVICE_INFORMATION_REQUEST_FAILED | |
EMBER_AF_ZLL_SENDING_IDENTIFY_REQUEST_FAILED | |
EMBER_AF_ZLL_SENDING_RESET_TO_FACTORY_NEW_REQUEST_FAILED | |
EMBER_AF_ZLL_NETWORK_FORMATION_FAILED | |
EMBER_AF_ZLL_NETWORK_UPDATE_OPERATION |
1171
of file app/framework/include/af-types.h
EmberAfImageBlockRequestOptions#
EmberAfImageBlockRequestOptions
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 |
1234
of file app/framework/include/af-types.h
EmberAfOtaStorageStatus#
EmberAfOtaStorageStatus
Contain 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 |
1268
of file app/framework/include/af-types.h
EmberAfOtaDownloadResult#
EmberAfOtaDownloadResult
Contain 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 |
1286
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 |
1353
of file app/framework/include/af-types.h
EmberAfImageVerifyStatus#
EmberAfImageVerifyStatus
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 |
1436
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 |
1707
of file app/framework/include/af-types.h
EmberAfDeviceManagementPasswordType#
EmberAfDeviceManagementPasswordType
Enumerator | |
---|---|
UNUSED_PASSWORD | |
SERVICE_PASSWORD | |
CONSUMER_PASSWORD |
1729
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 |
1741
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 |
1936
of file app/framework/include/af-types.h
Typedef Documentation#
EmberAfProfileId#
typedef uint16_t EmberAfProfileId
Refer to the Zigbee application profile ID.
45
of file app/framework/include/af-types.h
EmberAfAttributeId#
typedef uint16_t EmberAfAttributeId
Refer to the ZCL attribute ID.
50
of file app/framework/include/af-types.h
EmberAfClusterId#
typedef uint16_t EmberAfClusterId
Refer to the ZCL cluster ID.
55
of file app/framework/include/af-types.h
EmberAfAttributeType#
typedef uint8_t EmberAfAttributeType
Refer to the ZCL attribute type.
60
of file app/framework/include/af-types.h
EmberAfClusterMask#
typedef uint8_t EmberAfClusterMask
User for the cluster mask.
65
of file app/framework/include/af-types.h
EmberAfAttributeMask#
typedef uint8_t EmberAfAttributeMask
User for the attribute mask.
70
of file app/framework/include/af-types.h
EmberAfGenericClusterFunction#
typedef void(* EmberAfGenericClusterFunction) (void) )(void)
Use for either of the cluster functions.
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.
78
of file app/framework/include/af-types.h
EmberAfDifferenceType#
typedef uint64_t EmberAfDifferenceType
Compare two ZCL attribute values. The size of this data type depends on the platform.
290
of file app/framework/include/af-types.h
EmberAfInterpanMessageType#
typedef uint8_t EmberAfInterpanMessageType
Interpan Message type: unicast, broadcast, or multicast.
347
of file app/framework/include/af-types.h
EmberAfInterpanOptions#
typedef uint16_t EmberAfInterpanOptions
The options for sending/receiving interpan messages.
364
of file app/framework/include/af-types.h
EmberAfAllowedInterpanOptions#
typedef uint8_t EmberAfAllowedInterpanOptions
The options for what interpan messages are allowed.
401
of file app/framework/include/af-types.h
EmberAfTcLinkKeyRequestPolicy#
typedef EmberTcLinkKeyRequestPolicy EmberAfTcLinkKeyRequestPolicy
475
of file app/framework/include/af-types.h
EmberAfAppLinkKeyRequestPolicy#
typedef EmberAppLinkKeyRequestPolicy EmberAfAppLinkKeyRequestPolicy
476
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.
570
of file app/framework/include/af-types.h
EmberAfServiceDiscoveryCallback#
typedef void() EmberAfServiceDiscoveryCallback(const EmberAfServiceDiscoveryResult *result) (const EmberAfServiceDiscoveryResult *result)
Define 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, the callback is only fired once with either MATCH_FOUND or COMPLETE (no matches found). If the discovery is broadcast, multiple callbacks may be fired with EMBER_AF_BROADCAST_SERVICE_DISCOVERY_RESPONSE_RECEIVED. After a few seconds, the callback is fired with EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_RESPONSE or EMBER_AF_BROADCAST_SERVICE_DISCOVERY_COMPLETE_WITH_EMPTY_RESPONSE as the result.
717
of file app/framework/include/af-types.h
EmberAfPartnerLinkKeyExchangeCallback#
typedef void() EmberAfPartnerLinkKeyExchangeCallback(bool success) (bool success)
Define 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.
725
of file app/framework/include/af-types.h
EmberAfNetworkEventHandler#
typedef void(* EmberAfNetworkEventHandler) (void) )(void)
Refer to the handler for network events.
894
of file app/framework/include/af-types.h
EmberAfEndpointEventHandler#
typedef void(* EmberAfEndpointEventHandler) (uint8_t endpoint) )(uint8_t endpoint)
Refer to the handler for endpoint events.
899
of file app/framework/include/af-types.h
EmberAfTickFunction#
typedef void(* EmberAfTickFunction) (uint8_t endpoint) )(uint8_t endpoint)
Refer 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.
1457
of file app/framework/include/af-types.h
EmberAfInitFunction#
typedef void(* EmberAfInitFunction) (uint8_t endpoint) )(uint8_t endpoint)
Refer to the init callback for cluster.
Init function is called when the application starts up, once for each cluster/endpoint combination.
1465
of file app/framework/include/af-types.h
EmberAfClusterAttributeChangedCallback#
typedef void(* EmberAfClusterAttributeChangedCallback) (uint8_t endpoint, EmberAfAttributeId attributeId) )(uint8_t endpoint, EmberAfAttributeId attributeId)
Refer to the attribute changed callback function.
This function is called just after an attribute changes.
1472
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)
Refer to the manufacturer-specific attribute changed callback function.
This function is called just after a manufacturer-specific attribute changes.
1481
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)
Refer to the pre-attribute changed callback function.
This function is called before an attribute changes.
1490
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)
Refer 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.
1502
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)
Refer to the message sent callback function.
This function is called when a message is sent.
1511
of file app/framework/include/af-types.h
EmberAfRemoteClusterType#
typedef uint16_t EmberAfRemoteClusterType
Zigbee Internet Client/Server Remote Cluster Types.
1872
of file app/framework/include/af-types.h