From 4b2751412b5f655a87966146f51b45263c8e51bd Mon Sep 17 00:00:00 2001 From: robert-hh Date: Thu, 20 Apr 2023 15:21:43 +0200 Subject: [PATCH] samd/BLE: Change main.c, pendsv.h, mpconfigxxx.h and makefiles for BLE. Signed-off-by: robert-hh --- ports/samd/Makefile | 1 + ports/samd/main.c | 9 ++++++--- ports/samd/mcu/samd51/manifest.py | 8 ++++++++ ports/samd/mcu/samd51/mpconfigmcu.mk | 18 ++++++++++++++++++ ports/samd/pendsv.h | 3 +++ 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/ports/samd/Makefile b/ports/samd/Makefile index e45813c9b3..8238f460c0 100644 --- a/ports/samd/Makefile +++ b/ports/samd/Makefile @@ -37,6 +37,7 @@ FROZEN_MANIFEST ?= boards/manifest.py # Include py core make definitions include $(TOP)/py/py.mk include $(TOP)/extmod/extmod.mk +include ${TOP}/extmod/nimble/nimble.mk GIT_SUBMODULES += lib/asf4 lib/tinyusb diff --git a/ports/samd/main.c b/ports/samd/main.c index 8a393f88a8..e4c8b8d82e 100644 --- a/ports/samd/main.c +++ b/ports/samd/main.c @@ -37,6 +37,8 @@ #include "shared/runtime/softtimer.h" #include "shared/tinyusb/mp_usbd.h" #include "clock_config.h" +#include "extmod/modbluetooth.h" +#include "mpbthciport.h" extern uint8_t _sstack, _estack, _sheap, _eheap; extern void adc_deinit_all(void); @@ -52,11 +54,12 @@ void samd_main(void) { gc_init(&_sheap, &_eheap); mp_init(); + #if MICROPY_PY_BLUETOOTH + mp_bluetooth_hci_init(); + #endif + // Initialise sub-systems. readline_init0(); - #if MICROPY_PY_BLUETOOTH - // mp_bluetooth_hci_init(); - #endif #if MICROPY_PY_NETWORK mod_network_init(); #endif diff --git a/ports/samd/mcu/samd51/manifest.py b/ports/samd/mcu/samd51/manifest.py index 2a19a843f8..f9e96872bc 100644 --- a/ports/samd/mcu/samd51/manifest.py +++ b/ports/samd/mcu/samd51/manifest.py @@ -3,3 +3,11 @@ include("$(MPY_DIR)/extmod/asyncio") require("onewire") require("ds18x20") require("dht") + +include( + "$(MPY_LIB_DIR)/micropython/bluetooth/aioble/manifest.py", + client=True, + central=True, + l2cap=True, + security=True, +) diff --git a/ports/samd/mcu/samd51/mpconfigmcu.mk b/ports/samd/mcu/samd51/mpconfigmcu.mk index d47ab6c6db..8818f99eff 100644 --- a/ports/samd/mcu/samd51/mpconfigmcu.mk +++ b/ports/samd/mcu/samd51/mpconfigmcu.mk @@ -10,16 +10,22 @@ MICROPY_VFS_LFS2 ?= 1 MICROPY_VFS_FAT ?= 1 ifeq ($(BOARD_VARIANT),WLAN) + MICROPY_PY_NETWORK ?= 1 MICROPY_PY_NETWORK_NINAW10 ?= 1 ifeq ($(MICROPY_HW_CODESIZE),496K) MICROPY_PY_SSL ?= 1 MICROPY_SSL_MBEDTLS ?= 1 +MICROPY_PY_BLUETOOTH ?= 1 +MICROPY_BLUETOOTH_NIMBLE ?= 1 endif ifeq ($(MICROPY_HW_CODESIZE),1008K) MICROPY_PY_SSL ?= 1 MICROPY_SSL_MBEDTLS ?= 1 +MICROPY_PY_BLUETOOTH ?= 1 +MICROPY_BLUETOOTH_NIMBLE ?= 1 endif + endif ifeq ($(MICROPY_PY_NETWORK),1) @@ -58,3 +64,15 @@ SRC_C += \ nina_wifi_bsp.c endif + +ifeq ($(MICROPY_BLUETOOTH_NIMBLE), 1) +SRC_C += \ + mpbthciport.c \ + mpnimbleport.c + +INC += \ + -I$(TOP)/extmod/nimble \ + -I$(TOP)/lib/mynewt-nimble/nimble/host/include \ + -I$(TOP)/lib/mynewt-nimble/nimble/include \ + -I$(TOP)/lib/mynewt-nimble/porting/nimble/include +endif diff --git a/ports/samd/pendsv.h b/ports/samd/pendsv.h index 6671fa4e28..b5c4e10d40 100644 --- a/ports/samd/pendsv.h +++ b/ports/samd/pendsv.h @@ -28,6 +28,9 @@ enum { PENDSV_DISPATCH_SOFT_TIMER, // For later & for having at least one entry + #if MICROPY_PY_BLUETOOTH && !MICROPY_PY_BLUETOOTH_USE_SYNC_EVENTS + PENDSV_DISPATCH_BLUETOOTH_HCI, + #endif MICROPY_BOARD_PENDSV_ENTRIES PENDSV_DISPATCH_MAX };