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

pkg: add support for NimBLE as package

This commit is contained in:
Hauke Petersen 2018-05-24 11:36:20 +02:00
parent e99010ac3e
commit 24a7f26eee
19 changed files with 323 additions and 0 deletions

32
pkg/nimble/Makefile Normal file
View File

@ -0,0 +1,32 @@
PKG_NAME = nimble
PKG_URL = https://github.com/apache/mynewt-nimble.git
PKG_VERSION = 050a7108cf56546554b4162f0600ab3b2d7e173f
PKG_LICENSE = Apache-2.0
TDIR = $(RIOTPKG)/$(PKG_NAME)
PDIR = $(PKG_BUILDDIR)
# As of now, NimBLE does not build without warnings for -Wextra, so we disable
# that flag for this package. Will hopefully be fixed some time in the future.
CFLAGS += -Wno-extra
.PHONY: all
all: git-download
"$(MAKE)" -C $(PDIR)/ext/tinycrypt/src/ -f $(TDIR)/ext.tinycrypt.mk
"$(MAKE)" -C $(PDIR)/nimble/src -f $(TDIR)/nimble.mk
"$(MAKE)" -C $(PDIR)/nimble/host/src/ -f $(TDIR)/nimble.host.mk
"$(MAKE)" -C $(PDIR)/nimble/host/services/gap/src/ -f $(TDIR)/service.gap.mk
"$(MAKE)" -C $(PDIR)/nimble/host/services/gatt/src/ -f $(TDIR)/service.gatt.mk
"$(MAKE)" -C $(PDIR)/nimble/host/util/src/ -f $(TDIR)/nimble.host.util.mk
"$(MAKE)" -C $(PDIR)/nimble/host/store/ram/src/ -f $(TDIR)/nimble.host.store.ram.mk
"$(MAKE)" -C $(PDIR)/porting/nimble/src/ -f $(TDIR)/porting.nimble.mk
"$(MAKE)" -C $(PDIR)/porting/npl/riot/src/ -f $(TDIR)/porting.npl.riot.mk
"$(MAKE)" -C $(PDIR)/nimble/transport/ram/src/ -f $(TDIR)/transport.ram.mk
"$(MAKE)" -C $(PDIR)/nimble/controller/src/ -f $(TDIR)/controller.mk
"$(MAKE)" -C $(PDIR)/nimble/drivers/nrf52/src/ -f $(TDIR)/drivers.nrf52.mk
"$(MAKE)" -C $(TDIR)/contrib/
include $(RIOTBASE)/pkg/pkg.mk

24
pkg/nimble/Makefile.dep Normal file
View File

@ -0,0 +1,24 @@
# RIOT specific dependencies
USEMODULE += posix_semaphore
USEMODULE += event_callback
USEMODULE += xtimer
# glue code
USEMODULE += nimble_riot_contrib
# nimble sub-modules that we build
USEMODULE += nimble_tinycrypt
USEMODULE += nimble_host
USEMODULE += nimble_host_services_gap
USEMODULE += nimble_host_services_gatt
USEMODULE += nimble_host_util
USEMODULE += nimble_host_store_ram
USEMODULE += nimble_porting_nimble
USEMODULE += nimble_npl_riot
# nimble controller specific sub-modules
USEMODULE += nimble_controller
USEMODULE += nimble_transport_ram
ifeq (nrf52,$(CPU_FAM))
USEMODULE += nimble_drivers_nrf52
endif

View File

@ -0,0 +1,34 @@
NIMIBASE = -I$(PKGDIRBASE)/nimble
# include RIOT glue code headers
INCLUDES += -I$(RIOTPKG)/nimble/contrib/include
# include tinycrypt headers
INCLUDES += $(NIMIBASE)/ext/tinycrypt/include
# include the RIOT NPL headers
INCLUDES += $(NIMIBASE)/porting/npl/riot/include
# include nimble controller headers
INCLUDES += $(NIMIBASE)/nimble/transport/ram/include
INCLUDES += $(NIMIBASE)/nimble/controller/include
INCLUDES += $(NIMIBASE)/nimble/drivers/nrf52/include
# include nimble host headers
INCLUDES += $(NIMIBASE)/nimble/include
INCLUDES += $(NIMIBASE)/nimble/host/include
INCLUDES += $(NIMIBASE)/nimble/host/services/ans/include
INCLUDES += $(NIMIBASE)/nimble/host/services/bas/include
INCLUDES += $(NIMIBASE)/nimble/host/services/bleuart/include
INCLUDES += $(NIMIBASE)/nimble/host/services/gap/include
INCLUDES += $(NIMIBASE)/nimble/host/services/gatt/include
INCLUDES += $(NIMIBASE)/nimble/host/services/ias/include
INCLUDES += $(NIMIBASE)/nimble/host/services/lls/include
INCLUDES += $(NIMIBASE)/nimble/host/services/tps/include
INCLUDES += $(NIMIBASE)/nimble/host/store/ram/include
INCLUDES += $(NIMIBASE)/nimble/host/util/include
INCLUDES += $(NIMIBASE)/porting/nimble/include
# set environment
CFLAGS += -DNIMBLE_CFG_CONTROLLER=1
CFLAGS += -DMYNEWT_VAL_OS_CPUTIME_FREQ=32768

View File

