Ember Common Data Types

Data Structures

struct  EmberReleaseTypeStruct
 A structure relating version types to human readable strings.
 
struct  EmberVersion
 A version structure containing all version information.
 
struct  EmberZigbeeNetwork
 Defines a ZigBee network and the associated parameters.
 
struct  EmberNetworkInitStruct
 Defines the network initialization configuration that should be used when emberNetworkInit() is called by the application.
 
struct  EmberBeaconSurvey
 Defines a result of a network beacon survey.
 
struct  EmberNetworkParameters
 Holds network parameters.
 
struct  EmberMultiPhyRadioParameters
 Holds radio parameters.
 
struct  EmberApsFrame
 An in-memory representation of a ZigBee APS frame of an incoming or outgoing message.
 
struct  EmberChildData
 This structure contains information about child nodes.
 
struct  EmberBindingTableEntry
 Defines an entry in the binding table.
 
struct  EmberNeighborTableEntry
 Defines an entry in the neighbor table.
 
struct  EmberRouteTableEntry
 Defines an entry in the route table.
 
struct  EmberMulticastTableEntry
 Defines an entry in the multicast table.
 
struct  EmberMultiprotocolPriorities
 
struct  EmberCounterInfo
 
struct  EmberExtraCounterInfo
 
struct  EmberEventControl
 The control structure for events.
 
struct  EmberEventData
 Complete events with a control and a handler procedure.
 
struct  EmberTaskControl
 The control structure for tasks.
 
struct  EmberKeyData
 This data structure contains the key data that is passed into various other functions.
 
struct  EmberCertificateData
 This data structure contains the certificate data that is used for Certificate Based Key Exchange (CBKE).
 
struct  EmberPublicKeyData
 This data structure contains the public key data that is used for Certificate Based Key Exchange (CBKE).
 
struct  EmberPrivateKeyData
 This data structure contains the private key data that is used for Certificate Based Key Exchange (CBKE).
 
struct  EmberSmacData
 This data structure contains the Shared Message Authentication Code (SMAC) data that is used for Certificate Based Key Exchange (CBKE).
 
struct  EmberSignatureData
 This data structure contains a DSA signature. It is the bit concatenation of the 'r' and 's' components of the signature.
 
struct  EmberMessageDigest
 This data structure contains an AES-MMO Hash (the message digest).
 
struct  EmberAesMmoHashContext
 This data structure contains the context data when calculating an AES MMO hash (message digest).
 
struct  EmberCertificate283k1Data
 This data structure contains the certificate data that is used for Certificate Based Key Exchange (CBKE) in SECT283k1 Elliptical Cryptography.
 
struct  EmberPublicKey283k1Data
 This data structure contains the public key data that is used for Certificate Based Key Exchange (CBKE) in SECT283k1 Elliptical Cryptography.
 
struct  EmberPrivateKey283k1Data
 This data structure contains the private key data that is used for Certificate Based Key Exchange (CBKE) in SECT283k1 Elliptical Cryptography.
 
struct  EmberSignature283k1Data
 This data structure contains a DSA signature used in SECT283k1 Elliptical Cryptography. It is the bit concatenation of the 'r' and 's' components of the signature.
 
struct  EmberInitialSecurityState
 This describes the Initial Security features and requirements that will be used when forming or joining the network.
 
struct  EmberCurrentSecurityState
 This describes the security features used by the stack for a joined device.
 
struct  EmberTransientKeyData
 This data structure contains the transient key data that is used during Zigbee 3.0 joining.
 
struct  EmberKeyStruct
 This describes a one of several different types of keys and its associated data.
 
struct  EmberMfgSecurityStruct
 This structure is used to get/set the security configuration that is stored in manufacturing tokens.
 
struct  EmberDutyCycleLimits
 A structure containing duty cycle limit configurations.
 
struct  EmberPerDeviceDutyCycle
 A structure containing, per device, overall duty cycle consumed (up to the suspend limit).
 
struct  EmberMacFilterMatchStruct
 This structure indicates a matching raw MAC message has been received by the application configured MAC filters.
 
struct  SourceRouteTableEntry
 
struct  EmberBeaconClassificationParams

Macros

#define EMBER_MIN_BROADCAST_ADDRESS   0xFFF8
 
#define emberIsZigbeeBroadcastAddress(address)   (EMBER_MIN_BROADCAST_ADDRESS <= ((uint16_t) (address)))
 
#define EMBER_JOIN_DECISION_STRINGS
 
#define EMBER_DEVICE_UPDATE_STRINGS
 
#define emberInitializeNetworkParameters(parameters)   (MEMSET(parameters, 0, sizeof(EmberNetworkParameters)))
 
#define EMBER_COUNTER_STRINGS
 
#define EMBER_STANDARD_SECURITY_MODE   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.
 
#define EMBER_TRUST_CENTER_NODE_ID   0x0000
 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 EMBER_MFG_SECURITY_CONFIG_MAGIC_NUMBER   0xCABAD11FUL
 This magic number prevents accidentally changing the key settings. The emberSetMfgSecurityConfig() API will return EMBER_INVALID_CALL unless it is passed in.
 
#define EMBER_MAC_FILTER_MATCH_ENABLED_MASK   0x0001
 
#define EMBER_MAC_FILTER_MATCH_ON_PAN_DEST_MASK   0x0003
 
#define EMBER_MAC_FILTER_MATCH_ON_PAN_SOURCE_MASK   0x000C
 
