Modules#

EmberReleaseTypeStruct

EmberVersion

EmberZigbeeNetwork

EmberNetworkInitStruct

EmberBeaconSurvey

EmberBeaconData

EmberBeaconIterator

EmberNetworkParameters

EmberMultiPhyRadioParameters

EmberApsFrame

EmberChildData

EmberBindingTableEntry

EmberNeighborTableEntry

EmberRouteTableEntry

EmberMulticastTableEntry

EmberMultiprotocolPriorities

EmberCounterInfo

EmberExtraCounterInfo

EmberEventControl

EmberEventData

EmberTaskControl

EmberKeyData

EmberCertificateData

EmberPublicKeyData

EmberPrivateKeyData

EmberSmacData

EmberSignatureData

EmberMessageDigest

EmberAesMmoHashContext

EmberCertificate283k1Data

EmberPublicKey283k1Data

EmberPrivateKey283k1Data

EmberSignature283k1Data

EmberInitialSecurityState

EmberCurrentSecurityState

EmberTransientKeyData

EmberKeyStruct

EmberMfgSecurityStruct

EmberDutyCycleLimits

EmberPerDeviceDutyCycle

sl_nwk_packet_exchange_t

EmberMacFilterMatchStruct

SourceRouteTableEntry

EmberBeaconClassificationParams

EmberTagMapEntry

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

#ifndef DOXYGEN_SHOULD_SKIP_THIS
#include "stack/config/ember-configuration-defaults.h"
#include "stack/include/ember-static-struct.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;

#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 0x0000

//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 0x0000

#define EMBER_NULL_NODE_ID 0xFFFF

#define EMBER_NO_CHANNEL_PAGE_IN_USE           0

#define EMBER_NULL_EUI64 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }

#define EMBER_NULL_BINDING 0xFF

#define EMBER_TABLE_ENTRY_UNUSED_NODE_ID  0xFFFF

#define EMBER_MULTICAST_NODE_ID           0xFFFE

#define EMBER_UNKNOWN_NODE_ID             0xFFFD

#define EMBER_DISCOVERY_ACTIVE_NODE_ID    0xFFFC

#define EMBER_NULL_ADDRESS_TABLE_INDEX 0xFF

#define EMBER_ZDO_ENDPOINT 0

#define EMBER_BROADCAST_ENDPOINT 0xFF

#define EMBER_ZDO_PROFILE_ID  0x0000

#define EMBER_WILDCARD_PROFILE_ID  0xFFFF

#define EMBER_MAXIMUM_STANDARD_PROFILE_ID  0x7FFF

#define EMBER_BROADCAST_TABLE_TIMEOUT_QS (20 * 4)

#define EMBER_MANUFACTURER_ID 0x1002

#define EMBER_NULL_NETWORK_INDEX 0xFF

#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 depracate 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 0xFFFC

#define EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS 0xFFFD

#define EMBER_SLEEPY_BROADCAST_ADDRESS 0xFFFF

// 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 0xFFF8

#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,
};

#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 {
  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
  bool enhanced     : 1;  // Enhanced or regular beacon
  bool permitJoin   : 1;
  bool hasCapacity  : 1;
  EmberPanId panId;
  EmberNodeId sender;
  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_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);
// Then check emberIsRadioOffScanActivated() and wait for it to return true.  There may be a brief
// delay while the radio finishes transmitting.
//
// 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_LAST_SCAN_TYPE = EMBER_STACK_GP_CHANNEL_DELIVERY_SCAN
};

#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 0xFFF8

#define EMBER_HIGH_RAM_CONCENTRATOR 0xFFF9


#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
};

#define EMBER_JOIN_DECISION_STRINGS \
  "use preconfigured key",          \
  "send key in the clear",          \
  "deny join",                      \
  "no action",

// 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,
};

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;
} 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;

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  0xC00E

#define EMBER_PRIVATE_PROFILE_ID_START 0xC00D

#define EMBER_PRIVATE_PROFILE_ID_END   0xC016

#define EMBER_REPORT_COUNTERS_REQUEST 0x0003

#define EMBER_REPORT_COUNTERS_RESPONSE 0x8003

#define EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST 0x0004

#define EMBER_REPORT_AND_CLEAR_COUNTERS_RESPONSE 0x8004

#define EMBER_OTA_CERTIFICATE_UPGRADE_CLUSTER 0x0005


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 0x0000

#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).
  // Bits 12-15 are unused.
};

#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

  #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
};

typedef struct {
  EmberEUI64 eui64;
  EmberKeyData keyData;
  uint32_t incomingFrameCounter;
  EmberKeyStructBitmask bitmask;
  uint16_t remainingTimeSeconds;
  uint8_t networkIndex;
} 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;
  EmberKeyData key;
  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(Ember283k1SignatureData* 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;

typedef uint8_t EmberLibraryStatus;


#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_NWK_ALREADY_PRESENT           = 0xC5,
  EMBER_NWK_TABLE_FULL                = 0xC7,
  EMBER_NWK_UNKNOWN_DEVICE            = 0xC8
};

#define NETWORK_ADDRESS_REQUEST      0x0000
#define NETWORK_ADDRESS_RESPONSE     0x8000
#define IEEE_ADDRESS_REQUEST         0x0001
#define IEEE_ADDRESS_RESPONSE        0x8001

//            <node descriptor: 13>
//
//  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      0x0002
#define NODE_DESCRIPTOR_RESPONSE     0x8002

//     See ZigBee document 053474, Section 2.3.2.4 for more details.
#define POWER_DESCRIPTOR_REQUEST     0x0003
#define POWER_DESCRIPTOR_RESPONSE    0x8003

#define SIMPLE_DESCRIPTOR_REQUEST    0x0004
#define SIMPLE_DESCRIPTOR_RESPONSE   0x8004

#define ACTIVE_ENDPOINTS_REQUEST     0x0005
#define ACTIVE_ENDPOINTS_RESPONSE    0x8005

#define MATCH_DESCRIPTORS_REQUEST    0x0006
#define MATCH_DESCRIPTORS_RESPONSE   0x8006

#define DISCOVERY_CACHE_REQUEST      0x0012
#define DISCOVERY_CACHE_RESPONSE     0x8012

#define END_DEVICE_ANNOUNCE          0x0013
#define END_DEVICE_ANNOUNCE_RESPONSE 0x8013

#define SYSTEM_SERVER_DISCOVERY_REQUEST  0x0015
#define SYSTEM_SERVER_DISCOVERY_RESPONSE 0x8015

#define PARENT_ANNOUNCE           0x001F
#define PARENT_ANNOUNCE_RESPONSE  0x801F

#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         0x001C
#define FIND_NODE_CACHE_RESPONSE        0x801C

#define END_DEVICE_BIND_REQUEST      0x0020
#define END_DEVICE_BIND_RESPONSE     0x8020

#define UNICAST_BINDING             0x03
#define UNICAST_MANY_TO_ONE_BINDING 0x83
#define MULTICAST_BINDING           0x01

#define BIND_REQUEST                 0x0021
#define BIND_RESPONSE                0x8021
#define UNBIND_REQUEST               0x0022
#define UNBIND_RESPONSE              0x8022

#define LQI_TABLE_REQUEST            0x0031
#define LQI_TABLE_RESPONSE           0x8031

#define ROUTING_TABLE_REQUEST        0x0032
#define ROUTING_TABLE_RESPONSE       0x8032

#define BINDING_TABLE_REQUEST        0x0033
#define BINDING_TABLE_RESPONSE       0x8033

#define LEAVE_REQUEST                0x0034
#define LEAVE_RESPONSE               0x8034

#define LEAVE_REQUEST_REMOVE_CHILDREN_FLAG 0x40
#define LEAVE_REQUEST_REJOIN_FLAG          0x80

#define PERMIT_JOINING_REQUEST       0x0036
#define PERMIT_JOINING_RESPONSE      0x8036

#define NWK_UPDATE_REQUEST           0x0038
#define NWK_UPDATE_RESPONSE          0x8038

#define NWK_UPDATE_ENHANCED_REQUEST   0x0039
#define NWK_UPDATE_ENHANCED_RESPONSE  0x8039

#define NWK_UPDATE_IEEE_JOINING_LIST_REQUEST 0x003A
#define NWK_UPDATE_IEEE_JOINING_LIST_REPONSE 0x803A

#define NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFY  0x803B


