diff --git a/Makefile.include b/Makefile.include index 3b8c41605..bcddedca8 100644 --- a/Makefile.include +++ b/Makefile.include @@ -86,7 +86,8 @@ endif MAKE_MAC_NULLMAC = 0 MAKE_MAC_CSMA = 1 MAKE_MAC_TSCH = 2 -MAKE_MAC_OTHER = 3 +MAKE_MAC_BLE = 3 +MAKE_MAC_OTHER = 4 # Make CSMA the default MAC MAKE_MAC ?= MAKE_MAC_CSMA @@ -106,6 +107,11 @@ ifeq ($(MAKE_MAC),MAKE_MAC_TSCH) CFLAGS += -DMAC_CONF_WITH_TSCH=1 endif +ifeq ($(MAKE_MAC),MAKE_MAC_BLE) + MODULES += os/net/mac/ble + CFLAGS += -DMAC_CONF_WITH_BLE=1 +endif + ifeq ($(MAKE_MAC),MAKE_MAC_OTHER) CFLAGS += -DMAC_CONF_WITH_OTHER=1 endif diff --git a/arch/cpu/cc26xx-cc13xx/Makefile.cc26xx-cc13xx b/arch/cpu/cc26xx-cc13xx/Makefile.cc26xx-cc13xx index 534151e42..7c6ab55b3 100644 --- a/arch/cpu/cc26xx-cc13xx/Makefile.cc26xx-cc13xx +++ b/arch/cpu/cc26xx-cc13xx/Makefile.cc26xx-cc13xx @@ -35,7 +35,6 @@ CONTIKI_CPU_SOURCEFILES += slip-arch.c slip.c cc26xx-uart.c lpm.c CONTIKI_CPU_SOURCEFILES += gpio-interrupt.c oscillators.c CONTIKI_CPU_SOURCEFILES += rf-core.c rf-ble.c ieee-mode.c CONTIKI_CPU_SOURCEFILES += ble-cc2650.c ble-hal-cc26xx.c ble-addr.c rf-ble-cmd.c -CONTIKI_CPU_SOURCEFILES += ble-l2cap.c CONTIKI_CPU_SOURCEFILES += random.c soc-trng.c int-master.c DEBUG_IO_SOURCEFILES += dbg-printf.c dbg-snprintf.c dbg-sprintf.c strformat.c diff --git a/arch/cpu/cc26xx-cc13xx/ble-addr.c b/arch/cpu/cc26xx-cc13xx/ble-addr.c index 91f665b01..7617133cc 100644 --- a/arch/cpu/cc26xx-cc13xx/ble-addr.c +++ b/arch/cpu/cc26xx-cc13xx/ble-addr.c @@ -27,16 +27,21 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * - * Author: Michael Spoerk + */ +/** + * \file + * Driver for the retrieval of an BLE address from flash * + * \author + * Michael Spoerk */ /*---------------------------------------------------------------------------*/ -#include "../ble-addr.h" - #include "contiki-conf.h" #include "net/linkaddr.h" #include +#include "ble-addr.h" +#include "os/dev/ble-hal.h" /*---------------------------------------------------------------------------*/ void ble_addr_cpy_to(uint8_t *dst) diff --git a/arch/cpu/cc26xx-cc13xx/ble-addr.h b/arch/cpu/cc26xx-cc13xx/ble-addr.h index b5b7c4ed5..9069ff9a7 100644 --- a/arch/cpu/cc26xx-cc13xx/ble-addr.h +++ b/arch/cpu/cc26xx-cc13xx/ble-addr.h @@ -27,8 +27,13 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * - * Author: Michael Spoerk + */ +/** + * \file + * Driver for the retrieval of an BLE address from flash * + * \author + * Michael Spoerk */ /*---------------------------------------------------------------------------*/ #ifndef BLE_ADDR_H_ @@ -40,21 +45,35 @@ /* primary BLE address location */ #define BLE_ADDR_LOCATION 0x500012E8 -/* BLE device address size */ -#define BLE_ADDR_SIZE 6 - -/*---------------------------------------------------------------------------*/ -/* Type of BLE device address */ -typedef enum { - BLE_ADDR_TYPE_PUBLIC, - BLE_ADDR_TYPE_RANDOM -} ble_addr_type_t; - /*---------------------------------------------------------------------------*/ +/** + * \brief Copy the node's factory BLE address to a destination memory area + * \param dst A pointer to the destination area where the BLE address is to be + * written + * + * This function will copy 6 bytes and it will invert byte order in + * the process. The factory address on devices is normally little-endian, + * therefore you should expect dst to store the address in a big-endian order. + */ void ble_addr_cpy_to(uint8_t *dst); +/*---------------------------------------------------------------------------*/ +/** + * \brief Copy the node's BLE address to a destination memory area and converts + * it into a EUI64 address in the process + * \param dst A pointer to the destination area where the EUI64 address is to be + * written + * \param src A pointer to the BLE address that is to be copied + */ void ble_addr_to_eui64(uint8_t *dst, uint8_t *src); +/*---------------------------------------------------------------------------*/ +/** + * \brief Copy the node's EUI64 address that is based on its factory BLE address + * to a destination memory area + * \param dst A pointer to the destination area where the EUI64 address is to be + * written + */ void ble_eui64_addr_cpy_to(uint8_t *dst); /*---------------------------------------------------------------------------*/ diff --git a/arch/cpu/cc26xx-cc13xx/rf-core/README.md b/arch/cpu/cc26xx-cc13xx/rf-core/README.md index ebc565b69..247626e2d 100644 --- a/arch/cpu/cc26xx-cc13xx/rf-core/README.md +++ b/arch/cpu/cc26xx-cc13xx/rf-core/README.md @@ -50,7 +50,6 @@ To enable IPv6 over BLE, the project conf needs to contain: #define QUEUEBUF_CONF_NUM 1 #define UIP_CONF_BUFFER_SIZE 1280 -#define CC26XX_CONF_RADIO_MODE CC26XX_RADIO_MODE_BLE #define NETSTACK_CONF_RADIO ble_cc2650_driver #define NETSTACK_CONF_MAC ble_l2cap_driver diff --git a/arch/cpu/cc26xx-cc13xx/rf-core/ble-cc2650.c b/arch/cpu/cc26xx-cc13xx/rf-core/ble-cc2650.c index 1cc9ed7d9..6c4d82f8a 100644 --- a/arch/cpu/cc26xx-cc13xx/rf-core/ble-cc2650.c +++ b/arch/cpu/cc26xx-cc13xx/rf-core/ble-cc2650.c @@ -36,11 +36,10 @@ * Michael Spoerk */ /*---------------------------------------------------------------------------*/ - -#include -#include #include "contiki.h" #include "dev/radio.h" +#include "os/dev/ble-hal.h" +#include "rf-core/ble-hal/ble-hal-cc26xx.h" /*---------------------------------------------------------------------------*/ #include "sys/log.h" #define LOG_MODULE "RADIO" diff --git a/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/ble-hal-cc26xx.c b/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/ble-hal-cc26xx.c index 086ebb8a7..fe9d6e0c0 100644 --- a/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/ble-hal-cc26xx.c +++ b/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/ble-hal-cc26xx.c @@ -36,13 +36,13 @@ * Michael Spoerk */ /*---------------------------------------------------------------------------*/ -#include "ble-hal.h" -#include "rf-core/ble-hal/rf-ble-cmd.h" + #include "lpm.h" #include "sys/rtimer.h" #include "sys/process.h" +#include "os/dev/ble-hal.h" #include "dev/oscillators.h" #include "ble-addr.h" @@ -62,6 +62,7 @@ #include +#include "rf-core/ble-hal/rf-ble-cmd.h" /*---------------------------------------------------------------------------*/ #include "sys/log.h" #define LOG_MODULE "BLE-RADIO" diff --git a/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/ble-hal-cc26xx.h b/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/ble-hal-cc26xx.h index 7f231e4be..48ca4fd8e 100644 --- a/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/ble-hal-cc26xx.h +++ b/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/ble-hal-cc26xx.h @@ -40,7 +40,7 @@ #ifndef BLE_HAL_CC26XX_H_ #define BLE_HAL_CC26XX_H_ -#include "ble-hal.h" +#include "os/dev/ble-hal.h" extern const struct ble_hal_driver ble_hal; diff --git a/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/rf-ble-cmd.h b/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/rf-ble-cmd.h index 526166cda..42944eaab 100644 --- a/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/rf-ble-cmd.h +++ b/arch/cpu/cc26xx-cc13xx/rf-core/ble-hal/rf-ble-cmd.h @@ -40,8 +40,8 @@ #ifndef RF_BLE_CMD_H_ #define RF_BLE_CMD_H_ +#include "os/dev/ble-hal.h" #include "../../ble-addr.h" -#include "ble-hal.h" #include "rf_common_cmd.h" #define RF_BLE_CMD_OK 1 diff --git a/examples/ble/ipv6-client/Makefile b/examples/ble/ipv6-client/Makefile index 589743721..015e2a9bf 100644 --- a/examples/ble/ipv6-client/Makefile +++ b/examples/ble/ipv6-client/Makefile @@ -6,5 +6,7 @@ all: $(CONTIKI_PROJECT) upload: srfprog -t 'soc(XDS-L1000130)' -e all -p 'epfw(0)' -v rb -f $(CONTIKI_PROJECT).hex -a 0x0 +MAKE_MAC = MAKE_MAC_BLE +MAKE_NET = MAKE_NET_IPV6 CONTIKI = ../../.. include $(CONTIKI)/Makefile.include \ No newline at end of file diff --git a/examples/ble/ipv6-client/client.c b/examples/ble/ipv6-client/client.c index 04281a0a5..e41e698df 100644 --- a/examples/ble/ipv6-client/client.c +++ b/examples/ble/ipv6-client/client.c @@ -42,10 +42,10 @@ #include "net/ipv6/uip-icmp6.h" -#include "ble-hal.h" - #include #include + +#include "os/dev/ble-hal.h" /*---------------------------------------------------------------------------*/ //#define SERVER_IP "::" #define SERVER_IP "fe80::ba27:ebff:fe40:9b06" diff --git a/examples/ble/ipv6-client/project-conf.h b/examples/ble/ipv6-client/project-conf.h index 76f174f2f..114565066 100644 --- a/examples/ble/ipv6-client/project-conf.h +++ b/examples/ble/ipv6-client/project-conf.h @@ -47,10 +47,7 @@ #define QUEUEBUF_CONF_NUM 1 #define UIP_CONF_BUFFER_SIZE 1280 -#define CC26XX_CONF_RADIO_MODE RADIO_MODE_BLE #define NETSTACK_CONF_RADIO ble_cc2650_driver -#define MAKE_MAC MAKE_MAC_OTHER -#define NETSTACK_CONF_MAC ble_l2cap_driver #define LOG_CONF_LEVEL_MAC LOG_LEVEL_INFO #define LOG_CONF_LEVEL_6LOWPAN LOG_LEVEL_WARN @@ -61,9 +58,6 @@ #define BLE_CONF_DEVICE_NAME "TI CC26xx device" #define BLE_CONF_ADV_INTERVAL 25 -#define MAKE_NET MAKE_NET_IPV6 -#define MAKE_ROUTING MAKE_ROUTING_NONE - /*/ * 6LoWPAN settings * / */ #define SICSLOWPAN_CONF_MAC_MAX_PAYLOAD 1280 #define SICSLOWPAN_CONF_COMPRESSION SICSLOWPAN_COMPRESSION_6LORH diff --git a/arch/cpu/cc26xx-cc13xx/dev/ble-hal.h b/os/dev/ble-hal.h similarity index 97% rename from arch/cpu/cc26xx-cc13xx/dev/ble-hal.h rename to os/dev/ble-hal.h index 74aef1585..ce5f5e8b1 100644 --- a/arch/cpu/cc26xx-cc13xx/dev/ble-hal.h +++ b/os/dev/ble-hal.h @@ -41,8 +41,10 @@ #define BLE_HAL_H_ #include -#include "ble-addr.h" +/*---------------------------------------------------------------------------*/ +/* BLE device address size */ +#define BLE_ADDR_SIZE 6 /*---------------------------------------------------------------------------*/ /* Advertisement channel definitions */ #define BLE_ADV_DATA_LEN 31 @@ -101,6 +103,13 @@ typedef enum { BLE_RESULT_ERROR } ble_result_t; +/*---------------------------------------------------------------------------*/ +/* Type of BLE device address */ +typedef enum { + BLE_ADDR_TYPE_PUBLIC, + BLE_ADDR_TYPE_RANDOM +} ble_addr_type_t; + /*---------------------------------------------------------------------------*/ /* Advertising modes of BLE */ typedef enum { diff --git a/arch/cpu/cc26xx-cc13xx/rf-core/ble-l2cap.c b/os/net/mac/ble/ble-l2cap.c similarity index 90% rename from arch/cpu/cc26xx-cc13xx/rf-core/ble-l2cap.c rename to os/net/mac/ble/ble-l2cap.c index d3f2a0217..f12fbb369 100644 --- a/arch/cpu/cc26xx-cc13xx/rf-core/ble-l2cap.c +++ b/os/net/mac/ble/ble-l2cap.c @@ -38,103 +38,27 @@ */ /*---------------------------------------------------------------------------*/ -#include "ble-hal.h" +#include "net/mac/ble/ble-l2cap.h" + #include "net/packetbuf.h" #include "net/netstack.h" - #include "lib/memb.h" #include "lib/list.h" #include + +#include "../../../dev/ble-hal.h" /*---------------------------------------------------------------------------*/ #include "sys/log.h" #define LOG_MODULE "L2CAP" #define LOG_LEVEL LOG_LEVEL_MAC /*---------------------------------------------------------------------------*/ -/* device name used for BLE advertisement */ -#ifdef BLE_CONF_DEVICE_NAME -#define BLE_DEVICE_NAME BLE_CONF_DEVICE_NAME -#else -#define BLE_DEVICE_NAME "BLE device name" -#endif - -/* BLE advertisement in milliseconds */ -#ifdef BLE_CONF_ADV_INTERVAL -#define BLE_ADV_INTERVAL BLE_CONF_ADV_INTERVAL -#else -#define BLE_ADV_INTERVAL 50 -#endif - -#define BLE_SLAVE_CONN_INTERVAL_MIN 0x0150 -#define BLE_SLAVE_CONN_INTERVAL_MAX 0x01F0 -#define L2CAP_SIGNAL_CHANNEL 0x0005 -#define L2CAP_FLOW_CHANNEL 0x0041 -#define L2CAP_CODE_CONN_UPDATE_REQ 0x12 -#define L2CAP_CODE_CONN_UPDATE_RSP 0x13 -#define L2CAP_CODE_CONN_REQ 0x14 -#define L2CAP_CODE_CONN_RSP 0x15 -#define L2CAP_CODE_CREDIT 0x16 -#define L2CAP_IPSP_PSM 0x0023 - -/* the maximum MTU size of the L2CAP channel */ -#ifdef BLE_L2CAP_CONF_NODE_MTU -#define BLE_L2CAP_NODE_MTU BLE_L2CAP_CONF_NODE_MTU -#else -#define BLE_L2CAP_NODE_MTU 1280 -#endif - -/* the max. supported L2CAP fragment length */ -#ifdef BLE_L2CAP_CONF_NODE_FRAG_LEN -#define BLE_L2CAP_NODE_FRAG_LEN BLE_L2CAP_CONF_NODE_FRAG_LEN -#else -#ifdef BLE_MODE_CONF_CONN_MAX_PACKET_SIZE -#define BLE_L2CAP_NODE_FRAG_LEN BLE_MODE_CONF_CONN_MAX_PACKET_SIZE -#else -#define BLE_L2CAP_NODE_FRAG_LEN 256 -#endif -#endif - -#define L2CAP_CREDIT_NEW (BLE_L2CAP_NODE_MTU / BLE_L2CAP_NODE_FRAG_LEN) -#define L2CAP_CREDIT_THRESHOLD 2 - -#define L2CAP_INIT_INTERVAL (2 * CLOCK_SECOND) - -/* BLE connection interval in milliseconds */ -#ifdef BLE_CONF_CONNECTION_INTERVAL -#define CONNECTION_INTERVAL_MS BLE_CONF_CONNECTION_INTERVAL -#else -#define CONNECTION_INTERVAL_MS 125 -#endif - -/* BLE slave latency */ -#ifdef BLE_CONF_CONNECTION_SLAVE_LATENCY -#define CONNECTION_SLAVE_LATENCY BLE_CONF_CONNECTION_SLAVE_LATENCY -#else -#define CONNECTION_SLAVE_LATENCY 0 -#endif - -/* BLE supervision timeout */ -#define CONNECTION_TIMEOUT 42 - #define MS_TO_CLOCK_SECONDS(X) ((int)(((double)((X)*CLOCK_SECOND)) / 1000.0)) - -#define L2CAP_FIRST_HEADER_SIZE 6 -#define L2CAP_SUBSEQ_HEADER_SIZE 4 /*---------------------------------------------------------------------------*/ /* BLE controller */ /* public device address of BLE controller */ static uint8_t ble_addr[BLE_ADDR_SIZE]; /*---------------------------------------------------------------------------*/ -#if UIP_CONF_ROUTER -#ifdef BLE_MODE_CONF_MAX_CONNECTIONS -#define L2CAP_CHANNELS BLE_MODE_CONF_MAX_CONNECTIONS -#else -#define L2CAP_CHANNELS 1 -#endif -#else -#define L2CAP_CHANNELS 1 -#endif -/*---------------------------------------------------------------------------*/ /* L2CAP fragmentation buffers and utilities */ typedef struct { /* L2CAP Service Data Unit (SDU) (= packet data)*/ diff --git a/os/net/mac/ble/ble-l2cap.h b/os/net/mac/ble/ble-l2cap.h new file mode 100644 index 000000000..73dfa18a5 --- /dev/null +++ b/os/net/mac/ble/ble-l2cap.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2017, Graz University of Technology + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * MAC layer that implements BLE L2CAP credit-based flow control + * channels to support IPv6 over BLE (RFC 7668) + * + * \author + * Michael Spoerk + */ +/*---------------------------------------------------------------------------*/ +#ifndef BLE_L2CAP_H_ +#define BLE_L2CAP_H_ + +#include "contiki.h" +#include "net/mac/mac.h" +#include "dev/radio.h" +/*---------------------------------------------------------------------------*/ +/* device name used for BLE advertisement */ +#ifdef BLE_CONF_DEVICE_NAME +#define BLE_DEVICE_NAME BLE_CONF_DEVICE_NAME +#else +#define BLE_DEVICE_NAME "BLE device name" +#endif + +/* BLE advertisement in milliseconds */ +#ifdef BLE_CONF_ADV_INTERVAL +#define BLE_ADV_INTERVAL BLE_CONF_ADV_INTERVAL +#else +#define BLE_ADV_INTERVAL 50 +#endif + +#define BLE_SLAVE_CONN_INTERVAL_MIN 0x0150 +#define BLE_SLAVE_CONN_INTERVAL_MAX 0x01F0 +#define L2CAP_SIGNAL_CHANNEL 0x0005 +#define L2CAP_FLOW_CHANNEL 0x0041 +#define L2CAP_CODE_CONN_UPDATE_REQ 0x12 +#define L2CAP_CODE_CONN_UPDATE_RSP 0x13 +#define L2CAP_CODE_CONN_REQ 0x14 +#define L2CAP_CODE_CONN_RSP 0x15 +#define L2CAP_CODE_CREDIT 0x16 +#define L2CAP_IPSP_PSM 0x0023 + +/* the maximum MTU size of the L2CAP channel */ +#ifdef BLE_L2CAP_CONF_NODE_MTU +#define BLE_L2CAP_NODE_MTU BLE_L2CAP_CONF_NODE_MTU +#else +#define BLE_L2CAP_NODE_MTU 1280 +#endif + +/* the max. supported L2CAP fragment length */ +#ifdef BLE_L2CAP_CONF_NODE_FRAG_LEN +#define BLE_L2CAP_NODE_FRAG_LEN BLE_L2CAP_CONF_NODE_FRAG_LEN +#else +#ifdef BLE_MODE_CONF_CONN_MAX_PACKET_SIZE +#define BLE_L2CAP_NODE_FRAG_LEN BLE_MODE_CONF_CONN_MAX_PACKET_SIZE +#else +#define BLE_L2CAP_NODE_FRAG_LEN 256 +#endif +#endif + +#define L2CAP_CREDIT_NEW (BLE_L2CAP_NODE_MTU / BLE_L2CAP_NODE_FRAG_LEN) +#define L2CAP_CREDIT_THRESHOLD 2 + +#define L2CAP_INIT_INTERVAL (2 * CLOCK_SECOND) + +/* BLE connection interval in milliseconds */ +#ifdef BLE_CONF_CONNECTION_INTERVAL +#define CONNECTION_INTERVAL_MS BLE_CONF_CONNECTION_INTERVAL +#else +#define CONNECTION_INTERVAL_MS 125 +#endif + +/* BLE slave latency */ +#ifdef BLE_CONF_CONNECTION_SLAVE_LATENCY +#define CONNECTION_SLAVE_LATENCY BLE_CONF_CONNECTION_SLAVE_LATENCY +#else +#define CONNECTION_SLAVE_LATENCY 0 +#endif + +/* BLE supervision timeout */ +#define CONNECTION_TIMEOUT 42 + +#define L2CAP_FIRST_HEADER_SIZE 6 +#define L2CAP_SUBSEQ_HEADER_SIZE 4 + +#if UIP_CONF_ROUTER +#ifdef BLE_MODE_CONF_MAX_CONNECTIONS +#define L2CAP_CHANNELS BLE_MODE_CONF_MAX_CONNECTIONS +#else +#define L2CAP_CHANNELS 1 +#endif +#else +#define L2CAP_CHANNELS 1 +#endif + +extern const struct mac_driver ble_l2cap_driver; + +#endif /* BLE_L2CAP_H_ */ diff --git a/os/net/netstack.h b/os/net/netstack.h index 4251ef5e9..1e4921b61 100644 --- a/os/net/netstack.h +++ b/os/net/netstack.h @@ -68,6 +68,8 @@ #define NETSTACK_MAC csma_driver #elif MAC_CONF_WITH_TSCH #define NETSTACK_MAC tschmac_driver +#elif MAC_CONF_WITH_BLE +#define NETSTACK_MAC ble_l2cap_driver #else #error Unknown MAC configuration #endif