End Devices#

EmberZNet API relating to end device children.

See child.h for source code.

Power Management#

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

Defines tasks that are taken into account when dealing with sleep related behavior.

uint16_t

Returns a bitmask indicating the stack's current tasks.

bool

Indicates whether the stack is currently in a state where there are no high-priority tasks, allowing the device to sleep.

bool

Indicates whether the parent token has been set by association.

bool

Indicates whether the stack currently has any tasks pending.

bool

Indicates whether the stack is currently in a state that does not require the application to periodically poll.

void

Immediately turns the radio power completely off.

void

Initializes the radio. Typically called coming out of deep sleep.

Sends a link power delta request to the parent.

int8_t

Accessor function for recent average rssi value between this device and the parent. (SoC only)

EmberNodeId

Accessor function for the parent's node ID if applicable. (SoC only)

: the bit mask that decides which timeout values are acceptable for a child. this defaults to 0xFFFF which covers all the following 15 options:

#define
EMBER_HIGH_PRIORITY_TASKS (EMBER_OUTGOING_MESSAGES | EMBER_INCOMING_MESSAGES | EMBER_RADIO_IS_ON)

A mask of the tasks that prevent a device from sleeping.

Functions#

EmberNodeId
emberChildId(uint8_t childIndex)

Converts a child index to a node ID.

int8_t
emberChildPower(uint8_t childIndex)

This function returns radio power value of the child from the given childIndex.

void
emberSetChildPower(uint8_t childIndex, int8_t newPower)

This function sets the radio power value for a given child index.

uint8_t
emberChildIndex(EmberNodeId childId)

Converts a node ID to a child index.

emberGetChildData(uint8_t index, EmberChildData *childData)

Gets the EUI64 and node type of the child at the provided index. If there is no child at 'index', it returns EMBER_NOT_JOINED. Possible child indexes run from zero to emberMaxChildCount() - 1.

void
emberChildJoinHandler(uint8_t index, bool joining)

Called by the stack when a child joins or leaves. 'Joining' is true if the child is joining and false if leaving.

emberSetKeepAliveMode(EmberKeepAliveMode mode)

Requests any pending data from the parent node. This function allows an end device to query its parent for any pending data.

void
emberSetMacPollFailureWaitTime(uint32_t waitBeforeRetryIntervalMs)
void
emberPollCompleteHandler(EmberStatus status)
emberSetMessageFlag(EmberNodeId childId)

Sets a flag to indicate that there is a message pending for a child. The next time that the child polls, it will be informed that it has a pending message. The message is sent from emberPollHandler, which is called when the child requests data.

emberClearMessageFlag(EmberNodeId childId)

Clears a flag to indicate that there are no more messages for a child. The next time the child polls, it will be informed that it does not have any pending messages.

void
emberPollHandler(EmberNodeId childId, bool transmitExpected)

Called to allow the application to send a message in response to a poll from a child.

uint8_t

Returns the number of children the node currently has.

uint8_t

Returns the number of router children that the node currently has.

uint8_t

Returns the maximum number of children for this node. The return value is undefined for nodes that are not joined to a network.

uint8_t

Returns the maximum number of router children for this node. The return value is undefined for nodes that are not joined to a network.

EmberNodeId

Returns the parent's node ID. The return value is undefined for nodes without parents (coordinators and nodes that are not joined to a network).

EmberEUI64

Returns the parent's EUI64. The return value is undefined for nodes without parents (coordinators and nodes that are not joined to a network).

Power Management Documentation#

@0#

@0

Defines tasks that are taken into account when dealing with sleep related behavior.

As opposed to its subset of EMBER_HIGH_PRIORITY_TASKS, these tasks does not necessarily prevent us to go to sleep. However, they are taken into account when calculating how long we can sleep until the next event.

Enumerator
PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION
PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY
TC_CONNECTIVITY
LONG_UPTIME
BAD_PARENT_CONNECTIVITY
EMBER_OUTGOING_MESSAGES

There are messages waiting for transmission.

EMBER_INCOMING_MESSAGES

One or more incoming messages being processed.

EMBER_RADIO_IS_ON

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

