diff --git a/tests/nimble_rpble_gnrc/Makefile b/tests/nimble_rpble_gnrc/Makefile new file mode 100644 index 0000000000..63f6d9e8cf --- /dev/null +++ b/tests/nimble_rpble_gnrc/Makefile @@ -0,0 +1,27 @@ +BOARD ?= nrf52dk +include ../Makefile.tests_common + +# include shell support +USEMODULE += shell +USEMODULE += shell_commands +USEMODULE += ps + +# Include GNRC and RPL +USEMODULE += gnrc_netdev_default +USEMODULE += gnrc_netif_single +USEMODULE += auto_init_gnrc_netif +USEMODULE += gnrc_ipv6_router_default +USEMODULE += gnrc_icmpv6_echo +USEMODULE += gnrc_rpl +USEMODULE += auto_init_gnrc_rpl + +# configure and use Nimble +USEMODULE += bluetil_addr +USEMODULE += nimble_rpble +NIMBLE_MAX_CONN := 3 + +DEVELHELP = 0 + +TEST_ON_CI_WHITELIST += nrf52dk + +include $(RIOTBASE)/Makefile.include diff --git a/tests/nimble_rpble_gnrc/Makefile.ci b/tests/nimble_rpble_gnrc/Makefile.ci new file mode 100644 index 0000000000..4079597a0f --- /dev/null +++ b/tests/nimble_rpble_gnrc/Makefile.ci @@ -0,0 +1,4 @@ +BOARD_INSUFFICIENT_MEMORY := \ + e104-bt5010a-tb \ + e104-bt5011a-tb \ + # diff --git a/tests/nimble_rpble_gnrc/main.c b/tests/nimble_rpble_gnrc/main.c new file mode 100644 index 0000000000..37ffa6526f --- /dev/null +++ b/tests/nimble_rpble_gnrc/main.c @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2018 Freie Universität Berlin + * + * 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. + */ + +/** + * @ingroup examples + * @{ + * + * @file + * @brief Example for showing 6LoWPAN over BLE using NimBLE and GNRC + * + * @author Hauke Petersen + * + * @} + */ + +#include +#include + +#include "msg.h" +#include "shell.h" +#include "nimble_rpble.h" +#include "net/bluetil/addr.h" + +#define MAIN_QUEUE_SIZE (8) +static msg_t _main_msg_queue[MAIN_QUEUE_SIZE]; + +static void _dump_evt(const char *text, const uint8_t *addr) +{ + printf("[ble_event] %s (", text); + bluetil_addr_print(addr); + printf(")\n"); +} + +static void _on_rpble_event(int handle, nimble_netif_event_t event, + const uint8_t *addr) +{ + (void)handle; + + switch (event) { + case NIMBLE_NETIF_CONNECTED_MASTER: + _dump_evt("parent selected", addr); + break; + case NIMBLE_NETIF_CONNECTED_SLAVE: + _dump_evt("child added", addr); + break; + case NIMBLE_NETIF_CLOSED_MASTER: + _dump_evt("parent lost", addr); + break; + case NIMBLE_NETIF_CLOSED_SLAVE: + _dump_evt("child lost", addr); + break; + default: + /* not interested in any other BLE events here */ + break; + } + +} + +int main(void) +{ + puts("RPL-over-BLE Example Application"); + + /* register the custom event handler */ + nimble_rpble_eventcb(_on_rpble_event); + + /* we need a message queue for the thread running the shell in order to + * receive potentially fast incoming networking packets (ping6) */ + msg_init_queue(_main_msg_queue, MAIN_QUEUE_SIZE); + + /* start shell */ + char line_buf[SHELL_DEFAULT_BUFSIZE]; + shell_run(NULL, line_buf, SHELL_DEFAULT_BUFSIZE); + + return 0; +}