#define COMPLEX_DESCRIPTOR_REQUEST   0x0010
#define COMPLEX_DESCRIPTOR_RESPONSE  0x8010
#define USER_DESCRIPTOR_REQUEST      0x0011
#define USER_DESCRIPTOR_RESPONSE     0x8011
#define DISCOVERY_REGISTER_REQUEST   0x0012
#define DISCOVERY_REGISTER_RESPONSE  0x8012
#define USER_DESCRIPTOR_SET          0x0014
#define USER_DESCRIPTOR_CONFIRM      0x8014
#define NETWORK_DISCOVERY_REQUEST    0x0030
#define NETWORK_DISCOVERY_RESPONSE   0x8030
#define DIRECT_JOIN_REQUEST          0x0035
#define DIRECT_JOIN_RESPONSE         0x8035

#define CLUSTER_ID_RESPONSE_MINIMUM  0x8000

#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 33

#define EMBER_MAX_NUM_PHYS 2

#define PHY_INDEX_NATIVE        0

#define PHY_INDEX_PRO2PLUS      1

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 connecity 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)initaited after the last successful (re)join.
};

#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 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 {
  Buffer message;
  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,
};

#endif // SLABS_EMBER_TYPES_H

#include "stack/include/zll-types.h"
#include "stack/include/gp-types.h"

Miscellaneous Ember Types#

#define

EmberReleaseTypeStruct Data that relates release type to the correct string.

#define

Size of EUI64 (an IEEE address) in bytes (8).

#define

Size of an extended PAN identifier in bytes (8).

#define

Size of an encryption key in bytes (16).

#define

Size of Implicit Certificates used for Certificate-based Key Exchange(CBKE).

#define

Size of Public Keys used in Elliptical Cryptography ECMQV algorithms.

#define

Size of Private Keys used in Elliptical Cryptography ECMQV algorithms.

#define

Size of the SMAC used in Elliptical Cryptography ECMQV algorithms.

#define

Size of the DSA signature used in Elliptical Cryptography Digital Signature Algorithms.

#define

The size of AES-128 MMO hash is 16-bytes. This is defined in the core. ZigBee specification.

#define

Size of Implicit Certificates used for Certificate Based Key Exchange using the ECC283K1 curve in bytes.

#define

Size of Public Keys used in SECT283k1 Elliptical Cryptography ECMQV algorithms.

#define

Size of Private Keys used SECT283k1 in Elliptical Cryptography ECMQV algorithms.

#define

Size of the DSA signature used in SECT283k1 Elliptical Cryptography Digital Signature Algorithms.

#define

Return type for Ember functions.

#define

EUI 64-bit ID (an IEEE address).

#define

The maximum 802.15.4 channel number is 26.

#define

The minimum 2.4GHz 802.15.4 channel number is 11.

#define

The minimum SubGhz channel number is 0.

#define

The SubGhz scan duration is 5.

#define
EMBER_NUM_802_15_4_CHANNELS (EMBER_MAX_802_15_4_CHANNEL_NUMBER - EMBER_MIN_802_15_4_CHANNEL_NUMBER + 1)

There are sixteen 802.15.4 channels.

#define

A bitmask to scan all 2.4 GHz 802.15.4 channels.

#define

The maximum channels per page are 27 page bits 31...27, channel bits 26...0.

#define

Sub-GHz channel bitmasks for pages 28, 30, 31.

#define

The maximum SubGhz channel number on pages 28, 30, 31 is 26.

#define

SubGhz channel bitmasks for page 29.

#define

The maximum SubGhz channel number on page 29 is 8.

#define

The minimum SubGhz page number is 28.

#define

The maximum SubGhz page number is 31.

#define

A bitmask for the channel page within a channel mask.

#define

A page-channel mask for a given page and channel mask.

#define

A page-channel mask for a given page and channel.

#define

The network ID of the coordinator in a ZigBee network is 0x0000.

#define

A distinguished network ID that will never be assigned to any node. It is used to indicate the absence of a node ID.

#define

The channel page value used to indicate just the 2.4GHz channels.

#define
EMBER_NULL_EUI64 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }

A distinguished EUI64 that is commonly used to indicate an invalid EUI64.

#define

A distinguished binding index used to indicate the absence of a binding.

#define

A distinguished network ID that will never be assigned to any node.

#define

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.

#define

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.

#define

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.

#define

A distinguished address table index used to indicate the absence of an address table entry.

#define

The endpoint where the ZigBee Device Object (ZDO) resides.

#define

The broadcast endpoint, as defined in the ZigBee spec.

#define

The profile ID used by the ZigBee Device Object (ZDO).

#define

The profile ID used to address all the public profiles.

#define

The maximum value for a profile ID in the standard profile range.

#define

The broadcast table entry timeout, which specifies, in quarter seconds, how long an entry persists in the local device's broadcast table.

#define

Ember's Manufacturer ID.

#define

An invalid network index.

#define

Use Ember's default duty cycle limit configurations.

enum
EMBER_VERSION_TYPE_PRE_RELEASE = 0x00
EMBER_VERSION_TYPE_ALPHA_1 = 0x11
EMBER_VERSION_TYPE_ALPHA_2 = 0x12
EMBER_VERSION_TYPE_ALPHA_3 = 0x13
EMBER_VERSION_TYPE_BETA_1 = 0x21
EMBER_VERSION_TYPE_BETA_2 = 0x22
EMBER_VERSION_TYPE_BETA_3 = 0x23
EMBER_VERSION_TYPE_GA = 0xAA
}

Type of Ember software version.

enum
EMBER_STACK_PROFILE_NONE = 0x00
EMBER_STACK_PROFILE_ZIGBEE_PRO = 0x02
}

EmberReleaseTypeStruct Data that relates release type to the correct string.

enum
EMBER_SECURITY_LEVEL_NONE = 0x00
EMBER_SECURITY_LEVEL_Z3 = 0x05
}

EmberReleaseTypeStruct Data that relates release type to the correct string.

enum
EMBER_ZIGBEE_LEAVE_AND_REJOIN = 0x80
EMBER_ZIGBEE_LEAVE_WITHOUT_REJOIN = 0x00
}

EmberReleaseTypeStruct Data that relates release type to the correct string.

enum
EMBER_LEAVE_REASON_NONE = 0
EMBER_LEAVE_DUE_TO_NWK_LEAVE_MESSAGE = 1
EMBER_LEAVE_DUE_TO_APS_REMOVE_MESSAGE = 2
EMBER_LEAVE_DUE_TO_ZDO_LEAVE_MESSAGE = 3
EMBER_LEAVE_DUE_TO_ZLL_TOUCHLINK = 4
EMBER_LEAVE_DUE_TO_APP_EVENT_1 = 0xFF
}

EmberReleaseTypeStruct Data that relates release type to the correct string.

typedef uint16_t

16-bit ZigBee network address.

typedef uint16_t

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#

enum
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
}

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.

enum
EMBER_USE_PRECONFIGURED_KEY = 0
EMBER_SEND_KEY_IN_THE_CLEAR
EMBER_DENY_JOIN
EMBER_NO_ACTION
}

The decision made by the Trust Center when a node attempts to join.

enum
EMBER_STANDARD_SECURITY_SECURED_REJOIN = 0
EMBER_STANDARD_SECURITY_UNSECURED_JOIN = 1
EMBER_DEVICE_LEFT = 2
EMBER_STANDARD_SECURITY_UNSECURED_REJOIN = 3
}

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.

enum
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
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
}

Notes the last rejoin reason.

enum
EMBER_INPUT_CLUSTER_LIST = 0
EMBER_OUTPUT_CLUSTER_LIST = 1
}

Defines the lists of clusters that must be provided for each endpoint.

enum
EMBER_EVENT_INACTIVE = 0
EMBER_EVENT_MS_TIME
EMBER_EVENT_QS_TIME
EMBER_EVENT_MINUTE_TIME
EMBER_EVENT_ZERO_DELAY
}

Either marks an event as inactive or specifies the units for the event execution time.

enum
EMBER_USE_MAC_ASSOCIATION = 0
EMBER_USE_NWK_REJOIN = 1
EMBER_USE_NWK_REJOIN_HAVE_NWK_KEY = 2
EMBER_USE_CONFIGURED_NWK_STATE = 3
}

The type of method used for joining.

enum
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
}

Defines the events reported to the application by the emberCounterHandler().

typedef uint8_t

txPowerModes for emberSetTxPowerMode and mfglibSetPower#

#define

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.

#define

The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable boost power mode.

#define

The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable the alternate transmitter output.

#define

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#

#define

This is a ZigBee application profile ID that has been assigned to Ember Corporation.