EMBER_TRANSPORT_ACTIVE

The transport layer has messages awaiting an ACK.

EMBER_APS_LAYER_ACTIVE

The ZigBee APS layer has messages awaiting an ACK.

EMBER_ASSOCIATING

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

EMBER_ZLL_TOUCH_LINKING

The node is currently touch linking.

EMBER_NETWORK_TIMEOUT_REQUEST

Network Timeout Request Event.

EMBER_SEND_ORPHAN_NOTIFICATION

Sending Orphan Notification Event.

EMBER_MAC_DATA_POLL_SUPER_RETRY

MAC Data Poll Super Retry Event .

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

Internal reference.

TOKEN_COUNT
COMM_SERIAL
COMM_RADIO

Definition at line 289 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberCurrentStackTasks#

uint16_t emberCurrentStackTasks (void )

Returns a bitmask indicating the stack's current tasks.

Parameters
N/A

The mask EMBER_HIGH_PRIORITY_TASKS defines which tasks are high priority. Devices should not sleep if any high priority tasks are active. Active tasks that are not high priority are waiting for messages to arrive from other devices. If there are active tasks, but no high priority ones, the device may sleep but should periodically wake up and call emberPollForData() in order to receive messages. Parents will hold messages for EMBER_INDIRECT_TRANSMISSION_TIMEOUT milliseconds before discarding them.

Returns

  • A bitmask of the stack's active tasks.


Definition at line 333 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberOkToNap#

bool emberOkToNap (void )

Indicates whether the stack is currently in a state where there are no high-priority tasks, allowing the device to sleep.

Parameters
N/A

There may be tasks expecting incoming messages, in which case the device should periodically wake up and call emberPollForData() in order to receive messages. This function can only be called when the node type is EMBER_SLEEPY_END_DEVICE

Returns

  • True if the application may sleep but the stack may be expecting incoming messages.


Definition at line 347 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberParentTokenSet#

bool emberParentTokenSet (void )

Indicates whether the parent token has been set by association.

Parameters
N/A

Returns

  • True if the parent token has been set.


Definition at line 357 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberOkToHibernate#

bool emberOkToHibernate (void )

Indicates whether the stack currently has any tasks pending.

Parameters
N/A

If there are no pending tasks, emberTick() does not need to be called until the next time a stack API function is called. This function can only be called when the node type is EMBER_SLEEPY_END_DEVICE or

Returns

  • True if the application may sleep for as long as it wishes.


Definition at line 368 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberOkToLongPoll#

bool emberOkToLongPoll (void )

Indicates whether the stack is currently in a state that does not require the application to periodically poll.

Parameters
N/A

Returns

  • True if the application may stop polling periodically.


Definition at line 379 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberStackPowerDown#

void emberStackPowerDown (void )

Immediately turns the radio power completely off.

Parameters
N/A

Calling this function will render all other stack functions except emberStackPowerUp() non-functional until the radio is powered back on.


Definition at line 389 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberStackPowerUp#

void emberStackPowerUp (void )

Initializes the radio. Typically called coming out of deep sleep.

Parameters
N/A

For non-sleepy devices, also turns the radio on and leaves it in RX mode.


Definition at line 395 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberSendLinkPowerDeltaRequest#

EmberStatus emberSendLinkPowerDeltaRequest (void )

Sends a link power delta request to the parent.

Parameters
N/A

Definition at line 403 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberGetAvgParentRssi#

int8_t emberGetAvgParentRssi (void )

Accessor function for recent average rssi value between this device and the parent. (SoC only)

Parameters
N/A

Definition at line 407 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberGetParentId#

EmberNodeId emberGetParentId (void )

Accessor function for the parent's node ID if applicable. (SoC only)

Parameters
N/A

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

emberSetChildTimeoutOptionMask#

EmberStatus emberSetChildTimeoutOptionMask (uint16_t mask)

: the bit mask that decides which timeout values are acceptable for a child. this defaults to 0xFFFF which covers all the following 15 options:

Parameters
N/Amask

