diff --git a/.gitignore b/.gitignore index 70fdffe40..501b5a5ee 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ cores/arduino/api/ cores/arduino/api* **/.vscode/ **/.development +.venv \ No newline at end of file diff --git a/boards.txt b/boards.txt index 0508a02b0..77ddcaeff 100644 --- a/boards.txt +++ b/boards.txt @@ -523,3 +523,62 @@ nicla_vision.bootloader.config=-f target/stm32h7x_dual_bank.cfg nicla_vision.bootloader.programmer=-f interface/stlink.cfg nicla_vision.bootloader.extra_action.preflash=stm32h7x option_write 0 0x01c 0xb86aaf0 nicla_vision.bootloader.file=NICLA_VISION/bootloader.elf + +############################################################## + +sfe_ninab306_thing_plus.name=SparkFun NINA-B306 Thing Plus +sfe_ninab306_thing_plus.build.core=arduino +sfe_ninab306_thing_plus.build.crossprefix=arm-none-eabi- +sfe_ninab306_thing_plus.build.compiler_path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/ + +sfe_ninab306_thing_plus.build.variant=SFE_NINAB306_THING_PLUS +sfe_ninab306_thing_plus.build.mcu=cortex-m4 +sfe_ninab306_thing_plus.build.extra_flags= +sfe_ninab306_thing_plus.build.architecture=cortex-m4 +sfe_ninab306_thing_plus.build.fpu=-mfpu=fpv4-sp-d16 +sfe_ninab306_thing_plus.build.float-abi=-mfloat-abi=softfp +sfe_ninab306_thing_plus.build.board=SFE_NINAB306_THING_PLUS +sfe_ninab306_thing_plus.build.ldscript=linker_script.ld +sfe_ninab306_thing_plus.compiler.mbed.arch.define=-DARDUINO_ARCH_NRF52840 +sfe_ninab306_thing_plus.compiler.mbed.defines={build.variant.path}/defines.txt +sfe_ninab306_thing_plus.compiler.mbed.ldflags={build.variant.path}/ldflags.txt +sfe_ninab306_thing_plus.compiler.mbed.cflags={build.variant.path}/cflags.txt +sfe_ninab306_thing_plus.compiler.mbed.cxxflags={build.variant.path}/cxxflags.txt +sfe_ninab306_thing_plus.compiler.mbed.includes={build.variant.path}/includes.txt +sfe_ninab306_thing_plus.compiler.mbed.extra_ldflags=-lstdc++ -lsupc++ -lm -lc -lgcc -lnosys +sfe_ninab306_thing_plus.compiler.mbed="{build.variant.path}/libs/libmbed.a" "{build.variant.path}/libs/libcc_310_core.a" "{build.variant.path}/libs/libcc_310_ext.a" "{build.variant.path}/libs/libcc_310_trng.a" +sfe_ninab306_thing_plus.vid.0=0x1b4f +sfe_ninab306_thing_plus.pid.0=0x0030 +sfe_ninab306_thing_plus.vid.1=0x1b4f +sfe_ninab306_thing_plus.pid.1=0x0031 +sfe_ninab306_thing_plus.vid.2=0x1b4f +sfe_ninab306_thing_plus.pid.2=0x0032 +sfe_ninab306_thing_plus.vid.3=0x1b4f +sfe_ninab306_thing_plus.pid.3=0x0033 +sfe_ninab306_thing_plus.upload_port.0.vid=0x1b4f +sfe_ninab306_thing_plus.upload_port.0.pid=0x0030 +sfe_ninab306_thing_plus.upload_port.1.vid=0x1b4f +sfe_ninab306_thing_plus.upload_port.1.pid=0x0031 +sfe_ninab306_thing_plus.upload_port.2.vid=0x1b4f +sfe_ninab306_thing_plus.upload_port.2.pid=0x0032 +sfe_ninab306_thing_plus.upload_port.3.vid=0x1b4f +sfe_ninab306_thing_plus.upload_port.3.pid=0x0033 + +sfe_ninab306_thing_plus.upload.tool=bossac +sfe_ninab306_thing_plus.upload.tool.default=bossac +sfe_ninab306_thing_plus.upload.protocol= +sfe_ninab306_thing_plus.upload.transport= +sfe_ninab306_thing_plus.upload.use_1200bps_touch=true +sfe_ninab306_thing_plus.upload.wait_for_upload_port=true +sfe_ninab306_thing_plus.upload.native_usb=true +sfe_ninab306_thing_plus.upload.maximum_size=983040 +sfe_ninab306_thing_plus.upload.maximum_data_size=262144 + +sfe_ninab306_thing_plus.bootloader.tool=openocd +sfe_ninab306_thing_plus.bootloader.tool.default=openocd +sfe_ninab306_thing_plus.bootloader.extra_action.preflash=echo INFO:removed_mass-erase +sfe_ninab306_thing_plus.bootloader.config=-f target/nrf52.cfg +sfe_ninab306_thing_plus.bootloader.programmer=-f interface/cmsis-dap.cfg +sfe_ninab306_thing_plus.bootloader.file=nano33ble/bootloader.hex + +############################################################## \ No newline at end of file diff --git a/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_SFE_NINAB306_THING_PLUS/PinNames.h b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_SFE_NINAB306_THING_PLUS/PinNames.h new file mode 100644 index 000000000..bea303284 --- /dev/null +++ b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_SFE_NINAB306_THING_PLUS/PinNames.h @@ -0,0 +1,273 @@ +/* + * Copyright (c) 2019 Arduino SA + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* MBED TARGET LIST: SFE_NINAB306_THING_PLUS */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "nrf_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +///> define macro producing for example Px_y = NRF_GPIO_PIN_MAP(x, y) +#define PinDef(port_num, pin_num) P##port_num##_##pin_num = NRF_GPIO_PIN_MAP(port_num, pin_num) + + +typedef enum { + PinDef(0 , 0), // P0_0 = 0... + PinDef(0 , 1), + PinDef(0 , 2), + PinDef(0 , 3), + PinDef(0 , 4), + PinDef(0 , 5), + PinDef(0 , 6), + PinDef(0 , 7), + PinDef(0 , 8), + PinDef(0 , 9), + PinDef(0 , 10), + PinDef(0 , 11), + PinDef(0 , 12), + PinDef(0 , 13), + PinDef(0 , 14), + PinDef(0 , 15), + PinDef(0 , 16), + PinDef(0 , 17), + PinDef(0 , 18), + PinDef(0 , 19), + PinDef(0 , 20), + PinDef(0 , 21), + PinDef(0 , 22), + PinDef(0 , 23), + PinDef(0 , 24), + PinDef(0 , 25), + PinDef(0 , 26), + PinDef(0 , 27), + PinDef(0 , 28), + PinDef(0 , 29), + PinDef(0 , 30), + PinDef(0 , 31), + + PinDef(1 , 0), //P1_1 = 32... + PinDef(1 , 1), + PinDef(1 , 2), + PinDef(1 , 3), + PinDef(1 , 4), + PinDef(1 , 5), + PinDef(1 , 6), + PinDef(1 , 7), + PinDef(1 , 8), + PinDef(1 , 9), + PinDef(1 , 10), + PinDef(1 , 11), + PinDef(1 , 12), + PinDef(1 , 13), + PinDef(1 , 14), + PinDef(1 , 15), + + // Port0 + p0 = P0_0, + p1 = P0_1, + p2 = P0_2, + p3 = P0_3, + p4 = P0_4, + p5 = P0_5, + p6 = P0_6, + p7 = P0_7, + p8 = P0_8, + p9 = P0_9, + p10 = P0_10, + p11 = P0_11, + p12 = P0_12, + p13 = P0_13, + p14 = P0_14, + p15 = P0_15, + p16 = P0_16, + p17 = P0_17, + p18 = P0_18, + p19 = P0_19, + p20 = P0_20, + p21 = P0_21, + p22 = P0_22, + p23 = P0_23, + p24 = P0_24, + p25 = P0_25, + p26 = P0_26, + p27 = P0_27, + p28 = P0_28, + p29 = P0_29, + p30 = P0_30, + p31 = P0_31, + + // Port1 + p32 = P1_0, + p33 = P1_1, + p34 = P1_2, + p35 = P1_3, + p36 = P1_4, + p37 = P1_5, + p38 = P1_6, + p39 = P1_7, + p40 = P1_8, + p41 = P1_9, + p42 = P1_10, + p43 = P1_11, + p44 = P1_12, + p45 = P1_13, + p46 = P1_14, + p47 = P1_15, + + // IO definitions implemented from NINA-B306 datasheet + IO1 = P0_13, + IO2 = P0_14, + IO3 = P0_15, + IO4 = P0_16, + IO5 = P0_24, + IO7 = P0_25, + IO17 = P0_28, + IO18 = P0_2, + IO20 = P0_31, + IO21 = P1_12, + IO22 = P1_13, + IO23 = P0_29, + IO24 = P0_30, + IO25 = P0_4, + IO27 = P0_5, + IO34 = P1_8, + IO35 = P1_1, + IO37 = P1_3, + IO38 = P1_10, + IO39 = P1_11, + IO40 = P1_15, + IO41 = P1_14, + IO42 = P0_26, + IO43 = P0_6, + IO44 = P0_27, + IO48 = P0_21, + IO50 = P0_20, + IO51 = P0_17, + IO52 = P0_19, + + RX_PIN_NUMBER = IO5, + TX_PIN_NUMBER = IO7, + + LED_BUILTIN = IO41, + LED_RGB = IO34, + + // mBed interface Pins + CONSOLE_TX = TX_PIN_NUMBER, + CONSOLE_RX = RX_PIN_NUMBER, +#if defined(MBED_CONF_TARGET_STDIO_UART_TX) + STDIO_UART_TX = MBED_CONF_TARGET_STDIO_UART_TX, +#else + STDIO_UART_TX = CONSOLE_TX, +#endif +#if defined(MBED_CONF_TARGET_STDIO_UART_RX) + STDIO_UART_RX = MBED_CONF_TARGET_STDIO_UART_RX, +#else + STDIO_UART_RX = CONSOLE_RX, +#endif + + SPI_PSELMOSI0 = IO50, + SPI_PSELMISO0 = IO48, + SPI_PSELSS0 = IO51, + SPI_PSELSCK0 = IO52, + + SPIS_PSELMOSI = IO50, + SPIS_PSELMISO = IO48, + SPIS_PSELSS = IO51, + SPIS_PSELSCK = IO52, + + I2C_SDA0 = IO43, + I2C_SCL0 = IO42, + +#ifndef ARDUINO_ARCH_MBED + // Digital Pins + D0 = IO5, + D1 = IO7, + D2 = IO38, + D3 = IO43, + D4 = IO42, + D5 = IO35, + D6 = IO25, + D9 = IO4, + D10 = IO3, + D11 = IO2, + D12 = IO1, + D13 = IO44, + + // Analog Pins + A0 = IO24, + A1 = IO23, + A2 = IO27, + A3 = IO20, + A4 = IO18, + A5 = IO17, +#endif + + G0 = IO44, + G1 = IO1, + G2 = IO2, + G3 = IO3, + G4 = IO4, + G5 = IO25, + G6 = IO35, + + AIN0 = IO24, + AIN1 = IO23, + AIN2 = IO27, + AIN3 = IO20, + AIN4 = IO18, + AIN5 = IO17, + + // Not connected + NC = (int)0xFFFFFFFF, + + STDIO_UART_RTS = NC, + STDIO_UART_CTS = NC, + + // Qwiic Port power enable + QWIIC_PEN = IO40, + + // Fuel Gauge alert pin + BATT_ALERT = IO39, + + // IMU Interrupts + IMU_INT1 = IO21, + IMU_INT2 = IO22 + +} PinName; + +typedef enum { + PullNone = 0, + PullDown = 1, + PullUp = 3, + PullDefault = PullUp +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_SFE_NINAB306_THING_PLUS/device.h b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_SFE_NINAB306_THING_PLUS/device.h new file mode 100644 index 000000000..662e7522c --- /dev/null +++ b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_SFE_NINAB306_THING_PLUS/device.h @@ -0,0 +1,24 @@ +// The 'features' section in 'target.json' is now used to create the device's hardware preprocessor switches. +// Check the 'features' section of the target description in 'targets.json' for more details. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#include "objects.h" + +#endif diff --git a/thing_plus.variables b/thing_plus.variables new file mode 100644 index 000000000..970bcad99 --- /dev/null +++ b/thing_plus.variables @@ -0,0 +1,5 @@ +export FLAVOUR="thing_plus" +export VARIANT=("SFE_NINAB306_THING_PLUS") +export FQBNS=("sfe_ninab306_thing_plus") +export LIBRARIES=("PDM SPI Wire MRI USBHID USBMSD ThreadDebug Scheduler SFU Nano33BLE_System SocketWrapper MLC") +export BOOTLOADERS=("nano33ble") diff --git a/variants/SFE_NINAB306_THING_PLUS/cflags.txt b/variants/SFE_NINAB306_THING_PLUS/cflags.txt new file mode 100644 index 000000000..557950364 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/cflags.txt @@ -0,0 +1,24 @@ +-c +-std=gnu11 +-DAPPLICATION_ADDR=0x10000 +-DAPPLICATION_SIZE=0xf0000 +-DMBED_RAM_SIZE=0x40000 +-DMBED_RAM_START=0x20000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x0 +-DMBED_TRAP_ERRORS_ENABLED=1 +-Os +-Wall +-Wextra +-Wno-missing-field-initializers +-Wno-unused-parameter +-fdata-sections +-ffunction-sections +-fmessage-length=0 +-fno-exceptions +-fomit-frame-pointer +-funsigned-char +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/SFE_NINAB306_THING_PLUS/conf/.mbedignore b/variants/SFE_NINAB306_THING_PLUS/conf/.mbedignore new file mode 100644 index 000000000..47d9c2ffc --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/conf/.mbedignore @@ -0,0 +1,2 @@ +mbed-os/connectivity/drivers/cellular/* +mbed-os/connectivity/nanostack/* diff --git a/variants/SFE_NINAB306_THING_PLUS/conf/mbed_app.json b/variants/SFE_NINAB306_THING_PLUS/conf/mbed_app.json new file mode 100644 index 000000000..279ca8808 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/conf/mbed_app.json @@ -0,0 +1,19 @@ +{ + "macros": [ + "NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS=8", + "NRFX_WDT_ENABLED=1" + ], + "target_overrides": { + "*": { + "target.printf_lib": "std", + "platform.stdio-buffered-serial": false, + "platform.stdio-baud-rate": 115200, + "platform.default-serial-baud-rate": 115200, + "platform.callback-nontrivial": true, + "rtos.main-thread-stack-size": 32768, + "cordio.max-connections": 5, + "platform.all-stats-enabled": true, + "target.mbed_app_start": "0x10000" + } + } +} diff --git a/variants/SFE_NINAB306_THING_PLUS/cxxflags.txt b/variants/SFE_NINAB306_THING_PLUS/cxxflags.txt new file mode 100644 index 000000000..ca7f1f869 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/cxxflags.txt @@ -0,0 +1,26 @@ +-Wvla +-c +-fno-rtti +-std=gnu++14 +-DAPPLICATION_ADDR=0x10000 +-DAPPLICATION_SIZE=0xf0000 +-DMBED_RAM_SIZE=0x40000 +-DMBED_RAM_START=0x20000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x0 +-DMBED_TRAP_ERRORS_ENABLED=1 +-Os +-Wall +-Wextra +-Wno-missing-field-initializers +-Wno-unused-parameter +-fdata-sections +-ffunction-sections +-fmessage-length=0 +-fno-exceptions +-fomit-frame-pointer +-funsigned-char +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/SFE_NINAB306_THING_PLUS/defines.txt b/variants/SFE_NINAB306_THING_PLUS/defines.txt new file mode 100644 index 000000000..0885754ba --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/defines.txt @@ -0,0 +1,71 @@ + +-DARM_MATH_CM4 +-DBOARD_PCA10056 +-D__CMSIS_RTOS +-DCMSIS_VECTAB_VIRTUAL +-DCMSIS_VECTAB_VIRTUAL_HEADER_FILE=\"cmsis_nvic.h\" +-DCOMPONENT_FLASHIAP=1 +-DCONFIG_GPIO_AS_PINRESET +-D__CORTEX_M4 +-DDEVICE_ANALOGIN=1 +-DDEVICE_FLASH=1 +-DDEVICE_I2C=1 +-DDEVICE_I2C_ASYNCH=1 +-DDEVICE_I2CSLAVE=1 +-DDEVICE_INTERRUPTIN=1 +-DDEVICE_LPTICKER=1 +-DDEVICE_PORTIN=1 +-DDEVICE_PORTINOUT=1 +-DDEVICE_PORTOUT=1 +-DDEVICE_PWMOUT=1 +-DDEVICE_SERIAL=1 +-DDEVICE_SERIAL_ASYNCH=1 +-DDEVICE_SERIAL_FC=1 +-DDEVICE_SLEEP=1 +-DDEVICE_SPI=1 +-DDEVICE_SPI_ASYNCH=1 +-DDEVICE_SYSTICK_CLK_OFF_DURING_SLEEP=1 +-DDEVICE_TRNG=1 +-DDEVICE_USBDEVICE=1 +-DDEVICE_USTICKER=1 +-DDEVICE_WATCHDOG=1 +-DFEATURE_BLE=1 +-DFEATURE_CRYPTOCELL310=1 +-DFEATURE_STORAGE=1 +-D__FPU_PRESENT=1 +-D__MBED__=1 +-DMBED_BUILD_TIMESTAMP=1670624916.352068 +-D__MBED_CMSIS_RTOS_CM +-DMBED_MPU_CUSTOM +-DMBED_TICKLESS +-DMBEDTLS_CONFIG_HW_SUPPORT +-DNRF52840_XXAA +-DNRF52_PAN_20 +-DSWI_DISABLE0 +-DTARGET_CORDIO +-DTARGET_CORDIO_LL +-DTARGET_CORTEX +-DTARGET_CORTEX_M +-DTARGET_LIKE_CORTEX_M4 +-DTARGET_LIKE_MBED +-DTARGET_M4 +-DTARGET_MCU_NRF52840 +-DTARGET_NAME=SFE_NINAB306_THING_PLUS +-DTARGET_NORDIC +-DTARGET_NORDIC_CORDIO +-DTARGET_NRF52 +-DTARGET_NRF52840 +-DTARGET_NRF5x +-DTARGET_RELEASE +-DTARGET_RTOS_M4_M7 +-DTARGET_SDK_15_0 +-DTARGET_SFE_NINAB306_THING_PLUS +-DTARGET_SOFTDEVICE_NONE +-DTOOLCHAIN_GCC +-DTOOLCHAIN_GCC_ARM +-DWSF_MAX_HANDLERS=10 +-DMBED_NO_GLOBAL_USING_DIRECTIVE=1 +-DCORE_MAJOR= +-DCORE_MINOR= +-DCORE_PATCH= +-DUSE_ARDUINO_PINOUT diff --git a/variants/SFE_NINAB306_THING_PLUS/includes.txt b/variants/SFE_NINAB306_THING_PLUS/includes.txt new file mode 100644 index 000000000..06bee44f6 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/includes.txt @@ -0,0 +1,310 @@ +-iwithprefixbefore/mbed +-iwithprefixbefore/mbed/cmsis +-iwithprefixbefore/mbed/cmsis/CMSIS_5 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/Include +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Config +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Include +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Include1 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Source +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M/Include +-iwithprefixbefore/mbed/cmsis/device +-iwithprefixbefore/mbed/cmsis/device/RTE +-iwithprefixbefore/mbed/cmsis/device/RTE/include +-iwithprefixbefore/mbed/cmsis/device/rtos +-iwithprefixbefore/mbed/cmsis/device/rtos/include +-iwithprefixbefore/mbed/connectivity +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/compatibility +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/compatibility/ble +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/driver +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/gap +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/gatt +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/services +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/include/ble +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/include/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/bb +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/lctr +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/lhci +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/sch +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/common/bb +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/common/sch +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/thirdparty +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/thirdparty/uecc +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack_adaptation +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/hci +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/hci/dual_chip +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/sec +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/sec/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/cfg +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/dm +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/hci +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/l2c +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/smp +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/platform +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/platform/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/wsf +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/wsf/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/wsf/include/util +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/cordio +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/cordio/source +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/cordio/stack_adaptation +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/generic +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/pal +-iwithprefixbefore/mbed/connectivity/cellular +-iwithprefixbefore/mbed/connectivity/cellular/include +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/API +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/AT +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/common +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/device +-iwithprefixbefore/mbed/connectivity/drivers +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver/atmel-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver/mcr20a-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/ble/FEATURE_BLE/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310 +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840 +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310/include +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310/include/cryptocell310 +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310/include/cryptocell310/internal +-iwithprefixbefore/mbed/connectivity/drivers/nfc +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512 +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include/nfc +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include/nfc/controllers +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/source +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/source/transceiver +-iwithprefixbefore/mbed/connectivity/drivers/wifi +-iwithprefixbefore/mbed/connectivity/drivers/wifi/esp8266-driver +-iwithprefixbefore/mbed/connectivity/drivers/wifi/esp8266-driver/ESP8266 +-iwithprefixbefore/mbed/connectivity/libraries +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/mbed-coap +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/source +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/source/include +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice/mbed-client-libservice +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice/mbed-client-libservice/platform +-iwithprefixbefore/mbed/connectivity/libraries/ppp +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include/polarssl +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include/ppp +-iwithprefixbefore/mbed/connectivity/lorawan +-iwithprefixbefore/mbed/connectivity/lorawan/include +-iwithprefixbefore/mbed/connectivity/lorawan/include/lorawan +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack/mac +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack/phy +-iwithprefixbefore/mbed/connectivity/lorawan/system +-iwithprefixbefore/mbed/connectivity/lwipstack +-iwithprefixbefore/mbed/connectivity/lwipstack/include +-iwithprefixbefore/mbed/connectivity/lwipstack/include/lwipstack +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip-sys +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip-sys/arch +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat/posix +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat/posix/arpa +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat/posix/net +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat/posix/sys +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/lwip +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/lwip/priv +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/lwip/prot +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/netif +-iwithprefixbefore/mbed/connectivity/mbedtls +-iwithprefixbefore/mbed/connectivity/mbedtls/include +-iwithprefixbefore/mbed/connectivity/mbedtls/include/mbedtls +-iwithprefixbefore/mbed/connectivity/mbedtls/platform +-iwithprefixbefore/mbed/connectivity/mbedtls/platform/inc +-iwithprefixbefore/mbed/connectivity/mbedtls/source +-iwithprefixbefore/mbed/connectivity/netsocket +-iwithprefixbefore/mbed/connectivity/netsocket/include +-iwithprefixbefore/mbed/connectivity/netsocket/include/netsocket +-iwithprefixbefore/mbed/connectivity/nfc +-iwithprefixbefore/mbed/connectivity/nfc/include +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc/ndef +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc/ndef/common +-iwithprefixbefore/mbed/connectivity/nfc/libraries +-iwithprefixbefore/mbed/connectivity/nfc/libraries/acore +-iwithprefixbefore/mbed/connectivity/nfc/libraries/acore/acore +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/ndef +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/platform +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/iso7816 +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/isodep +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/type4 +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/transceiver +-iwithprefixbefore/mbed/drivers +-iwithprefixbefore/mbed/drivers/device_key +-iwithprefixbefore/mbed/drivers/device_key/include +-iwithprefixbefore/mbed/drivers/device_key/include/device_key +-iwithprefixbefore/mbed/drivers/include +-iwithprefixbefore/mbed/drivers/include/drivers +-iwithprefixbefore/mbed/drivers/include/drivers/interfaces +-iwithprefixbefore/mbed/drivers/usb +-iwithprefixbefore/mbed/drivers/usb/include +-iwithprefixbefore/mbed/drivers/usb/include/usb +-iwithprefixbefore/mbed/drivers/usb/include/usb/internal +-iwithprefixbefore/mbed/events +-iwithprefixbefore/mbed/events/include +-iwithprefixbefore/mbed/events/include/events +-iwithprefixbefore/mbed/events/include/events/internal +-iwithprefixbefore/mbed/features +-iwithprefixbefore/mbed/features/frameworks +-iwithprefixbefore/mbed/features/frameworks/greentea-client +-iwithprefixbefore/mbed/features/frameworks/greentea-client/greentea-client +-iwithprefixbefore/mbed/features/frameworks/mbed-client-cli +-iwithprefixbefore/mbed/features/frameworks/mbed-client-cli/mbed-client-cli +-iwithprefixbefore/mbed/features/frameworks/unity +-iwithprefixbefore/mbed/features/frameworks/unity/unity +-iwithprefixbefore/mbed/features/frameworks/utest +-iwithprefixbefore/mbed/features/frameworks/utest/utest +-iwithprefixbefore/mbed/hal +-iwithprefixbefore/mbed/hal/include +-iwithprefixbefore/mbed/hal/include/hal +-iwithprefixbefore/mbed/hal/usb +-iwithprefixbefore/mbed/hal/usb/include +-iwithprefixbefore/mbed/hal/usb/include/usb +-iwithprefixbefore/mbed/platform +-iwithprefixbefore/mbed/platform/cxxsupport +-iwithprefixbefore/mbed/platform/include +-iwithprefixbefore/mbed/platform/include/platform +-iwithprefixbefore/mbed/platform/include/platform/internal +-iwithprefixbefore/mbed/platform/mbed-trace +-iwithprefixbefore/mbed/platform/mbed-trace/include +-iwithprefixbefore/mbed/platform/mbed-trace/include/mbed-trace +-iwithprefixbefore/mbed/platform/randlib +-iwithprefixbefore/mbed/platform/randlib/include +-iwithprefixbefore/mbed/platform/randlib/include/mbed-client-randlib +-iwithprefixbefore/mbed/platform/randlib/include/mbed-client-randlib/platform +-iwithprefixbefore/mbed/platform/source +-iwithprefixbefore/mbed/platform/source/minimal-printf +-iwithprefixbefore/mbed/rtos +-iwithprefixbefore/mbed/rtos/include +-iwithprefixbefore/mbed/rtos/include/rtos +-iwithprefixbefore/mbed/rtos/include/rtos/internal +-iwithprefixbefore/mbed/rtos/source +-iwithprefixbefore/mbed/storage +-iwithprefixbefore/mbed/storage/blockdevice +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP/include +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP/include/FlashIAP +-iwithprefixbefore/mbed/storage/blockdevice/include +-iwithprefixbefore/mbed/storage/blockdevice/include/blockdevice +-iwithprefixbefore/mbed/storage/blockdevice/include/blockdevice/internal +-iwithprefixbefore/mbed/storage/filesystem +-iwithprefixbefore/mbed/storage/filesystem/fat +-iwithprefixbefore/mbed/storage/filesystem/fat/ChaN +-iwithprefixbefore/mbed/storage/filesystem/fat/include +-iwithprefixbefore/mbed/storage/filesystem/fat/include/fat +-iwithprefixbefore/mbed/storage/filesystem/include +-iwithprefixbefore/mbed/storage/filesystem/include/filesystem +-iwithprefixbefore/mbed/storage/filesystem/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefs/include +-iwithprefixbefore/mbed/storage/filesystem/littlefs/include/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefs/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2 +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/include +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/include/littlefsv2 +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/littlefs +-iwithprefixbefore/mbed/storage/kvstore +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey/include +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey/include/direct_access_devicekey +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore/include +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore/include/filesystemstore +-iwithprefixbefore/mbed/storage/kvstore/include +-iwithprefixbefore/mbed/storage/kvstore/include/kvstore +-iwithprefixbefore/mbed/storage/kvstore/kv_config +-iwithprefixbefore/mbed/storage/kvstore/kv_config/include +-iwithprefixbefore/mbed/storage/kvstore/kv_config/include/kv_config +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api/include +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api/include/kvstore_global_api +-iwithprefixbefore/mbed/storage/kvstore/securestore +-iwithprefixbefore/mbed/storage/kvstore/securestore/include +-iwithprefixbefore/mbed/storage/kvstore/securestore/include/securestore +-iwithprefixbefore/mbed/storage/kvstore/tdbstore +-iwithprefixbefore/mbed/storage/kvstore/tdbstore/include +-iwithprefixbefore/mbed/storage/kvstore/tdbstore/include/tdbstore +-iwithprefixbefore/mbed/targets/TARGET_NORDIC +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52 +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840 +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_SFE_NINAB306_THING_PLUS +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/config +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/device +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0 +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_NONE +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_NONE/libraries +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_NONE/libraries/fstorage +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_NONE/nrf_soc_nosd +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/atomic +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/atomic_fifo +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/balloc +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/delay +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/experimental_log +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/experimental_log/src +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/experimental_memobj +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/experimental_section_vars +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/fds +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/fstorage +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/queue +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/spi_mngr +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/strerror +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/twi_mngr +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/util +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/integration +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/integration/nrfx +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/integration/nrfx/legacy +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/integration/nrfx/legacy/ble_flash +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/drivers +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/drivers/include +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/drivers/src +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/drivers/src/prs +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/hal +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/mdk +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/soc +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/softdevice +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/softdevice/common diff --git a/variants/SFE_NINAB306_THING_PLUS/ldflags.txt b/variants/SFE_NINAB306_THING_PLUS/ldflags.txt new file mode 100644 index 000000000..510613aa2 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/ldflags.txt @@ -0,0 +1,22 @@ +-DMBED_APP_SIZE=0xf0000 +-DMBED_APP_START=0x10000 +-DMBED_BOOT_STACK_SIZE=1024 +-DMBED_RAM_SIZE=0x40000 +-DMBED_RAM_START=0x20000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x0 +-DXIP_ENABLE=0 +-Wl,--gc-sections +-Wl,--wrap,_calloc_r +-Wl,--wrap,_free_r +-Wl,--wrap,_malloc_r +-Wl,--wrap,_memalign_r +-Wl,--wrap,_realloc_r +-Wl,--wrap,atexit +-Wl,--wrap,exit +-Wl,--wrap,main +-Wl,-n +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_core.a b/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_core.a new file mode 100644 index 000000000..bace518f9 Binary files /dev/null and b/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_core.a differ diff --git a/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_ext.a b/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_ext.a new file mode 100644 index 000000000..64c57cceb Binary files /dev/null and b/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_ext.a differ diff --git a/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_trng.a b/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_trng.a new file mode 100644 index 000000000..df24c2c2c Binary files /dev/null and b/variants/SFE_NINAB306_THING_PLUS/libs/libcc_310_trng.a differ diff --git a/variants/SFE_NINAB306_THING_PLUS/libs/libmbed.a b/variants/SFE_NINAB306_THING_PLUS/libs/libmbed.a new file mode 100644 index 000000000..45ae0d002 Binary files /dev/null and b/variants/SFE_NINAB306_THING_PLUS/libs/libmbed.a differ diff --git a/variants/SFE_NINAB306_THING_PLUS/linker_script.ld b/variants/SFE_NINAB306_THING_PLUS/linker_script.ld new file mode 100644 index 000000000..270da6c43 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/linker_script.ld @@ -0,0 +1,154 @@ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x10000, LENGTH = 0xf0000 + RAM_NVIC (rwx) : ORIGIN = 0x20000000, LENGTH = 0x100 + RAM_CRASH_DATA (rwx) : ORIGIN = (0x20000000 + 0x100), LENGTH = 0x100 + RAM (rwx) : ORIGIN = ((0x20000000 + 0x100) + 0x100), LENGTH = (0x40000 - (0x100 + 0x100)) +} +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +ENTRY(Reset_Handler) +SECTIONS +{ + .text : + { + KEEP(*(.Vectors)) + *(.text*) + KEEP(*(.init)) + KEEP(*(.fini)) + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + *(.rodata*) + KEEP(*(.eh_frame*)) + } > FLASH + .sdh_soc_observers : + { + PROVIDE(__start_sdh_soc_observers = .); + KEEP(*(SORT(.sdh_soc_observers*))) + PROVIDE(__stop_sdh_soc_observers = .); + } > FLASH + .sdh_stack_observers : + { + PROVIDE(__start_sdh_stack_observers = .); + KEEP(*(SORT(.sdh_stack_observers*))) + PROVIDE(__stop_sdh_stack_observers = .); + } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH + .sdh_state_observers : + { + PROVIDE(__start_sdh_state_observers = .); + KEEP(*(SORT(.sdh_state_observers*))) + PROVIDE(__stop_sdh_state_observers = .); + } > FLASH + .sdh_ble_observers : + { + PROVIDE(__start_sdh_ble_observers = .); + KEEP(*(SORT(.sdh_ble_observers*))) + PROVIDE(__stop_sdh_ble_observers = .); + } > FLASH + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + __etext = .; + .data : AT (__etext) + { + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN(8); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(8); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(8); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(8); + PROVIDE(__start_fs_data = .); + KEEP(*(.fs_data)) + PROVIDE(__stop_fs_data = .); + *(.jcr) + . = ALIGN(8); + __data_end__ = .; + } > RAM + __edata = .; + .nvictable (NOLOAD) : + { + PROVIDE(__start_nvictable = .); + KEEP(*(.nvictable)) + PROVIDE(__stop_nvictable = .); + } > RAM_NVIC + .crash_data_ram : + { + . = ALIGN(8); + __CRASH_DATA_RAM__ = .; + __CRASH_DATA_RAM_START__ = .; + KEEP(*(.keep.crash_data_ram)) + *(.m_crash_data_ram) + . += 0x100; + . = ALIGN(8); + __CRASH_DATA_RAM_END__ = .; + } > RAM_CRASH_DATA + .noinit (NOLOAD) : + { + PROVIDE(__start_noinit = .); + KEEP(*(.noinit)) + PROVIDE(__stop_noinit = .); + } > RAM + .bss : + { + . = ALIGN(8); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(8); + __bss_end__ = .; + } > RAM + .heap (NOLOAD): + { + __end__ = .; + end = __end__; + *(.heap*); + ASSERT(. <= (ORIGIN(RAM) + LENGTH(RAM) - 0x400), "heap region overflowed into stack"); + . = ORIGIN(RAM) + LENGTH(RAM) - 0x400; + __HeapLimit = .; + } > RAM + PROVIDE(__heap_start = ADDR(.heap)); + PROVIDE(__heap_size = SIZEOF(.heap)); + PROVIDE(__mbed_sbrk_start = ADDR(.heap)); + PROVIDE(__mbed_krbs_start = ADDR(.heap) + SIZEOF(.heap)); + .stack (NOLOAD): + { + __StackLimit = .; + *(.stack*) + . = ORIGIN(RAM) + LENGTH(RAM); + } > RAM + __StackTop = ORIGIN(RAM) + LENGTH(RAM); + __StackLimit = __StackTop - 0x400; + PROVIDE(__stack = __StackTop); +} diff --git a/variants/SFE_NINAB306_THING_PLUS/mbed_config.h b/variants/SFE_NINAB306_THING_PLUS/mbed_config.h new file mode 100644 index 000000000..5cf0ce054 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/mbed_config.h @@ -0,0 +1,394 @@ +/* + * mbed SDK + * Copyright (c) 2017 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Automatically generated configuration file. +// DO NOT EDIT, content will be overwritten. + +#ifndef __MBED_CONFIG_DATA__ +#define __MBED_CONFIG_DATA__ + +// Configuration parameters +#define ATT_NUM_SIMUL_NTF 1 // set by library:cordio +#define ATT_NUM_SIMUL_WRITE_CMD 1 // set by library:cordio +#define BLE_FEATURE_EXTENDED_ADVERTISING 1 // set by library:ble +#define BLE_FEATURE_GATT_CLIENT 1 // set by library:ble +#define BLE_FEATURE_GATT_SERVER 1 // set by library:ble +#define BLE_FEATURE_PERIODIC_ADVERTISING 1 // set by library:ble +#define BLE_FEATURE_PHY_MANAGEMENT 1 // set by library:ble +#define BLE_FEATURE_PRIVACY 1 // set by library:ble +#define BLE_FEATURE_SECURE_CONNECTIONS 1 // set by library:ble +#define BLE_FEATURE_SECURITY 1 // set by library:ble +#define BLE_FEATURE_SIGNING 1 // set by library:ble +#define BLE_FEATURE_WHITELIST 1 // set by library:ble +#define BLE_GAP_HOST_BASED_PRIVATE_ADDRESS_RESOLUTION 0 // set by library:ble[MCU_NRF52840] +#define BLE_GAP_HOST_MAX_OUTSTANDING_ADVERTISING_START_COMMANDS 4 // set by library:ble +#define BLE_GAP_HOST_PRIVACY_RESOLVED_CACHE_SIZE 16 // set by library:ble +#define BLE_GAP_MAX_ADVERTISING_REPORTS_PENDING_ADDRESS_RESOLUTION 16 // set by library:ble +#define BLE_GAP_MAX_ADVERTISING_SETS 15 // set by library:ble +#define BLE_PASSKEY_DISPLAY_REVERSED_DIGITS_DEPRECATION 1 // set by library:ble +#define BLE_ROLE_BROADCASTER 1 // set by library:ble +#define BLE_ROLE_CENTRAL 1 // set by library:ble +#define BLE_ROLE_OBSERVER 1 // set by library:ble +#define BLE_ROLE_PERIPHERAL 1 // set by library:ble +#define BLE_SECURITY_DATABASE_FILESYSTEM 1 // set by library:ble +#define BLE_SECURITY_DATABASE_KVSTORE 0 // set by library:ble +#define BLE_SECURITY_DATABASE_MAX_ENTRIES 5 // set by library:ble +#define CHCI_TR_CUSTOM 1 // set by library:cordio-ll +#define CHCI_TR_UART 0 // set by library:cordio-ll +#define CORDIO_ZERO_COPY_HCI 1 // set by library:cordio-nordic-ll +#define DM_CONN_MAX 5 // set by application[*] +#define DM_NUM_ADV_SETS 3 // set by library:cordio +#define DM_NUM_PHYS 3 // set by library:cordio +#define DM_SYNC_MAX 1 // set by library:cordio +#define EATT_CONN_CHAN_MAX 1 // set by library:cordio +#define L2C_COC_CHAN_MAX 1 // set by library:cordio +#define L2C_COC_REG_MAX 1 // set by library:cordio +#define LHCI_ENABLE_VS 0 // set by library:cordio-ll +#define MBED_ALL_STATS_ENABLED 1 // set by application[*] +#define MBED_CONF_ATMEL_RF_ASSUME_SPACED_SPI 0 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_FULL_SPI_SPEED 7500000 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_FULL_SPI_SPEED_BYTE_SPACING 250 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_IRQ_THREAD_STACK_SIZE 1024 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_LOW_SPI_SPEED 3750000 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_PROVIDE_DEFAULT 0 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_USE_SPI_SPACING_API 0 // set by library:atmel-rf +#define MBED_CONF_BLE_API_IMPLEMENTATION_MAX_CCCD_COUNT 20 // set by library:ble-api-implementation +#define MBED_CONF_BLE_API_IMPLEMENTATION_MAX_CHARACTERISTIC_AUTHORISATION_COUNT 20 // set by library:ble-api-implementation +#define MBED_CONF_BLE_PRESENT 1 // set by library:ble +#define MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS 0 // set by library:ble +#define MBED_CONF_CELLULAR_AT_HANDLER_BUFFER_SIZE 32 // set by library:cellular +#define MBED_CONF_CELLULAR_CONTROL_PLANE_OPT 0 // set by library:cellular +#define MBED_CONF_CELLULAR_DEBUG_AT 0 // set by library:cellular +#define MBED_CONF_CELLULAR_MAX_CP_DATA_RECV_LEN 1358 // set by library:cellular +#define MBED_CONF_CELLULAR_PRESENT 1 // set by library:cellular +#define MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY 0 // set by library:cellular +#define MBED_CONF_CELLULAR_USE_APN_LOOKUP 0 // set by library:cellular +#define MBED_CONF_CELLULAR_USE_SMS 0 // set by library:cellular +#define MBED_CONF_CORDIO_DESIRED_ATT_MTU 23 // set by library:cordio +#define MBED_CONF_CORDIO_LL_DEFAULT_EXTENDED_ADVERTISING_FRAGMENTATION_SIZE 64 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_EXTENDED_ADVERTISING_SIZE 512 // set by library:cordio-ll[MCU_NRF52840] +#define MBED_CONF_CORDIO_LL_MAX_ACL_SIZE 256 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_MAX_ADVERTISING_REPORTS 4 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_MAX_ADVERTISING_SETS 3 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_MAX_SCAN_REQUEST_EVENTS 4 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_NRF52840_CRYPTOCELL310_ACCELERATION 1 // set by library:cordio-ll-nrf52840 +#define MBED_CONF_CORDIO_LL_PHY_2M_SUPPORT 1 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_PHY_CODED_SUPPORT 1 // set by library:cordio-ll[MCU_NRF52840] +#define MBED_CONF_CORDIO_LL_RX_BUFFERS 4 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_TX_BUFFERS 4 // set by library:cordio-ll +#define MBED_CONF_CORDIO_MAX_PREPARED_WRITES 4 // set by library:cordio +#define MBED_CONF_CORDIO_NORDIC_LL_HCI_DRIVER_BUFFER_SIZE 16056 // set by library:cordio-nordic-ll[MCU_NRF52840] +#define MBED_CONF_CORDIO_NORDIC_LL_WSF_POOL_BUFFER_SIZE 4900 // set by library:cordio-nordic-ll +#define MBED_CONF_CORDIO_PREFERRED_TX_POWER 0 // set by library:cordio +#define MBED_CONF_CORDIO_ROUTE_UNHANDLED_COMMAND_COMPLETE_EVENTS 1 // set by library:cordio +#define MBED_CONF_CORDIO_RX_ACL_BUFFER_SIZE 70 // set by library:cordio +#define MBED_CONF_CORDIO_TRACE_HCI_PACKETS 0 // set by library:cordio +#define MBED_CONF_CORDIO_TRACE_PAL_ECHOES 0 // set by library:cordio +#define MBED_CONF_CRYPTOCELL310_PRESENT 1 // set by library:cryptocell310 +#define MBED_CONF_DRIVERS_OSPI_CSN OSPI_FLASH1_CSN // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_DQS OSPI_FLASH1_DQS // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO0 OSPI_FLASH1_IO0 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO1 OSPI_FLASH1_IO1 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO2 OSPI_FLASH1_IO2 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO3 OSPI_FLASH1_IO3 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO4 OSPI_FLASH1_IO4 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO5 OSPI_FLASH1_IO5 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO6 OSPI_FLASH1_IO6 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO7 OSPI_FLASH1_IO7 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_SCK OSPI_FLASH1_SCK // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_CSN QSPI_FLASH1_CSN // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO0 QSPI_FLASH1_IO0 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO1 QSPI_FLASH1_IO1 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO2 QSPI_FLASH1_IO2 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO3 QSPI_FLASH1_IO3 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_SCK QSPI_FLASH1_SCK // set by library:drivers +#define MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE 256 // set by library:drivers +#define MBED_CONF_DRIVERS_UART_SERIAL_TXBUF_SIZE 256 // set by library:drivers +#define MBED_CONF_ESP8266_BUILT_IN_DNS 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_DEBUG 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_OFF_TIME_MS 3 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_ON_POLARITY 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_ON_TIME_MS 3 // set by library:esp8266 +#define MBED_CONF_ESP8266_PROVIDE_DEFAULT 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SERIAL_BAUDRATE 115200 // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_ENABLE 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER0 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER1 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER2 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_TIMEZONE 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SOCKET_BUFSIZE 8192 // set by library:esp8266 +#define MBED_CONF_EVENTS_PRESENT 1 // set by library:events +#define MBED_CONF_EVENTS_SHARED_DISPATCH_FROM_APPLICATION 0 // set by library:events +#define MBED_CONF_EVENTS_SHARED_EVENTSIZE 768 // set by library:events +#define MBED_CONF_EVENTS_SHARED_HIGHPRIO_EVENTSIZE 256 // set by library:events +#define MBED_CONF_EVENTS_SHARED_HIGHPRIO_STACKSIZE 1024 // set by library:events +#define MBED_CONF_EVENTS_SHARED_STACKSIZE 2048 // set by library:events +#define MBED_CONF_EVENTS_USE_LOWPOWER_TIMER_TICKER 0 // set by library:events +#define MBED_CONF_FAT_CHAN_FFS_DBG 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_CODE_PAGE 437 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_EXFAT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_HEAPBUF 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_LOCK 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_MINIMIZE 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_NOFSINFO 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_NORTC 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_READONLY 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_REENTRANT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_RPATH 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_TIMEOUT 1000 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_TINY 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_LFN_BUF 255 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_LFN_UNICODE 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MAX_LFN 255 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MAX_SS 4096 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MIN_SS 512 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MULTI_PARTITION 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_MDAY 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_MON 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_YEAR 2017 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_PRINT_FLOAT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_PRINT_LLI 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_SFN_BUF 12 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_STRF_ENCODE 3 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_STR_VOLUME_ID 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_SYNC_T HANDLE // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_CHMOD 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_EXPAND 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FASTSEEK 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FIND 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FORWARD 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_LABEL 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_LFN 3 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_MKFS 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_STRFUNC 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_TRIM 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_VOLUMES 4 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_VOLUME_STRS "RAM","NAND","CF","SD","SD2","USB","USB2","USB3" // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_CLUSTER 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_SECTOR 1 // set by library:fat_chan +#define MBED_CONF_FILESYSTEM_PRESENT 1 // set by library:filesystem +#define MBED_CONF_FLASHIAP_BLOCK_DEVICE_BASE_ADDRESS 0xFFFFFFFF // set by library:flashiap-block-device +#define MBED_CONF_FLASHIAP_BLOCK_DEVICE_SIZE 0 // set by library:flashiap-block-device +#define MBED_CONF_LORA_ADR_ON 1 // set by library:lora +#define MBED_CONF_LORA_APPLICATION_EUI {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APPLICATION_KEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APPSKEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APP_PORT 15 // set by library:lora +#define MBED_CONF_LORA_AUTOMATIC_UPLINK_MESSAGE 1 // set by library:lora +#define MBED_CONF_LORA_DEVICE_ADDRESS 0x00000000 // set by library:lora +#define MBED_CONF_LORA_DEVICE_EUI {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_DOWNLINK_PREAMBLE_LENGTH 5 // set by library:lora +#define MBED_CONF_LORA_DUTY_CYCLE_ON 1 // set by library:lora +#define MBED_CONF_LORA_DUTY_CYCLE_ON_JOIN 1 // set by library:lora +#define MBED_CONF_LORA_FSB_MASK {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FF} // set by library:lora +#define MBED_CONF_LORA_FSB_MASK_CHINA {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF} // set by library:lora +#define MBED_CONF_LORA_LBT_ON 0 // set by library:lora +#define MBED_CONF_LORA_MAX_SYS_RX_ERROR 5 // set by library:lora +#define MBED_CONF_LORA_NB_TRIALS 12 // set by library:lora +#define MBED_CONF_LORA_NWKSKEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_OVER_THE_AIR_ACTIVATION 1 // set by library:lora +#define MBED_CONF_LORA_PHY EU868 // set by library:lora +#define MBED_CONF_LORA_PUBLIC_NETWORK 1 // set by library:lora +#define MBED_CONF_LORA_TX_MAX_SIZE 64 // set by library:lora +#define MBED_CONF_LORA_UPLINK_PREAMBLE_LENGTH 8 // set by library:lora +#define MBED_CONF_LORA_WAKEUP_TIME 5 // set by library:lora +#define MBED_CONF_LWIP_ADDR_TIMEOUT 5 // set by library:lwip +#define MBED_CONF_LWIP_ADDR_TIMEOUT_MODE 1 // set by library:lwip +#define MBED_CONF_LWIP_DEBUG_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_DEFAULT_THREAD_STACKSIZE 512 // set by library:lwip +#define MBED_CONF_LWIP_DHCP_TIMEOUT 60 // set by library:lwip +#define MBED_CONF_LWIP_ENABLE_PPP_TRACE 0 // set by library:lwip +#define MBED_CONF_LWIP_ETHERNET_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_IPV4_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_IPV6_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_IP_VER_PREF 4 // set by library:lwip +#define MBED_CONF_LWIP_L3IP_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_MBOX_SIZE 8 // set by library:lwip +#define MBED_CONF_LWIP_MEMP_NUM_TCPIP_MSG_INPKT 8 // set by library:lwip +#define MBED_CONF_LWIP_MEMP_NUM_TCP_SEG 16 // set by library:lwip +#define MBED_CONF_LWIP_MEM_SIZE 1600 // set by library:lwip +#define MBED_CONF_LWIP_ND6_QUEUEING 0 // set by library:lwip +#define MBED_CONF_LWIP_ND6_RDNSS_MAX_DNS_SERVERS 0 // set by library:lwip +#define MBED_CONF_LWIP_NETBUF_RECVINFO_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_NUM_NETBUF 8 // set by library:lwip +#define MBED_CONF_LWIP_NUM_PBUF 8 // set by library:lwip +#define MBED_CONF_LWIP_PBUF_POOL_SIZE 5 // set by library:lwip +#define MBED_CONF_LWIP_PPP_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_IPV4_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_IPV6_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_THREAD_STACKSIZE 768 // set by library:lwip +#define MBED_CONF_LWIP_PRESENT 1 // set by library:lwip +#define MBED_CONF_LWIP_RAW_SOCKET_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCPIP_THREAD_PRIORITY osPriorityNormal // set by library:lwip +#define MBED_CONF_LWIP_TCPIP_THREAD_STACKSIZE 1200 // set by library:lwip +#define MBED_CONF_LWIP_TCP_CLOSE_TIMEOUT 1000 // set by library:lwip +#define MBED_CONF_LWIP_TCP_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_TCP_MAXRTX 6 // set by library:lwip +#define MBED_CONF_LWIP_TCP_MSS 536 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SERVER_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SND_BUF (2 * TCP_MSS) // set by library:lwip +#define MBED_CONF_LWIP_TCP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SYNMAXRTX 6 // set by library:lwip +#define MBED_CONF_LWIP_TCP_WND (4 * TCP_MSS) // set by library:lwip +#define MBED_CONF_LWIP_UDP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_USE_MBED_TRACE 0 // set by library:lwip +#define MBED_CONF_MCR20A_PROVIDE_DEFAULT 0 // set by library:mcr20a +#define MBED_CONF_NANOSTACK_LIBSERVICE_NSDYNMEM_TRACKER_ENABLED 0 // set by library:nanostack-libservice +#define MBED_CONF_NANOSTACK_LIBSERVICE_PRESENT 1 // set by library:nanostack-libservice +#define MBED_CONF_NORDIC_NRF_LF_CLOCK_CALIB_MODE_CONFIG 0 // set by target:MCU_NRF52840 +#define MBED_CONF_NORDIC_NRF_LF_CLOCK_CALIB_TIMER_INTERVAL 16 // set by target:MCU_NRF52840 +#define MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC NRF_LF_SRC_XTAL // set by target:MCU_NRF52840 +#define MBED_CONF_NSAPI_ADD_EVENT_LISTENER_RETURN_CHANGE 0 // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_MESH_TYPE THREAD // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_STACK LWIP // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY NONE // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_ADDRESSES_LIMIT 10 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_CACHE_SIZE 3 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_RESPONSE_WAIT_TIME 10000 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_RETRIES 1 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_TOTAL_ATTEMPTS 10 // set by library:nsapi +#define MBED_CONF_NSAPI_PRESENT 1 // set by library:nsapi +#define MBED_CONF_NSAPI_SOCKET_STATS_ENABLED 0 // set by library:nsapi +#define MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT 10 // set by library:nsapi +#define MBED_CONF_PLATFORM_CALLBACK_COMPARABLE 1 // set by library:platform +#define MBED_CONF_PLATFORM_CALLBACK_NONTRIVIAL 1 // set by application[*] +#define MBED_CONF_PLATFORM_CRASH_CAPTURE_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_CTHUNK_COUNT_MAX 8 // set by library:platform +#define MBED_CONF_PLATFORM_DEEPSLEEP_STATS_VERBOSE 1 // set by library:platform +#define MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE 115200 // set by application[*] +#define MBED_CONF_PLATFORM_ERROR_ALL_THREADS_INFO 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_FILENAME_CAPTURE_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_HIST_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_HIST_SIZE 4 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_REBOOT_MAX 1 // set by library:platform +#define MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_MAX_ERROR_FILENAME_LEN 16 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_ENABLE_64_BIT 1 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_ENABLE_FLOATING_POINT 0 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_SET_FLOATING_POINT_MAX_DECIMALS 6 // set by library:platform +#define MBED_CONF_PLATFORM_POLL_USE_LOWPOWER_TIMER 0 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_BAUD_RATE 115200 // set by application[*] +#define MBED_CONF_PLATFORM_STDIO_BUFFERED_SERIAL 0 // set by application[*] +#define MBED_CONF_PLATFORM_STDIO_CONVERT_NEWLINES 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_CONVERT_TTY_NEWLINES 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_FLUSH_AT_EXIT 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY 0 // set by library:platform +#define MBED_CONF_PLATFORM_USE_MPU 1 // set by library:platform +#define MBED_CONF_PPP_ENABLED 0 // set by library:ppp +#define MBED_CONF_PPP_ENABLE_TRACE 0 // set by library:ppp +#define MBED_CONF_PPP_IPV4_ENABLED 1 // set by library:ppp +#define MBED_CONF_PPP_IPV6_ENABLED 0 // set by library:ppp +#define MBED_CONF_PPP_MBED_EVENT_QUEUE 0 // set by library:ppp +#define MBED_CONF_PPP_THREAD_STACKSIZE 816 // set by library:ppp +#define MBED_CONF_RTOS_API_PRESENT 1 // set by library:rtos-api +#define MBED_CONF_RTOS_ENABLE_ALL_RTX_EVENTS 0 // set by library:rtos +#define MBED_CONF_RTOS_EVFLAGS_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE 512 // set by library:rtos +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE_DEBUG_EXTRA 0 // set by library:rtos +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE_TICKLESS_EXTRA 256 // set by library:rtos +#define MBED_CONF_RTOS_MAIN_THREAD_STACK_SIZE 32768 // set by application[*] +#define MBED_CONF_RTOS_MSGQUEUE_DATA_SIZE 0 // set by library:rtos +#define MBED_CONF_RTOS_MSGQUEUE_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_MUTEX_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_PRESENT 1 // set by library:rtos +#define MBED_CONF_RTOS_SEMAPHORE_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_STACK_SIZE 4096 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_USER_STACK_SIZE 0 // set by library:rtos +#define MBED_CONF_RTOS_TIMER_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_TIMER_THREAD_STACK_SIZE 768 // set by library:rtos +#define MBED_CONF_S2LP_PROVIDE_DEFAULT 0 // set by library:s2lp +#define MBED_CONF_STORAGE_DEFAULT_KV kv // set by library:storage +#define MBED_CONF_STORAGE_FILESYSTEM_BLOCKDEVICE default // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_SIZE 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_FILESYSTEM default // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_FOLDER_PATH kvstore // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_MOUNT_POINT kv // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_BLOCKDEVICE default // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_EXTERNAL_SIZE 0 // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FILESYSTEM default // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FOLDER_PATH kvstore // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_MOUNT_POINT kv // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_STORAGE_TYPE default // set by library:storage +#define MBED_CONF_STORAGE_TDB_EXTERNAL_BLOCKDEVICE default // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_SIZE 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_BLOCKDEVICE default // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_EXTERNAL_SIZE 0 // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_internal +#define MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE 0 // set by library:storage_tdb_internal +#define MBED_CONF_TARGET_BOOT_STACK_SIZE 0x400 // set by library:rtos[*] +#define MBED_CONF_TARGET_CONSOLE_UART 1 // set by target:Target +#define MBED_CONF_TARGET_CUSTOM_TICKERS 1 // set by target:Target +#define MBED_CONF_TARGET_DEEP_SLEEP_LATENCY 0 // set by target:Target +#define MBED_CONF_TARGET_DEFAULT_ADC_VREF NAN // set by target:Target +#define MBED_CONF_TARGET_INIT_US_TICKER_AT_BOOT 0 // set by target:Target +#define MBED_CONF_TARGET_INTERNAL_FLASH_UNIFORM_SECTORS 1 // set by target:Target +#define MBED_CONF_TARGET_MPU_ROM_END 0x1fffffff // set by target:MCU_NRF52840 +#define MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER 0 // set by target:Target +#define MBED_CONF_TARGET_UART_0_FIFO_SIZE 32 // set by target:MCU_NRF52840 +#define MBED_CONF_TARGET_UART_1_FIFO_SIZE 32 // set by target:MCU_NRF52840 +#define MBED_CONF_TARGET_XIP_ENABLE 0 // set by target:Target +#define MBED_CRC_TABLE_SIZE 16 // set by library:drivers +#define MBED_LFS2_BLOCK_CYCLES 1024 // set by library:littlefs2 +#define MBED_LFS2_BLOCK_SIZE 512 // set by library:littlefs2 +#define MBED_LFS2_CACHE_SIZE 64 // set by library:littlefs2 +#define MBED_LFS2_ENABLE_INFO 0 // set by library:littlefs2 +#define MBED_LFS2_INTRINSICS 1 // set by library:littlefs2 +#define MBED_LFS2_LOOKAHEAD_SIZE 64 // set by library:littlefs2 +#define MBED_LFS_BLOCK_SIZE 512 // set by library:littlefs +#define MBED_LFS_ENABLE_INFO 0 // set by library:littlefs +#define MBED_LFS_INTRINSICS 1 // set by library:littlefs +#define MBED_LFS_LOOKAHEAD 512 // set by library:littlefs +#define MBED_LFS_PROG_SIZE 64 // set by library:littlefs +#define MBED_LFS_READ_SIZE 64 // set by library:littlefs +#define MBED_STACK_DUMP_ENABLED 0 // set by library:platform +#define MBED_TRACE_COLOR_THEME 0 // set by library:mbed-trace +#define MEM_ALLOC malloc // set by library:mbed-trace +#define MEM_FREE free // set by library:mbed-trace +#define PPP_DEBUG 0 // set by library:ppp +#define QSPIF_SFDP_DATA_LEN 128 // set by target:MCU_NRF52840 +#define SEC_CCM_CFG 1 // set by library:cordio +#define SMP_DB_MAX_DEVICES 3 // set by library:cordio +#define WSF_TRACE_ENABLED 0 // set by library:cordio +// Macros +#define BB_CLK_RATE_HZ 1000000 // defined by library:cordio-nordic-ll +#define INIT_BROADCASTER // defined by library:cordio-nordic-ll +#define INIT_CENTRAL // defined by library:cordio-nordic-ll +#define INIT_ENCRYPTED // defined by library:cordio-nordic-ll +#define INIT_OBSERVER // defined by library:cordio-nordic-ll +#define INIT_PERIPHERAL // defined by library:cordio-nordic-ll +#define LHCI_ENABLE_VS 0 // defined by library:cordio-nordic-ll +#define LL_MAX_PER_SCAN 3 // defined by library:cordio-nordic-ll +#define MBEDTLS_CIPHER_MODE_CTR // defined by library:SecureStore +#define NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS 8 // defined by application +#define NRFX_WDT_ENABLED 1 // defined by application +#define NSAPI_PPP_AVAILABLE (MBED_CONF_PPP_ENABLED || MBED_CONF_LWIP_PPP_ENABLED) // defined by library:ppp +#define NSDYNMEM_TRACKER_ENABLED MBED_CONF_NANOSTACK_LIBSERVICE_NSDYNMEM_TRACKER_ENABLED // defined by library:nanostack-libservice +#define UNITY_INCLUDE_CONFIG_H // defined by library:utest +#define WSF_MS_PER_TICK 1 // defined by library:cordio +#define _RTE_ // defined by library:rtos + +#endif diff --git a/variants/SFE_NINAB306_THING_PLUS/pinmode_arduino.h b/variants/SFE_NINAB306_THING_PLUS/pinmode_arduino.h new file mode 100644 index 000000000..9f3c481a6 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/pinmode_arduino.h @@ -0,0 +1,52 @@ + +/* Define mock symbols to nullify PinMode definitions */ +#define PullNone TempPullNone +#define PullDown TempPullDown +#define PullUp TempPullUp +#define PullDefault TempPullDefault + +#define INPUT TempINPUT +#define OUTPUT TempOUTPUT +#define INPUT_PULLUP TempINPUT_PULLUP +#define INPUT_PULLDOWN TempINPUT_PULLDOWN + +/* Rename symbol PinMode into MbedPinMode for all the file PinNames.h + * Functions using PinMode should be redeclared with the correct PinMode symbol */ +#define PinMode MbedPinMode +#include "mbed_config.h" +#include "PinNames.h" +#undef PinMode + +/* Rename symbol PinMode into ArduinoPinMode for all the file Common.h + * Functions using PinMode should be redeclared with the correct PinMode symbol */ +#define PinMode ArduinoPinMode +#include "api/Common.h" +#undef PinMode + +#undef PullNone +#undef PullDown +#undef PullUp +#undef PullDefault + +#undef INPUT +#undef OUTPUT +#undef INPUT_PULLUP +#undef INPUT_PULLDOWN + +typedef enum { + PullNone = TempPullNone, + PullDown = TempPullDown, + PullUp = TempPullUp, + PullDefault = TempPullDefault, + INPUT = TempINPUT, + OUTPUT = TempOUTPUT, + INPUT_PULLUP = TempINPUT_PULLUP, + INPUT_PULLDOWN = TempINPUT_PULLDOWN +} PinMode; + +#if defined(__cplusplus) + +/* Redeclare Common.h functions with the updated PinMode */ +void pinMode(pin_size_t pinNumber, PinMode pinMode); + +#endif \ No newline at end of file diff --git a/variants/SFE_NINAB306_THING_PLUS/pins_arduino.h b/variants/SFE_NINAB306_THING_PLUS/pins_arduino.h new file mode 100644 index 000000000..068751f81 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/pins_arduino.h @@ -0,0 +1,175 @@ +#pragma once +#include +#include + +#ifndef __PINS_ARDUINO__ +#define __PINS_ARDUINO__ + +#define ANALOG_CONFIG + +/* Analog reference options + * Different possibilities available combining Reference and Gain + */ +enum _AnalogReferenceMode +{ + AR_VDD, // 3.3 V + AR_INTERNAL, // 0.6 V + AR_INTERNAL1V2, // 1.2 V + AR_INTERNAL2V4 // 2.4 V +}; + +/* Analog acquisition time options */ +enum _AnalogAcquisitionTime +{ + AT_3_US, + AT_5_US, + AT_10_US, // Default value + AT_15_US, + AT_20_US, + AT_40_US +}; + +// Frequency of the board main oscillator +#define VARIANT_MAINOSC (32768ul) + +// Master clock frequency +#define VARIANT_MCK (64000000ul) + +// Pins +// ---- + +// Number of pins defined in PinDescription array +#ifdef __cplusplus +extern "C" unsigned int PINCOUNT_fn(); +#endif +#define PINS_COUNT (PINCOUNT_fn()) +#define NUM_DIGITAL_PINS (21u) +#define NUM_ANALOG_INPUTS (6u) +#define NUM_ANALOG_OUTPUTS (0u) + +extern PinName digitalPinToPinName(pin_size_t P); + +// LEDs +// ---- +#define PIN_LED (21u) +#define LED_BUILTIN PIN_LED +#define LEDRGB (20u) + +// Analog pins +// ----------- +#define PIN_A0 (14u) +#define PIN_A1 (15u) +#define PIN_A2 (16u) +#define PIN_A3 (17u) +#define PIN_A4 (18u) +#define PIN_A5 (19u) +static const uint8_t A0 = PIN_A0; +static const uint8_t A1 = PIN_A1; +static const uint8_t A2 = PIN_A2; +static const uint8_t A3 = PIN_A3; +static const uint8_t A4 = PIN_A4; +static const uint8_t A5 = PIN_A5; +#define ADC_RESOLUTION 12 + +// Digital pins +// ----------- +#define D0 (0u) +#define D1 (1u) +#define D2 (2u) +#define D3 (3u) +#define D4 (4u) +#define D5 (5u) +#define D6 (6u) +#define D7 (7u) +#define D8 (8u) +#define D9 (9u) +#define D10 (10u) +#define D11 (11u) +#define D12 (12u) +#define D13 (13u) + +/* + * Serial interfaces + */ +// Serial (EDBG) +#define PIN_SERIAL_RX (0ul) +#define PIN_SERIAL_TX (1ul) + +// SPI +#define PIN_SPI_MISO (8u) +#define PIN_SPI_MOSI (7u) +#define PIN_SPI_SCK (27u) +#define PIN_SPI_SS (25u) + +static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. +static const uint8_t MOSI = PIN_SPI_MOSI; +static const uint8_t MISO = PIN_SPI_MISO; +static const uint8_t SCK = PIN_SPI_SCK; + +// Wire +#define PIN_WIRE_SDA (3u) +#define PIN_WIRE_SCL (4u) + +// Interrupts +#define PIN_INT_IMU1 (22u) +#define PIN_INT_IMU2 (23u) + +// SD Interfaces +#define PIN_SD_CS (25u) +#define PIN_SD_DET (26u) + +// Power GPIO +#define PIN_QWIIC_PWR_EN (28u) +#define PIN_BATT_ALRT (24u) + +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. +#define SERIAL_PORT_USBVIRTUAL SerialUSB +#define SERIAL_PORT_MONITOR SerialUSB +#define SERIAL_PORT_HARDWARE Serial1 +#define SERIAL_PORT_HARDWARE_OPEN Serial1 + + +// Mbed specific defines +#define SERIAL_HOWMANY 1 +#define SERIAL1_TX (digitalPinToPinName(PIN_SERIAL_TX)) +#define SERIAL1_RX (digitalPinToPinName(PIN_SERIAL_RX)) + +#define SERIAL_CDC 1 +#define HAS_UNIQUE_ISERIAL_DESCRIPTOR +#define BOARD_VENDORID 0x1b4f +#define BOARD_PRODUCTID 0x0031 +#define BOARD_NAME "SparkFun NINA-B306 Thing Plus" + +#define DFU_MAGIC_SERIAL_ONLY_RESET 0xb0 + +#define WIRE_HOWMANY 1 + +#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA)) +#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL)) + +#define SPI_HOWMANY 1 + +#define SPI_MISO (digitalPinToPinName(PIN_SPI_MISO)) +#define SPI_MOSI (digitalPinToPinName(PIN_SPI_MOSI)) +#define SPI_SCK (digitalPinToPinName(PIN_SPI_SCK)) + +#define digitalPinToPort(P) (digitalPinToPinName(P)/32) + +uint8_t getUniqueSerialNumber(uint8_t* name); +void _ontouch1200bps_(); + +#endif //__PINS_ARDUINO__ diff --git a/variants/SFE_NINAB306_THING_PLUS/variant.cpp b/variants/SFE_NINAB306_THING_PLUS/variant.cpp new file mode 100644 index 000000000..a5ded0a03 --- /dev/null +++ b/variants/SFE_NINAB306_THING_PLUS/variant.cpp @@ -0,0 +1,198 @@ +#include "Arduino.h" +#include "pinDefinitions.h" + +/* wiring_analog variables definition */ +/* Flag to indicate whether the ADC config has been changed from the default one */ +bool isAdcConfigChanged = false; + +// /* +// * Configuration used for all the active ADC channels, it is initialized with the mbed default values +// * When it is changed, all the ADC channels are reconfigured accordingly +// */ +// analogin_config_t adcCurrentConfig = { +// .resistor_p = NRF_SAADC_RESISTOR_DISABLED, +// .resistor_n = NRF_SAADC_RESISTOR_DISABLED, +// .gain = NRF_SAADC_GAIN1_4, +// .reference = NRF_SAADC_REFERENCE_VDD4, +// .acq_time = NRF_SAADC_ACQTIME_10US, +// .mode = NRF_SAADC_MODE_SINGLE_ENDED, +// .burst = NRF_SAADC_BURST_DISABLED, +// .pin_p = NRF_SAADC_INPUT_DISABLED, +// .pin_n = NRF_SAADC_INPUT_DISABLED +// }; + +void analogReference(uint8_t mode) +{ + nrf_saadc_reference_t reference = NRF_SAADC_REFERENCE_VDD4; + nrf_saadc_gain_t gain = NRF_SAADC_GAIN1_4; + if (mode == AR_VDD) { + reference = NRF_SAADC_REFERENCE_VDD4; + gain = NRF_SAADC_GAIN1_4; + } else if (mode == AR_INTERNAL) { + reference = NRF_SAADC_REFERENCE_INTERNAL; + gain = NRF_SAADC_GAIN1; + } else if (mode == AR_INTERNAL1V2) { + reference = NRF_SAADC_REFERENCE_INTERNAL; + gain = NRF_SAADC_GAIN1_2; + } else if (mode == AR_INTERNAL2V4) { + reference = NRF_SAADC_REFERENCE_INTERNAL; + gain = NRF_SAADC_GAIN1_4; + } + adcCurrentConfig.reference = reference; + adcCurrentConfig.gain = gain; + analogUpdate(); +} + +void analogAcquisitionTime(uint8_t time) +{ + nrf_saadc_acqtime_t acqTime = NRF_SAADC_ACQTIME_10US; + if (time == AT_3_US) { + acqTime = NRF_SAADC_ACQTIME_3US; + } else if (time == AT_5_US) { + acqTime = NRF_SAADC_ACQTIME_5US; + } else if (time == AT_10_US) { + acqTime = NRF_SAADC_ACQTIME_10US; + } else if (time == AT_15_US) { + acqTime = NRF_SAADC_ACQTIME_15US; + } else if (time == AT_20_US) { + acqTime = NRF_SAADC_ACQTIME_20US; + } else if (time == AT_40_US) { + acqTime = NRF_SAADC_ACQTIME_40US; + } + adcCurrentConfig.acq_time = acqTime; + analogUpdate(); +} + +AnalogPinDescription g_AAnalogPinDescription[] = { + // A0 - A5 + { P0_30, NULL }, // A0 + { P0_29, NULL }, // A1 + { P0_5, NULL }, // A2 + { P0_31, NULL }, // A3 + { P0_2, NULL }, // A4 + { P0_28, NULL } // A5 +}; + +PinDescription g_APinDescription[] = { + // Pinout + { P0_24, NULL, NULL, NULL }, // D0/RX + { P0_25, NULL, NULL, NULL }, // D1/TX + { P1_10, NULL, NULL, NULL }, // D2/FREE + { P0_6, NULL, NULL, NULL }, // D3/SDA + { P0_26, NULL, NULL, NULL }, // D4/SCL + { P1_1, NULL, NULL, NULL }, // D5/GPIO6 + { P0_4, NULL, NULL, NULL }, // D6/GPIO5 + { P0_20, NULL, NULL, NULL }, // D7/PICO + { P0_21, NULL, NULL, NULL }, // D8/POCI + { P0_16, NULL, NULL, NULL }, // D9/GPIO4 + { P0_15, NULL, NULL, NULL }, // D10/GPIO3 + { P0_14, NULL, NULL, NULL }, // D11/GPIO2 + { P0_13, NULL, NULL, NULL }, // D12/GPIO1 + { P0_27, NULL, NULL, NULL }, // D13/GPIO0 + + // A0 - A7 + { P0_30, NULL, NULL, NULL }, // A0 + { P0_29, NULL, NULL, NULL }, // A1 + { P0_5, NULL, NULL, NULL }, // A2 + { P0_31, NULL, NULL, NULL }, // A3 + { P0_2, NULL, NULL, NULL }, // A4 + { P0_28, NULL, NULL, NULL }, // A5 + + // LEDs + { P1_8, NULL, NULL, NULL }, // LED RGB DIN + { P1_14, NULL, NULL, NULL }, // LED STAT + + // ISM IMU Interrupts + { P1_12, NULL, NULL, NULL }, // IMU_INT1 + { P1_13, NULL, NULL, NULL }, // IMU_INT2 + + // Battery Fuel Guage Interrupts + { P1_11, NULL, NULL, NULL }, // !BATT_ALRT! + + // SD Card + { P0_17, NULL, NULL, NULL }, // SD_!CS! + { P1_3, NULL, NULL, NULL }, // SD_DET + { P0_19, NULL, NULL, NULL }, // SCK + + // QWIIC Power Enable + { P1_15, NULL, NULL, NULL }, // QWIIC_!PEN! + +}; + +extern "C" { + unsigned int PINCOUNT_fn() { + return (sizeof(g_APinDescription) / sizeof(g_APinDescription[0])); + } +} + +#include "nrf_rtc.h" +#include "nrf_uarte.h" +#include "nrf_uart.h" + +void initVariant() { +// // turn power LED on +// pinMode(LED_PWR, OUTPUT); +// digitalWrite(LED_PWR, HIGH); + +// // Errata Nano33BLE - I2C pullup is controlled by the SWO pin. +// // Configure the TRACEMUX to disable routing SWO signal to pin. +// NRF_CLOCK->TRACECONFIG = 0; + + // FIXME: bootloader enables interrupt on COMPARE[0], which we don't handle + // Disable it here to avoid getting stuck when OVERFLOW irq is triggered + nrf_rtc_event_disable(NRF_RTC1, NRF_RTC_INT_COMPARE0_MASK); + nrf_rtc_int_disable(NRF_RTC1, NRF_RTC_INT_COMPARE0_MASK); + + // Enable Qwiic Power by default + pinMode(PIN_QWIIC_PWR_EN, OUTPUT); + + digitalWrite(PIN_SD_CS, HIGH); + + // Disable UARTE0 which is initially enabled by the bootloader + nrf_uarte_task_trigger(NRF_UARTE0, NRF_UARTE_TASK_STOPRX); + while (!nrf_uarte_event_check(NRF_UARTE0, NRF_UARTE_EVENT_RXTO)) ; + NRF_UARTE0->ENABLE = 0; + NRF_UART0->ENABLE = 0; + + NRF_PWM_Type* PWM[] = { + NRF_PWM0, NRF_PWM1, NRF_PWM2 +#ifdef NRF_PWM3 + ,NRF_PWM3 +#endif + }; + + for (unsigned int i = 0; i < (sizeof(PWM)/sizeof(PWM[0])); i++) { + PWM[i]->ENABLE = 0; + PWM[i]->PSEL.OUT[0] = 0xFFFFFFFFUL; + } +} + +#ifdef SERIAL_CDC + +static void utox8(uint32_t val, uint8_t* s) { + for (int i = 0; i < 16; i=i+2) { + int d = val & 0XF; + val = (val >> 4); + + s[15 - i -1] = d > 9 ? 'A' + d - 10 : '0' + d; + s[15 - i] = '\0'; + } +} + +uint8_t getUniqueSerialNumber(uint8_t* name) { + #define SERIAL_NUMBER_WORD_0 NRF_FICR->DEVICEADDR[1] + #define SERIAL_NUMBER_WORD_1 NRF_FICR->DEVICEADDR[0] + + utox8(SERIAL_NUMBER_WORD_0, &name[0]); + utox8(SERIAL_NUMBER_WORD_1, &name[16]); + + return 32; +} + +void _ontouch1200bps_() { + __disable_irq(); + NRF_POWER->GPREGRET = DFU_MAGIC_SERIAL_ONLY_RESET; + NVIC_SystemReset(); +} + +#endif