diff --git a/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunInterface.h b/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunInterface.h index c0d412daa5..b114c93a09 100644 --- a/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunInterface.h +++ b/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunInterface.h @@ -526,6 +526,16 @@ public: * */ mesh_error_t enable_statistics(void); + /** + * \brief Reset Wi-SUN statistics + * + * Resets MAC statistics and Wi-SUN statistics. + * + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN on error + * */ + mesh_error_t reset_statistics(void); + /** * \brief Reads Wi-SUN network statistics * diff --git a/features/nanostack/mbed-mesh-api/source/WisunInterface.cpp b/features/nanostack/mbed-mesh-api/source/WisunInterface.cpp index af1005bc6a..a9dbeb9f59 100644 --- a/features/nanostack/mbed-mesh-api/source/WisunInterface.cpp +++ b/features/nanostack/mbed-mesh-api/source/WisunInterface.cpp @@ -563,6 +563,16 @@ mesh_error_t WisunInterface::enable_statistics(void) return ret_val; } +mesh_error_t WisunInterface::reset_statistics(void) +{ + mesh_error_t ret_val = MESH_ERROR_NONE; + int status = wisun_tasklet_statistics_reset(); + if (status < 0) { + ret_val = MESH_ERROR_UNKNOWN; + } + return ret_val; +} + mesh_error_t WisunInterface::read_nw_statistics(mesh_nw_statistics_t *statistics) { mesh_error_t ret_val = MESH_ERROR_NONE; diff --git a/features/nanostack/mbed-mesh-api/source/include/wisun_tasklet.h b/features/nanostack/mbed-mesh-api/source/include/wisun_tasklet.h index 5156293633..b16b39c8aa 100644 --- a/features/nanostack/mbed-mesh-api/source/include/wisun_tasklet.h +++ b/features/nanostack/mbed-mesh-api/source/include/wisun_tasklet.h @@ -125,6 +125,14 @@ int wisun_tasklet_remove_trusted_certificates(void); */ int wisun_tasklet_statistics_start(void); +/* + * \brief Reset Wi-SUN statistics + * + * \return 0 Statistics start successful + * \return < 0 in case of errors + */ +int wisun_tasklet_statistics_reset(void); + /* * \brief Reads Wi-SUN network statistics * diff --git a/features/nanostack/mbed-mesh-api/source/wisun_tasklet.c b/features/nanostack/mbed-mesh-api/source/wisun_tasklet.c index 2b4950402f..5e9a43fca5 100644 --- a/features/nanostack/mbed-mesh-api/source/wisun_tasklet.c +++ b/features/nanostack/mbed-mesh-api/source/wisun_tasklet.c @@ -624,6 +624,18 @@ int wisun_tasklet_statistics_start(void) return 0; } +int wisun_tasklet_statistics_reset(void) +{ + if (!statistics) { + return -1; + } + + memset(&statistics->mac_statistics, 0, sizeof(mac_statistics_t)); + memset(&statistics->ws_statistics, 0, sizeof(ws_statistics_t)); + + return 0; +} + static void wisun_tasklet_statistics_do_start(void) { if (!wisun_tasklet_data_ptr || wisun_tasklet_data_ptr->network_interface_id < 0 || !mac_api) {