#define SECONDS_10 0 #define MINUTES_2 1 #define MINUTES_4 2 #define MINUTES_8 3 #define MINUTES_16 4 #define MINUTES_32 5 #define MINUTES_64 6 #define MINUTES_128 7 #define MINUTES_256 8 #define MINUTES_512 9 #define MINUTES_1024 10 #define MINUTES_2048 11 #define MINUTES_4096 12 #define MINUTES_8192 13 #define MINUTES_16384 14 // ~11 days


Definition at line 433 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

EMBER_HIGH_PRIORITY_TASKS#

#define EMBER_HIGH_PRIORITY_TASKS
Value:
  (EMBER_OUTGOING_MESSAGES | EMBER_INCOMING_MESSAGES | EMBER_RADIO_IS_ON)

A mask of the tasks that prevent a device from sleeping.


Definition at line 317 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

Function Documentation#

emberChildId#

EmberNodeId emberChildId (uint8_t childIndex)

Converts a child index to a node ID.

Parameters
N/AchildIndex

The index.

Returns

  • The node ID of the child or EMBER_NULL_NODE_ID if there isn't a child at the childIndex specified.


Definition at line 37 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberChildPower#

int8_t emberChildPower (uint8_t childIndex)

This function returns radio power value of the child from the given childIndex.

Parameters
N/AchildIndex

The index.

Returns

  • The power of the child or maximum radio power, which is the power value provided by the user while forming/joining a network if there isn't a child at the childIndex specified.


Definition at line 47 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberSetChildPower#

void emberSetChildPower (uint8_t childIndex, int8_t newPower)

This function sets the radio power value for a given child index.

Parameters
N/AchildIndex

The index.

N/AnewPower

The new power value.


Definition at line 54 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberChildIndex#

uint8_t emberChildIndex (EmberNodeId childId)

Converts a node ID to a child index.

Parameters
N/AchildId

The node ID of the child.

Returns

  • The child index or 0xFF if the node ID does not belong to a child.


Definition at line 62 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberGetChildData#

EmberStatus emberGetChildData (uint8_t index, EmberChildData * childData)

Gets the EUI64 and node type of the child at the provided index. If there is no child at 'index', it returns EMBER_NOT_JOINED. Possible child indexes run from zero to emberMaxChildCount() - 1.

Parameters
N/Aindex

The index of the child of interest.

N/AchildData

The child's data is copied here.

Returns


Definition at line 75 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberChildJoinHandler#

void emberChildJoinHandler (uint8_t index, bool joining)

Called by the stack when a child joins or leaves. 'Joining' is true if the child is joining and false if leaving.

Parameters
N/Aindex

The index of the child of interest.

N/Ajoining

True if the child is joining, false if the child is leaving.

The index is the same as the value that should be passed to emberGetChildData() to get this child's data. Note that if the child is leaving, emberGetChildData() will return EMBER_NOT_JOINED if called with this index. If the application includes emberChildJoinHandler(), it must define EMBER_APPLICATION_HAS_CHILD_JOIN_HANDLER in its CONFIGURATION_HEADER


Definition at line 93 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberSetKeepAliveMode#

EmberStatus emberSetKeepAliveMode (EmberKeepAliveMode mode)
Parameters
N/Amode

could be one of the 4 configuration in EmberKeepAliveMode

@ brief This function is useful to set the keep alive mode


Definition at line 101 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberGetKeepAliveMode#

EmberKeepAliveMode emberGetKeepAliveMode (void )
Parameters
N/A

@ brief This function is useful to get the keep alive mode

Returns

  • mode could be one of the 4 configuration in EmberKeepAliveMode


Definition at line 109 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberPollForData#

EmberStatus emberPollForData (void )

Requests any pending data from the parent node. This function allows an end device to query its parent for any pending data.

Parameters
N/A

End devices must call this function periodically to maintain contact with their parent. The parent will remove a child if it has not received a poll from it within the configured timeout.

If the end device has lost contact with its parent, emberPollForData() calls ::emberRejoinNetwork(true) and returns EMBER_ERR_FATAL.

The default values for the timeouts are set in config/ember-configuration-defaults.h and can be overridden in the application's configuration header.

Returns


Definition at line 136 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberSetMacPollFailureWaitTime#

