From fc4fd6222fc5ca0bb843dc2bb0e7e55335138802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Ignacio=20Alamos?= <jialamos@uc.cl> Date: Thu, 1 Jun 2017 11:48:23 -0400 Subject: [PATCH] pkg/openthread: Add tests --- tests/openthread/Makefile | 53 ++++++++++++++++++++++++++++++++++++++ tests/openthread/README.md | 36 ++++++++++++++++++++++++++ tests/openthread/main.c | 34 ++++++++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 tests/openthread/Makefile create mode 100644 tests/openthread/README.md create mode 100644 tests/openthread/main.c diff --git a/tests/openthread/Makefile b/tests/openthread/Makefile new file mode 100644 index 0000000000..f547007f75 --- /dev/null +++ b/tests/openthread/Makefile @@ -0,0 +1,53 @@ +APPLICATION = openthread + +# If no BOARD is found in the environment, use this default: +BOARD ?= samr21-xpro + +BOARD_WHITELIST := samr21-xpro iotlab-m3 fox iotlab-a8-m3 + +# This has to be the absolute path to the RIOT base directory: +RIOTBASE ?= $(CURDIR)/../.. + +# Comment this out to disable code in RIOT that does safety checking +# which is not needed in a production environment but helps in the +# development process: +CFLAGS += -DDEVELHELP -Wall + +# Change this to 0 show compiler invocation lines by default: +QUIET ?= 1 + +USEPKG += openthread +USEMODULE += openthread_contrib +USEMODULE += libmbedcrypto +USEMODULE += libopenthread +USEMODULE += libopenthread-cli +USEMODULE += xtimer + +ifneq (,$(filter samr21-xpro,$(BOARD))) + DRIVER := at86rf233 +endif +ifneq (,$(filter iotlab-m3 fox iotlab-a8-m3,$(BOARD))) + DRIVER := at86rf231 +endif + +ifneq (,$(filter at86rf2%,$(DRIVER))) + FEATURES_REQUIRED = periph_spi + FEATURES_REQUIRED = periph_gpio +endif + +USEMODULE += $(DRIVER) + +USEMODULE += random +USEMODULE += shell +USEMODULE += shell_commands +USEMODULE += ps +USEMODULE += ipv6_addr + +#required for C++ compiling +CXXEXFLAGS += -fno-rtti +USEMODULE += cpp11-compat + +#Define PANID and CHANNEL used by default +#CFLAGS += -DOPENTHREAD_PANID=0xbeef -DOPENTHREAD_CHANNEL=11 + +include $(RIOTBASE)/Makefile.include diff --git a/tests/openthread/README.md b/tests/openthread/README.md new file mode 100644 index 0000000000..25a79ef83c --- /dev/null +++ b/tests/openthread/README.md @@ -0,0 +1,36 @@ +## OpenThread on RIOT + +This test demonstrates the [OpenThread](https://github.com/openthread/openthread) stack running on RIOT. When flashed, +it will initialize the OpenThread Command Line Interface for interacting with the stack. + +## Quick usage + +To test OpenThread on RIOT, you can do the following: + +1. Flash nodes with `make BOARD=<target> clean all flash` +2. Write `panid 0x1234`, `ifconfig up` then `thread start` on one node. +3. Check the state of the node with `state`. In the beggining should be `detached`, but after some seconds it should + become `leader` +4. Write `panid 0x1234`, `ifconfig up` then `thread start` on another node. +The second node should become `child` or `router` if there's a leader. +5. Get the mesh IP address of a node with `ipaddr`. + +``` + ipaddr + fdde:ad00:beef::ff:fe00:8000 + fe80::ff:fe00:8000 + fdde:ad00:beef:0:946a:c722:a5d9:8481 + fe80::3984:f4eb:d182:5dae +``` + + Addresses starting with `fd` are mesh-local, and addresses starting with `fe80` are link-local. + Mesh-local address types that contain `ff:fe00` are classified as Router Locator (RLOC). Mesh-local address types + that don't contain `ff:fe00` are Endpoint Identifies (EID). +6. Ping from another node to a mesh-local address with `ping fdde:ad00:beef:0:946a:c722:a5d9:8481`. +7. You can try IEEE802.15.4 scan with `scan` command +8. You can also check other commands with `help` +9. Enjoy! + +## Note + +See the [OpenThread CLI Reference](https://github.com/openthread/openthread/blob/master/src/cli/README.md) for more information about OpenThread CLI commands diff --git a/tests/openthread/main.c b/tests/openthread/main.c new file mode 100644 index 0000000000..591abb3cef --- /dev/null +++ b/tests/openthread/main.c @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2017 Baptiste CLENET + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @file + * @brief OpenThread test application + * + * @author Baptiste Clenet <baptiste.clenet@xsoen.com> + */ + +#include <stdio.h> + +#include "net/ipv6/addr.h" +#include "openthread/ip6.h" +#include "openthread/thread.h" +#include "openthread/udp.h" +#include "ot.h" +#include "shell.h" +#include "shell_commands.h" +int main(void) +{ + printf("Get PANID\n"); + uint16_t panid = 0; + uint8_t res = ot_call_command("panid", NULL, (void*)&panid); + printf("Current panid: 0x%x (res:%x)\n", panid, res); + + openthread_uart_run(); + return 0; +} -- GitLab