#define

Ember's first private profile ID.

#define

Ember's last private profile ID.

#define

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.

#define

The short address of the trust center. This address never changes dynamically.

#define
EMBER_NO_TRUST_CENTER_MODE EMBER_DISTRIBUTED_TRUST_CENTER_MODE

This is the legacy name for the Distributed Trust Center Mode.

#define
EMBER_GLOBAL_LINK_KEY EMBER_TRUST_CENTER_GLOBAL_LINK_KEY

This is the legacy name for the Trust Center Global Link Key.

#define

This magic number prevents accidentally changing the key settings. The emberSetMfgSecurityConfig() API will return EMBER_INVALID_CALL unless it is passed in.

enum
EMBER_DISTRIBUTED_TRUST_CENTER_MODE = 0x0002
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY = 0x0004
EMBER_PRECONFIGURED_NETWORK_KEY_MODE = 0x0008
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
}

This is the Initial Security Bitmask that controls the use of various security features.

enum
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
EMBER_NWK_LEAVE_REQUEST_NOT_ALLOWED = 0x0100
}

This is the Extended Security Bitmask that controls the use of various extended security features.

enum
EMBER_STANDARD_SECURITY_MODE_ = 0x0000
EMBER_DISTRIBUTED_TRUST_CENTER_MODE_ = 0x0002
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY_ = 0x0004
EMBER_HAVE_TRUST_CENTER_LINK_KEY = 0x0010
EMBER_TRUST_CENTER_USES_HASHED_LINK_KEY_ = 0x0084
}

This is the Current Security Bitmask that details the use of various security features.

enum
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
}

This bitmask describes the presence of fields within the EmberKeyStruct.

enum
EMBER_TRUST_CENTER_LINK_KEY = 1
EMBER_CURRENT_NETWORK_KEY = 3
EMBER_NEXT_NETWORK_KEY = 4
EMBER_APPLICATION_LINK_KEY = 5
}

This denotes the type of security key.

enum
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
EMBER_TC_RESPONDED_TO_KEY_REQUEST = 0x06
EMBER_TC_APP_KEY_SENT_TO_REQUESTER = 0x07
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
EMBER_TRUST_CENTER_IS_PRE_R21 = 0x1E
EMBER_TC_REQUESTER_VERIFY_KEY_TIMEOUT = 0x32
EMBER_TC_REQUESTER_VERIFY_KEY_FAILURE = 0x33
EMBER_TC_REQUESTER_VERIFY_KEY_SUCCESS = 0x34
EMBER_VERIFY_LINK_KEY_FAILURE = 0x64
EMBER_VERIFY_LINK_KEY_SUCCESS = 0x65
}

This denotes the status of an attempt to establish a key with another device.

enum
EMBER_DENY_TC_LINK_KEY_REQUESTS = 0x00
EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_SEND_CURRENT_KEY = 0x01
EMBER_ALLOW_TC_LINK_KEY_REQUEST_AND_GENERATE_NEW_KEY = 0x02
}

This enumeration determines whether or not a Trust Center answers trust center link key requests.

enum
EMBER_DENY_APP_LINK_KEY_REQUESTS = 0x00
EMBER_ALLOW_APP_LINK_KEY_REQUEST = 0x01
}

This enumeration determines whether or not a Trust Center answers app link key requests.

enum
EMBER_KEY_PERMISSIONS_NONE = 0x0000
EMBER_KEY_PERMISSIONS_READING_ALLOWED = 0x0001
EMBER_KEY_PERMISSIONS_HASHING_ALLOWED = 0x0002
}

This is a ZigBee application profile ID that has been assigned to Ember Corporation.

enum
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
}

The types of MAC passthrough messages that an application may receive. This is a bitmask.

typedef uint8_t

This indicates the presence, absence, or status of an Ember stack library.

uint8_t *
emberKeyContents(EmberKeyData *key)

This function allows access to the actual key data bytes of the EmberKeyData structure.

uint8_t *
emberCertificateContents(EmberCertificateData *cert)

This function allows access to the actual certificate data bytes of the EmberCertificateData structure.

uint8_t *
emberPublicKeyContents(EmberPublicKeyData *key)

This function allows access to the actual public key data bytes of the EmberPublicKeyData structure.

uint8_t *
emberPrivateKeyContents(EmberPrivateKeyData *key)

This function allows access to the actual private key data bytes of the EmberPrivateKeyData structure.

uint8_t *
emberSmacContents(EmberSmacData *key)

This function allows access to the actual SMAC (Secured Message Authentication Code) data of the EmberSmacData structure.

uint8_t *
emberSignatureContents(EmberSignatureData *sig)

This function allows access to the actual ECDSA signature data of the EmberSignatureData structure.

uint8_t *
emberCertificate283k1Contents(EmberCertificate283k1Data *cert)

This function allows access to the actual certificate data bytes of the Ember283k1CertificateData structure.

uint8_t *
emberPublicKey283k1Contents(EmberPublicKey283k1Data *key)

This function allows access to the actual public key data bytes of the Ember283k1PublicKeyData structure.

uint8_t *
emberPrivateKey283k1Contents(EmberPrivateKey283k1Data *key)

This function allows access to the actual private key data bytes of the Ember283k1PrivateKeyData structure.

uint8_t *
ember283k1SignatureContents(Ember283k1SignatureData *sig)

This function allows access to the actual ECDSA signature data of the Ember283k1SignatureData structure.

ZDO response status.#

Most responses to ZDO commands contain a status byte. The meaning of this byte is defined by the ZigBee Device Profile.

enum
EMBER_ZDP_SUCCESS = 0x00
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
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_NWK_ALREADY_PRESENT = 0xC5
EMBER_NWK_TABLE_FULL = 0xC7
EMBER_NWK_UNKNOWN_DEVICE = 0xC8
}

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>*

#define
#define

Node Descriptor Request/Response#

Request: <transaction sequence number: 1> <node ID:2> Response: <transaction sequence number: 1> <status:1> <node ID:2>// <node descriptor: 13>//// 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>*

Discovery Cache Request / Response#

Request: <transaction sequence number: 1> <source node ID:2> <source EUI64:8>Response: <transaction sequence number: 1> <status (== EMBER_ZDP_SUCCESS):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.

#define

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>*

#define

ZDO server mask bits#

These are used in server discovery requests and responses.

enum
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
}

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>

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>

#define
#define
#define
#define
#define
#define

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

#define
#define

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

#define

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.

#define

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>

#define
#define

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>*

#define
#define

Unsupported#

Not mandatory and not supported.

#define
#define
#define

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.

#define

Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.

#define

Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.

#define

Defines the maximum number of PHYs supported.

#define

PHY index for 2.4 GHz radio interface, valid for simultaneous multi radio network.

#define

PHY index for Sub-GHz radio interface, valid for simultaneous multi radio network.

enum
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
}

Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.

enum
EMBER_MULTI_PHY_ROUTERS_ALLOWED = 0x01
EMBER_MULTI_PHY_BROADCASTS_ENABLED = 0x02
EMBER_MULTI_PHY_DISABLED = 0x80
}

Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.

enum
@0 {
PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION = 0x0001
PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY = 0x0002
TC_CONNECTIVITY = 0x0010
LONG_UPTIME = 0x0020
BAD_PARENT_CONNECTIVITY = 0x0040
EMBER_OUTGOING_MESSAGES = 0x0001
EMBER_INCOMING_MESSAGES = 0x0002
EMBER_RADIO_IS_ON = 0x0004
EMBER_TRANSPORT_ACTIVE = 0x0008
EMBER_APS_LAYER_ACTIVE = 0x0010
EMBER_ASSOCIATING = 0x0020
EMBER_ZLL_TOUCH_LINKING = 0x0040
EMBER_NETWORK_TIMEOUT_REQUEST = 0x0200
EMBER_SEND_ORPHAN_NOTIFICATION = 0x0400
EMBER_MAC_DATA_POLL_SUPER_RETRY = 0x0800
INITIAL = 0x0000
SCAN_FOR_TOUCH_LINK = 0x0001
SCAN_FOR_DEVICE_INFORMATION = 0x0002
SCAN_FOR_IDENTIFY = 0x0004
SCAN_FOR_RESET = 0x0008
TARGET_NETWORK_FOUND = 0x0010
ABORTING_TOUCH_LINK = 0x0020
SCAN_COMPLETE = 0x0040
TOUCH_LINK_TARGET = 0x0080
FORMING_NETWORK = 0x0100
RESETTING_TO_FACTORY_NEW = 0x0200
ADC_REF_INT = 42U
TOKEN_COUNT
COMM_SERIAL = 0x01
COMM_RADIO = 0x02
}

Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.

