mirror of
https://github.com/espressif/openthread.git
synced 2026-09-01 14:59:54 +00:00
[mle] add time tracking to mle roles (#8312)
A useful metric for a device is the amount of time it spends in each mle role. This could help to identify connectivity issues on SED with weak signal and frequent detaches by checking the time spent in detached mode. It would also be useful to know the time spent in leader state when having multiple FTDs frequently joining and splitting in different partitions. This information is not available from the role counters, since time spent in each state is not related to the number of entries to that state. This commit adds mle counters to track time spent in each role, when uptime feature is enabled (`OPENTHREAD_CONFIG_UPTIME_ENABLE=1`).
This commit is contained in:
@@ -53,7 +53,7 @@ extern "C" {
|
||||
* @note This number versions both OpenThread platform and user APIs.
|
||||
*
|
||||
*/
|
||||
#define OPENTHREAD_API_VERSION (253)
|
||||
#define OPENTHREAD_API_VERSION (254)
|
||||
|
||||
/**
|
||||
* @addtogroup api-instance
|
||||
|
||||
@@ -175,6 +175,19 @@ typedef struct otMleCounters
|
||||
uint16_t mPartitionIdChanges; ///< Number of changes to partition ID.
|
||||
uint16_t mBetterPartitionAttachAttempts; ///< Number of attempts to attach to a better partition.
|
||||
|
||||
/**
|
||||
* Role time tracking.
|
||||
*
|
||||
* When uptime feature is enabled (OPENTHREAD_CONFIG_UPTIME_ENABLE = 1) time spent in each MLE role is tracked.
|
||||
*
|
||||
*/
|
||||
uint64_t mDisabledTime; ///< Number of milliseconds device has been in OT_DEVICE_ROLE_DISABLED role.
|
||||
uint64_t mDetachedTime; ///< Number of milliseconds device has been in OT_DEVICE_ROLE_DETACHED role.
|
||||
uint64_t mChildTime; ///< Number of milliseconds device has been in OT_DEVICE_ROLE_CHILD role.
|
||||
uint64_t mRouterTime; ///< Number of milliseconds device has been in OT_DEVICE_ROLE_ROUTER role.
|
||||
uint64_t mLeaderTime; ///< Number of milliseconds device has been in OT_DEVICE_ROLE_LEADER role.
|
||||
uint64_t mTrackedTime; ///< Number of milliseconds tracked by previous counters.
|
||||
|
||||
/**
|
||||
* Number of times device changed its parent.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user