-
Notifications
You must be signed in to change notification settings - Fork 7.6k
OpenThread Example Improvement #10299
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 9 commits
6912437
00f0d0a
4175638
1b27f84
0c49edd
323d4a8
d21d0bc
eb243f9
40ae94f
e5a0eaf
20f7c4d
79827b7
52b3cb7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
#include "OThreadCLI.h" | ||
#include "OThreadCLI_Util.h" | ||
|
||
// Leader node shall use the same Network Key and channel | ||
#define CLI_NETWORK_KEY "00112233445566778899aabbccddeeff" | ||
#define CLI_NETWORK_CHANEL "24" | ||
bool otStatus = true; | ||
|
||
void setup() { | ||
Serial.begin(115200); | ||
OThreadCLI.begin(false); // No AutoStart - fresh start | ||
Serial.println("Setting up OpenThread Node as Router/Child"); | ||
Serial.println("Make sure the Leader Node is already running"); | ||
|
||
otStatus &= otExecCommand("dataset", "clear"); | ||
otStatus &= otExecCommand("dataset networkkey", CLI_NETWORK_KEY); | ||
otStatus &= otExecCommand("dataset channel", CLI_NETWORK_CHANEL); | ||
otStatus &= otExecCommand("dataset", "commit active"); | ||
otStatus &= otExecCommand("ifconfig", "up"); | ||
otStatus &= otExecCommand("thread", "start"); | ||
|
||
if (!otStatus) { | ||
Serial.println("\r\n\t===> Failed starting Thread Network!"); | ||
return; | ||
} | ||
// wait for the node to enter in the router state | ||
uint32_t timeout = millis() + 90000; // waits 90 seconds to | ||
while (otGetDeviceRole() != OT_ROLE_CHILD && otGetDeviceRole() != OT_ROLE_ROUTER) { | ||
Serial.print("."); | ||
if (millis() > timeout) { | ||
Serial.println("\r\n\t===> Timeout! Failed."); | ||
otStatus = false; | ||
break; | ||
} | ||
delay(500); | ||
} | ||
|
||
if (otStatus) { | ||
// print the PanID using 2 methods | ||
|
||
// CLI | ||
char resp[256]; | ||
if (otGetRespCmd("panid", resp)) { | ||
Serial.printf("\r\nPanID[using CLI]: %s\r\n", resp); | ||
} else { | ||
Serial.printf("\r\nPanID[using CLI]: FAILED!\r\n"); | ||
} | ||
|
||
// OpenThread API | ||
Serial.printf("PanID[using OT API]: 0x%x\r\n", (uint16_t) otLinkGetPanId(esp_openthread_get_instance())); | ||
} | ||
Serial.println("\r\n"); | ||
} | ||
|
||
void loop() { | ||
if (otStatus) { | ||
Serial.println("Thread NetworkInformation: "); | ||
Serial.println("---------------------------"); | ||
otPrintNetworkInformation(Serial); | ||
Serial.println("---------------------------"); | ||
} else { | ||
Serial.println("Some OpenThread operation has failed..."); | ||
} | ||
delay(10000); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
{ | ||
"targets": { | ||
"esp32": false, | ||
"esp32c2": false, | ||
"esp32c3": false, | ||
"esp32s2": false, | ||
"esp32s3": false | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -31,10 +31,10 @@ peek KEYWORD2 | |
flush KEYWORD2 | ||
otGetDeviceRole KEYWORD2 | ||
otGetStringDeviceRole KEYWORD2 | ||
otGetRespCmd KEYWORD2 | ||
otGetRespCmd KEYWORD2 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I can't tell from the diff, but it's very important to remember that name and type need to be separated by TAB and not spaces. Is this here true? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes. It was separated by spaces and I have fixed it to use TABs. |
||
otExecCommand KEYWORD2 | ||
otPrintRespCLI KEYWORD2 | ||
otPrintNetworkInformation KEYWORD2 | ||
otPrintRespCLI KEYWORD2 | ||
otPrintNetworkInformation KEYWORD2 | ||
|
||
####################################### | ||
# Constants (LITERAL1) | ||
|
Uh oh!
There was an error while loading. Please reload this page.