enum
EMBER_ENTROPY_SOURCE_ERROR = 0x00
EMBER_ENTROPY_SOURCE_RADIO = 0x01
EMBER_ENTROPY_SOURCE_MBEDTLS_TRNG = 0x02
EMBER_ENTROPY_SOURCE_MBEDTLS = 0x03
}

Defines the entropy source used by the stack.

enum
@1 {
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
EMBER_RADIO_POWER_MODE_RX_ON
EMBER_RADIO_POWER_MODE_OFF
ADC_SAMPLE_CLOCKS_32 = 0x0
ADC_SAMPLE_CLOCKS_64 = 0x1
ADC_SAMPLE_CLOCKS_128 = 0x2
ADC_SAMPLE_CLOCKS_256 = 0x3
ADC_SAMPLE_CLOCKS_512 = 0x4
ADC_SAMPLE_CLOCKS_1024 = 0x5
ADC_SAMPLE_CLOCKS_2048 = 0x6
ADC_SAMPLE_CLOCKS_4096 = 0x7
}

Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.

enum
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
}

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.

enum
EMBER_SOURCE_ROUTE_DISCOVERY_OFF = 0x00
EMBER_SOURCE_ROUTE_DISCOVERY_ON = 0x01
EMBER_SOURCE_ROUTE_DISCOVERY_RESCHEDULE = 0x02
}

types of source route discovery modes used by the concentrator.

enum
EMBER_MAC_TRANSMIT_PRIORITY_HIGH
EMBER_MAC_TRANSMIT_PRIORITY_NORMAL
EMBER_MAC_TRANSMIT_PRIORITY_SCAN_OKAY
}

Packet transmit priorities in terms of getting into the MAC queue.

enum
ROUTE_RECORD_POLICY_ACK_BY_SOURCE_ROUTED_MESSAGE = 0
ROUTE_RECORD_POLICY_DONT_SEND = 1
ROUTE_RECORD_POLICY_NO_ACK_REQUIRED = 2
}

Policies for sending a route record to the concentrator.

typedef uint8_t

Radio power mode.

Macros#

#define

Returns true if nodeId (short address) is a broadcast address.

Enumerations#

enum
EMBER_UNKNOWN_DEVICE = 0
EMBER_COORDINATOR = 1
EMBER_ROUTER = 2
EMBER_END_DEVICE = 3
EMBER_SLEEPY_END_DEVICE = 4
}

Defines the possible types of nodes and the roles that a node might play in a network.

enum
EMBER_END_DEVICE_CONFIG_NONE = 0x00
EMBER_END_DEVICE_CONFIG_PERSIST_DATA_ON_PARENT = 0x01
}

The configuration advertised by the end device to the parent when joining/rejoining.

enum
EMBER_NETWORK_INIT_NO_OPTIONS = 0x0000
EMBER_NETWORK_INIT_PARENT_INFO_IN_TOKEN = 0x0001
EMBER_NETWORK_INIT_END_DEVICE_REJOIN_ON_REBOOT = 0x0002
}

Defines the options that should be used when initializing the node's network configuration.

enum
NO_REJOIN
REJOIN_ANY_LINK_KEY
REJOIN_NON_DEFAULT_LINK_KEY
}

Options to allow/disallow rejoins using the default link key.

enum
EMBER_APS_OPTION_NONE = 0x0000
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
}

Options to use when sending a message.

enum
EMBER_INCOMING_UNICAST
EMBER_INCOMING_UNICAST_REPLY
EMBER_INCOMING_MULTICAST
EMBER_INCOMING_MULTICAST_LOOPBACK
EMBER_INCOMING_BROADCAST
EMBER_INCOMING_BROADCAST_LOOPBACK
}

Defines the possible incoming message types.

enum
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
}

Defines the possible outgoing message types.

enum
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
}

A type of command received by the stack.

enum
EMBER_DROP_PACKET = 0
EMBER_ACCEPT_PACKET = 1
EMBER_MANGLE_PACKET
EMBER_ACCEPT_PACKET_OVERRIDE_SECURITY
EMBER_ACCEPT_PACKET_SKIP_NWK_CRYPTO
}

indication of the action taken on a packet

enum
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
}

A type of packet received by the stack.

enum
EMBER_NO_NETWORK
EMBER_JOINING_NETWORK
EMBER_JOINED_NETWORK
EMBER_JOINED_NETWORK_NO_PARENT
EMBER_LEAVING_NETWORK
}

Defines the possible join states for a node.

enum
EMBER_ENERGY_SCAN
EMBER_ACTIVE_SCAN
EMBER_START_RADIO_OFF_SCAN
EMBER_STACK_GP_CHANNEL_DELIVERY_SCAN
EMBER_LAST_SCAN_TYPE = EMBER_STACK_GP_CHANNEL_DELIVERY_SCAN
}

Type for a network scan.

enum
EMBER_UNUSED_BINDING = 0
EMBER_UNICAST_BINDING = 1
EMBER_MANY_TO_ONE_BINDING = 2
EMBER_MULTICAST_BINDING = 3
}

Defines binding types.

Miscellaneous Ember Types Documentation#

EMBER_RELEASE_TYPE_TO_STRING_STRUCT_DATA#

#define EMBER_RELEASE_TYPE_TO_STRING_STRUCT_DATA
Value:
{ 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 },

EmberReleaseTypeStruct Data that relates release type to the correct string.


Definition at line 82 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EUI64_SIZE#

#define EUI64_SIZE
Value:
8

Size of EUI64 (an IEEE address) in bytes (8).


Definition at line 113 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EXTENDED_PAN_ID_SIZE#

#define EXTENDED_PAN_ID_SIZE
Value:
8

Size of an extended PAN identifier in bytes (8).


Definition at line 118 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_ENCRYPTION_KEY_SIZE#

#define EMBER_ENCRYPTION_KEY_SIZE
Value:
16

Size of an encryption key in bytes (16).


Definition at line 123 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_CERTIFICATE_SIZE#

#define EMBER_CERTIFICATE_SIZE
Value:
48

Size of Implicit Certificates used for Certificate-based Key Exchange(CBKE).


Definition at line 129 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_PUBLIC_KEY_SIZE#

#define EMBER_PUBLIC_KEY_SIZE
Value:
22

Size of Public Keys used in Elliptical Cryptography ECMQV algorithms.


Definition at line 134 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_PRIVATE_KEY_SIZE#

#define EMBER_PRIVATE_KEY_SIZE
Value:
21

Size of Private Keys used in Elliptical Cryptography ECMQV algorithms.


Definition at line 139 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_SMAC_SIZE#

#define EMBER_SMAC_SIZE
Value:
16

Size of the SMAC used in Elliptical Cryptography ECMQV algorithms.


Definition at line 144 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_SIGNATURE_SIZE#

#define EMBER_SIGNATURE_SIZE
Value:
42

Size of the DSA signature used in Elliptical Cryptography Digital Signature Algorithms.


Definition at line 150 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_AES_HASH_BLOCK_SIZE#

#define EMBER_AES_HASH_BLOCK_SIZE
Value:
16

The size of AES-128 MMO hash is 16-bytes. This is defined in the core. ZigBee specification.


Definition at line 155 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_CERTIFICATE_283K1_SIZE#

#define EMBER_CERTIFICATE_283K1_SIZE
Value:
74

Size of Implicit Certificates used for Certificate Based Key Exchange using the ECC283K1 curve in bytes.


Definition at line 161 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_PUBLIC_KEY_283K1_SIZE#

#define EMBER_PUBLIC_KEY_283K1_SIZE
Value:
37

Size of Public Keys used in SECT283k1 Elliptical Cryptography ECMQV algorithms.


Definition at line 166 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_PRIVATE_KEY_283K1_SIZE#

#define EMBER_PRIVATE_KEY_283K1_SIZE
Value:
36

Size of Private Keys used SECT283k1 in Elliptical Cryptography ECMQV algorithms.


Definition at line 171 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_SIGNATURE_283K1_SIZE#

#define EMBER_SIGNATURE_283K1_SIZE
Value:
72

Size of the DSA signature used in SECT283k1 Elliptical Cryptography Digital Signature Algorithms.


Definition at line 177 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

__EMBERSTATUS_TYPE__#

#define __EMBERSTATUS_TYPE__

Return type for Ember functions.


Definition at line 183 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NULL_BUFFER#