#define EMBER_MAC_FILTER_MATCH_ON_DEST_MASK   0x0030
 
#define EMBER_MAC_FILTER_MATCH_ON_SOURCE_MASK   0x0080
 
#define EMBER_MAC_FILTER_MATCH_ENABLED   0x0000
 
#define EMBER_MAC_FILTER_MATCH_DISABLED   0x0001
 
#define EMBER_MAC_FILTER_MATCH_ON_PAN_DEST_NONE   0x0000
 
#define EMBER_MAC_FILTER_MATCH_ON_PAN_DEST_LOCAL   0x0001
 
#define EMBER_MAC_FILTER_MATCH_ON_PAN_DEST_BROADCAST   0x0002
 
#define EMBER_MAC_FILTER_MATCH_ON_PAN_SOURCE_NONE   0x0000
 
#define EMBER_MAC_FILTER_MATCH_ON_PAN_SOURCE_NON_LOCAL   0x0004
 
#define EMBER_MAC_FILTER_MATCH_ON_PAN_SOURCE_LOCAL   0x0008
 
#define EMBER_MAC_FILTER_MATCH_ON_DEST_BROADCAST_SHORT   0x0000
 
#define EMBER_MAC_FILTER_MATCH_ON_DEST_UNICAST_SHORT   0x0010
 
#define EMBER_MAC_FILTER_MATCH_ON_DEST_UNICAST_LONG   0x0020
 
#define EMBER_MAC_FILTER_MATCH_ON_SOURCE_LONG   0x0000
 
#define EMBER_MAC_FILTER_MATCH_ON_SOURCE_SHORT   0x0080
 
#define EMBER_MAC_FILTER_MATCH_ON_SOURCE_NONE   0x0100
 
#define EMBER_MAC_FILTER_MATCH_END   0x8000
 
#define WEAK_TEST
 
#define EMBER_MAX_MAC_ONLY_COUNTERS   33
 Defines the maximum number of counters that are specified as reporting either on 2.4 GHz or Sub-GHz.
 
#define EMBER_MAX_NUM_PHYS   2
 Defines the maximum number of PHYs supported.
 
#define PHY_INDEX_NATIVE   0
 PHY index for 2.4 GHz radio interface, valid for simultaneous multi radio network.
 
#define PHY_INDEX_PRO2PLUS   1
 PHY index for Sub-GHz radio interface, valid for simultaneous multi radio network.

Typedefs

typedef uint8_t EmberTaskId
 
typedef uint16_t EmberMacFilterMatchData
 This is a bitmask describing a filter for MAC data messages that the stack should accept and pass through to the application.
 
typedef uint8_t EmberLibraryStatus
 This indicates the presence, absence, or status of an Ember stack library.
 
typedef uint8_t EmberRadioPowerMode
 Radio power mode.

Enumerations