@ -0,0 +1,3 @@
MODULE = nimble_riot_contrib
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,45 @@
/*
* 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 pkg_nimble
* @{
*
* @file
* @brief Initialization of the nimble controller
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
*
* @}
*/
#include "thread.h"
#include "nimble_riot.h"
#include "nimble/nimble_port.h"
#ifdef CPU_FAM_NRF52
#include "nrf_clock.h"
#endif
static char stack[THREAD_STACKSIZE_DEFAULT];
void nimble_riot_controller_init(void)
{
#ifdef CPU_FAM_NRF52
clock_start_lf();
#endif
/*
* Create task where NimBLE LL will run. This one is required as LL has its
* own event queue and should have highest priority.
*/
thread_create(stack, sizeof(stack), NIMBLE_CONTROLLER_PRIO, 0,
(thread_task_func_t)nimble_port_ll_task_func,
NULL, "nimble_ctrl");
}

View File

@ -0,0 +1,45 @@
/*
* 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 pkg_nimble
* @{
*
* @file
* @brief RIOT specific glue functions for integrating NimBLE
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
*/
#ifndef NIMBLE_RIOT_H
#define NIMBLE_RIOT_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Define the priority used for NimBLE's controller thread
*
* This should be as high as possible.
*/
#ifndef NIMBLE_CONTROLLER_PRIO
#define NIMBLE_CONTROLLER_PRIO (0)
#endif
/**
* @brief Starts a thread running NimBLE's controller
*/
void nimble_riot_controller_init(void);
#ifdef __cplusplus
}
#endif
#endif /* NIMBLE_RIOT_H */
/** @} */

19
pkg/nimble/controller.mk Normal file
View File

@ -0,0 +1,19 @@
MODULE = nimble_controller
SRC += ble_ll_sched.c
SRC += ble_ll_xcvr.c
SRC += ble_ll_whitelist.c
SRC += ble_ll_ctrl.c
SRC += ble_ll_hci.c
SRC += ble_ll_supp_cmd.c
SRC += ble_ll_adv.c
SRC += ble_ll_conn.c
SRC += ble_ll_resolv.c
SRC += ble_ll_conn_hci.c
SRC += ble_ll_rand.c
SRC += ble_ll.c
SRC += ble_ll_scan.c
SRC += ble_ll_dtm.c
SRC += ble_ll_hci_ev.c
include $(RIOTBASE)/Makefile.base

10
pkg/nimble/doc.txt Normal file
View File

@ -0,0 +1,10 @@
/**
* @defgroup pkg_nimble NimBLE BLE stack
* @ingroup pkg
* @ingroup net
* @brief RIOT port of the NimBLE BLE stack
*
* This package includes the NimBLE BLE stack to RIOT.
*
* @see https://github.com/apache/mynewt-nimble
*/

View File

@ -0,0 +1,6 @@
MODULE = nimble_drivers_nrf52
SRC += ble_hw.c
SRC += ble_phy.c
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,10 @@
MODULE = nimble_tinycrypt
SRC += aes_decrypt.c
SRC += aes_encrypt.c
SRC += cmac_mode.c
SRC += ecc.c
SRC += ecc_dh.c
SRC += utils.c
include $(RIOTBASE)/Makefile.base

44
pkg/nimble/nimble.host.mk Normal file
View File

@ -0,0 +1,44 @@
MODULE = nimble_host
SRC += ble_att.c
SRC += ble_att_clt.c
SRC += ble_att_cmd.c
SRC += ble_att_svr.c
SRC += ble_eddystone.c
SRC += ble_gap.c
SRC += ble_gattc.c
SRC += ble_gatts.c
SRC += ble_hs_adv.c
SRC += ble_hs_atomic.c
SRC += ble_hs.c
SRC += ble_hs_cfg.c
SRC += ble_hs_conn.c
SRC += ble_hs_dbg.c
SRC += ble_hs_flow.c
SRC += ble_hs_hci.c
SRC += ble_hs_hci_cmd.c
SRC += ble_hs_hci_evt.c
SRC += ble_hs_hci_util.c
SRC += ble_hs_id.c
SRC += ble_hs_log.c
SRC += ble_hs_mbuf.c
SRC += ble_hs_mqueue.c
SRC += ble_hs_misc.c
SRC += ble_hs_pvcy.c
SRC += ble_hs_startup.c
SRC += ble_ibeacon.c
SRC += ble_l2cap.c
SRC += ble_l2cap_coc.c
SRC += ble_l2cap_sig.c
SRC += ble_l2cap_sig_cmd.c
SRC += ble_monitor.c
SRC += ble_sm_alg.c
SRC += ble_sm.c
SRC += ble_sm_cmd.c
SRC += ble_sm_lgcy.c
SRC += ble_sm_sc.c
SRC += ble_store.c
SRC += ble_store_util.c
SRC += ble_uuid.c
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,5 @@
MODULE = nimble_host_store_ram
SRC += ble_store_ram.c
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,5 @@
MODULE = nimble_host_util
SRC += addr.c
include $(RIOTBASE)/Makefile.base

5
pkg/nimble/nimble.mk Normal file
View File

@ -0,0 +1,5 @@
MODULE = nimble
SRC += hci_common.c
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,16 @@
MODULE = nimble_porting_nimble
# host specific files
SRC += nimble_port.c
SRC += endian.c
SRC += mem.c
SRC += os_mbuf.c
SRC += os_mempool.c
SRC += os_msys_init.c
# additional files needed for the controller
SRC += os_cputime.c
SRC += os_cputime_pwr2.c
SRC += hal_timer.c
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,6 @@
MODULE = nimble_npl_riot
SRC += npl_os_riot.c
SRC += nrf5x_isr.c
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,5 @@
MODULE = nimble_host_services_gap
SRC += ble_svc_gap.c
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,5 @@
MODULE = nimble_host_services_gatt
SRC += ble_svc_gatt.c
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,4 @@
MODULE += nimble_transport_ram
SRC += ble_hci_ram.c
include $(RIOTBASE)/Makefile.base