#define NULL_BUFFER
Value:
0x0000

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.


Definition at line 209 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MAX_802_15_4_CHANNEL_NUMBER#

#define EMBER_MAX_802_15_4_CHANNEL_NUMBER
Value:
26

The maximum 802.15.4 channel number is 26.


Definition at line 235 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MIN_802_15_4_CHANNEL_NUMBER#

#define EMBER_MIN_802_15_4_CHANNEL_NUMBER
Value:
11

The minimum 2.4GHz 802.15.4 channel number is 11.


Definition at line 240 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MIN_SUBGHZ_CHANNEL_NUMBER#

#define EMBER_MIN_SUBGHZ_CHANNEL_NUMBER
Value:
0

The minimum SubGhz channel number is 0.


Definition at line 245 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_ACTIVE_SCAN_DURATION#

#define EMBER_ACTIVE_SCAN_DURATION
Value:
3

ZigBee 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.


Definition at line 252 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_SUB_GHZ_SCAN_DURATION#

#define EMBER_SUB_GHZ_SCAN_DURATION
Value:
5

The SubGhz scan duration is 5.


Definition at line 257 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_NUM_802_15_4_CHANNELS#

#define EMBER_NUM_802_15_4_CHANNELS
Value:
  (EMBER_MAX_802_15_4_CHANNEL_NUMBER - EMBER_MIN_802_15_4_CHANNEL_NUMBER + 1)

There are sixteen 802.15.4 channels.


Definition at line 262 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_ALL_802_15_4_CHANNELS_MASK#

#define EMBER_ALL_802_15_4_CHANNELS_MASK
Value:
0x07FFF800UL

A bitmask to scan all 2.4 GHz 802.15.4 channels.


Definition at line 268 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MAX_CHANNELS_PER_PAGE#

#define EMBER_MAX_CHANNELS_PER_PAGE
Value:
27

The maximum channels per page are 27 page bits 31...27, channel bits 26...0.


Definition at line 274 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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_31
Value:
0x07FFFFFFUL

Sub-GHz channel bitmasks for pages 28, 30, 31.


Definition at line 279 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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_31
Value:
26

The maximum SubGhz channel number on pages 28, 30, 31 is 26.


Definition at line 284 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_29#

#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_29
Value:
0x1FF

SubGhz channel bitmasks for page 29.


Definition at line 288 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGE_29#

#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGE_29
Value:
8

The maximum SubGhz channel number on page 29 is 8.


Definition at line 293 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MIN_SUGBHZ_PAGE_NUMBER#

#define EMBER_MIN_SUGBHZ_PAGE_NUMBER
Value:
28

The minimum SubGhz page number is 28.


Definition at line 298 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MAX_SUGBHZ_PAGE_NUMBER#

#define EMBER_MAX_SUGBHZ_PAGE_NUMBER
Value:
31

The maximum SubGhz page number is 31.


Definition at line 303 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_ALL_CHANNEL_PAGE_MASK#

#define EMBER_ALL_CHANNEL_PAGE_MASK
Value:
0xF8000000UL

A bitmask for the channel page within a channel mask.


Definition at line 308 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK#

#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK
Value:
(((((uint32_t)(page)) << EMBER_MAX_CHANNELS_PER_PAGE) & EMBER_ALL_CHANNEL_PAGE_MASK) \
| (((uint32_t)(mask)) & ~EMBER_ALL_CHANNEL_PAGE_MASK))

A page-channel mask for a given page and channel mask.


Definition at line 313 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_NUMBER#

#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_NUMBER
Value:
(page, channel)

A page-channel mask for a given page and channel.


Definition at line 320 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_ZIGBEE_COORDINATOR_ADDRESS#

#define EMBER_ZIGBEE_COORDINATOR_ADDRESS
Value:
0x0000

The network ID of the coordinator in a ZigBee network is 0x0000.


Definition at line 326 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_NULL_NODE_ID#

#define EMBER_NULL_NODE_ID
Value:
0xFFFF

A distinguished network ID that will never be assigned to any node. It is used to indicate the absence of a node ID.


Definition at line 332 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_NO_CHANNEL_PAGE_IN_USE#

#define EMBER_NO_CHANNEL_PAGE_IN_USE
Value:
0

The channel page value used to indicate just the 2.4GHz channels.


Definition at line 337 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_NULL_EUI64#

#define EMBER_NULL_EUI64
Value:
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }

A distinguished EUI64 that is commonly used to indicate an invalid EUI64.


Definition at line 342 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_NULL_BINDING#

#define EMBER_NULL_BINDING
Value:
0xFF

A distinguished binding index used to indicate the absence of a binding.


Definition at line 348 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_TABLE_ENTRY_UNUSED_NODE_ID#

#define EMBER_TABLE_ENTRY_UNUSED_NODE_ID
Value:
0xFFFF

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.


Definition at line 359 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MULTICAST_NODE_ID#

#define EMBER_MULTICAST_NODE_ID
Value:
0xFFFE

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.


Definition at line 367 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_UNKNOWN_NODE_ID#

#define EMBER_UNKNOWN_NODE_ID
Value:
0xFFFD

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.


Definition at line 376 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_DISCOVERY_ACTIVE_NODE_ID#

#define EMBER_DISCOVERY_ACTIVE_NODE_ID
Value:
0xFFFC

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.


Definition at line 385 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_NULL_ADDRESS_TABLE_INDEX#

#define EMBER_NULL_ADDRESS_TABLE_INDEX
Value:
0xFF

A distinguished address table index used to indicate the absence of an address table entry.


Definition at line 391 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_ZDO_ENDPOINT#

#define EMBER_ZDO_ENDPOINT
Value:
0

The endpoint where the ZigBee Device Object (ZDO) resides.


Definition at line 396 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_BROADCAST_ENDPOINT#

#define EMBER_BROADCAST_ENDPOINT
Value:
0xFF

The broadcast endpoint, as defined in the ZigBee spec.


Definition at line 401 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_ZDO_PROFILE_ID#

#define EMBER_ZDO_PROFILE_ID
Value:
0x0000

The profile ID used by the ZigBee Device Object (ZDO).


Definition at line 406 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_WILDCARD_PROFILE_ID#

#define EMBER_WILDCARD_PROFILE_ID
Value:
0xFFFF

The profile ID used to address all the public profiles.


Definition at line 411 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MAXIMUM_STANDARD_PROFILE_ID#

#define EMBER_MAXIMUM_STANDARD_PROFILE_ID
Value:
0x7FFF

The maximum value for a profile ID in the standard profile range.


Definition at line 416 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_BROADCAST_TABLE_TIMEOUT_QS#

#define EMBER_BROADCAST_TABLE_TIMEOUT_QS
Value:
(20 * 4)

The broadcast table entry timeout, which specifies, in quarter seconds, how long an entry persists in the local device's broadcast table.


Definition at line 422 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MANUFACTURER_ID#

#define EMBER_MANUFACTURER_ID
Value:
0x1002

Ember's Manufacturer ID.


Definition at line 427 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_NULL_NETWORK_INDEX#

#define EMBER_NULL_NETWORK_INDEX
Value:
0xFF

An invalid network index.


Definition at line 432 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_DC_LIMIT_USE_DEFAULT#

#define EMBER_DC_LIMIT_USE_DEFAULT
Value:
0

Use Ember's default duty cycle limit configurations.


Definition at line 437 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 46 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 440 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 451 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 462 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 482 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EmberMulticastId#

typedef uint16_t EmberMulticastId

16-bit ZigBee network address.

16-bit ZigBee multicast group identifier.


Definition at line 217 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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%).


Definition at line 230 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberVersion#

const EmberVersion emberVersion

A structure containing the version information.


Definition at line 108 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

ZigBee Broadcast Addresses Documentation#

EMBER_BROADCAST_ADDRESS#

#define EMBER_BROADCAST_ADDRESS
Value:
0xFFFC

Broadcast to all routers.


Definition at line 512 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS#

#define EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS
Value:
0xFFFD

Broadcast to all non-sleepy devices.


Definition at line 514 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_SLEEPY_BROADCAST_ADDRESS#

#define EMBER_SLEEPY_BROADCAST_ADDRESS
Value:
0xFFFF

Broadcast to all devices, including sleepy end devices.


Definition at line 516 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Ember Concentrator Types Documentation#

EMBER_LOW_RAM_CONCENTRATOR#

#define EMBER_LOW_RAM_CONCENTRATOR
Value:
0xFFF8

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.


