diff --git a/tests/nimble_rpble_gnrc_ext/Makefile b/tests/nimble_rpble_gnrc_ext/Makefile new file mode 100644 index 0000000000..d7b7d01194 --- /dev/null +++ b/tests/nimble_rpble_gnrc_ext/Makefile @@ -0,0 +1,30 @@ +BOARD ?= nrf52dk +include ../Makefile.tests_common + +# include shell support +USEMODULE += shell +USEMODULE += shell_commands +USEMODULE += ps + +# Enable single interface optimization. +# Remove this if more than one interface is present +USEMODULE += gnrc_netif_single +# Include GNRC and RPL +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_ext +FEATURES_OPTIONAL += ble_phy_2mbit +FEATURES_OPTIONAL += ble_phy_coded +NIMBLE_MAX_CONN = 3 + +DEVELHELP = 0 + +TEST_ON_CI_WHITELIST += nrf52dk nrf52840dk + +include $(RIOTBASE)/Makefile.include diff --git a/tests/nimble_rpble_gnrc_ext/Makefile.ci b/tests/nimble_rpble_gnrc_ext/Makefile.ci new file mode 100644 index 0000000000..4079597a0f --- /dev/null +++ b/tests/nimble_rpble_gnrc_ext/Makefile.ci @@ -0,0 +1,4 @@ +BOARD_INSUFFICIENT_MEMORY := \ + e104-bt5010a-tb \ + e104-bt5011a-tb \ + # diff --git a/tests/nimble_rpble_gnrc_ext/main.c b/tests/nimble_rpble_gnrc_ext/main.c new file mode 100644 index 0000000000..7428966008 --- /dev/null +++ b/tests/nimble_rpble_gnrc_ext/main.c @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2021 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 Test for using rpble in its extended mode + * + * @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 (ping) */ + 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; +}