mirror of
https://github.com/espressif/openthread.git
synced 2026-08-30 05:49:54 +00:00
Add diagnostics module in OpenThread (#343)
* Add diagnostics module in OpenThread - provide the same diagnostics interface for both CLI and NCP usage - implement common diagnostics features based on existing platform interface defined in 'include/platform/' - other more platform specific diagnostics features will be processed under platform layer - update CLI interface to support diagnostics feature - update both Posix and CC2538 platform to support diagnostics feature * Add diagnostics module unit test - move platform.h from "examples/platform" to "include/platform" - add test_diag.cpp to test diagnostics module * Add a configuration option that would enable/disable diagnostics module Add --enable-diag configuration option to enable/disable diagnostics module when building OpenThread.
This commit is contained in:
@@ -38,6 +38,7 @@ OpenThread test scripts use the CLI to execute test cases.
|
||||
* [thread](#thread)
|
||||
* [version](#version)
|
||||
* [whitelist](#whitelist)
|
||||
* [diag](#diag)
|
||||
|
||||
## OpenThread Command Details
|
||||
|
||||
@@ -680,3 +681,11 @@ Remove an IEEE 802.15.4 Extended Address from the whitelist.
|
||||
> whitelist remove dead00beef00cafe
|
||||
Done
|
||||
```
|
||||
|
||||
### diag
|
||||
|
||||
Diagnostics module is enabled only when building OpenThread with --enable-diag option.
|
||||
Go [diagnostics module][1] for more information.
|
||||
|
||||
[1]:../diag/README.md
|
||||
|
||||
|
||||
+17
-1
@@ -36,7 +36,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <openthread.h>
|
||||
#include <openthread-config.h>
|
||||
#include <openthread-diag.h>
|
||||
|
||||
#include "cli.hpp"
|
||||
#include "cli_dataset.hpp"
|
||||
@@ -86,6 +86,9 @@ const struct Command Interpreter::sCommands[] =
|
||||
{ "thread", &ProcessThread },
|
||||
{ "version", &ProcessVersion },
|
||||
{ "whitelist", &ProcessWhitelist },
|
||||
#if OPENTHREAD_ENABLE_DIAG
|
||||
{ "diag", &ProcessDiag },
|
||||
#endif
|
||||
};
|
||||
|
||||
otNetifAddress Interpreter::sAddress;
|
||||
@@ -1477,6 +1480,14 @@ exit:
|
||||
AppendResult(error);
|
||||
}
|
||||
|
||||
#if OPENTHREAD_ENABLE_DIAG
|
||||
void Interpreter::ProcessDiag(int argc, char *argv[])
|
||||
{
|
||||
// all diagnostics related features are processed within diagnostics module
|
||||
sServer->OutputFormat("%s\r\n", diagProcessCmd(argc, argv));
|
||||
}
|
||||
#endif
|
||||
|
||||
void Interpreter::ProcessLine(char *aBuf, uint16_t aBufLength, Server &aServer)
|
||||
{
|
||||
char *argv[kMaxArgs];
|
||||
@@ -1504,6 +1515,11 @@ void Interpreter::ProcessLine(char *aBuf, uint16_t aBufLength, Server &aServer)
|
||||
|
||||
cmd = aBuf;
|
||||
|
||||
#if OPENTHREAD_ENABLE_DIAG
|
||||
VerifyOrExit((!isDiagEnabled() || (strcmp(cmd, "diag") == 0)),
|
||||
sServer->OutputFormat("under diagnostics mode, execute 'diag stop' before running any other commands.\r\n"));
|
||||
#endif
|
||||
|
||||
for (unsigned int i = 0; i < sizeof(sCommands) / sizeof(sCommands[0]); i++)
|
||||
{
|
||||
if (strcmp(cmd, sCommands[i].mName) == 0)
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include <cli/cli_server.hpp>
|
||||
#include <net/icmp6.hpp>
|
||||
#include <common/timer.hpp>
|
||||
#include <openthread-config.h>
|
||||
|
||||
namespace Thread {
|
||||
|
||||
@@ -157,6 +158,10 @@ private:
|
||||
static void ProcessVersion(int argc, char *argv[]);
|
||||
static void ProcessWhitelist(int argc, char *argv[]);
|
||||
|
||||
#if OPENTHREAD_ENABLE_DIAG
|
||||
static void ProcessDiag(int argc, char *argv[]);
|
||||
#endif
|
||||
|
||||
static void HandleEchoResponse(void *aContext, Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
|
||||
static void HandlePingTimer(void *aContext);
|
||||
static void HandleActiveScanResult(otActiveScanResult *aResult);
|
||||
|
||||
Reference in New Issue
Block a user