Definition at line 976 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_HIGH_RAM_CONCENTRATOR#

#define EMBER_HIGH_RAM_CONCENTRATOR
Value:
0xFFF9

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.


Definition at line 981 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_JOIN_DECISION_STRINGS#

#define EMBER_JOIN_DECISION_STRINGS
Value:
"use preconfigured key", \
"send key in the clear", \
"deny join", \
"no action",

@ brief Defines the CLI enumerations for the EmberJoinDecision enum.


Definition at line 1033 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_DEVICE_UPDATE_STRINGS#

#define EMBER_DEVICE_UPDATE_STRINGS
Value:
"secured rejoin", \
"UNsecured join", \
"device left", \
"UNsecured rejoin",

@ brief Defines the CLI enumerations for the EmberDeviceUpdate enum.


Definition at line 1062 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberInitializeNetworkParameters#

#define emberInitializeNetworkParameters
Value:
(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.


Definition at line 1223 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_COUNTER_STRINGS#

#define EMBER_COUNTER_STRINGS

@ brief Defines the CLI enumerations for the EmberCounterType enum.


Definition at line 1567 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 996 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 1014 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 1047 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 1072 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 1103 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 1120 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 1144 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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_SUCCESS and EMBER_COUNTER_MAC_TX_UNICAST_FAILED types.

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 emberCounterHandler() callback. Instead, the number of APS retries are returned in the data parameter of the callback for the EMBER_COUNTER_APS_DATA_TX_UNICAST_SUCCESS and EMBER_COUNTER_APS_DATA_TX_UNICAST_FAILED types.

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 (emMaxPhyToMacQueueLength). 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 cuased node_id change, and an addresss conflict error is sent

EMBER_COUNTER_TYPE_COUNT

A placeholder giving the number of Ember counter types.


Definition at line 1383 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EmberTaskId#

typedef uint8_t EmberTaskId

brief An identifier for a task.


Definition at line 1623 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

txPowerModes for emberSetTxPowerMode and mfglibSetPower Documentation#

EMBER_TX_POWER_MODE_DEFAULT#

#define EMBER_TX_POWER_MODE_DEFAULT
Value:
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.


Definition at line 1678 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_TX_POWER_MODE_BOOST#

#define EMBER_TX_POWER_MODE_BOOST
Value:
0x0001

The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable boost power mode.


Definition at line 1682 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_TX_POWER_MODE_ALTERNATE#

#define EMBER_TX_POWER_MODE_ALTERNATE
Value:
0x0002

The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable the alternate transmitter output.


Definition at line 1687 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATE#

#define EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATE
Value:
(EMBER_TX_POWER_MODE_BOOST \
| EMBER_TX_POWER_MODE_ALTERNATE)

The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable both boost mode and the alternate transmitter output.


Definition at line 1692 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Counters Request Definitions Documentation#

EMBER_PRIVATE_PROFILE_ID#

#define EMBER_PRIVATE_PROFILE_ID
Value:
0xC00E

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.


Definition at line 1716 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_PRIVATE_PROFILE_ID_START#

#define EMBER_PRIVATE_PROFILE_ID_START
Value:
0xC00D

Ember's first private profile ID.


Definition at line 1721 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_PRIVATE_PROFILE_ID_END#

#define EMBER_PRIVATE_PROFILE_ID_END
Value:
0xC016

Ember's last private profile ID.


Definition at line 1726 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_REPORT_COUNTERS_REQUEST#

#define EMBER_REPORT_COUNTERS_REQUEST
Value:
0x0003

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.


Definition at line 1731 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_REPORT_COUNTERS_RESPONSE#

#define EMBER_REPORT_COUNTERS_RESPONSE
Value:
0x8003

The cluster ID used to respond to an EMBER_REPORT_COUNTERS_REQUEST.


Definition at line 1734 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST#

#define EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST
Value:
0x0004

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.


Definition at line 1740 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_REPORT_AND_CLEAR_COUNTERS_RESPONSE#

#define EMBER_REPORT_AND_CLEAR_COUNTERS_RESPONSE
Value:
0x8004

The cluster ID used to respond to an EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST.


Definition at line 1743 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_OTA_CERTIFICATE_UPGRADE_CLUSTER#

#define EMBER_OTA_CERTIFICATE_UPGRADE_CLUSTER
Value:
0x0005

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.


Definition at line 1749 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_STANDARD_SECURITY_MODE#

#define EMBER_STANDARD_SECURITY_MODE
Value:
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.


Definition at line 1837 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_TRUST_CENTER_NODE_ID#

#define EMBER_TRUST_CENTER_NODE_ID
Value:
0x0000

The short address of the trust center. This address never changes dynamically.


Definition at line 1842 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_NO_TRUST_CENTER_MODE#

#define EMBER_NO_TRUST_CENTER_MODE
Value:
EMBER_DISTRIBUTED_TRUST_CENTER_MODE

This is the legacy name for the Distributed Trust Center Mode.


Definition at line 1995 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_GLOBAL_LINK_KEY#

#define EMBER_GLOBAL_LINK_KEY
Value:
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY

This is the legacy name for the Trust Center Global Link Key.


Definition at line 1999 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MFG_SECURITY_CONFIG_MAGIC_NUMBER#

#define EMBER_MFG_SECURITY_CONFIG_MAGIC_NUMBER
Value:
0xCABAD11FUL

This magic number prevents accidentally changing the key settings. The emberSetMfgSecurityConfig() API will return EMBER_INVALID_CALL unless it is passed in.


Definition at line 2420 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 1848 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 1940 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 2054 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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


Definition at line 2104 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 2150 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 2196 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 2248 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 2268 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 2398 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 2497 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EmberLibraryStatus#

typedef uint8_t EmberLibraryStatus

This indicates the presence, absence, or status of an Ember stack library.


Definition at line 2535 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.

Parameters
N/Akey

A pointer to an EmberKeyData structure.

Returns

  • uint8_t* Returns a pointer to the first byte of the Key data.


Definition at line 2286 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberCertificateContents#

uint8_t* emberCertificateContents (EmberCertificateData * cert)

This function allows access to the actual certificate data bytes of the EmberCertificateData structure.

Parameters
N/Acert

A pointer to an EmberCertificateData structure.

Returns

  • uint8_t* Returns a pointer to the first byte of the certificate data.


Definition at line 2299 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberPublicKeyContents#

uint8_t* emberPublicKeyContents (EmberPublicKeyData * key)

This function allows access to the actual public key data bytes of the EmberPublicKeyData structure.

Parameters
N/Akey

A pointer to an EmberPublicKeyData structure.

Returns

  • uint8_t* Returns a pointer to the first byte of the public key data.


Definition at line 2312 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberPrivateKeyContents#

uint8_t* emberPrivateKeyContents (EmberPrivateKeyData * key)

This function allows access to the actual private key data bytes of the EmberPrivateKeyData structure.

Parameters
N/Akey

A pointer to an EmberPrivateKeyData structure.

Returns

  • uint8_t* Returns a pointer to the first byte of the private key data.


Definition at line 2325 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberSmacContents#

uint8_t* emberSmacContents (EmberSmacData * key)

This function allows access to the actual SMAC (Secured Message Authentication Code) data of the EmberSmacData structure.

Parameters
N/Akey

Definition at line 2335 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberSignatureContents#

uint8_t* emberSignatureContents (EmberSignatureData * sig)

This function allows access to the actual ECDSA signature data of the EmberSignatureData structure.

Parameters
N/Asig

Definition at line 2344 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberCertificate283k1Contents#

uint8_t* emberCertificate283k1Contents (EmberCertificate283k1Data * cert)

This function allows access to the actual certificate data bytes of the Ember283k1CertificateData structure.

Parameters
N/Acert

A pointer to an ::Ember283k1CertificateData structure.

Returns

  • uint8_t* Returns a pointer to the first byte of the certificate data.


Definition at line 2357 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberPublicKey283k1Contents#

uint8_t* emberPublicKey283k1Contents (EmberPublicKey283k1Data * key)

This function allows access to the actual public key data bytes of the Ember283k1PublicKeyData structure.

Parameters
N/Akey

A pointer to an Ember283k1PublicKeyData structure.

Returns

  • uint8_t* Returns a pointer to the first byte of the public key data.


Definition at line 2370 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberPrivateKey283k1Contents#

uint8_t* emberPrivateKey283k1Contents (EmberPrivateKey283k1Data * key)

This function allows access to the actual private key data bytes of the Ember283k1PrivateKeyData structure.

Parameters
N/Akey

A pointer to an Ember283k1PrivateKeyData structure.

Returns

  • uint8_t* Returns a pointer to the first byte of the private key data.


Definition at line 2383 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

ember283k1SignatureContents#

uint8_t* ember283k1SignatureContents (Ember283k1SignatureData * sig)

This function allows access to the actual ECDSA signature data of the Ember283k1SignatureData structure.

Parameters
N/Asig

Definition at line 2392 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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_NWK_ALREADY_PRESENT
EMBER_NWK_TABLE_FULL
EMBER_NWK_UNKNOWN_DEVICE

Definition at line 2548 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Network and IEEE Address Request/Response Documentation#

NETWORK_ADDRESS_REQUEST#

#define NETWORK_ADDRESS_REQUEST
Value:
0x0000

Definition at line 2606 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NETWORK_ADDRESS_RESPONSE#

#define NETWORK_ADDRESS_RESPONSE
Value:
0x8000

Definition at line 2607 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

IEEE_ADDRESS_REQUEST#

#define IEEE_ADDRESS_REQUEST
Value:
0x0001

Definition at line 2608 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

IEEE_ADDRESS_RESPONSE#

#define IEEE_ADDRESS_RESPONSE
Value:
0x8001

Definition at line 2609 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Node Descriptor Request/Response Documentation#

NODE_DESCRIPTOR_REQUEST#

#define NODE_DESCRIPTOR_REQUEST
Value:
0x0002

Definition at line 2637 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NODE_DESCRIPTOR_RESPONSE#

#define NODE_DESCRIPTOR_RESPONSE
Value:
0x8002

Definition at line 2638 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Power Descriptor Request / Response Documentation#

POWER_DESCRIPTOR_REQUEST#

#define POWER_DESCRIPTOR_REQUEST
Value:
0x0003

Definition at line 2651 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

POWER_DESCRIPTOR_RESPONSE#

#define POWER_DESCRIPTOR_RESPONSE
Value:
0x8003

Definition at line 2652 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Simple Descriptor Request / Response Documentation#

SIMPLE_DESCRIPTOR_REQUEST#

#define SIMPLE_DESCRIPTOR_REQUEST
Value:
0x0004

Definition at line 2668 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

SIMPLE_DESCRIPTOR_RESPONSE#

#define SIMPLE_DESCRIPTOR_RESPONSE
Value:
0x8004

Definition at line 2669 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Active Endpoints Request / Response Documentation#

ACTIVE_ENDPOINTS_REQUEST#

#define ACTIVE_ENDPOINTS_REQUEST
Value:
0x0005

Definition at line 2680 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

ACTIVE_ENDPOINTS_RESPONSE#

#define ACTIVE_ENDPOINTS_RESPONSE
Value:
0x8005

Definition at line 2681 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Match Descriptors Request / Response Documentation#

MATCH_DESCRIPTORS_REQUEST#

#define MATCH_DESCRIPTORS_REQUEST
Value:
0x0006

Definition at line 2695 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

MATCH_DESCRIPTORS_RESPONSE#

#define MATCH_DESCRIPTORS_RESPONSE
Value:
0x8006

Definition at line 2696 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Discovery Cache Request / Response Documentation#

DISCOVERY_CACHE_REQUEST#

#define DISCOVERY_CACHE_REQUEST
Value:
0x0012

Definition at line 2708 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

DISCOVERY_CACHE_RESPONSE#

#define DISCOVERY_CACHE_RESPONSE
Value:
0x8012

Definition at line 2709 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

End Device Announce and End Device Announce Response Documentation#

END_DEVICE_ANNOUNCE#

#define END_DEVICE_ANNOUNCE
Value:
0x0013

Definition at line 2720 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

END_DEVICE_ANNOUNCE_RESPONSE#

#define END_DEVICE_ANNOUNCE_RESPONSE
Value:
0x8013

Definition at line 2721 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

System Server Discovery Request / Response Documentation#

SYSTEM_SERVER_DISCOVERY_REQUEST#

#define SYSTEM_SERVER_DISCOVERY_REQUEST
Value:
0x0015

Definition at line 2735 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

SYSTEM_SERVER_DISCOVERY_RESPONSE#

#define SYSTEM_SERVER_DISCOVERY_RESPONSE
Value:
0x8015

Definition at line 2736 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Parent Announce and Parent Announce Response Documentation#

PARENT_ANNOUNCE#

#define PARENT_ANNOUNCE
Value:
0x001F

Definition at line 2751 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

PARENT_ANNOUNCE_RESPONSE#

#define PARENT_ANNOUNCE_RESPONSE
Value:
0x801F

Definition at line 2752 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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
EMBER_ZDP_NETWORK_MANAGER

Definition at line 2760 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Find Node Cache Request / Response Documentation#

FIND_NODE_CACHE_REQUEST#

#define FIND_NODE_CACHE_REQUEST
Value:
0x001C

Definition at line 2789 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

FIND_NODE_CACHE_RESPONSE#

#define FIND_NODE_CACHE_RESPONSE
Value:
0x801C

Definition at line 2790 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

End Device Bind Request / Response Documentation#

END_DEVICE_BIND_REQUEST#

#define END_DEVICE_BIND_REQUEST
Value:
0x0020

Definition at line 2803 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

END_DEVICE_BIND_RESPONSE#

#define END_DEVICE_BIND_RESPONSE
Value:
0x8020

Definition at line 2804 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Binding types and Request / Response Documentation#

UNICAST_BINDING#

#define UNICAST_BINDING
Value:
0x03

Definition at line 2824 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

UNICAST_MANY_TO_ONE_BINDING#

#define UNICAST_MANY_TO_ONE_BINDING
Value:
0x83

Definition at line 2825 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

MULTICAST_BINDING#

#define MULTICAST_BINDING
Value:
0x01

Definition at line 2826 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

BIND_REQUEST#

#define BIND_REQUEST
Value:
0x0021

Definition at line 2828 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

BIND_RESPONSE#

#define BIND_RESPONSE
Value:
0x8021

Definition at line 2829 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

UNBIND_REQUEST#

#define UNBIND_REQUEST
Value:
0x0022

Definition at line 2830 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

UNBIND_RESPONSE#

#define UNBIND_RESPONSE
Value:
0x8022

Definition at line 2831 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

LQI Table Request / Response Documentation#

LQI_TABLE_REQUEST#

#define LQI_TABLE_REQUEST
Value:
0x0031

Definition at line 2881 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

LQI_TABLE_RESPONSE#

#define LQI_TABLE_RESPONSE
Value:
0x8031

Definition at line 2882 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Routing Table Request / Response Documentation#

ROUTING_TABLE_REQUEST#

#define ROUTING_TABLE_REQUEST
Value:
0x0032

Definition at line 2917 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

ROUTING_TABLE_RESPONSE#

#define ROUTING_TABLE_RESPONSE
Value:
0x8032

Definition at line 2918 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Binding Table Request / Response Documentation#

BINDING_TABLE_REQUEST#

#define BINDING_TABLE_REQUEST
Value:
0x0033

Definition at line 2939 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

BINDING_TABLE_RESPONSE#

#define BINDING_TABLE_RESPONSE
Value:
0x8033

Definition at line 2940 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Leave Request / Response Documentation#

LEAVE_REQUEST#

#define LEAVE_REQUEST
Value:
0x0034

Definition at line 2953 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

LEAVE_RESPONSE#

#define LEAVE_RESPONSE
Value:
0x8034

Definition at line 2954 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

LEAVE_REQUEST_REMOVE_CHILDREN_FLAG#

#define LEAVE_REQUEST_REMOVE_CHILDREN_FLAG
Value:
0x40

Definition at line 2956 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

LEAVE_REQUEST_REJOIN_FLAG#

#define LEAVE_REQUEST_REJOIN_FLAG
Value:
0x80

Definition at line 2957 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Permit Joining Request / Response Documentation#

PERMIT_JOINING_REQUEST#

#define PERMIT_JOINING_REQUEST
Value:
0x0036

Definition at line 2968 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

PERMIT_JOINING_RESPONSE#

#define PERMIT_JOINING_RESPONSE
Value:
0x8036

Definition at line 2969 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Network Update Request / Response Documentation#

NWK_UPDATE_REQUEST#

#define NWK_UPDATE_REQUEST
Value:
0x0038

Definition at line 2997 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NWK_UPDATE_RESPONSE#

#define NWK_UPDATE_RESPONSE
Value:
0x8038

Definition at line 2998 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NWK_UPDATE_ENHANCED_REQUEST#

#define NWK_UPDATE_ENHANCED_REQUEST
Value:
0x0039

Definition at line 3000 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NWK_UPDATE_ENHANCED_RESPONSE#

#define NWK_UPDATE_ENHANCED_RESPONSE
Value:
0x8039

Definition at line 3001 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NWK_UPDATE_IEEE_JOINING_LIST_REQUEST#

#define NWK_UPDATE_IEEE_JOINING_LIST_REQUEST
Value:
0x003A

Definition at line 3003 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NWK_UPDATE_IEEE_JOINING_LIST_REPONSE#

#define NWK_UPDATE_IEEE_JOINING_LIST_REPONSE
Value:
0x803A

Definition at line 3004 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFY#

#define NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFY
Value:
0x803B

Definition at line 3006 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Unsupported Documentation#

COMPLEX_DESCRIPTOR_REQUEST#

#define COMPLEX_DESCRIPTOR_REQUEST
Value:
0x0010

Definition at line 3013 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

COMPLEX_DESCRIPTOR_RESPONSE#

#define COMPLEX_DESCRIPTOR_RESPONSE
Value:
0x8010

Definition at line 3014 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

USER_DESCRIPTOR_REQUEST#

#define USER_DESCRIPTOR_REQUEST
Value:
0x0011

Definition at line 3015 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

USER_DESCRIPTOR_RESPONSE#

#define USER_DESCRIPTOR_RESPONSE
Value:
0x8011

Definition at line 3016 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

DISCOVERY_REGISTER_REQUEST#

#define DISCOVERY_REGISTER_REQUEST
Value:
0x0012

Definition at line 3017 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

DISCOVERY_REGISTER_RESPONSE#

#define DISCOVERY_REGISTER_RESPONSE
Value:
0x8012

Definition at line 3018 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

USER_DESCRIPTOR_SET#

#define USER_DESCRIPTOR_SET
Value:
0x0014

Definition at line 3019 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

USER_DESCRIPTOR_CONFIRM#

#define USER_DESCRIPTOR_CONFIRM
Value:
0x8014

Definition at line 3020 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NETWORK_DISCOVERY_REQUEST#

#define NETWORK_DISCOVERY_REQUEST
Value:
0x0030

Definition at line 3021 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

NETWORK_DISCOVERY_RESPONSE#

#define NETWORK_DISCOVERY_RESPONSE
Value:
0x8030

Definition at line 3022 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

DIRECT_JOIN_REQUEST#

#define DIRECT_JOIN_REQUEST
Value:
0x0035

Definition at line 3023 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

DIRECT_JOIN_RESPONSE#

#define DIRECT_JOIN_RESPONSE
Value:
0x8035

Definition at line 3024 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

CLUSTER_ID_RESPONSE_MINIMUM#

#define CLUSTER_ID_RESPONSE_MINIMUM
Value:
0x8000

Definition at line 3026 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 3066 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MAX_MAC_ONLY_COUNTERS#

#define EMBER_MAX_MAC_ONLY_COUNTERS
Value:
33

Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.


Definition at line 3085 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EMBER_MAX_NUM_PHYS#

#define EMBER_MAX_NUM_PHYS
Value:
2

Defines the maximum number of PHYs supported.


Definition at line 3091 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

PHY_INDEX_NATIVE#

#define PHY_INDEX_NATIVE
Value:
0

PHY index for 2.4 GHz radio interface, valid for simultaneous multi radio network.


Definition at line 3096 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

PHY_INDEX_PRO2PLUS#

#define PHY_INDEX_PRO2PLUS
Value:
1

PHY index for Sub-GHz radio interface, valid for simultaneous multi radio network.


Definition at line 3101 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 3042 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 3070 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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
EMBER_OUTGOING_MESSAGES

There are messages waiting for transmission.

EMBER_INCOMING_MESSAGES

One or more incoming messages being processed.

EMBER_RADIO_IS_ON

The radio is currently powered on. On sleepy devices, the radio is turned off when not in use. On non-sleepy devices (EMBER_COORDINATOR, EMBER_ROUTER, or EMBER_END_DEVICE), the radio is always on.

EMBER_TRANSPORT_ACTIVE

The transport layer has messages awaiting an ACK.

EMBER_APS_LAYER_ACTIVE

The ZigBee APS layer has messages awaiting an ACK.

EMBER_ASSOCIATING

The node is currently trying to associate with a ZigBee PRO network.

EMBER_ZLL_TOUCH_LINKING

The node is currently touch linking.

EMBER_NETWORK_TIMEOUT_REQUEST

Network Timeout Request Event.

EMBER_SEND_ORPHAN_NOTIFICATION

Sending Orphan Notification Event.

EMBER_MAC_DATA_POLL_SUPER_RETRY

MAC Data Poll Super Retry Event .

INITIAL
SCAN_FOR_TOUCH_LINK
SCAN_FOR_DEVICE_INFORMATION
SCAN_FOR_IDENTIFY
SCAN_FOR_RESET
TARGET_NETWORK_FOUND
ABORTING_TOUCH_LINK
SCAN_COMPLETE
TOUCH_LINK_TARGET
FORMING_NETWORK
RESETTING_TO_FACTORY_NEW
ADC_REF_INT

Internal reference.

TOKEN_COUNT
COMM_SERIAL
COMM_RADIO

Definition at line 3113 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 3130 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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
EMBER_RADIO_POWER_MODE_RX_ON
EMBER_RADIO_POWER_MODE_OFF
ADC_SAMPLE_CLOCKS_32

Rate 32 cycles, 5 effective bits in ADC_DATA[15:11]

ADC_SAMPLE_CLOCKS_64

Rate 64 cycles, 6 effective bits in ADC_DATA[15:10]

ADC_SAMPLE_CLOCKS_128

Rate 128 cycles, 7 effective bits in ADC_DATA[15:9]

ADC_SAMPLE_CLOCKS_256

Rate 256 cycles, 8 effective bits in ADC_DATA[15:8]

ADC_SAMPLE_CLOCKS_512

Rate 512 cycles, 9 effective bits in ADC_DATA[15:7]

ADC_SAMPLE_CLOCKS_1024

Rate 1024 cycles, 10 effective bits in ADC_DATA[15:6]

ADC_SAMPLE_CLOCKS_2048

Rate 2048 cycles, 11 effective bits in ADC_DATA[15:5]

ADC_SAMPLE_CLOCKS_4096

Rate 4096 cycles, 12 effective bits in ADC_DATA[15:4]


Definition at line 3142 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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 prent's keep alive mechanism is unknown to end-device.

EMBER_MAC_DATA_POLL_KEEP_ALIVE, means 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 parent needs explicit keep alive messages (net work timeoit requests) to keep the child in its child table.

EMBER_KEEP_ALIVE_SUPPORT_ALL bascially maps to EMBER_MAC_DATA_POLL_KEEP_ALIVE, as it is the prefered approach between the 2

Enumerator
EMBER_KEEP_ALIVE_SUPPORT_UNKNOWN
EMBER_MAC_DATA_POLL_KEEP_ALIVE
EMBER_END_DEVICE_TIMEOUT_KEEP_ALIVE
EMBER_KEEP_ALIVE_SUPPORT_ALL

Definition at line 3178 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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 immidiately and then trifggered periodically

Enumerator
EMBER_SOURCE_ROUTE_DISCOVERY_OFF

off

EMBER_SOURCE_ROUTE_DISCOVERY_ON

on

EMBER_SOURCE_ROUTE_DISCOVERY_RESCHEDULE

reschedule


Definition at line 3199 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 3229 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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 preceeded 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)


Definition at line 3248 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

EmberRadioPowerMode#

typedef uint8_t EmberRadioPowerMode

Radio power mode.


Definition at line 3106 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

Macro Definition Documentation#

EMBER_MIN_BROADCAST_ADDRESS#

#define EMBER_MIN_BROADCAST_ADDRESS
Value:
0xFFF8

Definition at line 525 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h

emberIsZigbeeBroadcastAddress#

#define emberIsZigbeeBroadcastAddress
Value:
(address)

Returns true if nodeId (short address) is a broadcast address.


Definition at line 530 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 538 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 562 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 589 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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

Definition at line 658 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 676 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 747 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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().


Definition at line 771 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 805 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 829 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 858 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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_LEAVING_NETWORK

The node is in the process of leaving its current network.


Definition at line 894 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.

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_LAST_SCAN_TYPE

Definition at line 927 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/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.


Definition at line 948 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/ember-types.h