diff --git a/src/cli/cli_config.h b/src/cli/cli_config.h index 3a1525fce..ddd5a2e68 100644 --- a/src/cli/cli_config.h +++ b/src/cli/cli_config.h @@ -75,6 +75,22 @@ #endif #endif +/** + * @def OPENTHREAD_CONFIG_CLI_LINK_METRICS_ENH_ACK_VERBOSE_ENABLE + * + * Define to 1 to enable unsolicited CLI output of Link Metrics data + * received in Enhanced-ACK frames. When disabled (default), no Enhanced-ACK + * IE callback is registered with otLinkMetricsConfigEnhAckProbing(), so the + * callback and its CLI output are compiled out entirely. + * + * Enabling this option adds OutputFormat() calls inside the time-critical + * Mac::HandleTransmitDone() path. On platforms with synchronous/blocking + * CLI transport, this may break SED fast-poll timing. + */ +#ifndef OPENTHREAD_CONFIG_CLI_LINK_METRICS_ENH_ACK_VERBOSE_ENABLE +#define OPENTHREAD_CONFIG_CLI_LINK_METRICS_ENH_ACK_VERBOSE_ENABLE 0 +#endif + /** * @def OPENTHREAD_CONFIG_CLI_BLE_SECURE_ENABLE * diff --git a/src/cli/cli_link_metrics.cpp b/src/cli/cli_link_metrics.cpp index 2b82264d6..53d2df293 100644 --- a/src/cli/cli_link_metrics.cpp +++ b/src/cli/cli_link_metrics.cpp @@ -325,10 +325,14 @@ template <> otError LinkMetrics::Process(Arg aArgs[]) ExitNow(error = OT_ERROR_INVALID_ARGS); } - SuccessOrExit( - error = otLinkMetricsConfigEnhAckProbing(GetInstancePtr(), &address, enhAckFlags, pLinkMetrics, - &LinkMetrics::HandleLinkMetricsConfigEnhAckProbingMgmtResponse, - this, &LinkMetrics::HandleLinkMetricsEnhAckProbingIe, this)); + error = otLinkMetricsConfigEnhAckProbing(GetInstancePtr(), &address, enhAckFlags, pLinkMetrics, + &LinkMetrics::HandleLinkMetricsConfigEnhAckProbingMgmtResponse, this, +#if OPENTHREAD_CONFIG_CLI_LINK_METRICS_ENH_ACK_VERBOSE_ENABLE + &LinkMetrics::HandleLinkMetricsEnhAckProbingIe, this); +#else + nullptr, nullptr); +#endif + SuccessOrExit(error); if (sync) { @@ -542,6 +546,7 @@ void LinkMetrics::HandleLinkMetricsMgmtResponse(const otIp6Address *aAddress, ot OutputLine("Status: %s", LinkMetricsStatusToStr(aStatus)); } +#if OPENTHREAD_CONFIG_CLI_LINK_METRICS_ENH_ACK_VERBOSE_ENABLE void LinkMetrics::HandleLinkMetricsEnhAckProbingIe(otShortAddress aShortAddress, const otExtAddress *aExtAddress, const otLinkMetricsValues *aMetricsValues, @@ -563,6 +568,7 @@ void LinkMetrics::HandleLinkMetricsEnhAckProbingIe(otShortAddress aS PrintLinkMetricsValue(aMetricsValues); } } +#endif const char *LinkMetrics::LinkMetricsStatusToStr(otLinkMetricsStatus aStatus) { diff --git a/src/cli/cli_link_metrics.hpp b/src/cli/cli_link_metrics.hpp index 2b495180c..5827bdf31 100644 --- a/src/cli/cli_link_metrics.hpp +++ b/src/cli/cli_link_metrics.hpp @@ -104,6 +104,7 @@ private: void HandleLinkMetricsConfigEnhAckProbingMgmtResponse(const otIp6Address *aAddress, otLinkMetricsStatus aStatus); void HandleLinkMetricsMgmtResponse(const otIp6Address *aAddress, otLinkMetricsStatus aStatus); +#if OPENTHREAD_CONFIG_CLI_LINK_METRICS_ENH_ACK_VERBOSE_ENABLE static void HandleLinkMetricsEnhAckProbingIe(otShortAddress aShortAddress, const otExtAddress *aExtAddress, const otLinkMetricsValues *aMetricsValues, @@ -112,6 +113,7 @@ private: void HandleLinkMetricsEnhAckProbingIe(otShortAddress aShortAddress, const otExtAddress *aExtAddress, const otLinkMetricsValues *aMetricsValues); +#endif const char *LinkMetricsStatusToStr(otLinkMetricsStatus aStatus);