void emberSetMacPollFailureWaitTime (uint32_t waitBeforeRetryIntervalMs)
Parameters
N/AwaitBeforeRetryIntervalMs

Time in milliseconds the device waits before retrying a data poll when a MAC level data poll fails for any reason. The retry feature can be disabled by setting this value to zero.

@ brief This function is useful to sleepy end devices. This function will set the retry interval (in milliseconds) for mac data poll. This interval is the time in milliseconds the device waits before retrying a data poll when a MAC level data poll fails for any reason. The retry feature can be disabled by setting the retry interval to zero.


Definition at line 151 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberPollCompleteHandler#

void emberPollCompleteHandler (EmberStatus status)
Parameters
N/Astatus

An EmberStatus value:

@ brief This is called by the stack when a data poll to the parent is complete.

If the application includes emberPollCompleteHandler(), it must define EMBER_APPLICATION_HAS_POLL_COMPLETE_HANDLER within its CONFIGURATION_HEADER


Definition at line 168 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberSetMessageFlag#

EmberStatus emberSetMessageFlag (EmberNodeId childId)

Sets a flag to indicate that there is a message pending for a child. The next time that the child polls, it will be informed that it has a pending message. The message is sent from emberPollHandler, which is called when the child requests data.

Parameters
N/AchildId

The ID of the child that just polled for data.

Returns


Definition at line 182 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberClearMessageFlag#

EmberStatus emberClearMessageFlag (EmberNodeId childId)

Clears a flag to indicate that there are no more messages for a child. The next time the child polls, it will be informed that it does not have any pending messages.

Parameters
N/AchildId

The ID of the child that no longer has pending messages.

Returns

  • An EmberStatus value.

    • EMBER_SUCCESS - The next time that the child polls, it will be informed that it does not have any pending messages.

    • EMBER_NOT_JOINED - The child identified by childId is not our child.


Definition at line 195 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberPollHandler#

void emberPollHandler (EmberNodeId childId, bool transmitExpected)

Called to allow the application to send a message in response to a poll from a child.

Parameters
N/AchildId

The ID of the child that is requesting data.

N/AtransmitExpected

True if the child is expecting an application- supplied data message. False otherwise.

This function is called when a child polls, provided that the pending message flag is set for that child (see emberSetMessageFlag(). The message should be sent to the child using emberSendUnicast() with the EMBER_APS_OPTION_POLL_RESPONSE option.

If the application includes ::emberPollHanlder(), it must define EMBER_APPLICATION_HAS_POLL_HANDLER in its CONFIGURATION_HEADER.


Definition at line 214 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberChildCount#

uint8_t emberChildCount (void )

Returns the number of children the node currently has.

Parameters
N/A

Returns

  • The number of children.


Definition at line 221 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberRouterChildCount#

uint8_t emberRouterChildCount (void )

Returns the number of router children that the node currently has.

Parameters
N/A

Returns

  • The number of router children.


Definition at line 228 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberMaxChildCount#

uint8_t emberMaxChildCount (void )

Returns the maximum number of children for this node. The return value is undefined for nodes that are not joined to a network.

Parameters
N/A

Returns

  • The maximum number of children.


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

emberMaxRouterChildCount#

uint8_t emberMaxRouterChildCount (void )

Returns the maximum number of router children for this node. The return value is undefined for nodes that are not joined to a network.

Parameters
N/A

Returns

  • The maximum number of router children.


Definition at line 242 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberGetParentNodeId#

EmberNodeId emberGetParentNodeId (void )

Returns the parent's node ID. The return value is undefined for nodes without parents (coordinators and nodes that are not joined to a network).

Parameters
N/A

Returns

  • The parent's node ID.


Definition at line 250 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h

emberGetParentEui64#

EmberEUI64 emberGetParentEui64 (void )

Returns the parent's EUI64. The return value is undefined for nodes without parents (coordinators and nodes that are not joined to a network).

Parameters
N/A

Returns

  • The parent's EUI64.


Definition at line 258 of file /Users/vihuszar/Git/EmbeddedSoftware/super/protocol/zigbee/stack/include/child.h