enum  EmberNodeType {
  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  EmberEndDeviceConfiguration {
  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  EmberNetworkInitBitmask {
  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  EmberApsRejoinMode {
  NO_REJOIN,
  REJOIN_ANY_LINK_KEY,
  REJOIN_NON_DEFAULT_LINK_KEY
}
 Options to allow/disallow rejoins using the default link key.
 
enum  EmberApsOption {
  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  EmberIncomingMessageType {
  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  EmberOutgoingMessageType {
  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  EmberZigbeeCommandType {
  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  EmberPacketAction {
  EMBER_DROP_PACKET = 0,
  EMBER_ACCEPT_PACKET = 1,
  EMBER_MANGLE_PACKET
}
 indication of the action taken on a packet
 
enum  EmberZigbeePacketType {
  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
}
 A type of packet received by the stack.
 
enum  EmberNetworkStatus {
  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  EmberNetworkScanType {
  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  EmberBindingType {
  EMBER_UNUSED_BINDING = 0,
  EMBER_UNICAST_BINDING = 1,
  EMBER_MANY_TO_ONE_BINDING = 2,
  EMBER_MULTICAST_BINDING = 3
}
 Defines binding types.
 
enum  EmberJoinDecision {
  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  EmberDeviceUpdate {
  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  EmberRejoinReason {
  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  EmberClusterListId {
  EMBER_INPUT_CLUSTER_LIST = 0,
  EMBER_OUTPUT_CLUSTER_LIST = 1
}
 Defines the lists of clusters that must be provided for each endpoint.
 
enum  EmberEventUnits {
  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  EmberJoinMethod {
  EMBER_USE_MAC_ASSOCIATION = 0,
  EMBER_USE_NWK_REJOIN = 1,
  EMBER_USE_NWK_REJOIN_HAVE_NWK_KEY = 2,
  EMBER_USE_NWK_COMMISSIONING = 3
}
 The type of method used for joining.
 
enum  EmberCounterType {
  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_TYPE_COUNT = 40
}
 Defines the events reported to the application by the emberCounterHandler().
 
enum  EmberInitialSecurityBitmask {
  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  EmberExtendedSecurityBitmask {
  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  EmberCurrentSecurityBitmask {
  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  EmberKeyStructBitmask {
  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  EmberKeyType {
  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  EmberKeyStatus {
  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  EmberTcLinkKeyRequestPolicy {
  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  EmberAppLinkKeyRequestPolicy {
  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  EmberKeySettings {
  EMBER_KEY_PERMISSIONS_NONE = 0x0000,
  EMBER_KEY_PERMISSIONS_READING_ALLOWED = 0x0001,
  EMBER_KEY_PERMISSIONS_HASHING_ALLOWED = 0x0002
}
 
enum  EmberMacPassthroughType {
  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.
 
enum  EmberMultiPhyNwkConfig {
  EMBER_MULTI_PHY_ROUTERS_ALLOWED = 0x01,
  EMBER_MULTI_PHY_BROADCASTS_ENABLED = 0x02,
  EMBER_MULTI_PHY_DISABLED = 0x80
}
 
enum  {
  PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION = 0x0001,
  PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY = 0x0002,
  TC_CONNECTIVITY = 0x0010,
  LONG_UPTIME = 0x0020,
  BAD_PARENT_CONNECTIVITY = 0x0040
}
 
enum  EmberEntropySource {
  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  {
  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
}

Functions

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.

Miscellaneous Ember Types

enum  EmberVersionType {
  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  EmberLeaveRequestFlags {
  EMBER_ZIGBEE_LEAVE_AND_REJOIN = 0x80,
  EMBER_ZIGBEE_LEAVE_AND_REMOVE_CHILDREN = 0x40
}
 EmberReleaseTypeStruct Data that relates release type to the correct string.
 
enum  EmberLeaveReason {
  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 uint8_t EmberEUI64[EUI64_SIZE]
 EUI 64-bit ID (an IEEE address).
 
typedef uint8_t EmberMessageBuffer
 Incoming and outgoing messages are stored in buffers. These buffers are allocated and freed as needed.
 
typedef uint16_t EmberNodeId
 16-bit ZigBee network address.
 
typedef uint16_t EmberMulticastId
 16-bit ZigBee multicast group identifier.
 
typedef uint16_t EmberPanId
 802.15.4 PAN ID.
 
typedef uint16_t EmberDutyCycleHectoPct
 The percent of duty cycle for a limit.
 
const EmberVersion emberVersion
 A structure containing the version information.
 
#define EMBER_RELEASE_TYPE_TO_STRING_STRUCT_DATA
 EmberReleaseTypeStruct Data that relates release type to the correct string.
 
#define EUI64_SIZE   8
 Size of EUI64 (an IEEE address) in bytes (8).
 
#define EXTENDED_PAN_ID_SIZE   8
 Size of an extended PAN identifier in bytes (8).
 
#define EMBER_ENCRYPTION_KEY_SIZE   16
 Size of an encryption key in bytes (16).
 
#define EMBER_CERTIFICATE_SIZE   48
 Size of Implicit Certificates used for Certificate-based Key Exchange(CBKE).
 
#define EMBER_PUBLIC_KEY_SIZE   22
 Size of Public Keys used in Elliptical Cryptography ECMQV algorithms.
 
#define EMBER_PRIVATE_KEY_SIZE   21
 Size of Private Keys used in Elliptical Cryptography ECMQV algorithms.
 
#define EMBER_SMAC_SIZE   16
 Size of the SMAC used in Elliptical Cryptography ECMQV algorithms.
 
#define EMBER_SIGNATURE_SIZE   42
 Size of the DSA signature used in Elliptical Cryptography Digital Signature Algorithms.
 
#define EMBER_AES_HASH_BLOCK_SIZE   16
 The size of AES-128 MMO hash is 16-bytes. This is defined in the core. ZigBee specification.
 
#define EMBER_CERTIFICATE_283K1_SIZE   74
 Size of Implicit Certificates used for Certificate Based Key Exchange using the ECC283K1 curve in bytes.
 
#define EMBER_PUBLIC_KEY_283K1_SIZE   37
 Size of Public Keys used in SECT283k1 Elliptical Cryptography ECMQV algorithms.
 
#define EMBER_PRIVATE_KEY_283K1_SIZE   36
 Size of Private Keys used SECT283k1 in Elliptical Cryptography ECMQV algorithms.
 
#define EMBER_SIGNATURE_283K1_SIZE   72
 Size of the DSA signature used in SECT283k1 Elliptical Cryptography Digital Signature Algorithms.
 
#define __EMBERSTATUS_TYPE__
 Return type for Ember functions.
 
#define EMBER_MAX_802_15_4_CHANNEL_NUMBER   26
 The maximum 802.15.4 channel number is 26.
 
#define EMBER_MIN_802_15_4_CHANNEL_NUMBER   11
 The minimum 2.4GHz 802.15.4 channel number is 11.
 
#define EMBER_MIN_SUBGHZ_CHANNEL_NUMBER   0
 The minimum SubGhz channel number is 0.
 
#define EMBER_ACTIVE_SCAN_DURATION   3
 
#define EMBER_SUB_GHZ_SCAN_DURATION   5
 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 EMBER_ALL_802_15_4_CHANNELS_MASK   0x07FFF800UL
 A bitmask to scan all 2.4 GHz 802.15.4 channels.
 
#define EMBER_MAX_CHANNELS_PER_PAGE   27
 The maximum channels per page are 27 page bits 31...27, channel bits 26...0.
 
#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_28_30_31   0x07FFFFFFUL
 Sub-GHz channel bitmasks for pages 28, 30, 31.
 
#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGES_28_30_31   26
 The maximum SubGhz channel number on pages 28, 30, 31 is 26.
 
#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_29   0x1FF
 SubGhz channel bitmasks for page 29.
 
#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGE_29   8
 The maximum SubGhz channel number on page 29 is 8.
 
#define EMBER_MIN_SUGBHZ_PAGE_NUMBER   28
 The minimum SubGhz page number is 28.
 
#define EMBER_MAX_SUGBHZ_PAGE_NUMBER   31
 The maximum SubGhz page number is 31.
 
#define EMBER_ALL_CHANNEL_PAGE_MASK   0xF8000000UL
 A bitmask for the channel page within a channel mask.
 
#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK(page, mask)
 A page-channel mask for a given page and channel mask.
 
#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_NUMBER(page, channel)   EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK(page, BIT32(channel))
 A page-channel mask for a given page and channel.
 
#define EMBER_ZIGBEE_COORDINATOR_ADDRESS   0x0000
 The network ID of the coordinator in a ZigBee network is 0x0000.
 
#define EMBER_NULL_NODE_ID   0xFFFF
 A distinguished network ID that will never be assigned to any node. It is used to indicate the absence of a node ID.
 
#define EMBER_NO_CHANNEL_PAGE_IN_USE   0
 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 EMBER_NULL_BINDING   0xFF
 A distinguished binding index used to indicate the absence of a binding.
 
#define EMBER_TABLE_ENTRY_UNUSED_NODE_ID   0xFFFF
 A distinguished network ID that will never be assigned to any node.
 
#define EMBER_MULTICAST_NODE_ID   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.
 
#define EMBER_UNKNOWN_NODE_ID   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.
 
#define EMBER_DISCOVERY_ACTIVE_NODE_ID   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.
 
#define EMBER_NULL_ADDRESS_TABLE_INDEX   0xFF
 A distinguished address table index used to indicate the absence of an address table entry.
 
#define EMBER_ZDO_ENDPOINT   0
 The endpoint where the ZigBee Device Object (ZDO) resides.
 
#define EMBER_BROADCAST_ENDPOINT   0xFF
 The broadcast endpoint, as defined in the ZigBee spec.
 
#define EMBER_ZDO_PROFILE_ID   0x0000
 The profile ID used by the ZigBee Device Object (ZDO).
 
#define EMBER_WILDCARD_PROFILE_ID   0xFFFF
 The profile ID used to address all the public profiles.
 
#define EMBER_MAXIMUM_STANDARD_PROFILE_ID   0x7FFF
 The maximum value for a profile ID in the standard profile range.
 
#define EMBER_BROADCAST_TABLE_TIMEOUT_QS   (20 * 4)
 The broadcast table entry timeout, which specifies, in quarter seconds, how long an entry persists in the local device's broadcast table.
 
#define EMBER_MANUFACTURER_ID   0x1002
 Ember's Manufacturer ID.
 
#define EMBER_DC_LIMIT_USE_DEFAULT   0
 Use Ember's default duty cycle limit configurations.

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.

#define EMBER_BROADCAST_ADDRESS   0xFFFC
 
#define EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS   0xFFFD
 
#define EMBER_SLEEPY_BROADCAST_ADDRESS   0xFFFF

Ember Concentrator Types

#define EMBER_LOW_RAM_CONCENTRATOR   0xFFF8
 
#define EMBER_HIGH_RAM_CONCENTRATOR   0xFFF9

txPowerModes for emberSetTxPowerMode and mfglibSetPower

#define EMBER_TX_POWER_MODE_DEFAULT   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.
 
#define EMBER_TX_POWER_MODE_BOOST   0x0001
 The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable boost power mode.
 
#define EMBER_TX_POWER_MODE_ALTERNATE   0x0002
 The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to enable the alternate transmitter output.
 
#define EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATE
 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 EMBER_PRIVATE_PROFILE_ID   0xC00E
 This is a ZigBee application profile ID that has been assigned to Ember Corporation.
 
#define EMBER_PRIVATE_PROFILE_ID_START   0xC00D
 Ember's first private profile ID.
 
#define EMBER_PRIVATE_PROFILE_ID_END   0xC016
 Ember's last private profile ID.
 
#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

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  EmberZdoStatus {
  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 well
Response: <transaction sequence number: 1>
<status:1> <EUI64:8> <node ID:2>
<ID count:1> <start index:1> <child ID:2>*
#define NETWORK_ADDRESS_REQUEST   0x0000
 
#define NETWORK_ADDRESS_RESPONSE   0x8000
 
#define IEEE_ADDRESS_REQUEST   0x0001
 
#define IEEE_ADDRESS_RESPONSE   0x8001

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.
#define NODE_DESCRIPTOR_REQUEST   0x0002
 
#define NODE_DESCRIPTOR_RESPONSE   0x8002

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.
#define POWER_DESCRIPTOR_REQUEST   0x0003
 
#define POWER_DESCRIPTOR_RESPONSE   0x8003

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>*
#define SIMPLE_DESCRIPTOR_REQUEST   0x0004
 
#define SIMPLE_DESCRIPTOR_RESPONSE   0x8004

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>*
#define ACTIVE_ENDPOINTS_REQUEST   0x0005
 
#define ACTIVE_ENDPOINTS_RESPONSE   0x8005

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>*
#define MATCH_DESCRIPTORS_REQUEST   0x0006
 
#define MATCH_DESCRIPTORS_RESPONSE   0x8006

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>
#define DISCOVERY_CACHE_REQUEST   0x0012
 
#define DISCOVERY_CACHE_RESPONSE   0x8012

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 END_DEVICE_ANNOUNCE   0x0013
 
#define END_DEVICE_ANNOUNCE_RESPONSE   0x8013

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>
#define SYSTEM_SERVER_DISCOVERY_REQUEST   0x0015
 
#define SYSTEM_SERVER_DISCOVERY_RESPONSE   0x8015

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 PARENT_ANNOUNCE   0x001F
 
#define PARENT_ANNOUNCE_RESPONSE   0x801F

ZDO server mask bits


These are used in server discovery requests and responses.

enum  EmberZdoServerMask {
  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>
#define FIND_NODE_CACHE_REQUEST   0x001C
 
#define FIND_NODE_CACHE_RESPONSE   0x801C

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>
#define END_DEVICE_BIND_REQUEST   0x0020
 
#define END_DEVICE_BIND_RESPONSE   0x8020

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

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 Values
device type 0x03 0x00 coordinator
0x01 router
0x02 end device
0x03 unknown
rx mode 0x0C 0x00 off when idle
0x04 on when idle
0x08 unknown
relationship 0x70 0x00 parent
0x10 child
0x20 sibling
0x30 other
0x40 previous child
reserved 0x10

The permit-joining byte has the following fields

Name Mask Values
permit joining 0x03 0x00 not accepting join requests
0x01 accepting join requests
0x02 unknown
reserved 0xFC
#define LQI_TABLE_REQUEST   0x0031
 
#define LQI_TABLE_RESPONSE   0x8031

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 Values
status 0x07 0x00 active
0x01 discovery underway
0x02 discovery failed
0x03 inactive
0x04 validation underway
flags 0x38
0x08 memory constrained
0x10 many-to-one
0x20 route record required
reserved 0xC0
#define ROUTING_TABLE_REQUEST   0x0032
 
#define ROUTING_TABLE_RESPONSE   0x8032

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>


Note
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 BINDING_TABLE_REQUEST   0x0033
 
#define BINDING_TABLE_RESPONSE   0x8033

Leave Request / Response


Request: <transaction sequence number: 1> <EUI64:8> <flags:1>
The flag bits are:
0x40 remove children
0x80 rejoin
Response: <transaction sequence number: 1> <status:1>
#define LEAVE_REQUEST   0x0034
 
#define LEAVE_RESPONSE   0x8034
 
#define LEAVE_REQUEST_REMOVE_CHILDREN_FLAG   0x40
 
#define LEAVE_REQUEST_REJOIN_FLAG   0x80

Permit Joining Request / Response


Request: <transaction sequence number: 1>
<duration:1> <permit authentication:1>
Response: <transaction sequence number: 1> <status:1>
#define PERMIT_JOINING_REQUEST   0x0036
 
#define PERMIT_JOINING_RESPONSE   0x8036

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

Unsupported


Not mandatory and not supported.

#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

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_REQUESTS

See ember-configuration.h for more information.

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

Detailed Description

See ember-types.h for source code.

Macro Definition Documentation

#define __EMBERSTATUS_TYPE__

Return type for Ember functions.

#define ACTIVE_ENDPOINTS_REQUEST   0x0005
#define ACTIVE_ENDPOINTS_RESPONSE   0x8005
#define BIND_REQUEST   0x0021
#define BIND_RESPONSE   0x8021
#define BINDING_TABLE_REQUEST   0x0033
#define BINDING_TABLE_RESPONSE   0x8033
#define CLUSTER_ID_RESPONSE_MINIMUM   0x8000
#define COMPLEX_DESCRIPTOR_REQUEST   0x0010
#define COMPLEX_DESCRIPTOR_RESPONSE   0x8010
#define DIRECT_JOIN_REQUEST   0x0035
#define DIRECT_JOIN_RESPONSE   0x8035
#define DISCOVERY_CACHE_REQUEST   0x0012
#define DISCOVERY_CACHE_RESPONSE   0x8012
#define DISCOVERY_REGISTER_REQUEST   0x0012
#define DISCOVERY_REGISTER_RESPONSE   0x8012
#define EMBER_ACTIVE_SCAN_DURATION   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.

#define EMBER_AES_HASH_BLOCK_SIZE   16

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

#define EMBER_ALL_802_15_4_CHANNELS_MASK   0x07FFF800UL

A bitmask to scan all 2.4 GHz 802.15.4 channels.

#define EMBER_ALL_CHANNEL_PAGE_MASK   0xF8000000UL

A bitmask for the channel page within a channel mask.

#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_28_30_31   0x07FFFFFFUL

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

#define EMBER_ALL_SUBGHZ_CHANNELS_MASK_FOR_PAGES_29   0x1FF

SubGhz channel bitmasks for page 29.

#define EMBER_BROADCAST_ADDRESS   0xFFFC

Broadcast to all routers.

#define EMBER_BROADCAST_ENDPOINT   0xFF

The broadcast endpoint, as defined in the ZigBee spec.

#define EMBER_BROADCAST_TABLE_TIMEOUT_QS   (20 * 4)

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

#define EMBER_CERTIFICATE_283K1_SIZE   74

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

#define EMBER_CERTIFICATE_SIZE   48

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

#define EMBER_COUNTER_STRINGS

@ brief Defines the CLI enumerations for the EmberCounterType enum.

#define EMBER_DC_LIMIT_USE_DEFAULT   0

Use Ember's default duty cycle limit configurations.

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

@ brief Defines the CLI enumerations for the EmberDeviceUpdate enum.

#define EMBER_DISCOVERY_ACTIVE_NODE_ID   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.

#define EMBER_ENCRYPTION_KEY_SIZE   16

Size of an encryption key in bytes (16).

#define EMBER_GLOBAL_LINK_KEY   EMBER_TRUST_CENTER_GLOBAL_LINK_KEY

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

#define EMBER_HIGH_RAM_CONCENTRATOR   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.

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

#define EMBER_LOW_RAM_CONCENTRATOR   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.

#define EMBER_MAC_FILTER_MATCH_DISABLED   0x0001
#define EMBER_MAC_FILTER_MATCH_ENABLED   0x0000
#define EMBER_MAC_FILTER_MATCH_ENABLED_MASK   0x0001
#define EMBER_MAC_FILTER_MATCH_END   0x8000
#define EMBER_MAC_FILTER_MATCH_ON_DEST_BROADCAST_SHORT   0x0000
#define EMBER_MAC_FILTER_MATCH_ON_DEST_MASK   0x0030
#define EMBER_MAC_FILTER_MATCH_ON_DEST_UNICAST_LONG   0x0020
#define EMBER_MAC_FILTER_MATCH_ON_DEST_UNICAST_SHORT   0x0010
#define EMBER_MAC_FILTER_MATCH_ON_PAN_DEST_BROADCAST   0x0002
#define EMBER_MAC_FILTER_MATCH_ON_PAN_DEST_LOCAL   0x0001
#define EMBER_MAC_FILTER_MATCH_ON_PAN_DEST_MASK   0x0003
#define EMBER_MAC_FILTER_MATCH_ON_PAN_DEST_NONE   0x0000
#define EMBER_MAC_FILTER_MATCH_ON_PAN_SOURCE_LOCAL   0x0008
#define EMBER_MAC_FILTER_MATCH_ON_PAN_SOURCE_MASK   0x000C
#define EMBER_MAC_FILTER_MATCH_ON_PAN_SOURCE_NON_LOCAL   0x0004
#define EMBER_MAC_FILTER_MATCH_ON_PAN_SOURCE_NONE   0x0000
#define EMBER_MAC_FILTER_MATCH_ON_SOURCE_LONG   0x0000
#define EMBER_MAC_FILTER_MATCH_ON_SOURCE_MASK   0x0080
#define EMBER_MAC_FILTER_MATCH_ON_SOURCE_NONE   0x0100
#define EMBER_MAC_FILTER_MATCH_ON_SOURCE_SHORT   0x0080
#define EMBER_MANUFACTURER_ID   0x1002

Ember's Manufacturer ID.

#define EMBER_MAX_802_15_4_CHANNEL_NUMBER   26

The maximum 802.15.4 channel number is 26.

#define EMBER_MAX_CHANNELS_PER_PAGE   27

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

#define EMBER_MAX_MAC_ONLY_COUNTERS   33

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

#define EMBER_MAX_NUM_PHYS   2

Defines the maximum number of PHYs supported.

#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGE_29   8

The maximum SubGhz channel number on page 29 is 8.

#define EMBER_MAX_SUBGHZ_CHANNEL_NUMBER_ON_PAGES_28_30_31   26

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

#define EMBER_MAX_SUGBHZ_PAGE_NUMBER   31

The maximum SubGhz page number is 31.

#define EMBER_MAXIMUM_STANDARD_PROFILE_ID   0x7FFF

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

#define EMBER_MFG_SECURITY_CONFIG_MAGIC_NUMBER   0xCABAD11FUL

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

#define EMBER_MIN_802_15_4_CHANNEL_NUMBER   11

The minimum 2.4GHz 802.15.4 channel number is 11.

#define EMBER_MIN_BROADCAST_ADDRESS   0xFFF8
#define EMBER_MIN_SUBGHZ_CHANNEL_NUMBER   0

The minimum SubGhz channel number is 0.

#define EMBER_MIN_SUGBHZ_PAGE_NUMBER   28

The minimum SubGhz page number is 28.

#define EMBER_MULTICAST_NODE_ID   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.

#define EMBER_NO_CHANNEL_PAGE_IN_USE   0

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

#define EMBER_NO_TRUST_CENTER_MODE   EMBER_DISTRIBUTED_TRUST_CENTER_MODE

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

#define EMBER_NULL_ADDRESS_TABLE_INDEX   0xFF

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

#define EMBER_NULL_BINDING   0xFF

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

#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 EMBER_NULL_NODE_ID   0xFFFF

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

#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 EMBER_OTA_CERTIFICATE_UPGRADE_CLUSTER   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.

#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK (   page,
  mask 
)
Value:
| (((uint32_t)(mask)) & ~EMBER_ALL_CHANNEL_PAGE_MASK))
#define EMBER_ALL_CHANNEL_PAGE_MASK
A bitmask for the channel page within a channel mask.
Definition: ember-types.h:302
#define EMBER_MAX_CHANNELS_PER_PAGE
The maximum channels per page are 27 page bits 31...27, channel bits 26...0.
Definition: ember-types.h:268

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

#define EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_NUMBER (   page,
  channel 
)    EMBER_PAGE_CHANNEL_MASK_FROM_CHANNEL_MASK(page, BIT32(channel))

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

#define EMBER_PRIVATE_KEY_283K1_SIZE   36

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

#define EMBER_PRIVATE_KEY_SIZE   21

Size of Private Keys used in Elliptical Cryptography ECMQV algorithms.

#define EMBER_PRIVATE_PROFILE_ID   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.

#define EMBER_PRIVATE_PROFILE_ID_END   0xC016

Ember's last private profile ID.

#define EMBER_PRIVATE_PROFILE_ID_START   0xC00D

Ember's first private profile ID.

#define EMBER_PUBLIC_KEY_283K1_SIZE   37

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

#define EMBER_PUBLIC_KEY_SIZE   22

Size of Public Keys used in Elliptical Cryptography ECMQV algorithms.

#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 },
#define NULL
The null pointer.
Definition: platform-common.h:221
Definition: ember-types.h:66
Definition: ember-types.h:50
Definition: ember-types.h:55
Definition: ember-types.h:58
Definition: ember-types.h:54
Definition: ember-types.h:59
Definition: ember-types.h:53
Definition: ember-types.h:57

EmberReleaseTypeStruct Data that relates release type to the correct string.

#define EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST   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.

#define EMBER_REPORT_AND_CLEAR_COUNTERS_RESPONSE   0x8004

The cluster ID used to respond to an EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST.

#define EMBER_REPORT_COUNTERS_REQUEST   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.

#define EMBER_REPORT_COUNTERS_RESPONSE   0x8003

The cluster ID used to respond to an EMBER_REPORT_COUNTERS_REQUEST.

#define EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS   0xFFFD

Broadcast to all non-sleepy devices.

#define EMBER_SIGNATURE_283K1_SIZE   72

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

#define EMBER_SIGNATURE_SIZE   42

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

#define EMBER_SLEEPY_BROADCAST_ADDRESS   0xFFFF

Broadcast to all devices, including sleepy end devices.

#define EMBER_SMAC_SIZE   16

Size of the SMAC used in Elliptical Cryptography ECMQV algorithms.

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

#define EMBER_SUB_GHZ_SCAN_DURATION   5

The SubGhz scan duration is 5.

#define EMBER_TABLE_ENTRY_UNUSED_NODE_ID   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.

#define EMBER_TRUST_CENTER_NODE_ID   0x0000

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

#define EMBER_TX_POWER_MODE_ALTERNATE   0x0002

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

#define EMBER_TX_POWER_MODE_BOOST   0x0001

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

#define EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATE
Value:
#define EMBER_TX_POWER_MODE_ALTERNATE
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to...
Definition: ember-types.h:1563
#define EMBER_TX_POWER_MODE_BOOST
The application should call emberSetTxPowerMode() with the txPowerMode parameter set to this value to...
Definition: ember-types.h:1558

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

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

#define EMBER_UNKNOWN_NODE_ID   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.

#define EMBER_WILDCARD_PROFILE_ID   0xFFFF

The profile ID used to address all the public profiles.

#define EMBER_ZDO_ENDPOINT   0

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

#define EMBER_ZDO_PROFILE_ID   0x0000

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

#define EMBER_ZIGBEE_COORDINATOR_ADDRESS   0x0000

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

#define emberInitializeNetworkParameters (   parameters)    (MEMSET(parameters, 0, sizeof(EmberNetworkParameters)))
#define emberIsZigbeeBroadcastAddress (   address)    (EMBER_MIN_BROADCAST_ADDRESS <= ((uint16_t) (address)))
#define END_DEVICE_ANNOUNCE   0x0013
#define END_DEVICE_ANNOUNCE_RESPONSE   0x8013
#define END_DEVICE_BIND_REQUEST   0x0020
#define END_DEVICE_BIND_RESPONSE   0x8020
#define EUI64_SIZE   8

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

#define EXTENDED_PAN_ID_SIZE   8

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

#define FIND_NODE_CACHE_REQUEST   0x001C
#define FIND_NODE_CACHE_RESPONSE   0x801C
#define IEEE_ADDRESS_REQUEST   0x0001
#define IEEE_ADDRESS_RESPONSE   0x8001
#define LEAVE_REQUEST   0x0034
#define LEAVE_REQUEST_REJOIN_FLAG   0x80
#define LEAVE_REQUEST_REMOVE_CHILDREN_FLAG   0x40
#define LEAVE_RESPONSE   0x8034
#define LQI_TABLE_REQUEST   0x0031
#define LQI_TABLE_RESPONSE   0x8031
#define MATCH_DESCRIPTORS_REQUEST   0x0006
#define MATCH_DESCRIPTORS_RESPONSE   0x8006
#define MULTICAST_BINDING   0x01
#define NETWORK_ADDRESS_REQUEST   0x0000
#define NETWORK_ADDRESS_RESPONSE   0x8000
#define NETWORK_DISCOVERY_REQUEST   0x0030
#define NETWORK_DISCOVERY_RESPONSE   0x8030
#define NODE_DESCRIPTOR_REQUEST   0x0002
#define NODE_DESCRIPTOR_RESPONSE   0x8002
#define NWK_UNSOLICITED_ENHANCED_UPDATE_NOTIFY   0x803B
#define NWK_UPDATE_ENHANCED_REQUEST   0x0039
#define NWK_UPDATE_ENHANCED_RESPONSE   0x8039
#define NWK_UPDATE_IEEE_JOINING_LIST_REPONSE   0x803A
#define NWK_UPDATE_IEEE_JOINING_LIST_REQUEST   0x003A
#define NWK_UPDATE_REQUEST   0x0038
#define NWK_UPDATE_RESPONSE   0x8038
#define PARENT_ANNOUNCE   0x001F
#define PARENT_ANNOUNCE_RESPONSE   0x801F
#define PERMIT_JOINING_REQUEST   0x0036
#define PERMIT_JOINING_RESPONSE   0x8036
#define PHY_INDEX_NATIVE   0

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

#define PHY_INDEX_PRO2PLUS   1

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

#define POWER_DESCRIPTOR_REQUEST   0x0003
#define POWER_DESCRIPTOR_RESPONSE   0x8003
#define ROUTING_TABLE_REQUEST   0x0032
#define ROUTING_TABLE_RESPONSE   0x8032
#define SIMPLE_DESCRIPTOR_REQUEST   0x0004
#define SIMPLE_DESCRIPTOR_RESPONSE   0x8004
#define SYSTEM_SERVER_DISCOVERY_REQUEST   0x0015
#define SYSTEM_SERVER_DISCOVERY_RESPONSE   0x8015
#define UNBIND_REQUEST   0x0022
#define UNBIND_RESPONSE   0x8022
#define UNICAST_BINDING   0x03
#define UNICAST_MANY_TO_ONE_BINDING   0x83
#define USER_DESCRIPTOR_CONFIRM   0x8014
#define USER_DESCRIPTOR_REQUEST   0x0011
#define USER_DESCRIPTOR_RESPONSE   0x8011
#define USER_DESCRIPTOR_SET   0x0014
#define WEAK_TEST

Typedef Documentation

typedef uint16_t EmberDutyCycleHectoPct

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%).

typedef uint8_t EmberEUI64[EUI64_SIZE]

EUI 64-bit ID (an IEEE address).

typedef uint8_t EmberLibraryStatus

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

typedef uint16_t EmberMacFilterMatchData

This is a bitmask describing a filter for MAC data messages that the stack should accept and pass through to the application.

typedef uint8_t EmberMessageBuffer

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.

typedef uint16_t EmberMulticastId

16-bit ZigBee multicast group identifier.

typedef uint16_t EmberNodeId

16-bit ZigBee network address.

typedef uint16_t EmberPanId

802.15.4 PAN ID.

typedef uint8_t EmberRadioPowerMode

Radio power mode.

typedef uint8_t EmberTaskId

brief An identifier for a task.

Enumeration Type Documentation

anonymous enum
Enumerator
PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION 
PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY 
TC_CONNECTIVITY 
LONG_UPTIME 
BAD_PARENT_CONNECTIVITY 
anonymous enum
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 

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 

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.

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

Enumerator
NO_REJOIN 
REJOIN_ANY_LINK_KEY 
REJOIN_NON_DEFAULT_LINK_KEY 

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.

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.

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_TYPE_COUNT 

A placeholder giving the number of Ember counter types.

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.

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 

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 

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 

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.

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.

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.

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.

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.

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_NWK_COMMISSIONING 

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.

Enumerator
EMBER_KEY_PERMISSIONS_NONE 
EMBER_KEY_PERMISSIONS_READING_ALLOWED 
EMBER_KEY_PERMISSIONS_HASHING_ALLOWED 

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 

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

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.

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 

EmberReleaseTypeStruct Data that relates release type to the correct string.

Enumerator
EMBER_ZIGBEE_LEAVE_AND_REJOIN 

Leave and rejoin.

EMBER_ZIGBEE_LEAVE_AND_REMOVE_CHILDREN 

Send all children leave command.

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.

Enumerator
EMBER_MULTI_PHY_ROUTERS_ALLOWED 
EMBER_MULTI_PHY_BROADCASTS_ENABLED 
EMBER_MULTI_PHY_DISABLED 

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.

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 

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.

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.

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().

indication of the action taken on a packet

Enumerator
EMBER_DROP_PACKET 
EMBER_ACCEPT_PACKET 
EMBER_MANGLE_PACKET 

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 

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 

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

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.

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

Function Documentation

uint8_t* ember283k1SignatureContents ( Ember283k1SignatureData *  sig)

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

uint8_t* emberCertificate283k1Contents ( EmberCertificate283k1Data cert)

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

Parameters
certA pointer to an ::Ember283k1CertificateData structure.
Returns
uint8_t* Returns a pointer to the first byte of the certificate data.
uint8_t* emberCertificateContents ( EmberCertificateData cert)

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

Parameters
certA pointer to an EmberCertificateData structure.
Returns
uint8_t* Returns a pointer to the first byte of the certificate data.
uint8_t* emberKeyContents ( EmberKeyData key)

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

Parameters
keyA pointer to an EmberKeyData structure.
Returns
uint8_t* Returns a pointer to the first byte of the Key data.
uint8_t* emberPrivateKey283k1Contents ( EmberPrivateKey283k1Data key)

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

Parameters
keyA pointer to an Ember283k1PrivateKeyData structure.
Returns
uint8_t* Returns a pointer to the first byte of the private key data.
uint8_t* emberPrivateKeyContents ( EmberPrivateKeyData key)

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

Parameters
keyA pointer to an EmberPrivateKeyData structure.
Returns
uint8_t* Returns a pointer to the first byte of the private key data.
uint8_t* emberPublicKey283k1Contents ( EmberPublicKey283k1Data key)

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

Parameters
keyA pointer to an Ember283k1PublicKeyData structure.
Returns
uint8_t* Returns a pointer to the first byte of the public key data.
uint8_t* emberPublicKeyContents ( EmberPublicKeyData key)

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

Parameters
keyA pointer to an EmberPublicKeyData structure.
Returns
uint8_t* Returns a pointer to the first byte of the public key data.
uint8_t* emberSignatureContents ( EmberSignatureData sig)

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

uint8_t* emberSmacContents ( EmberSmacData key)

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

Variable Documentation

const EmberVersion emberVersion

A structure containing the version information.