Modules#

EmberReleaseTypeStruct

EmberVersion

EmberZigbeeNetwork

EmberNetworkInitStruct

EmberBeaconSurvey

EmberBeaconData

EmberBeaconIterator

EmberNetworkParameters

EmberMultiPhyRadioParameters

EmberApsFrame

EmberChildData

EmberBindingTableEntry

EmberNeighborTableEntry

EmberRouteTableEntry

EmberMulticastTableEntry

EmberMultiprotocolPriorities

EmberCounterInfo

EmberExtraCounterInfo

EmberEventControl

EmberEventData

EmberTaskControl

EmberKeyData

EmberCertificateData

EmberPublicKeyData

EmberPrivateKeyData

EmberSmacData

EmberSignatureData

EmberMessageDigest

EmberAesMmoHashContext

EmberCertificate283k1Data

EmberPublicKey283k1Data

EmberPrivateKey283k1Data

EmberSignature283k1Data

EmberInitialSecurityState

EmberCurrentSecurityState

EmberTransientKeyData

EmberKeyStruct

EmberMfgSecurityStruct

EmberDutyCycleLimits

EmberPerDeviceDutyCycle

sl_nwk_packet_exchange_t

EmberMacFilterMatchStruct

SourceRouteTableEntry

EmberBeaconClassificationParams

EmberTokenInfo

EmberTokenData

Ember Common Data Types#

See ember-types.h for source code.

Miscellaneous Ember Types#

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

Type of Ember software version.

enum
EMBER_STACK_PROFILE_NONE = 0x00
EMBER_STACK_PROFILE_ZIGBEE_PRO = 0x02
}

EmberReleaseTypeStruct Data that relates release type to the correct string.

enum
EMBER_SECURITY_LEVEL_NONE = 0x00
EMBER_SECURITY_LEVEL_Z3 = 0x05
}

EmberReleaseTypeStruct Data that relates release type to the correct string.

enum
EMBER_ZIGBEE_LEAVE_AND_REJOIN = 0x80
EMBER_ZIGBEE_LEAVE_WITHOUT_REJOIN = 0x00
}

EmberReleaseTypeStruct Data that relates release type to the correct string.

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

EmberReleaseTypeStruct Data that relates release type to the correct string.

typedef uint16_t

16-bit ZigBee network address.

typedef uint16_t

802.15.4 PAN ID.

A structure containing the version information.

#define
EMBER_RELEASE_TYPE_TO_STRING_STRUCT_DATA undefined

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
NULL_BUFFER 0x0000u

EUI 64-bit ID (an IEEE address).

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

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

#define
EMBER_ZIGBEE_COORDINATOR_ADDRESS 0x0000u

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

#define
EMBER_NULL_NODE_ID 0xFFFFu

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

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

#define
EMBER_TABLE_ENTRY_UNUSED_NODE_ID 0xFFFFu

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

#define
EMBER_MULTICAST_NODE_ID 0xFFFEu

A distinguished network ID that will never be assigned to any node. This value is returned when getting the remote node ID from the binding table and the given binding table index refers to a multicast binding entry.

#define
EMBER_UNKNOWN_NODE_ID 0xFFFDu

A distinguished network ID that will never be assigned to any node. This value is used when getting the remote node ID from the address or binding tables. It indicates that the address or binding table entry is currently in use but the node ID corresponding to the EUI64 in the table is currently unknown.

#define
EMBER_DISCOVERY_ACTIVE_NODE_ID 0xFFFCu

A distinguished network ID that will never be assigned to any node. This value is used when getting the remote node ID from the address or binding tables. It indicates that the address or binding table entry is currently in use and network address discovery is underway.

#define
EMBER_NULL_ADDRESS_TABLE_INDEX 0xFFu

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

#define
EMBER_ZDO_ENDPOINT 0u

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

#define
EMBER_BROADCAST_ENDPOINT 0xFFu

The broadcast endpoint, as defined in the ZigBee spec.

#define
EMBER_ZDO_PROFILE_ID 0x0000u

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

#define
EMBER_WILDCARD_PROFILE_ID 0xFFFFu

The profile ID used to address all the public profiles.

#define
EMBER_MAXIMUM_STANDARD_PROFILE_ID 0x7FFFu

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

Ember's Manufacturer ID.

#define
EMBER_NULL_NETWORK_INDEX 0xFFu

An invalid network index.

#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 0xFFFCu
#define
EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS 0xFFFDu
#define
EMBER_SLEEPY_BROADCAST_ADDRESS 0xFFFFu

Ember Concentrator Types#

#define
EMBER_LOW_RAM_CONCENTRATOR 0xFFF8u
#define
EMBER_HIGH_RAM_CONCENTRATOR 0xFFF9u

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 undefined

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

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

#define
EMBER_PRIVATE_PROFILE_ID_START 0xC00Du

Ember's first private profile ID.

#define
EMBER_PRIVATE_PROFILE_ID_END 0xC016u

Ember's last private profile ID.

#define
EMBER_REPORT_COUNTERS_REQUEST 0x0003u
#define
EMBER_REPORT_COUNTERS_RESPONSE 0x8003u
#define
EMBER_REPORT_AND_CLEAR_COUNTERS_REQUEST 0x0004u
#define
EMBER_REPORT_AND_CLEAR_COUNTERS_RESPONSE 0x8004u
#define
EMBER_OTA_CERTIFICATE_UPGRADE_CLUSTER 0x0005u

ZDO response status.#

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

enum
EMBER_ZDP_SUCCESS = 0x00
EMBER_ZDP_INVALID_REQUEST_TYPE = 0x80
EMBER_ZDP_DEVICE_NOT_FOUND = 0x81
EMBER_ZDP_INVALID_ENDPOINT = 0x82
EMBER_ZDP_NOT_ACTIVE = 0x83
EMBER_ZDP_NOT_SUPPORTED = 0x84
EMBER_ZDP_TIMEOUT = 0x85
EMBER_ZDP_NO_MATCH = 0x86
EMBER_ZDP_NO_ENTRY = 0x88
EMBER_ZDP_NO_DESCRIPTOR = 0x89
EMBER_ZDP_INSUFFICIENT_SPACE = 0x8a
EMBER_ZDP_NOT_PERMITTED = 0x8b
EMBER_ZDP_TABLE_FULL = 0x8c
EMBER_ZDP_NOT_AUTHORIZED = 0x8d
EMBER_ZDP_DEVICE_BINDING_TABLE_FULL = 0x8e
EMBER_ZDP_INVALID_INDEX = 0x8f
EMBER_NWK_ALREADY_PRESENT = 0xC5
EMBER_NWK_TABLE_FULL = 0xC7
EMBER_NWK_UNKNOWN_DEVICE = 0xC8
}

Network and IEEE Address Request/Response#

Defines for ZigBee device profile cluster IDs follow. These include descriptions of the formats of the messages.Note that each message starts with a 1-byte transaction sequence number. This sequence number is used to match a response command frame to the request frame that it is replying to. The application shall maintain a 1-byte counter that is copied into this field and incremented by one for each command sent. When a value of 0xff is reached, the next command shall re-start the counter with a value of 0x00. Network request: <transaction sequence number: 1> <EUI64:8> <type:1> <start index:1>IEEE request: <transaction sequence number: 1> <node ID:2> <type:1> <start index:1> <type> = 0x00 single address response, ignore the start index = 0x01 extended response -> sends kid's IDs as wellResponse: <transaction sequence number: 1> <status:1> <EUI64:8> <node ID:2> <ID count:1> <start index:1> <child ID:2>*

#define
NETWORK_ADDRESS_REQUEST 0x0000u