UG100: EZSP Reference Guide Ug100
ug100-ezsp-reference-guide
User Manual:
Open the PDF directly: View PDF .
Page Count: 130
Download | ![]() |
Open PDF In Browser | View PDF |
UG100: EZSP Reference Guide The EmberZNet Serial Protocol (EZSP) defined in this document is the protocol used by a host application processor to interact with the EmberZNet PRO stack running on a Network Co-Processor (NCP). EZSP messages are sent between the host and the NCP over either a Serial Peripheral Interface (SPI) or a Universal Asynchronous Receiver/Transmitter (UART) interface. This document is up-to-date with EmberZNet PRO Release 6.1. See section 1, What's New, for a list of what has changed since the previous release. silabs.com | Building a more connected world. KEY POINTS • Itemizes what’s new for EZSP since the previous release of EmberZNet PRO. • Defines the fields in an EZSP frame. • Defines the protocol format, including type definitions, structure definitions, and named values. • Provides details for all types of EZSP frames: name, ID, description, command parameters, and response parameters. Rev. 3.2 UG100: EZSP Reference Guide What's New 1 What's New The following sections summarize the additions, changes, and deletions made to EZSP from EmberZNet PRO Release 6.0 to Release 6.1. 1.1 Additions Structure Definitions • EmberGpProxyTableEntry: added description details Named Values EzspValueId • EZSP_VALUE_USE_NEGOTIATED_POWER_BY_LPD • EMBER_NETWORK_INIT_END_DEVICE_REJOIN_ON_REBOOT (EmberNetworkInitBitmask value) Messaging Frames • writeNodeData Security Frames • sendTrustCenterLinkKey Alphabetical List of Frames • sendTrustCenterLinkKey • writeNodeData 1.2 Changes Networking Frames • networkInit (Command Parameters, Response Parameters) ZLL Frames • zllSetRxOnWhenIdle (Command Parameters) Numerical List of Frames • 0x67 is assigned to sendTrustCenterLinkKey (was unassigned) • 0x70 is unassigned (was networkInitExtended) • 0xFE is assigned to writeNodeData (was unassigned) 1.3 Deletions Alphabetical List of Frames • networkInitExtended Numeric List of Frames • networkInitExtended silabs.com | Building a more connected world. Rev. 3.2 | 1 UG100: EZSP Reference Guide EmberZNet Serial Protocol 2 EmberZNet Serial Protocol All EZSP frames begin with the same three fields: sequence, frame control, and frame ID. The format of the rest of the frame depends on the frame ID. Figure 1 defines the format for all frame IDs. Most of the frames have a fixed length. A few, such as those containing application messages, are of variable length. The frame control indicates the direction of the message (command or response). For commands, the frame control also contains power management information (SPI interface only). For responses, the frame control also contains status information. The host initiates a two-message transaction by sending a command message to the NCP. The NCP then sends a response message to the host. When connected using the SPI interface, if the NCP needs to communicate a callback to the host, it will indicate this using the interrupt line and then wait for the host to send the callback command. When connected using the UART interface, the NCP can send callbacks to the host asynchronously as soon as they occur. When a command contains an application message, the host must supply a one-byte tag. This tag is used in future commands and responses to refer to the message. For example, when sending a message, the host provides both the message contents and a tag. The tag is then used to report the fate of the message in a later response from the NCP. Silicon Labs designed EZSP to be very familiar to customers who have used the EmberZNet PRO stack API. The majority of the commands and responses are functionally identical to those found in EmberZNet PRO. The variations are due mainly to the timing differences of running the application on a separate processor across a serial interface. 2.1 Byte Order All multiple octet fields are transmitted and received with the least significant octet first, also referred to as “little endian.” This is the same byte order convention specified by 802.15.4 and ZigBee. Note that EUI64 fields are treated as a 64-bit number and are therefore transmitted and received in little endian order. Each individual octet is transmitted and received by the SPI or UART interface. See AN706: EZSP-UART Host Interface Guide and AN711, EZSP-SPI Host Interface Guide, for more information about the UART and SPI interfaces respectively. 2.2 Conceptual Overview This section provides an overview of the concepts that are specific to EZSP or that differ from the EmberZNet PRO stack API. The commands and responses mentioned in this overview are described in more detail later in this document. 2.2.1 Stack Configuration To ensure that the NCP and the host agree on the protocol format, the first command sent by the host after the NCP has reset must be the version command. There are a number of configuration values that affect the behavior of the stack. The host can read these values at any time using the getConfigurationValue command. After the NCP has reset, the host can modify any of the default values using the setConfigurationValue command. The host must then provide information about the application endpoints using the addEndpoint command. Table 1 gives the minimum, default, and maximum values for each of the configuration values. Also listed is the RAM cost—the number of bytes of additional RAM required to increase the configuration value by one. Because the total amount of RAM is fixed, the additional RAM required must be made available by reducing one of the other configuration values. silabs.com | Building a more connected world. Rev. 3.2 | 2 UG100: EZSP Reference Guide EmberZNet Serial Protocol Table 1. Configuration Values Configuration Value Min. Def. Max. Units EZSP_CONFIG_PACKET_BUFFER_COUNT 5 24 EZSP_CONFIG_NEIGHBOR_TABLE_SIZE 8 16 EZSP_CONFIG_APS_UNICAST_MESSAGE _COUNT 0 10 EZSP_CONFIG_BINDING_TABLE_SIZE 0 0 EZSP_CONFIG_ADDRESS_TABLE_SIZE 0 EZSP_CONFIG_MULTICAST_TABLE_SIZ E RAM Cost Description packet buffers 39 The number of packet buffers available to the stack. When set to the special value 0xFF, the NCP will allocate all remaining configuration RAM towards packet buffers, such that the resulting count will be the largest whole number of packet buffers that can fit into the available memory. neighbors 18 The maximum number of router neighbors the stack can keep track of. A neighbor is a node within radio range. messages 6 The maximum number of APS retried messages the stack can be transmitting at any time. entries 2 The maximum number of non-volatile bindings supported by the stack. 8 entries 12 The maximum number of EUI64 to network address associations that the stack can maintain for the application. (Note, the total number of such address associations maintained by the NCP is the sum of the value of this setting and the value of ::EZSP_CONFIG_TRUST_CENTER_ADDRESS_C ACHE_SIZE.). 0 8 entries 4 The maximum number of multicast groups that the device may be a member of. EZSP_CONFIG_ROUTE_TABLE_SIZE 0 16 entries 6 The maximum number of destinations to which a node can route messages. This includes both messages originating at this node and those relayed for others. EZSP_CONFIG_DISCOVERY_TABLE_SIZ E 0 8 entries 10 The number of simultaneous route discoveries that a node will support. EZSP_CONFIG_BROADCAST_ALARM_DAT A_SIZE 0 0 16 bytes 1 The size of the alarm broadcast buffer. EZSP_CONFIG_UNICAST_ALARM_DATA_ SIZE (A) 0 0 16 bytes (C) EZSP_CONFIG_STACK_PROFILE 0 0 EZSP_CONFIG_SECURITY_LEVEL 0 5 EZSP_CONFIG_MAX_HOPS (B) 0 30 EZSP_CONFIG_MAX_END_DEVICE_CHIL DREN (C) 0 6 EZSP_CONFIG_INDIRECT_TRANSMISSI ON_TIMEOUT 0 3000 EZSP_CONFIG_END_DEVICE_POLL_TIM EOUT 0 5 EZSP_CONFIG_MOBILE_NODE_POLL_TI MEOUT 0 20 EZSP_CONFIG_RESERVED_MOBILE_CHI LD_ENTRIES 0 0 (C) EZSP_CONFIG_TX_POWER_MODE 0 0 EZSP_CONFIG_DISABLE_RELAY 0 0 silabs.com | Building a more connected world. 16 32 5 hops 32 children The size of the unicast alarm buffers allocated for end device children. 0 Specifies the stack profile. 0 The security level used for security at the MAC and network layers. The supported values are 0 (no security) and 5 (payload is encrypted and a four-byte MIC is used for authentication). 0 The maximum number of hops for a message. 9 + (A) The maximum number of end device children that a router will support. 3000 milli0 seconds 0 The maximum amount of time that the MAC will hold a message for indirect transmission to a child. 255 2^(D) seconds 0 The maximum amount of time that an end device child can wait between polls. If no poll is heard within this timeout, then the parent removes the end device from its tables. quarter seconds 0 The maximum amount of time that a mobile node can wait between polls. If no poll is heard within this timeout, then the parent removes the mobile node from its tables. entries 0 The number of child table entries reserved for use only by mobile nodes. 3 0 Enables boost power mode and/or the alternate transmitter output. 1 0 0: Allow this node to relay messages. 1: Prevent this node from relaying messages. Rev. 3.2 | 3 UG100: EZSP Reference Guide EmberZNet Serial Protocol Configuration Value Min. Def. Max. Units RAM Cost Description EZSP_CONFIG_TRUST_CENTER_ADDRES S_CACHE_SIZE 0 0 entries 12 The maximum number of EUI64 to network address associations that the Trust Center can maintain. These address cache entries are reserved for and reused by the Trust Center when processing device join/rejoin authentications. This cache size limits the number of overlapping joins the Trust Center can process within a narrow time window (e.g. two seconds), and thus should be set to the maximum number of near simultaneous joins the Trust Center is expected to accommodate. (Note, the total number of such address associations maintained by the NCP is the sum of the value of this setting and the value of ::EZSP_CONFIG_ADDRESS_TABLE_SIZE.) EZSP_CONFIG_SOURCE_ROUTE_TABLE_ SIZE 0 0 entries 4 The size of the source route table. EZSP_CONFIG_END_DEVICE_POLL_TIM EOUT_SHIFT (D) 0 6 10 0 The units used for timing out end devices on their parents. EZSP_CONFIG_FRAGMENT_WINDOW_SIZ E 0 0 8 blocks 0 The number of blocks of a fragmented message that can be sent in a single window. EZSP_CONFIG_FRAGMENT_DELAY_MS 0 0 milliseconds 0 The time the stack will wait between sending blocks of a fragmented message. EZSP_CONFIG_KEY_TABLE_SIZE 0 0 entries 4 The size of the Key Table used for storing individual link keys (if the device is a Trust Center) or Application Link Keys (if the device is a normal node). milliseconds 0 The APS ACK timeout value. The stack waits this amount of time between resends of APS retried messages. 15.4 scan duration units 0 The duration of an active scan. This also controls the jitter used when responding to a beacon request. seconds 0 The time the coordinator will wait for a second end device bind request to arrive. 50 * (B) + 100 EZSP_CONFIG_APS_ACK_TIMEOUT EZSP_CONFIG_ACTIVE_SCAN_DURATIO N 0 3 EZSP_CONFIG_END_DEVICE_BIND_TIM EOUT 1 60 EZSP_CONFIG_PAN_ID_CONFLICT_REP ORT_THRESHOLD 1 1 63 reports per minute 0 The number of PAN id conflict reports that must be received by the network manager within one minute to trigger a PAN id change. EZSP_CONFIG_REQUEST_KEY_TIMEOUT 0 0 10 minutes 0 The timeout value in minutes for how long the Trust Center or a normal node waits for the ZigBee Request Key to complete. On the Trust Center this controls whether or not the device buffers the request, waiting for a matching pair of ZigBee Request Key. If the value is non-zero, the Trust Center buffers and waits for that amount of time. If the value is zero, the Trust Center does not buffer the request and immediately responds to the request. Zero is the most compliant behavior. EZSP_CONFIG_CERTIFICATE_TABLE_S IZE 0 1 1 0 This value indicates the size of the runtime modifiable certificate table. Normally certificates are stored in MFG tokens but this table can be used to field upgrade devices with new Smart Energy certificates. This value cannot be set, it can only be queried. EZSP_CONFIG_APPLICATION_ZDO_FLA GS 0 0 255 0 This is a bitmask that controls which incoming ZDO request messages are passed to the application. The bits are defined in the EmberZdoConfigurationFlags enumeration. To see if the application is required to send a ZDO response in reply to an incoming message, the application must check the APS options bitfield within the incomingMessageHandler callback to see if the EMBER_APS_OPTION_ZDO_RESPONSE_REQUIRED flag is set. EZSP_CONFIG_BROADCAST_TABLE_SIZ E 15 15 254 entries 6 The maximum number of broadcasts during a single broadcast timeout period. EZSP_CONFIG_MAC_FILTER_TABLE_SI ZE 0 0 254 entries 2 The size of the MAC filter list table. silabs.com | Building a more connected world. 6 Rev. 3.2 | 4 UG100: EZSP Reference Guide EmberZNet Serial Protocol Configuration Value Min. Def. Max. Units entries RAM Cost Description EZSP_CONFIG_SUPPORTED_NETWORKS 1 2 2 72 The number of supported networks. EZSP_CONFIG_SEND_MULTICASTS_TO_ SLEEPY_ADDRESS 0 0 1 0 Whether multicasts are sent to the RxOnWhenIdle=true address (0xFFFD) or the sleepy broadcast address (0xFFFF). The RxOnWhenIdle=true address is the ZigBee compliant destination for multicasts. 0=false, 1=true 0 0 255 0 ZLL group address initial configuration. -128 -128 127 0 ZLL rssi threshold initial configuration. EZSP_CONFIG_RF4CE_PAIRING_TABLE _SIZE 0 0 126 entries 48 The maximum number of pairings supported by the stack. Controllers must support at least one pairing table entry while targets must support at least five. EZSP_CONFIG_RF4CE_PENDING_OUTGO ING_PACKET_TABLE_SIZE 0 0 16 entries 16 The maximum number of outgoing RF4CE packets supported by the stack. EZSP_CONFIG_MTORR_FLOW_CONTROL 0 1 1 0 Toggles the MTORR flow control in the stack. 0=false, 1=true EZSP_CONFIG_TRANSIENT_KEY_TIMEO UT_S 0 300 0 The amount of time a trust center will store a transient key with which a device can use to join the network. EZSP_CONFIG_ZLL_GROUP_ADDRESSES EZSP_CONFIG_ZLL_RSSI_THRESHOLD 6553 seconds 5 2.2.2 Policy Settings There are some situations when the NCP must make a decision but there is not enough time to consult with the host. The host can control what decision is made by setting the policy in advance. The NCP will then make decisions according to the current policy. The host is informed via callbacks each time a decision is made, but by the time the news reaches the host, it is too late to change that decision. You can change the policies at any time by using the setPolicy command. A policy is used for trust center behavior, external binding modification requests, unicast replies, generating pollHandler callbacks, and the contents of the messageSent callback. 2.2.3 Unicast Replies The policy for unicast replies allows the host to decide whether it wants to supply the NCP with a reply payload for every retried unicast received. If the host sets the policy to not supply a reply, the NCP will automatically send an empty reply (containing no payload) for every retried unicast received. If the host sets the policy to supply the reply, then the NCP will only send a reply when instructed by the host. If the reply does not reach the sender before the APS retry timeout expires, the sender will transmit the unicast again. The host must process the incoming message and supply the reply quickly enough to avoid retransmission by the sender. Provided this timing constraint is met, multiple unicasts can be received before the first reply is supplied and the replies can be supplied in any order. 2.2.4 SPI Interface Callbacks Asynchronous callbacks from the NCP are sent to the host as the response to a callback command. The NCP uses the interrupt line to indicate that the host should send a callback command. The NCP will queue multiple callbacks while it waits for the host. Each response only delivers one callback. If the NCP receives the callback command when there are no pending callbacks, it will reply with the noCallbacks response. 2.2.5 UART Interface Callbacks By default, callbacks from the NCP are sent to the host asynchronously as soon as they occur and the host never needs to send the callback command. The host can disable asynchronous callbacks by setting EZSP_VALUE_UART_SYNCH_CALLBACKS to 1 using the setValue command. Callbacks will then only be sent to the host as the response to a callback command. silabs.com | Building a more connected world. Rev. 3.2 | 5 UG100: EZSP Reference Guide EmberZNet Serial Protocol 2.2.6 SPI Interface Power Management The NCP always idles its processor whenever possible. To further reduce power consumption when connected using the SPI interface, the NCP can be put to sleep by the host. The UART interface is designed for gateway applications and does not support power management. In power down mode, only an external interrupt will wake the NCP. In deep sleep mode, the NCP will use its internal timer to wake up for scheduled events. The NCP provides two independent timers that the host can use for any purpose, including waking up the NCP from deep sleep mode. Timers are set using the setTimer command and generate timerHandler callbacks. The frame control byte of every command tells the NCP which sleep mode to enter after it has responded to the command. Including this information in every command (instead of having a separate power management command) allows the NCP to be put to sleep faster. If the host needs to put the NCP to sleep without also performing another action, the nop command can be used. In deep sleep mode, the NCP will wake up for an internal event. If the event does not produce a callback for the host, the NCP will go back to sleep once the event has been handled. If the event does produce a callback, the NCP will signal the host and remain awake waiting for the callback command. If the frame control byte of the callback command specifies deep sleep mode, then the NCP would normally go back to sleep after responding with the callback. However, if there is a second callback pending, the NCP will remain awake waiting for another callback command. To avoid disrupting the operation of the network, only put the NCP to sleep when it is not joined to a network or when it is joined as a sleeping end device. If the NCP is joined as a sleeping end device, then it must poll its parent in order to receive messages. The host controls the polling behavior using the pollForData command. Polls are sent periodically with the interval set by the host or a single poll can be sent. The result of every poll attempt is optionally reported using the pollCompleteHandler callback. 2.2.7 Tokens Some of the non-volatile storage on the NCP is made available for use by the host. Tokens stored in the Simulated EEPROM can be read and written using the setToken and getToken commands. Each token is 8 bytes. 32 tokens are available on the EM3xxx and EFR32 devices when using Simulated EEPROM v2, otherwise 8 tokens are available. Tokens preserve their values between reboots. The manufacturing tokens stored in the Flash Information Area can be read using the getMfgToken command. 2.2.8 NCP Status The frame control byte of every response sent by the NCP contains four status fields: • The overflow bit is set if the NCP ran out of memory at any time since the previous response was sent. If this bit is set, then messages may have been lost. • The truncated bit is set if the NCP truncated the current response. If this bit is set, the command from the host produced a response larger than the maximum EZSP frame length. • The callback pending bit is set if the NCP has one or more callbacks that have not been delivered to the host. • The callback type field identifies a response as either an asynchronous callback (UART interface only), a synchronous callback, or not a callback. You can use the nop command to check the status of the NCP without also performing another action. 2.2.9 Random Number Generator The host can obtain a random number from the NCP using the getRandomNumber command. The random number is generated from analog noise in the radio and can be used to seed a random number generator on the host. silabs.com | Building a more connected world. Rev. 3.2 | 6 UG100: EZSP Reference Guide Protocol Format 3 Protocol Format Figure 1 illustrates the EZSP frame format. Sequence 1 byte Frame Control 1 byte Legacy Frame ID 1 byte (0xFF) Extended Frame Control 1 byte Frame ID 1 byte Parameters Figure 1. EZSP Frame Format The first byte of all EZSP frames is a sequence number. The host should increment the sequence number each time a command is sent to the NCP. The response sent by the NCP uses the sequence number of the command, except when the response is a callback. Callback responses contain the sequence number of the last command seen at the time the callback occurred on the NCP. The second byte of all EZSP frames is the frame control byte per Table 2. Starting with EZSP version 5, the reserved value of 0xFF for the Legacy Frame ID byte is used to signify that the next byte is the Extended Frame Control per Table 9, which is followed by the actual Frame ID byte. Table 2. Frame Control Byte Summary Type Table Number Description Frame Control Table 3 Meaning of this byte for command and response frames Frame Control Table 4 Sleep modes Frame Control Table 5 Overflow status bit Frame Control Table 6 Truncated status bit Frame Control Table 7 Callback pending status bit Frame Control Table 8 Callback types Extended Frame Control Table 9 Meaning of this byte for command and response frames Extended Frame Control Table 10 Security enabled status bit Table 3. Frame Control Byte Bit Command Response 7 (MSB) 0 1 6 networkIndex[1] networkIndex[1] 5 networkIndex[0] networkIndex[0] 4 0 (reserved) callbackType[1] 3 0 (reserved) callbackType[0] 2 0 (reserved) callbackPending 1 sleepMode[1] truncated 0 (LSB) sleepMode[0] overflow Table 4. Sleep Modes sleepMode[1] sleepMode[0] 1 1 Reserved. 1 0 Power down. 0 1 Deep sleep. 0 0 Idle. silabs.com | Building a more connected world. Description Rev. 3.2 | 7 UG100: EZSP Reference Guide Protocol Format Table 5. Overflow Status Bit overflow Description 1 The NCP ran out of memory since the previous response. 0 No memory shortage since the previous response. Table 6. Truncated Status Bit truncated Description 1 The NCP truncated the current response to avoid exceeding the maximum EZSP frame length. 0 The current response was not truncated. Table 7. Callback Pending Status Bit callbackPending Description 1 A callback is pending on the NCP. If this response is a callback, at least one more callback is available. 0 All callbacks have been delivered to the host. Table 8. Callback Types callbackType[1] callbackType[0] Description 1 1 Reserved. 1 0 (UART interface only) This response is an asynchronous callback. It was not sent in response to a callback command. 0 1 This response is a synchronous callback. It was sent in response to a callback command. 0 0 This response is not a callback. Table 9. Extended Frame Control Byte Bit Command Response 7 (MSB) securityEnabled securityEnabled 6 0 (reserved) 0 (reserved) 5 0 (reserved) 0 (reserved) 4 0 (reserved) 0 (reserved) 3 0 (reserved) 0 (reserved) 2 0 (reserved) 0 (reserved) 1 0 (reserved) 0 (reserved) 0 (LSB) 0 (reserved) 0 (reserved) Table 10. Security Enabled Status Bit securityEnabled Description 1 Security is enabled. 0 Security is not enabled. silabs.com | Building a more connected world. Rev. 3.2 | 8 UG100: EZSP Reference Guide Protocol Format 3.1 Type Definitions Type Alias Description Bool uint8_t Boolean type with values true and false. EzspConfigId uint8_t Identifies a configuration value. EzspValueId uint8_t Identifies a value. EzspExtendedValueId uint8_t Identifies a value based on specified characteristics. Each set of characteristics is unique to that value and is specified during the call to get the extended value. EzspEndpointFlags uint16_t Flags associated with the endpoint data configured on the NCP. EmberConfigTxPowerMode uint16_t Values for EZSP_CONFIG_TX_POWER_MODE. EzspPolicyId uint8_t Identifies a policy. EzspDecisionId uint8_t Identifies a policy decision. EzspMfgTokenId uint8_t Manufacturing token IDs used by ezspGetMfgToken(). EzspStatus uint8_t Status values used by EZSP. EmberStatus uint8_t Return type for stack functions. EmberEventUnits uint8_t Either marks an event as inactive or specifies the units for the event execution time. EmberNodeType uint8_t The type of the node. EmberNetworkStatus uint8_t The possible join states for a node. EmberIncomingMessageType uint8_t Incoming message types. EmberOutgoingMessageType uint8_t Outgoing message types. EmberMacPassthroughType uint8_t MAC passthrough message type flags. EmberBindingType uint8_t Binding types. EmberApsOption uint16_t Options to use when sending a message. EzspNetworkScanType uint8_t Network scan types. EmberJoinDecision uint8_t Decision made by the trust center when a node attempts to join. EmberInitialSecurityBitmask uint16_t This is the Initial Security Bitmask that controls the use of various security features. EmberCurrentSecurityBitmask uint16_t This is the Current Security Bitmask that details the use of various security features. EmberKeyType uint8_t Describes the type of ZigBee security key. EmberKeyStructBitmask uint16_t Describes the presence of valid data within the EmberKeyStruct structure. EmberDeviceUpdate uint8_t The status of the device update. EmberKeyStatus uint8_t The status of the attempt to establish a key. EmberCounterType uint8_t Defines the events reported to the application by the readAndClearCounters command. EmberJoinMethod uint8_t The type of method used for joining. EmberZdoConfigurationFlags uint8_t Flags for controlling which incoming ZDO requests are passed to the application. To see if the application is required to send a ZDO response to an incoming message, the application must check the APS options bitfield within the incomingMessageHandler callback to see if the EMBER_APS_OPTION_ZDO_RESPONSE_REQUIRED flag is set. EmberConcentratorType uint16_t Type of concentrator. EmberZllState uint16_t ZLL device state identifier. EmberZllKeyIndex uint8_t ZLL key encryption algorithm enumeration. silabs.com | Building a more connected world. Rev. 3.2 | 9 UG100: EZSP Reference Guide Protocol Format Type Alias Description EzspZllNetworkOperation uint8_t Differentiates among ZLL network operations. EzspSourceRouteOverheadInformation uint8_t Validates Source Route Overhead Information cached. EmberNetworkInitBitmask uint16_t Bitmask options for emberNetworkInit(). EmberMultiPhyNwkConfig uint8_t Network configuration for the desired radio interface for multi phy network. EmberDutyCycleState uint8_t Duty cycle states. EmberNodeId uint16_t 16-bit ZigBee network address. EmberPanId uint16_t 802.15.4 PAN ID. EmberMulticastId uint16_t 16-bit ZigBee multicast group identifier. EmberEUI64 uint8_t[8] EUI 64-bit ID (an IEEE address). EmberDutyCycleHectoPct uint16_t 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%). EmberLibraryStatus uint8_t The presence and status of the Ember library. EmberGpSecurityLevel uint8_t The security level of the GPD. EmberGpKeyType uint8_t The type of security key to use for the GPD. EmberGpProxyTableEntryStatus uint8_t The proxy table entry status EmberGpSecurityFrameCounter uint32_t The security frame counter SecureEzspSecurityType uint32_t Security type of the Secure EZSP Protocol. ::SECURE_EZSP_SECURITY_TYPE_TEMPORARY sets up temporary security, which can be reset through ::ezspResetToFactoryDefaults(). ::SECURE_EZSP_SECURITY_TYPE_PERMANENT sets up permanent security, which cannot be reset. Only temporary security option is currently supported. SecureEzspSecurityLevel uint8_t Security level of the Secure EZSP Protocol. Only ::SECURE_EZSP_SECURITY_LEVEL_ENC_MIC_32 is currently supported. silabs.com | Building a more connected world. Rev. 3.2 | 10 UG100: EZSP Reference Guide Protocol Format 3.2 Structure Definitions Structure Field EmberNetworkParameters Description Network parameters. uint8_t[8] extendedPanId The network's extended PAN identifier. uint16_t panId The network's PAN identifier. uint8_t radioTxPower A power setting, in dBm. uint8_t radioChannel A radio channel. EmberJoinMethod joinMethod The method used to initially join the network. EmberNodeId nwkManagerId NWK Manager ID. The ID of the network manager in the current network. This may only be set at joining when using EMBER_USE_NWK_COMMISSIONING as the join method. uint8_t nwkUpdateId NWK Update ID. The value of the ZigBee nwkUpdateId known by the stack. This is used to determine the newest instance of the network after a PAN ID or channel change. This may only be set at joining when using EMBER_USE_NWK_COMMISSIONING as the join method. uint32_t channels NWK channel mask. The list of preferred channels that the NWK manager has told this device to use when searching for the network. This may only be set at joining when using EMBER_USE_NWK_COMMISSIONING as the join method. EmberMultiPhyRadioParameters Radio parameters. int8_t radioTxPower A power setting, in dBm. uint8_t radioPage A radio page. uint8_t radioChannel A radio channel. EmberZigbeeNetwork The parameters of a ZigBee network. uint8_t channel The 802.15.4 channel associated with the network. uint16_t panId The network's PAN identifier. uint8_t[8] extendedPanId The network's extended PAN identifier. bool allowingJoin Whether the network is allowing MAC associations. uint8_t stackProfile The Stack Profile associated with the network. uint8_t nwkUpdateId The instance of the Network. EmberApsFrame ZigBee APS frame parameters. uint16_t profileId The application profile ID that describes the format of the message. uint16_t clusterId The cluster ID for this message. uint8_t sourceEndpoint The source endpoint. uint8_t destinationEndpoint The destination endpoint. EmberApsOption options A bitmask of options. uint16_t groupId The group ID for this message, if it is multicast mode. uint8_t sequence The sequence number. EmberBindingTableEntry An entry in the binding table. EmberBindingType type The type of binding. uint8_t local The endpoint on the local node. silabs.com | Building a more connected world. Rev. 3.2 | 11 UG100: EZSP Reference Guide Protocol Format Structure Field Description uint16_t clusterId A cluster ID that matches one from the local endpoint's simple descriptor. This cluster ID is set by the provisioning application to indicate which part an endpoint's functionality is bound to this particular remote node and is used to distinguish between unicast and multicast bindings. Note that a binding can be used to send messages with any cluster ID, not just the one listed in the binding. uint8_t remote The endpoint on the remote node (specified by identifier). EmberEUI64 identifier A 64-bit identifier. This is either the destination EUI64 (for unicasts) or the 64-bit group address (for multicasts). uint8_t networkIndex The index of the network the binding belongs to. A multicast table entry indicates that a particular endpoint is a member of a particular multicast group. Only devices with an endpoint in a multicast group will receive messages sent to that multicast group. EmberMulticastTableEntry EmberMulticastId multicastId The multicast group ID. uint8_t endpoint The endpoint that is a member, or 0 if this entry is not in use (the ZDO is not a member of any multicast groups.) uint8_t networkIndex The network index of the network the entry is related to. EmberKeyData A 128-bit key. uint8_t[16] contents EmberCertificateData The key data. The implicit certificate used in CBKE. uint8_t[48] contents EmberPublicKeyData The certificate data. The public key data used in CBKE. uint8_t[22] contents EmberPrivateKeyData The public key data. The private key data used in CBKE. uint8_t[21] contents The private key data. The Shared Message Authentication Code data used in CBKE. EmberSmacData uint8_t[16] contents EmberSignatureData The Shared Message Authentication Code data. An ECDSA signature uint8_t[42] contents EmberCertificate283k1Data The signature data. The implicit certificate used in CBKE. uint8_t[74] contents EmberPublicKey283k1Data The 283k1 certificate data. The public key data used in CBKE. uint8_t[37] contents EmberPrivateKey283k1Data The 283k1 public key data. The private key data used in CBKE. uint8_t[36] contents EmberSignature283k1Data The 283k1 private key data. An ECDSA signature uint8_t[72] contents EmberMessageDigest The 283k1 signature data. The calculated digest of a message uint8_t[16] contents EmberAesMmoHashContext The calculated digest of a message. The hash context for an ongoing hash operation. uint8_t[16] result silabs.com | Building a more connected world. The result of ongoing the hash operation. Rev. 3.2 | 12 UG100: EZSP Reference Guide Protocol Format Structure Field Description uint32_t length The total length of the data that has been hashed so far. A neighbor table entry stores information about the reliability of RF links to and from neighboring nodes. EmberNeighborTableEntry uint16_t shortId The neighbor's two byte network id uint8_t averageLqi An exponentially weighted moving average of the link quality values of incoming packets from this neighbor as reported by the PHY. uint8_t inCost The incoming cost for this neighbor, computed from the average LQI. Values range from 1 for a good link to 7 for a bad link. uint8_t outCost The outgoing cost for this neighbor, obtained from the most recently received neighbor exchange message from the neighbor. A value of zero means that a neighbor exchange message from the neighbor has not been received recently enough, or that our id was not present in the most recently received one. uint8_t age The number of aging periods elapsed since a link status message was last received from this neighbor. The aging period is 16 seconds. EmberEUI64 longId The 8 byte EUI64 of the neighbor. A route table entry stores information about the next hop along the route to the destination. EmberRouteTableEntry uint16_t destination The short id of the destination. A value of 0xFFFF indicates the entry is unused. uint16_t nextHop The short id of the next hop to this destination. uint8_t status Indicates whether this entry is active (0), being discovered (1), unused (3), or validating (4). uint8_t age The number of seconds since this route entry was last used to send a packet. uint8_t concentratorType Indicates whether this destination is a High RAM Concentrator (2), a Low RAM Concentrator (1), or not a concentrator (0). uint8_t routeRecordState For a High RAM Concentrator, indicates whether a route record is needed (2), has been sent (1), or is no long needed (0) because a source routed message from the concentrator has been received. The security data used to set the configuration for the stack, or the retrieved configuration currently in use. EmberInitialSecurityState EmberInitialSecurityBitmask bitmask A bitmask indicating the security state used to indicate what the security configuration will be when the device forms or joins the network. EmberKeyData preconfiguredKey The pre-configured Key data that should be used when forming or joining the network. The security bitmask must be set with the EMBER_HAVE_PRECONFIGURED_KEY bit to indicate that the key contains valid data. EmberKeyData networkKey The Network Key that should be used by the Trust Center when it forms the network, or the Network Key currently in use by a joined device. The security bitmask must be set with EMBER_HAVE_NETWORK_KEY to indicate that the key contains valid data. silabs.com | Building a more connected world. Rev. 3.2 | 13 UG100: EZSP Reference Guide Protocol Format Structure Field Description uint8_t networkKeySequenceNumber The sequence number associated with the network key. This is only valid if the EMBER_HAVE_NETWORK_KEY has been set in the security bitmask. EmberEUI64 preconfiguredTrustCenterEui64 This is the long address of the trust center on the network that will be joined. It is usually NOT set prior to joining the network and instead it is learned during the joining message exchange. This field is only examined if EMBER_HAVE_TRUST_CENTER_EUI64 is set in the EmberInitialSecurityState::bitmask. Most devices should clear that bit and leave this field alone. This field must be set when using commissioning mode. The security options and information currently used by the stack. EmberCurrentSecurityState EmberCurrentSecurityBitmask bitmask A bitmask indicating the security options currently in use by a device joined in the network. EmberEUI64 trustCenterLongAddress The IEEE Address of the Trust Center device. EmberKeyStruct A structure containing a key and its associated data. EmberKeyStructBitmask bitmask A bitmask indicating the presence of data within the various fields in the structure. EmberKeyType type The type of the key. EmberKeyData key The actual key data. uint32_t outgoingFrameCounter The outgoing frame counter associated with the key. uint32_t incomingFrameCounter The frame counter of the partner device associated with the key. uint8_t sequenceNumber The sequence number associated with the key. EmberEUI64 partnerEUI64 The IEEE address of the partner device also in possession of the key. EmberNetworkInitStruct Network Initialization parameters. EmberNetworkInitBitmask bitmask EmberZllSecurityAlgorithmData Configuration options for network init. Data associated with the ZLL security algorithm. uint32_t transactionId Transaction identifier. uint32_t responseId Response identifier. uint16_t bitmask Bitmask. EmberZllNetwork The parameters of a ZLL network. EmberZigbeeNetwork zigbeeNetwork The parameters of a ZigBee network. EmberZllSecurityAlgorithmData securityAlgorithm Data associated with the ZLL security algorithm. EmberEUI64 eui64 Associated EUI64. EmberNodeId nodeId The node id. EmberZllState state The ZLL state. EmberNodeType nodeType The node type. uint8_t numberSubDevices The number of sub devices. uint8_t totalGroupIdentifiers The total number of group identifiers. uint8_t rssiCorrection RSSI correction value. silabs.com | Building a more connected world. Rev. 3.2 | 14 UG100: EZSP Reference Guide Protocol Format Structure Field Description Describes the initial security features and requirements that will be used when forming or joining ZLL networks. EmberZllInitialSecurityState uint32_t bitmask Unused bitmask; reserved for future use. EmberZllKeyIndex keyIndex The key encryption algorithm advertised by the application. EmberKeyData encryptionKey The encryption key for use by algorithms that require it. EmberKeyData preconfiguredKey The pre-configured link key used during classical ZigBee commissioning. EmberZllDeviceInfoRecord Information about a specific ZLL Device. EmberEUI64 ieeeAddress EUI64 associated with the device. uint8_t endpointId Endpoint id. uint16_t profileId Profile id. uint16_t deviceId Device id. uint8_t version Associated version. uint8_t groupIdCount Number of relevant group ids. EmberZllAddressAssignment ZLL address assignment data. EmberNodeId nodeId Relevant node id. EmberNodeId freeNodeIdMin Minimum free node id. EmberNodeId freeNodeIdMax Maximum free node id. EmberMulticastId groupIdMin Minimum group id. EmberMulticastId groupIdMax Maximum group id. EmberMulticastId freeGroupIdMin Minimum free group id. EmberMulticastId freeGroupIdMax Maximum free group id. EmberTokTypeStackZllData Public API for ZLL stack data token. uint32_t bitmask Token bitmask. uint16_t freeNodeIdMin Minimum free node id. uint16_t freeNodeIdMax Maximum free node id. uint16_t myGroupIdMin Local minimum group id. uint16_t freeGroupIdMin Minimum free group id. uint16_t freeGroupIdMax Maximum free group id. uint8_t rssiCorrection RSSI correction value. EmberTokTypeStackZllSecurity Public API for ZLL stack security token. uint32_t bitmask Token bitmask. uint8_t keyIndex Key index. uint8_t[16] encryptionKey Encryption key. uint8_t[16] preconfiguredKey Preconfigured key. A structure containing duty cycle limit configurations. All limits are absolute, and are required to be as follows: suspLimit > critThresh > limitThresh For example: suspLimit = 250 (2.5%), critThresh = 180 (1.8%), limitThresh 100 (1.00%). EmberDutyCycleLimits uint16_t vendorId The vendor identifier field shall contain the vendor identifier of the node. uint8_t[7] vendorString The vendor string field shall contain the vendor string of the node. silabs.com | Building a more connected world. Rev. 3.2 | 15 UG100: EZSP Reference Guide Protocol Format Structure Field Description A structure containing per device overall duty cycle consumed (up to the suspend limit). EmberPerDeviceDutyCycle EmberNodeId nodeId Node Id of device whose duty cycle is reported. EmberDutyCycleHectoPct dutyCycleConsumed Amount of overall duty cycle consumed (up to suspend limit). EmberTransientKeyData The transient key data structure. EmberEUI64 eui64 The IEEE address paired with the transient link key. EmberKeyData keyData The key data structure matching the transient key. uint32_t incomingFrameCounter The incoming frame counter associated with this key. uint32_t countdownTimerMs The number of milliseconds remaining before the key is automatically timed out of the transient key table. EmberChildData A structure containing a child node's data. EmberEUI64 eui64 The EUI64 of the child EmberNodeType type The node type of the child EmberNodeId id The short address of the child uint8_t phy The phy of the child uint8_t power The power of the child uint8_t timeout The timeout of the child EmberEUI64 gpdIeeeAddress The GPD's EUI64. uint32_t sourceId The GPD's source ID. uint8_t applicationId The GPD Application ID. uint8_t endpoint The GPD endpoint. EmberGpAddress A GP address structure. EmberEUI64 gpdIeeeAddress The GPD's EUI64. uint32_t sourceId The GPD's source ID. uint8_t applicationId The GPD Application ID. uint8_t endpoint The GPD endpoint. EmberGpProxyTableEntry The internal representation of a proxy table entry EmberKeyData securityLinkKey The link key to be used to secure this pairing link. EmberGpProxyTableEntryStatus status Internal status of the proxy table entry. uint32_t options The tunneling options (this contains both options and extendedOptions from the spec). EmberGpAddress gpd The addressing info of the GPD. EmberNodeId assignedAlias The assigned alias for the GPD. uint8_t securityOptions The security options field. EmberGpSecurityFrameCounter gpdSecurityFrameCounter The security frame counter of the GPD. EmberKeyData gpdKey The key to use for GPD. EmberGpSinkListEntry sinkList[GP_SINK_LIST_ENTRIES] The list of sinks (hardcoded to 2 which is the spec minimum). uint8_t groupcastRadius The groupcast radius. uint8_t searchCounter The search counter. silabs.com | Building a more connected world. Rev. 3.2 | 16 UG100: EZSP Reference Guide Protocol Format Structure Field Description Randomly generated 128-bit number. Both NCP and Host contribute this number to create the Session ID, which is used in the nonce. SecureEzspRandomNumber uint8_t[16] contents The random number data. Generated 64-bit Session ID, using random numbers from Host and NCP. It is generated at each reboot (during negotiation phase). Having both sides contribute to the value prevents one side from choosing a number that might have been previously used (either because of a bug or by malicious intent). SecureEzspSessionId uint8_t[8] contents 3.3 The Session ID data. Named Values bool Value Description false 0x00 An alias for zero, used for clarity. true 0x01 An alias for one, used for clarity. EzspConfigId Value Description EZSP_CONFIG_PACKET_BUFFER_COUNT 0x01 The number of packet buffers available to the stack. When set to the special value 0xFF, the NCP will allocate all remaining configuration RAM towards packet buffers, such that the resulting count will be the largest whole number of packet buffers that can fit into the available memory. EZSP_CONFIG_NEIGHBOR_TABLE_SIZE 0x02 The maximum number of router neighbors the stack can keep track of. A neighbor is a node within radio range. EZSP_CONFIG_APS_UNICAST_MESSAGE_COUNT 0x03 The maximum number of APS retried messages the stack can be transmitting at any time. EZSP_CONFIG_BINDING_TABLE_SIZE 0x04 The maximum number of non-volatile bindings supported by the stack. EZSP_CONFIG_ADDRESS_TABLE_SIZE 0x05 The maximum number of EUI64 to network address associations that the stack can maintain for the application. (Note, the total number of such address associations maintained by the NCP is the sum of the value of this setting and the value of ::EZSP_CONFIG_TRUST_CENTER_ADDRESS_CACH E_SIZE.). EZSP_CONFIG_MULTICAST_TABLE_SIZE 0x06 The maximum number of multicast groups that the device may be a member of. EZSP_CONFIG_ROUTE_TABLE_SIZE 0x07 The maximum number of destinations to which a node can route messages. This includes both messages originating at this node and those relayed for others. EZSP_CONFIG_DISCOVERY_TABLE_SIZE 0x08 The number of simultaneous route discoveries that a node will support. EZSP_CONFIG_STACK_PROFILE 0x0C Specifies the stack profile. EZSP_CONFIG_SECURITY_LEVEL 0x0D The security level used for security at the MAC and network layers. The supported values are 0 (no security) silabs.com | Building a more connected world. Rev. 3.2 | 17 UG100: EZSP Reference Guide Protocol Format EzspConfigId Value Description and 5 (payload is encrypted and a four-byte MIC is used for authentication). EZSP_CONFIG_MAX_HOPS 0x10 The maximum number of hops for a message. EZSP_CONFIG_MAX_END_DEVICE_CHILDREN 0x11 The maximum number of end device children that a router will support. EZSP_CONFIG_INDIRECT_TRANSMISSION_TIMEOUT 0x12 The maximum amount of time that the MAC will hold a message for indirect transmission to a child. EZSP_CONFIG_END_DEVICE_POLL_TIMEOUT 0x13 The maximum amount of time that an end device child can wait between polls. If no poll is heard within this timeout, then the parent removes the end device from its tables. EZSP_CONFIG_MOBILE_NODE_POLL_TIMEOUT 0x14 The maximum amount of time that a mobile node can wait between polls. If no poll is heard within this timeout, then the parent removes the mobile node from its tables. EZSP_CONFIG_RESERVED_MOBILE_CHILD_ENTRIES 0x15 The number of child table entries reserved for use only by mobile nodes. EZSP_CONFIG_TX_POWER_MODE 0x17 Enables boost power mode and/or the alternate transmitter output. EZSP_CONFIG_DISABLE_RELAY 0x18 0: Allow this node to relay messages. 1: Prevent this node from relaying messages. EZSP_CONFIG_TRUST_CENTER_ADDRESS_CACHE_SIZE 0x19 The maximum number of EUI64 to network address associations that the Trust Center can maintain. These address cache entries are reserved for and reused by the Trust Center when processing device join/rejoin authentications. This cache size limits the number of overlapping joins the Trust Center can process within a narrow time window (e.g. two seconds), and thus should be set to the maximum number of near simultaneous joins the Trust Center is expected to accommodate. (Note, the total number of such address associations maintained by the NCP is the sum of the value of this setting and the value of ::EZSP_CONFIG_ADDRESS_TABLE_SIZE.) EZSP_CONFIG_SOURCE_ROUTE_TABLE_SIZE 0x1A The size of the source route table. EZSP_CONFIG_END_DEVICE_POLL_TIMEOUT_SHIFT 0x1B The units used for timing out end devices on their parents. EZSP_CONFIG_FRAGMENT_WINDOW_SIZE 0x1C The number of blocks of a fragmented message that can be sent in a single window. EZSP_CONFIG_FRAGMENT_DELAY_MS 0x1D The time the stack will wait (in milliseconds) between sending blocks of a fragmented message. EZSP_CONFIG_KEY_TABLE_SIZE 0x1E The size of the Key Table used for storing individual link keys (if the device is a Trust Center) or Application Link Keys (if the device is a normal node). EZSP_CONFIG_APS_ACK_TIMEOUT 0x1F The APS ACK timeout value. The stack waits this amount of time between resends of APS retried messages. EZSP_CONFIG_BEACON_JITTER_DURATION 0x20 The duration of a beacon jitter, in the units used by the 15.4 scan parameter (((1 << duration) + 1) * 15ms), when responding to a beacon request. EZSP_CONFIG_END_DEVICE_BIND_TIMEOUT 0x21 The time the coordinator will wait (in seconds) for a second end device bind request to arrive. EZSP_CONFIG_PAN_ID_CONFLICT_REPORT_THRESHOLD 0x22 The number of PAN id conflict reports that must be received by the network manager within one minute to trigger a PAN id change. silabs.com | Building a more connected world. Rev. 3.2 | 18 UG100: EZSP Reference Guide Protocol Format EzspConfigId Value Description EZSP_CONFIG_REQUEST_KEY_TIMEOUT 0x24 The timeout value in minutes for how long the Trust Center or a normal node waits for the ZigBee Request Key to complete. On the Trust Center this controls whether or not the device buffers the request, waiting for a matching pair of ZigBee Request Key. If the value is non-zero, the Trust Center buffers and waits for that amount of time. If the value is zero, the Trust Center does not buffer the request and immediately responds to the request. Zero is the most compliant behavior. EZSP_CONFIG_CERTIFICATE_TABLE_SIZE 0x29 This value indicates the size of the runtime modifiable certificate table. Normally certificates are stored in MFG tokens but this table can be used to field upgrade devices with new Smart Energy certificates. This value cannot be set, it can only be queried. EZSP_CONFIG_APPLICATION_ZDO_FLAGS 0x2A This is a bitmask that controls which incoming ZDO request messages are passed to the application. The bits are defined in the EmberZdoConfigurationFlags enumeration. To see if the application is required to send a ZDO response in reply to an incoming message, the application must check the APS options bitfield within the incomingMessageHandler callback to see if the EMBER_APS_OPTION_ZDO_RESPONSE_REQUIRE D flag is set. EZSP_CONFIG_BROADCAST_TABLE_SIZE 0x2B The maximum number of broadcasts during a single broadcast timeout period. EZSP_CONFIG_MAC_FILTER_TABLE_SIZE 0x2C The size of the MAC filter list table. EZSP_CONFIG_SUPPORTED_NETWORKS 0x2D The number of supported networks. EZSP_CONFIG_SEND_MULTICASTS_TO_SLEEPY_ ADDRESS 0x2E Whether multicasts are sent to the RxOnWhenIdle=true address (0xFFFD) or the sleepy broadcast address (0xFFFF). The RxOnWhenIdle=true address is the ZigBee compliant destination for multicasts. EZSP_CONFIG_ZLL_GROUP_ADDRESSES 0x2F ZLL group address initial configuration. EZSP_CONFIG_ZLL_RSSI_THRESHOLD 0x30 ZLL rssi threshold initial configuration. EZSP_CONFIG_MTORR_FLOW_CONTROL 0x33 Toggles the mtorr flow control in the stack. EZSP_CONFIG_RETRY_QUEUE_SIZE 0x34 Setting the retry queue size. EZSP_CONFIG_NEW_BROADCAST_ENTRY_THRESHOLD 0x35 Setting the new broadcast entry threshold. EZSP_CONFIG_TRANSIENT_KEY_TIMEOUT_S 0x36 The length of time, in seconds, that a trust center will store a transient link key that a device can use to join its network. A transient key is added with a call to emberAddTransientLinkKey. After the transient key is added, it will be removed once this amount of time has passed. A joining device will not be able to use that key to join until it is added again on the trust center. The default value is 300 seconds, i.e., 5 minutes. EZSP_CONFIG_BROADCAST_MIN_ACKS_NEEDED 0x37 The number of passive acknowledgements to record from neighbors before we stop re-transmitting broadcasts EZSP_CONFIG_TC_REJOINS_USING_WELL_KNOWN_ KEY_TIMEOUT_S 0x38 The length of time, in seconds, that a trust center will allow a Trust Center (insecure) rejoin for a device that is using the well-known link key. This timeout takes effect once rejoins using the well-known key has been allowed. This command updates the emAllowTcRejoinsUsingWellKnownKeyTimeoutSec value. silabs.com | Building a more connected world. Rev. 3.2 | 19 UG100: EZSP Reference Guide Protocol Format EzspValueId Value Description EZSP_VALUE_TOKEN_STACK_NODE_DATA 0x00 The contents of the node data stack token. EZSP_VALUE_MAC_PASSTHROUGH_FLAGS 0x01 The types of MAC passthrough messages that the host wishes to receive. EZSP_VALUE_EMBERNET_PASSTHROUGH_SOURCE_ ADDRESS 0x02 The source address used to filter legacy EmberNet messages when the EMBER_MAC_PASSTHROUGH_EMBERNET_SOU RCE flag is set in EZSP_VALUE_MAC_PASSTHROUGH_FLAGS. EZSP_VALUE_FREE_BUFFERS 0x03 The number of available message buffers. EZSP_VALUE_UART_SYNCH_CALLBACKS 0x04 Selects sending synchronous callbacks in ezsp-uart. EZSP_VALUE_MAXIMUM_INCOMING_TRANSFER_ SIZE 0x05 The maximum incoming transfer size for the local node. EZSP_VALUE_MAXIMUM_OUTGOING_TRANSFER_ SIZE 0x06 The maximum outgoing transfer size for the local node. EZSP_VALUE_STACK_TOKEN_WRITING 0x07 A boolean indicating whether stack tokens are written to persistent storage as they change. EZSP_VALUE_STACK_IS_PERFORMING_REJOIN 0x08 A read-only value indicating whether the stack is currently performing a rejoin. EZSP_VALUE_MAC_FILTER_LIST 0x09 A list of EmberMacFilterMatchData values. EZSP_VALUE_EXTENDED_SECURITY_BITMASK 0x0A The Ember Extended Security Bitmask. EZSP_VALUE_NODE_SHORT_ID 0x0B The node short ID. EZSP_VALUE_DESCRIPTOR_CAPABILITY 0x0C The descriptor capability of the local node. EZSP_VALUE_STACK_DEVICE_REQUEST_ SEQUENCE_NUMBER 0x0D The stack device request sequence number of the local node. EZSP_VALUE_RADIO_HOLD_OFF 0x0E Enable or disable radio hold-off. EZSP_VALUE_ENDPOINT_FLAGS 0x0F The flags field associated with the endpoint data. EZSP_VALUE_MFG_SECURITY_CONFIG 0x10 Enable/disable the Mfg security config key settings. EZSP_VALUE_VERSION_INFO 0x11 Retrieves the version information from the stack on the NCP. 0x12 This will get/set the rejoin reason noted by the host for a subsequent call to emberFindAndRejoinNetwork(). After a call to emberFindAndRejoinNetwork() the host's rejoin reason will be set to EMBER_REJOIN_REASON_NONE. The NCP will store the rejoin reason used by the call to emberFindAndRejoinNetwork() EZSP_VALUE_LAST_REJOIN_REASON 0x13 This is the reason that the last rejoin took place. This value may only be retrieved, not set. The rejoin may have been initiated by the stack (NCP) or the application (host). If a host initiated a rejoin the reason will be set by default to EMBER_REJOIN_DUE_TO_APP_EVENT_1. If the application wishes to denote its own rejoin reasons it can do so by calling ezspSetValue(EMBER_VALUE_HOST_REJOIN_RE ASON, EMBER_REJOIN_DUE_TO_APP_EVENT_X). X is a number corresponding to one of the app events defined. If the NCP initiated a rejoin it will record this value internally for retrieval by ezspGetValue(EZSP_VALUE_REAL_REJOIN_REAS ON). EZSP_VALUE_NEXT_ZIGBEE_SEQUENCE_NUMBER 0x14 The next ZigBee sequence number. EZSP_VALUE_NEXT_HOST_REJOIN_REASON silabs.com | Building a more connected world. Rev. 3.2 | 20 UG100: EZSP Reference Guide Protocol Format EzspValueId Value Description EZSP_VALUE_CCA_THRESHOLD 0x15 CCA energy detect threshold for radio. EZSP_VALUE_SET_COUNTER_THRESHOLD 0x17 The threshold value for a counter EZSP_VALUE_RESET_COUNTER_THRESHOLDS 0x18 Resets all counters thresholds to 0xFF EZSP_VALUE_CLEAR_COUNTERS 0x19 Clears all the counters EZSP_VALUE_CERTIFICATE_283K1 0x1A The node's new certificate signed by the CA. EZSP_VALUE_PUBLIC_KEY_283K1 0x1B The Certificate Authority's public key. EZSP_VALUE_PRIVATE_KEY_283K1 0x1C The node's new static private key. EZSP_VALUE_NWK_FRAME_COUNTER 0x23 The NWK layer security frame counter value EZSP_VALUE_APS_FRAME_COUNTER 0x24 The APS layer security frame counter value EZSP_VALUE_RETRY_DEVICE_TYPE 0x25 Sets the device type to use on the next rejoin using device type EZSP_VALUE_ENABLE_R21_BEHAVIOR 0x29 Setting this byte enables R21 behavior on the NCP. EZSP_VALUE_ANTENNA_MODE 0x30 Configure the antenna mode(0-primary,1secondary,2-toggle on tx ack fail). EZSP_VALUE_ENABLE_PTA 0x31 Enable or disable packet traffic arbitration. EZSP_VALUE_PTA_OPTIONS 0x32 Set packet traffic arbitration configuration options. EZSP_VALUE_MFGLIB_OPTIONS 0x33 Configure manufacturing library options (0-nonCSMA transmits,1-CSMA transmits). EZSP_VALUE_USE_NEGOTIATED_POWER_BY_LPD 0x34 Sets the flag to use either negotiated power by link power delta (LPD) or fixed power value provided by user while forming/joining a network for packet transmissions on subghz interface. This is mainly for testing purposes. EzspExtendedValueId Value Description EZSP_EXTENDED_VALUE_ENDPOINT_FLAGS 0x00 The flags field associated with the specified endpoint. EZSP_EXTENDED_VALUE_LAST_LEAVE_REASON 0x01 This is the reason for the node to leave the network as well as the device that told it to leave. The leave reason is the 1st byte of the value while the node ID is the 2nd and 3rd byte. If the leave was caused due to an API call rather than an over the air message, the node ID will be EMBER_UNKNOWN_NODE_ID (0xFFFD). EZSP_EXTENDED_VALUE_GET_SOURCE_ROUTE_OVERHEAD 0x02 This number of bytes of overhead required in the network frame for source routing to a particular destination. EzspEndpointFlags Value Description EZSP_ENDPOINT_DISABLED 0x00 Indicates that the endpoint is disabled and NOT discoverable via ZDO. EZSP_ENDPOINT_ENABLED 0x01 Indicates that the endpoint is enabled and discoverable via ZDO. silabs.com | Building a more connected world. Rev. 3.2 | 21 UG100: EZSP Reference Guide Protocol Format EmberConfigTxPowerMode Value Description EMBER_TX_POWER_MODE_DEFAULT 0x00 Normal power mode and bi-directional RF transmitter output. EMBER_TX_POWER_MODE_BOOST 0x01 Enable boost power mode. This is a high performance radio mode which offers increased receive sensitivity and transmit power at the cost of an increase in power consumption. EMBER_TX_POWER_MODE_ALTERNATE 0x02 Enable the alternate transmitter output. This allows for simplified connection to an external power amplifier via the RF_TX_ALT_P and RF_TX_ALT_N pins. EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATE 0x03 Enable both boost mode and the alternate transmitter output. EzspPolicyId Value Description EZSP_TRUST_CENTER_POLICY 0x00 Controls trust center behavior. EZSP_BINDING_MODIFICATION_POLICY 0x01 Controls how external binding modification requests are handled. EZSP_UNICAST_REPLIES_POLICY 0x02 Controls whether the Host supplies unicast replies. EZSP_POLL_HANDLER_POLICY 0x03 Controls whether pollHandler callbacks are generated. EZSP_MESSAGE_CONTENTS_IN_CALLBACK_POLICY 0x04 Controls whether the message contents are included in the messageSentHandler callback. EZSP_TC_KEY_REQUEST_POLICY 0x05 Controls whether the Trust Center will respond to Trust Center link key requests. EZSP_APP_KEY_REQUEST_POLICY 0x06 Controls whether the Trust Center will respond to application link key requests. EZSP_PACKET_VALIDATE_LIBRARY_POLICY 0x07 Controls whether ZigBee packets that appear invalid are automatically dropped by the stack. A counter will be incremented when this occurs. EZSP_ZLL_POLICY 0x08 Controls whether the stack will process ZLL messages. EZSP_TC_REJOINS_USING_WELL_KNOWN_KEY_POLICY 0x09 Controls whether Trust Center (insecure) rejoins for devices using the well-known link key are accepted. If rejoining using the well-known key is allowed, it is disabled again after emAllowTcRejoinsUsingWellKnownKeyTimeoutSec seconds. EzspDecisionId Value Description EZSP_ALLOW_JOINS 0x00 Send the network key in the clear to all joining and rejoining devices. EZSP_ALLOW_JOINS_REJOINS_HAVE_LINK_KEY 0x04 Send the network key in the clear to all joining devices. Rejoining devices are sent the network key encrypted with their trust center link key. The trust center and any rejoining device are assumed to share a link key, either preconfigured or obtained under a previous policy. EZSP_ALLOW_PRECONFIGURED_KEY_JOINS 0x01 Send the network key encrypted with the joining or rejoining device's trust center link key. The trust center and any joining or rejoining device are assumed to share a link key, either preconfigured or obtained under a previous policy. This is the default value for the EZSP_TRUST_CENTER_POLICY. EZSP_ALLOW_REJOINS_ONLY 0x02 Send the network key encrypted with the rejoining device's trust center link key. The trust center and any rejoining device are assumed to share a link key, either silabs.com | Building a more connected world. Rev. 3.2 | 22 UG100: EZSP Reference Guide Protocol Format EzspDecisionId Value Description preconfigured or obtained under a previous policy. No new devices are allowed to join. EZSP_DISALLOW_ALL_JOINS_AND_REJOINS 0x03 Reject all unsecured join and rejoin attempts. EZSP_IGNORE_TRUST_CENTER_REJOINS 0x05 Take no action on trust center rejoin attempts. EZSP_DISALLOW_BINDING_MODIFICATION 0x10 EZSP_BINDING_MODIFICATION_POLICY default decision. Do not allow the local binding table to be changed by remote nodes. EZSP_ALLOW_BINDING_MODIFICATION 0x11 EZSP_BINDING_MODIFICATION_POLICY decision. Allow remote nodes to change the local binding table. EZSP_CHECK_BINDING_MODIFICATIONS_ARE_VALID_ ENDPOINT_CLUSTERS 0x12 EZSP_BINDING_MODIFICATION_POLICY decision. Allows remote nodes to set local binding entries only if the entries correspond to endpoints defined on the device, and for output clusters bound to those endpoints. EZSP_HOST_WILL_NOT_SUPPLY_REPLY 0x20 EZSP_UNICAST_REPLIES_POLICY default decision. The NCP will automatically send an empty reply (containing no payload) for every unicast received. EZSP_HOST_WILL_SUPPLY_REPLY 0x21 EZSP_UNICAST_REPLIES_POLICY decision. The NCP will only send a reply if it receives a sendReply command from the Host. EZSP_POLL_HANDLER_IGNORE 0x30 EZSP_POLL_HANDLER_POLICY default decision. Do not inform the Host when a child polls. EZSP_POLL_HANDLER_CALLBACK 0x31 EZSP_POLL_HANDLER_POLICY decision. Generate a pollHandler callback when a child polls. EZSP_MESSAGE_TAG_ONLY_IN_CALLBACK 0x40 EZSP_MESSAGE_CONTENTS_IN_CALLBACK_POLICY default decision. Include only the message tag in the messageSentHandler callback. EZSP_MESSAGE_TAG_AND_CONTENTS_IN_CALLBACK 0x41 EZSP_MESSAGE_CONTENTS_IN_CALLBACK_POLICY decision. Include both the message tag and the message contents in the messageSentHandler callback. EZSP_DENY_TC_KEY_REQUESTS 0x50 EZSP_TC_KEY_REQUEST_POLICY decision. When the Trust Center receives a request for a Trust Center link key, it will be ignored. EZSP_ALLOW_TC_KEY_REQUESTS 0x51 EZSP_TC_KEY_REQUEST_POLICY decision. When the Trust Center receives a request for a Trust Center link key, it will reply to it with the corresponding key. EZSP_GENERATE_NEW_TC_LINK_KEY 0x52 EZSP_TC_KEY_REQUEST_POLICY decision. When the Trust Center receives a request for a Trust Center link key, it will generate a key to send to the joiner. EZSP_DENY_APP_KEY_REQUESTS 0x60 EZSP_APP_KEY_REQUEST_POLICY decision. When the Trust Center receives a request for an application link key, it will be ignored. EZSP_ALLOW_APP_KEY_REQUESTS 0x61 EZSP_APP_KEY_REQUEST_POLICY decision. When the Trust Center receives a request for an application link key, it will randomly generate a key and send it to both partners. EZSP_PACKET_VALIDATE_LIBRARY_CHECKS_ENABLED 0x62 Indicates that packet validate library checks are enabled on the NCP. EZSP_PACKET_VALIDATE_LIBRARY_CHECKS_DISABLED 0x63 Indicates that packet validate library checks are NOT enabled on the NCP. silabs.com | Building a more connected world. Rev. 3.2 | 23 UG100: EZSP Reference Guide Protocol Format EzspMfgTokenId Value Description EZSP_MFG_CUSTOM_VERSION 0x00 Custom version (2 bytes). EZSP_MFG_STRING 0x01 Manufacturing string (16 bytes). EZSP_MFG_BOARD_NAME 0x02 Board name (16 bytes). EZSP_MFG_MANUF_ID 0x03 Manufacturing ID (2 bytes). EZSP_MFG_PHY_CONFIG 0x04 Radio configuration (2 bytes). EZSP_MFG_BOOTLOAD_AES_KEY 0x05 Bootload AES key (16 bytes). EZSP_MFG_ASH_CONFIG 0x06 ASH configuration (40 bytes). EZSP_MFG_EZSP_STORAGE 0x07 EZSP storage (8 bytes). EZSP_STACK_CAL_DATA 0x08 Radio calibration data (64 bytes). 4 bytes are stored for each of the 16 channels. This token is not stored in the Flash Information Area. It is updated by the stack each time a calibration is performed. EZSP_MFG_CBKE_DATA 0x09 Certificate Based Key Exchange (CBKE) data (92 bytes). EZSP_MFG_INSTALLATION_CODE 0x0A Installation code (20 bytes). EZSP_STACK_CAL_FILTER 0x0B Radio channel filter calibration data (1 byte). This token is not stored in the Flash Information Area. It is updated by the stack each time a calibration is performed. EZSP_MFG_CUSTOM_EUI_64 0x0C Custom EUI64 MAC address (8 bytes). EZSP_MFG_CTUNE 0x0D CTUNE value (2 byte). EzspStatus Value Description EZSP_SUCCESS 0x00 Success. EZSP_SPI_ERR_FATAL 0x10 Fatal error. EZSP_SPI_ERR_NCP_RESET 0x11 The Response frame of the current transaction indicates the NCP has reset. EZSP_SPI_ERR_OVERSIZED_EZSP_FRAME 0x12 The NCP is reporting that the Command frame of the current transaction is oversized (the length byte is too large). EZSP_SPI_ERR_ABORTED_TRANSACTION 0x13 The Response frame of the current transaction indicates the previous transaction was aborted (nSSEL deasserted too soon). EZSP_SPI_ERR_MISSING_FRAME_TERMINATOR 0x14 The Response frame of the current transaction indicates the frame terminator is missing from the Command frame. EZSP_SPI_ERR_WAIT_SECTION_TIMEOUT 0x15 The NCP has not provided a Response within the time limit defined by WAIT_SECTION_TIMEOUT. EZSP_SPI_ERR_NO_FRAME_TERMINATOR 0x16 The Response frame from the NCP is missing the frame terminator. EZSP_SPI_ERR_EZSP_COMMAND_OVERSIZED 0x17 The Host attempted to send an oversized Command (the length byte is too large) and the AVR's spi-protocol.c blocked the transmission. EZSP_SPI_ERR_EZSP_RESPONSE_OVERSIZED 0x18 The NCP attempted to send an oversized Response (the length byte is too large) and the AVR's spi-protocol.c blocked the reception. EZSP_SPI_WAITING_FOR_RESPONSE 0x19 The Host has sent the Command and is still waiting for the NCP to send a Response. EZSP_SPI_ERR_HANDSHAKE_TIMEOUT 0x1A The NCP has not asserted nHOST_INT within the time limit defined by WAKE_HANDSHAKE_TIMEOUT. EZSP_SPI_ERR_STARTUP_TIMEOUT 0x1B The NCP has not asserted nHOST_INT after an NCP reset within the time limit defined by STARTUP_TIMEOUT. silabs.com | Building a more connected world. Rev. 3.2 | 24 UG100: EZSP Reference Guide Protocol Format EzspStatus Value Description EZSP_SPI_ERR_STARTUP_FAIL 0x1C The Host attempted to verify the SPI Protocol activity and version number, and the verification failed. EZSP_SPI_ERR_UNSUPPORTED_SPI_COMMAND 0x1D The Host has sent a command with a SPI Byte that is unsupported by the current mode the NCP is operating in. EZSP_ASH_IN_PROGRESS 0x20 Operation not yet complete. EZSP_HOST_FATAL_ERROR 0x21 Fatal error detected by host. EZSP_ASH_NCP_FATAL_ERROR 0x22 Fatal error detected by NCP. EZSP_DATA_FRAME_TOO_LONG 0x23 Tried to send DATA frame too long. EZSP_DATA_FRAME_TOO_SHORT 0x24 Tried to send DATA frame too short. EZSP_NO_TX_SPACE 0x25 No space for tx'ed DATA frame. EZSP_NO_RX_SPACE 0x26 No space for rec'd DATA frame. EZSP_NO_RX_DATA 0x27 No receive data available. EZSP_NOT_CONNECTED 0x28 Not in Connected state. EZSP_ERROR_VERSION_NOT_SET 0x30 The NCP received a command before the EZSP version had been set. EZSP_ERROR_INVALID_FRAME_ID 0x31 The NCP received a command containing an unsupported frame ID. EZSP_ERROR_WRONG_DIRECTION 0x32 The direction flag in the frame control field was incorrect. EZSP_ERROR_TRUNCATED 0x33 The truncated flag in the frame control field was set, indicating there was not enough memory available to complete the response or that the response would have exceeded the maximum EZSP frame length. EZSP_ERROR_OVERFLOW 0x34 The overflow flag in the frame control field was set, indicating one or more callbacks occurred since the previous response and there was not enough memory available to report them to the Host. EZSP_ERROR_OUT_OF_MEMORY 0x35 Insufficient memory was available. EZSP_ERROR_INVALID_VALUE 0x36 The value was out of bounds. EZSP_ERROR_INVALID_ID 0x37 The configuration id was not recognized. EZSP_ERROR_INVALID_CALL 0x38 Configuration values can no longer be modified. EZSP_ERROR_NO_RESPONSE 0x39 The NCP failed to respond to a command. EZSP_ERROR_COMMAND_TOO_LONG 0x40 The length of the command exceeded the maximum EZSP frame length. EZSP_ERROR_QUEUE_FULL 0x41 The UART receive queue was full causing a callback response to be dropped. EZSP_ERROR_COMMAND_FILTERED 0x42 The command has been filtered out by NCP. EZSP_ERROR_SECURITY_KEY_ALREADY_SET 0x43 EZSP Security Key is already set EZSP_ERROR_SECURITY_TYPE_INVALID 0x44 EZSP Security Type is invalid EZSP_ERROR_SECURITY_PARAMETERS_INVALID 0x45 EZSP Security Parameters are invalid EZSP_ERROR_SECURITY_PARAMETERS_ALREADY_SET 0x46 EZSP Security Parameters are already set EZSP_ERROR_SECURITY_KEY_NOT_SET 0x47 EZSP Security Key is not set EZSP_ERROR_SECURITY_PARAMETERS_NOT_SET 0x48 EZSP Security Parameters are not set EZSP_ERROR_UNSUPPORTED_CONTROL 0x49 Received frame with unsupported control byte EZSP_ERROR_UNSECURE_FRAME 0x4A Received frame is unsecure, when security is established silabs.com | Building a more connected world. Rev. 3.2 | 25 UG100: EZSP Reference Guide Protocol Format EzspStatus Value Description EZSP_ASH_ERROR_VERSION 0x50 Incompatible ASH version EZSP_ASH_ERROR_TIMEOUTS 0x51 Exceeded max ACK timeouts EZSP_ASH_ERROR_RESET_FAIL 0x52 Timed out waiting for RSTACK EZSP_ASH_ERROR_NCP_RESET 0x53 Unexpected ncp reset EZSP_ERROR_SERIAL_INIT 0x54 Serial port initialization failed EZSP_ASH_ERROR_NCP_TYPE 0x55 Invalid ncp processor type EZSP_ASH_ERROR_RESET_METHOD 0x56 Invalid ncp reset method EZSP_ASH_ERROR_XON_XOFF 0x57 XON/XOFF not supported by host driver EZSP_ASH_STARTED 0x70 ASH protocol started EZSP_ASH_CONNECTED 0x71 ASH protocol connected EZSP_ASH_DISCONNECTED 0x72 ASH protocol disconnected EZSP_ASH_ACK_TIMEOUT 0x73 Timer expired waiting for ack EZSP_ASH_CANCELLED 0x74 Frame in progress cancelled EZSP_ASH_OUT_OF_SEQUENCE 0x75 Received frame out of sequence EZSP_ASH_BAD_CRC 0x76 Received frame with CRC error EZSP_ASH_COMM_ERROR 0x77 Received frame with comm error EZSP_ASH_BAD_ACKNUM 0x78 Received frame with bad ackNum EZSP_ASH_TOO_SHORT 0x79 Received frame shorter than minimum EZSP_ASH_TOO_LONG 0x7A Received frame longer than maximum EZSP_ASH_BAD_CONTROL 0x7B Received frame with illegal control byte EZSP_ASH_BAD_LENGTH 0x7C Received frame with illegal length for its type EZSP_ASH_ACK_RECEIVED 0x7D Received ASH Ack EZSP_ASH_ACK_SENT 0x7E Sent ASH Ack EZSP_ASH_NAK_RECEIVED 0x7F Received ASH Nak EZSP_ASH_NAK_SENT 0x80 Sent ASH Nak EZSP_ASH_RST_RECEIVED 0x81 Received ASH RST EZSP_ASH_RST_SENT 0x82 Sent ASH RST EZSP_ASH_STATUS 0x83 ASH Status EZSP_ASH_TX 0x84 ASH TX EZSP_ASH_RX 0x85 ASH RX EZSP_NO_ERROR 0xFF No reset or error EmberStatus Value Description EMBER_SUCCESS 0x00 The generic 'no error' message. EMBER_ERR_FATAL 0x01 The generic 'fatal error' message. EMBER_BAD_ARGUMENT 0x02 An invalid value was passed as an argument to a function EMBER_EEPROM_MFG_STACK_VERSION_MISMATCH 0x04 The manufacturing and stack token format in nonvolatile memory is different than what the stack expects (returned at initialization). EMBER_INCOMPATIBLE_STATIC_MEMORY_DEFINITIONS 0x05 The static memory definitions in ember-staticmemory.h are incompatible with this stack version. EMBER_EEPROM_MFG_VERSION_MISMATCH 0x06 The manufacturing token format in non-volatile memory is different than what the stack expects (returned at initialization). silabs.com | Building a more connected world. Rev. 3.2 | 26 UG100: EZSP Reference Guide Protocol Format EmberStatus Value Description EMBER_EEPROM_STACK_VERSION_MISMATCH 0x07 The stack token format in non-volatile memory is different than what the stack expects (returned at initialization). EMBER_NO_BUFFERS 0x18 There are no more buffers. EMBER_SERIAL_INVALID_BAUD_RATE 0x20 Specified an invalid baud rate. EMBER_SERIAL_INVALID_PORT 0x21 Specified an invalid serial port. EMBER_SERIAL_TX_OVERFLOW 0x22 Tried to send too much data. EMBER_SERIAL_RX_OVERFLOW 0x23 There was not enough space to store a received character and the character was dropped. EMBER_SERIAL_RX_FRAME_ERROR 0x24 Detected a UART framing error. EMBER_SERIAL_RX_PARITY_ERROR 0x25 Detected a UART parity error. EMBER_SERIAL_RX_EMPTY 0x26 There is no received data to process. EMBER_SERIAL_RX_OVERRUN_ERROR 0x27 The receive interrupt was not handled in time, and a character was dropped. EMBER_MAC_TRANSMIT_QUEUE_FULL 0x39 The MAC transmit queue is full. EMBER_MAC_UNKNOWN_HEADER_TYPE 0x3A MAC header FCR error on receive. EMBER_MAC_SCANNING 0x3D The MAC can't complete this task because it is scanning. EMBER_MAC_NO_DATA 0x31 No pending data exists for device doing a data poll. EMBER_MAC_JOINED_NETWORK 0x32 Attempt to scan when we are joined to a network. EMBER_MAC_BAD_SCAN_DURATION 0x33 Scan duration must be 0 to 14 inclusive. Attempt was made to scan with an incorrect duration value. EMBER_MAC_INCORRECT_SCAN_TYPE 0x34 emberStartScan was called with an incorrect scan type. EMBER_MAC_INVALID_CHANNEL_MASK 0x35 emberStartScan was called with an invalid channel mask. EMBER_MAC_COMMAND_TRANSMIT_FAILURE 0x36 Failed to scan current channel because we were unable to transmit the relevant MAC command. EMBER_MAC_NO_ACK_RECEIVED 0x40 We expected to receive an ACK following the transmission, but the MAC level ACK was never received. EMBER_MAC_INDIRECT_TIMEOUT 0x42 Indirect data message timed out before polled. EMBER_SIM_EEPROM_ERASE_PAGE_GREEN 0x43 The Simulated EEPROM is telling the application that there is at least one flash page to be erased. The GREEN status means the current page has not filled above the ERASE_CRITICAL_THRESHOLD. The application should call the function halSimEepromErasePage when it can to erase a page. EMBER_SIM_EEPROM_ERASE_PAGE_RED 0x44 The Simulated EEPROM is telling the application that there is at least one flash page to be erased. The RED status means the current page has filled above the ERASE_CRITICAL_THRESHOLD. Due to the shrinking availability of write space, there is a danger of data loss. The application must call the function halSimEepromErasePage as soon as possible to erase a page. EMBER_SIM_EEPROM_FULL 0x45 The Simulated EEPROM has run out of room to write any new data and the data trying to be set has been lost. This error code is the result of ignoring the SIM_EEPROM_ERASE_PAGE_RED error code. The application must call the function silabs.com | Building a more connected world. Rev. 3.2 | 27 UG100: EZSP Reference Guide Protocol Format EmberStatus Value Description halSimEepromErasePage to make room for any further calls to set a token. EMBER_ERR_FLASH_WRITE_INHIBITED 0x46 A fatal error has occurred while trying to write data to the Flash. The target memory attempting to be programmed is already programmed. The flash write routines were asked to flip a bit from a 0 to 1, which is physically impossible and the write was therefore inhibited. The data in the flash cannot be trusted after this error. EMBER_ERR_FLASH_VERIFY_FAILED 0x47 A fatal error has occurred while trying to write data to the Flash and the write verification has failed. The data in the flash cannot be trusted after this error, and it is possible this error is the result of exceeding the life cycles of the flash. EMBER_SIM_EEPROM_INIT_1_FAILED 0x48 Attempt 1 to initialize the Simulated EEPROM has failed. This failure means the information already stored in Flash (or a lack thereof), is fatally incompatible with the token information compiled into the code image being run. EMBER_SIM_EEPROM_INIT_2_FAILED 0x49 Attempt 2 to initialize the Simulated EEPROM has failed. This failure means Attempt 1 failed, and the token system failed to properly reload default tokens and reset the Simulated EEPROM. EMBER_SIM_EEPROM_INIT_3_FAILED 0x4A Attempt 3 to initialize the Simulated EEPROM has failed. This failure means one or both of the tokens TOKEN_MFG_NVDATA_VERSION or TOKEN_STACK_NVDATA_VERSION were incorrect and the token system failed to properly reload default tokens and reset the Simulated EEPROM. EMBER_ERR_FLASH_PROG_FAIL 0x4B A fatal error has occurred while trying to write data to the flash, possibly due to write protection or an invalid address. The data in the flash cannot be trusted after this error, and it is possible this error is the result of exceeding the life cycles of the flash. EMBER_ERR_FLASH_ERASE_FAIL 0x4C A fatal error has occurred while trying to erase flash, possibly due to write protection. The data in the flash cannot be trusted after this error, and it is possible this error is the result of exceeding the life cycles of the flash. EMBER_ERR_BOOTLOADER_TRAP_TABLE_BAD 0x58 The bootloader received an invalid message (failed attempt to go into bootloader). EMBER_ERR_BOOTLOADER_TRAP_UNKNOWN 0x59 Bootloader received an invalid message (failed attempt to go into bootloader). EMBER_ERR_BOOTLOADER_NO_IMAGE 0x5A The bootloader cannot complete the bootload operation because either an image was not found or the image exceeded memory bounds. EMBER_DELIVERY_FAILED 0x66 The APS layer attempted to send or deliver a message, but it failed. EMBER_BINDING_INDEX_OUT_OF_RANGE 0x69 This binding index is out of range of the current binding table. EMBER_ADDRESS_TABLE_INDEX_OUT_OF_RANGE 0x6A This address table index is out of range for the current address table. EMBER_INVALID_BINDING_INDEX 0x6C An invalid binding table index was given to a function. EMBER_INVALID_CALL 0x70 The API call is not allowed given the current state of the stack. silabs.com | Building a more connected world. Rev. 3.2 | 28 UG100: EZSP Reference Guide Protocol Format EmberStatus Value Description EMBER_COST_NOT_KNOWN 0x71 The link cost to a node is not known. EMBER_MAX_MESSAGE_LIMIT_REACHED 0x72 The maximum number of in-flight messages (i.e. EMBER_APS_UNICAST_MESSAGE_COUNT) has been reached. EMBER_MESSAGE_TOO_LONG 0x74 The message to be transmitted is too big to fit into a single over-the-air packet. EMBER_BINDING_IS_ACTIVE 0x75 The application is trying to delete or overwrite a binding that is in use. EMBER_ADDRESS_TABLE_ENTRY_IS_ACTIVE 0x76 The application is trying to overwrite an address table entry that is in use. EMBER_ADC_CONVERSION_DONE 0x80 Conversion is complete. EMBER_ADC_CONVERSION_BUSY 0x81 Conversion cannot be done because a request is being processed. EMBER_ADC_CONVERSION_DEFERRED 0x82 Conversion is deferred until the current request has been processed. EMBER_ADC_NO_CONVERSION_PENDING 0x84 No results are pending. EMBER_SLEEP_INTERRUPTED 0x85 Sleeping (for a duration) has been abnormally interrupted and exited prematurely. EMBER_PHY_TX_UNDERFLOW 0x88 The transmit hardware buffer underflowed. EMBER_PHY_TX_INCOMPLETE 0x89 The transmit hardware did not finish transmitting a packet. EMBER_PHY_INVALID_CHANNEL 0x8A An unsupported channel setting was specified. EMBER_PHY_INVALID_POWER 0x8B An unsupported power setting was specified. EMBER_PHY_TX_BUSY 0x8C The packet cannot be transmitted because the physical MAC layer is currently transmitting a packet. (This is used for the MAC backoff algorithm.) EMBER_PHY_TX_CCA_FAIL 0x8D The transmit attempt failed because all CCA attempts indicated that the channel was busy EMBER_PHY_OSCILLATOR_CHECK_FAILED 0x8E The software installed on the hardware doesn't recognize the hardware radio type. EMBER_PHY_ACK_RECEIVED 0x8F The expected ACK was received after the last transmission. EMBER_NETWORK_UP 0x90 The stack software has completed initialization and is ready to send and receive packets over the air. EMBER_NETWORK_DOWN 0x91 The network is not operating. EMBER_JOIN_FAILED 0x94 An attempt to join a network failed. EMBER_MOVE_FAILED 0x96 After moving, a mobile node's attempt to re-establish contact with the network failed. EMBER_CANNOT_JOIN_AS_ROUTER 0x98 An attempt to join as a router failed due to a ZigBee versus ZigBee Pro incompatibility. ZigBee devices joining ZigBee Pro networks (or vice versa) must join as End Devices, not Routers. EMBER_NODE_ID_CHANGED 0x99 The local node ID has changed. The application can obtain the new node ID by calling emberGetNodeId(). EMBER_PAN_ID_CHANGED 0x9A The local PAN ID has changed. The application can obtain the new PAN ID by calling emberGetPanId(). EMBER_NO_BEACONS 0xAB An attempt to join or rejoin the network failed because no router beacons could be heard by the joining node. silabs.com | Building a more connected world. Rev. 3.2 | 29 UG100: EZSP Reference Guide Protocol Format EmberStatus Value Description EMBER_RECEIVED_KEY_IN_THE_CLEAR 0xAC An attempt was made to join a Secured Network using a pre-configured key, but the Trust Center sent back a Network Key in-the-clear when an encrypted Network Key was required. EMBER_NO_NETWORK_KEY_RECEIVED 0xAD An attempt was made to join a Secured Network, but the device did not receive a Network Key. EMBER_NO_LINK_KEY_RECEIVED 0xAE After a device joined a Secured Network, a Link Key was requested but no response was ever received. EMBER_PRECONFIGURED_KEY_REQUIRED 0xAF An attempt was made to join a Secured Network without a pre-configured key, but the Trust Center sent encrypted data using a pre-configured key. EMBER_NOT_JOINED 0x93 The node has not joined a network. EMBER_INVALID_SECURITY_LEVEL 0x95 The chosen security level (the value of EMBER_SECURITY_LEVEL) is not supported by the stack. EMBER_NETWORK_BUSY 0xA1 A message cannot be sent because the network is currently overloaded. EMBER_INVALID_ENDPOINT 0xA3 The application tried to send a message using an endpoint that it has not defined. EMBER_BINDING_HAS_CHANGED 0xA4 The application tried to use a binding that has been remotely modified and the change has not yet been reported to the application. EMBER_INSUFFICIENT_RANDOM_DATA 0xA5 An attempt to generate random bytes failed because of insufficient random data from the radio. EMBER_APS_ENCRYPTION_ERROR 0xA6 There was an error in trying to encrypt at the APS Level. This could result from either an inability to determine the long address of the recipient from the short address (no entry in the binding table) or there is no link key entry in the table associated with the destination, or there was a failure to load the correct key into the encryption core. EMBER_SECURITY_STATE_NOT_SET 0xA8 There was an attempt to form or join a network with security without calling emberSetInitialSecurityState() first. EMBER_KEY_TABLE_INVALID_ADDRESS 0xB3 There was an attempt to set an entry in the key table using an invalid long address. An entry cannot be set using either the local device's or Trust Center's IEEE address. Or an entry already exists in the table with the same IEEE address. An Address of all zeros or all F's are not valid addresses in 802.15.4. EMBER_SECURITY_CONFIGURATION_INVALID 0xB7 There was an attempt to set a security configuration that is not valid given the other security settings. EMBER_TOO_SOON_FOR_SWITCH_KEY 0xB8 There was an attempt to broadcast a key switch too quickly after broadcasting the next network key. The Trust Center must wait at least a period equal to the broadcast timeout so that all routers have a chance to receive the broadcast of the new network key. EMBER_KEY_NOT_AUTHORIZED 0xBB The message could not be sent because the link key corresponding to the destination is not authorized for use in APS data messages. APS Commands (sent by the stack) are allowed. To use it for encryption of APS data messages it must be authorized using a key agreement protocol (such as CBKE). EMBER_SECURITY_DATA_INVALID 0xBD The security data provided was not valid, or an integrity check failed. silabs.com | Building a more connected world. Rev. 3.2 | 30 UG100: EZSP Reference Guide Protocol Format EmberStatus Value Description EMBER_SOURCE_ROUTE_FAILURE 0xA9 A ZigBee route error command frame was received indicating that a source routed message from this node failed en route. EMBER_MANY_TO_ONE_ROUTE_FAILURE 0xAA A ZigBee route error command frame was received indicating that a message sent to this node along a many-to-one route failed en route. The route error frame was delivered by an ad-hoc search for a functioning route. EMBER_STACK_AND_HARDWARE_MISMATCH 0xB0 A critical and fatal error indicating that the version of the stack trying to run does not match with the chip it is running on. The software (stack) on the chip must be replaced with software that is compatible with the chip. EMBER_INDEX_OUT_OF_RANGE 0xB1 An index was passed into the function that was larger than the valid range. EMBER_TABLE_FULL 0xB4 There are no empty entries left in the table. EMBER_TABLE_ENTRY_ERASED 0xB6 The requested table entry has been erased and contains no valid data. EMBER_LIBRARY_NOT_PRESENT 0xB5 The requested function cannot be executed because the library that contains the necessary functionality is not present. EMBER_OPERATION_IN_PROGRESS 0xBA The stack accepted the command and is currently processing the request. The results will be returned via an appropriate handler. EMBER_APPLICATION_ERROR_0 0xF0 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_1 0xF1 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_2 0xF2 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_3 0xF3 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_4 0xF4 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_5 0xF5 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_6 0xF6 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_7 0xF7 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_8 0xF8 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_9 0xF9 This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. silabs.com | Building a more connected world. Rev. 3.2 | 31 UG100: EZSP Reference Guide Protocol Format EmberStatus Value Description EMBER_APPLICATION_ERROR_10 0xFA This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_11 0xFB This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_12 0xFC This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_13 0xFD This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_14 0xFE This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EMBER_APPLICATION_ERROR_15 0xFF This error is reserved for customer application use. This will never be returned from any portion of the network stack or HAL. EmberEventUnits Value Description EMBER_EVENT_INACTIVE 0x00 The event is not scheduled to run. EMBER_EVENT_MS_TIME 0x01 The execution time is in approximate milliseconds. EMBER_EVENT_QS_TIME 0x02 The execution time is in 'binary' quarter seconds (256 approximate milliseconds each). EMBER_EVENT_MINUTE_TIME 0x03 The execution time is in 'binary' minutes (65536 approximate milliseconds each). EmberNodeType Value Description EMBER_UNKNOWN_DEVICE 0x00 Device is not joined. EMBER_COORDINATOR 0x01 Will relay messages and can act as a parent to other nodes. EMBER_ROUTER 0x02 Will relay messages and can act as a parent to other nodes. EMBER_END_DEVICE 0x03 Communicates only with its parent and will not relay messages. EMBER_SLEEPY_END_DEVICE 0x04 An end device whose radio can be turned off to save power. The application must poll to receive messages. EMBER_MOBILE_END_DEVICE 0x05 A sleepy end device that can move through the network. EmberNetworkStatus Value Description EMBER_NO_NETWORK 0x00 The node is not associated with a network in any way. EMBER_JOINING_NETWORK 0x01 The node is currently attempting to join a network. EMBER_JOINED_NETWORK 0x02 The node is joined to a network. EMBER_JOINED_NETWORK_NO_PARENT 0x03 The node is an end device joined to a network but its parent is not responding. EMBER_LEAVING_NETWORK 0x04 The node is in the process of leaving its current network. silabs.com | Building a more connected world. Rev. 3.2 | 32 UG100: EZSP Reference Guide Protocol Format EmberIncomingMessageType Value Description EMBER_INCOMING_UNICAST 0x00 Unicast. EMBER_INCOMING_UNICAST_REPLY 0x01 Unicast reply. EMBER_INCOMING_MULTICAST 0x02 Multicast. EMBER_INCOMING_MULTICAST_LOOPBACK 0x03 Multicast sent by the local device. EMBER_INCOMING_BROADCAST 0x04 Broadcast. EMBER_INCOMING_BROADCAST_LOOPBACK 0x05 Broadcast sent by the local device. EMBER_INCOMING_MANY_TO_ONE_ROUTE_REQUEST 0x06 Many to one route request. EmberOutgoingMessageType Value Description EMBER_OUTGOING_DIRECT 0x00 Unicast sent directly to an EmberNodeId. EMBER_OUTGOING_VIA_ADDRESS_TABLE 0x01 Unicast sent using an entry in the address table. EMBER_OUTGOING_VIA_BINDING 0x02 Unicast sent using an entry in the binding table. EMBER_OUTGOING_MULTICAST 0x03 Multicast message. This value is passed to emberMessageSentHandler() only. It may not be passed to emberSendUnicast(). EMBER_OUTGOING_BROADCAST 0x04 Broadcast message. This value is passed to emberMessageSentHandler() only. It may not be passed to emberSendUnicast(). EmberMacPassthroughType Value Description EMBER_MAC_PASSTHROUGH_NONE 0x00 No MAC passthrough messages. EMBER_MAC_PASSTHROUGH_SE_INTERPAN 0x01 SE InterPAN messages. EMBER_MAC_PASSTHROUGH_EMBERNET 0x02 Legacy EmberNet messages. EMBER_MAC_PASSTHROUGH_EMBERNET_SOURCE 0x04 Legacy EmberNet messages filtered by their source address. EmberBindingType Value Description EMBER_UNUSED_BINDING 0x00 A binding that is currently not in use. EMBER_UNICAST_BINDING 0x01 A unicast binding whose 64-bit identifier is the destination EUI64. EMBER_MANY_TO_ONE_BINDING 0x02 A unicast binding whose 64-bit identifier is the aggregator EUI64. EMBER_MULTICAST_BINDING 0x03 A multicast binding whose 64-bit identifier is the group address. A multicast binding can be used to send messages to the group and to receive messages sent to the group. EmberApsOption Value Description EMBER_APS_OPTION_NONE 0x0000 No options. EMBER_APS_OPTION_ENCRYPTION 0x0020 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 0x0040 Resend the message using the APS retry mechanism. EMBER_APS_OPTION_ENABLE_ROUTE_DISCOVERY 0x0100 Causes a route discovery to be initiated if no route to the destination is known. EMBER_APS_OPTION_FORCE_ROUTE_DISCOVERY 0x0200 Causes a route discovery to be initiated even if one is known. EMBER_APS_OPTION_SOURCE_EUI64 0x0400 Include the source EUI64 in the network frame. silabs.com | Building a more connected world. Rev. 3.2 | 33 UG100: EZSP Reference Guide Protocol Format EmberApsOption Value Description EMBER_APS_OPTION_DESTINATION_EUI64 0x0800 Include the destination EUI64 in the network frame. EMBER_APS_OPTION_ENABLE_ADDRESS_DISCOVERY 0x1000 Send a ZDO request to discover the node ID of the destination, if it is not already know. EMBER_APS_OPTION_POLL_RESPONSE 0x2000 Reserved. 0x4000 This incoming message is a ZDO request not handled by the EmberZNet stack, and the application is responsible for sending a ZDO response. This flag is used only when the ZDO is configured to have requests handled by the application. See the EZSP_CONFIG_APPLICATION_ZDO_FLAGS configuration parameter for more information. 0x8000 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. EMBER_APS_OPTION_ZDO_RESPONSE_REQUIRED EMBER_APS_OPTION_FRAGMENT EzspNetworkScanType Value Description EZSP_ENERGY_SCAN 0x00 An energy scan scans each channel for its RSSI value. EZSP_ACTIVE_SCAN 0x01 An active scan scans each channel for available networks. EmberJoinDecision Value Description EMBER_USE_PRECONFIGURED_KEY 0x00 Allow the node to join. The joining node should have a pre-configured key. The security data sent to it will be encrypted with that key. EMBER_SEND_KEY_IN_THE_CLEAR 0x01 Allow the node to join. Send the network key in-the-clear to the joining device. EMBER_DENY_JOIN 0x02 Deny join. EMBER_NO_ACTION 0x03 Take no action. EmberInitialSecurityBitmask Value Description EMBER_STANDARD_SECURITY_MODE 0x0000 This enables ZigBee Standard Security on the node. EMBER_DISTRIBUTED_TRUST_CENTER_MODE 0x0002 This 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 0x0004 This enables a Global Link Key for the Trust Center. All nodes will share the same Trust Center Link Key. EMBER_PRECONFIGURED_NETWORK_KEY_MODE 0x0008 This 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_TRUST_CENTER_USES_HASHED_LINK_KEY 0x0084 This denotes that the preconfiguredKey is not the actual Link Key but a Secret Key known only to the Trust Center. It is hashed with the IEEE Address of the destination device in order 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 0x0100 This denotes that the preconfiguredKey element has valid data that should be used to configure the initial security state. EMBER_HAVE_NETWORK_KEY 0x0200 This denotes that the networkKey element has valid data that should be used to configure the initial security state. silabs.com | Building a more connected world. Rev. 3.2 | 34 UG100: EZSP Reference Guide Protocol Format EmberInitialSecurityBitmask Value Description EMBER_GET_LINK_KEY_WHEN_JOINING 0x0400 This denotes to a joining node that it should attempt to acquire a Trust Center Link Key during joining. This is only necessary if the device does not have a pre-configured key. EMBER_REQUIRE_ENCRYPTED_KEY 0x0800 This denotes that a joining device should only accept an encrypted network key from the Trust Center (using its preconfigured 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 utilizing a pre-configured key. EMBER_NO_FRAME_COUNTER_RESET 0x1000 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 in cases where 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. EMBER_GET_PRECONFIGURED_KEY_FROM_INSTALL_CO 0x2000 This denotes that the device should obtain its DE preconfigured key from an installation code stored in the manufacturing token. The token contains a value that will be hashed to obtain the actual preconfigured key. If that token is not valid, then the call to emberSetInitialSecurityState() will fail. 0x0040 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, which 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_HAVE_TRUST_CENTER_EUI64 EmberCurrentSecurityBitmask Value Description EMBER_STANDARD_SECURITY_MODE 0x0000 This denotes that the device is running in a network with ZigBee Standard Security. EMBER_DISTRIBUTED_TRUST_CENTER_MODE 0x0002 This denotes that the device is running in a network without a centralized Trust Center. EMBER_GLOBAL_LINK_KEY 0x0004 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 0x0010 This denotes that the node has a Trust Center Link Key. EMBER_TRUST_CENTER_USES_HASHED_LINK_KEY 0x0084 This denotes that the Trust Center is using a Hashed Link Key. EmberKeyType Value Description EMBER_TRUST_CENTER_LINK_KEY 0x01 A shared key between the Trust Center and a device. EMBER_CURRENT_NETWORK_KEY 0x03 The current active Network Key used by all devices in the network. EMBER_NEXT_NETWORK_KEY 0x04 The alternate Network Key that was previously in use, or the newer key that will be switched to. EMBER_APPLICATION_LINK_KEY 0x05 An Application Link Key shared with another (non-Trust Center) device. silabs.com | Building a more connected world. Rev. 3.2 | 35 UG100: EZSP Reference Guide Protocol Format EmberKeyStructBitmask Value Description EMBER_KEY_HAS_SEQUENCE_NUMBER 0x0001 The key has a sequence number associated with it. EMBER_KEY_HAS_OUTGOING_FRAME_COUNTER 0x0002 The key has an outgoing frame counter associated with it. EMBER_KEY_HAS_INCOMING_FRAME_COUNTER 0x0004 The key has an incoming frame counter associated with it. EMBER_KEY_HAS_PARTNER_EUI64 0x0008 The key has a Partner IEEE address associated with it. EmberDeviceUpdate Value EMBER_STANDARD_SECURITY_SECURED_REJOIN 0x0 EMBER_STANDARD_SECURITY_UNSECURED_JOIN 0x1 EMBER_DEVICE_LEFT 0x2 EMBER_STANDARD_SECURITY_UNSECURED_REJOIN 0x3 EmberKeyStatus Value 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 EmberCounterType Value Description EMBER_COUNTER_MAC_RX_BROADCAST 0 The MAC received a broadcast. EMBER_COUNTER_MAC_TX_BROADCAST 1 The MAC transmitted a broadcast. EMBER_COUNTER_MAC_RX_UNICAST 2 The MAC received a unicast. EMBER_COUNTER_MAC_TX_UNICAST_SUCCESS 3 The MAC successfully transmitted a unicast. EMBER_COUNTER_MAC_TX_UNICAST_RETRY 4 The MAC retried a unicast. EMBER_COUNTER_MAC_TX_UNICAST_FAILED 5 The MAC unsuccessfully transmitted a unicast. EMBER_COUNTER_APS_DATA_RX_BROADCAST 6 The APS layer received a data broadcast. EMBER_COUNTER_APS_DATA_TX_BROADCAST 7 The APS layer transmitted a data broadcast. EMBER_COUNTER_APS_DATA_RX_UNICAST 8 The APS layer received a data unicast. EMBER_COUNTER_APS_DATA_TX_UNICAST_SUCCESS 9 The APS layer successfully transmitted a data unicast. EMBER_COUNTER_APS_DATA_TX_UNICAST_RETRY 10 The APS layer retried a data unicast. EMBER_COUNTER_APS_DATA_TX_UNICAST_FAILED 11 The APS layer unsuccessfully transmitted a data unicast. silabs.com | Building a more connected world. Rev. 3.2 | 36 UG100: EZSP Reference Guide Protocol Format EmberCounterType Value Description EMBER_COUNTER_ROUTE_DISCOVERY_INITIATED 12 The network layer successfully submitted a new route discovery to the MAC. EMBER_COUNTER_NEIGHBOR_ADDED 13 An entry was added to the neighbor table. EMBER_COUNTER_NEIGHBOR_REMOVED 14 An entry was removed from the neighbor table. EMBER_COUNTER_NEIGHBOR_STALE 15 A neighbor table entry became stale because it had not been heard from. EMBER_COUNTER_JOIN_INDICATION 16 A node joined or rejoined to the network via this node. EMBER_COUNTER_CHILD_REMOVED 17 An entry was removed from the child table. EMBER_COUNTER_ASH_OVERFLOW_ERROR 18 EZSP-UART only. An overflow error occurred in the UART. EMBER_COUNTER_ASH_FRAMING_ERROR 19 EZSP-UART only. A framing error occurred in the UART. EMBER_COUNTER_ASH_OVERRUN_ERROR 20 EZSP-UART only. An overrun error occurred in the UART. EMBER_COUNTER_NWK_FRAME_COUNTER_FAILURE 21 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 22 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_UTILITY 23 Utility counter for general debugging use. EMBER_COUNTER_APS_LINK_KEY_NOT_AUTHORIZED 24 A message was dropped at the APS layer because it had APS encryption but the key associated with the sender has not been authenticated, and thus the key is not authorized for use in APS data messages. EMBER_COUNTER_NWK_DECRYPTION_FAILURE 25 A NWK encrypted message was received but dropped because decryption failed. EMBER_COUNTER_APS_DECRYPTION_FAILURE 26 An APS encrypted message was received but dropped because decryption failed. EMBER_COUNTER_ALLOCATE_PACKET_BUFFER_FAILURE 27 The number of times we failed 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 28 The number of relayed unicast packets. EMBER_COUNTER_PHY_TO_MAC_QUEUE_LIMIT_REACHED 29 The number of times we dropped a packet due to reaching the preset PHY to MAC queue limit (emMaxPhyToMacQueueLength). EMBER_COUNTER_PACKET_VALIDATE_LIBRARY_ DROPPED_COUNT 30 The number of times we dropped a packet 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 31 The number of times the NWK retry queue is full and a new message failed to be added. EMBER_COUNTER_PHY_CCA_FAIL_COUNT 32 The number of times the PHY layer was unable to transmit due to a failed CCA. EMBER_COUNTER_BROADCAST_TABLE_FULL 33 The number of times a NWK broadcast was dropped because the broadcast table was full. EMBER_COUNTER_PTA_LO_PRI_REQUESTED 34 The number of low priority packet traffic arbitration requests. EMBER_COUNTER_PTA_HI_PRI_REQUESTED 35 The number of high priority packet traffic arbitration requests. silabs.com | Building a more connected world. Rev. 3.2 | 37 UG100: EZSP Reference Guide Protocol Format EmberCounterType Value Description EMBER_COUNTER_PTA_LO_PRI_DENIED 36 The number of low priority packet traffic arbitration requests denied. EMBER_COUNTER_PTA_HI_PRI_DENIED 37 The number of high priority packet traffic arbitration requests denied. EMBER_COUNTER_PTA_LO_PRI_TX_ABORTED 38 The number of aborted low priority packet traffic arbitration transmissions. EMBER_COUNTER_PTA_HI_PRI_TX_ABORTED 39 The number of aborted high priority packet traffic arbitration transmissions. EMBER_COUNTER_TYPE_COUNT 40 A placeholder giving the number of Ember counter types. EmberJoinMethod EMBER_USE_MAC_ASSOCIATION EMBER_USE_NWK_REJOIN EMBER_USE_NWK_REJOIN_HAVE_NWK_KEY EMBER_USE_NWK_COMMISSIONING Value 0x0 Normally devices use MAC Association to join a network, which respects the "permit joining" flag in the MAC Beacon. For mobile nodes this value causes the device to use an Ember Mobile Node Join, which is functionally equivalent to a MAC association. This value should be used by default. 0x1 For those networks where the "permit joining" flag is never turned on, they 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(). For a mobile node this value will cause it to use an Ember Mobile node rejoin, which is functionally equivalent. 0x2 For those networks where the "permit joining" flag is never turned on, they will need to use a NWK Rejoin. If those devices have been preconfigured with the NWK key (including sequence number) they can use a secured rejoin. This is only necessary for end devices since they need a parent. Routers can simply use the ::EMBER_USE_NWK_COMMISSIONING join method below. 0x3 For those 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. EmberZdoConfigurationFlags EMBER_APP_RECEIVES_SUPPORTED_ZDO_REQUESTS EMBER_APP_HANDLES_UNSUPPORTED_ZDO_REQUESTS silabs.com | Building a more connected world. Description Value Description 0x01 Set this flag in order to receive supported ZDO request messages via the incomingMessageHandler callback. A supported ZDO request is one that is handled by the EmberZNet stack. The stack will continue to handle the request and send the appropriate ZDO response even if this configuration option is enabled. 0x02 Set this flag in order to receive unsupported ZDO request messages via the incomingMessageHandler callback. An unsupported ZDO request is one that is not handled by the EmberZNet stack, other than to send a 'not supported' ZDO response. If this configuration option is enabled, the stack will no longer send any ZDO response, and it is the application's responsibility to do so. Rev. 3.2 | 38 UG100: EZSP Reference Guide Protocol Format EmberZdoConfigurationFlags EMBER_APP_HANDLES_ZDO_ENDPOINT_REQUESTS EMBER_APP_HANDLES_ZDO_BINDING_REQUESTS Value Description 0x04 Set this flag in order to receive the following ZDO request messages via the incomingMessageHandler callback: SIMPLE_DESCRIPTOR_REQUEST, MATCH_DESCRIPTORS_REQUEST, and ACTIVE_ENDPOINTS_REQUEST. If this configuration option is enabled, the stack will no longer send any ZDO response for these requests, and it is the application's responsibility to do so. 0x08 Set this flag in order to receive the following ZDO request messages via the incomingMessageHandler callback: BINDING_TABLE_REQUEST, BIND_REQUEST, and UNBIND_REQUEST. If this configuration option is enabled, the stack will no longer send any ZDO response for these requests, and it is the application's responsibility to do so. EmberConcentratorType Value Description 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. 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. EmberZllState Value Description EMBER_ZLL_STATE_NONE 0x0000 No state. EMBER_ZLL_STATE_FACTORY_NEW 0x0001 The device is factory new. EMBER_ZLL_STATE_ADDRESS_ASSIGNMENT_CAPABLE 0x0002 The device is capable of assigning addresses to other devices. EMBER_ZLL_STATE_LINK_INITIATOR 0x0010 The device is initiating a link operation. EMBER_ZLL_STATE_LINK_PRIORITY_REQUEST 0x0020 The device is requesting link priority. EMBER_ZLL_STATE_NON_ZLL_NETWORK 0x0100 The device is on a non-ZLL network. EmberZllKeyIndex Value Description EMBER_ZLL_KEY_INDEX_DEVELOPMENT 0x00 Key encryption algorithm for use during development. EMBER_ZLL_KEY_INDEX_MASTER 0x04 Key encryption algorithm shared by all certified devices. EMBER_ZLL_KEY_INDEX_CERTIFICATION 0x0F Key encryption algorithm for use during development and certification. EzspZllNetworkOperation Value Description EZSP_ZLL_FORM_NETWORK 0x00 ZLL form network command. EZSP_ZLL_JOIN_TARGET 0x01 ZLL join target command. EzspSourceRouteOverheadInformation Value Description EZSP_SOURCE_ROUTE_OVERHEAD_UNKNOWN 0xFF Ezsp source route overhead unknown silabs.com | Building a more connected world. Rev. 3.2 | 39 UG100: EZSP Reference Guide Protocol Format EmberNetworkInitBitmask Value Description EMBER_NETWORK_INIT_NO_OPTIONS 0x0000 No options for Network Init EMBER_NETWORK_INIT_PARENT_INFO_IN_TOKEN 0x0001 Save parent info (node ID and EUI64) in a token during joining/rejoin, and restore on reboot. EMBER_NETWORK_INIT_END_DEVICE_REJOIN_ON_REBOOT 0x0002 Send a rejoin request as an end device on reboot if parent information is persisted. EmberMultiPhyNwkConfig EMBER_BROADCAST_SUPPORT 0x01 Enable broadcast support on Routers EmberDutyCycleState EMBER_DUTY_CYCLE_TRACKING_OFF 0 No Duty cycle tracking or metrics are taking place. EMBER_DUTY_CYCLE_LBT_NORMAL 1 Duty Cycle is tracked and has not exceeded any thresholds. EMBER_DUTY_CYCLE_LBT_LIMITED_THRESHOLD_REACHED 2 We have exceeded the limited threshold of our total duty cycle allotment. EMBER_DUTY_CYCLE_LBT_CRITICAL_THRESHOLD_REACHED 3 We have exceeded the critical threshold of our total duty cycle allotment EMBER_DUTY_CYCLE_LBT_SUSPEND_LIMIT_REACHED 4 We have reached the suspend limit and are blocking all outbound transmissions. silabs.com | Building a more connected world. Rev. 3.2 | 40 UG100: EZSP Reference Guide Configuration Frames 4 Configuration Frames Name: version ID: 0x00 Description: The command allows the Host to specify the desired EZSP version and must be sent before any other command. This document describes EZSP version 4 and stack type 2 (mesh). The response provides information about the firmware running on the NCP. Command Parameters: The EZSP version the Host wishes to use. To successfully set the version and allow other commands, this must be 4. uint8_t desiredProtocolVersion Response Parameters: uint8_t protocolVersion The EZSP version the NCP is using (4). uint8_t stackType The type of stack running on the NCP (2). uint16_t stackVersion The version number of the stack. Name: getConfigurationValue ID: 0x52 Description: Reads a configuration value from the NCP. Command Parameters: EzspConfigId configId Identifies which configuration value to read. Response Parameters: EzspStatus status EZSP_SUCCESS if the value was read successfully, EZSP_ERROR_INVALID_ID if the NCP does not recognize configId. uint16_t value The configuration value. silabs.com | Building a more connected world. Rev. 3.2 | 41 UG100: EZSP Reference Guide Configuration Frames Name: setConfigurationValue ID: 0x53 Description: Writes a configuration value to the NCP. Configuration values can be modified by the Host after the NCP has reset. Once the status of the stack changes to EMBER_NETWORK_UP, configuration values can no longer be modified and this command will respond with EZSP_ERROR_INVALID_CALL. Command Parameters: EzspConfigId configId Identifies which configuration value to change. uint16_t value The new configuration value. Response Parameters: EZSP_SUCCESS if the configuration value was changed, EZSP_ERROR_OUT_OF_MEMORY if the new value exceeded the available memory, EZSP_ERROR_INVALID_VALUE if the new value was out of bounds, EZSP_ERROR_INVALID_ID if the NCP does not recognize configId, EZSP_ERROR_INVALID_CALL if configuration values can no longer be modified. EzspStatus status Name: addEndpoint ID: 0x02 Description: Configures endpoint information on the NCP. The NCP does not remember these settings after a reset. Endpoints can be added by the Host after the NCP has reset. Once the status of the stack changes to EMBER_NETWORK_UP, endpoints can no longer be added and this command will respond with EZSP_ERROR_INVALID_CALL. Command Parameters: uint8_t endpoint The application endpoint to be added. uint16_t profileId The endpoint's application profile. uint16_t deviceId The endpoint's device ID within the application profile. uint8_t appFlags The device version and flags indicating description availability. uint8_t inputClusterCount The number of cluster IDs in inputClusterList. uint8_t outputClusterCount The number of cluster IDs in outputClusterList. uint16_t[] inputClusterList Input cluster IDs the endpoint will accept. uint16_t[] outputClusterList Output cluster IDs the endpoint may send. Response Parameters: EzspStatus status EZSP_SUCCESS if the endpoint was added, EZSP_ERROR_OUT_OF_MEMORY if there is not enough memory available to add the endpoint, EZSP_ERROR_INVALID_VALUE if the endpoint already exists, EZSP_ERROR_INVALID_CALL if endpoints can no longer be added. silabs.com | Building a more connected world. Rev. 3.2 | 42 UG100: EZSP Reference Guide Configuration Frames Name: setPolicy ID: 0x55 Description: Allows the Host to change the policies used by the NCP to make fast decisions. Command Parameters: EzspPolicyId policyId Identifies which policy to modify. EzspDecisionId decisionId The new decision for the specified policy. Response Parameters: EzspStatus status Name: getPolicy EZSP_SUCCESS if the policy was changed, EZSP_ERROR_INVALID_ID if the NCP does not recognize policyId. ID: 0x56 Description: Allows the Host to read the policies used by the NCP to make fast decisions. Command Parameters: EzspPolicyId policyId Identifies which policy to read. Response Parameters: EzspStatus status EZSP_SUCCESS if the policy was read successfully, EZSP_ERROR_INVALID_ID if the NCP does not recognize policyId. EzspDecisionId decisionId The current decision for the specified policy. Name: getValue ID: 0xAA Description: Reads a value from the NCP. Command Parameters: EzspValueId valueId Identifies which value to read. Response Parameters: EzspStatus status EZSP_SUCCESS if the value was read successfully, EZSP_ERROR_INVALID_ID if the NCP does not recognize valueId. uint8_t valueLength The length of the value parameter in bytes. uint8_t[] value The value. silabs.com | Building a more connected world. Rev. 3.2 | 43 UG100: EZSP Reference Guide Configuration Frames Name: getExtendedValue ID: 0x03 Description: Reads a value from the NCP but passes an extra argument specific to the value being retrieved. Command Parameters: EzspExtendedValueId valueId Identifies which extended value ID to read. uint32_t characteristics Identifies which characteristics of the extended value ID to read. These are specific to the value being read. Response Parameters: EzspStatus status EZSP_SUCCESS if the value was read successfully, EZSP_ERROR_INVALID_ID if the NCP does not recognize valueId. uint8_t valueLength The length of the value parameter in bytes. uint8_t[] value The value. Name: setValue ID: 0xAB Description: Writes a value to the NCP. Command Parameters: EzspValueId valueId Identifies which value to change. uint8_t valueLength The length of the value parameter in bytes. uint8_t[] value The new value. Response Parameters: EzspStatus status silabs.com | Building a more connected world. EZSP_SUCCESS if the value was changed, EZSP_ERROR_INVALID_VALUE if the new value was out of bounds, EZSP_ERROR_INVALID_ID if the NCP does not recognize valueId, EZSP_ERROR_INVALID_CALL if the value could not be modified. Rev. 3.2 | 44 UG100: EZSP Reference Guide Configuration Frames Name: setGpioCurrentConfiguration ID: 0xAC Description: Sets the GPIO configuration and output values for the specified pin. Command Parameters: uint8_t portPin The pin to configure. uint8_t cfg The new configuration value. uint8_t out The new output value. Response Parameters: EzspStatus status Name: setGpioPowerUpDownConfiguration EZSP_SUCCESS if the values were changed, EZSP_ERROR_INVALID_VALUE if the pin was out of bounds, EZSP_ERROR_INVALID_CALL if the pin could not be modified because it is required for communication with the NCP. ID: 0xAD Description: Sets the GPIO configuration and output values to be used for the specified pin when the NCP is powered up and down. Command Parameters: uint8_t portPin The pin to configure. uint8_t puCfg The new configuration value for power up. uint8_t puOut The new output value for power up. uint8_t pdCfg The new configuration value for power down. uint8_t pdOut The new output value for power down. Response Parameters: EzspStatus status Name: setGpioRadioPowerMask EZSP_SUCCESS if the values were changed, EZSP_ERROR_INVALID_VALUE if the pin was out of bounds, EZSP_ERROR_INVALID_CALL if the pin could not be modified because it is required for communication with the NCP. ID: 0xAE Description: Sets the mask that controls which pins will have their GPIO configuration and output values set to their power-up and power-down values when the NCP powers the radio up and down. Command Parameters: uint32_t mask The new mask. Response Parameters: None silabs.com | Building a more connected world. Rev. 3.2 | 45 UG100: EZSP Reference Guide Configuration Frames Name: setCtune ID: 0xF5 Description: Apply a new CTUNE value. Command Parameters: uint16_t ctune The new CTUNE value. Valid range is 0x0000-0x01FF. Higher order bits (0xFE00) of the 16-bit value are ignored. Response Parameters: None Name: getCtune ID: 0xF6 Description: Retrieves the current CTUNE value. Command Parameters: None Response Parameters: uint16_t ctune silabs.com | Building a more connected world. The current CTUNE value. Rev. 3.2 | 46 UG100: EZSP Reference Guide Utilities Frames 5 Utilities Frames Name: nop ID: 0x05 Description: A command which does nothing. The Host can use this to set the sleep mode or to check the status of the NCP. Command Parameters: None Response Parameters: None Name: echo ID: 0x81 Description: Variable length data from the Host is echoed back by the NCP. This command has no other effects and is designed for testing the link between the Host and NCP. Command Parameters: uint8_t dataLength The length of the data parameter in bytes. uint8_t[] data The data to be echoed back. Response Parameters: uint8_t echoLength The length of the echo parameter in bytes. uint8_t[] echo The echo of the data. Name: invalidCommand ID: 0x58 Description: Indicates that the NCP received an invalid command. This frame is a response to an invalid command. Response Parameters: EzspStatus reason Name: callback The reason why the command was invalid. ID: 0x06 Description: Allows the NCP to respond with a pending callback. Command Parameters: None The response to this command can be any of the callback responses. Name: noCallbacks ID: 0x07 Description: Indicates that there are currently no pending callbacks. This frame is a response to the callback command. Response Parameters: None silabs.com | Building a more connected world. Rev. 3.2 | 47 UG100: EZSP Reference Guide Utilities Frames Name: setToken ID: 0x09 Description: Sets a token (8 bytes of non-volatile storage) in the Simulated EEPROM of the NCP. Command Parameters: uint8_t tokenId Which token to set (0 to 7). uint8_t[8] tokenData The data to write to the token. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: getToken ID: 0x0A Description: Retrieves a token (8 bytes of non-volatile storage) from the Simulated EEPROM of the NCP. Command Parameters: uint8_t tokenId Which token to read (0 to 31 for EM357, 0 to 7 for other NCPs). Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. uint8_t[8] tokenData The contents of the token. Name: getMfgToken ID: 0x0B Description: Retrieves a manufacturing token from the Flash Information Area of the NCP (except for EZSP_STACK_CAL_DATA which is managed by the stack). Command Parameters: EzspMfgTokenId tokenId Which manufacturing token to read. Response Parameters: uint8_t tokenDataLength The length of the tokenData parameter in bytes. uint8_t[] tokenData The manufacturing token data. silabs.com | Building a more connected world. Rev. 3.2 | 48 UG100: EZSP Reference Guide Utilities Frames Name: setMfgToken ID: 0x0C Description: Sets a manufacturing token in the Customer Information Block (CIB) area of the NCP if that token currently unset (fully erased). Cannot be used with EZSP_STACK_CAL_DATA, EZSP_STACK_CAL_FILTER, EZSP_MFG_ASH_CONFIG, or EZSP_MFG_CBKE_DATA token. Command Parameters: EzspMfgTokenId tokenId uint8_t tokenDataLength uint8_t[] tokenData Which manufacturing token to set. The length of the tokenData parameter in bytes. The manufacturing token data. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: stackTokenChangedHandler ID: 0x0D Description: A callback invoked to inform the application that a stack token has changed. This frame is a response to the callback command. Response Parameters: uint16_t tokenAddress Name: getRandomNumber The address of the stack token that has changed. ID: 0x49 Description: Returns a pseudorandom number. Command Parameters: None Response Parameters: EmberStatus status Always returns EMBER_SUCCESS. uint16_t value A pseudorandom number. silabs.com | Building a more connected world. Rev. 3.2 | 49 UG100: EZSP Reference Guide Utilities Frames Name: setTimer ID: 0x0E Description: Sets a timer on the NCP. There are 2 independent timers available for use by the Host. A timer can be cancelled by setting time to 0 or units to EMBER_EVENT_INACTIVE. Command Parameters: uint8_t timerId Which timer to set (0 or 1). uint16_t time The delay before the timerHandler callback will be generated. Note that the timer clock is free running and is not synchronized with this command. This means that the actual delay will be between time and (time - 1). The maximum delay is 32767. EmberEventUnits units The units for time. bool repeat If true, a timerHandler callback will be generated repeatedly. If false, only a single timerHandler callback will be generated. Response Parameters: EmberStatus status Name: getTimer An EmberStatus value indicating success or the reason for failure. ID: 0x4E Description: Gets information about a timer. The Host can use this command to find out how much longer it will be before a previously set timer will generate a callback. Command Parameters: uint8_t timerId Which timer to get information about (0 or 1). Response Parameters: uint16_t time The delay before the timerHandler callback will be generated. EmberEventUnits units The units for time. bool repeat True if a timerHandler callback will be generated repeatedly. False if only a single timerHandler callback will be generated. Name: timerHandler ID: 0x0F Description: A callback from the timer. This frame is a response to the callback command. Response Parameters: uint8_t timerId Which timer generated the callback (0 or 1). silabs.com | Building a more connected world. Rev. 3.2 | 50 UG100: EZSP Reference Guide Utilities Frames Name: debugWrite ID: 0x12 Description: Sends a debug message from the Host to the Network Analyzer utility via the NCP. Command Parameters: bool binaryMessage true if the message should be interpreted as binary data, false if the message should be interpreted as ASCII text. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The binary message. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: readAndClearCounters ID: 0x65 Description: Retrieves and clears Ember counters. See the EmberCounterType enumeration for the counter types. Command Parameters: None Response Parameters: uint16_t[EMBER_COUNTER_TYPE_ COUNT] values A list of all counter values ordered according to the EmberCounterType enumeration. Name: readCounters ID: 0xF1 Description: Retrieves Ember counters. See the EmberCounterType enumeration for the counter types. Command Parameters: None Response Parameters: uint16_t[EMBER_COUNTER_TYPE_C OUNT] values Name: counterRolloverHandler A list of all counter values ordered according to the EmberCounterType enumeration. ID: 0xF2 Description: This call is fired when a counter exceeds its threshold. This frame is a response to the callback command. Response Parameters: EmberCounterType type Type of Counter silabs.com | Building a more connected world. Rev. 3.2 | 51 UG100: EZSP Reference Guide Utilities Frames Name: delayTest ID: 0x9D Description: Used to test that UART flow control is working correctly. Command Parameters: uint16_t delay Data will not be read from the host for this many milliseconds. Response Parameters: None Name: getLibraryStatus ID: 0x01 Description: This retrieves the status of the passed library ID to determine if it is compiled into the stack. Command Parameters: uint8_t libraryId The ID of the library being queried. Response Parameters: EmberLibraryStatus status Name: getXncpInfo The status of the library being queried. ID: 0x13 Description: Allows the HOST to know whether the NCP is running the XNCP library. If so, the response contains also the manufacturer ID and the version number of the XNCP application that is running on the NCP. Command Parameters: None Response Parameters: EmberStatus status EMBER_SUCCESS if the NCP is running the XNCP library. EMBER_INVALID_CALL otherwise. uint16_t manufacturerId The manufactured ID the user has defined in the XNCP application. uint16_t versionNumber The version number of the XNCP application. silabs.com | Building a more connected world. Rev. 3.2 | 52 UG100: EZSP Reference Guide Utilities Frames Name: customFrame ID: 0x47 Description: Provides the customer a custom EZSP frame. On the NCP, these frames are only handled if the XNCP library is included. On the NCP side these frames are handled in the emberXNcpIncomingCustomEzspMessageCallback() callback function. Command Parameters: uint8_t payloadLength The length of the custom frame payload. uint8_t[] payload The payload of the custom frame. Response Parameters: EmberStatus status The status returned by the custom command. uint8_t replyLength The length of the response. uint8_t[] reply The response. Name: customFrameHandler ID: 0x54 Description: A callback indicating a custom EZSP message has been received. This frame is a response to the callback command. Response Parameters: uint8_t payloadLength The length of the custom frame payload. uint8_t[] payload The payload of the custom frame. Name: getEui64 ID: 0x26 Description: Returns the EUI64 ID of the local node. Command Parameters: None Response Parameters: EmberEUI64 eui64 The 64-bit ID. Name: getNodeId ID: 0x27 Description: Returns the 16-bit node ID of the local node. Command Parameters: None Response Parameters: EmberNodeId nodeId silabs.com | Building a more connected world. The 16-bit ID. Rev. 3.2 | 53 UG100: EZSP Reference Guide Utilities Frames Name: getPhyInterfaceCount ID: 0xFC Description: Returns number of phy interfaces present. Command Parameters: None Response Parameters: uint8_t interfaceCount silabs.com | Building a more connected world. Value indicate how many phy interfaces present. Rev. 3.2 | 54 UG100: EZSP Reference Guide Networking Frames 6 Networking Frames Name: setManufacturerCode ID: 0x15 Description: Sets the manufacturer code to the specified value. The manufacturer code is one of the fields of the node descriptor. Command Parameters: uint16_t code The manufacturer code for the local node. Response Parameters: None Name: setPowerDescriptor ID: 0x16 Description: Sets the power descriptor to the specified value. The power descriptor is a dynamic value, therefore you should call this function whenever the value changes. Command Parameters: uint16_t descriptor The new power descriptor for the local node. Response Parameters: None Name: networkInit Description: Resume network operation after a reboot. The node retains its original type. This should be called on startup whether or not the node was previously part of a network. EMBER_NOT_JOINED is returned if the node is not part of a network. This command accepts options to control the network initialization. Command Parameters: EmberNetworkInitStruct networkInitStruct An EmberNetworkInitStruct containing the options for initialization. Response Parameters: EmberStatus status Name: networkState An EmberStatus value that indicates one of the following: successful initialization, EMBER_NOT_JOINED if the node is not part of a network, or the reason for failure. ID: 0x18 Description: Returns a value indicating whether the node is joining, joined to, or leaving a network. Command Parameters: None Response Parameters: EmberNetworkStatus status silabs.com | Building a more connected world. An EmberNetworkStatus value indicating the current join status. Rev. 3.2 | 55 UG100: EZSP Reference Guide Networking Frames Name: stackStatusHandler ID: 0x19 Description: A callback invoked when the status of the stack changes. If the status parameter equals EMBER_NETWORK_UP, then the getNetworkParameters command can be called to obtain the new network parameters. If any of the parameters are being stored in nonvolatile memory by the Host, the stored values should be updated. This frame is a response to the callback command. Response Parameters: EmberStatus status Name: startScan Stack status. One of the following: EMBER_NETWORK_UP, EMBER_NETWORK_DOWN, EMBER_JOIN_FAILED, EMBER_MOVE_FAILED ID: 0x1A Description: This function will start a scan. Command Parameters: EzspNetworkScanType scanType Indicates the type of scan to be performed. Possible values are: EZSP_ENERGY_SCAN and EZSP_ACTIVE_SCAN. For each type, the respective callback for reporting results is: energyScanResultHandler and networkFoundHandler. The energy scan and active scan report errors and completion via the scanCompleteHandler. uint32_t channelMask Bits set as 1 indicate that this particular channel should be scanned. Bits set to 0 indicate that this particular channel should not be scanned. For example, a channelMask value of 0x00000001 would indicate that only channel 0 should be scanned. Valid channels range from 11 to 26 inclusive. This translates to a channel mask value of 0x07FFF800. As a convenience, a value of 0 is reinterpreted as the mask for the current channel. uint8_t duration Sets the exponent of the number of scan periods, where a scan period is 960 symbols. The scan will occur for ((2^duration) + 1) scan periods. Response Parameters: EmberStatus status Name: energyScanResultHandler EMBER_SUCCESS signals that the scan successfully started. Possible error responses and their meanings: EMBER_MAC_SCANNING, we are already scanning; EMBER_MAC_JOINED_NETWORK, we are currently joined to a network and cannot begin a scan; EMBER_MAC_BAD_SCAN_DURATION, we have set a duration value that is not 0..14 inclusive; EMBER_MAC_INCORRECT_SCAN_TYPE, we have requested an undefined scanning type; EMBER_MAC_INVALID_CHANNEL_MASK, our channel mask did not specify any valid channels. ID: 0x48 Description: Reports the result of an energy scan for a single channel. The scan is not complete until the scanCompleteHandler callback is called. This frame is a response to the callback command. Response Parameters: uint8_t channel The 802.15.4 channel number that was scanned. int8s maxRssiValue The maximum RSSI value found on the channel. silabs.com | Building a more connected world. Rev. 3.2 | 56 UG100: EZSP Reference Guide Networking Frames Name: networkFoundHandler ID: 0x1B Description: Reports that a network was found as a result of a prior call to startScan. Gives the network parameters useful for deciding which network to join. This frame is a response to the callback command. Response Parameters: EmberZigbeeNetwork networkFound The parameters associated with the network found. uint8_t lastHopLqi The link quality from the node that generated this beacon. int8s lastHopRssi The energy level (in units of dBm) observed during the reception. Name: scanCompleteHandler ID: 0x1C Description: Returns the status of the current scan of type EZSP_ENERGY_SCAN or EZSP_ACTIVE_SCAN. EMBER_SUCCESS signals that the scan has completed. Other error conditions signify a failure to scan on the channel specified. This frame is a response to the callback command. Response Parameters: uint8_t channel The channel on which the current error occurred. Undefined for the case of EMBER_SUCCESS. EmberStatus status The error condition that occurred on the current channel. Value will be EMBER_SUCCESS when the scan has completed. Name: stopScan ID: 0x1D Description: Terminates a scan in progress. Command Parameters: None Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: formNetwork ID: 0x1E Description: Forms a new network by becoming the coordinator. Command Parameters: EmberNetworkParameters parameters Specification of the new network. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 57 UG100: EZSP Reference Guide Networking Frames Name: joinNetwork ID: 0x1F Description: Causes the stack to associate with the network using the specified network parameters. It can take several seconds for the stack to associate with the local network. Do not send messages until the stackStatusHandler callback informs you that the stack is up. Command Parameters: EmberNodeType nodeType Specification of the role that this node will have in the network. This role must not be EMBER_COORDINATOR. To be a coordinator, use the formNetwork command. EmberNetworkParameters parameters Specification of the network with which the node should associate. Response Parameters: EmberStatus status Name: leaveNetwork An EmberStatus value indicating success or the reason for failure. ID: 0x20 Description: Causes the stack to leave the current network. This generates a stackStatusHandler callback to indicate that the network is down. The radio will not be used until after sending a formNetwork or joinNetwork command. Command Parameters: None Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: findAndRejoinNetwork ID: 0x21 Description: The application may call this function when contact with the network has been lost. The most common usage case is when an end device can no longer communicate with its parent and wishes to find a new one. Another case is when a device has missed a Network Key update and no longer has the current Network Key. The stack will call ezspStackStatusHandler to indicate that the network is down, then try to re-establish contact with the network by performing an active scan, choosing a network with matching extended pan id, and sending a ZigBee network rejoin request. A second call to the ezspStackStatusHandler callback indicates either the success or the failure of the attempt. The process takes approximately 150 milliseconds per channel to complete. This call replaces the emberMobileNodeHasMoved API from EmberZNet 2.x, which used MAC association and consequently took half a second longer to complete. Command Parameters: bool haveCurrentNetworkKey This parameter tells the stack whether to try to use the current network key. If it has the current network key it will perform a secure rejoin (encrypted). If this fails the device should try an unsecure rejoin. If the Trust Center allows the rejoin then the current Network Key will be sent encrypted using the device's Link Key. uint32_t channelMask A mask indicating the channels to be scanned. See emberStartScan for format details. A value of 0 is reinterpreted as the mask for the current channel. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 58 UG100: EZSP Reference Guide Networking Frames Name: permitJoining ID: 0x22 Description: Tells the stack to allow other nodes to join the network with this node as their parent. Joining is initially disabled by default. Command Parameters: uint8_t duration A value of 0x00 disables joining. A value of 0xFF enables joining. Any other value enables joining for that number of seconds. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: childJoinHandler ID: 0x23 Description: Indicates that a child has joined or left. This frame is a response to the callback command. Response Parameters: uint8_t index The index of the child of interest. bool joining True if the child is joining. False the child is leaving. EmberNodeId childId The node ID of the child. EmberEUI64 childEui64 The EUI64 of the child. EmberNodeType childType The node type of the child. Name: energyScanRequest ID: 0x9C Description: Sends a ZDO energy scan request. This request may only be sent by the current network manager and must be unicast, not broadcast. See ezsp-utils.h for related macros emberSetNetworkManagerRequest() and emberChangeChannelRequest(). Command Parameters: EmberNodeId target The network address of the node to perform the scan. uint32_t scanChannels A mask of the channels to be scanned. uint8_t scanDuration How long to scan on each channel. Allowed values are 0..5, with the scan times as specified by 802.15.4 (0 = 31ms, 1 = 46ms, 2 = 77ms, 3 = 138ms, 4 = 261ms, 5 = 507ms). uint16_t scanCount The number of scans to be performed on each channel (1..8). Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 59 UG100: EZSP Reference Guide Networking Frames Name: getNetworkParameters ID: 0x28 Description: Returns the current network parameters. Command Parameters: None Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. EmberNodeType nodeType An EmberNodeType value indicating the current node type. EmberNetworkParameters parameters The current network parameters. Name: getRadioParameters ID: 0xFD Description: Returns the current radio parameters based on phy index. Command Parameters:: uint8_t childCount The number of children the node currently has. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. EmberNodeType nodeType An EmberNodeType value indicating the current node type. EmberNetworkParameters parameters The current network parameters. Name: getParentChildParameters ID: 0x29 Description: Returns information about the children of the local node and the parent of the local node. Command Parameters: None Response Parameters: uint8_t childCount The number of children the node currently has. EmberEUI64 parentEui64 The parent's EUI64. The value is undefined for nodes without parents (coordinators and nodes that are not joined to a network). EmberNodeId parentNodeId The parent's node ID. The value is undefined for nodes without parents (coordinators and nodes that are not joined to a network). silabs.com | Building a more connected world. Rev. 3.2 | 60 UG100: EZSP Reference Guide Networking Frames Name: getChildData ID: 0x4A Description: Returns information about a child of the local node. Command Parameters: uint8_t index The index of the child of interest in the child table. Possible indexes range from zero to EMBER_CHILD_TABLE_SIZE. Response Parameters: EmberStatus status EMBER_SUCCESS if there is a child at index. EMBER_NOT_JOINED if there is no child at index. EmberChildData childData The data of the child. Name: getSourceRouteTableTotalSize ID: 0xC3 Description: Returns the source route table total size. Command Parameters: None Response Parameters: uint8_t sourceRouteTableTotalSize Total size of source route table. Name: getSourceRouteTableFilledSize ID: 0xC2 Description: Returns the number of filled entries in source route table. Command Parameters: None Response Parameters: uint8_t sourceRouteTableFilledSize The number of filled entries in source route table. Name: getSourceRouteTableEntry ID: 0xC1 Description: Returns information about a source route table entry Command Parameters: uint8_t index The index of the entry of interest in the source route table. Possible indexes range from zero to SOURCE_ROUTE_TABLE_FILLED_SIZE. Response Parameters: EmberStatus status EMBER_SUCCESS if there is source route entry EMBER_SOURCE_ROUTE_FAILURE if there is no source route at index. EmberNodeId destination The node ID of the destination in that entry. uint8_t closerIndex The closer node index for this source route table entry silabs.com | Building a more connected world. at index. Rev. 3.2 | 61 UG100: EZSP Reference Guide Networking Frames Name: getNeighbor ID: 0x79 Description: Returns the neighbor table entry at the given index. The number of active neighbors can be obtained using the neighborCount command. Command Parameters: uint8_t index The index of the neighbor of interest. Neighbors are stored in ascending order by node id, with all unused entries at the end of the table. Response Parameters: EmberStatus status EMBER_ERR_FATAL if the index is greater or equal to the number of active neighbors, or if the device is an end device. Returns EMBER_SUCCESS otherwise. EmberNeighborTableEntry value The contents of the neighbor table entry. Name: neighborCount ID: 0x7A Description: Returns the number of active entries in the neighbor table. Command Parameters: None Response Parameters: uint8_t value The number of active entries in the neighbor table. Name: getRouteTableEntry ID: 0x7B Description: Returns the route table entry at the given index. The route table size can be obtained using the getConfigurationValue command. Command Parameters: uint8_t index The index of the route table entry of interest. Response Parameters: EmberStatus status EMBER_ERR_FATAL if the index is out of range or the device is an end device, and EMBER_SUCCESS otherwise. EmberRouteTableEntry value The contents of the route table entry. silabs.com | Building a more connected world. Rev. 3.2 | 62 UG100: EZSP Reference Guide Networking Frames Name: setRadioPower ID: 0x99 Description: Sets the radio output power at which a node is operating. Ember radios have discrete power settings. For a list of available power settings, see the technical specification for the RF communication module in your Developer Kit. Note: Care should be taken when using this API on a running network, as it will directly impact the established link qualities neighboring nodes have with the node on which it is called. This can lead to disruption of existing routes and erratic network behavior. Command Parameters: int8s power Desired radio output power, in dBm. Response Parameters: EmberStatus status An EmberStatus value indicating the success or failure of the command. Name: setRadioChannel ID: 0x9A Description: Sets the channel to use for sending and receiving messages. For a list of available radio channels, see the technical specification for the RF communication module in your Developer Kit. Note: Care should be taken when using this API, as all devices on a network must use the same channel. Command Parameters: uint8_t channel Desired radio channel. Response Parameters: EmberStatus status An EmberStatus value indicating the success or failure of the command. silabs.com | Building a more connected world. Rev. 3.2 | 63 UG100: EZSP Reference Guide Networking Frames Name: setConcentrator ID: 0x10 Description: Enable/disable concentrator support. Command Parameters: bool on If this bool is true the concentrator support is enabled. Otherwise is disabled. If this bool is false all the other arguments are ignored. uint16_t concentratorType Must be either EMBER_HIGH_RAM_CONCENTRATOR or EMBER_LOW_RAM_CONCENTRATOR. The former is used when the caller has enough memory to store source routes for the whole network. In that case, remote nodes stop sending route records once the concentrator has successfully received one. The latter is used when the concentrator has insufficient RAM to store all outbound source routes. In that case, route records are sent to the concentrator prior to every inbound APS unicast. uint16_t minTime The minimum amount of time that must pass between MTORR broadcasts. uint16_t maxTime The maximum amount of time that can pass between MTORR broadcasts. uint8_t routeErrorThreshold The number of route errors that will trigger a re-broadcast of the MTORR. uint8_t deliveryFailureThreshold The number of APS delivery failures that will trigger a re-broadcast of the MTORR. uint8_t maxHops The maximum number of hops that the MTORR broadcast will be allowed to have. A value of 0 will be converted to the EMBER_MAX_HOPS value set by the stack. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: multiPhyStart ID: 0xF8 Description: This causes to initialize the desired radio interface other than native and form a new network by becoming the coordinator with same panId as native radio network. Command Parameters: uint8_t phyIndex Index of phy interface. The native phy index would be always zero hence valid phy index starts from one. uint8_t page Desired radio channel page. uint8_t channel Desired radio channel. int8_t power Desired radio output power, in dBm. EmberMultiPhyNwkConfig bitmask Network configuration bitmask. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 64 UG100: EZSP Reference Guide Networking Frames Name: multiPhyStop ID: 0xF9 Description: This causes to bring down the radio interface other than native. Command Parameters: uint8_t phyIndex Index of phy interface. The native phy index would be always zero hence valid phy index starts from one. Response Parameters: EmberStatus status Name: multiPhySetRadioPower An EmberStatus value indicating success or the reason for failure. ID: 0xFA Description: Sets the radio output power for desired phy interface at which a node is operating. Ember radios have discrete power settings. For a list of available power settings, see the technical specification for the RF communication module in your Developer Kit. Note: Care should be taken when using this api on a running network, as it will directly impact the established link qualities neighboring nodes have with the node on which it is called. This can lead to disruption of existing routes and erratic network behavior. Command Parameters: uint8_t phyIndex Index of phy interface. The native phy index would be always zero hence valid phy index starts from one. int8_t power Desired radio output power, in dBm. Response Parameters: EmberStatus status Name: sendLinkPowerDeltaRequest An EmberStatus value indicating the success or failure of the command. ID: 0xF7 Description: Send Link Power Delta Request from a child to its parent Command Parameters: None Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating the success or failure of sending the request. Rev. 3.2 | 65 UG100: EZSP Reference Guide Networking Frames Name: multiPhySetRadioChannel ID: 0xFB Description: Sets the channel for desired phy interface to use for sending and receiving messages. For a list of available radio pages and channels, see the technical specification for the RF communication module in your Developer Kit. Note: Care should be taken when using this API, as all devices on a network must use the same page and channel. Command Parameters: uint8_t phyIndex Index of phy interface. The native phy index would be always zero hence valid phy index starts from one. uint8_t page Desired radio channel page. uint8_t channel Desired radio channel. Response Parameters: EmberStatus status Name: getDutyCycleState An EmberStatus value indicating the success or failure of the command. ID: 0x35 Description: Obtains the current duty cycle state. Command Parameters: None Response Parameters: EmberStatus status An EmberStatus value indicating the success or failure of the command. EmberDutyCycleState returnedState The current duty cycle state in effect. Name: setDutyCycleLimitsInStack ID: 0x40 Description: Set the current duty cycle limits configuration. The Default limits set by stack if this call is not made. Command Parameters: EmberDutyCycleLimits limits The duty cycle limits configuration to utilize. Response Parameters: EmberStatus status silabs.com | Building a more connected world. EMBER_SUCCESS if the duty cycle limit configurations set successfully, EMBER_BAD_ARGUMENT if set illegal value such as setting only one of the limits to default or violates constraints Susp > Crit > Limi, EMBER_INVALID_CALL if device is operating on 2.4Ghz Rev. 3.2 | 66 UG100: EZSP Reference Guide Networking Frames Name: getDutyCycleLimits ID: 0x4B Description: Obtains the current duty cycle limits that were previously set by a call to emberSetDutyCycleLimitsInStack(), or the defaults set by the stack if no set call was made. Command Parameters: None Response Parameters: EmberStatus status An EmberStatus value indicating the success or failure of the command. EmberDutyCycleLimits returnedLimits Return current duty cycle limits if returnedLimits is not NULL Name: getCurrentDutyCycle ID: 0x4C Description: Returns the duty cycle of the stack's connected children that are being monitored, up to maxDevices. It indicates the amount of overall duty cycle they have consumed (up to the suspend limit). The first entry is always the local stack's nodeId, and thus the total aggregate duty cycle for the device. The passed pointer arrayOfDeviceDutyCycles MUST have space for maxDevices. Command Parameters: uint8_t maxDevices Number of devices to retrieve consumed duty cycle. Response Parameters: EmberStatus status EMBER_SUCCESS if the duty cycles were read successfully, EMBER_BAD_ARGUMENT maxDevices is greater than EMBER_MAX_END_DEVICE_CHILDREN + 1. uint8_t[134] arrayOfDeviceDutyCycles Consumed duty cycles up to maxDevices. When the number of children that are being monitored is less than maxDevices, the EmberNodeId element in the EmberPerDeviceDutyCycle will be 0xFFFF. Name: dutyCycleHandler ID: 0x4D Description: Callback fires when the duty cycle state has changed This frame is a response to the callback command. Response Parameters: uint8_t channelPage The channel page whose duty cycle state has changed. uint8_t channel The channel number whose duty cycle state has changed. EmberDutyCycleState state The current duty cycle state. uint8_t totalDevices The total number of connected end devices that are being monitored for duty cycle. EmberPerDeviceDutyCycle arrayOfDeviceDutyCycles Consumed duty cycles of end devices that are being monitored. The first entry always be the local stack's nodeId, and thus the total aggregate duty cycle for the device. silabs.com | Building a more connected world. Rev. 3.2 | 67 UG100: EZSP Reference Guide Binding Frames 7 Binding Frames Name: clearBindingTable ID: 0x2A Description: Deletes all binding table entries. Command Parameters: None Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: setBinding ID: 0x2B Description: Sets an entry in the binding table. Command Parameters: uint8_t index The index of a binding table entry. EmberBindingTableEntry value The contents of the binding entry. Response Parameters: EmberStatus status Name: getBinding An EmberStatus value indicating success or the reason for failure. ID: 0x2C Description: Gets an entry from the binding table. Command Parameters: uint8_t index The index of a binding table entry. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. EmberBindingTableEntry value The contents of the binding entry. Name: deleteBinding ID: 0x2D Description: Deletes a binding table entry. Command Parameters: uint8_t index The index of a binding table entry. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 68 UG100: EZSP Reference Guide Binding Frames Name: bindingIsActive ID: 0x2E Description: Indicates whether any messages are currently being sent using this binding table entry. Note that this command does not indicate whether a binding is clear. To determine whether a binding is clear, check whether the type field of the EmberBindingTableEntry has the value EMBER_UNUSED_BINDING. Command Parameters: uint8_t index The index of a binding table entry. Response Parameters: bool active Name: getBindingRemoteNodeId True if the binding table entry is active, false otherwise. ID: 0x2F Description: Returns the node ID for the binding's destination, if the ID is known. If a message is sent using the binding and the destination's ID is not known, the stack will discover the ID by broadcasting a ZDO address request. The application can avoid the need for this discovery by using setBindingRemoteNodeId when it knows the correct ID via some other means. The destination's node ID is forgotten when the binding is changed, when the local node reboots or, much more rarely, when the destination node changes its ID in response to an ID conflict. Command Parameters: uint8_t index The index of a binding table entry. Response Parameters: EmberNodeId nodeId Name: setBindingRemoteNodeId The short ID of the destination node or EMBER_NULL_NODE_ID if no destination is known. ID: 0x30 Description: Set the node ID for the binding's destination. See getBindingRemoteNodeId for a description. Command Parameters: uint8_t index The index of a binding table entry. EmberNodeId nodeId The short ID of the destination node. Response Parameters: None Name: remoteSetBindingHandler ID: 0x31 Description: The NCP used the external binding modification policy to decide how to handle a remote set binding request. The Host cannot change the current decision, but it can change the policy for future decisions using the setPolicy command. This frame is a response to the callback command. Response Parameters: EmberBindingTableEntry entry The requested binding. uint8_t index The index at which the binding was added. EmberStatus policyDecision EMBER_SUCCESS if the binding was added to the table and any other status if not. silabs.com | Building a more connected world. Rev. 3.2 | 69 UG100: EZSP Reference Guide Binding Frames Name: remoteDeleteBindingHandler ID: 0x32 Description: The NCP used the external binding modification policy to decide how to handle a remote delete binding request. The Host cannot change the current decision, but it can change the policy for future decisions using the setPolicy command. This frame is a response to the callback command. Response Parameters: uint8_t index The index of the binding whose deletion was requested. EmberStatus policyDecision EMBER_SUCCESS if the binding was removed from the table and any other status if not. silabs.com | Building a more connected world. Rev. 3.2 | 70 UG100: EZSP Reference Guide Messaging Frames 8 Messaging Frames Name: maximumPayloadLength ID: 0x33 Description: Returns the maximum size of the payload. The size depends on the security level in use. Command Parameters: None Response Parameters: uint8_t apsLength Name: sendUnicast The maximum APS payload length. ID: 0x34 Description: Sends a unicast message as per the ZigBee specification. The message will arrive at its destination only if there is a known route to the destination node. Setting the ENABLE_ROUTE_DISCOVERY option will cause a route to be discovered if none is known. Setting the FORCE_ROUTE_DISCOVERY option will force route discovery. Routes to end-device children of the local node are always known. Setting the APS_RETRY option will cause the message to be retransmitted until either a matching acknowledgement is received or three transmissions have been made. Note: Using the FORCE_ROUTE_DISCOVERY option will cause the first transmission to be consumed by a route request as part of discovery, so the application payload of this packet will not reach its destination on the first attempt. If you want the packet to reach its destination, the APS_RETRY option must be set so that another attempt is made to transmit the message with its application payload after the route has been constructed. Note: When sending fragmented messages, the stack will only assign a new APS sequence number for the first fragment of the message (i.e., EMBER_APS_OPTION_FRAGMENT is set and the low-order byte of the groupId field in the APS frame is zero). For all subsequent fragments of the same message, the application must set the sequence number field in the APS frame to the sequence number assigned by the stack to the first fragment. Command Parameters: EmberOutgoingMessageType type Specifies the outgoing message type. Must be one of EMBER_OUTGOING_DIRECT, EMBER_OUTGOING_VIA_ADDRESS_TABLE, or EMBER_OUTGOING_VIA_BINDING. EmberNodeId indexOrDestination Depending on the type of addressing used, this is either the EmberNodeId of the destination, an index into the address table, or an index into the binding table. EmberApsFrame apsFrame The APS frame which is to be added to the message. uint8_t messageTag A value chosen by the Host. This value is used in the ezspMessageSentHandler response to refer to this message. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents Content of the message. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. uint8_t sequence The sequence number that will be used when this message is transmitted. silabs.com | Building a more connected world. Rev. 3.2 | 71 UG100: EZSP Reference Guide Messaging Frames Name: sendBroadcast ID: 0x36 Description: Sends a broadcast message as per the ZigBee specification. Command Parameters: EmberNodeId destination The destination to which to send the broadcast. This must be one of the three ZigBee broadcast addresses. EmberApsFrame apsFrame The APS frame for the message. uint8_t radius The message will be delivered to all nodes within radius hops of the sender. A radius of zero is converted to EMBER_MAX_HOPS. uint8_t messageTag A value chosen by the Host. This value is used in the ezspMessageSentHandler response to refer to this message. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The broadcast message. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. uint8_t sequence The sequence number that will be used when this message is transmitted. Name: proxyBroadcast ID: 0x37 Description: Sends a proxied broadcast message as per the ZigBee specification. Command Parameters: EmberNodeId source The source from which to send the broadcast. EmberNodeId destination The destination to which to send the broadcast. This must be one of the three ZigBee broadcast addresses. uint8_t nwkSequence The network sequence number for the broadcast. EmberApsFrame apsFrame The APS frame for the message. uint8_t radius The message will be delivered to all nodes within radius hops of the sender. A radius of zero is converted to EMBER_MAX_HOPS. uint8_t messageTag A value chosen by the Host. This value is used in the ezspMessageSentHandler response to refer to this message. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The broadcast message. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. uint8_t apsSequence The APS sequence number that will be used when this message is transmitted. silabs.com | Building a more connected world. Rev. 3.2 | 72 UG100: EZSP Reference Guide Messaging Frames Name: sendMulticast ID: 0x38 Description: Sends a multicast message to all endpoints that share a specific multicast ID and are within a specified number of hops of the sender. Command Parameters: EmberApsFrame apsFrame The APS frame for the message. The multicast will be sent to the groupId in this frame. uint8_t hops The message will be delivered to all nodes within this number of hops of the sender. A value of zero is converted to EMBER_MAX_HOPS. uint8_t nonmemberRadius The number of hops that the message will be forwarded by devices that are not members of the group. A value of 7 or greater is treated as infinite. uint8_t messageTag A value chosen by the Host. This value is used in the ezspMessageSentHandler response to refer to this message. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The multicast message. Response Parameters: EmberStatus status An EmberStatus value. For any result other than EMBER_SUCCESS, the message will not be sent. EMBER_SUCCESS The message has been submitted for transmission. EMBER_INVALID_BINDING_INDEX - The bindingTableIndex refers to a non-multicast binding. EMBER_NETWORK_DOWN - The node is not part of a network. EMBER_MESSAGE_TOO_LONG - The message is too large to fit in a MAC layer frame. EMBER_NO_BUFFERS - The free packet buffer pool is empty. EMBER_NETWORK_BUSY - Insufficient resources available in Network or MAC layers to send message. uint8_t sequence The sequence number that will be used when this message is transmitted. silabs.com | Building a more connected world. Rev. 3.2 | 73 UG100: EZSP Reference Guide Messaging Frames Name: sendMulticastWithAlias ID: 0x3A Description: Sends a multicast message to all endpoints that share a specific multicast ID and are within a specified number of hops of the sender. Command Parameters: EmberApsFrame apsFrame The APS frame for the message. The multicast will be sent to the groupId in this frame. uint8_t hops The message will be delivered to all nodes within this number of hops of the sender. A value of zero is converted to EMBER_MAX_HOPS. uint8_t nonmemberRadius The number of hops that the message will be forwarded by devices that are not members of the group. A value of 7 or greater is treated as infinite. uint16_t alias The alias source address uint8_t nwkSequence the alias sequence number uint8_t messageTag A value chosen by the Host. This value is used in the ezspMessageSentHandler response to refer to this message. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The multicast message. Response Parameters: EmberStatus status An EmberStatus value. For any result other than EMBER_SUCCESS, the message will not be sent. EMBER_SUCCESS The message has been submitted for transmission. EMBER_INVALID_BINDING_INDEX - The bindingTableIndex refers to a non-multicast binding. EMBER_NETWORK_DOWN - The node is not part of a network. EMBER_MESSAGE_TOO_LONG The message is too large to fit in a MAC layer frame. EMBER_NO_BUFFERS - The free packet buffer pool is empty. EMBER_NETWORK_BUSY - Insufficient resources available in Network or MAC layers to send message. uint8_t sequence The sequence number that will be used when this message is transmitted. silabs.com | Building a more connected world. Rev. 3.2 | 74 UG100: EZSP Reference Guide Messaging Frames Name: sendReply ID: 0x39 Description: Sends a reply to a received unicast message. The incomingMessageHandler callback for the unicast being replied to supplies the values for all the parameters except the reply itself. Command Parameters: EmberNodeId sender Value supplied by incoming unicast. EmberApsFrame apsFrame Value supplied by incoming unicast. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The reply message. Response Parameters: EmberStatus status Name: messageSentHandler An EmberStatus value. EMBER_INVALID_CALL - The EZSP_UNICAST_REPLIES_POLICY is set to EZSP_HOST_WILL_NOT_SUPPLY_REPLY. This means the NCP will automatically send an empty reply. The Host must change the policy to EZSP_HOST_WILL_SUPPLY_REPLY before it can supply the reply. There is one exception to this rule: In the case of responses to message fragments, the host must call sendReply when a message fragment is received. In this case, the policy set on the NCP does not matter. The NCP expects a sendReply call from the Host for message fragments regardless of the current policy settings. EMBER_NO_BUFFERS - Not enough memory was available to send the reply. EMBER_NETWORK_BUSY - Either no route or insufficient resources available. EMBER_SUCCESS - The reply was successfully queued for transmission. ID: 0x3F Description: A callback indicating the stack has completed sending a message. This frame is a response to the callback command. Response Parameters: EmberOutgoingMessageType type The type of message sent. uint16_t indexOrDestination The destination to which the message was sent, for direct unicasts, or the address table or binding index for other unicasts. The value is unspecified for multicasts and broadcasts. EmberApsFrame apsFrame The APS frame for the message. uint8_t messageTag The value supplied by the ezspSendMulticast command. EmberStatus status An EmberStatus value of EMBER_SUCCESS if an ACK was received from the destination or EMBER_DELIVERY_FAILED if no ACK was received. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The unicast message supplied by the Host. The message contents are only included here if the decision for the messageContentsInCallback policy is messageTagAndContentsInCallback. silabs.com | Building a more connected world. Host in the ezspSendUnicast, ezspSendBroadcast or Rev. 3.2 | 75 UG100: EZSP Reference Guide Messaging Frames Name: sendManyToOneRouteRequest ID: 0x41 Description: Sends a route request packet that creates routes from every node in the network back to this node. This function should be called by an application that wishes to communicate with many nodes, for example, a gateway, central monitor, or controller. A device using this function was referred to as an 'aggregator' in EmberZNet 2.x and earlier, and is referred to as a 'concentrator' in the ZigBee specification and EmberZNet 3. This function enables large scale networks, because the other devices do not have to individually perform bandwidth-intensive route discoveries. Instead, when a remote node sends an APS unicast to a concentrator, its network layer automatically delivers a special route record packet first, which lists the network ids of all the intermediate relays. The concentrator can then use source routing to send outbound APS unicasts. (A source routed message is one in which the entire route is listed in the network layer header.) This allows the concentrator to communicate with thousands of devices without requiring large route tables on neighboring nodes. This function is only available in ZigBee Pro (stack profile 2), and cannot be called on end devices. Any router can be a concentrator (not just the coordinator), and there can be multiple concentrators on a network. Note that a concentrator does not automatically obtain routes to all network nodes after calling this function. Remote applications must first initiate an inbound APS unicast. Many-to-one routes are not repaired automatically. Instead, the concentrator application must call this function to rediscover the routes as necessary, for example, upon failure of a retried APS message. The reason for this is that there is no scalable one-size-fits-all route repair strategy. A common and recommended strategy is for the concentrator application to refresh the routes by calling this function periodically. Command Parameters: uint16_t concentratorType Must be either EMBER_HIGH_RAM_CONCENTRATOR or EMBER_LOW_RAM_CONCENTRATOR. The former is used when the caller has enough memory to store source routes for the whole network. In that case, remote nodes stop sending route records once the concentrator has successfully received one. The latter is used when the concentrator has insufficient RAM to store all outbound source routes. In that case, route records are sent to the concentrator prior to every inbound APS unicast. uint8_t radius The maximum number of hops the route request will be relayed. A radius of zero is converted to EMBER_MAX_HOPS. Response Parameters: EmberStatus status silabs.com | Building a more connected world. EMBER_SUCCESS if the route request was successfully submitted to the transmit queue, and EMBER_ERR_FATAL otherwise. Rev. 3.2 | 76 UG100: EZSP Reference Guide Messaging Frames Name: pollForData ID: 0x42 Description: Periodically request any pending data from our parent. Setting interval to 0 or units to EMBER_EVENT_INACTIVE will generate a single poll. Command Parameters: uint16_t interval The time between polls. Note that the timer clock is free running and is not synchronized with this command. This means that the time will be between interval and (interval - 1). The maximum interval is 32767. EmberEventUnits units The units for interval. uint8_t failureLimit The number of poll failures that will be tolerated before a pollCompleteHandler callback is generated. A value of zero will result in a callback for every poll. Any status value apart from EMBER_SUCCESS and EMBER_MAC_NO_DATA is counted as a failure. Response Parameters: EmberStatus status Name: pollCompleteHandler The result of sending the first poll. ID: 0x43 Description: Indicates the result of a data poll to the parent of the local node. This frame is a response to the callback command. Response Parameters: EmberStatus status Name: pollHandler An EmberStatus value: EMBER_SUCCESS - Data was received in response to the poll. EMBER_MAC_NO_DATA - No data was pending. EMBER_DELIVERY_FAILED - The poll message could not be sent. EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not acknowledged by the parent. ID: 0x44 Description: Indicates that the local node received a data poll from a child. This frame is a response to the callback command. Response Parameters: EmberNodeId childId Name: incomingSenderEui64Handler The node ID of the child that is requesting data. ID: 0x62 Description: A callback indicating a message has been received containing the EUI64 of the sender. This callback is called immediately before the incomingMessageHandler callback. It is not called if the incoming message did not contain the EUI64 of the sender. This frame is a response to the callback command. Response Parameters: EmberEUI64 senderEui64 silabs.com | Building a more connected world. The EUI64 of the sender Rev. 3.2 | 77 UG100: EZSP Reference Guide Messaging Frames Name: incomingMessageHandler ID: 0x45 Description: A callback indicating a message has been received. This frame is a response to the callback command. Response Parameters: EmberIncomingMessageType type The type of the incoming message. One of the following: EMBER_INCOMING_UNICAST, EMBER_INCOMING_UNICAST_REPLY, EMBER_INCOMING_MULTICAST, EMBER_INCOMING_MULTICAST_LOOPBACK, EMBER_INCOMING_BROADCAST, EMBER_INCOMING_BROADCAST_LOOPBACK EmberApsFrame apsFrame The APS frame from the incoming message. uint8_t lastHopLqi The link quality from the node that last relayed the message. int8s lastHopRssi The energy level (in units of dBm) observed during the reception. EmberNodeId sender The sender of the message. uint8_t bindingIndex The index of a binding that matches the message or 0xFF if there is no matching binding. uint8_t addressIndex The index of the entry in the address table that matches the sender of the message or 0xFF if there is no matching entry. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The incoming message. Name: incomingRouteRecordHandler ID: 0x59 Description: Reports the arrival of a route record command frame. This frame is a response to the callback command. Response Parameters: EmberNodeId source The source of the route record. EmberEUI64 sourceEui The EUI64 of the source. uint8_t lastHopLqi The link quality from the node that last relayed the route record. int8s lastHopRssi The energy level (in units of dBm) observed during the reception. uint8_t relayCount The number of relays in relayList. uint8_t[] relayList The route record. Each relay in the list is an uint16_t node ID. The list is passed as uint8_t * to avoid alignment problems. silabs.com | Building a more connected world. Rev. 3.2 | 78 UG100: EZSP Reference Guide Messaging Frames Name: changeSourceRouteHandler ID: 0xC4 Description: Change the source route entry in a source route table This frame is a response to the callback command. Response Parameters: EmberNodeId newChildId The source/neighbor for which the source route entry is changed EmberNodeId newParentId The parent of the source/neighbor for which the source route entry is changed bool ourChild Is the source our child? Name: setSourceRoute ID: 0x5A Description: Supply a source route for the next outgoing message. Command Parameters: EmberNodeId destination The destination of the source route. uint8_t relayCount The number of relays in relayList. uint16_t[] relayList The source route. Response Parameters: EmberStatus status Name: incomingManyToOneRouteRequestHandler EMBER_SUCCESS if the source route was successfully stored, and EMBER_NO_BUFFERS otherwise. ID: 0x7D Description: A callback indicating that a many-to-one route to the concentrator with the given short and long id is available for use. This frame is a response to the callback command. Response Parameters: EmberNodeId source The short id of the concentrator. EmberEUI64 longId The EUI64 of the concentrator. uint8_t cost The path cost to the concentrator. The cost may decrease as additional route request packets for this discovery arrive, but the callback is made only once. silabs.com | Building a more connected world. Rev. 3.2 | 79 UG100: EZSP Reference Guide Messaging Frames Name: incomingRouteErrorHandler ID: 0x80 Description: A callback invoked when a route error message is received. The error indicates that a problem routing to or from the target node was encountered. This frame is a response to the callback command. Response Parameters: EmberStatus status EMBER_SOURCE_ROUTE_FAILURE EMBER_MANY_TO_ONE_ROUTE_FAILURE. EmberNodeId target The short id of the remote node. Name: addressTableEntryIsActive or ID: 0x5B Description: Indicates whether any messages are currently being sent using this address table entry. Note that this function does not indicate whether the address table entry is unused. To determine whether an address table entry is unused, check the remote node ID. The remote node ID will have the value EMBER_TABLE_ENTRY_UNUSED_NODE_ID when the address table entry is not in use. Command Parameters: uint8_t addressTableIndex The index of an address table entry. Response Parameters: bool active Name: setAddressTableRemoteEui64 True if the address table entry is active, false otherwise. ID: 0x5C Description: Sets the EUI64 of an address table entry. This function will also check other address table entries, the child table and the neighbor table to see if the node ID for the given EUI64 is already known. If known then this function will also set node ID. If not known it will set the node ID to EMBER_UNKNOWN_NODE_ID. Command Parameters: uint8_t addressTableIndex The index of an address table entry. EmberEUI64 eui64 The EUI64 to use for the address table entry. Response Parameters: EmberStatus status silabs.com | Building a more connected world. EMBER_SUCCESS if the EUI64 was successfully set, and EMBER_ADDRESS_TABLE_ENTRY_IS_ACTIVE otherwise. Rev. 3.2 | 80 UG100: EZSP Reference Guide Messaging Frames Name: setAddressTableRemoteNodeId ID: 0x5D Description: Sets the short ID of an address table entry. Usually the application will not need to set the short ID in the address table. Once the remote EUI64 is set the stack is capable of figuring out the short ID on its own. However, in cases where the application does set the short ID, the application must set the remote EUI64 prior to setting the short ID. Command Parameters: uint8_t addressTableIndex The index of an address table entry. EmberNodeId id The short ID corresponding to the remote node whose EUI64 is stored in the address table at the given index or EMBER_TABLE_ENTRY_UNUSED_NODE_ID which indicates that the entry stored in the address table at the given index is not in use. Response Parameters: None Name: getAddressTableRemoteEui64 ID: 0x5E Description: Gets the EUI64 of an address table entry. Command Parameters: uint8_t addressTableIndex The index of an address table entry. Response Parameters: EmberEUI64 eui64 Name: getAddressTableRemoteNodeId The EUI64 of the address table entry is copied to this location. ID: 0x5F Description: Gets the short ID of an address table entry. Command Parameters: uint8_t addressTableIndex The index of an address table entry. Response Parameters: EmberNodeId nodeId silabs.com | Building a more connected world. One of the following: The short ID corresponding to the remote node whose EUI64 is stored in the address table at the given index. EMBER_UNKNOWN_NODE_ID - Indicates that the EUI64 stored in the address table at the given index is valid but the short ID is currently unknown. EMBER_DISCOVERY_ACTIVE_NODE_ID - Indicates that the EUI64 stored in the address table at the given location is valid and network address discovery is underway. EMBER_TABLE_ENTRY_UNUSED_NODE_ID - Indicates that the entry stored in the address table at the given index is not in use. Rev. 3.2 | 81 UG100: EZSP Reference Guide Messaging Frames Name: setExtendedTimeout ID: 0x7E Description: Tells the stack whether or not the normal interval between retransmissions of a retried unicast message should be increased by EMBER_INDIRECT_TRANSMISSION_TIMEOUT. The interval needs to be increased when sending to a sleepy node so that the message is not retransmitted until the destination has had time to wake up and poll its parent. The stack will automatically extend the timeout: - For our own sleepy children. - When an address response is received from a parent on behalf of its child. - When an indirect transaction expiry route error is received. - When an end device announcement is received from a sleepy node. Command Parameters: EmberEUI64 remoteEui64 The address of the node for which the timeout is to be set. bool extendedTimeout true if the retry interval should be increased by EMBER_INDIRECT_TRANSMISSION_TIMEOUT. false if the normal retry interval should be used. Response Parameters: None Name: getExtendedTimeout ID: 0x7F Description: Indicates whether or not the stack will extend the normal interval between retransmissions of a retried unicast message by EMBER_INDIRECT_TRANSMISSION_TIMEOUT. Command Parameters: EmberEUI64 remoteEui64 The address of the node for which the timeout is to be returned. Response Parameters: bool extendedTimeout true if the retry interval will be increased by EMBER_INDIRECT_TRANSMISSION_TIMEOUT and false if the normal retry interval will be used. silabs.com | Building a more connected world. Rev. 3.2 | 82 UG100: EZSP Reference Guide Messaging Frames Name: replaceAddressTableEntry ID: 0x82 Description: Replaces the EUI64, short ID and extended timeout setting of an address table entry. The previous EUI64, short ID and extended timeout setting are returned. Command Parameters: uint8_t addressTableIndex The index of the address table entry that will be modified. EmberEUI64 newEui64 The EUI64 to be written to the address table entry. EmberNodeId newId One of the following: The short ID corresponding to the new EUI64. EMBER_UNKNOWN_NODE_ID if the new EUI64 is valid but the short ID is unknown and should be discovered by the stack. EMBER_TABLE_ENTRY_UNUSED_NODE_ID if the address table entry is now unused. bool newExtendedTimeout true if the retry interval should be increased by EMBER_INDIRECT_TRANSMISSION_TIMEOUT. false if the normal retry interval should be used. Response Parameters: EmberStatus status EMBER_SUCCESS if the EUI64, short ID and extended timeout setting were successfully modified, and EMBER_ADDRESS_TABLE_ENTRY_IS_ACTIVE otherwise. EmberEUI64 oldEui64 The EUI64 of the address table entry before it was modified. EmberNodeId oldId One of the following: The short ID corresponding to the EUI64 before it was modified. EMBER_UNKNOWN_NODE_ID if the short ID was unknown. EMBER_DISCOVERY_ACTIVE_NODE_ID if discovery of the short ID was underway. EMBER_TABLE_ENTRY_UNUSED_NODE_ID if the address table entry was unused. bool oldExtendedTimeout true if the retry interval was being increased by EMBER_INDIRECT_TRANSMISSION_TIMEOUT. false if the normal retry interval was being used. Name: lookupNodeIdByEui64 ID: 0x60 Description: Returns the node ID that corresponds to the specified EUI64. The node ID is found by searching through all stack tables for the specified EUI64. Command Parameters: EmberEUI64 eui64 The EUI64 of the node to look up. Response Parameters: EmberNodeId nodeId The short ID of the node or EMBER_NULL_NODE_ID if the short ID is not known. silabs.com | Building a more connected world. Rev. 3.2 | 83 UG100: EZSP Reference Guide Messaging Frames Name: lookupEui64ByNodeId ID: 0x61 Description: Returns the EUI64 that corresponds to the specified node ID. The EUI64 is found by searching through all stack tables for the specified node ID. Command Parameters: EmberNodeId nodeId The short ID of the node to look up. Response Parameters: EmberStatus status EMBER_SUCCESS if the EUI64 was found, EMBER_ERR_FATAL if the EUI64 is not known. EmberEUI64 eui64 The EUI64 of the node. Name: getMulticastTableEntry ID: 0x63 Description: Gets an entry from the multicast table. Command Parameters: uint8_t index The index of a multicast table entry. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. EmberMulticastTableEntry value The contents of the multicast entry. Name: setMulticastTableEntry ID: 0x64 Description: Sets an entry in the multicast table. Command Parameters: uint8_t index The index of a multicast table entry EmberMulticastTableEntry value The contents of the multicast entry. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. Name: idConflictHandler ID: 0x7C Description: A callback invoked by the EmberZNet stack when an id conflict is discovered, that is, two different nodes in the network were found to be using the same short id. The stack automatically removes the conflicting short id from its internal tables (address, binding, route, neighbor, and child tables). The application should discontinue any other use of the id. This frame is a response to the callback command. Response Parameters: EmberNodeId id silabs.com | Building a more connected world. The short id for which a conflict was detected Rev. 3.2 | 84 UG100: EZSP Reference Guide Messaging Frames Name: writeNodeData ID: 0xFE Description: Write the current node Id, PAN ID, or Node type to the tokens Command Parameters: bool erase Erase the node type or not Response Parameters: EmberStatus status Name: sendRawMessage An EmberStatus value indicating success or the reason for failure. ID: 0x96 Description: Transmits the given message without modification. The MAC header is assumed to be configured in the message at the time this function is called. Command Parameters: uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The raw message. Response Parameters: EmberStatus status Name: macPassthroughMessageHandler An EmberStatus value indicating success or the reason for failure. ID: 0x97 Description: A callback invoked by the EmberZNet stack when a MAC passthrough message is received. This frame is a response to the callback command. Response Parameters: EmberMacPassthroughType messageType The type of MAC passthrough message received. uint8_t lastHopLqi The link quality from the node that last relayed the message. int8s lastHopRssi The energy level (in units of dBm) observed during reception. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The raw message that was received. silabs.com | Building a more connected world. Rev. 3.2 | 85 UG100: EZSP Reference Guide Messaging Frames Name: macFilterMatchMessageHandler ID: 0x46 Description: A callback invoked by the EmberZNet stack when a raw MAC message that has matched one of the application's configured MAC filters. This frame is a response to the callback command. Response Parameters: uint8_t filterIndexMatch The index of the filter that was matched. EmberMacPassthroughType legacyPassthroughType The type of MAC passthrough message received. uint8_t lastHopLqi The link quality from the node that last relayed the message. int8s lastHopRssi The energy level (in units of dBm) observed during reception. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The raw message that was received. Name: rawTransmitCompleteHandler ID: 0x98 Description: A callback invoked by the EmberZNet stack when the MAC has finished transmitting a raw message. This frame is a response to the callback command. Response Parameters: EmberStatus status silabs.com | Building a more connected world. EMBER_SUCCESS if the transmission was successful, or EMBER_DELIVERY_FAILED if not Rev. 3.2 | 86 UG100: EZSP Reference Guide Security Frames 9 Security Frames Name: setInitialSecurityState ID: 0x68 Description: Sets the security state that will be used by the device when it forms or joins the network. This call should not be used when restoring saved network state via networkInit as this will result in a loss of security data and will cause communication problems when the device re-enters the network. Command Parameters: EmberInitialSecurityState state The security configuration to be set. Response Parameters: EmberStatus success Name: getCurrentSecurityState The success or failure code of the operation. ID: 0x69 Description: Gets the current security state that is being used by a device that is joined in the network. Command Parameters: None Response Parameters: EmberStatus status The success or failure code of the operation. EmberCurrentSecurityState state The security configuration in use by the stack. Name: getKey ID: 0x6a Description: Gets a Security Key based on the passed key type. Command Parameters: EmberKeyType keyType Response Parameters: EmberStatus status The success or failure code of the operation. EmberKeyStruct keyStruct The structure containing the key and its associated data. Name: switchNetworkKeyHandler ID: 0x6e Description: A callback to inform the application that the Network Key has been updated and the node has been switched over to use the new key. The actual key being used is not passed up, but the sequence number is. This frame is a response to the callback command. Response Parameters: uint8_t sequenceNumber silabs.com | Building a more connected world. The sequence number of the new network key. Rev. 3.2 | 87 UG100: EZSP Reference Guide Security Frames Name: getKeyTableEntry ID: 0x71 Description: Retrieves the key table entry at the specified index. Command Parameters: uint8_t index The index of the entry in the table to retrieve. Response Parameters: EmberStatus status EMBER_TABLE_ENTRY_ERASED if the index is an erased key entry. EMBER_INDEX_OUT_OF_RANGE if the passed index is not valid. EMBER_SUCCESS on success. EmberKeyStruct keyStruct The results retrieved by the stack. Name: setKeyTableEntry ID: 0x72 Description: Sets the key table entry at the specified index. Command Parameters: uint8_t index The index of the entry in the table to set. EmberEUI64 address The address of the partner device that shares the key bool linkKey This bool indicates whether the key is a Link or a Master Key EmberKeyData keyData The actual key data associated with the table entry. Response Parameters: EmberStatus status Name: findKeyTableEntry EMBER_KEY_INVALID if the passed key data is using one of the reserved key values. EMBER_INDEX_OUT_OF_RANGE if passed index is not valid. EMBER_SUCCESS on success. ID: 0x75 Description: This function searches through the Key Table and tries to find the entry that matches the passed search criteria. Command Parameters: EmberEUI64 address The address to search for. Alternatively, all zeros may be passed in to search for the first empty entry. bool linkKey This indicates whether to search for an entry that contains a link key or a master key. true means to search for an entry with a Link Key. Response Parameters: uint8_t index silabs.com | Building a more connected world. This indicates the index of the entry that matches the search criteria. A value of 0xFF is returned if not matching entry is found. Rev. 3.2 | 88 UG100: EZSP Reference Guide Security Frames Name: addOrUpdateKeyTableEntry ID: 0x66 Description: This function updates an existing entry in the key table or adds a new one. It first searches the table for an existing entry that matches the passed EUI64 address. If no entry is found, it searches for the first free entry. If successful, it updates the key data and resets the associated incoming frame counter. If it fails to find an existing entry and no free one exists, it returns a failure. Command Parameters: EmberEUI64 address The address of the partner device associated with the Key. bool linkKey An indication of whether this is a Link Key (true) or Master Key (false) EmberKeyData keyData The actual key data associated with the entry. Response Parameters: EmberStatus status The success or failure error code of the operation. Name: sendTrustCenterLinkKey ID: 0x67 Description: This function sends an APS TransportKey command containing the current trust center link key. The node to which the command is sent is specified via the short and long address arguments. Command Parameters: EmberNodeId destinationNodeId The short address of the node to which this command will be sent EmberEUI64 destinationEui64 The long address of the node to which this command will be sent Response Parameters: EmberStatus status Name: eraseKeyTableEntry An EmberStatus value indicating success of failure of the operation ID: 0x76 Description: This function erases the data in the key table entry at the specified index. If the index is invalid, false is returned. Command Parameters: uint8_t index This indicates the index of entry to erase. Response Parameters: EmberStatus status Name: clearKeyTable The success or failure of the operation. ID: 0xB1 Description: This function clears the key table of the current network. Command Parameters: None Response Parameters: EmberStatus status silabs.com | Building a more connected world. The success or failure of the operation. Rev. 3.2 | 89 UG100: EZSP Reference Guide Security Frames Name: requestLinkKey ID: 0x14 Description: A function to request a Link Key from the Trust Center with another device on the Network (which could be the Trust Center). A Link Key with the Trust Center is possible but the requesting device cannot be the Trust Center. Link Keys are optional in ZigBee Standard Security and thus the stack cannot know whether the other device supports them. If EMBER_REQUEST_KEY_TIMEOUT is non-zero on the Trust Center and the partner device is not the Trust Center, both devices must request keys with their partner device within the time period. The Trust Center only supports one outstanding key request at a time and therefore will ignore other requests. If the timeout is zero then the Trust Center will immediately respond and not wait for the second request. The Trust Center will always immediately respond to requests for a Link Key with it. Sleepy devices should poll at a higher rate until a response is received or the request times out. The success or failure of the request is returned via ezspZigbeeKeyEstablishmentHandler(...). Command Parameters: EmberEUI64 partner This is the IEEE address of the partner device that will share the link key. Response Parameters: EmberStatus status Name: zigbeeKeyEstablishmentHandler The success or failure of sending the request. This is not the final result of the attempt. ezspZigbeeKeyEstablishmentHandler(...) will return that. ID: 0x9B Description: This is a callback that indicates the success or failure of an attempt to establish a key with a partner device. This frame is a response to the callback command. Response Parameters: EmberEUI64 partner This is the IEEE address of the partner that the device successfully established a key with. This value is all zeros on a failure. EmberKeyStatus status This is the status indicating what was established or why the key establishment failed. Name: addTransientLinkKey ID: 0xAF Description: This is a function to add a temporary link key for a joining device. The key will get timed out after a defined timeout period if the device does not update its link key with the Trust Center. Command Parameters: EmberEUI64 partner This is the IEEE address of the partner that the device successfully established a key with. This value is all zeros on a failure. EmberKeyData transientKey The transient key data for the joining device. Response Parameters: EmberStatus status silabs.com | Building a more connected world. The success or failure of adding a transient key. Rev. 3.2 | 90 UG100: EZSP Reference Guide Security Frames Name: clearTransientLinkKeys ID: 0x6B Description: Clear all of the transient link keys from RAM. Command Parameters: None Response Parameters: None Name: getTransientLinkKey ID: 0xCE Description: This is a function to get the transient link key structure in the transient key table. The EUI of the passed in key structure is searched and, if a match is found, the rest of the key structure is filled in. Command Parameters: EmberEUI64 eui The IEEE address to look up the transient key for. Response Parameters: EmberStatus status The success or failure of getting the transient key. EmberTransientKeyData transientKeyData The transient key structure that is filled in upon success. silabs.com | Building a more connected world. Rev. 3.2 | 91 UG100: EZSP Reference Guide Trust Center Frames 10 Trust Center Frames Name: trustCenterJoinHandler ID: 0x24 Description: The NCP used the trust center behavior policy to decide whether to allow a new node to join the network. The Host cannot change the current decision, but it can change the policy for future decisions using the setPolicy command. This frame is a response to the callback command. Response Parameters: EmberNodeId newNodeId The Node Id of the node whose status changed EmberEUI64 newNodeEui64 The EUI64 of the node whose status changed. EmberDeviceUpdate status The status of the node: Secure Join/Rejoin, Unsecure Join/Rejoin, Device left. EmberJoinDecision policyDecision An EmberJoinDecision reflecting the decision made. EmberNodeId parentOfNewNodeId The parent of the node whose status has changed. Name: broadcastNextNetworkKey ID: 0x73 Description: This function broadcasts a new encryption key, but does not tell the nodes in the network to start using it. To tell nodes to switch to the new key, use emberSendNetworkKeySwitch(). This is only valid for the Trust Center/Coordinator. It is up to the application to determine how quickly to send the Switch Key after sending the alternate encryption key. Command Parameters: EmberKeyData key An optional pointer to a 16-byte encryption key (EMBER_ENCRYPTION_KEY_SIZE). An all zero key may be passed in, which will cause the stack to randomly generate a new key. Response Parameters: EmberStatus status Name: broadcastNetworkKeySwitch EmberStatus value that indicates the success or failure of the command. ID: 0x74 Description: This function broadcasts a switch key message to tell all nodes to change to the sequence number of the previously sent Alternate Encryption Key. Command Parameters: None Response Parameters: EmberStatus status silabs.com | Building a more connected world. EmberStatus value that indicates the success or failure of the command. Rev. 3.2 | 92 UG100: EZSP Reference Guide Trust Center Frames Name: becomeTrustCenter ID: 0x77 Description: This function causes a coordinator to become the Trust Center when it is operating in a network that is not using one. It will send out an updated Network Key to all devices that will indicate a transition of the network to now use a Trust Center. The Trust Center should also switch all devices to using this new network key with the appropriate API. Command Parameters: EmberKeyData newNetworkKey The key data for the Updated Network Key. Response Parameters: EmberStatus status Name: aesMmoHash ID: 0x6F Description: This routine processes the passed chunk of data and updates the hash context based on it. If the 'finalize' parameter is not set, then the length of the data passed in must be a multiple of 16. If the 'finalize' parameter is set then the length can be any value up 1-16, and the final hash value will be calculated. Command Parameters: EmberAesMmoHashContext context The hash context to update. bool finalize This indicates whether the final hash value should be calculated uint8_t length The length of the data to hash. uint8_t[] data The data to hash. Response Parameters: EmberStatus status The result of the operation EmberAesMmoHashContext returnContext The updated hash context. silabs.com | Building a more connected world. Rev. 3.2 | 93 UG100: EZSP Reference Guide Trust Center Frames Name: removeDevice ID: 0xA8 Description: This command sends an APS remove device using APS encryption to the destination indicating either to remove itself from the network, or one of its children. Command Parameters: EmberNodeId destShort The node ID of the device that will receive the message EmberEUI64 destLong The long address (EUI64) of the device that will receive the message. EmberEUI64 targetLong The long address (EUI64) of the device to be removed. Response Parameters: EmberStatus status Name: unicastNwkKeyUpdate An EmberStatus value indicating success, or the reason for failure ID: 0xA9 Description: This command will send a unicast transport key message with a new NWK key to the specified device. APS encryption using the device's existing link key will be used. Command Parameters: EmberNodeId destShort The node ID of the device that will receive the message EmberEUI64 destLong The long address (EUI64) of the device that will receive the message. EmberKeyData key The NWK key to send to the new device. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success, or the reason for failure Rev. 3.2 | 94 UG100: EZSP Reference Guide Certificate Based Key Exchange (CBKE) Frames 11 Certificate Based Key Exchange (CBKE) Frames Name: generateCbkeKeys ID: 0xA4 Description: This call starts the generation of the ECC Ephemeral Public/Private key pair. When complete it stores the private key. The results are returned via ezspGenerateCbkeKeysHandler(). Command Parameters: None Response Parameters: EmberStatus status Name: generateCbkeKeysHandler ID: 0x9E Description: A callback by the Crypto Engine indicating that a new ephemeral public/private key pair has been generated. The public/private key pair is stored on the NCP, but only the associated public key is returned to the host. The node's associated certificate is also returned. This frame is a response to the callback command. Response Parameters: EmberStatus status The result of the CBKE operation. EmberPublicKeyData ephemeralPublicKey The generated ephemeral public key. Name: calculateSmacs ID: 0x9F Description: Calculates the SMAC verification keys for both the initiator and responder roles of CBKE using the passed parameters and the stored public/private key pair previously generated with ezspGenerateKeysRetrieveCert(). It also stores the unverified link key data in temporary storage on the NCP until the key establishment is complete. Command Parameters: bool amInitiator The role of this device in the Key Establishment protocol. EmberCertificateData partnerCertificate The key establishment partner's implicit certificate. EmberPublicKeyData partnerEphemeralPublicKey The key establishment partner's ephemeral public key Response Parameters: EmberStatus status silabs.com | Building a more connected world. Rev. 3.2 | 95 UG100: EZSP Reference Guide Certificate Based Key Exchange (CBKE) Frames Name: calculateSmacsHandler ID: 0xA0 Description: A callback to indicate that the NCP has finished calculating the Secure Message Authentication Codes (SMAC) for both the initiator and responder. The associated link key is kept in temporary storage until the host tells the NCP to store or discard the key via emberClearTemporaryDataMaybeStoreLinkKey(). This frame is a response to the callback command. Response Parameters: EmberStatus status The Result of the CBKE operation. EmberSmacData initiatorSmac The calculated value of the initiator's SMAC EmberSmacData responderSmac The calculated value of the responder's SMAC Name: generateCbkeKeys283k1 ID: 0xE8 Description: This call starts the generation of the ECC 283k1 curve Ephemeral Public/Private key pair. When complete it stores the private key. The results are returned via ezspGenerateCbkeKeysHandler283k1(). Command Parameters: None Response Parameters: EmberStatus status Name: generateCbkeKeysHandler283k1 Note: The name of this command does not map directly to the source code function. The EZSP command invocation returns an immediate EmberStatus to report, for example, "operation in progress." Subse-quently, an EZSP handler will report the outcome of the operation after it completes. ID: 0xE9 Description: A callback by the Crypto Engine indicating that a new 283k1 ephemeral public/private key pair has been generated. The public/private key pair is stored on the NCP, but only the associate public key is returned to the host. The node’s associated certificate is also returned. This frame is a response to the callback command. Response Parameters: EmberStatus status The result of the CBKE operation. EmberPublicKey283k1Data ephemeralPublicKey The generated ephemeral public key. silabs.com | Building a more connected world. Rev. 3.2 | 96 UG100: EZSP Reference Guide Certificate Based Key Exchange (CBKE) Frames Name: calculateSmacs283k1 ID: 0xEA Description: Calculates the SMAC verification keys for both the initiator and responder roles of CBKE for the 283k1 ECC curve using the passed parameters and the stored public/private key pair previously generated with ezspGenerateKeysRetrieveCert283k1(). It also stores the unverified link key data in temporary storage on the NCP until the key establishment is complete. Command Parameters: bool amInitiator The role of this device in the Key Establishment protocol. EmberCertificate283k1Data partnerCertificate The key establishment partner's implicit certificate. EmberPublicKey283k1Data partnerEphemeralPublicKey The key establishment partner's ephemeral public key Response Parameters: EmberStatus status Name: calculateSmacsHandler283k1 ID: 0xEB Description: A callback to indicate that the NCP has finished calculating the Secure Message Authentication Codes (SMAC) for both the initiator and responder for the CBKE 283k1 Library. The associated link key is kept in temporary storage until the host tells the NCP to store or discard the key via emberClearTemporaryDataMaybeStoreLinkKey(). This frame is a response to the callback command. Response Parameters: EmberStatus status The Result of the CBKE operation. EmberSmacData initiatorSmac The calculated value of the initiator's SMAC EmberSmacData responderSmac The calculated value of the responder's SMAC Name: clearTemporaryDataMaybeStoreLinkKey ID: 0xA1 Description: Clears the temporary data associated with CBKE and the key establishment, most notably the ephemeral public/private key pair. If storeLinKey is true it moves the unverified link key stored in temporary storage into the link key table. Otherwise it discards the key. Command Parameters: bool storeLinkKey A bool indicating whether to store (true) or discard (false) the unverified link key derived when ezspCalculateSmacs() was previously called. Response Parameters: EmberStatus status silabs.com | Building a more connected world. Rev. 3.2 | 97 UG100: EZSP Reference Guide Certificate Based Key Exchange (CBKE) Frames Name: clearTemporaryDataMaybeStoreLinkKey283k1 ID: 0xEE Description: Clears the temporary data associated with CBKE and the key establishment, most notably the ephemeral public/private key pair. If storeLinKey is true it moves the unverified link key stored in temporary storage into the link key table. Otherwise it discards the key. Command Parameters: bool storeLinkKey A bool indicating whether to store (true) or discard (false) the unverified link key derived when ezspCalculateSmacs() was previously called. Response Parameters: EmberStatus status Name: getCertificate ID: 0xA5 Description: Retrieves the certificate installed on the NCP. Command Parameters: None Response Parameters: EmberStatus status EmberCertificateData localCert Name: getCertificate283k1 The locally installed certificate. ID: 0xEC Description: Retrieves the 283k1 certificate installed on the NCP. Command Parameters: None Response Parameters: EmberStatus status EmberCertificate283k1Data localCert silabs.com | Building a more connected world. The locally installed certificate. Rev. 3.2 | 98 UG100: EZSP Reference Guide Certificate Based Key Exchange (CBKE) Frames Name: dsaSign ID: 0xA6 Description: LEGACY FUNCTION: This functionality has been replaced by a single bit in the EmberApsFrame, EMBER_APS_OPTION_DSA_SIGN. Devices wishing to send signed messages should use that as it requires fewer function calls and message buffering. The dsaSignHandler response is still called when EMBER_APS_OPTION_DSA_SIGN is used. However, this function is still supported. This function begins the process of signing the passed message contained within the messageContents array. If no other ECC operation is going on, it will immediately return with EMBER_OPERATION_IN_PROGRESS to indicate the start of ECC operation. It will delay a period of time to let APS retries take place, but then it will shut down the radio and consume the CPU processing until the signing is complete. This may take up to 1 second. The signed message will be returned in the dsaSignHandler response. Note that the last byte of the messageContents passed to this function has special significance. As the typical use case for DSA signing is to sign the ZCL payload of a DRLC Report Event Status message in SE 1.0, there is often both a signed portion (ZCL payload) and an unsigned portion (ZCL header). The last byte in the content of messageToSign is therefore used as a special indicator to signify how many bytes of leading data in the array should be excluded from consideration during the signing process. If the signature needs to cover the entire array (all bytes except last one), the caller should ensure that the last byte of messageContents is 0x00. When the signature operation is complete, this final byte will be replaced by the signature type indicator (0x01 for ECDSA signatures), and the actual signature will be appended to the original contents after this byte. Command Parameters: uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The message contents for which to create a signature. Per above notes, this may include a leading portion of data not included in the signature, in which case the last byte of this array should be set to the index of the first byte to be considered for signing. Otherwise, the last byte of messageContents should be 0x00 to indicate that a signature should occur across the entire contents. Response Parameters: EmberStatus status Name: dsaSignHandler EMBER_OPERATION_IN_PROGRESS if the stack has queued up the operation for execution. EMBER_INVALID_CALL if the operation can't be performed in this context, possibly because another ECC operation is pending. ID: 0xA7 Description: The handler that returns the results of the signing operation. On success, the signature will be appended to the original message including the signature type indicator that replaced the startIndex field for the signing) and both are returned via this callback. This frame is a response to the callback command. Response Parameters: EmberStatus status The result of the DSA signing operation. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The message and attached which includes the original message and the appended signature. silabs.com | Building a more connected world. Rev. 3.2 | 99 UG100: EZSP Reference Guide Certificate Based Key Exchange (CBKE) Frames Name: dsaVerify ID: 0xA3 Description: Verify that signature of the associated message digest was signed by the private key of the associated certificate. Command Parameters: EmberMessageDigest digest The AES-MMO message digest of the signed data. If dsaSign command was used to generate the signature for this data, the final byte (replaced by signature type of 0x01) in the messageContents array passed to dsaSign is included in the hash context used for the digest calculation. EmberCertificateData signerCertificate The certificate of the signer. Note that the signer's certificate and the verifier's certificate must both be issued by the same Certificate Authority, so they should share the same CA Public Key. EmberSignatureData receivedSig The signature of the signed data. Response Parameters: EmberStatus status Name: dsaVerifyHandler ID: 0x78 Description: This callback is executed by the stack when the DSA verification has completed and has a result. If the result is EMBER_SUCCESS, the signature is valid. If the result is EMBER_SIGNATURE_VERIFY_FAILURE then the signature is invalid. If the result is anything else then the signature verify operation failed and the validity is unknown. This frame is a response to the callback command. Response Parameters: EmberStatus status silabs.com | Building a more connected world. The result of the DSA verification operation. Rev. 3.2 | 100 UG100: EZSP Reference Guide Certificate Based Key Exchange (CBKE) Frames Name: dsaVerify283k1 ID: 0xB0 Description: Verify that signature of the associated message digest was signed by the private key of the associated certificate. Command Parameters: EmberMessageDigest digest The AES-MMO message digest of the signed data. If dsaSign command was used to generate the signature for this data, the final byte (replaced by signature type of 0x01) in the messageContents array passed to dsaSign is included in the hash context used for the digest calculation. EmberCertificate283k1Data signerCertificate The certificate of the signer. Note that the signer's certificate and the verifier's certificate must both be issued by the same Certificate Authority, so they should share the same CA Public Key. EmberSignature283k1Data receivedSig The signature of the signed data. Response Parameters: EmberStatus status Name: setPreinstalledCbkeData ID: 0xA2 Description: Sets the device's CA public key, local certificate, and static private key on the NCP associated with this node. Command Parameters: EmberPublicKeyData caPublic The Certificate Authority's public key. EmberCertificateData myCert The node's new certificate signed by the CA. EmberPrivateKeyData myKey The node's new static private key. Response Parameters: EmberStatus status Name: setPreinstalledCbkeData283k1 ID: 0xED Description: Sets the device's 283k1 curve CA public key, local certificate, and static private key on the NCP associated with this node. Command Parameters: EmberPublicKey283k1Data caPublic The Certificate Authority's public key. EmberCertificate283k1Data myCert The node's new certificate signed by the CA. EmberPrivateKey283k1Data myKey The node's new static private key. Response Parameters: EmberStatus status silabs.com | Building a more connected world. Rev. 3.2 | 101 UG100: EZSP Reference Guide Mfglib Frames 12 Mfglib Frames Name: mfglibStart ID: 0x83 Description: Activate use of mfglib test routines and enables the radio receiver to report packets it receives to the mfgLibRxHandler() callback. These packets will not be passed up with a CRC failure. All other mfglib functions will return an error until the mfglibStart() has been called Command Parameters: bool rxCallback true to generate a mfglibRxHandler callback when a packet is received. Response Parameters: EmberStatus status Name: mfglibEnd An EmberStatus value indicating success or the reason for failure. ID: 0x84 Description: Deactivate use of mfglib test routines; restores the hardware to the state it was in prior to mfglibStart() and stops receiving packets started by mfglibStart() at the same time. Command Parameters: None Response Parameters: EmberStatus status Name: mfglibStartTone An EmberStatus value indicating success or the reason for failure. ID: 0x85 Description: Starts transmitting an unmodulated tone on the currently set channel and power level. Upon successful return, the tone will be transmitting. To stop transmitting tone, application must call mfglibStopTone(), allowing it the flexibility to determine its own criteria for tone duration (time, event, etc.) Command Parameters: None Response Parameters: EmberStatus status Name: mfglibStopTone An EmberStatus value indicating success or the reason for failure. ID: 0x86 Description: Stops transmitting tone started by mfglibStartTone(). Command Parameters: None Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 102 UG100: EZSP Reference Guide Mfglib Frames Name: mfglibStartStream ID: 0x87 Description: Starts transmitting a random stream of characters. This is so that the radio modulation can be measured. Command Parameters: None Response Parameters: EmberStatus status Name: mfglibStopStream An EmberStatus value indicating success or the reason for failure. ID: 0x88 Description: Stops transmitting a random stream of characters started by mfglibStartStream(). Command Parameters: None Response Parameters: EmberStatus status Name: mfglibSendPacket An EmberStatus value indicating success or the reason for failure. ID: 0x89 Description: Sends a single packet consisting of the following bytes: packetLength, packetContents[0], ... , packetContents[packetLength - 3], CRC[0], CRC[1]. The total number of bytes sent is packetLength + 1. The radio replaces the last two bytes of packetContents[] with the 16-bit CRC for the packet. Command Parameters: uint8_t packetLength The length of the packetContents parameter in bytes. Must be greater than 3 and less than 123. uint8_t[] packetContents The packet to send. The last two bytes will be replaced with the 16-bit CRC. Response Parameters: EmberStatus status Name: mfglibSetChannel An EmberStatus value indicating success or the reason for failure. ID: 0x8a Description: Sets the radio channel. Calibration occurs if this is the first time the channel has been used. Command Parameters: uint8_t channel The channel to switch to. Valid values are 11 to 26. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 103 UG100: EZSP Reference Guide Mfglib Frames Name: mfglibGetChannel ID: 0x8b Description: Returns the current radio channel, as previously set via mfglibSetChannel(). Command Parameters: None Response Parameters: uint8_t channel Name: mfglibSetPower The current channel. ID: 0x8c Description: First select the transmit power mode, and then include a method for selecting the radio transmit power. The valid power settings depend upon the specific radio in use. Ember radios have discrete power settings, and then requested power is rounded to a valid power setting; the actual power output is available to the caller via mfglibGetPower(). Command Parameters: uint16_t txPowerMode Power mode. Refer to txPowerModes in stack/include/ember-types.h for possible values. int8s power Power in units of dBm. Refer to radio data sheet for valid range. Response Parameters: EmberStatus status Name: mfglibGetPower An EmberStatus value indicating success or the reason for failure. ID: 0x8d Description: Returns the current radio power setting, as previously set via mfglibSetPower(). Command Parameters: None Response Parameters: int8s power Name: mfglibRxHandler Power in units of dBm. Refer to radio data sheet for valid range. ID: 0x8e Description: A callback indicating a packet with a valid CRC has been received. This frame is a response to the callback command. Response Parameters: uint8_t linkQuality The link quality observed during the reception int8s rssi The energy level (in units of dBm) observed during the reception. uint8_t packetLength The length of the packetContents parameter in bytes. Will be greater than 3 and less than 123. uint8_t[] packetContents The received packet. The last two bytes are the 16-bit CRC. silabs.com | Building a more connected world. Rev. 3.2 | 104 UG100: EZSP Reference Guide Bootloader Frames 13 Bootloader Frames Name: launchStandaloneBootloader ID: 0x8f Description: Quits the current application and launches the standalone bootloader (if installed) The function returns an error if the standalone bootloader is not present Command Parameters: uint8_t mode Controls the mode in which the standalone bootloader will run. See the app. note for full details. Options are: STANDALONE_BOOTLOADER_NORMAL_MODE: Will listen for an over-the-air image transfer on the current channel with current power settings. STANDALONE_BOOTLOADER_RECOVERY_MODE: Will listen for an over-the-air image transfer on the default channel with default power settings. Both modes also allow an image transfer to begin with XMODEM over the serial protocol's Bootloader Frame. Response Parameters: EmberStatus status Name: sendBootloadMessage An EmberStatus value indicating success or the reason for failure. ID: 0x90 Description: Transmits the given bootload message to a neighboring node using a specific 802.15.4 header that allows the EmberZNet stack as well as the bootloader to recognize the message, but will not interfere with other ZigBee stacks. Command Parameters: bool broadcast If true, the destination address and pan id are both set to the broadcast address. EmberEUI64 destEui64 The EUI64 of the target node. Ignored if the broadcast field is set to true. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The multicast message. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 105 UG100: EZSP Reference Guide Bootloader Frames Name: getStandaloneBootloaderVersionPlatMicroPhy ID: 0x91 Description: Detects if the standalone bootloader is installed, and if so returns the installed version. If not return 0xffff. A returned version of 0x1234 would indicate version 1.2 build 34. Also return the node's version of PLAT, MICRO and PHY. Command Parameters: None Response Parameters: uint16_t bootloader_version BOOTLOADER_INVALID_VERSION if the standalone bootloader is not present, or the version of the installed standalone bootloader. uint8_t nodePlat The value of PLAT on the node uint8_t nodeMicro The value of MICRO on the node uint8_t nodePhy The value of PHY on the node Name: incomingBootloadMessageHandler ID: 0x92 Description: A callback invoked by the EmberZNet stack when a bootload message is received. This frame is a response to the callback command. Response Parameters: EmberEUI64 longId The EUI64 of the sending node. uint8_t lastHopLqi The link quality from the node that last relayed the message. int8s lastHopRssi The energy level (in units of dBm) observed during the reception. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The bootload message that was sent. Name: bootloadTransmitCompleteHandler ID: 0x93 Description: A callback invoked by the EmberZNet stack when the MAC has finished transmitting a bootload message. This frame is a response to the callback command. Response Parameters: EmberStatus status An EmberStatus value of EMBER_SUCCESS if an ACK was received from the destination or EMBER_DELIVERY_FAILED if no ACK was received. uint8_t messageLength The length of the messageContents parameter in bytes. uint8_t[] messageContents The message that was sent. silabs.com | Building a more connected world. Rev. 3.2 | 106 UG100: EZSP Reference Guide Bootloader Frames Name: aesEncrypt ID: 0x94 Description: Perform AES encryption on plaintext using key. Command Parameters: uint8_t[16] plaintext 16 bytes of plaintext. uint8_t[16] key The 16 byte encryption key to use. Response Parameters: uint8_t[16] ciphertext Name: overrideCurrentChannel 16 bytes of ciphertext. ID: 0x95 Description: A bootloader method for selecting the radio channel. This routine only works for sending and receiving bootload packets. Does not correctly do ZigBee stack changes. Command Parameters: uint8_t channel The channel to switch to. Valid values are 11 to 26. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 107 UG100: EZSP Reference Guide ZLL Frames 14 ZLL Frames Name: zllNetworkOps ID: 0xB2 Description: A consolidation of ZLL network operations with similar signatures; specifically, forming and joining networks or touchlinking. Command Parameters: EmberZllNetwork networkInfo Information about the network. EzspZllNetworkOperation op Operation indicator. int8s radioTxPower Radio transmission power. Response Parameters: EmberStatus status Name: zllSetInitialSecurityState An EmberStatus value indicating success or the reason for failure. ID: 0xB3 Description: This call will cause the device to setup the security information used in its network. It must be called prior to forming, starting, or joining a network. Command Parameters: EmberKeyData networkKey ZLL Network key. EmberZllInitialSecurityState securityState Initial security state of the network. Response Parameters: EmberStatus status Name: zllStartScan An EmberStatus value indicating success or the reason for failure. ID: 0xB4 Description: This call will initiate a ZLL network scan on all the specified channels. Command Parameters: uint32_t channelMask The range of channels to scan. int8s radioPowerForScan The radio output power used for the scan requests. EmberNodeType nodeType The node type of the local device. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 108 UG100: EZSP Reference Guide ZLL Frames Name: zllSetRxOnWhenIdle ID: 0xB5 Description: This call will change the mode of the radio so that the receiver is on for a specified amount of time when the device is idle. Command Parameters: uint32_t durationMs The duration in milliseconds to leave the radio on. Response Parameters: EmberStatus status Name: zllNetworkFoundHandler An EmberStatus value indicating success or the reason for failure. ID: 0xB6 Description: This call is fired when a ZLL network scan finds a ZLL network. This frame is a response to the callback command. Response Parameters: EmberZllNetwork networkInfo Information about the network. bool isDeviceInfoNull Used to interpret deviceInfo field. EmberZllDeviceInfoRecord deviceInfo Device specific information. uint8_t lastHopLqi The link quality from the node that last relayed the message. int8s lastHopRssi The energy level (in units of dBm) observed during reception. Name: zllScanCompleteHandler ID: 0xB7 Description: This call is fired when a ZLL network scan is complete. This frame is a response to the callback command. Response Parameters: EmberStatus status Name: zllAddressAssignmentHandler Status of the operation. ID: 0xB8 Description: This call is fired when network and group addresses are assigned to a remote mode in a network start or network join request. This frame is a response to the callback command. Response Parameters: EmberZllAddressAssignment addressInfo Address assignment information. uint8_t lastHopLqi The link quality from the node that last relayed the message. int8s lastHopRssi The energy level (in units of dBm) observed during reception. silabs.com | Building a more connected world. Rev. 3.2 | 109 UG100: EZSP Reference Guide ZLL Frames Name: setLogicalAndRadioChannel ID: 0xB9 Description: This call sets the radio channel in the stack and propagates the information to the hardware. Command Parameters: uint8_t radioChannel The radio channel to be set. Response Parameters: EmberStatus status Name: getLogicalChannel An EmberStatus value indicating success or the reason for failure. ID: 0xBA Description: Get the logical channel from the ZLL stack. Command Parameters: None Response Parameters: uint8_t logicalChannel Name: zllTouchLinkTargetHandler The logical channel. ID: 0xBB Description: This call is fired when the device is a target of a touch link. This frame is a response to the callback command. Response Parameters: EmberZllNetwork networkInfo Name: zllGetTokens Information about the network. ID: 0xBC Description: Get the ZLL tokens. Command Parameters: None Response Parameters: EmberTokTypeStackZllData data Data token return value. EmberTokTypeStackZllSecurity security Security token return value. silabs.com | Building a more connected world. Rev. 3.2 | 110 UG100: EZSP Reference Guide ZLL Frames Name: zllSetDataToken ID: 0xBD Description: Set the ZLL data token. Command Parameters: EmberTokTypeStackZllData data Data token to be set. Response Parameters: None Name: zllSetNonZllNetwork ID: 0xBF Description: Set the ZLL data token bitmask to reflect the ZLL network state. Command Parameters: None Response Parameters: None Name: isZllNetwork ID: 0xBE Description: Is this a ZLL network? Command Parameters: None Response Parameters: bool isZllNetwork silabs.com | Building a more connected world. ZLL network? Rev. 3.2 | 111 UG100: EZSP Reference Guide Green Power Frames 15 Green Power Frames Name: gpProxyTableProcessGpPairing ID: 0xC9 Description: Update the GP Proxy table based on a GP pairing. Command Parameters: uint32_t options The options field of the GP Pairing command. EmberGpAddress addr The target GPD. uint8_t commMode The communication mode of the GP Sink. uint16_t sinkNetworkAddress The network address of the GP Sink. uint16_t sinkGroupId The group ID of the GP Sink. uint16_t assignedAlias The alias assigned to the GPD. uint8_t[8] sinkIeeeAddress The IEEE address of the GP Sink. EmberKeyData gpdKey The key to use for the target GPD. Response Parameters: bool gpPairingAdded Name: dGpSend Whether a GP Pairing has been created or not. ID: 0xC6 Description: Adds/removes an entry from the GP Tx Queue. Command Parameters: bool action The action to perform on the GP TX queue (true to add, false to remove). bool useCca Whether to use ClearChannelAssessment when transmitting the GPDF. EmberGpAddress addr The Address of the destination GPD. uint8_t gpdCommandId The GPD command ID to send. uint8_t gpdAsduLength The length of the GP command payload. uint8_t[] gpdAsdu The GP command payload. uint8_t gpepHandle The handle to refer to the GPDF. uint16_t gpTxQueueEntryLifetimeMs How long to keep the GPDF in the TX Queue. Response Parameters: EmberStatus status silabs.com | Building a more connected world. An EmberStatus value indicating success or the reason for failure. Rev. 3.2 | 112 UG100: EZSP Reference Guide Green Power Frames Name: dGpSentHandler ID: 0xC7 Description: A callback to the GP endpoint to indicate the result of the GPDF transmission. This frame is a response to the callback command. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. uint8_t gpepHandle The handle of the GPDF. Name: gpepIncomingMessageHandler ID: 0xC5 Description: A callback invoked by the ZigBee GP stack when a GPDF is received. This frame is a response to the callback command. Response Parameters: EmberStatus status The status of the GPDF receive. uint8_t gpdLink The gpdLink value of the received GPDF. uint8_t sequenceNumber The GPDF sequence number. EmberGpAddress addr The address of the source GPD. EmberGpSecurityLevel gpdfSecurityLevel The security level of the received GPDF. EmberGpKeyType gpdfSecurityKeyType The securityKeyType used to decrypt/authenticate the incoming GPDF. bool autoCommissioning Whether the incoming GPDF had the auto-commissioning bit set. bool rxAfterTx Whether the incoming GPDF had the rxAfterTx bit set. uint32_t gpdSecurityFrameCounter length The security frame counter of the incoming GDPF. uint8_t gpdCommandId The gpdCommandId of the incoming GPDF. uint32_t mic The received MIC of the GPDF. uint8_t proxyTableIndex The proxy table index of the corresponding proxy table entry to the incoming GPDF. uint8_t gpdCommandPayloadLength The of the GPD command payload. uint8_t[] gpdCommandPayload The GPD command payload. silabs.com | Building a more connected world. Rev. 3.2 | 113 UG100: EZSP Reference Guide Green Power Frames Name: gpProxyTableGetEntry ID: 0xC8 Description: Retrieves the proxy table entry stored at the passed index. Command Parameters: uint8_t proxyIndex The index of the requested proxy table entry. Response Parameters: EmberStatus status An EmberStatus value indicating success or the reason for failure. EmberGpProxyTableEntry entry An EmberGpProxyTableEntry struct containing a copy of the requested proxy entry. Name: gpProxyTableLookup ID: 0xC0 Description: finds the index of the passed address in the gp table Command Parameters: EmberGpAddress addr The address to search for Response Parameters: uint8_t index silabs.com | Building a more connected world. The index, or 0xFF for not found Rev. 3.2 | 114 UG100: EZSP Reference Guide Secure EZSP Frames 16 Secure EZSP Frames Name: setSecurityKey ID: 0xCA Description: Set the Security Key of the Secure EZSP Protocol. Command Parameters: EmberKeyData key The key to use for the Secure EZSP Protocol. SecureEzspSecurityType securityType The security type to be used for the Secure EZSP Protocol. Response Parameters: EzspStatus status An EzspStatus value indicating success or the reason for failure. Name: setSecurityParameters ID: 0xCB Description: Set the Host-side Security Parameters of the Secure EZSP Protocol. Command Parameters: SecureEzspSecurityLevel securityLevel The security level to be used for the Secure EZSP communication. SecureEzspRandomNumber hostRandomNumber The Host-side random number to be used for Session ID generation. Response Parameters: EzspStatus status An EzspStatus value indicating success or the reason for failure. SecureEzspRandomNumber returnNcpRandomNumber The NCP-side random number to be used for Session ID generation. Name: resetToFactoryDefaults ID: 0xCC Description: Resets security key and security parameters of the Secure EZSP protocol. Node leaves the network before doing so for security reasons. Command Parameters: None Response Parameters: EzspStatus status An EzspStatus value indicating success or the reason for failure. Name: getSecurityKeyStatus ID: 0xCD Description: Get the security key status on the NCP: whether the security key is set or not and what the security type is. Command Parameters: None Response Parameters: EzspStatus status An EzspStatus value indicating whether the security key is set or not. SecureEzspSecurityType returnSecurityType The security type set at NCP for the Secure EZSP Protocol. silabs.com | Building a more connected world. Rev. 3.2 | 115 UG100: EZSP Reference Guide Alphabetical List of Frames 17 Alphabetical List of Frames Name ID addEndpoint 0x02 addOrUpdateKeyTableEntry 0x66 addTransientLinkKey 0xAF addressTableEntryIsActive 0x5B aesEncrypt 0x94 aesMmoHash 0x6F becomeTrustCenter 0x77 bindingIsActive 0x2E bootloadTransmitCompleteHandler 0x93 broadcastNetworkKeySwitch 0x74 broadcastNextNetworkKey 0x73 calculateSmacs 0x9F calculateSmacs283k1 0xEA calculateSmacsHandler 0xA0 calculateSmacsHandler283k1 0xEB callback 0x06 changeSourceRouteHandler 0xC4 childJoinHandler 0x23 clearBindingTable 0x2A clearKeyTable 0xB1 clearTemporaryDataMaybeStoreLinkKey 0xA1 clearTemporaryDataMaybeStoreLinkKey283k1 0xEE clearTransientLinkKeys 0x6B counterRolloverHandler 0xF2 customFrame 0x47 customFrameHandler 0x54 dGpSend 0xC6 dGpSentHandler 0xC7 debugWrite 0x12 delayTest 0x9D deleteBinding 0x2D dsaSign 0xA6 dsaSignHandler 0xA7 dsaVerify 0xA3 dsaVerify283k1 0xB0 dsaVerifyHandler 0x78 dutyCycleHandler 0x4D echo 0x81 silabs.com | Building a more connected world. Rev. 3.2 | 116 UG100: EZSP Reference Guide Alphabetical List of Frames Name ID energyScanRequest 0x9C energyScanResultHandler 0x48 eraseKeyTableEntry 0x76 findAndRejoinNetwork 0x21 findKeyTableEntry 0x75 formNetwork 0x1E generateCbkeKeys 0xA4 generateCbkeKeys283k1 0xE8 generateCbkeKeysHandler 0x9E generateCbkeKeysHandler283k1 0xE9 getAddressTableRemoteEui64 0x5E getAddressTableRemoteNodeId 0x5F getBinding 0x2C getBindingRemoteNodeId 0x2F getCertificate 0xA5 getCertificate283k1 0xEC setConcentrator 0x4A getConfigurationValue 0x52 getCtune 0xF6 getCurrentDutyCycle 0x4C getCurrentSecurityState 0x69 getEui64 0x26 getDutyCycleLimits 0x4B getDutyCycleState 0x35 getExtendedTimeout 0x7F getExtendedValue 0x03 getKey 0x6A getKeyTableEntry 0x71 getLibraryStatus 0x01 getLogicalChannel 0xBA getMfgToken 0x0B getMulticastTableEntry 0x63 getNeighbor 0x79 getNetworkParameters 0x28 getNodeId 0x27 getParentChildParameters 0x29 getPhyInterfaceCount 0xFC getPolicy 0x56 getRadioParameters 0xFD silabs.com | Building a more connected world. Rev. 3.2 | 117 UG100: EZSP Reference Guide Alphabetical List of Frames Name ID getRandomNumber 0x49 getRouteTableEntry 0x7B getSecurityKeyStatus 0xCD getSourceRouteTableEntry 0xC1 getSourceRouteTableFilledSize 0xC2 getSourceRouteTableTotalSize 0xC3 getStandaloneBootloaderVersionPlatMicroPhy 0x91 getTimer 0x4E getToken 0x0A getTransientLinkKey 0xCE getValue 0xAA getXncpInfo 0x13 gpProxyTableGetEntry 0xC8 gpProxyTableLookup 0xC0 gpProxyTableProcessGpPairing 0xC9 gpepIncomingMessageHandler 0xC5 idConflictHandler 0x7C incomingBootloadMessageHandler 0x92 incomingManyToOneRouteRequestHandler 0x7D incomingMessageHandler 0x45 incomingRouteErrorHandler 0x80 incomingRouteRecordHandler 0x59 incomingSenderEui64Handler 0x62 invalidCommand 0x58 isZllNetwork 0xBE joinNetwork 0x1F launchStandaloneBootloader 0x8F leaveNetwork 0x20 lookupEui64ByNodeId 0x61 lookupNodeIdByEui64 0x60 macFilterMatchMessageHandler 0x46 macPassthroughMessageHandler 0x97 maximumPayloadLength 0x33 messageSentHandler 0x3F mfglibEnd 0x84 mfglibGetChannel 0x8B mfglibGetPower 0x8D mfglibRxHandler 0x8E mfglibSendPacket 0x89 silabs.com | Building a more connected world. Rev. 3.2 | 118 UG100: EZSP Reference Guide Alphabetical List of Frames Name ID mfglibSetChannel 0x8A mfglibSetPower 0x8C mfglibStart 0x83 mfglibStartStream 0x87 mfglibStartTone 0x85 mfglibStopStream 0x88 mfglibStopTone 0x86 multiPhySetRadioChannel 0xFB multiPhySetRadioPower 0xFA multiPhyStart 0xF8 multiPhyStop 0xF9 neighborCount 0x7A networkFoundHandler 0x1B networkInit 0x17 networkState 0x18 noCallbacks 0x07 nop 0x05 overrideCurrentChannel 0x95 permitJoining 0x22 pollCompleteHandler 0x43 pollForData 0x42 pollHandler 0x44 proxyBroadcaset 0x37 rawTransmitCompleteHandler 0x98 readAndClearCounters 0x65 readCounters 0xF1 remoteDeleteBindingHandler 0x32 remoteSetBindingHandler 0x31 removeDevice 0xA8 replaceAddressTableEntry 0x82 requestLinkKey 0x14 resetToFactoryDefaults 0xCC savePreinstalledCbkeData283k1 0xED scanCompleteHandler 0x1C sendBootloadMessage 0x90 sendBroadcast 0x36 sendLinkPowerDeltaRequest 0xF7 sendManyToOneRouteRequest 0x41 silabs.com | Building a more connected world. Rev. 3.2 | 119 UG100: EZSP Reference Guide Alphabetical List of Frames Name ID sendMulticast 0x38 sendMulticastWithAlias 0x3A sendRawMessage 0x96 sendReply 0x39 sendTrustCenterLinkKey 0x67 sendUnicast 0x34 setAddressTableRemoteEui64 0x5C setAddressTableRemoteNodeId 0x5D setBinding 0x2B setBindingRemoteNodeId 0x30 setConcentrator 0x10 setConfigurationValue 0x53 setCtune 0xF5 setDutyCycleLimitsInStack 0x40 setExtendedTimeout 0x7E setGpioCurrentConfiguration 0xAC setGpioPowerUpDownConfiguration 0xAD setGpioRadioPowerMask 0xAE setInitialSecurityState 0x68 setKeyTableEntry 0x72 setLogicalAndRadioChannel 0xB9 setManufacturerCode 0x15 setMulticastTableEntry 0x64 setPolicy 0x55 setPowerDescriptor 0x16 setPreinstalledCbkeData 0xA2 setPreinstalledCbkeData283k1 0xED setRadioChannel 0x9A setRadioPower 0x99 setSecurityKey 0xCA setSecurityParameters 0xCB setSourceRoute 0x5A setTimer 0x0E setToken 0x09 setValue 0xAB stackStatusHandler 0x19 stackTokenChangeHandler 0x0D startScan 0x1A stopScan 0x1D silabs.com | Building a more connected world. Rev. 3.2 | 120 UG100: EZSP Reference Guide Alphabetical List of Frames Name ID switchNetworkKeyHandler 0x6E timerHandler 0x0F trustCenterJoinHandler 0x24 unicastNwkKeyUpdate 0xA9 version 0x00 writeNodeData 0xFE zigbeeKeyEstablishmentHandler 0x9B zllAddressAssignmentHandler 0xB8 zllGetTokens 0xBC zllNetworkFoundHandler 0xB6 zllNetworkOps 0xB2 zllScanCompleteHandler 0xB7 zllSetDataToken 0xBD zllSetInitialSecurityState 0xB3 zllSetNonZllNetwork 0xBF zllSetRxOnWhenIdle 0xB5 zllStartScan 0xB4 zllTouchLinkTargetHandler 0xBB silabs.com | Building a more connected world. Rev. 3.2 | 121 UG100: EZSP Reference Guide Numeric List of Frames 18 Numeric List of Frames ID Name 0x00 version 0x01 getLibraryStatus 0x02 addEndpoint 0x03 getExtendedValue 0x04 -- unassigned -- 0x05 nop 0x06 callback 0x07 noCallbacks 0x08 -- unassigned -- 0x09 setToken 0x0A getToken 0x0B getMfgToken 0x0C setMfgToken 0x0D stackTokenChangedHandler 0x0E setTimer 0x0F timerHandler 0x10 setConcentrator 0x11 -- unassigned -- 0x12 debugWrite 0x13 getXncpInfo 0x14 requestLinkKey 0x15 setManufacturerCode 0x16 setPowerDescriptor 0x17 networkInit 0x18 networkState 0x19 stackStatusHandler 0x1A startScan 0x1B networkFoundHandler 0x1C scanCompleteHandler 0x1D stopScan 0x1E formNetwork 0x1F joinNetwork 0x20 leaveNetwork 0x21 findAndRejoinNetwork 0x22 permitJoining 0x23 childJoinHandler 0x24 trustCenterJoinHandler 0x25 -- unassigned -- silabs.com | Building a more connected world. Rev. 3.2 | 122 UG100: EZSP Reference Guide Numeric List of Frames ID Name 0x26 getEui64 0x27 getNodeId 0x28 getNetworkParameters 0x29 getParentChildParameters 0x2A clearBindingTable 0x2B setBinding 0x2C getBinding 0x2D deleteBinding 0x2E bindingIsActive 0x2F getBindingRemoteNodeId 0x30 setBindingRemoteNodeId 0x31 remoteSetBindingHandler 0x32 remoteDeleteBindingHandler 0x33 maximumPayloadLength 0x34 sendUnicast 0x35 getDutyCycleState 0x36 sendBroadcast 0x37 proxyBroadcast 0x38 sendMulticast 0x39 sendReply 0x3A sendMulticastWithAlias 0x3B -- unassigned -- 0x3C -- unassigned -- 0x3D -- unassigned -- 0x3E -- unassigned -- 0x3F messageSentHandler 0x40 setDutyCycleLimitsInStack 0x41 sendManyToOneRouteRequest 0x42 pollForData 0x43 pollCompleteHandler 0x44 pollHandler 0x45 incomingMessageHandler 0x46 macFilterMatchMessageHandler 0x47 customFrame 0x48 energyScanResultHandler 0x49 getRandomNumber 0x4A getChildData 0x4B getDutyCycleLimits 0x4C getCurrentDutyCycle silabs.com | Building a more connected world. Rev. 3.2 | 123 UG100: EZSP Reference Guide Numeric List of Frames ID Name 0x4D dutyCycleHandler 0x4E getTimer 0x4F -- unassigned -- 0x50 -- unassigned -- 0x51 -- unassigned -- 0x52 getConfigurationValue 0x53 setConfigurationValue 0x54 customFrameHandler 0x55 setPolicy 0x56 getPolicy 0x57 -- unassigned -- 0x58 invalidCommand 0x59 incomingRouteRecordHandler 0x5A setSourceRoute 0x5B addressTableEntryIsActive 0x5C setAddressTableRemoteEui64 0x5D setAddressTableRemoteNodeId 0x5E getAddressTableRemoteEui64 0x5F getAddressTableRemoteNodeId 0x60 lookupNodeIdByEui64 0x61 lookupEui64ByNodeId 0x62 incomingSenderEui64Handler 0x63 getMulticastTableEntry 0x64 setMulticastTableEntry 0x65 readAndClearCounters 0x66 addOrUpdateKeyTableEntry 0x67 sendTrustCenterLinkKey 0x68 setInitialSecurityState 0x69 getCurrentSecurityState 0x6A getKey 0x6B clearTransientLinkKeys 0x6C -- unassigned -- 0x6D -- unassigned -- 0x6E switchNetworkKeyHandler 0x6F aesMmoHash 0x70 -- unassigned -- 0x71 getKeyTableEntry 0x72 setKeyTableEntry 0x73 broadcastNextNetworkKey silabs.com | Building a more connected world. Rev. 3.2 | 124 UG100: EZSP Reference Guide Numeric List of Frames ID Name 0x74 broadcastNetworkKeySwitch 0x75 findKeyTableEntry 0x76 eraseKeyTableEntry 0x77 becomeTrustCenter 0x78 dsaVerifyHandler 0x79 getNeighbor 0x7A neighborCount 0x7B getRouteTableEntry 0x7C idConflictHandler 0x7D incomingManyToOneRouteRequestHandler 0x7E setExtendedTimeout 0x7F getExtendedTimeout 0x80 incomingRouteErrorHandler 0x81 echo 0x82 replaceAddressTableEntry 0x83 mfglibStart 0x84 mfglibEnd 0x85 mfglibStartTone 0x86 mfglibStopTone 0x87 mfglibStartStream 0x88 mfglibStopStream 0x89 mfglibSendPacket 0x8A mfglibSetChannel 0x8B mfglibGetChannel 0x8C mfglibSetPower 0x8D mfglibGetPower 0x8E mfglibRxHandler 0x8F launchStandaloneBootloader 0x90 sendBootloadMessage 0x91 getStandaloneBootloaderVersionPlatMicroPhy 0x92 incomingBootloadMessageHandler 0x93 bootloadTransmitCompleteHandler 0x94 aesEncrypt 0x95 overrideCurrentChannel 0x96 sendRawMessage 0x97 macPassthroughMessageHandler 0x98 rawTransmitCompleteHandler 0x99 setRadioPower 0x9A setRadioChannel silabs.com | Building a more connected world. Rev. 3.2 | 125 UG100: EZSP Reference Guide Numeric List of Frames ID Name 0x9B zigbeeKeyEstablishmentHandler 0x9C energyScanRequest 0x9D delayTest 0x9E generateCbkeKeysHandler 0x9F calculateSmacs 0xA0 calculateSmacsHandler 0xA1 clearTemporaryDataMaybeStoreLinkKey 0xA2 setPreinstalledCbkeData 0xA3 dsaVerify 0xA4 generateCbkeKeys 0xA5 getCertificate 0xA6 dsaSign 0xA7 dsaSignHandler 0xA8 removeDevice 0xA9 unicastNwkKeyUpdate 0xAA getValue 0xAB setValue 0xAC setGpioCurrentConfiguration 0xAD setGpioPowerUpDownConfiguration 0xAE setGpioRadioPowerMask 0xAF addTransientLinkKey 0xB0 dsaVerify283k1 0xB1 clearKeyTable 0xB2 zllNetworkOps 0xB3 zllSetInitialSecurityState 0xB4 zllStartScan 0xB5 zllSetRxOnWhenIdle 0xB6 zllNetworkFoundHandler 0xB7 zllScanCompleteHandler 0xB8 zllAddressAssignmentHandler 0xB9 setLogicalAndRadioChannel 0xBA getLogicalChannel 0xBB zllTouchLinkTargetHandler 0xBC zllGetTokens 0xBD zllSetDataToken 0xBE isZllNetwork 0xBF zllSetNonZllNetwork 0xC0 gpProxyTableLookup 0xC1 getSourceRouteTableEntry silabs.com | Building a more connected world. Rev. 3.2 | 126 UG100: EZSP Reference Guide Numeric List of Frames ID Name 0xC2 getSourceRouteTableFilledSize 0xC3 getSourceRouteTableTotalSize 0xC4 changeSourceRouteHandler 0xC5 gpepIncomingMessageHandler 0xC6 dGpSend 0xC7 dGpSentHandler 0xC8 gpProxyTableGetEntry 0xC9 gpProxyTableProcessGpPairing 0xCA setSecurityKey 0xCB setSecurityParameters 0xCC resetToFactoryDefaults 0xCD getSecurityKeyStatus 0xCE getTransientLinkKey 0xCF -- unassigned -- 0xD0 -- unassigned -- 0xD1 -- unassigned -- 0xD2 -- unassigned -- 0xD3 -- unassigned -- 0xD4 -- unassigned -- 0xD5 -- unassigned -- 0xD6 -- unassigned -- 0xD7 -- unassigned -- 0xD8 -- unassigned -- 0xD9 -- unassigned -- 0xDA -- unassigned -- 0xDB -- unassigned -- 0xDC -- unassigned -- 0xDD -- unassigned -- 0xDE -- unassigned -- 0xDF -- unassigned -- 0xE0 -- unassigned -- 0xE1 -- unassigned -- 0xE2 -- unassigned -- 0xE3 -- unassigned -- 0xE4 -- unassigned -- 0xE5 -- unassigned -- 0xE6 -- unassigned -- 0xE7 -- unassigned -- 0xE8 generateCbkeKeys283k1 silabs.com | Building a more connected world. Rev. 3.2 | 127 UG100: EZSP Reference Guide Numeric List of Frames ID Name 0xE9 generateCbkeKeysHandler283k1 0xEA calculateSmacs283k1 0xEB calculateSmacsHandler283k1 0xEC getCertificate283k1 0xED savePreinstalledCbkeData283k1 0xEE clearTemporaryDataMaybeStoreLinkKey283k1 0xEF -- unassigned -- 0xF0 -- unassigned -- 0xF1 readCounters 0xF2 counterRolloverHandler 0xF3 -- unassigned -- 0xF4 -- unassigned -- 0xF5 setCtune 0xF6 getCtune 0xF7 sendLinkPowerDeltaRequest 0xF8 multiPhyStart 0xF9 multiPhyStop 0xFA multiPhySetRadioPower 0xFB multiPhySetRadioChannel 0xFC getPhyInterfaceCount 0xFD getRadioParameters 0xFE writeNodeData silabs.com | Building a more connected world. Rev. 3.2 | 128 Smart. Connected. Energy-Friendly. Products Quality www.silabs.com/products www.silabs.com/quality Support and Community community.silabs.com Disclaimer Silicon Labs intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers using or intending to use the Silicon Labs products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific device, and "Typical" parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Labs reserves the right to make changes without further notice and limitation to product information, specifications, and descriptions herein, and does not give warranties as to the accuracy or completeness of the included information. Silicon Labs shall have no liability for the consequences of use of the information supplied herein. This document does not imply or express copyright licenses granted hereunder to design or fabricate any integrated circuits. The products are not designed or authorized to be used within any Life Support System without the specific written consent of Silicon Labs. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected to result in significant personal injury or death. Silicon Labs products are not designed or authorized for military applications. Silicon Labs products shall under no circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons. Trademark Information Silicon Laboratories Inc.® , Silicon Laboratories®, Silicon Labs®, SiLabs® and the Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember®, Energy Micro, Energy Micro logo and combinations thereof, "the world’s most energy friendly microcontrollers", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Micrium, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY®, Telegesis, the Telegesis Logo®, USBXpress®, Zentri and others are trademarks or registered trademarks of Silicon Labs. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings. Keil is a registered trademark of ARM Limited. All other products or brand names mentioned herein are trademarks of their respective holders. Silicon Laboratories Inc. 400 West Cesar Chavez Austin, TX 78701 USA http://www.silabs.com
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.6 Linearized : No Author : Silicon Labs Comments : Company : Silicon Labs Create Date : 2017:12:13 12:51:10-05:00 Doc Num : UG100 Modify Date : 2017:12:18 08:35:31-06:00 Rev Num : 3.2 Source Modified : D:20171213160942 Subject : Has XFA : No Language : EN-US Tagged PDF : No XMP Toolkit : Adobe XMP Core 5.4-c006 80.159825, 2016/09/16-03:31:08 Metadata Date : 2017:12:18 08:35:31-06:00 Creator Tool : Acrobat PDFMaker 18 for Word Document ID : uuid:362fea95-a72d-4253-897d-9c12db88065a Instance ID : uuid:15b361c0-c49d-49d2-a7f8-65db042c3a00 Format : application/pdf Title : UG100: EZSP Reference Guide Description : Creator : Silicon Labs Producer : Adobe PDF Library 15.0 Page Layout : OneColumn Page Mode : UseOutlines Page Count : 130 Warning : [Minor] Ignored duplicate Info dictionaryEXIF Metadata provided by EXIF.tools