End Devices#
EmberZNet API relating to end device children.
See child.h for source code.
Power Management#
Define tasks that are taken into account when dealing with sleep related behavior.
Return a bitmask indicating the stack's current tasks.
Indicate whether the stack is currently in a state where there are no high-priority tasks, allowing the device to sleep.
Indicate whether the parent token has been set by association.
Indicate whether the stack currently has any tasks pending.
Indicate whether the stack is currently in a state that does not require the application to periodically poll.
Immediately turn the radio power completely off.
Initialize the radio. Typically called coming out of deep sleep.
A mask of the tasks that prevent a device from sleeping.
Functions#
Return radio power value of the child from the given childIndex.
Set the radio power value for a given child index.
Get 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.
Sets the EUI64, node ID, and node type of the child at the provided index in nonvolatile memory. No other data from the childData argument is used or copied. The user is responsible for rebooting the device after calling this API in order to initialize RAM-based child data. Possible child indexes run from zero to emberMaxChildCount() - 1.
Called by the stack when a child joins or leaves. 'Joining' is true if the child is joining and false if leaving.
Request any pending data from the parent node. This function allows an end device to query its parent for any pending data.
Set a flag to indicate that a message is 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.
Clear 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.
Called to allow the application to send a message in response to a poll from a child.
Add a child to the child/neighbor table only on SoC, allowing direct manipulation of these tables by the application. This can affect the network functionality, and needs to be used wisely. If used appropriately, the application can maintain more than the maximum of children provided by the stack.
Remove a node from child/neighbor table only on SoC, allowing direct manipulation of these tables by the application. This can affect the network functionality, and needs to be used wisely.
Remove a neighbor from neighbor table only on SoC, allowing direct manipulation of neighbor table by the application. This can affect the network functionality, and needs to be used wisely.
Return the number of children the node currently has.
Return the number of router children that the node currently has.
Return the maximum number of children for this node. The return value is undefined for nodes that are not joined to a network.
Return the maximum number of router children for this node. The return value is undefined for nodes that are not joined to a network.
Return the parent's node ID. The return value is undefined for nodes without parents (coordinators and nodes that are not joined to a network).
Return the parent's EUI64. The return value is undefined for nodes without parents (coordinators and nodes that are not joined to a network).
Macros#
Convert a child index to a node ID.
Convert a node ID to a child index.
Power Management Documentation#
@6#
@6
Define tasks that are taken into account when dealing with sleep related behavior.
As opposed to its subset of EMBER_HIGH_PRIORITY_TASKS, these tasks do not necessarily prevent the device from going to sleep. However, they are taken into account when calculating how long we can sleep until the next event.
Enumerator | |
---|---|
EMBER_OUTGOING_MESSAGES | Messages are waiting for transmission. |
EMBER_INCOMING_MESSAGES | One or more incoming messages are 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 . |
356
of file stack/include/child.h
emberCurrentStackTasks#
uint16_t emberCurrentStackTasks (void )
Return a bitmask indicating the stack's current tasks.
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.
400
of file stack/include/child.h
emberOkToNap#
bool emberOkToNap (void )
Indicate whether the stack is currently in a state where there are no high-priority tasks, allowing the device to sleep.
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.
414
of file stack/include/child.h
emberParentTokenSet#
bool emberParentTokenSet (void )
Indicate whether the parent token has been set by association.
N/A |
Returns
True if the parent token has been set.
424
of file stack/include/child.h
emberOkToHibernate#
bool emberOkToHibernate (void )
Indicate whether the stack currently has any tasks pending.
N/A |
If no tasks are pending, 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.
435
of file stack/include/child.h
emberOkToLongPoll#
bool emberOkToLongPoll (void )
Indicate whether the stack is currently in a state that does not require the application to periodically poll.
N/A |
Returns
True if the application may stop polling periodically.
446
of file stack/include/child.h
emberStackPowerDown#
void emberStackPowerDown (void )
Immediately turn the radio power completely off.
N/A |
Calling this function will render all other stack functions except emberStackPowerUp() non-functional until the radio is powered back on.
456
of file stack/include/child.h
emberStackPowerUp#
void emberStackPowerUp (void )
Initialize the radio. Typically called coming out of deep sleep.
N/A |
For non-sleepy devices, also turns the radio on and leaves it in RX mode.
462
of file stack/include/child.h
EMBER_HIGH_PRIORITY_TASKS#
#define EMBER_HIGH_PRIORITY_TASKSValue:
(EMBER_OUTGOING_MESSAGES | EMBER_INCOMING_MESSAGES | EMBER_RADIO_IS_ON)
A mask of the tasks that prevent a device from sleeping.
384
of file stack/include/child.h
Function Documentation#
emberChildPower#
int8_t emberChildPower (uint8_t childIndex)
Return radio power value of the child from the given childIndex.
N/A | childIndex | 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.
47
of file stack/include/child.h
emberSetChildPower#
void emberSetChildPower (uint8_t childIndex, int8_t newPower)
Set the radio power value for a given child index.
N/A | childIndex | The index. |
N/A | newPower | The new power value. |
54
of file stack/include/child.h
emberGetChildData#
EmberStatus emberGetChildData (uint8_t index, EmberChildData * childData)
Get 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.
N/A | index | The index of the child of interest. |
N/A | childData | The child's data is copied here. |
Returns
Returns EMBER_SUCCESS if a child is found at that index, EMBER_NOT_JOINED if not.
75
of file stack/include/child.h
emberSetChildData#
EmberStatus emberSetChildData (uint8_t index, EmberChildData * childData)
Sets the EUI64, node ID, and node type of the child at the provided index in nonvolatile memory. No other data from the childData argument is used or copied. The user is responsible for rebooting the device after calling this API in order to initialize RAM-based child data. Possible child indexes run from zero to emberMaxChildCount() - 1.
N/A | index | The index of the child. |
N/A | childData | The child's data. |
Returns
Returns EMBER_SUCCESS if successfully setting child at that index, EMBER_INDEX_OUT_OF_RANGE if provided index is out of range.
Note
This API only sets the child data to nonvolatile memory. A reboot is required after calling this API to read the nonvolatile child data and set it to RAM structures. This API does not set other child RAM data, such as power and timeout values.
96
of file 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.
N/A | index | The index of the child of interest. |
N/A | joining | 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
114
of file stack/include/child.h
emberSetKeepAliveMode#
EmberStatus emberSetKeepAliveMode (EmberKeepAliveMode mode)
N/A | mode | One of the four configurations in the EmberKeepAliveMode. |
@ brief Set the keep alive mode.
122
of file stack/include/child.h
emberGetKeepAliveMode#
EmberKeepAliveMode emberGetKeepAliveMode (void )
N/A |
@ brief Get the keep alive mode.
Returns
mode One of the four configurations in the EmberKeepAliveMode.
130
of file stack/include/child.h
emberPollForData#
EmberStatus emberPollForData (void )
Request any pending data from the parent node. This function allows an end device to query its parent for any pending data.
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
An EmberStatus value:
EMBER_SUCCESS - The poll message has been submitted for transmission.
EMBER_INVALID_CALL - The node is not an end device.
EMBER_NOT_JOINED - The node is not part of a network.
EMBER_MAC_TRANSMIT_QUEUE_FULL - The MAC layer transmit queue is full.
EMBER_NO_BUFFERS - No buffers available to create the data poll message.
EMBER_ERR_FATAL - Too much time has elapsed since the last successful poll. A rejoin attempt has been initiated. This error is not "fatal". The command can be retried until successful.
157
of file stack/include/child.h
emberSetMacPollFailureWaitTime#
void emberSetMacPollFailureWaitTime (uint32_t waitBeforeRetryIntervalMs)
N/A | waitBeforeRetryIntervalMs | 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 Set the retry interval (in milliseconds) for mac data poll. This function is useful for sleepy end devices. The retry 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.
173
of file stack/include/child.h
emberPollCompleteHandler#
void emberPollCompleteHandler (EmberStatus status)
N/A | status | An
|
@ brief 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
190
of file stack/include/child.h
emberSetMessageFlag#
EmberStatus emberSetMessageFlag (EmberNodeId childId)
Set a flag to indicate that a message is 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.
N/A | childId | The ID of the child that just polled for data. |
Returns
An EmberStatus value.
EMBER_SUCCESS - The next time that the child polls, it will be informed that it has pending data.
EMBER_NOT_JOINED - The child identified by childId is not our child.
204
of file stack/include/child.h
emberClearMessageFlag#
EmberStatus emberClearMessageFlag (EmberNodeId childId)
Clear 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.
N/A | childId | 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.
217
of file 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.
N/A | childId | The ID of the child that is requesting data. |
N/A | transmitExpected | 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.
236
of file stack/include/child.h
emberAddChild#
EmberStatus emberAddChild (EmberNodeId shortId, EmberEUI64 longId, EmberNodeType nodeType)
Add a child to the child/neighbor table only on SoC, allowing direct manipulation of these tables by the application. This can affect the network functionality, and needs to be used wisely. If used appropriately, the application can maintain more than the maximum of children provided by the stack.
N/A | shortId | The preferred short ID of the node. |
N/A | longId | The long ID of the node. |
N/A | nodeType | The nodetype e.g., EMBER_ROUTER defining, if this would be added to the child table or neighbor table. |
Returns
An EmberStatus value.
EMBER_SUCCESS - This node has been successfully added.
EMBER_ERR_FATAL - The child was not added to the child/neighbor table.
255
of file stack/include/child.h
emberRemoveChild#
EmberStatus emberRemoveChild (EmberEUI64 childEui64)
Remove a node from child/neighbor table only on SoC, allowing direct manipulation of these tables by the application. This can affect the network functionality, and needs to be used wisely.
N/A | childEui64 | The long ID of the node. |
Returns
An EmberStatus value.
EMBER_SUCCESS - This node has been successfully removed.
EMBER_ERR_FATAL - The node was not found in either of the child or neighbor tables.
269
of file stack/include/child.h
emberRemoveNeighbor#
void emberRemoveNeighbor (EmberNodeId shortId, EmberEUI64 longId)
Remove a neighbor from neighbor table only on SoC, allowing direct manipulation of neighbor table by the application. This can affect the network functionality, and needs to be used wisely.
N/A | shortId | The short ID of the neighbor. |
N/A | longId | The long ID of the neighbor. |
280
of file stack/include/child.h
emberChildCount#
uint8_t emberChildCount (void )
Return the number of children the node currently has.
N/A |
Returns
The number of children.
288
of file stack/include/child.h
emberRouterChildCount#
uint8_t emberRouterChildCount (void )
Return the number of router children that the node currently has.
N/A |
Returns
The number of router children.
295
of file stack/include/child.h
emberMaxChildCount#
uint8_t emberMaxChildCount (void )
Return the maximum number of children for this node. The return value is undefined for nodes that are not joined to a network.
N/A |
Returns
The maximum number of children.
302
of file stack/include/child.h
emberMaxRouterChildCount#
uint8_t emberMaxRouterChildCount (void )
Return the maximum number of router children for this node. The return value is undefined for nodes that are not joined to a network.
N/A |
Returns
The maximum number of router children.
309
of file stack/include/child.h
emberGetParentNodeId#
EmberNodeId emberGetParentNodeId (void )
Return the parent's node ID. The return value is undefined for nodes without parents (coordinators and nodes that are not joined to a network).
N/A |
Returns
The parent's node ID.
317
of file stack/include/child.h
emberGetParentEui64#
EmberEUI64 emberGetParentEui64 (void )
Return the parent's EUI64. The return value is undefined for nodes without parents (coordinators and nodes that are not joined to a network).
N/A |
Returns
The parent's EUI64.
325
of file stack/include/child.h
Macro Definition Documentation#
emberChildId#
#define emberChildIdValue:
(childIndex)
Convert a child index to a node ID.
Returns
The node ID of the child or EMBER_NULL_NODE_ID if there isn't a child at the childIndex specified.
37
of file stack/include/child.h
emberChildIndex#
#define emberChildIndexValue:
(childId)
Convert a node ID to a child index.
Returns
The child index or 0xFF if the node ID does not belong to a child.
62
of file stack/include/child.h