1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

examples/openthread: call OpenThread API using Event Queue

This commit is contained in:
Jose Alamos 2020-12-17 14:06:53 +01:00 committed by Jose Alamos
parent 6b6eb1cbd8
commit 0037210c5e
No known key found for this signature in database
GPG Key ID: F483EB800EF89DD9

View File

@ -16,15 +16,37 @@
#include <stdio.h>
#include "ot.h"
#include "openthread/thread.h"
static void _panid_handler(event_t *event);
static event_t event_panid = {
.handler = _panid_handler
};
static void _panid_handler(event_t *event)
{
(void) event;
/* It's safe here to call any OpenThread specific API, since this code runs
* in the same thread as the OpenThread tasklet handler */
/* Get PanID from OpenThread API */
uint16_t panid = otLinkGetPanId(openthread_get_instance());
printf("Current panid: 0x%x\n", panid);
}
int main(void)
{
puts("This a test for OpenThread");
/* Example of how to call OpenThread stack functions */
puts("Get PANID ");
uint16_t panid = 0;
uint8_t res = ot_call_command("panid", NULL, (void*)&panid);
printf("Current panid: 0x%x (res:%x)\n", panid, res);
puts("This is an OpenThread example");
/** OpenThread needs to synchronize otApi calls
* with its tasklet scheduler. This
* synchronization is handled by RIOT using an
* event queue (accessible via openthread_get_evq())
*/
event_post(openthread_get_evq(), &event_panid);
return 0;
}