Modules#
EmberBeaconClassificationParams
sli_zigbee_route_table_entry_t
sli_zigbee_discovery_table_entry_t
sli_zigbee_broadcast_table_entry_t
sli_zigbee_neighbor_table_entry_t
sli_zigbee_retry_queue_entry_t
sli_zigbee_address_table_entry_t
sli_zigbee_aps_unicast_message_data_t
Ember data type definitions.
See Ember Common Data Types for details.
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_EMBER_TYPES_H
#define SILABS_EMBER_TYPES_H
// TODO: temporary hack
#define SIGNED_ENUM
#ifdef PLATFORM_HEADER
#include PLATFORM_HEADER
#endif // PLATFORM_HEADER
#ifndef DOXYGEN_SHOULD_SKIP_THIS
#include "stack/config/ember-configuration-defaults.h"
#endif //DOXYGEN_SHOULD_SKIP_THIS
#include "mac-types.h"
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberVersionType
#else
typedef uint8_t EmberVersionType;
enum
#endif
{
EMBER_VERSION_TYPE_PRE_RELEASE = 0x00,
//Alpha, should be used rarely
EMBER_VERSION_TYPE_ALPHA_1 = 0x11,
EMBER_VERSION_TYPE_ALPHA_2 = 0x12,
EMBER_VERSION_TYPE_ALPHA_3 = 0x13,
// Leave space in case we decide to add other types in the future.
EMBER_VERSION_TYPE_BETA_1 = 0x21,
EMBER_VERSION_TYPE_BETA_2 = 0x22,
EMBER_VERSION_TYPE_BETA_3 = 0x23,
// Anything other than 0xAA is considered pre-release
// Silicon Labs may define other types in the future (e.g. beta, alpha)
// Silicon Labs chose an arbitrary number (0xAA) to allow for expansion, but
// to prevent ambiguity in case 0x00 or 0xFF is accidentally retrieved
// as the version type.
EMBER_VERSION_TYPE_GA = 0xAA,
};
typedef struct {
EmberVersionType typeNum;
const char *typeString;
} EmberReleaseTypeStruct;
#define EMBER_RELEASE_TYPE_TO_STRING_STRUCT_DATA \
{ EMBER_VERSION_TYPE_PRE_RELEASE, "Pre-Release" }, \
{ EMBER_VERSION_TYPE_ALPHA_1, "Alpha 1" }, \
{ EMBER_VERSION_TYPE_ALPHA_2, "Alpha 2" }, \
{ EMBER_VERSION_TYPE_ALPHA_3, "Alpha 3" }, \
{ EMBER_VERSION_TYPE_BETA_1, "Beta 1" }, \
{ EMBER_VERSION_TYPE_BETA_2, "Beta 2" }, \
{ EMBER_VERSION_TYPE_BETA_3, "Beta 3" }, \
{ EMBER_VERSION_TYPE_GA, "GA" }, \
{ 0xFF, NULL },
typedef struct {
uint16_t build;
uint8_t major;
uint8_t minor;
uint8_t patch;
uint8_t special;
EmberVersionType type;
} EmberVersion;
extern const EmberVersion emberVersion;
#ifdef ZIGBEE_STACK_ON_HOST
typedef struct {
const char *date;
const char *time;
} EmberStackBuildDateTime;
extern const EmberStackBuildDateTime emberStackBuildDateTime;
#endif //ZIGBEE_STACK_ON_HOST
#define EUI64_SIZE 8
#define EXTENDED_PAN_ID_SIZE 8
#define EMBER_ENCRYPTION_KEY_SIZE 16
#define EMBER_CERTIFICATE_SIZE 48
#define EMBER_PUBLIC_KEY_SIZE 22
#define EMBER_PRIVATE_KEY_SIZE 21
#define EMBER_SMAC_SIZE 16
#define EMBER_SIGNATURE_SIZE 42
#define EMBER_AES_HASH_BLOCK_SIZE 16
#define EMBER_CERTIFICATE_283K1_SIZE 74
#define EMBER_PUBLIC_KEY_283K1_SIZE 37
#define EMBER_PRIVATE_KEY_283K1_SIZE 36
#define EMBER_SIGNATURE_283K1_SIZE 72
#ifndef __EMBERSTATUS_TYPE__
#define __EMBERSTATUS_TYPE__
#ifndef DOXYGEN_SHOULD_SKIP_THIS
typedef uint8_t EmberStatus;
#endif
#endif // __EMBERSTATUS_TYPE__
#include "stack/include/error.h"
#include "buffer_manager/buffer-management.h"
//typedef uint8_t EmberEUI64[EUI64_SIZE];
//typedef uint16_t EmberMessageBuffer;
//typedef uint16_t Buffer;
#define NULL_BUFFER 0x0000u
//typedef uint16_t EmberNodeId;
typedef uint16_t EmberMulticastId;
//typedef uint16_t EmberPanId;
typedef uint16_t EmberDutyCycleHectoPct;
#define EMBER_MAX_802_15_4_CHANNEL_NUMBER 26
#define EMBER_MIN_802_15_4_CHANNEL_NUMBER 11
#define EMBER_MIN_SUBGHZ_CHANNEL_NUMBER 0
#define EMBER_ACTIVE_SCAN_DURATION 3
#define EMBER_SUB_GHZ_SCAN_DURATION 5
#define EMBER_NUM_802_15_4_CHANNELS \
(EMBER_MAX_802_15_4_CHANNEL_NUMBER - EMBER_MIN_802_15_4_CHANNEL_NUMBER + 1)
#define EMBER_ALL_802_15_4_CHANNELS_MASK 0x07FFF800UL
#define EMBER_MAX_CHANNELS_PER_PAGE 27
#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_28_30_31 0x07FFFFFFUL
#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGES_28_30_31 26
#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_29 0x1FF
#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGE_29 8
#define EMBER_MIN_SUGBHZ_PAGE_NUMBER 28
#define EMBER_MAX_SUGBHZ_PAGE_NUMBER 31
#define EMBER_ALL_CHANNEL_PAGE_MASK 0xF8000000UL
#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK(page, mask) \
(((((uint32_t)(page)) << EMBER_MAX_CHANNELS_PER_PAGE) & EMBER_ALL_CHANNEL_PAGE_MASK) \
| (((uint32_t)(mask)) & ~EMBER_ALL_CHANNEL_PAGE_MASK))
#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_NUMBER(page, channel) \
EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK(page, BIT32(channel))
#define EMBER_ZIGBEE_COORDINATOR_ADDRESS 0x0000u
#define EMBER_NULL_NODE_ID 0xFFFFu
#define EMBER_NO_CHANNEL_PAGE_IN_USE 0
#define EMBER_NULL_EUI64 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
#define EMBER_NULL_BINDING 0xFFu
#define EMBER_TABLE_ENTRY_UNUSED_NODE_ID 0xFFFFu
#define EMBER_MULTICAST_NODE_ID 0xFFFEu
#define EMBER_UNKNOWN_NODE_ID 0xFFFDu
#define EMBER_DISCOVERY_ACTIVE_NODE_ID 0xFFFCu
#define EMBER_NULL_ADDRESS_TABLE_INDEX 0xFFu
#define EMBER_ZDO_ENDPOINT 0u
#define EMBER_BROADCAST_ENDPOINT 0xFFu
#define EMBER_GP_ENDPOINT 0xF2u
#define EMBER_ZDO_PROFILE_ID 0x0000u
#define EMBER_WILDCARD_PROFILE_ID 0xFFFFu
#define EMBER_MAXIMUM_STANDARD_PROFILE_ID 0x7FFFu
#define EMBER_BROADCAST_TABLE_TIMEOUT_QS (20 * 4)
#define EMBER_MANUFACTURER_ID 0x1002u
#define EMBER_NULL_NETWORK_INDEX 0xFFu
#define EMBER_DC_LIMIT_USE_DEFAULT 0
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberStackProfile
#else
typedef uint8_t EmberStackProfile;
enum
#endif
{
EMBER_STACK_PROFILE_NONE = 0x00,
EMBER_STACK_PROFILE_ZIGBEE_PRO = 0x02,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberSecurityLevel
#else
typedef uint8_t EmberSecurityLevel;
enum
#endif
{
EMBER_SECURITY_LEVEL_NONE = 0x00,
EMBER_SECURITY_LEVEL_Z3 = 0x05,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberLeaveRequestFlags
#else
typedef uint8_t EmberLeaveRequestFlags;
enum
#endif
{
EMBER_ZIGBEE_LEAVE_AND_REJOIN = 0x80,
// Note: removeChildren is treated to be deprecated and should not be used!
// CCB 2047
// - CCB makes the first step to deprecate the 'leave and remove children' functionality.
// - We were proactive here and deprecated it right away.
// EMBER_ZIGBEE_LEAVE_AND_REMOVE_CHILDREN = 0x40,
EMBER_ZIGBEE_LEAVE_WITHOUT_REJOIN = 0x00,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberLeaveReason
#else
typedef uint8_t EmberLeaveReason;
enum
#endif
{
EMBER_LEAVE_REASON_NONE = 0,
EMBER_LEAVE_DUE_TO_NWK_LEAVE_MESSAGE = 1,
EMBER_LEAVE_DUE_TO_APS_REMOVE_MESSAGE = 2,
// Currently, the stack does not process the ZDO leave message since it is optional.
EMBER_LEAVE_DUE_TO_ZDO_LEAVE_MESSAGE = 3,
EMBER_LEAVE_DUE_TO_ZLL_TOUCHLINK = 4,
EMBER_LEAVE_DUE_TO_APP_EVENT_1 = 0xFF,
};
#define EMBER_BROADCAST_ADDRESS 0xFFFCu
#define EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS 0xFFFDu
#define EMBER_SLEEPY_BROADCAST_ADDRESS 0xFFFFu
// From table 3.51 of 053474r14
// When sending many-to-one route requests, the following
// addresses are used
// 0xFFF9 indicates a non-memory-constrained many-to-one route request
// 0xFFF8 indicates a memory-constrained many-to-one route request
#define EMBER_MIN_BROADCAST_ADDRESS 0xFFF8u
#define emberIsZigbeeBroadcastAddress(address) \
(EMBER_MIN_BROADCAST_ADDRESS <= ((uint16_t) (address)))
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberNodeType
#else
typedef uint8_t EmberNodeType;
enum
#endif
{
EMBER_UNKNOWN_DEVICE = 0,
EMBER_COORDINATOR = 1,
EMBER_ROUTER = 2,
EMBER_END_DEVICE = 3,
EMBER_SLEEPY_END_DEVICE = 4,
EMBER_S2S_INITIATOR_DEVICE = 5,
EMBER_S2S_TARGET_DEVICE = 6,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberEndDeviceConfiguration
#else
typedef uint8_t EmberEndDeviceConfiguration;
enum
#endif
{
EMBER_END_DEVICE_CONFIG_NONE = 0x00,
EMBER_END_DEVICE_CONFIG_PERSIST_DATA_ON_PARENT = 0x01,
};
typedef struct {
uint16_t panId;
uint8_t channel;
bool allowingJoin;
uint8_t extendedPanId[EXTENDED_PAN_ID_SIZE];
uint8_t stackProfile;
uint8_t nwkUpdateId;
} EmberZigbeeNetwork;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberNetworkInitBitmask
#else
typedef uint16_t EmberNetworkInitBitmask;
enum
#endif
{
EMBER_NETWORK_INIT_NO_OPTIONS = 0x0000,
EMBER_NETWORK_INIT_PARENT_INFO_IN_TOKEN = 0x0001,
EMBER_NETWORK_INIT_END_DEVICE_REJOIN_ON_REBOOT = 0x0002,
};
typedef struct {
EmberNetworkInitBitmask bitmask;
} EmberNetworkInitStruct;
typedef struct {
uint16_t nodeId;
int8_t rssi;
uint8_t classificationMask;
} EmberBeaconSurvey;
typedef struct {
EmberPanId panId;
EmberNodeId sender;
uint8_t channel;
uint8_t lqi;
int8_t rssi;
uint8_t depth;
uint8_t nwkUpdateId;
int8_t power; // Only valid if enhanced beacon
int8_t parentPriority; // TC connectivity and long uptime from capacity field
uint8_t supportedKeyNegotiationMethods;
bool extended_beacon;
bool enhanced : 1; // Enhanced or regular beacon
bool permitJoin : 1;
bool hasCapacity : 1;
bool tcConnectivity : 1;
bool longUptime : 1;
bool preferParent : 1;
bool macDataPollKeepalive : 1;
bool endDeviceKeepalive : 1;
uint8_t extendedPanId[EXTENDED_PAN_ID_SIZE];
} EmberBeaconData;
typedef struct {
// Public fields
EmberBeaconData beacon;
// Private fields - Do not write to these variables
uint8_t index;
} EmberBeaconIterator;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberApsRejoinMode
#else
typedef uint8_t EmberApsRejoinMode;
enum
#endif
{
NO_REJOIN,
REJOIN_ANY_LINK_KEY,
REJOIN_NON_DEFAULT_LINK_KEY
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberApsOption
#else
typedef uint16_t EmberApsOption;
enum
#endif
{
EMBER_APS_OPTION_NONE = 0x0000,
#ifndef DOXYGEN_SHOULD_SKIP_THIS
EMBER_APS_OPTION_ENCRYPT_WITH_TRANSIENT_KEY = 0x0001,
EMBER_APS_OPTION_USE_ALIAS_SEQUENCE_NUMBER = 0x0002,
#endif
EMBER_APS_OPTION_DSA_SIGN = 0x0010,
EMBER_APS_OPTION_ENCRYPTION = 0x0020,
EMBER_APS_OPTION_RETRY = 0x0040,
EMBER_APS_OPTION_ENABLE_ROUTE_DISCOVERY = 0x0100,
EMBER_APS_OPTION_FORCE_ROUTE_DISCOVERY = 0x0200,
EMBER_APS_OPTION_SOURCE_EUI64 = 0x0400,
EMBER_APS_OPTION_DESTINATION_EUI64 = 0x0800,
EMBER_APS_OPTION_ENABLE_ADDRESS_DISCOVERY = 0x1000,
EMBER_APS_OPTION_POLL_RESPONSE = 0x2000,
EMBER_APS_OPTION_ZDO_RESPONSE_REQUIRED = 0x4000,
EMBER_APS_OPTION_FRAGMENT = SIGNED_ENUM 0x8000
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberIncomingMessageType
#else
typedef uint8_t EmberIncomingMessageType;
enum
#endif
{
EMBER_INCOMING_UNICAST,
EMBER_INCOMING_UNICAST_REPLY,
EMBER_INCOMING_MULTICAST,
EMBER_INCOMING_MULTICAST_LOOPBACK,
EMBER_INCOMING_BROADCAST,
EMBER_INCOMING_BROADCAST_LOOPBACK
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberOutgoingMessageType
#else
typedef uint8_t EmberOutgoingMessageType;
enum
#endif
{
EMBER_OUTGOING_DIRECT,
EMBER_OUTGOING_VIA_ADDRESS_TABLE,
EMBER_OUTGOING_VIA_BINDING,
EMBER_OUTGOING_MULTICAST,
EMBER_OUTGOING_MULTICAST_WITH_ALIAS,
EMBER_OUTGOING_BROADCAST_WITH_ALIAS,
EMBER_OUTGOING_BROADCAST
};
// OLD API
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberZigbeeCommandType
#else
typedef uint8_t EmberZigbeeCommandType;
enum
#endif
{
EMBER_ZIGBEE_COMMAND_TYPE_RAW_MAC,
EMBER_ZIGBEE_COMMAND_TYPE_MAC_COMMAND,
EMBER_ZIGBEE_COMMAND_TYPE_NWK,
EMBER_ZIGBEE_COMMAND_TYPE_APS,
EMBER_ZIGBEE_COMMAND_TYPE_ZDO,
EMBER_ZIGBEE_COMMAND_TYPE_ZCL,
EMBER_ZIGBEE_COMMAND_TYPE_BEACON,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberPacketAction
#else
typedef uint8_t EmberPacketAction;
enum
#endif
{
EMBER_DROP_PACKET = 0,
EMBER_ACCEPT_PACKET = 1,
EMBER_MANGLE_PACKET,
EMBER_ACCEPT_PACKET_OVERRIDE_SECURITY,
EMBER_ACCEPT_PACKET_SKIP_NWK_CRYPTO,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberZigbeePacketType
#else
typedef uint8_t EmberZigbeePacketType;
enum
#endif
{
EMBER_ZIGBEE_PACKET_TYPE_RAW_MAC,
EMBER_ZIGBEE_PACKET_TYPE_MAC_COMMAND,
EMBER_ZIGBEE_PACKET_TYPE_NWK_DATA,
EMBER_ZIGBEE_PACKET_TYPE_NWK_COMMAND,
EMBER_ZIGBEE_PACKET_TYPE_APS_DATA,
EMBER_ZIGBEE_PACKET_TYPE_APS_COMMAND,
EMBER_ZIGBEE_PACKET_TYPE_ZDO,
EMBER_ZIGBEE_PACKET_TYPE_ZCL,
EMBER_ZIGBEE_PACKET_TYPE_BEACON,
EMBER_ZIGBEE_PACKET_TYPE_INTERPAN,
EMBER_ZIGBEE_PACKET_TYPE_NWK_DATA_PRE_DECRYPTION,
EMBER_ZIGBEE_PACKET_TYPE_NWK_COMMAND_PRE_DECRYPTION,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberNetworkStatus
#else
typedef uint8_t EmberNetworkStatus;
enum
#endif
{
EMBER_NO_NETWORK,
EMBER_JOINING_NETWORK,
EMBER_JOINED_NETWORK,
EMBER_JOINED_NETWORK_NO_PARENT,
EMBER_JOINED_NETWORK_S2S_INITIATOR,
EMBER_JOINED_NETWORK_S2S_TARGET,
EMBER_LEAVING_NETWORK
};
// The RADIO_OFF scan is not really a scan at all. It is used to
// temporarily turn off the radio to use the TX and RX
// buffers for other purposes.
// Start the scan with:
// emberStartScan(EMBER_START_RADIO_OFF_SCAN, 0, 0);
// Call emberStopScan() to restart the radio and the MAC.
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberNetworkScanType
#else
typedef uint8_t EmberNetworkScanType;
enum
#endif
{
EMBER_ENERGY_SCAN,
EMBER_ACTIVE_SCAN,
EMBER_START_RADIO_OFF_SCAN,
EMBER_STACK_GP_CHANNEL_DELIVERY_SCAN,
EMBER_ACTIVE_SCAN_ROUTER,
EMBER_LAST_SCAN_TYPE = EMBER_ACTIVE_SCAN_ROUTER
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberBindingType
#else
typedef uint8_t EmberBindingType;
enum
#endif
{
EMBER_UNUSED_BINDING = 0,
EMBER_UNICAST_BINDING = 1,
EMBER_MANY_TO_ONE_BINDING = 2,
EMBER_MULTICAST_BINDING = 3,
};
#define EMBER_LOW_RAM_CONCENTRATOR 0xFFF8u
#define EMBER_HIGH_RAM_CONCENTRATOR 0xFFF9u
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAssumeTrustCenterConcentratorType
#else
typedef uint8_t EmberAssumeTrustCenterConcentratorType;
enum
#endif
{
EMBER_ASSUME_TRUST_CENTER_IS_NOT_A_CONCENTRATOR = 0,
EMBER_ASSUME_TRUST_CENTER_IS_LOW_RAM_CONCENTRATOR = 1,
EMBER_ASSUME_TRUST_CENTER_IS_HIGH_RAM_CONCENTRATOR = 2
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberJoinDecision
#else
typedef uint8_t EmberJoinDecision;
enum
#endif
{
EMBER_USE_PRECONFIGURED_KEY = 0,
EMBER_SEND_KEY_IN_THE_CLEAR,
EMBER_DENY_JOIN,
EMBER_NO_ACTION,
EMBER_ALLOW_REJOINS_ONLY
};
#define EMBER_JOIN_DECISION_STRINGS \
"use preconfigured key", \
"send key in the clear", \
"deny join", \
"no action", \
"allow rejoins only",
// These map to the actual values within the APS Command frame so they cannot
// be arbitrarily changed.
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberDeviceUpdate
#else
typedef uint8_t EmberDeviceUpdate;
enum
#endif
{
EMBER_STANDARD_SECURITY_SECURED_REJOIN = 0,
EMBER_STANDARD_SECURITY_UNSECURED_JOIN = 1,
EMBER_DEVICE_LEFT = 2,
EMBER_STANDARD_SECURITY_UNSECURED_REJOIN = 3,
};
#define EMBER_DEVICE_UPDATE_STRINGS \
"secured rejoin", \
"UNsecured join", \
"device left", \
"UNsecured rejoin",
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberRejoinReason
#else
typedef uint8_t EmberRejoinReason;
enum
#endif
{
EMBER_REJOIN_REASON_NONE = 0,
EMBER_REJOIN_DUE_TO_NWK_KEY_UPDATE = 1,
EMBER_REJOIN_DUE_TO_LEAVE_MESSAGE = 2,
EMBER_REJOIN_DUE_TO_NO_PARENT = 3,
EMBER_REJOIN_DUE_TO_ZLL_TOUCHLINK = 4,
EMBER_REJOIN_DUE_TO_END_DEVICE_REBOOT = 5,
// App. Framework events
// 0xA0 - 0xE0
// See af.h for a subset of defined rejoin reasons
// Customer-defined Events
// These are numbered down from 0xFF so their assigned values
// need not change if more application events are needed.
EMBER_REJOIN_DUE_TO_APP_EVENT_5 = 0xFB,
EMBER_REJOIN_DUE_TO_APP_EVENT_4 = 0xFC,
EMBER_REJOIN_DUE_TO_APP_EVENT_3 = 0xFD,
EMBER_REJOIN_DUE_TO_APP_EVENT_2 = 0xFE,
EMBER_REJOIN_DUE_TO_APP_EVENT_1 = 0xFF,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberClusterListId
#else
typedef uint8_t EmberClusterListId;
enum
#endif
{
EMBER_INPUT_CLUSTER_LIST = 0,
EMBER_OUTPUT_CLUSTER_LIST = 1
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberEventUnits
#else
typedef uint8_t EmberEventUnits;
enum
#endif
{
EMBER_EVENT_INACTIVE = 0,
EMBER_EVENT_MS_TIME,
EMBER_EVENT_QS_TIME,
EMBER_EVENT_MINUTE_TIME,
EMBER_EVENT_ZERO_DELAY
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberJoinMethod
#else
typedef uint8_t EmberJoinMethod;
enum
#endif
{
EMBER_USE_MAC_ASSOCIATION = 0,
EMBER_USE_NWK_REJOIN = 1,
/* For networks where the "permit joining" flag is never turned
* on, devices will need to use a NWK Rejoin. If those devices have been
* preconfigured with the NWK key (including sequence number), they can use
* a secured rejoin. This is only necessary for end devices since they need
* a parent. Routers can simply use the ::EMBER_USE_CONFIGURED_NWK_STATE
* join method below.
*/
EMBER_USE_NWK_REJOIN_HAVE_NWK_KEY = 2,
EMBER_USE_CONFIGURED_NWK_STATE = 3,
EMBER_USE_NWK_COMMISSIONING_JOIN = 4,
EMBER_USE_NWK_COMMISSIONING_REJOIN = 5,
EMBER_USE_NWK_COMMISSIONING_REJOIN_HAVE_NWK_KEY = 6,
};
typedef struct {
uint8_t extendedPanId[EXTENDED_PAN_ID_SIZE];
uint16_t panId;
int8_t radioTxPower;
uint8_t radioChannel;
EmberJoinMethod joinMethod;
EmberNodeId nwkManagerId;
uint8_t nwkUpdateId;
uint32_t channels;
} EmberNetworkParameters;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
#define emberInitializeNetworkParameters(parameters) \
(MEMSET(parameters, 0, sizeof(EmberNetworkParameters)))
#else
void emberInitializeNetworkParameters(EmberNetworkParameters* parameters);
#endif
typedef struct {
int8_t radioTxPower;
uint8_t radioPage;
uint8_t radioChannel;
} EmberMultiPhyRadioParameters;
typedef struct {
uint16_t profileId;
uint16_t clusterId;
uint8_t sourceEndpoint;
uint8_t destinationEndpoint;
EmberApsOption options;
uint16_t groupId;
uint8_t sequence;
uint8_t radius;
} EmberApsFrame;
typedef struct {
EmberEUI64 eui64;
EmberNodeType type;
EmberNodeId id;
uint8_t phy;
uint8_t power;
uint8_t timeout;
uint32_t remainingTimeout;
} EmberChildData;
typedef struct {
EmberBindingType type;
uint8_t local;
uint16_t clusterId;
uint8_t remote;
EmberEUI64 identifier;
uint8_t networkIndex;
} EmberBindingTableEntry;
typedef struct {
uint16_t shortId;
uint8_t averageLqi;
uint8_t inCost;
uint8_t outCost;
uint8_t age;
EmberEUI64 longId;
} EmberNeighborTableEntry;
typedef struct {
uint16_t destination;
uint16_t nextHop;
uint8_t status;
uint8_t age;
uint8_t concentratorType;
uint8_t routeRecordState;
} EmberRouteTableEntry;
typedef struct {
EmberMulticastId multicastId;
uint8_t endpoint;
uint8_t networkIndex;
} EmberMulticastTableEntry;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberCounterType
#else
typedef uint8_t EmberCounterType;
enum
#endif
{
EMBER_COUNTER_MAC_RX_BROADCAST = 0,
EMBER_COUNTER_MAC_TX_BROADCAST = 1,
EMBER_COUNTER_MAC_RX_UNICAST = 2,
EMBER_COUNTER_MAC_TX_UNICAST_SUCCESS = 3,
EMBER_COUNTER_MAC_TX_UNICAST_RETRY = 4,
EMBER_COUNTER_MAC_TX_UNICAST_FAILED = 5,
EMBER_COUNTER_APS_DATA_RX_BROADCAST = 6,
EMBER_COUNTER_APS_DATA_TX_BROADCAST = 7,
EMBER_COUNTER_APS_DATA_RX_UNICAST = 8,
EMBER_COUNTER_APS_DATA_TX_UNICAST_SUCCESS = 9,
EMBER_COUNTER_APS_DATA_TX_UNICAST_RETRY = 10,
EMBER_COUNTER_APS_DATA_TX_UNICAST_FAILED = 11,
EMBER_COUNTER_ROUTE_DISCOVERY_INITIATED = 12,
EMBER_COUNTER_NEIGHBOR_ADDED = 13,
EMBER_COUNTER_NEIGHBOR_REMOVED = 14,
EMBER_COUNTER_NEIGHBOR_STALE = 15,
EMBER_COUNTER_JOIN_INDICATION = 16,
EMBER_COUNTER_CHILD_REMOVED = 17,
EMBER_COUNTER_ASH_OVERFLOW_ERROR = 18,
EMBER_COUNTER_ASH_FRAMING_ERROR = 19,
EMBER_COUNTER_ASH_OVERRUN_ERROR = 20,
EMBER_COUNTER_NWK_FRAME_COUNTER_FAILURE = 21,
EMBER_COUNTER_APS_FRAME_COUNTER_FAILURE = 22,
EMBER_COUNTER_ASH_XOFF = 23,
EMBER_COUNTER_APS_LINK_KEY_NOT_AUTHORIZED = 24,
EMBER_COUNTER_NWK_DECRYPTION_FAILURE = 25,
EMBER_COUNTER_APS_DECRYPTION_FAILURE = 26,
EMBER_COUNTER_ALLOCATE_PACKET_BUFFER_FAILURE = 27,
EMBER_COUNTER_RELAYED_UNICAST = 28,
EMBER_COUNTER_PHY_TO_MAC_QUEUE_LIMIT_REACHED = 29,
EMBER_COUNTER_PACKET_VALIDATE_LIBRARY_DROPPED_COUNT = 30,
EMBER_COUNTER_TYPE_NWK_RETRY_OVERFLOW = 31,
EMBER_COUNTER_PHY_CCA_FAIL_COUNT = 32,
EMBER_COUNTER_BROADCAST_TABLE_FULL = 33,
EMBER_COUNTER_PTA_LO_PRI_REQUESTED = 34,
EMBER_COUNTER_PTA_HI_PRI_REQUESTED = 35,
EMBER_COUNTER_PTA_LO_PRI_DENIED = 36,
EMBER_COUNTER_PTA_HI_PRI_DENIED = 37,
EMBER_COUNTER_PTA_LO_PRI_TX_ABORTED = 38,
EMBER_COUNTER_PTA_HI_PRI_TX_ABORTED = 39,
EMBER_COUNTER_ADDRESS_CONFLICT_SENT = 40,
EMBER_COUNTER_TYPE_COUNT = 41,
};
typedef struct {
uint8_t backgroundRx;
uint8_t tx;
uint8_t activeRx;
} EmberMultiprotocolPriorities;
#define EMBER_COUNTER_STRINGS \
"Mac Rx Bcast", \
"Mac Tx Bcast", \
"Mac Rx Ucast", \
"Mac Tx Ucast", \
"Mac Tx Ucast Retry", \
"Mac Tx Ucast Fail", \
"APS Rx Bcast", \
"APS Tx Bcast", \
"APS Rx Ucast", \
"APS Tx Ucast Success", \
"APS Tx Ucast Retry", \
"APS Tx Ucast Fail", \
"Route Disc Initiated", \
"Neighbor Added", \
"Neighbor Removed", \
"Neighbor Stale", \
"Join Indication", \
"Child Moved", \
"ASH Overflow", \
"ASH Frame Error", \
"ASH Overrun Error", \
"NWK FC Failure", \
"APS FC Failure", \
"ASH XOff", \
"APS Unauthorized Key", \
"NWK Decrypt Failures", \
"APS Decrypt Failures", \
"Packet Buffer Allocate Failures", \
"Relayed Ucast", \
"Phy to MAC queue limit reached", \
"Packet Validate drop count", \
"NWK retry overflow", \
"CCA Failures", \
"Broadcast table full", \
"PTA Lo Pri Req", \
"PTA Hi Pri Req", \
"PTA Lo Pri Denied", \
"PTA Hi Pri Denied", \
"PTA Lo Pri Tx Abrt", \
"PTA Hi Pri Tx Abrt", \
"Address Conflict Sent", \
NULL
typedef struct {
uint8_t data; // For now, might be number of retries or other values that previously were assigned to data.
void *otherFields; // For now, this might be destination nodeId, or phyIndex or both(extraCounterInfo).
} EmberCounterInfo;
typedef struct {
uint8_t phy_index;
EmberNodeId destinationNodeId;
void *otherExtraFields; //For now, this is NULL.
} EmberExtraCounterInfo;
typedef uint8_t EmberTaskId;
//----------------------------------------------------------------
// Events and event queues.
typedef struct {
EmberEventUnits status;
EmberTaskId taskid;
uint32_t timeToExecute;
} EmberEventControl;
typedef struct {
EmberEventControl *control;
void (*handler)(void);
} EmberEventData;
typedef struct {
// The time when the next event associated with this task will fire.
uint32_t nextEventTime;
// The list of events associated with this task.
EmberEventData *events;
// A flag that indicates the task has something to do other than events.
bool busy;
} EmberTaskControl;
#define EMBER_TX_POWER_MODE_DEFAULT 0x0000
#define EMBER_TX_POWER_MODE_BOOST 0x0001
#define EMBER_TX_POWER_MODE_ALTERNATE 0x0002
#define EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATE (EMBER_TX_POWER_MODE_BOOST \
| EMBER_TX_POWER_MODE_ALTERNATE)
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// The application does not ever need to call emberSetTxPowerMode() with the
// txPowerMode parameter set to this value. This value is used internally by
// the stack to indicate that the default token configuration has not been
// overridden by a prior call to emberSetTxPowerMode().
#define EMBER_TX_POWER_MODE_USE_TOKEN 0x8000
#endif //DOXYGEN_SHOULD_SKIP_THIS
#define EMBER_PRIVATE_PROFILE_ID 0xC00Eu
#define EMBER_PRIVATE_PROFILE_ID_START 0xC00Du
#define EMBER_PRIVATE_PROFILE_ID_END 0xC016u
#define EMBER_REPORT_COUNTERS_REQUEST 0x0003u
#define EMBER_REPORT_COUNTERS_RESPONSE 0x8003u
#define EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST 0x0004u
#define EMBER_REPORT_AND_CLEAR_COUNTERS_RESPONSE 0x8004u
#define EMBER_OTA_CERTIFICATE_UPGRADE_CLUSTER 0x0005u
typedef struct {
uint8_t contents[EMBER_ENCRYPTION_KEY_SIZE];
} EmberKeyData;
typedef struct {
uint8_t contents[EMBER_CERTIFICATE_SIZE];
} EmberCertificateData;
typedef struct {
uint8_t contents[EMBER_PUBLIC_KEY_SIZE];
} EmberPublicKeyData;
typedef struct {
uint8_t contents[EMBER_PRIVATE_KEY_SIZE];
} EmberPrivateKeyData;
typedef struct {
uint8_t contents[EMBER_SMAC_SIZE];
} EmberSmacData;
typedef struct {
uint8_t contents[EMBER_SIGNATURE_SIZE];
} EmberSignatureData;
typedef struct {
uint8_t contents[EMBER_AES_HASH_BLOCK_SIZE];
} EmberMessageDigest;
typedef struct {
uint8_t result[EMBER_AES_HASH_BLOCK_SIZE];
uint32_t length;
} EmberAesMmoHashContext;
typedef struct {
/* This is the certificate byte data. */
uint8_t contents[EMBER_CERTIFICATE_283K1_SIZE];
} EmberCertificate283k1Data;
typedef struct {
uint8_t contents[EMBER_PUBLIC_KEY_283K1_SIZE];
} EmberPublicKey283k1Data;
typedef struct {
uint8_t contents[EMBER_PRIVATE_KEY_283K1_SIZE];
} EmberPrivateKey283k1Data;
typedef struct {
uint8_t contents[EMBER_SIGNATURE_283K1_SIZE];
} EmberSignature283k1Data;
#define EMBER_STANDARD_SECURITY_MODE 0x0000
#define EMBER_TRUST_CENTER_NODE_ID 0x0000u
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberInitialSecurityBitmask
#else
typedef uint16_t EmberInitialSecurityBitmask;
enum
#endif
{
EMBER_DISTRIBUTED_TRUST_CENTER_MODE = 0x0002,
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY = 0x0004,
EMBER_PRECONFIGURED_NETWORK_KEY_MODE = 0x0008,
#if !defined DOXYGEN_SHOULD_SKIP_THIS
// Hidden fields used internally.
EMBER_HAVE_TRUST_CENTER_UNKNOWN_KEY_TOKEN = 0x0010,
EMBER_HAVE_TRUST_CENTER_LINK_KEY_TOKEN = 0x0020,
#endif
EMBER_HAVE_TRUST_CENTER_EUI64 = 0x0040,
EMBER_TRUST_CENTER_USES_HASHED_LINK_KEY = 0x0084,
EMBER_HAVE_PRECONFIGURED_KEY = 0x0100,
EMBER_HAVE_NETWORK_KEY = 0x0200,
EMBER_GET_LINK_KEY_WHEN_JOINING = 0x0400,
EMBER_REQUIRE_ENCRYPTED_KEY = 0x0800,
EMBER_NO_FRAME_COUNTER_RESET = 0x1000,
EMBER_GET_PRECONFIGURED_KEY_FROM_INSTALL_CODE = 0x2000,
#if !defined DOXYGEN_SHOULD_SKIP_THIS
// Internal data
EM_SAVED_IN_TOKEN = 0x4000,
#define EM_SECURITY_INITIALIZED 0x00008000L
#else
/* All other bits are reserved and must be zero. */
#endif
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberExtendedSecurityBitmask
#else
typedef uint16_t EmberExtendedSecurityBitmask;
enum
#endif
{
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// If this bit is set, the 'key token data' field is set in the Initial
// Security Bitmask to 0 (No Preconfig Key token). Otherwise, the
// field is left as is.
EMBER_PRECONFIG_KEY_NOT_VALID = 0x0001,
#endif
// bits 2-3 are unused.
EMBER_SECURE_NETWORK_KEY_ROTATION = 0x0002,
EMBER_JOINER_GLOBAL_LINK_KEY = 0x0010,
EMBER_EXT_NO_FRAME_COUNTER_RESET = 0x0020,
EMBER_NWK_LEAVE_WITHOUT_REJOIN_NOT_ALLOWED = 0x0040,
// Bit 7 reserved for future use (stored in TOKEN).
EMBER_NWK_LEAVE_REQUEST_NOT_ALLOWED = 0x0100,
#ifndef DOXYGEN_SHOULD_SKIP_THIS
EMBER_R18_STACK_BEHAVIOR = 0x0200,
#endif
// Bit 10 is reserved for future use (stored in TOKEN).
// Bit 11 is reserved for future use(stored in RAM).
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// Bit 12 - This denotes whether an end device should discard or accept ZDO Leave
// from a network node other than its parent.
EMBER_ZDO_LEAVE_FROM_NON_PARENT_NOT_ALLOWED = 0x1000,
#endif
// Bits 13-15 are unused.
};
#define EMBER_TC_SUPPORTS_FC_SYNC 0x00800000UL
#define EMBER_NO_TRUST_CENTER_MODE EMBER_DISTRIBUTED_TRUST_CENTER_MODE
#define EMBER_GLOBAL_LINK_KEY EMBER_TRUST_CENTER_GLOBAL_LINK_KEY
#if !defined DOXYGEN_SHOULD_SKIP_THIS
#define NO_TRUST_CENTER_KEY_TOKEN 0x0000
#define TRUST_CENTER_KEY_TOKEN_MASK 0x0030
#define SECURITY_BIT_TOKEN_MASK 0x71FF
// If this bit is on, it indicates that the TC token does not hold the TC key
// It lives in PSA at a fixed ID (see ZB SM)
#define TRUST_CENTER_KEY_LIVES_IN_PSA 0x8000
#define SECURITY_LOWER_BIT_MASK 0x000000FF // ""
#define SECURITY_UPPER_BIT_MASK 0x00FF0000L // ""
#endif
typedef struct {
uint16_t bitmask;
EmberKeyData preconfiguredKey;
EmberKeyData networkKey;
uint8_t networkKeySequenceNumber;
EmberEUI64 preconfiguredTrustCenterEui64;
} EmberInitialSecurityState;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberCurrentSecurityBitmask
#else
typedef uint16_t EmberCurrentSecurityBitmask;
enum
#endif
{
#if defined DOXYGEN_SHOULD_SKIP_THIS
// These options are the same for Initial and Current Security state.
EMBER_STANDARD_SECURITY_MODE_ = 0x0000,
EMBER_DISTRIBUTED_TRUST_CENTER_MODE_ = 0x0002,
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY_ = 0x0004,
#else
// Bit 3 reserved
#endif
EMBER_HAVE_TRUST_CENTER_LINK_KEY = 0x0010,
EMBER_TRUST_CENTER_USES_HASHED_LINK_KEY_ = 0x0084,
// Bits 1, 5, 6, and 8-15 reserved.
};
#if !defined DOXYGEN_SHOULD_SKIP_THIS
#define INITIAL_AND_CURRENT_BITMASK 0x00FF
#endif
typedef struct {
EmberCurrentSecurityBitmask bitmask;
EmberEUI64 trustCenterLongAddress;
} EmberCurrentSecurityState;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberKeyStructBitmask
#else
typedef uint16_t EmberKeyStructBitmask;
enum
#endif
{
EMBER_KEY_HAS_SEQUENCE_NUMBER = 0x0001,
EMBER_KEY_HAS_OUTGOING_FRAME_COUNTER = 0x0002,
EMBER_KEY_HAS_INCOMING_FRAME_COUNTER = 0x0004,
EMBER_KEY_HAS_PARTNER_EUI64 = 0x0008,
EMBER_KEY_IS_AUTHORIZED = 0x0010,
EMBER_KEY_PARTNER_IS_SLEEPY = 0x0020,
EMBER_UNCONFIRMED_TRANSIENT_KEY = 0x0040,
EMBER_KEY_HAS_PSA_ID = 0x0080,
EMBER_KEY_HAS_KEY_DATA = 0x0100,
EMBER_KEY_IS_AUTHENTICATION_TOKEN = 0x0200,
EMBER_DLK_DERIVED_KEY = 0x0400,
EMBER_KEY_FC_SYNC_SUPPORTED = 0x0800,
};
typedef struct {
EmberEUI64 eui64;
uint32_t incomingFrameCounter;
EmberKeyStructBitmask bitmask;
uint16_t remainingTimeSeconds;
uint8_t networkIndex;
union {
EmberKeyData keyData; // valid only if bitmask & EMBER_KEY_HAS_KEY_DATA (on some parts, keys are stored in secure storage and not RAM)
uint32_t psa_id; // valid only if bitmask & EMBER_KEY_HAS_PSA_ID (on some parts, keys are stored in secure storage and not RAM)
};
} EmberTransientKeyData;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberKeyType
#else
typedef uint8_t EmberKeyType;
enum
#endif
{
EMBER_TRUST_CENTER_LINK_KEY = 1,
EMBER_CURRENT_NETWORK_KEY = 3,
EMBER_NEXT_NETWORK_KEY = 4,
EMBER_APPLICATION_LINK_KEY = 5,
};
typedef struct {
EmberKeyStructBitmask bitmask;
EmberKeyType type;
union {
EmberKeyData key;
uint32_t psa_id;
};
uint32_t outgoingFrameCounter;
uint32_t incomingFrameCounter;
uint8_t sequenceNumber;
EmberEUI64 partnerEUI64;
} EmberKeyStruct;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberKeyStatus
#else
typedef uint8_t EmberKeyStatus;
enum
#endif
{
EMBER_KEY_STATUS_NONE = 0x00,
EMBER_APP_LINK_KEY_ESTABLISHED = 0x01,
EMBER_TRUST_CENTER_LINK_KEY_ESTABLISHED = 0x03,
EMBER_KEY_ESTABLISHMENT_TIMEOUT = 0x04,
EMBER_KEY_TABLE_FULL = 0x05,
// These are success status values applying only to the
// Trust Center answering key requests.
EMBER_TC_RESPONDED_TO_KEY_REQUEST = 0x06,
EMBER_TC_APP_KEY_SENT_TO_REQUESTER = 0x07,
// These are failure status values applying only to the
// Trust Center answering key requests.
EMBER_TC_RESPONSE_TO_KEY_REQUEST_FAILED = 0x08,
EMBER_TC_REQUEST_KEY_TYPE_NOT_SUPPORTED = 0x09,
EMBER_TC_NO_LINK_KEY_FOR_REQUESTER = 0x0A,
EMBER_TC_REQUESTER_EUI64_UNKNOWN = 0x0B,
EMBER_TC_RECEIVED_FIRST_APP_KEY_REQUEST = 0x0C,
EMBER_TC_TIMEOUT_WAITING_FOR_SECOND_APP_KEY_REQUEST = 0x0D,
EMBER_TC_NON_MATCHING_APP_KEY_REQUEST_RECEIVED = 0x0E,
EMBER_TC_FAILED_TO_SEND_APP_KEYS = 0x0F,
EMBER_TC_FAILED_TO_STORE_APP_KEY_REQUEST = 0x10,
EMBER_TC_REJECTED_APP_KEY_REQUEST = 0x11,
EMBER_TC_FAILED_TO_GENERATE_NEW_KEY = 0x12,
EMBER_TC_FAILED_TO_SEND_TC_KEY = 0x13,
// These are generic status values for a key requester.
EMBER_TRUST_CENTER_IS_PRE_R21 = 0x1E,
// These are status values applying only to the Trust Center
// verifying link keys.
EMBER_TC_REQUESTER_VERIFY_KEY_TIMEOUT = 0x32,
EMBER_TC_REQUESTER_VERIFY_KEY_FAILURE = 0x33,
EMBER_TC_REQUESTER_VERIFY_KEY_SUCCESS = 0x34,
// These are status values applying only to the key requester
// verifying link keys.
EMBER_VERIFY_LINK_KEY_FAILURE = 0x64,
EMBER_VERIFY_LINK_KEY_SUCCESS = 0x65,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberTcLinkKeyRequestPolicy
#else
typedef uint8_t EmberTcLinkKeyRequestPolicy;
enum
#endif
{
EMBER_DENY_TC_LINK_KEY_REQUESTS = 0x00,
EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_SEND_CURRENT_KEY = 0x01,
// When using the following mode a unique random link key is created.
// The key which is generated due to this mode is added to the link
// key table. Therefore make sure that the link key table size is not
// zero as this can result in the newly generated key not being saved
// and communication breaking between the trust center and the nodes.
EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_GENERATE_NEW_KEY = 0x02
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberAppLinkKeyRequestPolicy
#else
typedef uint8_t EmberAppLinkKeyRequestPolicy;
enum
#endif
{
EMBER_DENY_APP_LINK_KEY_REQUESTS = 0x00,
EMBER_ALLOW_APP_LINK_KEY_REQUEST = 0x01
};
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberKeyContents(EmberKeyData *key);
#else
#define emberKeyContents(key) ((key)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberCertificateContents(EmberCertificateData *cert);
#else
#define emberCertificateContents(cert) ((cert)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberPublicKeyContents(EmberPublicKeyData *key);
#else
#define emberPublicKeyContents(key) ((key)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberPrivateKeyContents(EmberPrivateKeyData *key);
#else
#define emberPrivateKeyContents(key) ((key)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberSmacContents(EmberSmacData *key);
#else
#define emberSmacContents(key) ((key)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberSignatureContents(EmberSignatureData *sig);
#else
#define emberSignatureContents(sig) ((sig)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberCertificate283k1Contents(EmberCertificate283k1Data *cert);
#else
#define emberCertificate283k1Contents(cert) ((cert)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberPublicKey283k1Contents(EmberPublicKey283k1Data *key);
#else
#define emberPublicKey283k1Contents(key) ((key)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* emberPrivateKey283k1Contents(EmberPrivateKey283k1Data *key);
#else
#define emberPrivateKey283k1Contents(key) ((key)->contents)
#endif
#if defined DOXYGEN_SHOULD_SKIP_THIS
uint8_t* ember283k1SignatureContents(EmberSignature283k1Data *sig);
#else
#define ember283k1SignatureContents(sig) ((sig)->contents)
#endif
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberKeySettings
#else
typedef uint16_t EmberKeySettings;
enum
#endif
{
EMBER_KEY_PERMISSIONS_NONE = 0x0000,
EMBER_KEY_PERMISSIONS_READING_ALLOWED = 0x0001,
EMBER_KEY_PERMISSIONS_HASHING_ALLOWED = 0x0002,
};
typedef struct {
EmberKeySettings keySettings;
} EmberMfgSecurityStruct;
#define EMBER_MFG_SECURITY_CONFIG_MAGIC_NUMBER 0xCABAD11FUL
typedef struct {
EmberDutyCycleHectoPct limitThresh;
EmberDutyCycleHectoPct critThresh;
EmberDutyCycleHectoPct suspLimit;
} EmberDutyCycleLimits;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberDutyCycleState
#else
typedef uint8_t EmberDutyCycleState;
enum
#endif
{
EMBER_DUTY_CYCLE_TRACKING_OFF = 0,
EMBER_DUTY_CYCLE_LBT_NORMAL = 1,
EMBER_DUTY_CYCLE_LBT_LIMITED_THRESHOLD_REACHED = 2,
EMBER_DUTY_CYCLE_LBT_CRITICAL_THRESHOLD_REACHED = 3,
EMBER_DUTY_CYCLE_LBT_SUSPEND_LIMIT_REACHED = 4,
};
typedef struct {
EmberNodeId nodeId;
EmberDutyCycleHectoPct dutyCycleConsumed;
} EmberPerDeviceDutyCycle;
typedef struct {
EmberNodeId nwk_short_address;
uint8_t bitmask;
uint8_t mac_interface_id;
uint8_t nwk_index;
uint8_t *network_packet;
uint8_t network_packet_length;
} sl_nwk_packet_exchange_t;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberMacPassthroughType
#else
typedef uint8_t EmberMacPassthroughType;
enum
#endif
{
EMBER_MAC_PASSTHROUGH_NONE = 0x00,
EMBER_MAC_PASSTHROUGH_SE_INTERPAN = 0x01,
EMBER_MAC_PASSTHROUGH_EMBERNET = 0x02,
EMBER_MAC_PASSTHROUGH_EMBERNET_SOURCE = 0x04,
EMBER_MAC_PASSTHROUGH_APPLICATION = 0x08,
EMBER_MAC_PASSTHROUGH_CUSTOM = 0x10,
#if !defined DOXYGEN_SHOULD_SKIP_THIS
EM_MAC_PASSTHROUGH_INTERNAL_ZLL = 0x80,
EM_MAC_PASSTHROUGH_INTERNAL_GP = 0x40
#endif
};
typedef struct {
uint8_t filterIndexMatch;
EmberMacPassthroughType legacyPassthroughType;
EmberMessageBuffer message;
} EmberMacFilterMatchStruct;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberZdoStatus
#else
typedef uint8_t EmberZdoStatus;
enum
#endif
{
// These values are taken from Table 48 of ZDP Errata 043238r003 and Table 2
// of NWK 02130r10.
EMBER_ZDP_SUCCESS = 0x00,
// 0x01 to 0x7F are reserved
EMBER_ZDP_INVALID_REQUEST_TYPE = 0x80,
EMBER_ZDP_DEVICE_NOT_FOUND = 0x81,
EMBER_ZDP_INVALID_ENDPOINT = 0x82,
EMBER_ZDP_NOT_ACTIVE = 0x83,
EMBER_ZDP_NOT_SUPPORTED = 0x84,
EMBER_ZDP_TIMEOUT = 0x85,
EMBER_ZDP_NO_MATCH = 0x86,
// 0x87 is reserved = 0x87,
EMBER_ZDP_NO_ENTRY = 0x88,
EMBER_ZDP_NO_DESCRIPTOR = 0x89,
EMBER_ZDP_INSUFFICIENT_SPACE = 0x8a,
EMBER_ZDP_NOT_PERMITTED = 0x8b,
EMBER_ZDP_TABLE_FULL = 0x8c,
EMBER_ZDP_NOT_AUTHORIZED = 0x8d,
EMBER_ZDP_DEVICE_BINDING_TABLE_FULL = 0x8e,
EMBER_ZDP_INVALID_INDEX = 0x8f,
EMBER_ZDP_FRAME_TOO_LARGE = 0x90,
EMBER_ZDP_BAD_KEY_NEGOTIATION_METHOD = 0x91,
EMBER_ZDP_TEMPORARY_FAILURE = 0x92,
EMBER_APS_SECURITY_FAIL = 0xad,
EMBER_NWK_ALREADY_PRESENT = 0xc5,
EMBER_NWK_TABLE_FULL = 0xc7,
EMBER_NWK_UNKNOWN_DEVICE = 0xc8,
EMBER_NWK_MISSING_TLV = 0xd6,
EMBER_NWK_INVALID_TLV = 0xd7,
};
#define NETWORK_ADDRESS_REQUEST 0x0000u
#define NETWORK_ADDRESS_RESPONSE 0x8000u
#define IEEE_ADDRESS_REQUEST 0x0001u
#define IEEE_ADDRESS_RESPONSE 0x8001u
// <node descriptor: 13> <tlvs: varies>
//
// Node Descriptor field is divided into subfields of bitmasks as follows:
// (Note: All lengths below are given in bits rather than bytes.)
// Logical Type: 3
// Complex Descriptor Available: 1
// User Descriptor Available: 1
// (reserved/unused): 3
// APS Flags: 3
// Frequency Band: 5
// MAC capability flags: 8
// Manufacturer Code: 16
// Maximum buffer size: 8
// Maximum incoming transfer size: 16
// Server mask: 16
// Maximum outgoing transfer size: 16
// Descriptor Capability Flags: 8
// See ZigBee document 053474, Section 2.3.2.3 for more details.
#define NODE_DESCRIPTOR_REQUEST 0x0002u
#define NODE_DESCRIPTOR_RESPONSE 0x8002u
// See ZigBee document 053474, Section 2.3.2.4 for more details.
#define POWER_DESCRIPTOR_REQUEST 0x0003u
#define POWER_DESCRIPTOR_RESPONSE 0x8003u
#define SIMPLE_DESCRIPTOR_REQUEST 0x0004u
#define SIMPLE_DESCRIPTOR_RESPONSE 0x8004u
#define ACTIVE_ENDPOINTS_REQUEST 0x0005u
#define ACTIVE_ENDPOINTS_RESPONSE 0x8005u
#define MATCH_DESCRIPTORS_REQUEST 0x0006u
#define MATCH_DESCRIPTORS_RESPONSE 0x8006u
#define END_DEVICE_ANNOUNCE 0x0013u
#define END_DEVICE_ANNOUNCE_RESPONSE 0x8013u
#define SYSTEM_SERVER_DISCOVERY_REQUEST 0x0015u
#define SYSTEM_SERVER_DISCOVERY_RESPONSE 0x8015u
#define PARENT_ANNOUNCE 0x001Fu
#define PARENT_ANNOUNCE_RESPONSE 0x801Fu
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberZdoServerMask
#else
typedef uint16_t EmberZdoServerMask;
enum
#endif
{
EMBER_ZDP_PRIMARY_TRUST_CENTER = 0x0001,
EMBER_ZDP_SECONDARY_TRUST_CENTER = 0x0002,
EMBER_ZDP_PRIMARY_BINDING_TABLE_CACHE = 0x0004,
EMBER_ZDP_SECONDARY_BINDING_TABLE_CACHE = 0x0008,
EMBER_ZDP_PRIMARY_DISCOVERY_CACHE = 0x0010,
EMBER_ZDP_SECONDARY_DISCOVERY_CACHE = 0x0020,
EMBER_ZDP_NETWORK_MANAGER = 0x0040,
// Bits 0x0080 to 0x8000 are reserved.
};
#define FIND_NODE_CACHE_REQUEST 0x001Cu
#define FIND_NODE_CACHE_RESPONSE 0x801Cu
#define END_DEVICE_BIND_REQUEST 0x0020u
#define END_DEVICE_BIND_RESPONSE 0x8020u
#define CLEAR_ALL_BINDINGS_REQUEST 0x002Bu
#define CLEAR_ALL_BINDINGS_RESPONSE 0x802Bu
#define UNICAST_BINDING 0x03u
#define UNICAST_MANY_TO_ONE_BINDING 0x83u
#define MULTICAST_BINDING 0x01u
#define BIND_REQUEST 0x0021u
#define BIND_RESPONSE 0x8021u
#define UNBIND_REQUEST 0x0022u
#define UNBIND_RESPONSE 0x8022u
#define LQI_TABLE_REQUEST 0x0031u
#define LQI_TABLE_RESPONSE 0x8031u
#define ROUTING_TABLE_REQUEST 0x0032u
#define ROUTING_TABLE_RESPONSE 0x8032u
#define BINDING_TABLE_REQUEST 0x0033u
#define BINDING_TABLE_RESPONSE 0x8033u
#define LEAVE_REQUEST 0x0034u
#define LEAVE_RESPONSE 0x8034u
#define LEAVE_REQUEST_REMOVE_CHILDREN_FLAG 0x40u
#define LEAVE_REQUEST_REJOIN_FLAG 0x80u
#define PERMIT_JOINING_REQUEST 0x0036u
#define PERMIT_JOINING_RESPONSE 0x8036u
#define NWK_UPDATE_REQUEST 0x0038u
#define NWK_UPDATE_RESPONSE 0x8038u
#define NWK_UPDATE_ENHANCED_REQUEST 0x0039u
#define NWK_UPDATE_ENHANCED_RESPONSE 0x8039u
#define NWK_UPDATE_IEEE_JOINING_LIST_REQUEST 0x003Au
#define NWK_UPDATE_IEEE_JOINING_LIST_REPONSE 0x803Au
#define NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFY 0x803Bu
#define BEACON_SURVEY_REQUEST 0x003Cu
#define BEACON_SURVEY_RESPONSE 0x803Cu
#define KEY_NEGOTIATION_REQUEST 0x0040u
#define KEY_NEGOTIATION_RESPONSE 0x8040u
#define AUTHENTICATION_TOKEN_REQUEST 0x0041u
#define AUTHENTICATION_TOKEN_RESPONSE 0x8041u
#define AUTHENTICATION_LEVEL_REQUEST 0x0042u
#define AUTHENTICATION_LEVEL_RESPONSE 0x8042u
#define SET_CONFIGURATION_REQUEST 0x0043u
#define SET_CONFIGURATION_RESPONSE 0x8043u
#define GET_CONFIGURATION_REQUEST 0x0044u
#define GET_CONFIGURATION_RESPONSE 0x8044u
#define KEY_UPDATE_REQUEST 0x0045u
#define KEY_UPDATE_RESPONSE 0x8045u
#define SECURITY_DECOMMISSION_REQUEST 0x0046u
#define SECURITY_DECOMMISSION_RESPONSE 0x8046u
#define SECURITY_CHALLENGE_REQUEST 0x0047u
#define SECURITY_CHALLENGE_RESPONSE 0x8047u
#define COMPLEX_DESCRIPTOR_REQUEST 0x0010u
#define COMPLEX_DESCRIPTOR_RESPONSE 0x8010u
#define USER_DESCRIPTOR_REQUEST 0x0011u
#define USER_DESCRIPTOR_RESPONSE 0x8011u
#define DISCOVERY_REGISTER_REQUEST 0x0012u
#define DISCOVERY_REGISTER_RESPONSE 0x8012u
#define USER_DESCRIPTOR_SET 0x0014u
#define USER_DESCRIPTOR_CONFIRM 0x8014u
#define NETWORK_DISCOVERY_REQUEST 0x0030u
#define NETWORK_DISCOVERY_RESPONSE 0x8030u
#define DIRECT_JOIN_REQUEST 0x0035u
#define DIRECT_JOIN_RESPONSE 0x8035u
#define DISCOVERY_CACHE_REQUEST 0x0012u
#define DISCOVERY_CACHE_RESPONSE 0x8012u
#define CLUSTER_ID_RESPONSE_MINIMUM 0x8000u
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberZdoConfigurationFlags
#else
typedef uint8_t EmberZdoConfigurationFlags;
enum
#endif
{
EMBER_APP_RECEIVES_SUPPORTED_ZDO_REQUESTS = 0x01,
EMBER_APP_HANDLES_UNSUPPORTED_ZDO_REQUESTS = 0x02,
EMBER_APP_HANDLES_ZDO_ENDPOINT_REQUESTS = 0x04,
EMBER_APP_HANDLES_ZDO_BINDING_REQUESTS = 0x08
};
typedef struct {
EmberNodeId destination; // EMBER_NULL_NODE_ID if entry is marked for removal
uint8_t closerIndex; // The entry one hop closer to the gateway.
uint8_t olderIndex; // The entry touched before this one.
} SourceRouteTableEntry;
#if defined(EMBER_SCRIPTED_TEST)
#define WEAK_TEST WEAK()//__attribute__((weak))
#else
#define WEAK_TEST
#endif
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberMultiPhyNwkConfig
#else
typedef uint8_t EmberMultiPhyNwkConfig;
enum
#endif
{
EMBER_MULTI_PHY_ROUTERS_ALLOWED = 0x01,
EMBER_MULTI_PHY_BROADCASTS_ENABLED = 0x02,
EMBER_MULTI_PHY_DISABLED = 0x80
};
#define EMBER_MAX_MAC_ONLY_COUNTERS 33u
#define EMBER_MAX_NUM_PHYS 2u
#define PHY_INDEX_NATIVE 0u
#define PHY_INDEX_PRO2PLUS 1u
typedef uint8_t EmberRadioPowerMode;
typedef struct {
int8_t minRssiForReceivingPkts;
uint16_t beaconClassificationMask;
} EmberBeaconClassificationParams;
enum {
PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION = 0x0001, // this means we also advertise the TC connectivity and long/short uptime
PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY = 0x0002, //this means we also advertise TC connectivity
// The following two bits are only ADVERTISED in a beacon if Parent Classification
// is enabled (bit 0), or tcBasedCassification (bit 1) is enabled
TC_CONNECTIVITY = 0x0010,
LONG_UPTIME = 0x0020,
BAD_PARENT_CONNECTIVITY = 0x0040, // it indicates if the paren connection is bad.
// Meaning rolling avg of RSSI over the last window of packets (16 for now) have been
// lower than minRssiForReceivingPkts.
// The rolling average is (re)initiated after the last successful (re)join.
PREFERRED_PARENT = 0x60 // This is information we provide for routers.
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberEntropySource
#else
typedef uint8_t EmberEntropySource;
enum
#endif
{
EMBER_ENTROPY_SOURCE_ERROR = 0x00, // Error in identifying the entropy source.
EMBER_ENTROPY_SOURCE_RADIO = 0x01, // The default radio entropy source.
EMBER_ENTROPY_SOURCE_MBEDTLS_TRNG = 0x02, // TRNG with mbed TLS support.
EMBER_ENTROPY_SOURCE_MBEDTLS = 0x03, // Other mbed TLS entropy source.
};
enum {
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,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberTcApsEncryptMode
#else
typedef uint8_t EmberTcApsEncryptMode;
enum
#endif
{
TC_APS_ENCRYPT_DEFAULT = 0x00,
TC_APS_ENCRYPT_ENABLE = 0x01,
TC_APS_ENCRYPT_DISABLE = 0x02,
};
typedef struct {
uint32_t nvm3Key;
bool isCnt;
bool isIdx;
uint8_t size;
uint8_t arraySize;
} EmberTokenInfo;
typedef struct {
uint32_t size;
void *data;
} EmberTokenData;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberKeepAliveMode
#else
typedef uint8_t EmberKeepAliveMode;
enum
#endif
{
EMBER_KEEP_ALIVE_SUPPORT_UNKNOWN = 0x00,
EMBER_MAC_DATA_POLL_KEEP_ALIVE = 0x01,
EMBER_END_DEVICE_TIMEOUT_KEEP_ALIVE = 0x02,
EMBER_KEEP_ALIVE_SUPPORT_ALL = 0x03,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberSourceRouteDiscoveryMode
#else
typedef uint8_t EmberSourceRouteDiscoveryMode;
enum
#endif
{
EMBER_SOURCE_ROUTE_DISCOVERY_OFF = 0x00,
EMBER_SOURCE_ROUTE_DISCOVERY_ON = 0x01,
EMBER_SOURCE_ROUTE_DISCOVERY_RESCHEDULE = 0x02,
};
typedef struct {
uint8_t message_id;
uint8_t tag;
} EmberTagMapEntry;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberTransmitPriority
#else
typedef uint8_t EmberTransmitPriority;
enum
#endif
{
EMBER_MAC_TRANSMIT_PRIORITY_HIGH,
EMBER_MAC_TRANSMIT_PRIORITY_NORMAL,
EMBER_MAC_TRANSMIT_PRIORITY_SCAN_OKAY
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum sl_zigbee_route_record_policy_type_t
#else
typedef uint8_t sl_zigbee_route_record_policy_type_t;
enum
#endif
{
ROUTE_RECORD_POLICY_ACK_BY_SOURCE_ROUTED_MESSAGE = 0,
ROUTE_RECORD_POLICY_DONT_SEND = 1,
ROUTE_RECORD_POLICY_NO_ACK_REQUIRED = 2,
};
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum sl_passive_ack_config_enum_t
#else
typedef uint8_t sl_passive_ack_config_enum_t;
enum
#endif
{
SL_PASSIVE_ACK_DEFAULT_CONFIG = 0,
SL_PASSIVE_ACK_DISABLE,
SL_PASSIVE_ACK_THRESHOLD_WITH_REBROADCAST,
SL_PASSIVE_ACK_THRESHOLD_NO_REBROADCAST,
SL_PASSIVE_ACK_THRESHOLD_WITH_REBROADCAST_ALL_NODES
};
typedef struct aps_duplicate_msg_entry {
uint32_t crc_digest;
} sl_zigbee_aps_duplicate_msg_entry_t;
typedef struct {
uint16_t destination;
uint16_t nextHop;
uint8_t status;
uint8_t cost;
uint8_t networkIndex;
} sli_zigbee_route_table_entry_t;
typedef struct {
uint16_t source;
uint16_t sender;
uint8_t id;
uint8_t forwardRoutingCost;
uint8_t quarterSecondsToLive;
uint8_t routeTableIndex;
uint8_t networkIndex;
} sli_zigbee_discovery_table_entry_t;
typedef struct {
uint16_t source;
uint8_t sequence;
uint8_t numAcks;
uint32_t neighborBitmask;
} sli_zigbee_broadcast_table_entry_t;
// an entry in the neighbor table. nodes directly measure the incoming
// link quality, but rely on the neighbors to tell them their outgoing link
// quality.
//
// we use an uint16_t rather than an uint8_t for the incoming link quality
// value in order to have the needed precision to perform rolling averages.
//
// the age field is incremented every neighbor exchange period, and set
// to zero upon reception of a neighbor exchange message which lists us.
// thus it indicates the time since last obtaining a valid outgoing cost.
//
// the overlap count is used in the neighbor selection algorithm
// to favor neighborhoods that have low overlap with ours.
//
// the active network key bit is used to indicate whether our neighbors
// are using the active network key (my key) or the alternate
// one. this is important for knowing when to reset their frame counter.
// for children's frame counters, see 'child.h'.
// the neighbor association bit indicates whether the device was added to the
// neighbor table because it associated to the local node (vs link status
// message). it is used to help pick which neighbor to remove from the
// neighbor table.
typedef struct {
EmberNodeId id;
uint16_t incoming;
uint8_t exchange; // 0xf0 age in neighbor exchange periods
// 0x07 outgoing cost (bottom 3 bits)
// bit 0x08 is unused
uint8_t connectivity; // overlap in bits 0,1
// bits 2 and 3 are used to store information about
// the previous incoming cost which can be 1,3,5,7
// neighbor using my active network key in bit 4
// bit 5 is reserved
// neighbor association in bit 6
// neighbor security capability in bit 7 (1 = high,
// 0 = standard)
EmberEUI64 eui64;
uint8_t mac_interface_table_index;
uint8_t lqi_for_median[3];
} sli_zigbee_neighbor_table_entry_t;
typedef struct {
PacketHeader header;
uint8_t attempts; // Top/bottom nibble is successful/remaining attempts.
uint16_t timer;
uint16_t startTime;
} sli_zigbee_retry_queue_entry_t;
typedef struct storeAndForwardEntryS {
PacketHeader header;
uint8_t attempts; // Top/bottom nibble is successful/remaining attempts.
uint16_t timer;
uint16_t startTime;
uint16_t initialDelay;
} sli_zigbee_store_and_forward_queue_entry_t;
typedef struct {
EmberNodeId shortId;
EmberEUI64 longId;
uint8_t flags;
} sli_zigbee_address_table_entry_t;
typedef struct {
uint16_t msLeft; // Time until resending or giving up.
PacketHeader header; // The complete message.
uint8_t mode; // One of the EMBER_OUTGOING_... values.
uint8_t status; // See below.
uint8_t addressIndex; // Index into the address or binding tables.
} sli_zigbee_aps_unicast_message_data_t;
typedef struct {
// Child Table Info
sl_mac_child_entry_t *childTable;
uint16_t *childStatus;
uint32_t *childTimers;
uint16_t *childLqi;
// Routing Table Info
uint8_t *routeRecordTable;
// Child Table End Device Info
uint8_t *endDeviceTimeout;
uint8_t endDeviceChildCount;
// Used for sending link status more quickly at startup
// and only used by routers.
uint8_t fastLinkStatusCount;
// Broadcast Table Info
uint8_t broadcastHead;
uint8_t inInitialBroadcastTimeout;
uint32_t broadcastAgeCutoffIndexes;
sli_zigbee_broadcast_table_entry_t *broadcastTable;
// Association info
bool permitJoining;
bool macPermitAssociation;
bool allowRejoinsWithWellKnownKey;
// Parent announcement
uint8_t parentAnnounceIndex;
uint8_t totalInitialChildren;
// PanId conflict info
EmberPanId newPanId;
} sli_zigbee_pan_info_t;
typedef struct {
uint8_t stackProfile;
uint8_t nodeType;
uint8_t zigbeeState;
uint8_t dynamicCapabilities;
uint8_t zigbeeNetworkSecurityLevel;
uint32_t securityStateBitmask;
uint8_t zigbeeSequenceNumber;
uint8_t apsSequenceNumber;
// Network security stuff
uint8_t securityKeySequenceNumber;
uint32_t nextNwkFrameCounter;
// APS security stuff
uint32_t incomingTcLinkKeyFrameCounter;
// Neighbor table
sli_zigbee_neighbor_table_entry_t *neighborTable;
uint8_t neighborTableSize;
uint8_t neighborCount;
// Incoming frame counters table
uint32_t* frameCounters;
// The number of ticks since our last successful poll. Ticks are
// in seconds.
uint32_t ticksSinceLastPoll; // for timing out our parent
uint32_t msSinceLastPoll; // for APS retry timeout adjustment
// Transmission statistics that are reported in NWK_UPDATE_RESPONSE ZDO
// messages.
uint16_t unicastTxAttempts;
uint16_t unicastTxFailures;
uint16_t parentNwkInformation;
// Child aging stuff
//----------------------------------------------------------------
// The last time we updated the child timers for each unit.
// The milliseconds needs to be larger because we use it on children, who
// may go a long time between calls to emberTick().
uint16_t lastChildAgeTimeSeconds;
uint32_t lastChildAgeTimeMs;
// PAN info contains collection of elements needed to accommodate
// single network, multi network and multi PAN use cases.
sli_zigbee_pan_info_t *panInfoData;
} EmberNetworkInfo;
// Note:
// For single network case:
// - EmberNetworkInfo and sli_zigbee_pan_info: Single instance present.
// For multi network case:
// - EmberNetworkInfo: Instance present for each network.
// - sli_zigbee_pan_info: Single Instance present.
// For multi PAN case"
// - EmberNetworkInfo and sli_zigbee_pan_info: Instance present for each network.
#endif // SLABS_EMBER_TYPES_H
#include "stack/include/zll-types.h"
#include "stack/include/gp-types.h"
#include "stack/include/zigbee-security-manager-types.h"
Miscellaneous Ember Types#
EmberReleaseTypeStruct Data that relates release type to the correct string.
Size of EUI64 (an IEEE address) in bytes (8).
Size of an extended PAN identifier in bytes (8).
Size of an encryption key in bytes (16).
Size of Implicit Certificates used for Certificate-based Key Exchange(CBKE).
Size of Public Keys used in Elliptical Cryptography ECMQV algorithms.
Size of Private Keys used in Elliptical Cryptography ECMQV algorithms.
Size of the SMAC used in Elliptical Cryptography ECMQV algorithms.
Size of the DSA signature used in Elliptical Cryptography Digital Signature Algorithms.
The size of AES-128 MMO hash is 16-bytes. This is defined in the core. ZigBee specification.
Size of Implicit Certificates used for Certificate Based Key Exchange using the ECC283K1 curve in bytes.
Size of Public Keys used in SECT283k1 Elliptical Cryptography ECMQV algorithms.
Size of Private Keys used SECT283k1 in Elliptical Cryptography ECMQV algorithms.
Size of the DSA signature used in SECT283k1 Elliptical Cryptography Digital Signature Algorithms.
Return type for Ember functions.
EUI 64-bit ID (an IEEE address).
The maximum 802.15.4 channel number is 26.
The minimum 2.4GHz 802.15.4 channel number is 11.
The minimum SubGhz channel number is 0.
The SubGhz scan duration is 5.
There are sixteen 802.15.4 channels.
A bitmask to scan all 2.4 GHz 802.15.4 channels.
The maximum channels per page are 27 page bits 31...27, channel bits 26...0.
Sub-GHz channel bitmasks for pages 28, 30, 31.
The maximum SubGhz channel number on pages 28, 30, 31 is 26.
SubGhz channel bitmasks for page 29.
The maximum SubGhz channel number on page 29 is 8.
The minimum SubGhz page number is 28.
The maximum SubGhz page number is 31.
A bitmask for the channel page within a channel mask.
A page-channel mask for a given page and channel mask.
A page-channel mask for a given page and channel.
The network ID of the coordinator in a ZigBee network is 0x0000.
A distinguished network ID that will never be assigned to any node. It is used to indicate the absence of a node ID.
The channel page value used to indicate just the 2.4GHz channels.
A distinguished EUI64 that is commonly used to indicate an invalid EUI64.
A distinguished binding index used to indicate the absence of a binding.
A distinguished network ID that will never be assigned to any node.
A distinguished network ID that will never be assigned to any node. This value is returned when getting the remote node ID from the binding table and the given binding table index refers to a multicast binding entry.
A distinguished network ID that will never be assigned to any node. This value is used when getting the remote node ID from the address or binding tables. It indicates that the address or binding table entry is currently in use but the node ID corresponding to the EUI64 in the table is currently unknown.
A distinguished network ID that will never be assigned to any node. This value is used when getting the remote node ID from the address or binding tables. It indicates that the address or binding table entry is currently in use and network address discovery is underway.
A distinguished address table index used to indicate the absence of an address table entry.
The endpoint where the ZigBee Device Object (ZDO) resides.
The broadcast endpoint, as defined in the ZigBee spec.
The GP endpoint, as defined in the ZigBee spec.
The profile ID used by the ZigBee Device Object (ZDO).
The profile ID used to address all the public profiles.
The maximum value for a profile ID in the standard profile range.
The broadcast table entry timeout, which specifies, in quarter seconds, how long an entry persists in the local device's broadcast table.
Ember's Manufacturer ID.
An invalid network index.
Use Ember's default duty cycle limit configurations.
Type of Ember software version.
EmberReleaseTypeStruct Data that relates release type to the correct string.
EmberReleaseTypeStruct Data that relates release type to the correct string.
EmberReleaseTypeStruct Data that relates release type to the correct string.
EmberReleaseTypeStruct Data that relates release type to the correct string.
16-bit ZigBee network address.
802.15.4 PAN ID.
A structure containing the version information.
ZigBee Broadcast Addresses#
ZigBee specifies three different broadcast addresses that reach different collections of nodes. Broadcasts are normally sent only to routers. Broadcasts can also be forwarded to end devices, either all of them or only those that do not sleep. Broadcasting to end devices is both significantly more resource-intensive and significantly less reliable than broadcasting to routers.
Ember Concentrator Types#
To configure non trust center node to assume a concentrator type of the trust center it join to, until it receive many-to-one route request from the trust center. For the trust center node, concentrator type is configured from the concentrator plugin. The stack by default assumes trust center be a low RAM concentrator that make other devices send route record to the trust center even without receiving a many-to-one route request. The assumed concentrator type can be changed by setting appropriate value to emberAssumedTrustCenterConcentratorType.
The decision made by the Trust Center when a node attempts to join.
The Status of the Update Device message sent to the Trust Center. The device may have joined or rejoined insecurely, rejoined securely, or left. MAC Security has been deprecated and therefore there is no secure join.
Notes the last rejoin reason.
Defines the lists of clusters that must be provided for each endpoint.
Either marks an event as inactive or specifies the units for the event execution time.
The type of method used for joining.
Defines the events reported to the application by the emberCounterHandler().
txPowerModes for emberSetTxPowerMode and mfglibSetPower#
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to disable all power mode options, resulting in normal power mode and bi-directional RF transmitter output.
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable boost power mode.
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable the alternate transmitter output.
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable both boost mode and the alternate transmitter output.
Counters Request Definitions#
This is a ZigBee application profile ID that has been assigned to Ember Corporation.
Ember's first private profile ID.
Ember's last private profile ID.
This is an EmberInitialSecurityBitmask value but it does not actually set anything. It is the default mode used by the ZigBee Pro stack. It is defined here so that no legacy code is broken by referencing it.
The short address of the trust center. This address never changes dynamically.
This denotes that the device can require a resync of the APS frame counter.
This is the legacy name for the Distributed Trust Center Mode.
This is the legacy name for the Trust Center Global Link Key.
This magic number prevents accidentally changing the key settings. The emberSetMfgSecurityConfig() API will return EMBER_INVALID_CALL unless it is passed in.
This is the Initial Security Bitmask that controls the use of various security features.
This is the Extended Security Bitmask that controls the use of various extended security features.
This is the Current Security Bitmask that details the use of various security features.
This bitmask describes the presence of fields within the EmberKeyStruct.
This denotes the type of security key.
This denotes the status of an attempt to establish a key with another device.
This enumeration determines whether or not a Trust Center answers trust center link key requests.
This enumeration determines whether or not a Trust Center answers app link key requests.
This is a ZigBee application profile ID that has been assigned to Ember Corporation.
Duty cycle states.
The types of MAC passthrough messages that an application may receive. This is a bitmask.
This function allows access to the actual key data bytes of the EmberKeyData structure.
Get access to the actual certificate data bytes of the EmberCertificateData structure.
Get access to the actual public key data bytes of the EmberPublicKeyData structure.
Get access to the actual private key data bytes of the EmberPrivateKeyData structure.
Get access to the actual SMAC (Secured Message Authentication Code) data of the EmberSmacData structure.
Get access to the actual ECDSA signature data of the EmberSignatureData structure.
Get access to the actual certificate data bytes of the Ember283k1CertificateData structure.
Get access to the actual public key data bytes of the Ember283k1PublicKeyData structure.
Get access to the actual private key data bytes of the Ember283k1PrivateKeyData structure.
Get access to the actual ECDSA signature data of the EmberSignature283k1Data structure.
Network and IEEE Address Request/Response#
Defines for ZigBee device profile cluster IDs follow. These include descriptions of the formats of the messages.Note that each message starts with a 1-byte transaction sequence number. This sequence number is used to match a response command frame to the request frame that it is replying to. The application shall maintain a 1-byte counter that is copied into this field and incremented by one for each command sent. When a value of 0xff is reached, the next command shall re-start the counter with a value of 0x00.Network request: <transaction sequence number: 1> <EUI64:8> <type:1> <start index:1>IEEE request: <transaction sequence number: 1> <node ID:2> <type:1> <start index:1> <type> = 0x00 single address response, ignore the start index = 0x01 extended response -> sends kid's IDs as wellResponse: <transaction sequence number: 1> <status:1> <EUI64:8> <node ID:2> <ID count:1> <start index:1> <child ID:2>*
Node Descriptor Request/Response#
Request: <transaction sequence number: 1> <node ID:2> <tlvs: varies> Response: <transaction sequence number: 1> <status:1> <node ID:2>// <node descriptor: 13> <tlvs: varies>//// Node Descriptor field is divided into subfields of bitmasks as follows:// (Note: All lengths below are given in bits rather than bytes.)// Logical Type: 3// Complex Descriptor Available: 1// User Descriptor Available: 1// (reserved/unused): 3// APS Flags: 3// Frequency Band: 5// MAC capability flags: 8// Manufacturer Code: 16// Maximum buffer size: 8// Maximum incoming transfer size: 16// Server mask: 16// Maximum outgoing transfer size: 16// Descriptor Capability Flags: 8// See ZigBee document 053474, Section 2.3.2.3 for more details.
Power Descriptor Request / Response#
Request: <transaction sequence number: 1> <node ID:2> Response: <transaction sequence number: 1> <status:1> <node ID:2> <current power mode, available power sources:1> <current power source, current power source level:1>// See ZigBee document 053474, Section 2.3.2.4 for more details.
Simple Descriptor Request / Response#
Request: <transaction sequence number: 1> <node ID:2> <endpoint:1>Response: <transaction sequence number: 1> <status:1> <node ID:2> <length:1> <endpoint:1> <app profile ID:2> <app device ID:2> <app device version, app flags:1> <input cluster count:1> <input cluster:2>* <output cluster count:1> <output cluster:2>*
Active Endpoints Request / Response#
Request: <transaction sequence number: 1> <node ID:2>Response: <transaction sequence number: 1> <status:1> <node ID:2> <endpoint count:1> <endpoint:1>*
Match Descriptors Request / Response#
Request: <transaction sequence number: 1> <node ID:2> <app profile ID:2> <input cluster count:1> <input cluster:2>* <output cluster count:1> <output cluster:2>*Response: <transaction sequence number: 1> <status:1> <node ID:2> <endpoint count:1> <endpoint:1>*
End Device Announce and End Device Announce Response#
Request: <transaction sequence number: 1> <node ID:2> <EUI64:8> <capabilities:1>No response is sent.
System Server Discovery Request / Response#
This is broadcast and only servers which have matching services respond. The response contains the request services that the recipient provides.Request: <transaction sequence number: 1> <server mask:2>Response: <transaction sequence number: 1> <status (== EMBER_ZDP_SUCCESS):1> <server mask:2>
Parent Announce and Parent Announce Response#
This is broadcast and only servers which have matching children respond. The response contains the list of children that the recipient now holds.Request: <transaction sequence number: 1> <number of children:1> <child EUI64:8> <child Age:4>*Response: <transaction sequence number: 1> <number of children:1> <child EUI64:8> <child Age:4>*
Find Node Cache Request / Response#
This is broadcast and only discovery servers which have the information for the device of interest, or the device of interest itself, respond. The requesting device can then direct any service discovery requests to the responder.Request: <transaction sequence number: 1> <device of interest ID:2> <d-of-i EUI64:8>Response: <transaction sequence number: 1> <responder ID:2> <device of interest ID:2> <d-of-i EUI64:8>
End Device Bind Request / Response#
Request: <transaction sequence number: 1> <node ID:2> <EUI64:8> <endpoint:1> <app profile ID:2> <input cluster count:1> <input cluster:2>* <output cluster count:1> <output cluster:2>*Response: <transaction sequence number: 1> <status:1>
Clear All Bindings Request / Response#
Request: <transaction sequence number: 1> <clear all bindings request EUI64 TLV:Variable>Clear all bindings request EUI64 TLV: <Count N:1><EUI64 1:8>...<EUI64 N:8>Response: <transaction sequence number: 1> <status:1>
Binding types and Request / Response#
Bind and unbind have the same formats. There are two possible formats, depending on whether the destination is a group address or a device address. Device addresses include an endpoint, groups don't.Request: <transaction sequence number: 1> <source EUI64:8> <source endpoint:1> <cluster ID:2> <destination address:3 or 10>Destination address: <0x01:1> <destination group:2>Or: <0x03:1> <destination EUI64:8> <destination endpoint:1>Response: <transaction sequence number: 1> <status:1>
LQI Table Request / Response#
Request: <transaction sequence number: 1> <start index:1>Response: <transaction sequence number: 1> <status:1> <neighbor table entries:1> <start index:1> <entry count:1> <entry:22>* <entry> = <extended PAN ID:8> <EUI64:8> <node ID:2> <device type, RX on when idle, relationship:1> <permit joining:1> <depth:1> <LQI:1>The device-type byte has the following fields: Name Mask Valuesdevice type 0x03 0x00 coordinator 0x01 router 0x02 end device 0x03 unknownrx mode 0x0C 0x00 off when idle 0x04 on when idle 0x08 unknownrelationship 0x70 0x00 parent 0x10 child 0x20 sibling 0x30 other 0x40 previous childreserved 0x10The permit-joining byte has the following fields Name Mask Valuespermit joining 0x03 0x00 not accepting join requests 0x01 accepting join requests 0x02 unknownreserved 0xFC
Routing Table Request / Response#
Request: <transaction sequence number: 1> <start index:1>Response: <transaction sequence number: 1> <status:1> <routing table entries:1> <start index:1> <entry count:1> <entry:5>* <entry> = <destination address:2> <status:1> <next hop:2>The status byte has the following fields: Name Mask Valuesstatus 0x07 0x00 active 0x01 discovery underway 0x02 discovery failed 0x03 inactive 0x04 validation underwayflags 0x38 0x08 memory constrained 0x10 many-to-one 0x20 route record requiredreserved 0xC0
Binding Table Request / Response#
Request: <transaction sequence number: 1> <start index:1>Response: <transaction sequence number: 1> <status:1> <binding table entries:1> <start index:1> <entry count:1> <entry:14/21>* <entry> = <source EUI64:8> <source endpoint:1> <cluster ID:2> <dest addr mode:1> <dest:2/8> <dest endpoint:0/1>If Dest. Address Mode = 0x03, then the Long Dest. Address will be used and Dest. endpoint will be included. If Dest. Address Mode = 0x01, then the Short Dest. Address will be used and there will be no Dest. endpoint.
Leave Request / Response#
Request: <transaction sequence number: 1> <EUI64:8> <flags:1> The flag bits are: 0x40 remove children 0x80 rejoinResponse: <transaction sequence number: 1> <status:1>
Permit Joining Request / Response#
Request: <transaction sequence number: 1> <duration:1> <permit authentication:1>Response: <transaction sequence number: 1> <status:1>
Network Update Request / Response#
Request: <transaction sequence number: 1> <scan channels:4> <duration:1> <count:0/1> <manager:0/2> If the duration is in 0x00 ... 0x05, 'count' is present but not 'manager'. Perform 'count' scans of the given duration on the given channels. If duration is 0xFE, 'channels' should have a single channel and 'count' and 'manager' are not present. Switch to the indicated channel. If duration is 0xFF, 'count' is not present. Set the active channels and the network manager ID to the values given. Unicast requests always get a response, which is INVALID_REQUEST if the duration is not a legal value.Response: <transaction sequence number: 1> <status:1> <scanned channels:4> <transmissions:2> <failures:2> <energy count:1> <energy:1>*
Beacon Survey Request / Response#
This command can be used by a remote device to survey the end devices to determine how many potential parents they have access to.Request: <transaction sequence number: 1> <TLVs: varies>Contains one Beacon Survey Configuration TLV (variable octets),which contain the ScanChannelListStructure (variable length)and the ConfigurationBitmask (1 octet). This information providesthe configuration for the end device's beacon survey.See R23 spec section 2.4.3.3.12 for the request and 3.2.2.2.1for the ChannelListStructure.@codeResponse: <transaction sequence number: 1> <status: 1> <TLVs: varies>Contains one Beacon Survey Results TLV (4 octets), which containthe number of on-network, off-network, potential parent and totalbeacons recorded. If the device that received the request is not arouter, a Potential Parent TLV (variable octects) will be found. Thiswill contain information on the device's current parent, as well asany potential parents found via beacons (up to a maximum of 5). APan ID Conflict TLV can also found in the response.See R23 spec section 2.4.4.3.13 for the response.
Security Start Key Negotiation Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more Curve25519 Public Point TLVs (40 octets),which contain an EUI64 and the 32-byte Curve public point.See R23 spec section 2.4.3.4.1@note This command SHALL NOT be APS encrypted regardless ofwhether sent before or after the device joins the network.This command SHALL be network encrypted if the device has anetwork key, i.e. it has joined the network earlier and wantsto negotiate or renegotiate a new link key; otherwise, if itis used prior to joining the network, it SHALL NOT be network encrypted.Response: <transaction sequence number: 1> <status:1> <TLVs: varies>Contains one or more Curve25519 Public Point TLVs (40 octets),which contain an EUI64 and the 32-byte Curve public point, orLocal TLVs.See R23 spec section 2.4.4.4.1@note This command SHALL NOT be APS encrypted. When performingKey Negotiation with an unauthenticated neighbor that is notyet on the network, network layer encryption SHALL NOT be usedon the message. If the message is being sent to unauthenticateddevice that is not on the network and is not a neighbor, itSHALL be relayed as described in section 4.6.3.7.7. Otherwisethe message SHALL have network layer encryption.
Retrieve Authentication Token Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more Authentication Token ID TLVs (1 octet),which contain the TLV Type Tag ID of the source of theauthentication token. See R23 spec section 2.4.3.4.2Response: <transaction sequence number: 1> <status:1> <TLVs: varies>Contains one or more 128-bit Symmetric Passphrase Global TLVs(16 octets), which contain the symmetric passphrase authenticationtoken. See R23 spec section 2.4.4.4.2
Retrieve Authentication Level Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more Target IEEE Address TLVs (8 octets),which contain the EUI64 of the device of interest.See R23 spec section 2.4.3.4.3Response: <transaction sequence number: 1> <status:1> <TLVs: varies>Contains one or more Device Authentication Level TLVs(10 octets), which contain the EUI64 of the inquired device,along with the its initial join method and its active linkkey update method.See R23 spec section 2.4.4.4.3
Set Configuration Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more Global TLVs (1 octet),which contain the TLV Type Tag ID, and theirvalue.Response: <transaction sequence number: 1> <status:1>
Get Configuration Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more TLVs (1 octet),which the sender wants to get informationResponse: <transaction sequence number: 1> <status:1> <TLVs: varies>Contains one or more TLV tag Ids and their valuesin response to the request
Security Start Key Update Request / Response#
Request: <transaction sequence number: 1> <TLVs: varies>Contains one or more TLVs. These TLVs can be Selected KeyNegotiation Method TLVs (10 octets), Fragmentation ParametersGlobal TLVs (5 octets), or other TLVs.See R23 spec section 2.4.3.4.6@note This SHALL NOT be APS encrypted or NWK encrypted if thelink key update mechanism is done as part of the initial joinand before the receiving device has been issued a networkkey. This SHALL be both APS encrypted and NWK encrypted ifthe link key update mechanism is performed to refresh thelink key when the receiving device has the network key andhas previously successfully joined the network.Response: <transaction sequence number: 1> <status:1>See R23 spec section 2.4.4.4.6@note This command SHALL be APS encrypted.
Security Decommission Request / Response#
Request: <transaction sequence number: 1> <security decommission request EUI64 TLV:Variable>Security Decommission request EUI64 TLV: <Count N:1><EUI64 1:8>...<EUI64 N:8>Response: <transaction sequence number: 1> <status:1>
Challenge for APS frame counter synchronization#
Request: <transaction sequence number: 1> <TLVs: varies>Contains at least the APS Frame Counter Challenge TLV, which holds thesender EUI and the 64 bit challenge value.Response: <transaction sequence number: 1> <TLVs: varies>Contains at least the APS Frame Counter Response TLV, which holds thesender EUI, received challenge value, APS frame counter, challengesecurity frame counter, and 8-byte MIC.
Unsupported#
Not mandatory and not supported.
Discovery Cache Request / Response#
DEPRECATED Request: <transaction sequence number: 1> <source node ID:2> <source EUI64:8>Response: <transaction sequence number: 1> <status (== EMBER_ZDP_SUCCESS):1>
ZDO configuration flags.#
Control which ZDO requests are passed to the application. These are normally controlled via the following configuration definitions:EMBER_APPLICATION_RECEIVES_SUPPORTED_ZDO_REQUESTS EMBER_APPLICATION_HANDLES_UNSUPPORTED_ZDO_REQUESTS EMBER_APPLICATION_HANDLES_ENDPOINT_ZDO_REQUESTS EMBER_APPLICATION_HANDLES_BINDING_ZDO_REQUESTSSee ember-configuration.h for more information.
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Defines the maximum number of PHYs supported.
PHY index for 2.4 GHz radio interface, valid for simultaneous multi radio network.
PHY index for Sub-GHz radio interface, valid for simultaneous multi radio network.
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Defines the entropy source used by the stack.
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Defines the trust center APS encryption mode when sending a newer (alternate) network key to a device. The value settings below do not take effect when sending the initial network key during joining or rejoining.
Radio power mode.
ZDO response status.#
Most responses to ZDO commands contain a status byte. The meaning of this byte is defined by the ZigBee Device Profile.
ZDO server mask bits#
These are used in server discovery requests and responses.
Macros#
Returns true if nodeId (short address) is a broadcast address.
Enumerations#
Defines the possible types of nodes and the roles that a node might play in a network.
The configuration advertised by the end device to the parent when joining/rejoining.
Defines the options that should be used when initializing the node's network configuration.
Options to allow/disallow rejoins using the default link key.
Options to use when sending a message.
Defines the possible incoming message types.
Defines the possible outgoing message types.
A type of command received by the stack.
indication of the action taken on a packet
A type of packet received by the stack.
Defines the possible join states for a node.
Type for a network scan.
Defines binding types.
Type of Ember keep alive method defining the keep alive message type that a parent accepts to prevent child aging. This is configured in a parent router and communicated and stored in an end-device.
Types of source route discovery modes used by the concentrator.
Packet transmit priorities in terms of getting into the MAC queue.
Policies for sending a route record to the concentrator.
Passive ack config enum.
Typedefs#
represents a single entry in the APS duplicate rejection table
Miscellaneous Ember Types Documentation#
EMBER_RELEASE_TYPE_TO_STRING_STRUCT_DATA#
#define EMBER_RELEASE_TYPE_TO_STRING_STRUCT_DATAValue:
EmberReleaseTypeStruct Data that relates release type to the correct string.
88
of file stack/include/ember-types.h
EUI64_SIZE#
#define EUI64_SIZEValue:
8
Size of EUI64 (an IEEE address) in bytes (8).
136
of file stack/include/ember-types.h
EXTENDED_PAN_ID_SIZE#
#define EXTENDED_PAN_ID_SIZEValue:
8
Size of an extended PAN identifier in bytes (8).
141
of file stack/include/ember-types.h
EMBER_ENCRYPTION_KEY_SIZE#
#define EMBER_ENCRYPTION_KEY_SIZEValue:
16
Size of an encryption key in bytes (16).
146
of file stack/include/ember-types.h
EMBER_CERTIFICATE_SIZE#
#define EMBER_CERTIFICATE_SIZEValue:
48
Size of Implicit Certificates used for Certificate-based Key Exchange(CBKE).
152
of file stack/include/ember-types.h
EMBER_PUBLIC_KEY_SIZE#
#define EMBER_PUBLIC_KEY_SIZEValue:
22
Size of Public Keys used in Elliptical Cryptography ECMQV algorithms.
157
of file stack/include/ember-types.h
EMBER_PRIVATE_KEY_SIZE#
#define EMBER_PRIVATE_KEY_SIZEValue:
21
Size of Private Keys used in Elliptical Cryptography ECMQV algorithms.
162
of file stack/include/ember-types.h
EMBER_SMAC_SIZE#
#define EMBER_SMAC_SIZEValue:
16
Size of the SMAC used in Elliptical Cryptography ECMQV algorithms.
167
of file stack/include/ember-types.h
EMBER_SIGNATURE_SIZE#
#define EMBER_SIGNATURE_SIZEValue:
42
Size of the DSA signature used in Elliptical Cryptography Digital Signature Algorithms.
173
of file stack/include/ember-types.h
EMBER_AES_HASH_BLOCK_SIZE#
#define EMBER_AES_HASH_BLOCK_SIZEValue:
16
The size of AES-128 MMO hash is 16-bytes. This is defined in the core. ZigBee specification.
178
of file stack/include/ember-types.h
EMBER_CERTIFICATE_283K1_SIZE#
#define EMBER_CERTIFICATE_283K1_SIZEValue:
74
Size of Implicit Certificates used for Certificate Based Key Exchange using the ECC283K1 curve in bytes.
184
of file stack/include/ember-types.h
EMBER_PUBLIC_KEY_283K1_SIZE#
#define EMBER_PUBLIC_KEY_283K1_SIZEValue:
37
Size of Public Keys used in SECT283k1 Elliptical Cryptography ECMQV algorithms.
189
of file stack/include/ember-types.h
EMBER_PRIVATE_KEY_283K1_SIZE#
#define EMBER_PRIVATE_KEY_283K1_SIZEValue:
36
Size of Private Keys used SECT283k1 in Elliptical Cryptography ECMQV algorithms.
194
of file stack/include/ember-types.h
EMBER_SIGNATURE_283K1_SIZE#
#define EMBER_SIGNATURE_283K1_SIZEValue:
72
Size of the DSA signature used in SECT283k1 Elliptical Cryptography Digital Signature Algorithms.
200
of file stack/include/ember-types.h
__EMBERSTATUS_TYPE__#
#define __EMBERSTATUS_TYPE__
Return type for Ember functions.
206
of file stack/include/ember-types.h
NULL_BUFFER#
#define NULL_BUFFERValue:
0x0000u
EUI 64-bit ID (an IEEE address).
Incoming and outgoing messages are stored in buffers. These buffers are allocated and freed as needed.
Buffers are 32 bytes in length and can be linked together to hold longer messages.
See packet-buffer.h for APIs related to stack and linked buffers.
232
of file stack/include/ember-types.h
EMBER_MAX_802_15_4_CHANNEL_NUMBER#
#define EMBER_MAX_802_15_4_CHANNEL_NUMBERValue:
26
The maximum 802.15.4 channel number is 26.
258
of file stack/include/ember-types.h
EMBER_MIN_802_15_4_CHANNEL_NUMBER#
#define EMBER_MIN_802_15_4_CHANNEL_NUMBERValue:
11
The minimum 2.4GHz 802.15.4 channel number is 11.
263
of file stack/include/ember-types.h
EMBER_MIN_SUBGHZ_CHANNEL_NUMBER#
#define EMBER_MIN_SUBGHZ_CHANNEL_NUMBERValue:
0
The minimum SubGhz channel number is 0.
268
of file stack/include/ember-types.h
EMBER_ACTIVE_SCAN_DURATION#
#define EMBER_ACTIVE_SCAN_DURATIONValue:
3
ZigBee protocol specifies that active scans have a duration of 3 (138 msec). See documentation for emberStartScan in include/network-formation.h for more info on duration values.
275
of file stack/include/ember-types.h
EMBER_SUB_GHZ_SCAN_DURATION#
#define EMBER_SUB_GHZ_SCAN_DURATIONValue:
5
The SubGhz scan duration is 5.
280
of file stack/include/ember-types.h
EMBER_NUM_802_15_4_CHANNELS#
#define EMBER_NUM_802_15_4_CHANNELSValue:
(EMBER_MAX_802_15_4_CHANNEL_NUMBER - EMBER_MIN_802_15_4_CHANNEL_NUMBER + 1)
There are sixteen 802.15.4 channels.
285
of file stack/include/ember-types.h
EMBER_ALL_802_15_4_CHANNELS_MASK#
#define EMBER_ALL_802_15_4_CHANNELS_MASKValue:
0x07FFF800UL
A bitmask to scan all 2.4 GHz 802.15.4 channels.
291
of file stack/include/ember-types.h
EMBER_MAX_CHANNELS_PER_PAGE#
#define EMBER_MAX_CHANNELS_PER_PAGEValue:
27
The maximum channels per page are 27 page bits 31...27, channel bits 26...0.
297
of file stack/include/ember-types.h
EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_28_30_31#
#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_28_30_31Value:
0x07FFFFFFUL
Sub-GHz channel bitmasks for pages 28, 30, 31.
302
of file stack/include/ember-types.h
EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGES_28_30_31#
#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGES_28_30_31Value:
26
The maximum SubGhz channel number on pages 28, 30, 31 is 26.
307
of file stack/include/ember-types.h
EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_29#
#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_29Value:
0x1FF
SubGhz channel bitmasks for page 29.
311
of file stack/include/ember-types.h
EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGE_29#
#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGE_29Value:
8
The maximum SubGhz channel number on page 29 is 8.
316
of file stack/include/ember-types.h
EMBER_MIN_SUGBHZ_PAGE_NUMBER#
#define EMBER_MIN_SUGBHZ_PAGE_NUMBERValue:
28
The minimum SubGhz page number is 28.
321
of file stack/include/ember-types.h
EMBER_MAX_SUGBHZ_PAGE_NUMBER#
#define EMBER_MAX_SUGBHZ_PAGE_NUMBERValue:
31
The maximum SubGhz page number is 31.
326
of file stack/include/ember-types.h
EMBER_ALL_CHANNEL_PAGE_MASK#
#define EMBER_ALL_CHANNEL_PAGE_MASKValue:
0xF8000000UL
A bitmask for the channel page within a channel mask.
331
of file stack/include/ember-types.h
EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK#
#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASKValue:
A page-channel mask for a given page and channel mask.
336
of file stack/include/ember-types.h
EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_NUMBER#
#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_NUMBERValue:
(page, channel)
A page-channel mask for a given page and channel.
343
of file stack/include/ember-types.h
EMBER_ZIGBEE_COORDINATOR_ADDRESS#
#define EMBER_ZIGBEE_COORDINATOR_ADDRESSValue:
0x0000u
The network ID of the coordinator in a ZigBee network is 0x0000.
349
of file stack/include/ember-types.h
EMBER_NULL_NODE_ID#
#define EMBER_NULL_NODE_IDValue:
0xFFFFu
A distinguished network ID that will never be assigned to any node. It is used to indicate the absence of a node ID.
355
of file stack/include/ember-types.h
EMBER_NO_CHANNEL_PAGE_IN_USE#
#define EMBER_NO_CHANNEL_PAGE_IN_USEValue:
0
The channel page value used to indicate just the 2.4GHz channels.
360
of file stack/include/ember-types.h
EMBER_NULL_EUI64#
#define EMBER_NULL_EUI64Value:
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
A distinguished EUI64 that is commonly used to indicate an invalid EUI64.
365
of file stack/include/ember-types.h
EMBER_NULL_BINDING#
#define EMBER_NULL_BINDINGValue:
0xFFu
A distinguished binding index used to indicate the absence of a binding.
371
of file stack/include/ember-types.h
EMBER_TABLE_ENTRY_UNUSED_NODE_ID#
#define EMBER_TABLE_ENTRY_UNUSED_NODE_IDValue:
0xFFFFu
A distinguished network ID that will never be assigned to any node.
This value is used when setting or getting the remote node ID in the address table or getting the remote node ID from the binding table. It indicates that the address or binding table entry is not in use.
382
of file stack/include/ember-types.h
EMBER_MULTICAST_NODE_ID#
#define EMBER_MULTICAST_NODE_IDValue:
0xFFFEu
A distinguished network ID that will never be assigned to any node. This value is returned when getting the remote node ID from the binding table and the given binding table index refers to a multicast binding entry.
390
of file stack/include/ember-types.h
EMBER_UNKNOWN_NODE_ID#
#define EMBER_UNKNOWN_NODE_IDValue:
0xFFFDu
A distinguished network ID that will never be assigned to any node. This value is used when getting the remote node ID from the address or binding tables. It indicates that the address or binding table entry is currently in use but the node ID corresponding to the EUI64 in the table is currently unknown.
399
of file stack/include/ember-types.h
EMBER_DISCOVERY_ACTIVE_NODE_ID#
#define EMBER_DISCOVERY_ACTIVE_NODE_IDValue:
0xFFFCu
A distinguished network ID that will never be assigned to any node. This value is used when getting the remote node ID from the address or binding tables. It indicates that the address or binding table entry is currently in use and network address discovery is underway.
408
of file stack/include/ember-types.h
EMBER_NULL_ADDRESS_TABLE_INDEX#
#define EMBER_NULL_ADDRESS_TABLE_INDEXValue:
0xFFu
A distinguished address table index used to indicate the absence of an address table entry.
414
of file stack/include/ember-types.h
EMBER_ZDO_ENDPOINT#
#define EMBER_ZDO_ENDPOINTValue:
0u
The endpoint where the ZigBee Device Object (ZDO) resides.
419
of file stack/include/ember-types.h
EMBER_BROADCAST_ENDPOINT#
#define EMBER_BROADCAST_ENDPOINTValue:
0xFFu
The broadcast endpoint, as defined in the ZigBee spec.
424
of file stack/include/ember-types.h
EMBER_GP_ENDPOINT#
#define EMBER_GP_ENDPOINTValue:
0xF2u
The GP endpoint, as defined in the ZigBee spec.
429
of file stack/include/ember-types.h
EMBER_ZDO_PROFILE_ID#
#define EMBER_ZDO_PROFILE_IDValue:
0x0000u
The profile ID used by the ZigBee Device Object (ZDO).
434
of file stack/include/ember-types.h
EMBER_WILDCARD_PROFILE_ID#
#define EMBER_WILDCARD_PROFILE_IDValue:
0xFFFFu
The profile ID used to address all the public profiles.
439
of file stack/include/ember-types.h
EMBER_MAXIMUM_STANDARD_PROFILE_ID#
#define EMBER_MAXIMUM_STANDARD_PROFILE_IDValue:
0x7FFFu
The maximum value for a profile ID in the standard profile range.
444
of file stack/include/ember-types.h
EMBER_BROADCAST_TABLE_TIMEOUT_QS#
#define EMBER_BROADCAST_TABLE_TIMEOUT_QSValue:
(20 * 4)
The broadcast table entry timeout, which specifies, in quarter seconds, how long an entry persists in the local device's broadcast table.
450
of file stack/include/ember-types.h
EMBER_MANUFACTURER_ID#
#define EMBER_MANUFACTURER_IDValue:
0x1002u
Ember's Manufacturer ID.
455
of file stack/include/ember-types.h
EMBER_NULL_NETWORK_INDEX#
#define EMBER_NULL_NETWORK_INDEXValue:
0xFFu
An invalid network index.
460
of file stack/include/ember-types.h
EMBER_DC_LIMIT_USE_DEFAULT#
#define EMBER_DC_LIMIT_USE_DEFAULTValue:
0
Use Ember's default duty cycle limit configurations.
465
of file stack/include/ember-types.h
EmberVersionType#
EmberVersionType
Type of Ember software version.
Enumerator | |
---|---|
EMBER_VERSION_TYPE_PRE_RELEASE | |
EMBER_VERSION_TYPE_ALPHA_1 | |
EMBER_VERSION_TYPE_ALPHA_2 | |
EMBER_VERSION_TYPE_ALPHA_3 | |
EMBER_VERSION_TYPE_BETA_1 | |
EMBER_VERSION_TYPE_BETA_2 | |
EMBER_VERSION_TYPE_BETA_3 | |
EMBER_VERSION_TYPE_GA |
52
of file stack/include/ember-types.h
EmberStackProfile#
EmberStackProfile
EmberReleaseTypeStruct Data that relates release type to the correct string.
Enumerator | |
---|---|
EMBER_STACK_PROFILE_NONE | |
EMBER_STACK_PROFILE_ZIGBEE_PRO |
468
of file stack/include/ember-types.h
EmberSecurityLevel#
EmberSecurityLevel
EmberReleaseTypeStruct Data that relates release type to the correct string.
Enumerator | |
---|---|
EMBER_SECURITY_LEVEL_NONE | |
EMBER_SECURITY_LEVEL_Z3 |
479
of file stack/include/ember-types.h
EmberLeaveRequestFlags#
EmberLeaveRequestFlags
EmberReleaseTypeStruct Data that relates release type to the correct string.
Enumerator | |
---|---|
EMBER_ZIGBEE_LEAVE_AND_REJOIN | Leave and rejoin. |
EMBER_ZIGBEE_LEAVE_WITHOUT_REJOIN | Leave. |
490
of file stack/include/ember-types.h
EmberLeaveReason#
EmberLeaveReason
EmberReleaseTypeStruct Data that relates release type to the correct string.
Enumerator | |
---|---|
EMBER_LEAVE_REASON_NONE | |
EMBER_LEAVE_DUE_TO_NWK_LEAVE_MESSAGE | |
EMBER_LEAVE_DUE_TO_APS_REMOVE_MESSAGE | |
EMBER_LEAVE_DUE_TO_ZDO_LEAVE_MESSAGE | |
EMBER_LEAVE_DUE_TO_ZLL_TOUCHLINK | |
EMBER_LEAVE_DUE_TO_APP_EVENT_1 |
510
of file stack/include/ember-types.h
EmberMulticastId#
typedef uint16_t EmberMulticastId
16-bit ZigBee network address.
16-bit ZigBee multicast group identifier.
240
of file stack/include/ember-types.h
EmberDutyCycleHectoPct#
typedef uint16_t EmberDutyCycleHectoPct
802.15.4 PAN ID.
The percent of duty cycle for a limit.
Duty cycle, limits, and thresholds are reported in units of percent * 100 (i.e., 10000 = 100.00%, 1 = 0.01%).
253
of file stack/include/ember-types.h
emberVersion#
const EmberVersion emberVersion
A structure containing the version information.
114
of file stack/include/ember-types.h
ZigBee Broadcast Addresses Documentation#
EMBER_BROADCAST_ADDRESS#
#define EMBER_BROADCAST_ADDRESSValue:
0xFFFCu
Broadcast to all routers.
540
of file stack/include/ember-types.h
EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS#
#define EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESSValue:
0xFFFDu
Broadcast to all non-sleepy devices.
542
of file stack/include/ember-types.h
EMBER_SLEEPY_BROADCAST_ADDRESS#
#define EMBER_SLEEPY_BROADCAST_ADDRESSValue:
0xFFFFu
Broadcast to all devices, including sleepy end devices.
544
of file stack/include/ember-types.h
Ember Concentrator Types Documentation#
EMBER_LOW_RAM_CONCENTRATOR#
#define EMBER_LOW_RAM_CONCENTRATORValue:
0xFFF8u
A concentrator with insufficient memory to store source routes for the entire network. Route records are sent to the concentrator prior to every inbound APS unicast.
1024
of file stack/include/ember-types.h
EMBER_HIGH_RAM_CONCENTRATOR#
#define EMBER_HIGH_RAM_CONCENTRATORValue:
0xFFF9u
A concentrator with sufficient memory to store source routes for the entire network. Remote nodes stop sending route records once the concentrator has successfully received one.
1029
of file stack/include/ember-types.h
EMBER_JOIN_DECISION_STRINGS#
#define EMBER_JOIN_DECISION_STRINGSValue:
@ brief Defines the CLI enumerations for the EmberJoinDecision enum.
1083
of file stack/include/ember-types.h
EMBER_DEVICE_UPDATE_STRINGS#
#define EMBER_DEVICE_UPDATE_STRINGSValue:
@ brief Defines the CLI enumerations for the EmberDeviceUpdate enum.
1113
of file stack/include/ember-types.h
emberInitializeNetworkParameters#
#define emberInitializeNetworkParametersValue:
(parameters)
A concentrator with insufficient memory to store source routes for the entire network. Route records are sent to the concentrator prior to every inbound APS unicast.
1299
of file stack/include/ember-types.h
EMBER_COUNTER_STRINGS#
#define EMBER_COUNTER_STRINGS
@ brief Defines the CLI enumerations for the EmberCounterType enum.
1645
of file stack/include/ember-types.h
EmberAssumeTrustCenterConcentratorType#
EmberAssumeTrustCenterConcentratorType
To configure non trust center node to assume a concentrator type of the trust center it join to, until it receive many-to-one route request from the trust center. For the trust center node, concentrator type is configured from the concentrator plugin. The stack by default assumes trust center be a low RAM concentrator that make other devices send route record to the trust center even without receiving a many-to-one route request. The assumed concentrator type can be changed by setting appropriate value to emberAssumedTrustCenterConcentratorType.
Enumerator | |
---|---|
EMBER_ASSUME_TRUST_CENTER_IS_NOT_A_CONCENTRATOR | To assume trust center is not a concentrator. |
EMBER_ASSUME_TRUST_CENTER_IS_LOW_RAM_CONCENTRATOR | To assume trust center is a low RAM concentrator. |
EMBER_ASSUME_TRUST_CENTER_IS_HIGH_RAM_CONCENTRATOR | To assume trust center is a high RAM concentrator. |
1044
of file stack/include/ember-types.h
EmberJoinDecision#
EmberJoinDecision
The decision made by the Trust Center when a node attempts to join.
Enumerator | |
---|---|
EMBER_USE_PRECONFIGURED_KEY | Allow the node to join. The node has the key. |
EMBER_SEND_KEY_IN_THE_CLEAR | Allow the node to join. Send the key to the node. |
EMBER_DENY_JOIN | Deny join. |
EMBER_NO_ACTION | Take no action. |
EMBER_ALLOW_REJOINS_ONLY | Allow rejoins only. |
1062
of file stack/include/ember-types.h
EmberDeviceUpdate#
EmberDeviceUpdate
The Status of the Update Device message sent to the Trust Center. The device may have joined or rejoined insecurely, rejoined securely, or left. MAC Security has been deprecated and therefore there is no secure join.
Enumerator | |
---|---|
EMBER_STANDARD_SECURITY_SECURED_REJOIN | |
EMBER_STANDARD_SECURITY_UNSECURED_JOIN | |
EMBER_DEVICE_LEFT | |
EMBER_STANDARD_SECURITY_UNSECURED_REJOIN |
1098
of file stack/include/ember-types.h
EmberRejoinReason#
EmberRejoinReason
Notes the last rejoin reason.
Enumerator | |
---|---|
EMBER_REJOIN_REASON_NONE | |
EMBER_REJOIN_DUE_TO_NWK_KEY_UPDATE | |
EMBER_REJOIN_DUE_TO_LEAVE_MESSAGE | |
EMBER_REJOIN_DUE_TO_NO_PARENT | |
EMBER_REJOIN_DUE_TO_ZLL_TOUCHLINK | |
EMBER_REJOIN_DUE_TO_END_DEVICE_REBOOT | |
EMBER_REJOIN_DUE_TO_APP_EVENT_5 | |
EMBER_REJOIN_DUE_TO_APP_EVENT_4 | |
EMBER_REJOIN_DUE_TO_APP_EVENT_3 | |
EMBER_REJOIN_DUE_TO_APP_EVENT_2 | |
EMBER_REJOIN_DUE_TO_APP_EVENT_1 |
1123
of file stack/include/ember-types.h
EmberClusterListId#
EmberClusterListId
Defines the lists of clusters that must be provided for each endpoint.
Enumerator | |
---|---|
EMBER_INPUT_CLUSTER_LIST | Input clusters the endpoint will accept. |
EMBER_OUTPUT_CLUSTER_LIST | Output clusters the endpoint can send. |
1154
of file stack/include/ember-types.h
EmberEventUnits#
EmberEventUnits
Either marks an event as inactive or specifies the units for the event execution time.
Enumerator | |
---|---|
EMBER_EVENT_INACTIVE | The event is not scheduled to run. |
EMBER_EVENT_MS_TIME | The execution time is in approximate milliseconds. |
EMBER_EVENT_QS_TIME | The execution time is in 'binary' quarter seconds (256 approximate milliseconds each). |
EMBER_EVENT_MINUTE_TIME | The execution time is in 'binary' minutes (65536 approximate milliseconds each). |
EMBER_EVENT_ZERO_DELAY | The event is scheduled to run at the earliest opportunity. |
1171
of file stack/include/ember-types.h
EmberJoinMethod#
EmberJoinMethod
The type of method used for joining.
Enumerator | |
---|---|
EMBER_USE_MAC_ASSOCIATION | Devices normally use MAC association to join a network, which respects the "permit joining" flag in the MAC beacon. This value should be used by default. |
EMBER_USE_NWK_REJOIN | For networks where the "permit joining" flag is never turned on, devices will need to use a ZigBee NWK Rejoin. This value causes the rejoin to be sent withOUT NWK security and the Trust Center will be asked to send the NWK key to the device. The NWK key sent to the device can be encrypted with the device's corresponding Trust Center link key. That is determined by the EmberJoinDecision on the Trust Center returned by the emberTrustCenterJoinHandler(). |
EMBER_USE_NWK_REJOIN_HAVE_NWK_KEY | |
EMBER_USE_CONFIGURED_NWK_STATE | For networks where all network and security information is known ahead of time, a router device may be commissioned such that it does not need to send any messages to begin communicating on the network. |
EMBER_USE_NWK_COMMISSIONING_JOIN | This enumeration causes an unencrypted Network Commissioning Request to be sent out with joinType set to initial join. The trust center may respond by establishing a new dynamic link key and then sending the network key. Network Commissioning Requests should only be sent to parents that support processing of the command. |
EMBER_USE_NWK_COMMISSIONING_REJOIN | This enumeration causes an unencrypted Network Commissioning Request to be sent out with joinType set to rejoin. The trust center may respond by establishing a new dynamic link key and then sending the network key. Network Commissioning Requests should only be sent to parents that support processing of the command. |
EMBER_USE_NWK_COMMISSIONING_REJOIN_HAVE_NWK_KEY | This enumeration causes an encrypted Network Commissioning Request to be sent out with joinType set to rejoin. This enumeration is used by devices that already have the network key and wish to recover connection to a parent or the network in general. Network Commissioning Requests should only be sent to parents that support processing of the command. |
1195
of file stack/include/ember-types.h
EmberCounterType#
EmberCounterType
Defines the events reported to the application by the emberCounterHandler().
Enumerator | |
---|---|
EMBER_COUNTER_MAC_RX_BROADCAST | The MAC received a broadcast. |
EMBER_COUNTER_MAC_TX_BROADCAST | The MAC transmitted a broadcast. |
EMBER_COUNTER_MAC_RX_UNICAST | The MAC received a unicast. |
EMBER_COUNTER_MAC_TX_UNICAST_SUCCESS | The MAC successfully transmitted a unicast. |
EMBER_COUNTER_MAC_TX_UNICAST_RETRY | The MAC retried a unicast. This is a placeholder and is not used by the emberCounterHandler() callback. Instead, the number of MAC retries are returned in the data parameter of the callback for the |
EMBER_COUNTER_MAC_TX_UNICAST_FAILED | The MAC unsuccessfully transmitted a unicast. |
EMBER_COUNTER_APS_DATA_RX_BROADCAST | The APS layer received a data broadcast. |
EMBER_COUNTER_APS_DATA_TX_BROADCAST | The APS layer transmitted a data broadcast. |
EMBER_COUNTER_APS_DATA_RX_UNICAST | The APS layer received a data unicast. |
EMBER_COUNTER_APS_DATA_TX_UNICAST_SUCCESS | The APS layer successfully transmitted a data unicast. |
EMBER_COUNTER_APS_DATA_TX_UNICAST_RETRY | The APS layer retried a data unicast. This is a placeholder and is not used by the |
EMBER_COUNTER_APS_DATA_TX_UNICAST_FAILED | The APS layer unsuccessfully transmitted a data unicast. |
EMBER_COUNTER_ROUTE_DISCOVERY_INITIATED | The network layer successfully submitted a new route discovery to the MAC. |
EMBER_COUNTER_NEIGHBOR_ADDED | An entry was added to the neighbor table. |
EMBER_COUNTER_NEIGHBOR_REMOVED | An entry was removed from the neighbor table. |
EMBER_COUNTER_NEIGHBOR_STALE | A neighbor table entry became stale because it had not been heard from. |
EMBER_COUNTER_JOIN_INDICATION | A node joined or rejoined to the network via this node. |
EMBER_COUNTER_CHILD_REMOVED | An entry was removed from the child table. |
EMBER_COUNTER_ASH_OVERFLOW_ERROR | EZSP-UART only. An overflow error occurred in the UART. |
EMBER_COUNTER_ASH_FRAMING_ERROR | EZSP-UART only. A framing error occurred in the UART. |
EMBER_COUNTER_ASH_OVERRUN_ERROR | EZSP-UART only. An overrun error occurred in the UART. |
EMBER_COUNTER_NWK_FRAME_COUNTER_FAILURE | A message was dropped at the Network layer because the NWK frame counter was not higher than the last message seen from that source. |
EMBER_COUNTER_APS_FRAME_COUNTER_FAILURE | A message was dropped at the APS layer because the APS frame counter was not higher than the last message seen from that source. |
EMBER_COUNTER_ASH_XOFF | EZSP-UART only. An XOFF was transmitted by the UART. |
EMBER_COUNTER_APS_LINK_KEY_NOT_AUTHORIZED | An encrypted message was dropped by the APS layer because the sender's key has not been authenticated. As a result, the key is not authorized for use in APS data messages. |
EMBER_COUNTER_NWK_DECRYPTION_FAILURE | A NWK encrypted message was received but dropped because decryption failed. |
EMBER_COUNTER_APS_DECRYPTION_FAILURE | An APS encrypted message was received but dropped because decryption failed. |
EMBER_COUNTER_ALLOCATE_PACKET_BUFFER_FAILURE | The number of failures to allocate a set of linked packet buffers. This doesn't necessarily mean that the packet buffer count was 0 at the time, but that the number requested was greater than the number free. |
EMBER_COUNTER_RELAYED_UNICAST | The number of relayed unicast packets. |
EMBER_COUNTER_PHY_TO_MAC_QUEUE_LIMIT_REACHED | The number of times a packet was dropped due to reaching the preset PHY-to-MAC queue limit (sli_mac_phy_to_mac_queue_length). The limit will determine how many messages are accepted by the PHY between calls to emberTick(). After that limit is reached, packets will be dropped. The number of dropped packets will be recorded in this counter. NOTE: For each call to emberCounterHandler() there may be more than 1 packet that was dropped due to the limit reached. The actual number of packets dropped will be returned in the 'data' parameter passed to that function. |
EMBER_COUNTER_PACKET_VALIDATE_LIBRARY_DROPPED_COUNT | The number of times a packet was dropped due to the packet-validate library checking a packet and rejecting it due to length or other formatting problems. |
EMBER_COUNTER_TYPE_NWK_RETRY_OVERFLOW | The number of times the NWK retry queue is full and a new message failed to be added. |
EMBER_COUNTER_PHY_CCA_FAIL_COUNT | The number of times the PHY layer was unable to transmit due to a failed CCA. |
EMBER_COUNTER_BROADCAST_TABLE_FULL | The number of times a NWK broadcast was dropped because the broadcast table was full. |
EMBER_COUNTER_PTA_LO_PRI_REQUESTED | The number of times a low-priority packet traffic arbitration request has been made. |
EMBER_COUNTER_PTA_HI_PRI_REQUESTED | The number of times a high-priority packet traffic arbitration request has been made. |
EMBER_COUNTER_PTA_LO_PRI_DENIED | The number of times a low-priority packet traffic arbitration request has been denied. |
EMBER_COUNTER_PTA_HI_PRI_DENIED | The number of times a high-priority packet traffic arbitration request has been denied. |
EMBER_COUNTER_PTA_LO_PRI_TX_ABORTED | The number of times a low-priority packet traffic arbitration transmission has been aborted. |
EMBER_COUNTER_PTA_HI_PRI_TX_ABORTED | The number of times a high-priority packet traffic arbitration transmission has been aborted. |
EMBER_COUNTER_ADDRESS_CONFLICT_SENT | The number of times an address conflict has caused node_id change, and an address conflict error is sent |
EMBER_COUNTER_TYPE_COUNT | A placeholder giving the number of Ember counter types. |
1461
of file stack/include/ember-types.h
EmberTaskId#
typedef uint8_t EmberTaskId
brief An identifier for a task.
1701
of file stack/include/ember-types.h
txPowerModes for emberSetTxPowerMode and mfglibSetPower Documentation#
EMBER_TX_POWER_MODE_DEFAULT#
#define EMBER_TX_POWER_MODE_DEFAULTValue:
0x0000
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to disable all power mode options, resulting in normal power mode and bi-directional RF transmitter output.
1759
of file stack/include/ember-types.h
EMBER_TX_POWER_MODE_BOOST#
#define EMBER_TX_POWER_MODE_BOOSTValue:
0x0001
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable boost power mode.
1763
of file stack/include/ember-types.h
EMBER_TX_POWER_MODE_ALTERNATE#
#define EMBER_TX_POWER_MODE_ALTERNATEValue:
0x0002
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable the alternate transmitter output.
1768
of file stack/include/ember-types.h
EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATE#
#define EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATEValue:
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable both boost mode and the alternate transmitter output.
1773
of file stack/include/ember-types.h
Counters Request Definitions Documentation#
EMBER_PRIVATE_PROFILE_ID#
#define EMBER_PRIVATE_PROFILE_IDValue:
0xC00Eu
This is a ZigBee application profile ID that has been assigned to Ember Corporation.
It is used to send for sending messages that have a specific, non-standard, interaction with the Ember stack. Its only current use is for stack counters requests.
1797
of file stack/include/ember-types.h
EMBER_PRIVATE_PROFILE_ID_START#
#define EMBER_PRIVATE_PROFILE_ID_STARTValue:
0xC00Du
Ember's first private profile ID.
1802
of file stack/include/ember-types.h
EMBER_PRIVATE_PROFILE_ID_END#
#define EMBER_PRIVATE_PROFILE_ID_ENDValue:
0xC016u
Ember's last private profile ID.
1807
of file stack/include/ember-types.h
EMBER_REPORT_COUNTERS_REQUEST#
#define EMBER_REPORT_COUNTERS_REQUESTValue:
0x0003u
The cluster ID used to request that a node respond with a report of its Ember stack counters. See app/util/counters/counters-ota.h.
1812
of file stack/include/ember-types.h
EMBER_REPORT_COUNTERS_RESPONSE#
#define EMBER_REPORT_COUNTERS_RESPONSEValue:
0x8003u
The cluster ID used to respond to an EMBER_REPORT_COUNTERS_REQUEST.
1815
of file stack/include/ember-types.h
EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST#
#define EMBER_REPORT_AND_CLEAR_COUNTERS_REQUESTValue:
0x0004u
The cluster ID used to request that a node respond with a report of its Ember stack counters. The node will also reset its clusters to zero after a successful response. See app/util/counters/counters-ota.h.
1821
of file stack/include/ember-types.h
EMBER_REPORT_AND_CLEAR_COUNTERS_RESPONSE#
#define EMBER_REPORT_AND_CLEAR_COUNTERS_RESPONSEValue:
0x8004u
The cluster ID used to respond to an EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST.
1824
of file stack/include/ember-types.h
EMBER_OTA_CERTIFICATE_UPGRADE_CLUSTER#
#define EMBER_OTA_CERTIFICATE_UPGRADE_CLUSTERValue:
0x0005u
The cluster ID used to send and receive over the air certificate messages. This is used to field upgrade devices with Smart Energy Certificates and other security data.
1830
of file stack/include/ember-types.h
EMBER_STANDARD_SECURITY_MODE#
#define EMBER_STANDARD_SECURITY_MODEValue:
0x0000
This is an EmberInitialSecurityBitmask value but it does not actually set anything. It is the default mode used by the ZigBee Pro stack. It is defined here so that no legacy code is broken by referencing it.
1918
of file stack/include/ember-types.h
EMBER_TRUST_CENTER_NODE_ID#
#define EMBER_TRUST_CENTER_NODE_IDValue:
0x0000u
The short address of the trust center. This address never changes dynamically.
1923
of file stack/include/ember-types.h
EMBER_TC_SUPPORTS_FC_SYNC#
#define EMBER_TC_SUPPORTS_FC_SYNCValue:
0x00800000UL
This denotes that the device can require a resync of the APS frame counter.
2083
of file stack/include/ember-types.h
EMBER_NO_TRUST_CENTER_MODE#
#define EMBER_NO_TRUST_CENTER_MODEValue:
EMBER_DISTRIBUTED_TRUST_CENTER_MODE
This is the legacy name for the Distributed Trust Center Mode.
2087
of file stack/include/ember-types.h
EMBER_GLOBAL_LINK_KEY#
#define EMBER_GLOBAL_LINK_KEYValue:
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY
This is the legacy name for the Trust Center Global Link Key.
2091
of file stack/include/ember-types.h
EMBER_MFG_SECURITY_CONFIG_MAGIC_NUMBER#
#define EMBER_MFG_SECURITY_CONFIG_MAGIC_NUMBERValue:
0xCABAD11FUL
This magic number prevents accidentally changing the key settings. The emberSetMfgSecurityConfig() API will return EMBER_INVALID_CALL unless it is passed in.
2547
of file stack/include/ember-types.h
EmberInitialSecurityBitmask#
EmberInitialSecurityBitmask
This is the Initial Security Bitmask that controls the use of various security features.
Enumerator | |
---|---|
EMBER_DISTRIBUTED_TRUST_CENTER_MODE | Enables Distributed Trust Center Mode for the device forming the network. (Previously known as EMBER_NO_TRUST_CENTER_MODE) |
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY | Enables a Global Link Key for the Trust Center. All nodes will share the same Trust Center Link Key. |
EMBER_PRECONFIGURED_NETWORK_KEY_MODE | Enables devices that perform MAC Association with a pre-configured Network Key to join the network. It is only set on the Trust Center. |
EMBER_HAVE_TRUST_CENTER_EUI64 | This denotes that the EmberInitialSecurityState::preconfiguredTrustCenterEui64 has a value in it containing the trust center EUI64. The device will only join a network and accept commands from a trust center with that EUI64. Normally this bit is NOT set and the EUI64 of the trust center is learned during the join process. When commissioning a device to join onto an existing network that is using a trust center and without sending any messages, this bit must be set and the field EmberInitialSecurityState::preconfiguredTrustCenterEui64 must be populated with the appropriate EUI64. |
EMBER_TRUST_CENTER_USES_HASHED_LINK_KEY | This denotes that the EmberInitialSecurityState::preconfiguredKey is not the actual Link Key but a Root Key known only to the Trust Center. It is hashed with the IEEE Address of the destination device to create the actual Link Key used in encryption. This is bit is only used by the Trust Center. The joining device need not set this. |
EMBER_HAVE_PRECONFIGURED_KEY | This denotes that the EmberInitialSecurityState::preconfiguredKey element has valid data that should be used to configure the initial security state. |
EMBER_HAVE_NETWORK_KEY | This denotes that the EmberInitialSecurityState::networkKey element has valid data that should be used to configure the initial security state. |
EMBER_GET_LINK_KEY_WHEN_JOINING | This denotes to a joining node that it should attempt to acquire a Trust Center Link Key during joining. This is necessary if the device does not have a pre-configured key, or wants to obtain a new one (since it may be using a well-known key during joining). |
EMBER_REQUIRE_ENCRYPTED_KEY | This denotes that a joining device should only accept an encrypted network key from the Trust Center (using its pre-configured key). A key sent in-the-clear by the Trust Center will be rejected and the join will fail. This option is only valid when using a pre-configured key. |
EMBER_NO_FRAME_COUNTER_RESET | This denotes whether the device should NOT reset its outgoing frame counters (both NWK and APS) when emberSetInitialSecurityState() is called. Normally it is advised to reset the frame counter before joining a new network. However, when a device is joining to the same network again (but not using emberRejoinNetwork()), it should keep the NWK and APS frame counters stored in its tokens. NOTE: The application is allowed to dynamically change the behavior via EMBER_EXT_NO_FRAME_COUNTER_RESET field. |
EMBER_GET_PRECONFIGURED_KEY_FROM_INSTALL_CODE | This denotes that the device should obtain its pre-configured key from an installation code stored in the manufacturing token. The token contains a value that will be hashed to obtain the actual pre-configured key. If that token is not valid, the call to emberSetInitialSecurityState() will fail. |
1929
of file stack/include/ember-types.h
EmberExtendedSecurityBitmask#
EmberExtendedSecurityBitmask
This is the Extended Security Bitmask that controls the use of various extended security features.
Enumerator | |
---|---|
EMBER_SECURE_NETWORK_KEY_ROTATION | This denotes that the network key update can only happen if the network key update request is unicast and encrypted i.e. broadcast network key update requests will not be processed if bit 1 is set |
EMBER_JOINER_GLOBAL_LINK_KEY | This denotes whether a joiner node (router or end-device) uses a Global Link Key or a Unique Link Key. |
EMBER_EXT_NO_FRAME_COUNTER_RESET | This denotes whether the device's outgoing frame counter is allowed to be reset during forming or joining. If the flag is set, the outgoing frame counter is not allowed to be reset. If the flag is not set, the frame counter is allowed to be reset. |
EMBER_NWK_LEAVE_WITHOUT_REJOIN_NOT_ALLOWED | This denotes whether a device should discard or accept network leave without rejoin commands. |
EMBER_NWK_LEAVE_REQUEST_NOT_ALLOWED | This denotes whether a router node should discard or accept network Leave Commands. |
2021
of file stack/include/ember-types.h
EmberCurrentSecurityBitmask#
EmberCurrentSecurityBitmask
This is the Current Security Bitmask that details the use of various security features.
Enumerator | |
---|---|
EMBER_STANDARD_SECURITY_MODE_ | This denotes that the device is running in a network with ZigBee Standard Security. |
EMBER_DISTRIBUTED_TRUST_CENTER_MODE_ | This denotes that the device is running in a network without a centralized Trust Center. |
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY_ | This denotes that the device has a Global Link Key. The Trust Center Link Key is the same across multiple nodes. |
EMBER_HAVE_TRUST_CENTER_LINK_KEY | This denotes that the node has a Trust Center Link Key. |
EMBER_TRUST_CENTER_USES_HASHED_LINK_KEY_ | This denotes that the Trust Center is using a Hashed Link Key. |
2149
of file stack/include/ember-types.h
EmberKeyStructBitmask#
EmberKeyStructBitmask
This bitmask describes the presence of fields within the EmberKeyStruct.
Enumerator | |
---|---|
EMBER_KEY_HAS_SEQUENCE_NUMBER | This indicates that the key has a sequence number associated with it. (i.e., a Network Key). |
EMBER_KEY_HAS_OUTGOING_FRAME_COUNTER | This indicates that the key has an outgoing frame counter and the corresponding value within the EmberKeyStruct has been populated. |
EMBER_KEY_HAS_INCOMING_FRAME_COUNTER | This indicates that the key has an incoming frame counter and the corresponding value within the EmberKeyStruct has been populated. |
EMBER_KEY_HAS_PARTNER_EUI64 | This indicates that the key has an associated Partner EUI64 address and the corresponding value within the EmberKeyStruct has been populated. |
EMBER_KEY_IS_AUTHORIZED | This indicates the key is authorized for use in APS data messages. If the key is not authorized for use in APS data messages it has not yet gone through a key agreement protocol, such as CBKE (i.e., ECC). |
EMBER_KEY_PARTNER_IS_SLEEPY | This indicates that the partner associated with the link is a sleepy end device. This bit is set automatically if the local device hears a device announce from the partner indicating it is not an 'RX on when idle' device. |
EMBER_UNCONFIRMED_TRANSIENT_KEY | This indicates that the transient key which is being added is unconfirmed. This bit is set when we add a transient key while the EmberTcLinkKeyRequestPolicy is EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_GENERATE_NEW_KEY |
EMBER_KEY_HAS_PSA_ID | This indicates that the actual key data is stored in PSA, and the respective PSA ID is recorded in the psa_id field. |
EMBER_KEY_HAS_KEY_DATA | This indicates that the keyData field has valid data. On certain parts and depending on the security configuration, keys may live in secure storage and are not exportable. In such cases, keyData will not house the actual key contents. |
EMBER_KEY_IS_AUTHENTICATION_TOKEN | This indicates that the key represents a Device Authentication Token and is not an encryption key. The Authentication token is persisted for the lifetime of the device on the network and used to validate and update the device connection. It is only removed when the device leaves or is decommissioned from the network |
EMBER_DLK_DERIVED_KEY | This indicates that the key has been derived by the Dynamic Link Key feature. |
EMBER_KEY_FC_SYNC_SUPPORTED | This indicates that the device this key is being used to communicate with supports the APS frame counter synchronization procedure. |
2199
of file stack/include/ember-types.h
EmberKeyType#
EmberKeyType
This denotes the type of security key.
Enumerator | |
---|---|
EMBER_TRUST_CENTER_LINK_KEY | This denotes that the key is a Trust Center Link Key. |
EMBER_CURRENT_NETWORK_KEY | This denotes that the key is the Current Network Key. |
EMBER_NEXT_NETWORK_KEY | This denotes that the key is the Next Network Key. |
EMBER_APPLICATION_LINK_KEY | This denotes that the key is an Application Link Key. |
2271
of file stack/include/ember-types.h
EmberKeyStatus#
EmberKeyStatus
This denotes the status of an attempt to establish a key with another device.
Enumerator | |
---|---|
EMBER_KEY_STATUS_NONE | |
EMBER_APP_LINK_KEY_ESTABLISHED | |
EMBER_TRUST_CENTER_LINK_KEY_ESTABLISHED | |
EMBER_KEY_ESTABLISHMENT_TIMEOUT | |
EMBER_KEY_TABLE_FULL | |
EMBER_TC_RESPONDED_TO_KEY_REQUEST | |
EMBER_TC_APP_KEY_SENT_TO_REQUESTER | |
EMBER_TC_RESPONSE_TO_KEY_REQUEST_FAILED | |
EMBER_TC_REQUEST_KEY_TYPE_NOT_SUPPORTED | |
EMBER_TC_NO_LINK_KEY_FOR_REQUESTER | |
EMBER_TC_REQUESTER_EUI64_UNKNOWN | |
EMBER_TC_RECEIVED_FIRST_APP_KEY_REQUEST | |
EMBER_TC_TIMEOUT_WAITING_FOR_SECOND_APP_KEY_REQUEST | |
EMBER_TC_NON_MATCHING_APP_KEY_REQUEST_RECEIVED | |
EMBER_TC_FAILED_TO_SEND_APP_KEYS | |
EMBER_TC_FAILED_TO_STORE_APP_KEY_REQUEST | |
EMBER_TC_REJECTED_APP_KEY_REQUEST | |
EMBER_TC_FAILED_TO_GENERATE_NEW_KEY | |
EMBER_TC_FAILED_TO_SEND_TC_KEY | |
EMBER_TRUST_CENTER_IS_PRE_R21 | |
EMBER_TC_REQUESTER_VERIFY_KEY_TIMEOUT | |
EMBER_TC_REQUESTER_VERIFY_KEY_FAILURE | |
EMBER_TC_REQUESTER_VERIFY_KEY_SUCCESS | |
EMBER_VERIFY_LINK_KEY_FAILURE | |
EMBER_VERIFY_LINK_KEY_SUCCESS |
2323
of file stack/include/ember-types.h
EmberTcLinkKeyRequestPolicy#
EmberTcLinkKeyRequestPolicy
This enumeration determines whether or not a Trust Center answers trust center link key requests.
Enumerator | |
---|---|
EMBER_DENY_TC_LINK_KEY_REQUESTS | |
EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_SEND_CURRENT_KEY | |
EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_GENERATE_NEW_KEY |
2375
of file stack/include/ember-types.h
EmberAppLinkKeyRequestPolicy#
EmberAppLinkKeyRequestPolicy
This enumeration determines whether or not a Trust Center answers app link key requests.
Enumerator | |
---|---|
EMBER_DENY_APP_LINK_KEY_REQUESTS | |
EMBER_ALLOW_APP_LINK_KEY_REQUEST |
2395
of file stack/include/ember-types.h
EmberKeySettings#
EmberKeySettings
This is a ZigBee application profile ID that has been assigned to Ember Corporation.
It is used to send for sending messages that have a specific, non-standard, interaction with the Ember stack. Its only current use is for stack counters requests.
Enumerator | |
---|---|
EMBER_KEY_PERMISSIONS_NONE | |
EMBER_KEY_PERMISSIONS_READING_ALLOWED | |
EMBER_KEY_PERMISSIONS_HASHING_ALLOWED |
2525
of file stack/include/ember-types.h
EmberDutyCycleState#
EmberDutyCycleState
Duty cycle states.
Applications have no control over the state but the callback exposes state changes to the application.
Enumerator | |
---|---|
EMBER_DUTY_CYCLE_TRACKING_OFF | No duty cycle tracking or metrics are taking place. |
EMBER_DUTY_CYCLE_LBT_NORMAL | Duty Cycle is tracked and has not exceeded any thresholds. |
EMBER_DUTY_CYCLE_LBT_LIMITED_THRESHOLD_REACHED | The limited threshold of the total duty cycle allotment was exceeded. |
EMBER_DUTY_CYCLE_LBT_CRITICAL_THRESHOLD_REACHED | The critical threshold of the total duty cycle allotment was exceeded. |
EMBER_DUTY_CYCLE_LBT_SUSPEND_LIMIT_REACHED | The suspend limit was reached and all outbound transmissions are blocked. |
2571
of file stack/include/ember-types.h
EmberMacPassthroughType#
EmberMacPassthroughType
The types of MAC passthrough messages that an application may receive. This is a bitmask.
Enumerator | |
---|---|
EMBER_MAC_PASSTHROUGH_NONE | No MAC passthrough messages. |
EMBER_MAC_PASSTHROUGH_SE_INTERPAN | SE InterPAN messages. |
EMBER_MAC_PASSTHROUGH_EMBERNET | EmberNet and first generation (v1) standalone bootloader messages. |
EMBER_MAC_PASSTHROUGH_EMBERNET_SOURCE | EmberNet messages filtered by their source address. |
EMBER_MAC_PASSTHROUGH_APPLICATION | Application-specific passthrough messages. |
EMBER_MAC_PASSTHROUGH_CUSTOM | Custom inter-pan filter. |
2624
of file stack/include/ember-types.h
emberKeyContents#
uint8_t * emberKeyContents (EmberKeyData * key)
This function allows access to the actual key data bytes of the EmberKeyData structure.
N/A | key | A pointer to an EmberKeyData structure. |
Returns
uint8_t* Returns a pointer to the first byte of the Key data.
2413
of file stack/include/ember-types.h
emberCertificateContents#
uint8_t * emberCertificateContents (EmberCertificateData * cert)
Get access to the actual certificate data bytes of the EmberCertificateData structure.
N/A | cert | A pointer to an EmberCertificateData structure. |
Returns
uint8_t* Returns a pointer to the first byte of the certificate data.
2426
of file stack/include/ember-types.h
emberPublicKeyContents#
uint8_t * emberPublicKeyContents (EmberPublicKeyData * key)
Get access to the actual public key data bytes of the EmberPublicKeyData structure.
N/A | key | A pointer to an EmberPublicKeyData structure. |
Returns
uint8_t* Returns a pointer to the first byte of the public key data.
2439
of file stack/include/ember-types.h
emberPrivateKeyContents#
uint8_t * emberPrivateKeyContents (EmberPrivateKeyData * key)
Get access to the actual private key data bytes of the EmberPrivateKeyData structure.
N/A | key | A pointer to an EmberPrivateKeyData structure. |
Returns
uint8_t* Returns a pointer to the first byte of the private key data.
2452
of file stack/include/ember-types.h
emberSmacContents#
uint8_t * emberSmacContents (EmberSmacData * key)
Get access to the actual SMAC (Secured Message Authentication Code) data of the EmberSmacData structure.
N/A | key |
2462
of file stack/include/ember-types.h
emberSignatureContents#
uint8_t * emberSignatureContents (EmberSignatureData * sig)
Get access to the actual ECDSA signature data of the EmberSignatureData structure.
N/A | sig |
2471
of file stack/include/ember-types.h
emberCertificate283k1Contents#
uint8_t * emberCertificate283k1Contents (EmberCertificate283k1Data * cert)
Get access to the actual certificate data bytes of the Ember283k1CertificateData structure.
N/A | cert | A pointer to an ::Ember283k1CertificateData structure. |
Returns
uint8_t* Returns a pointer to the first byte of the certificate data.
2484
of file stack/include/ember-types.h
emberPublicKey283k1Contents#
uint8_t * emberPublicKey283k1Contents (EmberPublicKey283k1Data * key)
Get access to the actual public key data bytes of the Ember283k1PublicKeyData structure.
N/A | key | A pointer to an Ember283k1PublicKeyData structure. |
Returns
uint8_t* Returns a pointer to the first byte of the public key data.
2497
of file stack/include/ember-types.h
emberPrivateKey283k1Contents#
uint8_t * emberPrivateKey283k1Contents (EmberPrivateKey283k1Data * key)
Get access to the actual private key data bytes of the Ember283k1PrivateKeyData structure.
N/A | key | A pointer to an Ember283k1PrivateKeyData structure. |
Returns
uint8_t* Returns a pointer to the first byte of the private key data.
2510
of file stack/include/ember-types.h
ember283k1SignatureContents#
uint8_t * ember283k1SignatureContents (EmberSignature283k1Data * sig)
Get access to the actual ECDSA signature data of the EmberSignature283k1Data structure.
N/A | sig |
2519
of file stack/include/ember-types.h
Network and IEEE Address Request/Response Documentation#
NETWORK_ADDRESS_REQUEST#
#define NETWORK_ADDRESS_REQUESTValue:
0x0000u
2736
of file stack/include/ember-types.h
NETWORK_ADDRESS_RESPONSE#
#define NETWORK_ADDRESS_RESPONSEValue:
0x8000u
2737
of file stack/include/ember-types.h
IEEE_ADDRESS_REQUEST#
#define IEEE_ADDRESS_REQUESTValue:
0x0001u
2738
of file stack/include/ember-types.h
IEEE_ADDRESS_RESPONSE#
#define IEEE_ADDRESS_RESPONSEValue:
0x8001u
2739
of file stack/include/ember-types.h
Node Descriptor Request/Response Documentation#
NODE_DESCRIPTOR_REQUEST#
#define NODE_DESCRIPTOR_REQUESTValue:
0x0002u
2767
of file stack/include/ember-types.h
NODE_DESCRIPTOR_RESPONSE#
#define NODE_DESCRIPTOR_RESPONSEValue:
0x8002u
2768
of file stack/include/ember-types.h
Power Descriptor Request / Response Documentation#
POWER_DESCRIPTOR_REQUEST#
#define POWER_DESCRIPTOR_REQUESTValue:
0x0003u
2781
of file stack/include/ember-types.h
POWER_DESCRIPTOR_RESPONSE#
#define POWER_DESCRIPTOR_RESPONSEValue:
0x8003u
2782
of file stack/include/ember-types.h
Simple Descriptor Request / Response Documentation#
SIMPLE_DESCRIPTOR_REQUEST#
#define SIMPLE_DESCRIPTOR_REQUESTValue:
0x0004u
2798
of file stack/include/ember-types.h
SIMPLE_DESCRIPTOR_RESPONSE#
#define SIMPLE_DESCRIPTOR_RESPONSEValue:
0x8004u
2799
of file stack/include/ember-types.h
Active Endpoints Request / Response Documentation#
ACTIVE_ENDPOINTS_REQUEST#
#define ACTIVE_ENDPOINTS_REQUESTValue:
0x0005u
2810
of file stack/include/ember-types.h
ACTIVE_ENDPOINTS_RESPONSE#
#define ACTIVE_ENDPOINTS_RESPONSEValue:
0x8005u
2811
of file stack/include/ember-types.h
Match Descriptors Request / Response Documentation#
MATCH_DESCRIPTORS_REQUEST#
#define MATCH_DESCRIPTORS_REQUESTValue:
0x0006u
2825
of file stack/include/ember-types.h
MATCH_DESCRIPTORS_RESPONSE#
#define MATCH_DESCRIPTORS_RESPONSEValue:
0x8006u
2826
of file stack/include/ember-types.h
End Device Announce and End Device Announce Response Documentation#
END_DEVICE_ANNOUNCE#
#define END_DEVICE_ANNOUNCEValue:
0x0013u
2837
of file stack/include/ember-types.h
END_DEVICE_ANNOUNCE_RESPONSE#
#define END_DEVICE_ANNOUNCE_RESPONSEValue:
0x8013u
2838
of file stack/include/ember-types.h
System Server Discovery Request / Response Documentation#
SYSTEM_SERVER_DISCOVERY_REQUEST#
#define SYSTEM_SERVER_DISCOVERY_REQUESTValue:
0x0015u
2852
of file stack/include/ember-types.h
SYSTEM_SERVER_DISCOVERY_RESPONSE#
#define SYSTEM_SERVER_DISCOVERY_RESPONSEValue:
0x8015u
2853
of file stack/include/ember-types.h
Parent Announce and Parent Announce Response Documentation#
PARENT_ANNOUNCE#
#define PARENT_ANNOUNCEValue:
0x001Fu
2868
of file stack/include/ember-types.h
PARENT_ANNOUNCE_RESPONSE#
#define PARENT_ANNOUNCE_RESPONSEValue:
0x801Fu
2869
of file stack/include/ember-types.h
Find Node Cache Request / Response Documentation#
FIND_NODE_CACHE_REQUEST#
#define FIND_NODE_CACHE_REQUESTValue:
0x001Cu
2906
of file stack/include/ember-types.h
FIND_NODE_CACHE_RESPONSE#
#define FIND_NODE_CACHE_RESPONSEValue:
0x801Cu
2907
of file stack/include/ember-types.h
End Device Bind Request / Response Documentation#
END_DEVICE_BIND_REQUEST#
#define END_DEVICE_BIND_REQUESTValue:
0x0020u
2920
of file stack/include/ember-types.h
END_DEVICE_BIND_RESPONSE#
#define END_DEVICE_BIND_RESPONSEValue:
0x8020u
2921
of file stack/include/ember-types.h
Clear All Bindings Request / Response Documentation#
CLEAR_ALL_BINDINGS_REQUEST#
#define CLEAR_ALL_BINDINGS_REQUESTValue:
0x002Bu
2934
of file stack/include/ember-types.h
CLEAR_ALL_BINDINGS_RESPONSE#
#define CLEAR_ALL_BINDINGS_RESPONSEValue:
0x802Bu
2935
of file stack/include/ember-types.h
Binding types and Request / Response Documentation#
UNICAST_BINDING#
#define UNICAST_BINDINGValue:
0x03u
2955
of file stack/include/ember-types.h
UNICAST_MANY_TO_ONE_BINDING#
#define UNICAST_MANY_TO_ONE_BINDINGValue:
0x83u
2956
of file stack/include/ember-types.h
MULTICAST_BINDING#
#define MULTICAST_BINDINGValue:
0x01u
2957
of file stack/include/ember-types.h
BIND_REQUEST#
#define BIND_REQUESTValue:
0x0021u
2959
of file stack/include/ember-types.h
BIND_RESPONSE#
#define BIND_RESPONSEValue:
0x8021u
2960
of file stack/include/ember-types.h
UNBIND_REQUEST#
#define UNBIND_REQUESTValue:
0x0022u
2961
of file stack/include/ember-types.h
UNBIND_RESPONSE#
#define UNBIND_RESPONSEValue:
0x8022u
2962
of file stack/include/ember-types.h
LQI Table Request / Response Documentation#
LQI_TABLE_REQUEST#
#define LQI_TABLE_REQUESTValue:
0x0031u
3012
of file stack/include/ember-types.h
LQI_TABLE_RESPONSE#
#define LQI_TABLE_RESPONSEValue:
0x8031u
3013
of file stack/include/ember-types.h
Routing Table Request / Response Documentation#
ROUTING_TABLE_REQUEST#
#define ROUTING_TABLE_REQUESTValue:
0x0032u
3048
of file stack/include/ember-types.h
ROUTING_TABLE_RESPONSE#
#define ROUTING_TABLE_RESPONSEValue:
0x8032u
3049
of file stack/include/ember-types.h
Binding Table Request / Response Documentation#
BINDING_TABLE_REQUEST#
#define BINDING_TABLE_REQUESTValue:
0x0033u
3070
of file stack/include/ember-types.h
BINDING_TABLE_RESPONSE#
#define BINDING_TABLE_RESPONSEValue:
0x8033u
3071
of file stack/include/ember-types.h
Leave Request / Response Documentation#
LEAVE_REQUEST#
#define LEAVE_REQUESTValue:
0x0034u
3084
of file stack/include/ember-types.h
LEAVE_RESPONSE#
#define LEAVE_RESPONSEValue:
0x8034u
3085
of file stack/include/ember-types.h
LEAVE_REQUEST_REMOVE_CHILDREN_FLAG#
#define LEAVE_REQUEST_REMOVE_CHILDREN_FLAGValue:
0x40u
3087
of file stack/include/ember-types.h
LEAVE_REQUEST_REJOIN_FLAG#
#define LEAVE_REQUEST_REJOIN_FLAGValue:
0x80u
3088
of file stack/include/ember-types.h
Permit Joining Request / Response Documentation#
PERMIT_JOINING_REQUEST#
#define PERMIT_JOINING_REQUESTValue:
0x0036u
3099
of file stack/include/ember-types.h
PERMIT_JOINING_RESPONSE#
#define PERMIT_JOINING_RESPONSEValue:
0x8036u
3100
of file stack/include/ember-types.h
Network Update Request / Response Documentation#
NWK_UPDATE_REQUEST#
#define NWK_UPDATE_REQUESTValue:
0x0038u
3128
of file stack/include/ember-types.h
NWK_UPDATE_RESPONSE#
#define NWK_UPDATE_RESPONSEValue:
0x8038u
3129
of file stack/include/ember-types.h
NWK_UPDATE_ENHANCED_REQUEST#
#define NWK_UPDATE_ENHANCED_REQUESTValue:
0x0039u
3131
of file stack/include/ember-types.h
NWK_UPDATE_ENHANCED_RESPONSE#
#define NWK_UPDATE_ENHANCED_RESPONSEValue:
0x8039u
3132
of file stack/include/ember-types.h
NWK_UPDATE_IEEE_JOINING_LIST_REQUEST#
#define NWK_UPDATE_IEEE_JOINING_LIST_REQUESTValue:
0x003Au
3134
of file stack/include/ember-types.h
NWK_UPDATE_IEEE_JOINING_LIST_REPONSE#
#define NWK_UPDATE_IEEE_JOINING_LIST_REPONSEValue:
0x803Au
3135
of file stack/include/ember-types.h
NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFY#
#define NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFYValue:
0x803Bu
3137
of file stack/include/ember-types.h
Beacon Survey Request / Response Documentation#
BEACON_SURVEY_REQUEST#
#define BEACON_SURVEY_REQUESTValue:
0x003Cu
3173
of file stack/include/ember-types.h
BEACON_SURVEY_RESPONSE#
#define BEACON_SURVEY_RESPONSEValue:
0x803Cu
3174
of file stack/include/ember-types.h
Security Start Key Negotiation Request / Response Documentation#
KEY_NEGOTIATION_REQUEST#
#define KEY_NEGOTIATION_REQUESTValue:
0x0040u
3212
of file stack/include/ember-types.h
KEY_NEGOTIATION_RESPONSE#
#define KEY_NEGOTIATION_RESPONSEValue:
0x8040u
3213
of file stack/include/ember-types.h
Retrieve Authentication Token Request / Response Documentation#
AUTHENTICATION_TOKEN_REQUEST#
#define AUTHENTICATION_TOKEN_REQUESTValue:
0x0041u
3235
of file stack/include/ember-types.h
AUTHENTICATION_TOKEN_RESPONSE#
#define AUTHENTICATION_TOKEN_RESPONSEValue:
0x8041u
3236
of file stack/include/ember-types.h
Retrieve Authentication Level Request / Response Documentation#
AUTHENTICATION_LEVEL_REQUEST#
#define AUTHENTICATION_LEVEL_REQUESTValue:
0x0042u
3260
of file stack/include/ember-types.h
AUTHENTICATION_LEVEL_RESPONSE#
#define AUTHENTICATION_LEVEL_RESPONSEValue:
0x8042u
3261
of file stack/include/ember-types.h
Set Configuration Request / Response Documentation#
SET_CONFIGURATION_REQUEST#
#define SET_CONFIGURATION_REQUESTValue:
0x0043u
3278
of file stack/include/ember-types.h
SET_CONFIGURATION_RESPONSE#
#define SET_CONFIGURATION_RESPONSEValue:
0x8043u
3279
of file stack/include/ember-types.h
Get Configuration Request / Response Documentation#
GET_CONFIGURATION_REQUEST#
#define GET_CONFIGURATION_REQUESTValue:
0x0044u
3299
of file stack/include/ember-types.h
GET_CONFIGURATION_RESPONSE#
#define GET_CONFIGURATION_RESPONSEValue:
0x8044u
3300
of file stack/include/ember-types.h
Security Start Key Update Request / Response Documentation#
KEY_UPDATE_REQUEST#
#define KEY_UPDATE_REQUESTValue:
0x0045u
3329
of file stack/include/ember-types.h
KEY_UPDATE_RESPONSE#
#define KEY_UPDATE_RESPONSEValue:
0x8045u
3330
of file stack/include/ember-types.h
Security Decommission Request / Response Documentation#
SECURITY_DECOMMISSION_REQUEST#
#define SECURITY_DECOMMISSION_REQUESTValue:
0x0046u
3343
of file stack/include/ember-types.h
SECURITY_DECOMMISSION_RESPONSE#
#define SECURITY_DECOMMISSION_RESPONSEValue:
0x8046u
3344
of file stack/include/ember-types.h
Challenge for APS frame counter synchronization Documentation#
SECURITY_CHALLENGE_REQUEST#
#define SECURITY_CHALLENGE_REQUESTValue:
0x0047u
3365
of file stack/include/ember-types.h
SECURITY_CHALLENGE_RESPONSE#
#define SECURITY_CHALLENGE_RESPONSEValue:
0x8047u
3366
of file stack/include/ember-types.h
Unsupported Documentation#
COMPLEX_DESCRIPTOR_REQUEST#
#define COMPLEX_DESCRIPTOR_REQUESTValue:
0x0010u
3372
of file stack/include/ember-types.h
COMPLEX_DESCRIPTOR_RESPONSE#
#define COMPLEX_DESCRIPTOR_RESPONSEValue:
0x8010u
3373
of file stack/include/ember-types.h
USER_DESCRIPTOR_REQUEST#
#define USER_DESCRIPTOR_REQUESTValue:
0x0011u
3374
of file stack/include/ember-types.h
USER_DESCRIPTOR_RESPONSE#
#define USER_DESCRIPTOR_RESPONSEValue:
0x8011u
3375
of file stack/include/ember-types.h
DISCOVERY_REGISTER_REQUEST#
#define DISCOVERY_REGISTER_REQUESTValue:
0x0012u
3376
of file stack/include/ember-types.h
DISCOVERY_REGISTER_RESPONSE#
#define DISCOVERY_REGISTER_RESPONSEValue:
0x8012u
3377
of file stack/include/ember-types.h
USER_DESCRIPTOR_SET#
#define USER_DESCRIPTOR_SETValue:
0x0014u
3378
of file stack/include/ember-types.h
USER_DESCRIPTOR_CONFIRM#
#define USER_DESCRIPTOR_CONFIRMValue:
0x8014u
3379
of file stack/include/ember-types.h
NETWORK_DISCOVERY_REQUEST#
#define NETWORK_DISCOVERY_REQUESTValue:
0x0030u
3380
of file stack/include/ember-types.h
NETWORK_DISCOVERY_RESPONSE#
#define NETWORK_DISCOVERY_RESPONSEValue:
0x8030u
3381
of file stack/include/ember-types.h
DIRECT_JOIN_REQUEST#
#define DIRECT_JOIN_REQUESTValue:
0x0035u
3382
of file stack/include/ember-types.h
DIRECT_JOIN_RESPONSE#
#define DIRECT_JOIN_RESPONSEValue:
0x8035u
3383
of file stack/include/ember-types.h
Discovery Cache Request / Response Documentation#
DISCOVERY_CACHE_REQUEST#
#define DISCOVERY_CACHE_REQUESTValue:
0x0012u
3394
of file stack/include/ember-types.h
DISCOVERY_CACHE_RESPONSE#
#define DISCOVERY_CACHE_RESPONSEValue:
0x8012u
3395
of file stack/include/ember-types.h
ZDO configuration flags. Documentation#
WEAK_TEST#
#define WEAK_TEST
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
3438
of file stack/include/ember-types.h
EMBER_MAX_MAC_ONLY_COUNTERS#
#define EMBER_MAX_MAC_ONLY_COUNTERSValue:
33u
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
3457
of file stack/include/ember-types.h
EMBER_MAX_NUM_PHYS#
#define EMBER_MAX_NUM_PHYSValue:
2u
Defines the maximum number of PHYs supported.
3463
of file stack/include/ember-types.h
PHY_INDEX_NATIVE#
#define PHY_INDEX_NATIVEValue:
0u
PHY index for 2.4 GHz radio interface, valid for simultaneous multi radio network.
3468
of file stack/include/ember-types.h
PHY_INDEX_PRO2PLUS#
#define PHY_INDEX_PRO2PLUSValue:
1u
PHY index for Sub-GHz radio interface, valid for simultaneous multi radio network.
3473
of file stack/include/ember-types.h
EmberZdoConfigurationFlags#
EmberZdoConfigurationFlags
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Enumerator | |
---|---|
EMBER_APP_RECEIVES_SUPPORTED_ZDO_REQUESTS | |
EMBER_APP_HANDLES_UNSUPPORTED_ZDO_REQUESTS | |
EMBER_APP_HANDLES_ZDO_ENDPOINT_REQUESTS | |
EMBER_APP_HANDLES_ZDO_BINDING_REQUESTS |
3414
of file stack/include/ember-types.h
EmberMultiPhyNwkConfig#
EmberMultiPhyNwkConfig
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Enumerator | |
---|---|
EMBER_MULTI_PHY_ROUTERS_ALLOWED | |
EMBER_MULTI_PHY_BROADCASTS_ENABLED | |
EMBER_MULTI_PHY_DISABLED |
3442
of file stack/include/ember-types.h
@0#
@0
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Enumerator | |
---|---|
PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION | |
PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY | |
TC_CONNECTIVITY | |
LONG_UPTIME | |
BAD_PARENT_CONNECTIVITY | |
PREFERRED_PARENT |
3485
of file stack/include/ember-types.h
EmberEntropySource#
EmberEntropySource
Defines the entropy source used by the stack.
Enumerator | |
---|---|
EMBER_ENTROPY_SOURCE_ERROR | |
EMBER_ENTROPY_SOURCE_RADIO | |
EMBER_ENTROPY_SOURCE_MBEDTLS_TRNG | |
EMBER_ENTROPY_SOURCE_MBEDTLS |
3503
of file stack/include/ember-types.h
@1#
@1
Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
Enumerator | |
---|---|
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 |
3515
of file stack/include/ember-types.h
EmberTcApsEncryptMode#
EmberTcApsEncryptMode
Defines the trust center APS encryption mode when sending a newer (alternate) network key to a device. The value settings below do not take effect when sending the initial network key during joining or rejoining.
Enumerator | |
---|---|
TC_APS_ENCRYPT_DEFAULT | Default: don't encrypt broadcasts, encrypt unicasts |
TC_APS_ENCRYPT_ENABLE | Encrypt both broadcasts and unicasts |
TC_APS_ENCRYPT_DISABLE | Do not encrypt broadcasts and unicasts |
3539
of file stack/include/ember-types.h
EmberRadioPowerMode#
typedef uint8_t EmberRadioPowerMode
Radio power mode.
3478
of file stack/include/ember-types.h
ZDO response status. Documentation#
EmberZdoStatus#
EmberZdoStatus
Enumerator | |
---|---|
EMBER_ZDP_SUCCESS | |
EMBER_ZDP_INVALID_REQUEST_TYPE | |
EMBER_ZDP_DEVICE_NOT_FOUND | |
EMBER_ZDP_INVALID_ENDPOINT | |
EMBER_ZDP_NOT_ACTIVE | |
EMBER_ZDP_NOT_SUPPORTED | |
EMBER_ZDP_TIMEOUT | |
EMBER_ZDP_NO_MATCH | |
EMBER_ZDP_NO_ENTRY | |
EMBER_ZDP_NO_DESCRIPTOR | |
EMBER_ZDP_INSUFFICIENT_SPACE | |
EMBER_ZDP_NOT_PERMITTED | |
EMBER_ZDP_TABLE_FULL | |
EMBER_ZDP_NOT_AUTHORIZED | |
EMBER_ZDP_DEVICE_BINDING_TABLE_FULL | |
EMBER_ZDP_INVALID_INDEX | |
EMBER_ZDP_FRAME_TOO_LARGE | |
EMBER_ZDP_BAD_KEY_NEGOTIATION_METHOD | |
EMBER_ZDP_TEMPORARY_FAILURE | |
EMBER_APS_SECURITY_FAIL | |
EMBER_NWK_ALREADY_PRESENT | |
EMBER_NWK_TABLE_FULL | |
EMBER_NWK_UNKNOWN_DEVICE | |
EMBER_NWK_MISSING_TLV | |
EMBER_NWK_INVALID_TLV |
2670
of file stack/include/ember-types.h
ZDO server mask bits Documentation#
EmberZdoServerMask#
EmberZdoServerMask
Enumerator | |
---|---|
EMBER_ZDP_PRIMARY_TRUST_CENTER | |
EMBER_ZDP_SECONDARY_TRUST_CENTER | |
EMBER_ZDP_PRIMARY_BINDING_TABLE_CACHE | |
EMBER_ZDP_SECONDARY_BINDING_TABLE_CACHE | |
EMBER_ZDP_PRIMARY_DISCOVERY_CACHE | |
EMBER_ZDP_SECONDARY_DISCOVERY_CACHE | DEPRECATED |
EMBER_ZDP_NETWORK_MANAGER | DEPRECATED |
2877
of file stack/include/ember-types.h
Macro Definition Documentation#
EMBER_MIN_BROADCAST_ADDRESS#
#define EMBER_MIN_BROADCAST_ADDRESSValue:
0xFFF8u
553
of file stack/include/ember-types.h
emberIsZigbeeBroadcastAddress#
#define emberIsZigbeeBroadcastAddressValue:
(address)
Returns true if nodeId (short address) is a broadcast address.
558
of file stack/include/ember-types.h
CLUSTER_ID_RESPONSE_MINIMUM#
#define CLUSTER_ID_RESPONSE_MINIMUMValue:
0x8000u
3398
of file stack/include/ember-types.h
Enumeration Documentation#
EmberNodeType#
EmberNodeType
Defines the possible types of nodes and the roles that a node might play in a network.
Enumerator | |
---|---|
EMBER_UNKNOWN_DEVICE | The device is not joined. |
EMBER_COORDINATOR | Will relay messages and can act as a parent to other nodes. |
EMBER_ROUTER | Will relay messages and can act as a parent to other nodes. |
EMBER_END_DEVICE | Communicates only with its parent and will not relay messages. |
EMBER_SLEEPY_END_DEVICE | An end device whose radio can be turned off to save power. The application must call emberPollForData() to receive messages. |
EMBER_S2S_INITIATOR_DEVICE | Sleepy end device which transmits with wake up frames (CSL). |
EMBER_S2S_TARGET_DEVICE | Sleepy end device which duty cycles the radio Rx (CSL). |
566
of file stack/include/ember-types.h
EmberEndDeviceConfiguration#
EmberEndDeviceConfiguration
The configuration advertised by the end device to the parent when joining/rejoining.
Enumerator | |
---|---|
EMBER_END_DEVICE_CONFIG_NONE | |
EMBER_END_DEVICE_CONFIG_PERSIST_DATA_ON_PARENT |
594
of file stack/include/ember-types.h
EmberNetworkInitBitmask#
EmberNetworkInitBitmask
Defines the options that should be used when initializing the node's network configuration.
Enumerator | |
---|---|
EMBER_NETWORK_INIT_NO_OPTIONS | |
EMBER_NETWORK_INIT_PARENT_INFO_IN_TOKEN | The Parent Node ID and EUI64 are stored in a token. This prevents the need to perform an Orphan scan on startup. |
EMBER_NETWORK_INIT_END_DEVICE_REJOIN_ON_REBOOT | Z3 compliant end devices on a network must send a rejoin request on reboot. |
621
of file stack/include/ember-types.h
EmberApsRejoinMode#
EmberApsRejoinMode
Options to allow/disallow rejoins using the default link key.
Enumerator | |
---|---|
NO_REJOIN | |
REJOIN_ANY_LINK_KEY | |
REJOIN_NON_DEFAULT_LINK_KEY |
697
of file stack/include/ember-types.h
EmberApsOption#
EmberApsOption
Options to use when sending a message.
The discover-route, APS-retry, and APS-indirect options may be used together. Poll response cannot be combined with any other options.
Enumerator | |
---|---|
EMBER_APS_OPTION_NONE | No options. |
EMBER_APS_OPTION_DSA_SIGN | This signs the application layer message body (APS Frame not included) and appends the ECDSA signature to the end of the message, which is needed by Smart Energy applications and requires the CBKE and ECC libraries. The emberDsaSignHandler() function is called after DSA signing is complete but before the message has been sent by the APS layer. Note that when passing a buffer to the stack for DSA signing, the final byte in the buffer has a special significance as an indicator of how many leading bytes should be ignored for signature purposes. See the API documentation of emberDsaSign() or the dsaSign EZSP command for more details about this requirement. |
EMBER_APS_OPTION_ENCRYPTION | Send the message using APS Encryption using the Link Key shared with the destination node to encrypt the data at the APS Level. |
EMBER_APS_OPTION_RETRY | Resend the message using the APS retry mechanism. This option and the enable route discovery option must be enabled for an existing route to be repaired automatically. |
EMBER_APS_OPTION_ENABLE_ROUTE_DISCOVERY | Send the message with the NWK 'enable route discovery' flag, which causes a route discovery to be initiated if no route to the destination is known. Note that in the mesh stack, this option and the APS retry option must be enabled an existing route to be repaired automatically. |
EMBER_APS_OPTION_FORCE_ROUTE_DISCOVERY | Send the message with the NWK 'force route discovery' flag, which causes a route discovery to be initiated even if one is known. |
EMBER_APS_OPTION_SOURCE_EUI64 | Include the source EUI64 in the network frame. |
EMBER_APS_OPTION_DESTINATION_EUI64 | Include the destination EUI64 in the network frame. |
EMBER_APS_OPTION_ENABLE_ADDRESS_DISCOVERY | Send a ZDO request to discover the node ID of the destination if it is not already known. |
EMBER_APS_OPTION_POLL_RESPONSE | This message is being sent in response to a call to emberPollHandler(). It causes the message to be sent immediately instead of being queued up until the next poll from the (end device) destination. |
EMBER_APS_OPTION_ZDO_RESPONSE_REQUIRED | This incoming message is a valid ZDO request and the application is responsible for sending a ZDO response. This flag is used only within emberIncomingMessageHandler() when EMBER_APPLICATION_RECEIVES_UNSUPPORTED_ZDO_REQUESTS is defined. |
EMBER_APS_OPTION_FRAGMENT | This message is part of a fragmented message. This option may only be set for unicasts. The groupId field gives the index of this fragment in the low-order byte. If the low-order byte is zero this is the first fragment and the high-order byte contains the number of fragments in the message. |
715
of file stack/include/ember-types.h
EmberIncomingMessageType#
EmberIncomingMessageType
Defines the possible incoming message types.
Enumerator | |
---|---|
EMBER_INCOMING_UNICAST | Unicast. |
EMBER_INCOMING_UNICAST_REPLY | Unicast reply. |
EMBER_INCOMING_MULTICAST | Multicast. |
EMBER_INCOMING_MULTICAST_LOOPBACK | Multicast sent by the local device. |
EMBER_INCOMING_BROADCAST | Broadcast. |
EMBER_INCOMING_BROADCAST_LOOPBACK | Broadcast sent by the local device. |
786
of file stack/include/ember-types.h
EmberOutgoingMessageType#
EmberOutgoingMessageType
Defines the possible outgoing message types.
Enumerator | |
---|---|
EMBER_OUTGOING_DIRECT | Unicast sent directly to an EmberNodeId. |
EMBER_OUTGOING_VIA_ADDRESS_TABLE | Unicast sent using an entry in the address table. |
EMBER_OUTGOING_VIA_BINDING | Unicast sent using an entry in the binding table. |
EMBER_OUTGOING_MULTICAST | Multicast message. This value is passed to emberMessageSentHandler() only. It may not be passed to emberSendUnicast(). |
EMBER_OUTGOING_MULTICAST_WITH_ALIAS | An aliased multicast message. This value is passed to emberMessageSentHandler() only. It may not be passed to emberSendUnicast(). |
EMBER_OUTGOING_BROADCAST_WITH_ALIAS | An aliased Broadcast message. This value is passed to emberMessageSentHandler() only. It may not be passed to emberSendUnicast(). |
EMBER_OUTGOING_BROADCAST | A broadcast message. This value is passed to emberMessageSentHandler() only. It may not be passed to emberSendUnicast(). |
810
of file stack/include/ember-types.h
EmberZigbeeCommandType#
EmberZigbeeCommandType
A type of command received by the stack.
This enumeration indicates which protocol layer in the Ember stack an incoming command was meant for, or from which protocol layer an outgoing command is being sent.
Enumerator | |
---|---|
EMBER_ZIGBEE_COMMAND_TYPE_RAW_MAC | Describes an 802.15.4 raw MAC message, unprocessed by the stack. |
EMBER_ZIGBEE_COMMAND_TYPE_MAC_COMMAND | Describes an 802.15.4 MAC layer command. |
EMBER_ZIGBEE_COMMAND_TYPE_NWK | Describes a ZigBee Network layer command. |
EMBER_ZIGBEE_COMMAND_TYPE_APS | Describes a ZigBee Application Support layer command. |
EMBER_ZIGBEE_COMMAND_TYPE_ZDO | Describes a ZigBee Device Object command. |
EMBER_ZIGBEE_COMMAND_TYPE_ZCL | Describes a ZigBee Cluster Library command. |
EMBER_ZIGBEE_COMMAND_TYPE_BEACON | Not a MAC command, but enumerated here for simplicity. |
844
of file stack/include/ember-types.h
EmberPacketAction#
EmberPacketAction
indication of the action taken on a packet
Enumerator | |
---|---|
EMBER_DROP_PACKET | |
EMBER_ACCEPT_PACKET | |
EMBER_MANGLE_PACKET | |
EMBER_ACCEPT_PACKET_OVERRIDE_SECURITY | This action allows unencrypted packets to pass through the stack. We only support this action in the network layer for now. WARNING: Using this packet handler action may have serious security implications |
EMBER_ACCEPT_PACKET_SKIP_NWK_CRYPTO | This action allows unencrypted incoming packets to skip NWK decryption as well as outgoing packets to skip NWK encryption irrespective of the encryption flag in the NWK header. We only support this action in the network layer for now. |
868
of file stack/include/ember-types.h
EmberZigbeePacketType#
EmberZigbeePacketType
A type of packet received by the stack.
This enum provides a way to indicate which protocol layer in the Ember stack an incoming packet is meant for, or from which protocol layer an outgoing command is being sent from.
Enumerator | |
---|---|
EMBER_ZIGBEE_PACKET_TYPE_RAW_MAC | Describes an 802.15.4 raw MAC message, unprocessed by the stack. |
EMBER_ZIGBEE_PACKET_TYPE_MAC_COMMAND | Describes an 802.15.4 MAC layer command. |
EMBER_ZIGBEE_PACKET_TYPE_NWK_DATA | Describes a ZigBee Network layer data message. |
EMBER_ZIGBEE_PACKET_TYPE_NWK_COMMAND | Describes a ZigBee Network layer command. |
EMBER_ZIGBEE_PACKET_TYPE_APS_DATA | Describes a ZigBee Application Support layer data message. |
EMBER_ZIGBEE_PACKET_TYPE_APS_COMMAND | Describes a ZigBee Application Support layer command. |
EMBER_ZIGBEE_PACKET_TYPE_ZDO | Describes a ZigBee Device Object command. |
EMBER_ZIGBEE_PACKET_TYPE_ZCL | Describes a ZigBee Cluster Library command. |
EMBER_ZIGBEE_PACKET_TYPE_BEACON | Distinguishing between raw MAC and beacons for simplicity |
EMBER_ZIGBEE_PACKET_TYPE_INTERPAN | Describes a ZigBee Light Link message. |
EMBER_ZIGBEE_PACKET_TYPE_NWK_DATA_PRE_DECRYPTION | Describes a ZigBee Network layer data message prior to (potential) decryption. |
EMBER_ZIGBEE_PACKET_TYPE_NWK_COMMAND_PRE_DECRYPTION | Describes a ZigBee Network layer command prior to (potential) decryption. |
897
of file stack/include/ember-types.h
EmberNetworkStatus#
EmberNetworkStatus
Defines the possible join states for a node.
Enumerator | |
---|---|
EMBER_NO_NETWORK | The node is not associated with a network in any way. |
EMBER_JOINING_NETWORK | The node is currently attempting to join a network. |
EMBER_JOINED_NETWORK | The node is joined to a network. |
EMBER_JOINED_NETWORK_NO_PARENT | The node is an end device joined to a network but its parent is not responding. |
EMBER_JOINED_NETWORK_S2S_INITIATOR | The node is a Sleepy-to-Sleepy initiator |
EMBER_JOINED_NETWORK_S2S_TARGET | The node is a Sleepy-to-Sleepy target |
EMBER_LEAVING_NETWORK | The node is in the process of leaving its current network. |
933
of file stack/include/ember-types.h
EmberNetworkScanType#
EmberNetworkScanType
Type for a network scan.
Enumerator | |
---|---|
EMBER_ENERGY_SCAN | An energy scan scans each channel for its RSSI value. |
EMBER_ACTIVE_SCAN | An active scan scans each channel for available networks. Use this scan type during network-steering to filter for beacons with available child capacity. The network found callback emberAfNetworkFoundCallback fires for all received beacons, while only beacons matching the capacity criteria and therefore viable for joining are cached |
EMBER_START_RADIO_OFF_SCAN | A fake scan that is used to turn off the radio. |
EMBER_STACK_GP_CHANNEL_DELIVERY_SCAN | A green power channel delivery scan. |
EMBER_ACTIVE_SCAN_ROUTER | An active scan scans each channel for available networks. Use this scan type during network-steering to filter for and cache beacons with available router capacity - Note that this scan type temporarily sets nodeType to EMBER_ROUTER for the duration of the scan process. The network found callback emberAfNetworkFoundCallback fires for all received beacons, while only beacons matching the capacity criteria and therefore viable for joining are cached |
EMBER_LAST_SCAN_TYPE |
968
of file stack/include/ember-types.h
EmberBindingType#
EmberBindingType
Defines binding types.
Enumerator | |
---|---|
EMBER_UNUSED_BINDING | A binding that is currently not in use. |
EMBER_UNICAST_BINDING | A unicast binding whose 64-bit identifier is the destination EUI64. |
EMBER_MANY_TO_ONE_BINDING | A unicast binding whose 64-bit identifier is the many-to-one destination EUI64. Route discovery should be disabled when sending unicasts via many-to-one bindings. |
EMBER_MULTICAST_BINDING | A multicast binding whose 64-bit identifier is the group address. This binding can be used to send messages to the group and to receive messages sent to the group. |
996
of file stack/include/ember-types.h
EmberKeepAliveMode#
EmberKeepAliveMode
Type of Ember keep alive method defining the keep alive message type that a parent accepts to prevent child aging. This is configured in a parent router and communicated and stored in an end-device.
EMBER_KEEP_ALIVE_SUPPORT_UNKNOWN which is initialized at end-device boot time, means parent's keep alive mechanism is unknown to end-device.
EMBER_MAC_DATA_POLL_KEEP_ALIVE means that the parent does not need explicit keep alive messages and will use incoming mac data polls as a sign that a child should not be aged out.
EMBER_END_DEVICE_TIMEOUT_KEEP_ALIVE means that the parent needs explicit keep alive messages (net work timeout requests) to keep the child in its child table.
EMBER_KEEP_ALIVE_SUPPORT_ALL basically maps to EMBER_MAC_DATA_POLL_KEEP_ALIVE as the preferred approach between the two.
Enumerator | |
---|---|
EMBER_KEEP_ALIVE_SUPPORT_UNKNOWN | |
EMBER_MAC_DATA_POLL_KEEP_ALIVE | |
EMBER_END_DEVICE_TIMEOUT_KEEP_ALIVE | |
EMBER_KEEP_ALIVE_SUPPORT_ALL |
3600
of file stack/include/ember-types.h
EmberSourceRouteDiscoveryMode#
EmberSourceRouteDiscoveryMode
Types of source route discovery modes used by the concentrator.
EMBER_SOURCE_ROUTE_DISCOVERY_OFF no source route discovery is scheduled EMBER_SOURCE_ROUTE_DISCOVERY_ON source routes discovery is scheduled, and it is triggered periodically EMBER_SOURCE_ROUTE_DISCOVERY_RESCHEDULE source routes discoveries are re-scheduled to be sent once immediately and then triggered periodically
Enumerator | |
---|---|
EMBER_SOURCE_ROUTE_DISCOVERY_OFF | off |
EMBER_SOURCE_ROUTE_DISCOVERY_ON | on |
EMBER_SOURCE_ROUTE_DISCOVERY_RESCHEDULE | reschedule |
3621
of file stack/include/ember-types.h
EmberTransmitPriority#
EmberTransmitPriority
Packet transmit priorities in terms of getting into the MAC queue.
EMBER_MAC_TRANSMIT_PRIORITY_HIGH High priority headers go on the front of the queue. EMBER_MAC_TRANSMIT_PRIORITY_NORMAL Normal priority headers go on the back of the queue. EMBER_MAC_TRANSMIT_PRIORITY_SCAN_OKAY Normally, only beacon requests and orphan notifications can be sent during a scan. They are submitted with SCAN_OKAY and go on the front of the queue. Other packets could be submitted with this priority, but it is not recommended.
Enumerator | |
---|---|
EMBER_MAC_TRANSMIT_PRIORITY_HIGH | |
EMBER_MAC_TRANSMIT_PRIORITY_NORMAL | |
EMBER_MAC_TRANSMIT_PRIORITY_SCAN_OKAY |
3651
of file stack/include/ember-types.h
sl_zigbee_route_record_policy_type_t#
sl_zigbee_route_record_policy_type_t
Policies for sending a route record to the concentrator.
When sending a unicast to a concentrator, the message may be preceded by a route record packet depending on the type of concentrator and the route record policy
Enumerator | |
---|---|
ROUTE_RECORD_POLICY_ACK_BY_SOURCE_ROUTED_MESSAGE | ROUTE_RECORD_POLICY_ACK_BY_SOURCE_ROUTED_MESSAGE is the default policy A low RAM concentrator will be sent a route record ahead of any unicast A high RAM concentrator will be sent a route record ahead of any unicast until a source routed unicast is received from it. |
ROUTE_RECORD_POLICY_DONT_SEND | ROUTE_RECORD_POLICY_DONT_SEND policy means that the local node never sends a route record message (Note: Non-compliant) |
ROUTE_RECORD_POLICY_NO_ACK_REQUIRED | ROUTE_RECORD_POLICY_NO_ACK_REQUIRED A low RAM concentrator will be sent a route record ahead of any unicast A high RAM concentrator will be sent a route record ahead of any unicast (Note: Non-compliant) |
3670
of file stack/include/ember-types.h
sl_passive_ack_config_enum_t#
sl_passive_ack_config_enum_t
Passive ack config enum.
Enumerator | |
---|---|
SL_PASSIVE_ACK_DEFAULT_CONFIG | |
SL_PASSIVE_ACK_DISABLE | |
SL_PASSIVE_ACK_THRESHOLD_WITH_REBROADCAST | |
SL_PASSIVE_ACK_THRESHOLD_NO_REBROADCAST | |
SL_PASSIVE_ACK_THRESHOLD_WITH_REBROADCAST_ALL_NODES |
3696
of file stack/include/ember-types.h
Typedef Documentation#
sl_zigbee_aps_duplicate_msg_entry_t#
typedef struct aps_duplicate_msg_entry sl_zigbee_aps_duplicate_msg_entry_t
represents a single entry in the APS duplicate rejection table
3714
of file stack/include/ember-types.h
sli_zigbee_store_and_forward_queue_entry_t#
typedef struct storeAndForwardEntryS sli_zigbee_store_and_forward_queue_entry_t
3800
of file stack/include/ember-types.h