[radio] add radio coex control api (#4158)

This commit is contained in:
Zhanglong Xia
2019-09-17 14:12:37 +08:00
committed by Jonathan Hui
parent 87ef3b1d51
commit c0ef327664
14 changed files with 217 additions and 49 deletions
+48 -29
View File
@@ -105,7 +105,7 @@ const struct Command Interpreter::sCommands[] = {
#if OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE
{"coaps", &Interpreter::ProcessCoapSecure},
#endif
#if OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_METRICS_ENABLE
#if OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE
{"coex", &Interpreter::ProcessCoexMetrics},
#endif
#if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE && OPENTHREAD_FTD
@@ -786,43 +786,62 @@ void Interpreter::ProcessCoapSecure(int argc, char *argv[])
#endif // OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE
#if OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_METRICS_ENABLE
#if OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE
void Interpreter::ProcessCoexMetrics(int argc, char *argv[])
{
OT_UNUSED_VARIABLE(argc);
OT_UNUSED_VARIABLE(argv);
otError error = OT_ERROR_NONE;
otRadioCoexMetrics metrics;
otError error = otPlatRadioGetCoexMetrics(mInstance, &metrics);
if (argc == 0)
{
mServer->OutputFormat("%s\r\n", otPlatRadioIsCoexEnabled(mInstance) ? "Enabled" : "Disabled");
}
else if (strcmp(argv[0], "enable") == 0)
{
error = otPlatRadioSetCoexEnabled(mInstance, true);
}
else if (strcmp(argv[0], "disable") == 0)
{
error = otPlatRadioSetCoexEnabled(mInstance, false);
}
else if (strcmp(argv[0], "metrics") == 0)
{
otRadioCoexMetrics metrics;
SuccessOrExit(error);
SuccessOrExit(error = otPlatRadioGetCoexMetrics(mInstance, &metrics));
mServer->OutputFormat("Stopped: %s\r\n", metrics.mStopped ? "true" : "false");
mServer->OutputFormat("Grant Glitch: %u\r\n", metrics.mNumGrantGlitch);
mServer->OutputFormat("Transmit metrics\r\n");
mServer->OutputFormat(" Request: %u\r\n", metrics.mNumTxRequest);
mServer->OutputFormat(" Grant Immediate: %u\r\n", metrics.mNumTxGrantImmediate);
mServer->OutputFormat(" Grant Wait: %u\r\n", metrics.mNumTxGrantWait);
mServer->OutputFormat(" Grant Wait Activated: %u\r\n", metrics.mNumTxGrantWaitActivated);
mServer->OutputFormat(" Grant Wait Timeout: %u\r\n", metrics.mNumTxGrantWaitTimeout);
mServer->OutputFormat(" Grant Deactivated During Request: %u\r\n", metrics.mNumTxGrantDeactivatedDuringRequest);
mServer->OutputFormat(" Delayed Grant: %u\r\n", metrics.mNumTxDelayedGrant);
mServer->OutputFormat(" Average Request To Grant Time: %u\r\n", metrics.mAvgTxRequestToGrantTime);
mServer->OutputFormat("Receive metrics\r\n");
mServer->OutputFormat(" Request: %u\r\n", metrics.mNumRxRequest);
mServer->OutputFormat(" Grant Immediate: %u\r\n", metrics.mNumRxGrantImmediate);
mServer->OutputFormat(" Grant Wait: %u\r\n", metrics.mNumRxGrantWait);
mServer->OutputFormat(" Grant Wait Activated: %u\r\n", metrics.mNumRxGrantWaitActivated);
mServer->OutputFormat(" Grant Wait Timeout: %u\r\n", metrics.mNumRxGrantWaitTimeout);
mServer->OutputFormat(" Grant Deactivated During Request: %u\r\n", metrics.mNumRxGrantDeactivatedDuringRequest);
mServer->OutputFormat(" Delayed Grant: %u\r\n", metrics.mNumRxDelayedGrant);
mServer->OutputFormat(" Average Request To Grant Time: %u\r\n", metrics.mAvgRxRequestToGrantTime);
mServer->OutputFormat(" Grant None: %u\r\n", metrics.mNumRxGrantNone);
mServer->OutputFormat("Stopped: %s\r\n", metrics.mStopped ? "true" : "false");
mServer->OutputFormat("Grant Glitch: %u\r\n", metrics.mNumGrantGlitch);
mServer->OutputFormat("Transmit metrics\r\n");
mServer->OutputFormat(" Request: %u\r\n", metrics.mNumTxRequest);
mServer->OutputFormat(" Grant Immediate: %u\r\n", metrics.mNumTxGrantImmediate);
mServer->OutputFormat(" Grant Wait: %u\r\n", metrics.mNumTxGrantWait);
mServer->OutputFormat(" Grant Wait Activated: %u\r\n", metrics.mNumTxGrantWaitActivated);
mServer->OutputFormat(" Grant Wait Timeout: %u\r\n", metrics.mNumTxGrantWaitTimeout);
mServer->OutputFormat(" Grant Deactivated During Request: %u\r\n",
metrics.mNumTxGrantDeactivatedDuringRequest);
mServer->OutputFormat(" Delayed Grant: %u\r\n", metrics.mNumTxDelayedGrant);
mServer->OutputFormat(" Average Request To Grant Time: %u\r\n", metrics.mAvgTxRequestToGrantTime);
mServer->OutputFormat("Receive metrics\r\n");
mServer->OutputFormat(" Request: %u\r\n", metrics.mNumRxRequest);
mServer->OutputFormat(" Grant Immediate: %u\r\n", metrics.mNumRxGrantImmediate);
mServer->OutputFormat(" Grant Wait: %u\r\n", metrics.mNumRxGrantWait);
mServer->OutputFormat(" Grant Wait Activated: %u\r\n", metrics.mNumRxGrantWaitActivated);
mServer->OutputFormat(" Grant Wait Timeout: %u\r\n", metrics.mNumRxGrantWaitTimeout);
mServer->OutputFormat(" Grant Deactivated During Request: %u\r\n",
metrics.mNumRxGrantDeactivatedDuringRequest);
mServer->OutputFormat(" Delayed Grant: %u\r\n", metrics.mNumRxDelayedGrant);
mServer->OutputFormat(" Average Request To Grant Time: %u\r\n", metrics.mAvgRxRequestToGrantTime);
mServer->OutputFormat(" Grant None: %u\r\n", metrics.mNumRxGrantNone);
}
else
{
ExitNow(error = OT_ERROR_INVALID_ARGS);
}
exit:
AppendResult(error);
}
#endif // OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_METRICS_ENABLE
#endif // OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE
#if OPENTHREAD_FTD
void Interpreter::ProcessContextIdReuseDelay(int argc, char *argv[])