diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c08f57b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,52 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
+/VisualGDB/
+/.visualgdb/
+/.vs/
diff --git a/app_config.h b/app_config.h
new file mode 100644
index 0000000..219a638
--- /dev/null
+++ b/app_config.h
@@ -0,0 +1,120 @@
+#pragma once
+#ifndef __APP_CONFIG_H__
+#define __APP_CONFIG_H__
+
+#define COUNTOF(x) (sizeof(x)/sizeof(x[0]))
+
+// LOG
+#define NRF_LOG_DEFAULT_LEVEL 4
+#define NRF_LOG_BACKEND_RTT_ENABLED 1
+#define NRF_LOG_BACKEND_UART_ENABLED 0
+#define NRF_LOG_DEFERRED 0
+#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 0
+
+// SEGGER-RTT
+#define SEGGER_RTT_SECTION ".segger_rtt"
+#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 1
+#define SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS 1
+#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 4000
+#define SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN 16
+
+#define NRF_SDH_CLOCK_LF_SRC 0
+#define NRF_SDH_CLOCK_LF_RC_CTIV 12
+#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 2
+#define NRF_SDH_CLOCK_LF_ACCURACY 1
+
+// DFU
+#define NRF_BL_DFU_ENTER_METHOD_BUTTON 0
+#define NRF_BL_DFU_ENTER_METHOD_BUTTONLESS 1
+#define NRF_BL_DFU_ALLOW_UPDATE_FROM_APP 1
+#define NRF_DFU_SETTINGS_COMPATIBILITY_MODE 0
+#define NRF_DFU_APP_DOWNGRADE_PREVENTION 0
+#define NRF_DFU_APP_DATA_AREA_SIZE (CODE_PAGE_SIZE*4)
+
+// DFU over BLE
+#define NRF_DFU_TRANSPORT_BLE 1
+
+// DFU over USBD
+#define SLIP_ENABLED 1
+#define NRF_DFU_SERIAL_USB_RX_BUFFERS 3
+
+// USBD
+#define NRFX_USBD_ENABLED 1
+#define NRFX_USBD_CONFIG_IRQ_PRIORITY 6
+#define NRFX_USBD_CONFIG_DMASCHEDULER_MODE 0
+#define NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST 1
+#define NRFX_USBD_CONFIG_ISO_IN_ZLP 0
+#define NRFX_USBD_USE_WORKAROUND_FOR_ANOMALY_211 0
+
+#define USBD_ENABLED 1
+#define USBD_CONFIG_IRQ_PRIORITY 6
+#define USBD_CONFIG_DMASCHEDULER_MODE 0
+#define USBD_CONFIG_DMASCHEDULER_ISO_BOOST 1
+#define USBD_CONFIG_ISO_IN_ZLP 0
+
+// USBD CDC
+#define APP_USBD_CDC_ACM_ENABLED 1
+#define APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE 1
+#define APP_USBD_ENABLED 1
+#define APP_USBD_VID 0x1915
+#define APP_USBD_PID 0x521F
+#define APP_USBD_DEVICE_VER_MAJOR 1
+#define APP_USBD_DEVICE_VER_MINOR 0
+#define APP_USBD_DEVICE_VER_SUB 0
+#define APP_USBD_CONFIG_SELF_POWERED 1
+#define APP_USBD_CONFIG_MAX_POWER 100
+#define APP_USBD_CONFIG_POWER_EVENTS_PROCESS 1
+#define APP_USBD_CONFIG_EVENT_QUEUE_ENABLE 0
+#define APP_USBD_CONFIG_EVENT_QUEUE_SIZE 32
+#define APP_USBD_CONFIG_SOF_HANDLING_MODE 1
+#define APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE 0
+#define APP_USBD_CONFIG_DESC_STRING_SIZE 31
+#define APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED 0
+#define APP_USBD_STRINGS_LANGIDS APP_USBD_LANG_AND_SUBLANG(APP_USBD_LANG_ENGLISH, APP_USBD_SUBLANG_ENGLISH_US)
+#define APP_USBD_STRING_ID_MANUFACTURER 1
+#define APP_USBD_STRINGS_MANUFACTURER_EXTERN 0
+#define APP_USBD_STRINGS_MANUFACTURER APP_USBD_STRING_DESC("Nordic Semiconductor")
+#define APP_USBD_STRING_ID_PRODUCT 2
+#define APP_USBD_STRINGS_PRODUCT_EXTERN 0
+#define APP_USBD_STRINGS_PRODUCT APP_USBD_STRING_DESC("Secure DFU Bootloader")
+#define APP_USBD_STRING_ID_SERIAL 3
+#define APP_USBD_STRING_SERIAL_EXTERN 1
+#define APP_USBD_STRING_SERIAL g_extern_serial_number
+#define APP_USBD_STRING_ID_CONFIGURATION 4
+#define APP_USBD_STRING_CONFIGURATION_EXTERN 0
+#define APP_USBD_STRINGS_CONFIGURATION APP_USBD_STRING_DESC("Default configuration")
+#define APP_USBD_STRINGS_USER X(APP_USER_1, , APP_USBD_STRING_DESC("User 1"))
+
+// Power & Clock
+#define NRFX_POWER_ENABLED 1
+#define NRFX_POWER_CONFIG_IRQ_PRIORITY 6
+#define NRFX_POWER_CONFIG_DEFAULT_DCDCEN 0
+#define NRFX_POWER_CONFIG_DEFAULT_DCDCENHV 0
+#define POWER_ENABLED 1
+#define POWER_CONFIG_IRQ_PRIORITY 6
+#define POWER_CONFIG_DEFAULT_DCDCEN 0
+#define POWER_CONFIG_DEFAULT_DCDCENHV 0
+#define NRFX_CLOCK_CONFIG_LF_SRC 0
+#define NRFX_CLOCK_CONFIG_IRQ_PRIORITY 6
+#define NRF_CLOCK_ENABLED 1
+#define CLOCK_CONFIG_IRQ_PRIORITY 6
+
+#define LED_SOFTBLINK_ENABLED 1
+#define NRF_SORTLIST_ENABLED 1
+#define LOW_POWER_PWM_ENABLED 1
+
+#define APP_TIMER_V2_RTC1_ENABLED 1
+#define APP_TIMER_WITH_PROFILER 0
+#define APP_TIMER_CONFIG_USE_SCHEDULER 0
+#define APP_TIMER_CONFIG_IRQ_PRIORITY 6
+#define APP_TIMER_CONFIG_RTC_FREQUENCY 0
+#define APP_TIMER_CONFIG_OP_QUEUE_SIZE 10
+#define APP_TIMER_SAFE_WINDOW_MS (30 * 1000)
+#define APP_TIMER_KEEPS_RTC_ACTIVE 1
+
+#define DFU_LED_CONFIG_TRANSPORT_ACTIVE_BREATH_MS 300
+#define DFU_LED_CONFIG_TRANSPORT_INACTIVE_BREATH_MS 600
+#define DFU_LED_CONFIG_PROGRESS_BLINK_MS 100
+
+#endif // !__APP_CONFIG_H__
+
diff --git a/bmd380_bootloader-Debug.bat b/bmd380_bootloader-Debug.bat
new file mode 100644
index 0000000..7002a9e
--- /dev/null
+++ b/bmd380_bootloader-Debug.bat
@@ -0,0 +1,199 @@
+@echo off
+REM Run this file to build the project outside of the IDE.
+REM WARNING: if using a different machine, copy the .rsp files together with this script.
+echo led_softblink.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/led_softblink/led_softblink.gcc.rsp" || exit 1
+echo low_power_pwm.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/low_power_pwm/low_power_pwm.gcc.rsp" || exit 1
+echo slip.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/slip/slip.gcc.rsp" || exit 1
+echo nrf_sortlist.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/sortlist/nrf_sortlist.gcc.rsp" || exit 1
+echo app_timer2.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/timer/app_timer2.gcc.rsp" || exit 1
+echo drv_rtc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/timer/drv_rtc.gcc.rsp" || exit 1
+echo nrf_drv_clock.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/integration/nrfx/legacy/nrf_drv_clock.gcc.rsp" || exit 1
+echo nrf_drv_power.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/integration/nrfx/legacy/nrf_drv_power.gcc.rsp" || exit 1
+echo nrf_dfu_serial.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/serial_dfu/nrf_dfu_serial.gcc.rsp" || exit 1
+echo nrf_dfu_serial_usb.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/serial_dfu/nrf_dfu_serial_usb.gcc.rsp" || exit 1
+echo app_usbd.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/usbd/app_usbd.gcc.rsp" || exit 1
+echo app_usbd_core.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/usbd/app_usbd_core.gcc.rsp" || exit 1
+echo app_usbd_serial_num.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/usbd/app_usbd_serial_num.gcc.rsp" || exit 1
+echo app_usbd_string_desc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/usbd/app_usbd_string_desc.gcc.rsp" || exit 1
+echo app_usbd_cdc_acm.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.gcc.rsp" || exit 1
+echo nrfx_clock.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/modules/nrfx/drivers/src/nrfx_clock.gcc.rsp" || exit 1
+echo nrfx_power.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/modules/nrfx/drivers/src/nrfx_power.gcc.rsp" || exit 1
+echo nrfx_usbd.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/modules/nrfx/drivers/src/nrfx_usbd.gcc.rsp" || exit 1
+echo dfu_public_key.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/dfu_public_key.gcc.rsp" || exit 1
+echo main.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/main.gcc.rsp" || exit 1
+echo nrf_log_backend_rtt.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/log/src/nrf_log_backend_rtt.gcc.rsp" || exit 1
+echo nrf_log_backend_serial.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/log/src/nrf_log_backend_serial.gcc.rsp" || exit 1
+echo nrf_log_default_backends.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/log/src/nrf_log_default_backends.gcc.rsp" || exit 1
+echo nrf_log_frontend.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/log/src/nrf_log_frontend.gcc.rsp" || exit 1
+echo nrf_log_str_formatter.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/log/src/nrf_log_str_formatter.gcc.rsp" || exit 1
+echo app_error_weak.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/util/app_error_weak.gcc.rsp" || exit 1
+echo app_scheduler.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/scheduler/app_scheduler.gcc.rsp" || exit 1
+echo app_util_platform.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/util/app_util_platform.gcc.rsp" || exit 1
+echo crc32.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crc32/crc32.gcc.rsp" || exit 1
+echo mem_manager.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/mem_manager/mem_manager.gcc.rsp" || exit 1
+echo nrf_assert.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/util/nrf_assert.gcc.rsp" || exit 1
+echo nrf_atfifo.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/atomic_fifo/nrf_atfifo.gcc.rsp" || exit 1
+echo nrf_atomic.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/atomic/nrf_atomic.gcc.rsp" || exit 1
+echo nrf_balloc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/balloc/nrf_balloc.gcc.rsp" || exit 1
+echo nrf_fprintf.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/external/fprintf/nrf_fprintf.gcc.rsp" || exit 1
+echo nrf_fprintf_format.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/external/fprintf/nrf_fprintf_format.gcc.rsp" || exit 1
+echo nrf_fstorage.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/fstorage/nrf_fstorage.gcc.rsp" || exit 1
+echo nrf_fstorage_nvmc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/fstorage/nrf_fstorage_nvmc.gcc.rsp" || exit 1
+echo nrf_fstorage_sd.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/fstorage/nrf_fstorage_sd.gcc.rsp" || exit 1
+echo nrf_memobj.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/memobj/nrf_memobj.gcc.rsp" || exit 1
+echo nrf_queue.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/queue/nrf_queue.gcc.rsp" || exit 1
+echo nrf_ringbuf.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/ringbuf/nrf_ringbuf.gcc.rsp" || exit 1
+echo nrf_section_iter.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/experimental_section_vars/nrf_section_iter.gcc.rsp" || exit 1
+echo nrf_strerror.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/strerror/nrf_strerror.gcc.rsp" || exit 1
+echo cc310_bl_backend_ecc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_ecc.gcc.rsp" || exit 1
+echo cc310_bl_backend_ecdsa.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_ecdsa.gcc.rsp" || exit 1
+echo cc310_bl_backend_hash.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_hash.gcc.rsp" || exit 1
+echo cc310_bl_backend_init.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_init.gcc.rsp" || exit 1
+echo cc310_bl_backend_shared.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_shared.gcc.rsp" || exit 1
+echo boards.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/boards/boards.gcc.rsp" || exit 1
+echo nrf_sdh.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/softdevice/common/nrf_sdh.gcc.rsp" || exit 1
+echo nrf_sdh_ble.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/softdevice/common/nrf_sdh_ble.gcc.rsp" || exit 1
+echo nrf_sdh_soc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/softdevice/common/nrf_sdh_soc.gcc.rsp" || exit 1
+echo nrf_nvmc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/modules/nrfx/hal/nrf_nvmc.gcc.rsp" || exit 1
+echo nrfx_atomic.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/modules/nrfx/soc/nrfx_atomic.gcc.rsp" || exit 1
+echo nrf_crypto_ecc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/nrf_crypto_ecc.gcc.rsp" || exit 1
+echo nrf_crypto_ecdsa.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/nrf_crypto_ecdsa.gcc.rsp" || exit 1
+echo nrf_crypto_hash.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/nrf_crypto_hash.gcc.rsp" || exit 1
+echo nrf_crypto_init.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/nrf_crypto_init.gcc.rsp" || exit 1
+echo nrf_crypto_shared.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/nrf_crypto_shared.gcc.rsp" || exit 1
+echo nrf_dfu_svci.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_svci.gcc.rsp" || exit 1
+echo nrf_dfu_svci_handler.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_svci_handler.gcc.rsp" || exit 1
+echo nrf_svc_handler.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/svc/nrf_svc_handler.gcc.rsp" || exit 1
+echo SEGGER_RTT.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/external/segger_rtt/SEGGER_RTT.gcc.rsp" || exit 1
+echo nrf_bootloader.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/nrf_bootloader.gcc.rsp" || exit 1
+echo nrf_bootloader_app_start.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/nrf_bootloader_app_start.gcc.rsp" || exit 1
+echo nrf_bootloader_app_start_final.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/nrf_bootloader_app_start_final.gcc.rsp" || exit 1
+echo nrf_bootloader_dfu_timers.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/nrf_bootloader_dfu_timers.gcc.rsp" || exit 1
+echo nrf_bootloader_fw_activation.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/nrf_bootloader_fw_activation.gcc.rsp" || exit 1
+echo nrf_bootloader_info.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/nrf_bootloader_info.gcc.rsp" || exit 1
+echo nrf_bootloader_wdt.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/nrf_bootloader_wdt.gcc.rsp" || exit 1
+echo pb_common.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/external/nano-pb/pb_common.gcc.rsp" || exit 1
+echo pb_decode.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/external/nano-pb/pb_decode.gcc.rsp" || exit 1
+echo dfu-cc.pb.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/dfu-cc.pb.gcc.rsp" || exit 1
+echo nrf_dfu.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu.gcc.rsp" || exit 1
+echo nrf_dfu_ble.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/ble_dfu/nrf_dfu_ble.gcc.rsp" || exit 1
+echo nrf_dfu_flash.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_flash.gcc.rsp" || exit 1
+echo nrf_dfu_handling_error.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_handling_error.gcc.rsp" || exit 1
+echo nrf_dfu_mbr.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_mbr.gcc.rsp" || exit 1
+echo nrf_dfu_req_handler.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_req_handler.gcc.rsp" || exit 1
+echo nrf_dfu_settings.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_settings.gcc.rsp" || exit 1
+echo nrf_dfu_settings_svci.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_settings_svci.gcc.rsp" || exit 1
+echo nrf_dfu_transport.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_transport.gcc.rsp" || exit 1
+echo nrf_dfu_utils.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_utils.gcc.rsp" || exit 1
+echo nrf_dfu_validation.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_validation.gcc.rsp" || exit 1
+echo nrf_dfu_ver_validation.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/bootloader/dfu/nrf_dfu_ver_validation.gcc.rsp" || exit 1
+echo ble_srv_common.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/ble/common/ble_srv_common.gcc.rsp" || exit 1
+echo oberon_backend_chacha_poly_aead.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/oberon/oberon_backend_chacha_poly_aead.gcc.rsp" || exit 1
+echo oberon_backend_ecc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/oberon/oberon_backend_ecc.gcc.rsp" || exit 1
+echo oberon_backend_ecdh.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/oberon/oberon_backend_ecdh.gcc.rsp" || exit 1
+echo oberon_backend_ecdsa.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/oberon/oberon_backend_ecdsa.gcc.rsp" || exit 1
+echo oberon_backend_eddsa.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/oberon/oberon_backend_eddsa.gcc.rsp" || exit 1
+echo oberon_backend_hash.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/oberon/oberon_backend_hash.gcc.rsp" || exit 1
+echo oberon_backend_hmac.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/components/libraries/crypto/backend/oberon/oberon_backend_hmac.gcc.rsp" || exit 1
+echo system_nrf52840.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/modules/nrfx/mdk/system_nrf52840.gcc.rsp" || exit 1
+echo gcc_startup_nrf52840.S
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/sysgcc/arm-eabi/bin/arm-none-eabi-g++.exe" @"VisualGDB/Debug/_1_/bmd380_sdk/modules/nrfx/mdk/gcc_startup_nrf52840.gcc.rsp" || exit 1
+echo Linking VisualGDB/Debug/bmd380_bootloader...
+c:\sysgcc\arm-eabi\bin\arm-none-eabi-g++.exe @VisualGDB/Debug/bmd380_bootloader.link.rsp || exit 1
+c:\sysgcc\arm-eabi\bin\arm-none-eabi-objcopy.exe @VisualGDB/Debug/bmd380_bootloader.mkbin.rsp || exit 1
+c:\sysgcc\arm-eabi\bin\arm-none-eabi-objcopy.exe @VisualGDB/Debug/bmd380_bootloader.mkihex.rsp || exit 1
diff --git a/bmd380_bootloader-Debug.vgdbsettings b/bmd380_bootloader-Debug.vgdbsettings
new file mode 100644
index 0000000..944799b
--- /dev/null
+++ b/bmd380_bootloader-Debug.vgdbsettings
@@ -0,0 +1,156 @@
+
+
+ Debug
+
+
+
+ MinGWUnixSlash
+ $(ToolchainDir)
+
+ true
+ $(ProjectDir)
+ false
+ false
+ nrf5x.xml
+ LinkerScript
+
+ X:\Github\ble_intelligent_bracelet\ble_intelligent_bracelet\bootloader
+
+ false
+
+
+
+
+
+ 0
+
+
+ neulive_boot.vcxproj
+
+
+
+
+ 1
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+ true
+
+
+
+
+ Unknown
+
+ true
+ true
+ true
+
+
+
+ false
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+ main
+ true
+ false
+ false
+ true
+ 0
+ false
+ 0
+ true
+ false
+
+
+ jlink-jtag
+
+ -select USB -device $$SYS:MCU_ID$$ -speed auto -if SWD
+ Enabled
+
+ target remote :$$SYS:GDB_PORT$$
+ mon reset
+ load
+ mon reset
+
+ false
+ false
+ 0
+
+
+ true
+ Auto
+ 0
+ false
+ false
+ true
+ false
+ false
+
+
+ false
+ true
+ false
+ 0
+ 0
+ Auto
+
+
+ false
+ false
+ true
+
+
+ true
+ 0
+ 0
+
+
+ _estack
+ 0
+ false
+
+ true
+
+
\ No newline at end of file
diff --git a/bmd380_bootloader-Debug.vgdbsettings.chain40.user b/bmd380_bootloader-Debug.vgdbsettings.chain40.user
new file mode 100644
index 0000000..f32862c
--- /dev/null
+++ b/bmd380_bootloader-Debug.vgdbsettings.chain40.user
@@ -0,0 +1,36 @@
+
+
+
+
+
+ false
+ false
+ false
+
+
+
+ false
+
+
+
+
+ com.sysprogs.AllGlobals
+
+
+
+ com.sysprogs.SpecificVariables
+
+
+
+ com.sysprogs.Custom
+
+
+
+
+ SpecificVariables
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/bmd380_bootloader-Release.bat b/bmd380_bootloader-Release.bat
new file mode 100644
index 0000000..edf6437
--- /dev/null
+++ b/bmd380_bootloader-Release.bat
@@ -0,0 +1,197 @@
+@echo off
+REM Run this file to build the project outside of the IDE.
+REM WARNING: if using a different machine, copy the .rsp files together with this script.
+echo dfu_public_key.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/_1_/tools/dfu_public_key.gcc.rsp" || exit 1
+echo nrf_dfu_serial.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/serial_dfu/nrf_dfu_serial.gcc.rsp" || exit 1
+echo nrf_dfu_serial_usb.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/serial_dfu/nrf_dfu_serial_usb.gcc.rsp" || exit 1
+echo slip.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/slip/slip.gcc.rsp" || exit 1
+echo app_usbd.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/usbd/app_usbd.gcc.rsp" || exit 1
+echo app_usbd_core.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/usbd/app_usbd_core.gcc.rsp" || exit 1
+echo app_usbd_serial_num.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/usbd/app_usbd_serial_num.gcc.rsp" || exit 1
+echo app_usbd_string_desc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/usbd/app_usbd_string_desc.gcc.rsp" || exit 1
+echo app_usbd_cdc_acm.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.gcc.rsp" || exit 1
+echo utf.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/external/utf_converter/utf.gcc.rsp" || exit 1
+echo nrf_drv_clock.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/integration/nrfx/legacy/nrf_drv_clock.gcc.rsp" || exit 1
+echo nrfx_clock.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/modules/nrfx/drivers/src/nrfx_clock.gcc.rsp" || exit 1
+echo nrfx_power.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/modules/nrfx/drivers/src/nrfx_power.gcc.rsp" || exit 1
+echo nrfx_usbd.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/modules/nrfx/drivers/src/nrfx_usbd.gcc.rsp" || exit 1
+echo main.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/main.gcc.rsp" || exit 1
+echo nrf_log_backend_rtt.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/log/src/nrf_log_backend_rtt.gcc.rsp" || exit 1
+echo nrf_log_backend_serial.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/log/src/nrf_log_backend_serial.gcc.rsp" || exit 1
+echo nrf_log_default_backends.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/log/src/nrf_log_default_backends.gcc.rsp" || exit 1
+echo nrf_log_frontend.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/log/src/nrf_log_frontend.gcc.rsp" || exit 1
+echo nrf_log_str_formatter.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/log/src/nrf_log_str_formatter.gcc.rsp" || exit 1
+echo app_error_weak.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/util/app_error_weak.gcc.rsp" || exit 1
+echo app_scheduler.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/scheduler/app_scheduler.gcc.rsp" || exit 1
+echo app_util_platform.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/util/app_util_platform.gcc.rsp" || exit 1
+echo crc32.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crc32/crc32.gcc.rsp" || exit 1
+echo mem_manager.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/mem_manager/mem_manager.gcc.rsp" || exit 1
+echo nrf_assert.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/util/nrf_assert.gcc.rsp" || exit 1
+echo nrf_atfifo.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/atomic_fifo/nrf_atfifo.gcc.rsp" || exit 1
+echo nrf_atomic.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/atomic/nrf_atomic.gcc.rsp" || exit 1
+echo nrf_balloc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/balloc/nrf_balloc.gcc.rsp" || exit 1
+echo nrf_fprintf.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/external/fprintf/nrf_fprintf.gcc.rsp" || exit 1
+echo nrf_fprintf_format.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/external/fprintf/nrf_fprintf_format.gcc.rsp" || exit 1
+echo nrf_fstorage.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/fstorage/nrf_fstorage.gcc.rsp" || exit 1
+echo nrf_fstorage_nvmc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/fstorage/nrf_fstorage_nvmc.gcc.rsp" || exit 1
+echo nrf_fstorage_sd.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/fstorage/nrf_fstorage_sd.gcc.rsp" || exit 1
+echo nrf_memobj.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/memobj/nrf_memobj.gcc.rsp" || exit 1
+echo nrf_queue.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/queue/nrf_queue.gcc.rsp" || exit 1
+echo nrf_ringbuf.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/ringbuf/nrf_ringbuf.gcc.rsp" || exit 1
+echo nrf_section_iter.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/experimental_section_vars/nrf_section_iter.gcc.rsp" || exit 1
+echo nrf_strerror.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/strerror/nrf_strerror.gcc.rsp" || exit 1
+echo cc310_bl_backend_ecc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_ecc.gcc.rsp" || exit 1
+echo cc310_bl_backend_ecdsa.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_ecdsa.gcc.rsp" || exit 1
+echo cc310_bl_backend_hash.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_hash.gcc.rsp" || exit 1
+echo cc310_bl_backend_init.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_init.gcc.rsp" || exit 1
+echo cc310_bl_backend_shared.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/cc310_bl/cc310_bl_backend_shared.gcc.rsp" || exit 1
+echo boards.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/boards/boards.gcc.rsp" || exit 1
+echo nrf_sdh.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/softdevice/common/nrf_sdh.gcc.rsp" || exit 1
+echo nrf_sdh_ble.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/softdevice/common/nrf_sdh_ble.gcc.rsp" || exit 1
+echo nrf_sdh_soc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/softdevice/common/nrf_sdh_soc.gcc.rsp" || exit 1
+echo nrf_nvmc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/modules/nrfx/hal/nrf_nvmc.gcc.rsp" || exit 1
+echo nrfx_atomic.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/modules/nrfx/soc/nrfx_atomic.gcc.rsp" || exit 1
+echo nrf_crypto_ecc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/nrf_crypto_ecc.gcc.rsp" || exit 1
+echo nrf_crypto_ecdsa.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/nrf_crypto_ecdsa.gcc.rsp" || exit 1
+echo nrf_crypto_hash.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/nrf_crypto_hash.gcc.rsp" || exit 1
+echo nrf_crypto_init.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/nrf_crypto_init.gcc.rsp" || exit 1
+echo nrf_crypto_shared.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/nrf_crypto_shared.gcc.rsp" || exit 1
+echo nrf_dfu_svci.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_svci.gcc.rsp" || exit 1
+echo nrf_dfu_svci_handler.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_svci_handler.gcc.rsp" || exit 1
+echo nrf_svc_handler.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/svc/nrf_svc_handler.gcc.rsp" || exit 1
+echo SEGGER_RTT.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/external/segger_rtt/SEGGER_RTT.gcc.rsp" || exit 1
+echo SEGGER_RTT_Syscalls_GCC.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.gcc.rsp" || exit 1
+echo SEGGER_RTT_printf.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/external/segger_rtt/SEGGER_RTT_printf.gcc.rsp" || exit 1
+echo nrf_bootloader.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/nrf_bootloader.gcc.rsp" || exit 1
+echo nrf_bootloader_app_start.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/nrf_bootloader_app_start.gcc.rsp" || exit 1
+echo nrf_bootloader_app_start_final.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/nrf_bootloader_app_start_final.gcc.rsp" || exit 1
+echo nrf_bootloader_dfu_timers.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/nrf_bootloader_dfu_timers.gcc.rsp" || exit 1
+echo nrf_bootloader_fw_activation.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/nrf_bootloader_fw_activation.gcc.rsp" || exit 1
+echo nrf_bootloader_info.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/nrf_bootloader_info.gcc.rsp" || exit 1
+echo nrf_bootloader_wdt.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/nrf_bootloader_wdt.gcc.rsp" || exit 1
+echo pb_common.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/external/nano-pb/pb_common.gcc.rsp" || exit 1
+echo pb_decode.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/external/nano-pb/pb_decode.gcc.rsp" || exit 1
+echo dfu-cc.pb.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/dfu-cc.pb.gcc.rsp" || exit 1
+echo nrf_dfu.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu.gcc.rsp" || exit 1
+echo nrf_dfu_ble.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/ble_dfu/nrf_dfu_ble.gcc.rsp" || exit 1
+echo nrf_dfu_flash.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_flash.gcc.rsp" || exit 1
+echo nrf_dfu_handling_error.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_handling_error.gcc.rsp" || exit 1
+echo nrf_dfu_mbr.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_mbr.gcc.rsp" || exit 1
+echo nrf_dfu_req_handler.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_req_handler.gcc.rsp" || exit 1
+echo nrf_dfu_settings.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_settings.gcc.rsp" || exit 1
+echo nrf_dfu_settings_svci.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_settings_svci.gcc.rsp" || exit 1
+echo nrf_dfu_transport.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_transport.gcc.rsp" || exit 1
+echo nrf_dfu_utils.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_utils.gcc.rsp" || exit 1
+echo nrf_dfu_validation.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_validation.gcc.rsp" || exit 1
+echo nrf_dfu_ver_validation.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/bootloader/dfu/nrf_dfu_ver_validation.gcc.rsp" || exit 1
+echo ble_srv_common.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/ble/common/ble_srv_common.gcc.rsp" || exit 1
+echo oberon_backend_chacha_poly_aead.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/oberon/oberon_backend_chacha_poly_aead.gcc.rsp" || exit 1
+echo oberon_backend_ecc.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/oberon/oberon_backend_ecc.gcc.rsp" || exit 1
+echo oberon_backend_ecdh.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/oberon/oberon_backend_ecdh.gcc.rsp" || exit 1
+echo oberon_backend_ecdsa.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/oberon/oberon_backend_ecdsa.gcc.rsp" || exit 1
+echo oberon_backend_eddsa.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/oberon/oberon_backend_eddsa.gcc.rsp" || exit 1
+echo oberon_backend_hash.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/oberon/oberon_backend_hash.gcc.rsp" || exit 1
+echo oberon_backend_hmac.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/components/libraries/crypto/backend/oberon/oberon_backend_hmac.gcc.rsp" || exit 1
+echo system_nrf52840.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/modules/nrfx/mdk/system_nrf52840.gcc.rsp" || exit 1
+echo nrf_drv_power.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/integration/nrfx/legacy/nrf_drv_power.gcc.rsp" || exit 1
+echo nrf_drv_rng.c
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-gcc.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/integration/nrfx/legacy/nrf_drv_rng.gcc.rsp" || exit 1
+echo gcc_startup_nrf52840.S
+C:\Users\chain40\AppData\Local\VisualGDB\CCache\ccache.exe "c:/SysGCC/arm-eabi/bin/arm-none-eabi-g++.exe" @"VisualGDB/Release/__BSP_ROOT__/nRF5x/modules/nrfx/mdk/gcc_startup_nrf52840.gcc.rsp" || exit 1
+echo Linking ../VisualGDB/Release/neulive_boot...
+c:\SysGCC\arm-eabi\bin\arm-none-eabi-g++.exe @../VisualGDB/Release/neulive_boot.link.rsp || exit 1
+c:\SysGCC\arm-eabi\bin\arm-none-eabi-objcopy.exe @../VisualGDB/Release/neulive_boot.mkbin.rsp || exit 1
+c:\SysGCC\arm-eabi\bin\arm-none-eabi-objcopy.exe @../VisualGDB/Release/neulive_boot.mkihex.rsp || exit 1
diff --git a/bmd380_bootloader-Release.vgdbsettings b/bmd380_bootloader-Release.vgdbsettings
new file mode 100644
index 0000000..cd6e214
--- /dev/null
+++ b/bmd380_bootloader-Release.vgdbsettings
@@ -0,0 +1,129 @@
+
+
+ Release
+
+
+
+ MinGWUnixSlash
+ $(ToolchainDir)
+
+ true
+ $(ProjectDir)
+ false
+ false
+ nrf5x.xml
+ DeviceDefinition
+
+
+
+
+
+ 0
+
+
+ neulive_boot.vcxproj
+
+
+
+ 1
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+ true
+
+
+
+
+ Unknown
+
+ true
+ true
+ true
+
+
+
+ false
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+ main
+ true
+ false
+ false
+ false
+ 0
+ true
+
+
+ jlink-jtag
+
+ -select USB -device $$SYS:MCU_ID$$ -speed auto -if SWD
+ Enabled
+
+ target remote :$$SYS:GDB_PORT$$
+ mon reset
+ load
+ mon reset
+
+ false
+ false
+ 0
+
+
+ true
+ Auto
+ 0
+ false
+ false
+ true
+ false
+ false
+
+ _estack
+ 0
+ false
+
+ true
+
+
\ No newline at end of file
diff --git a/bmd380_bootloader.sln b/bmd380_bootloader.sln
new file mode 100644
index 0000000..209ab37
--- /dev/null
+++ b/bmd380_bootloader.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.7.34031.279
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bmd380_bootloader", "bmd380_bootloader.vcxproj", "{0F7FC068-F35C-4CCB-9333-FABECCA529B5}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|VisualGDB = Debug|VisualGDB
+ Release|VisualGDB = Release|VisualGDB
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0F7FC068-F35C-4CCB-9333-FABECCA529B5}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB
+ {0F7FC068-F35C-4CCB-9333-FABECCA529B5}.Debug|VisualGDB.Build.0 = Debug|VisualGDB
+ {0F7FC068-F35C-4CCB-9333-FABECCA529B5}.Release|VisualGDB.ActiveCfg = Release|VisualGDB
+ {0F7FC068-F35C-4CCB-9333-FABECCA529B5}.Release|VisualGDB.Build.0 = Release|VisualGDB
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {D74BA592-403C-4451-83FA-8930B8B09765}
+ EndGlobalSection
+EndGlobal
diff --git a/bmd380_bootloader.vcxproj b/bmd380_bootloader.vcxproj
new file mode 100644
index 0000000..1a38939
--- /dev/null
+++ b/bmd380_bootloader.vcxproj
@@ -0,0 +1,402 @@
+
+
+
+
+ Debug
+ VisualGDB
+
+
+ Release
+ VisualGDB
+
+
+
+ 16.0
+ {0F7FC068-F35C-4CCB-9333-FABECCA529B5}
+ com.sysprogs.arm.nordic.nrf5x
+ 17.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Debug
+ com.visualgdb.arm-eabi
+ 12.3.1/13.2/r1
+ true
+ true
+ $(ProjectDir)nrf5x.props
+ true
+
+
+ com.visualgdb.arm-eabi
+ 12.3.1/13.2/r1
+ true
+ true
+ $(ProjectDir)nrf5x.props
+ true
+
+
+
+ C99
+ .;../bmd380_sdk/components/boards;../bmd380_sdk/components/softdevice/mbr/headers;../bmd380_sdk/components/softdevice/s113/headers;../bmd380_sdk/components/libraries/experimental_section_vars;../bmd380_sdk/components/libraries/log;../bmd380_sdk/components/libraries/log/src;../bmd380_sdk/components/libraries/strerror;../bmd380_sdk/components/libraries/usbd;../bmd380_sdk/components/libraries/usbd/class/cdc;../bmd380_sdk/components/libraries/util;../bmd380_sdk/integration/nrfx;../bmd380_sdk/integration/nrfx/legacy;../bmd380_sdk/external/fprintf;../bmd380_sdk/components/libraries/bootloader/dfu;../bmd380_sdk/components/libraries/memobj;../bmd380_sdk/components/libraries/slip;../bmd380_sdk/components/libraries/balloc;../bmd380_sdk/external/segger_rtt;../bmd380_sdk/components/libraries/delay;../bmd380_sdk/components/libraries/atomic;../bmd380_sdk/external/nrf_cc310_bl/include;../bmd380_sdk/components/libraries/ringbuf;../bmd380_sdk/components/libraries/bootloader;../bmd380_sdk/components/libraries/atomic_fifo;../bmd380_sdk/components/softdevice/common;../bmd380_sdk/components/libraries/crypto;../bmd380_sdk/components/libraries/crypto/backend/cc310;../bmd380_sdk/components/libraries/crypto/backend/cc310_bl;../bmd380_sdk/components/libraries/crypto/backend/mbedtls;../bmd380_sdk/components/libraries/crypto/backend/micro_ecc;../bmd380_sdk/components/libraries/crypto/backend/oberon;../bmd380_sdk/components/libraries/crypto/backend/optiga;../bmd380_sdk/external/utf_converter;../bmd380_sdk/components/libraries/mutex;../bmd380_sdk/components/libraries/crypto/backend/nrf_sw;../bmd380_sdk/external/nano-pb;../bmd380_sdk/components/libraries/bootloader/ble_dfu;../bmd380_sdk/components/libraries/svc;../bmd380_sdk/components/libraries/fstorage;../bmd380_sdk/components/libraries/crc32;../bmd380_sdk/components/ble/common;../bmd380_sdk/components/libraries/crypto/backend/cifra;../bmd380_sdk/components/libraries/crypto/backend/nrf_hw;../bmd380_sdk/components/libraries/scheduler;../bmd380_sdk/components/libraries/usbd/class/cdc/acm;../bmd380_sdk/components/toolchain/cmsis/include;../bmd380_sdk/modules/nrfx;../bmd380_sdk/modules/nrfx/hal;../bmd380_sdk/modules/nrfx/mdk;../bmd380_sdk/components/libraries/led_softblink;../bmd380_sdk/components/libraries/timer;../bmd380_sdk/modules/nrfx/drivers/include;../bmd380_sdk/components/libraries/sortlist;../bmd380_sdk/components/libraries/low_power_pwm;%(ClCompile.AdditionalIncludeDirectories)
+ DEBUG=1;BLE_STACK_SUPPORT_REQD;BOARD_CUSTOM;DEBUG_NRF;FLOAT_ABI_HARD;NRF52840_XXAA;NRF_DFU_SETTINGS_VERSION=2;NRF_DFU_SVCI_ENABLED;NRF_SD_BLE_API_VERSION=7;S113;SOFTDEVICE_PRESENT;SVC_INTERFACE_CALL_AS_NORMAL_FUNCTION;USE_APP_CONFIG;APP_TIMER_V2;%(ClCompile.PreprocessorDefinitions)
+ Os
+
+
+
+
+ secure_bootloader_gcc_nrf52.ld
+ ;%(Link.AdditionalLinkerInputs)
+ ;%(Link.LibrarySearchDirectories)
+ ;%(Link.AdditionalLibraryNames)
+
+ true
+
+
+
+
+ C99
+ .;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/micro_ecc;$(BSP_ROOT)/nRF5x/components/libraries/memobj;$(BSP_ROOT)/nRF5x/components/softdevice/s113/headers/nrf52;$(BSP_ROOT)/nRF5x/components/libraries/crc32;$(BSP_ROOT)/nRF5x/components/libraries/experimental_section_vars;$(BSP_ROOT)/nRF5x/components/libraries/mem_manager;$(BSP_ROOT)/nRF5x/components/libraries/fstorage;$(BSP_ROOT)/nRF5x/components/libraries/util;$(BSP_ROOT)/nRF5x/modules/nrfx;$(BSP_ROOT)/nRF5x/external/nrf_oberon/include;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/oberon;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/cifra;$(BSP_ROOT)/nRF5x/components/libraries/atomic;$(BSP_ROOT)/nRF5x/integration/nrfx;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/cc310_bl;$(BSP_ROOT)/nRF5x/external/nrf_cc310/include;$(BSP_ROOT)/nRF5x/components/libraries/log/src;$(BSP_ROOT)/nRF5x/components/libraries/bootloader/dfu;$(BSP_ROOT)/nRF5x/components/ble/common;$(BSP_ROOT)/nRF5x/external/segger_rtt;$(BSP_ROOT)/nRF5x/components/libraries/delay;$(BSP_ROOT)/nRF5x/components/libraries/svc;$(BSP_ROOT)/nRF5x/components/libraries/stack_info;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/nrf_hw;$(BSP_ROOT)/nRF5x/components/libraries/log;$(BSP_ROOT)/nRF5x/external/nrf_oberon;$(BSP_ROOT)/nRF5x/components/libraries/strerror;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/mbedtls;$(BSP_ROOT)/nRF5x/components/boards;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/cc310;$(BSP_ROOT)/nRF5x/components/libraries/bootloader;$(BSP_ROOT)/nRF5x/components/softdevice/s113/headers;$(BSP_ROOT)/nRF5x/components/libraries/crypto;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/optiga;$(BSP_ROOT)/nRF5x/components/libraries/scheduler;$(BSP_ROOT)/nRF5x/external/nrf_cc310_bl/include;$(BSP_ROOT)/nRF5x/modules/nrfx/hal;$(BSP_ROOT)/nRF5x/external/fprintf;$(BSP_ROOT)/nRF5x/components/toolchain/cmsis/include;$(BSP_ROOT)/nRF5x/components/libraries/balloc;$(BSP_ROOT)/nRF5x/components/libraries/atomic_fifo;$(BSP_ROOT)/nRF5x/components/libraries/crypto/backend/nrf_sw;$(BSP_ROOT)/nRF5x/modules/nrfx/mdk;$(BSP_ROOT)/nRF5x/components/libraries/bootloader/ble_dfu;$(BSP_ROOT)/nRF5x/components/softdevice/common;$(BSP_ROOT)/nRF5x/external/nano-pb;$(BSP_ROOT)/nRF5x/components/libraries/queue;$(BSP_ROOT)/nRF5x/components/libraries/mutex;$(BSP_ROOT)/nRF5x/external/utf_converter;$(BSP_ROOT)/nRF5x/components/libraries/ringbuf;%(ClCompile.AdditionalIncludeDirectories)
+ NDEBUG=1;RELEASE=1;BLE_STACK_SUPPORT_REQD;BOARD_CUSTOM;CONFIG_GPIO_AS_PINRESET;DEBUG_NRF;FLOAT_ABI_HARD;NRF52840_XXAA;NRF_DFU_DEBUG_VERSION;NRF_DFU_SETTINGS_VERSION=2;NRF_DFU_SVCI_ENABLED;NRF_SD_BLE_API_VERSION=7;S113;SOFTDEVICE_PRESENT;SVC_INTERFACE_CALL_AS_NORMAL_FUNCTION;USE_APP_CONFIG;%(ClCompile.PreprocessorDefinitions)
+ Os
+
+
+ secure_bootloader_gcc_nrf52.ld
+ ;%(Link.AdditionalLinkerInputs)
+ ;%(Link.LibrarySearchDirectories)
+ ;%(Link.AdditionalLibraryNames)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bmd380_bootloader.vcxproj.filters b/bmd380_bootloader.vcxproj.filters
new file mode 100644
index 0000000..2e779be
--- /dev/null
+++ b/bmd380_bootloader.vcxproj.filters
@@ -0,0 +1,1284 @@
+
+
+
+
+ {c2248d7c-b3f2-45de-b2d8-44dbdd9ae814}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {7e16f4d4-17a8-47b4-8bec-620fb0c4228a}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {8d759cb3-7eab-449c-9e4c-017750bc4723}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+ {7968a4ce-ac73-4989-a57f-36885171c75b}
+
+
+ {c0ab0df5-b030-450f-bb55-ab784b0cb1f2}
+
+
+ {bd8d6b6e-8f2e-4641-9831-f1bbcbab6c6e}
+
+
+ {c9e1c15a-8172-47d9-8503-619dc76354d6}
+
+
+ {a3a50a19-f922-4c44-85cd-9967943a4dd1}
+
+
+ {280f72eb-494e-4a1e-b3a1-77084a0e1349}
+
+
+ {d42c6614-3b67-49c8-8a33-5c66357a91c4}
+
+
+ {50aa00d1-7d70-42fa-8077-8f6181f7b9a8}
+
+
+ {fb3ba324-3a14-4f39-a949-8a8bb4ecab13}
+
+
+ {d93ad6dd-2c7f-4e10-989a-8a43b4a64709}
+
+
+ {2fbc5429-a6f3-495e-abee-90da63c3e15f}
+
+
+ {31b7197a-5b06-4684-93c6-7d61a0657e3f}
+
+
+ {7f52d9cf-2d91-4f03-ac24-d552f977ce3c}
+
+
+ {4b11ec0a-8c06-45ac-a2d8-fafa1f78609f}
+
+
+ {8cebce8d-f068-46e3-98de-4416a4f5129c}
+
+
+ {1adfcc6f-1e8a-4770-9a6b-b9876d6711d9}
+
+
+ {17881eec-b68c-4518-81ee-71e67039d0c7}
+
+
+ {3b63844d-f1f3-4d55-b2a1-8c1841d2c58a}
+
+
+ {4515a811-f197-4088-8361-28ad9a9ed118}
+
+
+ {b26f81cc-75a3-4f4a-b865-ce4488d2dc0c}
+
+
+ {bbb50521-e81e-466e-934c-ef08df18ee0b}
+
+
+ {f1733737-cf05-4aae-97a8-6defca0e83ae}
+
+
+ {5715ba70-7de7-4034-a0f4-7d181008fa9b}
+
+
+ {f6eb2a19-031e-4168-bfd7-de87661141f3}
+
+
+ {e4b92bb8-7702-4d7d-b9f6-1eddc856cd4d}
+
+
+ {33ebf716-82e7-4b75-a1f4-1af6749e119a}
+
+
+ {dc4f28e2-8024-43f4-b38a-f0bfb64c2508}
+
+
+ {e9a17eb0-b909-47b9-9252-97dd46c3282c}
+
+
+ {61bef12a-d10c-439e-9b72-bbcaad5afaa7}
+
+
+ {75b856ce-200d-4ca1-885b-e08c91b4cc4f}
+
+
+ {bf353bb7-5965-4dd3-bfa3-9e9996eff85d}
+
+
+ {05db1b0b-5eed-4b7c-b793-3355f0eb310b}
+
+
+ {a28a1356-c7af-4cb9-90a5-dfdd8fce3f17}
+
+
+ {891aab56-b3a9-443f-9552-847f884dbc1d}
+
+
+ {5a4c860f-5b59-4ac0-b8f0-333f7e5dae2c}
+
+
+ {48cc7e56-035a-4aa9-8275-136b1b8a622c}
+
+
+ {c9054aca-1624-432b-954b-35ed61033fbc}
+
+
+ {91d49659-53f8-4f2a-8ad8-d9058d3073da}
+
+
+ {ed5f86e5-7560-446b-8728-d7b33d428ba0}
+
+
+ {5adf099a-226b-4872-80da-6d9ced54b191}
+
+
+ {839c2d5b-ed20-42aa-a974-1d82e19e5a98}
+
+
+ {a50a81f3-2007-45a1-a99d-f5caa6a97a72}
+
+
+ {26a83639-cb84-4682-9596-2cfa54cbeb9d}
+
+
+ {97f05eb1-9a30-4521-9e35-515592d442df}
+
+
+ {6195dfee-229f-4bdf-a5c2-b1ac9b1222cc}
+
+
+ {de17ea4f-cddc-401a-980f-3f72b920b45e}
+
+
+ {0aee4d80-dc51-4d7c-b94b-9d7fca7b187b}
+
+
+ {27f63f29-9d4d-4652-a6e0-6ec16768e5ab}
+
+
+ {9d4000a6-8599-4a11-b243-0360630a76fc}
+
+
+ {b61bc177-a678-40a9-a4c9-f762fc071010}
+
+
+ {7084630b-fc44-4ea1-b228-54e068afef7b}
+
+
+ {acfbb2f0-d173-4fe3-af30-3de97ae4a866}
+
+
+ {8004db17-4d2c-4c4c-9aba-9d53a1ef196e}
+
+
+ {d1bf44e1-f424-4e1f-8c2a-a79a296a021d}
+
+
+ {8c0f419e-d4c8-49d4-96d7-ae62ddb72dfa}
+
+
+ {c381fc37-bf1c-4354-a0b6-3401b976c048}
+
+
+ {d23f6f2b-71ac-4627-a74c-bf70370dbeb8}
+
+
+ {a40f5efe-0cb7-42eb-832c-4f0aca3bbb93}
+
+
+ {2001f0f4-60ec-4a1d-a2ed-3f0182a081bb}
+
+
+ {93fc355c-2082-437d-8726-c3877e353f06}
+
+
+ {52295d58-a12a-441e-b83d-b996dc082c0c}
+
+
+ {dfe9e560-5942-4887-ba12-b85ab03de16f}
+
+
+ {4e9400ee-10cf-4fc2-b3d7-38ec4f2b7df1}
+
+
+ {423fc775-c88c-4589-b005-79aa0aec1e26}
+
+
+ {f545d46e-b6d9-4154-a4b6-79e957c8fd35}
+
+
+ {fba1c856-f75f-4278-8cb1-aa92e3b66ef5}
+
+
+ {d8a64a57-6d07-41e2-8860-e677c1044279}
+
+
+ {ce508963-8373-4268-889f-54054bcdd600}
+
+
+ {e64bbc75-3fda-4daa-b8d5-89167e678769}
+
+
+ {04d56558-4cb0-49fe-aded-72ba0a7b810e}
+
+
+ {094523b5-3181-4ec3-964f-47706a8d3845}
+
+
+ {f48355fd-d5c0-473f-ac9c-7bb56e0e6202}
+
+
+ {b48060d8-777d-47e4-a436-cc950985b1f0}
+
+
+ {6ce3352a-16dc-4485-a0e0-25c0d419ee49}
+
+
+ {c012e05e-2892-40eb-ba45-f69e7db195e8}
+
+
+ {cd3bfed7-1645-46f3-b209-ac7a6dd80062}
+
+
+ {b039e3cb-8167-4a90-abd1-10683169fd7f}
+
+
+ {dc57cec3-c465-401d-9c70-7aed732ce46c}
+
+
+ {3d63e146-0873-439b-8f69-c2ef9290d745}
+
+
+ {b8dd4198-04d9-4bdd-bb70-1444560c68b2}
+
+
+ {78bff36c-dd53-49e6-bcc9-1bedc19fce88}
+
+
+ {1a6108e7-ffcb-430c-ab87-955a6dc6cc87}
+
+
+ {57dbffbd-6748-4f48-a320-f38796f3ac37}
+
+
+ {b6576931-b47f-4737-b875-39b67dac05ad}
+
+
+ {13dc4480-e4aa-4767-a97a-371ded9584c5}
+
+
+ {d9ac676f-85e6-4a73-99c8-a10a949f3abf}
+
+
+ {46348c6b-c72a-42c7-b86d-427e2452e15d}
+
+
+ {a1143942-482a-4bc9-b62e-a8cdca81599c}
+
+
+ {81687866-7de4-4d52-b9ef-f6936a11efb1}
+
+
+ {018fd885-e000-47de-8cbd-dac006000bc7}
+
+
+ {dbe35c67-536f-4a7f-a06d-ae2e1a630b60}
+
+
+ {efdb1029-6320-4e56-9d21-16a4f6ce770c}
+
+
+ {1f2cd980-2af0-4a95-a384-323648b3fcf1}
+
+
+ {08fba7f6-d234-4b86-bd00-f0238d4fcf2d}
+
+
+ {6bbf6d03-03ac-4200-8a0b-94e930b555e6}
+
+
+ {1ecacf21-36c3-48c0-b75c-b793e48fd8e0}
+
+
+ {0cb2e59b-aee8-4c83-9e68-997925abb810}
+
+
+ {bd39d768-7000-4f51-9c29-478e43a9cf53}
+
+
+ {f636ae28-4639-4211-9778-026098e547b7}
+
+
+ {98197956-1862-4114-9e7a-7001a9a54fb6}
+
+
+ {464efbd7-edf0-4610-94e8-af5dd6b4ce49}
+
+
+ {4c6a41f5-f686-4b81-9bcc-66c80a4e8190}
+
+
+ {108a8cb5-f9cf-43d6-8fc3-b7a7748ff6cb}
+
+
+ {cf93e005-7aea-49ac-91f4-e6d3dfd18c68}
+
+
+ {30657476-23bd-4ef9-aa29-a432166f940c}
+
+
+ {33aa1ecd-5e21-420a-9e04-6d081d5d7877}
+
+
+ {323e61da-1ac7-4cd6-9b77-f4d7c914c23a}
+
+
+ {ab8dad6e-8aae-4c42-ae2b-a57a79a4060d}
+
+
+ {1783b323-c75f-4e66-828f-5d4907517074}
+
+
+
+
+ Source files
+
+
+ Source files\Device-specific files
+
+
+ VisualGDB settings
+
+
+ VisualGDB settings
+
+
+ VisualGDB settings
+
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Header files\Device-specific files
+
+
+ Source files\sdk\components\libraries\util
+
+
+ Source files\sdk\components\libraries\util
+
+
+ Source files\sdk\components\libraries\util
+
+
+ Source files\sdk\components\libraries\scheduler
+
+
+ Source files\sdk\components\libraries\timer
+
+
+ Source files\sdk\components\libraries\timer
+
+
+ Source files\sdk\components\libraries\usbd\class\cdc\acm
+
+
+ Source files\sdk\components\libraries\usbd
+
+
+ Source files\sdk\components\libraries\usbd
+
+
+ Source files\sdk\components\libraries\usbd
+
+
+ Source files\sdk\components\libraries\usbd
+
+
+ Source files\sdk\components\ble\common
+
+
+ Source files\sdk\components\boards
+
+
+ Source files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Source files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Source files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Source files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Source files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Source files\sdk\components\libraries\crc32
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader\dfu
+
+
+ Source files\sdk\components\libraries\bootloader
+
+
+ Source files\sdk\components\libraries\bootloader
+
+
+ Source files\sdk\components\libraries\bootloader
+
+
+ Source files\sdk\components\libraries\bootloader
+
+
+ Source files\sdk\components\libraries\bootloader
+
+
+ Source files\sdk\components\libraries\bootloader
+
+
+ Source files\sdk\components\libraries\bootloader
+
+
+ Source files\sdk\components\libraries\bootloader\ble_dfu
+
+
+ Source files\sdk\components\libraries\crypto
+
+
+ Source files\sdk\components\libraries\crypto
+
+
+ Source files\sdk\components\libraries\crypto
+
+
+ Source files\sdk\components\libraries\crypto
+
+
+ Source files\sdk\components\libraries\crypto
+
+
+ Source files\sdk\components\libraries\log\src
+
+
+ Source files\sdk\components\libraries\log\src
+
+
+ Source files\sdk\components\libraries\log\src
+
+
+ Source files\sdk\components\libraries\log\src
+
+
+ Source files\sdk\components\libraries\log\src
+
+
+ Source files\sdk\components\libraries\atomic
+
+
+ Source files\sdk\components\libraries\atomic_fifo
+
+
+ Source files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Source files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Source files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Source files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Source files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Source files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Source files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Source files\sdk\external\nano-pb
+
+
+ Source files\sdk\external\nano-pb
+
+
+ Source files\sdk\external\segger_rtt
+
+
+ Source files\sdk\modules\nrfx\soc
+
+
+ Source files\sdk\modules\nrfx\drivers\src
+
+
+ Source files\sdk\modules\nrfx\drivers\src
+
+
+ Source files\sdk\modules\nrfx\drivers\src
+
+
+ Source files\sdk\modules\nrfx\mdk
+
+
+ Source files\sdk\integration\nrfx\legacy
+
+
+ Source files\sdk\integration\nrfx\legacy
+
+
+ Source files\sdk\external\fprintf
+
+
+ Source files\sdk\external\fprintf
+
+
+ Source files\sdk\components\libraries\balloc
+
+
+ Source files\sdk\components\libraries\fstorage
+
+
+ Source files\sdk\components\libraries\fstorage
+
+
+ Source files\sdk\components\libraries\fstorage
+
+
+ Source files\sdk\components\libraries\led_softblink
+
+
+ Source files\sdk\components\libraries\low_power_pwm
+
+
+ Source files\sdk\components\libraries\mem_manager
+
+
+ Source files\sdk\components\libraries\memobj
+
+
+ Source files\sdk\modules\nrfx\hal
+
+
+ Source files\sdk\components\libraries\queue
+
+
+ Source files\sdk\components\libraries\ringbuf
+
+
+ Source files\sdk\components\softdevice\common
+
+
+ Source files\sdk\components\softdevice\common
+
+
+ Source files\sdk\components\softdevice\common
+
+
+ Source files\sdk\components\libraries\experimental_section_vars
+
+
+ Source files\sdk\components\libraries\sortlist
+
+
+ Source files\sdk\components\libraries\strerror
+
+
+ Source files\sdk\components\libraries\svc
+
+
+ Source files\sdk\components\libraries\slip
+
+
+ Source files
+
+
+
+
+ Resource files
+
+
+
+
+ Header files
+
+
+ Header files
+
+
+ Header files\sdk\components\libraries\util
+
+
+ Header files\sdk\components\libraries\util
+
+
+ Header files\sdk\components\libraries\util
+
+
+ Header files\sdk\components\libraries\scheduler
+
+
+ Header files\sdk\components\libraries\timer
+
+
+ Header files\sdk\components\libraries\timer
+
+
+ Header files\sdk\components\libraries\usbd\class\cdc\acm
+
+
+ Header files\sdk\components\libraries\usbd\class\cdc\acm
+
+
+ Header files\sdk\components\libraries\usbd\class\cdc
+
+
+ Header files\sdk\components\libraries\usbd\class\cdc
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\libraries\usbd
+
+
+ Header files\sdk\components\ble\common
+
+
+ Header files\sdk\components\boards
+
+
+ Header files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Header files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Header files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Header files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Header files\sdk\components\libraries\crypto\backend\cc310_bl
+
+
+ Header files\sdk\components\libraries\crc32
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader\dfu
+
+
+ Header files\sdk\components\libraries\bootloader
+
+
+ Header files\sdk\components\libraries\bootloader
+
+
+ Header files\sdk\components\libraries\bootloader
+
+
+ Header files\sdk\components\libraries\bootloader
+
+
+ Header files\sdk\components\libraries\bootloader
+
+
+ Header files\sdk\components\libraries\bootloader
+
+
+ Header files\sdk\components\libraries\bootloader\ble_dfu
+
+
+ Header files\sdk\components\libraries\bootloader\ble_dfu
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\crypto
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log
+
+
+ Header files\sdk\components\libraries\log\src
+
+
+ Header files\sdk\components\libraries\log\src
+
+
+ Header files\sdk\components\libraries\log\src
+
+
+ Header files\sdk\components\libraries\atomic
+
+
+ Header files\sdk\components\libraries\atomic
+
+
+ Header files\sdk\components\libraries\atomic
+
+
+ Header files\sdk\components\libraries\atomic_fifo
+
+
+ Header files\sdk\components\libraries\atomic_fifo
+
+
+ Header files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Header files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Header files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Header files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Header files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Header files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Header files\sdk\components\libraries\crypto\backend\oberon
+
+
+ Header files\sdk\external\nano-pb
+
+
+ Header files\sdk\external\nano-pb
+
+
+ Header files\sdk\external\nano-pb
+
+
+ Header files\sdk\external\nano-pb
+
+
+ Header files\sdk\external\segger_rtt
+
+
+ Header files\sdk\external\segger_rtt
+
+
+ Header files\sdk\modules\nrfx\soc
+
+
+ Header files\sdk\modules\nrfx\soc
+
+
+ Header files\sdk\modules\nrfx\soc
+
+
+ Header files\sdk\modules\nrfx\soc
+
+
+ Header files\sdk\modules\nrfx\soc
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\include
+
+
+ Header files\sdk\modules\nrfx\drivers\src
+
+
+ Header files\sdk\components\libraries\led_softblink
+
+
+ Header files\sdk\components\libraries\low_power_pwm
+
+
+ Header files\sdk\components\libraries\mem_manager
+
+
+ Header files\sdk\components\libraries\balloc
+
+
+ Header files\sdk\integration\nrfx\legacy
+
+
+ Header files\sdk\integration\nrfx\legacy
+
+
+ Header files\sdk\external\fprintf
+
+
+ Header files\sdk\external\fprintf
+
+
+ Header files\sdk\components\libraries\fstorage
+
+
+ Header files\sdk\components\libraries\fstorage
+
+
+ Header files\sdk\components\libraries\fstorage
+
+
+ Header files\sdk\components\libraries\memobj
+
+
+ Header files\sdk\modules\nrfx\hal
+
+
+ Header files\sdk\components\softdevice\common
+
+
+ Header files\sdk\components\softdevice\common
+
+
+ Header files\sdk\components\softdevice\common
+
+
+ Header files\sdk\components\libraries\experimental_section_vars
+
+
+ Header files\sdk\components\libraries\experimental_section_vars
+
+
+ Header files\sdk\components\libraries\sortlist
+
+
+ Header files\sdk\components\libraries\strerror
+
+
+ Header files\sdk\components\libraries\svc
+
+
+ Header files\sdk\components\libraries\svc
+
+
+ Header files\sdk\components\libraries\svc
+
+
+ Header files\sdk\components\libraries\svc
+
+
+ Header files\sdk\components\libraries\slip
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bmd380_bootloader.vcxproj.user b/bmd380_bootloader.vcxproj.user
new file mode 100644
index 0000000..88a5509
--- /dev/null
+++ b/bmd380_bootloader.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/custom_board.h b/custom_board.h
new file mode 100644
index 0000000..494e8fc
--- /dev/null
+++ b/custom_board.h
@@ -0,0 +1,76 @@
+#pragma once
+/**
+ * Copyright (c) 2014 - 2019, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#ifndef __CUSTOM_BOARD_H__
+#define __CUSTOM_BOARD_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "nrf_gpio.h"
+
+#define LEDS_NUMBER 3
+
+#define BLE_LED_R NRF_GPIO_PIN_MAP(1, 1)
+#define BLE_LED_G NRF_GPIO_PIN_MAP(1, 3)
+#define BLE_LED_B NRF_GPIO_PIN_MAP(1, 5)
+
+#define LED_1 BLE_LED_R
+#define LED_2 BLE_LED_G
+#define LED_3 BLE_LED_B
+
+#define LEDS_ACTIVE_STATE 0
+
+#define LEDS_LIST { LED_1, LED_2, LED_3 }
+
+#define LEDS_INV_MASK LEDS_MASK
+
+#define BSP_LED_0 LED_1
+#define BSP_LED_1 LED_2
+#define BSP_LED_2 LED_3
+
+#define BUTTONS_NUMBER 0
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __CUSTOM_BOARD_H__
diff --git a/dfu_public_key.c b/dfu_public_key.c
new file mode 100644
index 0000000..df604d5
--- /dev/null
+++ b/dfu_public_key.c
@@ -0,0 +1,11 @@
+/* This file was automatically generated by nrfutil on 2023-09-25 (YY-MM-DD) at 23:00:35 */
+
+#include "stdint.h"
+#include "compiler_abstraction.h"
+
+/** @brief Public key used to verify DFU images */
+__ALIGN(4) const uint8_t pk[64] =
+{
+ 0xb3, 0xc2, 0xde, 0xcd, 0xbd, 0x64, 0xc0, 0x94, 0x7d, 0x38, 0x53, 0x12, 0xc4, 0x46, 0xf1, 0x11, 0xe2, 0xee, 0xe7, 0x4a, 0x98, 0xcb, 0x7e, 0x84, 0x63, 0xc2, 0x90, 0x63, 0x54, 0x11, 0x42, 0x61,
+ 0x00, 0x89, 0x13, 0x47, 0xf9, 0x08, 0x8e, 0xd1, 0x15, 0x11, 0x85, 0x5c, 0xf8, 0x7d, 0xec, 0x9a, 0x5e, 0x62, 0x63, 0xc0, 0xc1, 0x33, 0x88, 0x6c, 0xbc, 0xbf, 0xf6, 0x5d, 0xe2, 0xb7, 0xa5, 0xe4
+};
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..ed4782a
--- /dev/null
+++ b/main.c
@@ -0,0 +1,231 @@
+/**
+ * Copyright (c) 2016 - 2020, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+/** @file
+ *
+ * @defgroup bootloader_secure_ble main.c
+ * @{
+ * @ingroup dfu_bootloader_api
+ * @brief Bootloader project main file for secure DFU.
+ *
+ */
+
+#include
+#include "boards.h"
+#include "nrf_mbr.h"
+#include "nrf_bootloader.h"
+#include "nrf_bootloader_app_start.h"
+#include "nrf_bootloader_dfu_timers.h"
+#include "nrf_dfu.h"
+#include "nrf_log.h"
+#include "nrf_log_ctrl.h"
+#include "nrf_log_default_backends.h"
+#include "app_error.h"
+#include "app_error_weak.h"
+#include "nrf_bootloader_info.h"
+#include "nrf_dfu_utils.h"
+#include "led_softblink.h"
+#include "app_timer.h"
+#include "nrf_delay.h"
+#include "nrf_clock.h"
+
+/* Timer used to blink LED on DFU progress. */
+APP_TIMER_DEF(m_dfu_progress_led_timer);
+
+static void on_error(void)
+{
+ NRF_LOG_FINAL_FLUSH();
+
+#if NRF_MODULE_ENABLED(NRF_LOG_BACKEND_RTT)
+ // To allow the buffer to be flushed by the host.
+ nrf_delay_ms(100);
+#endif
+#ifdef NRF_DFU_DEBUG_VERSION
+ NRF_BREAKPOINT_COND;
+#endif
+ NVIC_SystemReset();
+}
+
+
+void app_error_handler(uint32_t error_code, uint32_t line_num, const uint8_t * p_file_name)
+{
+ NRF_LOG_ERROR("%s:%d", p_file_name, line_num);
+ on_error();
+}
+
+
+void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
+{
+ NRF_LOG_ERROR("Received a fault! id: 0x%08x, pc: 0x%08x, info: 0x%08x", id, pc, info);
+ on_error();
+}
+
+
+void app_error_handler_bare(uint32_t error_code)
+{
+ NRF_LOG_ERROR("Received an error: 0x%08x!", error_code);
+ on_error();
+}
+
+static void dfu_progress_led_timeout_handler(void * p_context)
+{
+ app_timer_id_t timer = (app_timer_id_t)p_context;
+
+ uint32_t err_code = app_timer_start(timer,
+ APP_TIMER_TICKS(DFU_LED_CONFIG_PROGRESS_BLINK_MS),
+ p_context);
+ APP_ERROR_CHECK(err_code);
+
+ bsp_board_led_invert(BSP_BOARD_LED_1);
+}
+
+/**
+ * @brief Function notifies certain events in DFU process.
+ */
+static void dfu_observer(nrf_dfu_evt_type_t evt_type)
+{
+ static bool timer_created = false;
+ uint32_t err_code;
+
+ if (!timer_created)
+ {
+ err_code = app_timer_create(&m_dfu_progress_led_timer,
+ APP_TIMER_MODE_SINGLE_SHOT,
+ dfu_progress_led_timeout_handler);
+ APP_ERROR_CHECK(err_code);
+ timer_created = true;
+ }
+
+ switch (evt_type)
+ {
+ case NRF_DFU_EVT_DFU_FAILED:
+ case NRF_DFU_EVT_DFU_ABORTED:
+ err_code = led_softblink_stop();
+ APP_ERROR_CHECK(err_code);
+
+ err_code = app_timer_stop(m_dfu_progress_led_timer);
+ APP_ERROR_CHECK(err_code);
+
+ err_code = led_softblink_start(BSP_LED_0_MASK | BSP_LED_1_MASK);
+ APP_ERROR_CHECK(err_code);
+
+ break;
+ case NRF_DFU_EVT_DFU_INITIALIZED:
+ {
+ bsp_board_init(BSP_INIT_LEDS);
+
+ if (!nrf_clock_lf_is_running())
+ {
+ nrf_clock_task_trigger(NRF_CLOCK_TASK_LFCLKSTART);
+ }
+ err_code = app_timer_init();
+ APP_ERROR_CHECK(err_code);
+
+ led_sb_init_params_t led_sb_init_param = LED_SB_INIT_DEFAULT_PARAMS(BSP_LED_0_MASK | BSP_LED_1_MASK);
+
+ uint32_t ticks = APP_TIMER_TICKS(DFU_LED_CONFIG_TRANSPORT_INACTIVE_BREATH_MS);
+ led_sb_init_param.p_leds_port = BSP_LED_1_PORT;
+ led_sb_init_param.on_time_ticks = ticks;
+ led_sb_init_param.off_time_ticks = ticks;
+ led_sb_init_param.duty_cycle_max = 255;
+
+ err_code = led_softblink_init(&led_sb_init_param);
+ APP_ERROR_CHECK(err_code);
+
+ err_code = led_softblink_start(BSP_LED_0_MASK | BSP_LED_1_MASK);
+ APP_ERROR_CHECK(err_code);
+ break;
+ }
+ case NRF_DFU_EVT_TRANSPORT_ACTIVATED:
+ {
+ uint32_t ticks = APP_TIMER_TICKS(DFU_LED_CONFIG_TRANSPORT_ACTIVE_BREATH_MS);
+ led_softblink_off_time_set(ticks);
+ led_softblink_on_time_set(ticks);
+ break;
+ }
+ case NRF_DFU_EVT_TRANSPORT_DEACTIVATED:
+ {
+ uint32_t ticks = APP_TIMER_TICKS(DFU_LED_CONFIG_PROGRESS_BLINK_MS);
+ err_code = led_softblink_stop();
+ APP_ERROR_CHECK(err_code);
+
+ err_code = app_timer_start(m_dfu_progress_led_timer, ticks, m_dfu_progress_led_timer);
+ APP_ERROR_CHECK(err_code);
+
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+/**@brief Function for application main entry. */
+int main(void)
+{
+ uint32_t ret_val;
+
+ // Must happen before flash protection is applied, since it edits a protected page.
+ nrf_bootloader_mbr_addrs_populate();
+
+ // Protect MBR and bootloader code from being overwritten.
+ ret_val = nrf_bootloader_flash_protect(0, MBR_SIZE);
+ APP_ERROR_CHECK(ret_val);
+ ret_val = nrf_bootloader_flash_protect(BOOTLOADER_START_ADDR, BOOTLOADER_SIZE);
+ APP_ERROR_CHECK(ret_val);
+
+ (void) NRF_LOG_INIT(nrf_bootloader_dfu_timer_counter_get);
+
+ NRF_LOG_DEFAULT_BACKENDS_INIT();
+
+ NRF_LOG_INFO("Inside main");
+
+ ret_val = nrf_bootloader_init(dfu_observer);
+ APP_ERROR_CHECK(ret_val);
+
+ NRF_LOG_FLUSH();
+
+ NRF_LOG_ERROR("After main, should never be reached.");
+ NRF_LOG_FLUSH();
+
+ APP_ERROR_CHECK_BOOL(false);
+}
+
+/**
+ * @}
+ */
diff --git a/nrf5x.props b/nrf5x.props
new file mode 100644
index 0000000..6cf7959
--- /dev/null
+++ b/nrf5x.props
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ NRF52840_XXAA;S140_reserve;CONFIG_GPIO_AS_PINRESET;NRF_DFU_SETTINGS_VERSION=2;NRF_SD_BLE_API_VERSION=7;__STACK_SIZE=1024;__HEAP_SIZE=0;ARM_MATH_CM4;SOFTDEVICE_PRESENT;%(ClCompile.PreprocessorDefinitions)
+ %(ClCompile.AdditionalIncludeDirectories);$(ProjectDir);$(BSP_ROOT)/nRF5x/components/softdevice/S140_reserve/headers;$(BSP_ROOT)/nRF5x/components/softdevice/S140_reserve/headers/nrf52;$(BSP_ROOT)/nRF5x/modules/nrfx;$(BSP_ROOT)/nRF5x/modules/nrfx/hal;$(BSP_ROOT)/nRF5x/modules/nrfx/drivers/include;$(BSP_ROOT)/nRF5x/modules/nrfx/drivers;$(BSP_ROOT)/nRF5x/external/nrf_oberon;$(BSP_ROOT)/nRF5x/modules/nrfx/mdk;$(BSP_ROOT)/nRF5x/components/toolchain/cmsis/dsp/Include;$(BSP_ROOT)/nRF5x/components/toolchain/cmsis/include
+ -mabi=aapcs %(ClCompile.AdditionalOptions)
+
+
+
+
+ $(BSP_ROOT)/nRF5x/LinkerScripts/nRF52840_XXAA_S140_reserve.lds
+ $(BSP_ROOT)/nRF5x/SoftdeviceLibraries/hard;$(BSP_ROOT)/nRF5x/LinkerScripts;%(Link.LibrarySearchDirectories)
+ --specs=nano.specs --specs=nosys.specs -Wl,--no-warn-rwx-segments -mabi=aapcs %(Link.AdditionalOptions)
+
+
+
+ $(BSP_ROOT)/nRF5x/LinkerScripts/nRF52840_XXAA_S140_reserve.lds
+
+
+
+
+ C99
+
+
+
+
+
+ cortex-m4
+ THUMB
+ fpv4-sp-d16
+ hard
+
+
+
diff --git a/nrf5x.xml b/nrf5x.xml
new file mode 100644
index 0000000..12304b0
--- /dev/null
+++ b/nrf5x.xml
@@ -0,0 +1,62 @@
+
+
+ com.visualgdb.arm-eabi
+
+ 12.3.1
+ 13.2
+ 1
+
+ com.sysprogs.arm.nordic.nrf5x
+ 17.0
+ nRF52840_XXAA
+ nRF5x/DeviceDefinitions/NRF52840.xml
+
+
+
+ com.sysprogs.bspoptions.nrf5x.wchar
+
+
+
+ com.sysprogs.bspoptions.nrf5x.pinreset
+ CONFIG_GPIO_AS_PINRESET
+
+
+ com.sysprogs.bspoptions.primary_memory
+ flash
+
+
+ com.sysprogs.bspoptions.arm.floatmode.short
+ hard
+
+
+ com.sysprogs.bspoptions.nrf5x.softdevice
+ S140_reserve
+
+
+ com.sysprogs.toolchainoptions.arm.libctype
+ --specs=nano.specs
+
+
+ com.sysprogs.toolchainoptions.arm.syscallspecs
+ --specs=nosys.specs
+
+
+ com.sysprogs.bspoptions.stackheap.stacksize
+ 1024
+
+
+ com.sysprogs.bspoptions.stackheap.heapsize
+ 0
+
+
+
+ Device-specific files
+ nrf5x.mak
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/nrf_crypto_allocator.h b/nrf_crypto_allocator.h
new file mode 100644
index 0000000..94011d6
--- /dev/null
+++ b/nrf_crypto_allocator.h
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2019 - 2020, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#ifndef NRF_CRYPTO_ALLOCATOR_H__
+#define NRF_CRYPTO_ALLOCATOR_H__
+
+#include "nrf_assert.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Crypto library in bootloader case does not use dynamic allocation */
+#define NRF_CRYPTO_ALLOC(size) NULL; ASSERT(0)
+#define NRF_CRYPTO_ALLOC_ON_STACK(size) NULL; ASSERT(0)
+#define NRF_CRYPTO_FREE(ptr) (void)ptr;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NRF_CRYPTO_ALLOCATOR_H__ */
diff --git a/private.pem b/private.pem
new file mode 100644
index 0000000..97e9b5c
--- /dev/null
+++ b/private.pem
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIEM6TVi/ofxCYEb2O9OYK4sNHlpwd0ZrW3yFOIeRJKqKoAoGCCqGSM49
+AwEHoUQDQgAEYUIRVGOQwmOEfsuYSufu4hHxRsQSUzh9lMBkvc3ewrPkpbfiXfa/
+vGyIM8HAY2Jemux9+FyFERXRjgj5RxOJAA==
+-----END EC PRIVATE KEY-----
diff --git a/sdk_config.h b/sdk_config.h
new file mode 100644
index 0000000..76b8105
--- /dev/null
+++ b/sdk_config.h
@@ -0,0 +1,5479 @@
+/**
+ * Copyright (c) 2017 - 2020, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+
+#ifndef SDK_CONFIG_H
+#define SDK_CONFIG_H
+// <<< Use Configuration Wizard in Context Menu >>>\n
+#ifdef USE_APP_CONFIG
+#include "app_config.h"
+#endif
+// nRF_Bootloader
+
+//==========================================================
+// nrf_bootloader - Bootloader settings
+
+//==========================================================
+// Application integrity checks
+
+//==========================================================
+// NRF_BL_APP_CRC_CHECK_SKIPPED_ON_GPREGRET2 - Skip CRC integrity check of the application when bit 1 (0-indexed) is set in the GPREGRET2 register.
+
+
+// Only CRC checks can be skipped. For other boot validation types, the GPREGRET2 register is ignored.
+
+#ifndef NRF_BL_APP_CRC_CHECK_SKIPPED_ON_GPREGRET2
+#define NRF_BL_APP_CRC_CHECK_SKIPPED_ON_GPREGRET2 1
+#endif
+
+// NRF_BL_APP_CRC_CHECK_SKIPPED_ON_SYSTEMOFF_RESET - Skip integrity check of the application when waking up from the System Off state.
+
+
+// Only CRC checks can be skipped. For other boot validation types, the reset state is ignored.
+
+#ifndef NRF_BL_APP_CRC_CHECK_SKIPPED_ON_SYSTEMOFF_RESET
+#define NRF_BL_APP_CRC_CHECK_SKIPPED_ON_SYSTEMOFF_RESET 1
+#endif
+
+// NRF_BL_APP_SIGNATURE_CHECK_REQUIRED - Perform signature check on the app. Requires the signature to be sent in the init packet.
+
+
+#ifndef NRF_BL_APP_SIGNATURE_CHECK_REQUIRED
+#define NRF_BL_APP_SIGNATURE_CHECK_REQUIRED 0
+#endif
+
+// NRF_BL_DFU_ALLOW_UPDATE_FROM_APP - Whether to allow the app to receive firmware updates for the bootloader to activate.
+
+
+// Enable this to allow the app to instruct the bootloader to activate firmware.
+// The bootloader will do its own postvalidation.
+
+#ifndef NRF_BL_DFU_ALLOW_UPDATE_FROM_APP
+#define NRF_BL_DFU_ALLOW_UPDATE_FROM_APP 0
+#endif
+
+//
+//==========================================================
+
+// DFU mode enter method
+
+//==========================================================
+// NRF_BL_DFU_ENTER_METHOD_BUTTON - Enter DFU mode on button press.
+//==========================================================
+#ifndef NRF_BL_DFU_ENTER_METHOD_BUTTON
+#define NRF_BL_DFU_ENTER_METHOD_BUTTON 1
+#endif
+// NRF_BL_DFU_ENTER_METHOD_BUTTON_PIN - Button for entering DFU mode.
+
+// <0=> 0 (P0.0)
+// <1=> 1 (P0.1)
+// <2=> 2 (P0.2)
+// <3=> 3 (P0.3)
+// <4=> 4 (P0.4)
+// <5=> 5 (P0.5)
+// <6=> 6 (P0.6)
+// <7=> 7 (P0.7)
+// <8=> 8 (P0.8)
+// <9=> 9 (P0.9)
+// <10=> 10 (P0.10)
+// <11=> 11 (P0.11)
+// <12=> 12 (P0.12)
+// <13=> 13 (P0.13)
+// <14=> 14 (P0.14)
+// <15=> 15 (P0.15)
+// <16=> 16 (P0.16)
+// <17=> 17 (P0.17)
+// <18=> 18 (P0.18)
+// <19=> 19 (P0.19)
+// <20=> 20 (P0.20)
+// <21=> 21 (P0.21)
+// <22=> 22 (P0.22)
+// <23=> 23 (P0.23)
+// <24=> 24 (P0.24)
+// <25=> 25 (P0.25)
+// <26=> 26 (P0.26)
+// <27=> 27 (P0.27)
+// <28=> 28 (P0.28)
+// <29=> 29 (P0.29)
+// <30=> 30 (P0.30)
+// <31=> 31 (P0.31)
+// <32=> 32 (P1.0)
+// <33=> 33 (P1.1)
+// <34=> 34 (P1.2)
+// <35=> 35 (P1.3)
+// <36=> 36 (P1.4)
+// <37=> 37 (P1.5)
+// <38=> 38 (P1.6)
+// <39=> 39 (P1.7)
+// <40=> 40 (P1.8)
+// <41=> 41 (P1.9)
+// <42=> 42 (P1.10)
+// <43=> 43 (P1.11)
+// <44=> 44 (P1.12)
+// <45=> 45 (P1.13)
+// <46=> 46 (P1.14)
+// <47=> 47 (P1.15)
+
+#ifndef NRF_BL_DFU_ENTER_METHOD_BUTTON_PIN
+#define NRF_BL_DFU_ENTER_METHOD_BUTTON_PIN 25
+#endif
+
+//
+
+// NRF_BL_DFU_ENTER_METHOD_PINRESET - Enter DFU mode on pin reset.
+
+
+#ifndef NRF_BL_DFU_ENTER_METHOD_PINRESET
+#define NRF_BL_DFU_ENTER_METHOD_PINRESET 0
+#endif
+
+// NRF_BL_DFU_ENTER_METHOD_GPREGRET - Enter DFU mode when bit 0 is set in the NRF_POWER_GPREGRET register.
+
+
+#ifndef NRF_BL_DFU_ENTER_METHOD_GPREGRET
+#define NRF_BL_DFU_ENTER_METHOD_GPREGRET 1
+#endif
+
+// NRF_BL_DFU_ENTER_METHOD_BUTTONLESS - Enter DFU mode when the Boolean enter_buttonless_dfu in DFU settings is true.
+
+
+#ifndef NRF_BL_DFU_ENTER_METHOD_BUTTONLESS
+#define NRF_BL_DFU_ENTER_METHOD_BUTTONLESS 0
+#endif
+
+//
+//==========================================================
+
+// DFU timers
+
+//==========================================================
+// NRF_BL_DFU_CONTINUATION_TIMEOUT_MS - Timeout in ms when expecting an update immediately. <100-60000000>
+
+
+// This timeout is used after updating the SoftDevice, when there is
+// already a valid application present. The bootloader will enter DFU mode
+// for a short time instead of booting the old application to allow the host
+// to immediately transfer a new application if it wishes.
+
+#ifndef NRF_BL_DFU_CONTINUATION_TIMEOUT_MS
+#define NRF_BL_DFU_CONTINUATION_TIMEOUT_MS 10000
+#endif
+
+// NRF_BL_DFU_INACTIVITY_TIMEOUT_MS - Timeout in ms before automatically starting a valid application due to inactivity. <0-60000000>
+
+
+// If 0, no inactivity timer will be used. Values 1-99 are invalid.
+
+#ifndef NRF_BL_DFU_INACTIVITY_TIMEOUT_MS
+#define NRF_BL_DFU_INACTIVITY_TIMEOUT_MS 120000
+#endif
+
+//
+//==========================================================
+
+// Watchdog timer
+
+//==========================================================
+// NRF_BL_WDT_MAX_SCHEDULER_LATENCY_MS - Maximum latency of the scheduler in miliseconds
+// Maximum latency of the scheduler is compared with
+// watchdog counter reload value (CRV). If latency is big
+// enough, the watchdog will be fed from internal timer
+// handler along with feed from user function. If latency
+// is smaller than CRV, the watchdog will not be internally fed once
+// it will be externally fed. Maximum latency is mainly affected
+// by flash operations.
+
+#ifndef NRF_BL_WDT_MAX_SCHEDULER_LATENCY_MS
+#define NRF_BL_WDT_MAX_SCHEDULER_LATENCY_MS 10000
+#endif
+
+//
+//==========================================================
+
+// Misc Bootloader settings
+
+//==========================================================
+// NRF_BL_DEBUG_PORT_DISABLE - Disable access to the chip via the debug port.
+
+
+// Disable access to the chip via the debug port.
+// This modifies the APPROTECT and DEBUGCTRL registers.
+// Enable this option in production code if such
+// access should be prohibited. Read about the registers
+// for more details.
+
+#ifndef NRF_BL_DEBUG_PORT_DISABLE
+#define NRF_BL_DEBUG_PORT_DISABLE 0
+#endif
+
+// NRF_BL_FW_COPY_PROGRESS_STORE_STEP - Number of pages copied after which progress in the settings page is updated.
+// Progress stored in the settings page allows the bootloader to resume
+// copying the new firmware in case of interruption (reset).
+// If the value is small, then the resume point is more accurate. However,
+// it also impacts negatively on flash wear.
+
+#ifndef NRF_BL_FW_COPY_PROGRESS_STORE_STEP
+#define NRF_BL_FW_COPY_PROGRESS_STORE_STEP 8
+#endif
+
+// NRF_BL_RESET_DELAY_MS - Time to wait before resetting the bootloader.
+// Time (in ms) to wait before resetting the bootloader after DFU has been completed or aborted. This allows more time for e.g. disconnecting the BLE link or writing logs.
+
+#ifndef NRF_BL_RESET_DELAY_MS
+#define NRF_BL_RESET_DELAY_MS 0
+#endif
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+// nRF_Crypto
+
+//==========================================================
+// NRF_CRYPTO_ENABLED - nrf_crypto - Cryptography library.
+//==========================================================
+#ifndef NRF_CRYPTO_ENABLED
+#define NRF_CRYPTO_ENABLED 1
+#endif
+// NRF_CRYPTO_ALLOCATOR - Memory allocator
+
+
+// Choose memory allocator used by nrf_crypto. Default is alloca if possible or nrf_malloc otherwise. If 'User macros' are selected, the user has to create 'nrf_crypto_allocator.h' file that contains NRF_CRYPTO_ALLOC, NRF_CRYPTO_FREE, and NRF_CRYPTO_ALLOC_ON_STACK.
+// <0=> Default
+// <1=> User macros
+// <2=> On stack (alloca)
+// <3=> C dynamic memory (malloc)
+// <4=> SDK Memory Manager (nrf_malloc)
+
+#ifndef NRF_CRYPTO_ALLOCATOR
+#define NRF_CRYPTO_ALLOCATOR 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_BL_ENABLED - Enable the ARM Cryptocell CC310 reduced backend.
+
+// The CC310 hardware-accelerated cryptography backend with reduced functionality and footprint (only available on nRF52840).
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_CC310_BL_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_BL_ENABLED 1
+#endif
+// NRF_CRYPTO_BACKEND_CC310_BL_ECC_SECP224R1_ENABLED - Enable the secp224r1 elliptic curve support using CC310_BL.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_BL_ECC_SECP224R1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_BL_ECC_SECP224R1_ENABLED 0
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_BL_ECC_SECP256R1_ENABLED - Enable the secp256r1 elliptic curve support using CC310_BL.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_BL_ECC_SECP256R1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_BL_ECC_SECP256R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_BL_HASH_SHA256_ENABLED - CC310_BL SHA-256 hash functionality.
+
+
+// CC310_BL backend implementation for hardware-accelerated SHA-256.
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_BL_HASH_SHA256_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_BL_HASH_SHA256_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_BL_HASH_AUTOMATIC_RAM_BUFFER_ENABLED - nrf_cc310_bl buffers to RAM before running hash operation
+
+
+// Enabling this makes hashing of addresses in FLASH range possible. Size of buffer allocated for hashing is set by NRF_CRYPTO_BACKEND_CC310_BL_HASH_AUTOMATIC_RAM_BUFFER_SIZE
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_BL_HASH_AUTOMATIC_RAM_BUFFER_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_BL_HASH_AUTOMATIC_RAM_BUFFER_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_BL_HASH_AUTOMATIC_RAM_BUFFER_SIZE - nrf_cc310_bl hash outputs digests in little endian
+// Makes the nrf_cc310_bl hash functions output digests in little endian format. Only for use in nRF SDK DFU!
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_BL_HASH_AUTOMATIC_RAM_BUFFER_SIZE
+#define NRF_CRYPTO_BACKEND_CC310_BL_HASH_AUTOMATIC_RAM_BUFFER_SIZE 4096
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_BL_INTERRUPTS_ENABLED - Enable Interrupts while support using CC310 bl.
+
+
+// Select a library version compatible with the configuration. When interrupts are disable, a version named _noint must be used
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_BL_INTERRUPTS_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_BL_INTERRUPTS_ENABLED 1
+#endif
+
+//
+
+// NRF_CRYPTO_BACKEND_CC310_ENABLED - Enable the ARM Cryptocell CC310 backend.
+
+// The CC310 hardware-accelerated cryptography backend (only available on nRF52840).
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_CC310_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ENABLED 0
+#endif
+// NRF_CRYPTO_BACKEND_CC310_AES_CBC_ENABLED - Enable the AES CBC mode using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_AES_CBC_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_AES_CBC_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_AES_CTR_ENABLED - Enable the AES CTR mode using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_AES_CTR_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_AES_CTR_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_AES_ECB_ENABLED - Enable the AES ECB mode using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_AES_ECB_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_AES_ECB_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_AES_CBC_MAC_ENABLED - Enable the AES CBC_MAC mode using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_AES_CBC_MAC_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_AES_CBC_MAC_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_AES_CMAC_ENABLED - Enable the AES CMAC mode using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_AES_CMAC_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_AES_CMAC_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_AES_CCM_ENABLED - Enable the AES CCM mode using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_AES_CCM_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_AES_CCM_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_AES_CCM_STAR_ENABLED - Enable the AES CCM* mode using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_AES_CCM_STAR_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_AES_CCM_STAR_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_CHACHA_POLY_ENABLED - Enable the CHACHA-POLY mode using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_CHACHA_POLY_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_CHACHA_POLY_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP160R1_ENABLED - Enable the secp160r1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP160R1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP160R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP160R2_ENABLED - Enable the secp160r2 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP160R2_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP160R2_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP192R1_ENABLED - Enable the secp192r1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP192R1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP192R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP224R1_ENABLED - Enable the secp224r1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP224R1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP224R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP256R1_ENABLED - Enable the secp256r1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP256R1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP256R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP384R1_ENABLED - Enable the secp384r1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP384R1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP384R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP521R1_ENABLED - Enable the secp521r1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP521R1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP521R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP160K1_ENABLED - Enable the secp160k1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP160K1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP160K1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP192K1_ENABLED - Enable the secp192k1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP192K1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP192K1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP224K1_ENABLED - Enable the secp224k1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP224K1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP224K1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_SECP256K1_ENABLED - Enable the secp256k1 elliptic curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_SECP256K1_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_SECP256K1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_CURVE25519_ENABLED - Enable the Curve25519 curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_CURVE25519_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_CURVE25519_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_ECC_ED25519_ENABLED - Enable the Ed25519 curve support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_ECC_ED25519_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_ECC_ED25519_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_HASH_SHA256_ENABLED - CC310 SHA-256 hash functionality.
+
+
+// CC310 backend implementation for hardware-accelerated SHA-256.
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_HASH_SHA256_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_HASH_SHA256_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_HASH_SHA512_ENABLED - CC310 SHA-512 hash functionality
+
+
+// CC310 backend implementation for SHA-512 (in software).
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_HASH_SHA512_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_HASH_SHA512_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_HMAC_SHA256_ENABLED - CC310 HMAC using SHA-256
+
+
+// CC310 backend implementation for HMAC using hardware-accelerated SHA-256.
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_HMAC_SHA256_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_HMAC_SHA256_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_HMAC_SHA512_ENABLED - CC310 HMAC using SHA-512
+
+
+// CC310 backend implementation for HMAC using SHA-512 (in software).
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_HMAC_SHA512_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_HMAC_SHA512_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_RNG_ENABLED - Enable RNG support using CC310.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_RNG_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_RNG_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_CC310_INTERRUPTS_ENABLED - Enable Interrupts while support using CC310.
+
+
+// Select a library version compatible with the configuration. When interrupts are disable, a version named _noint must be used
+
+#ifndef NRF_CRYPTO_BACKEND_CC310_INTERRUPTS_ENABLED
+#define NRF_CRYPTO_BACKEND_CC310_INTERRUPTS_ENABLED 1
+#endif
+
+//
+
+// NRF_CRYPTO_BACKEND_CIFRA_ENABLED - Enable the Cifra backend.
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_CIFRA_ENABLED
+#define NRF_CRYPTO_BACKEND_CIFRA_ENABLED 0
+#endif
+// NRF_CRYPTO_BACKEND_CIFRA_AES_EAX_ENABLED - Enable the AES EAX mode using Cifra.
+
+
+#ifndef NRF_CRYPTO_BACKEND_CIFRA_AES_EAX_ENABLED
+#define NRF_CRYPTO_BACKEND_CIFRA_AES_EAX_ENABLED 1
+#endif
+
+//
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ENABLED - Enable the mbed TLS backend.
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ENABLED 0
+#endif
+// NRF_CRYPTO_BACKEND_MBEDTLS_AES_CBC_ENABLED - Enable the AES CBC mode mbed TLS.
+
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_AES_CBC_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_AES_CBC_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_AES_CTR_ENABLED - Enable the AES CTR mode using mbed TLS.
+
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_AES_CTR_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_AES_CTR_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_AES_CFB_ENABLED - Enable the AES CFB mode using mbed TLS.
+
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_AES_CFB_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_AES_CFB_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_AES_ECB_ENABLED - Enable the AES ECB mode using mbed TLS.
+
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_AES_ECB_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_AES_ECB_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_AES_CBC_MAC_ENABLED - Enable the AES CBC MAC mode using mbed TLS.
+
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_AES_CBC_MAC_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_AES_CBC_MAC_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_AES_CMAC_ENABLED - Enable the AES CMAC mode using mbed TLS.
+
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_AES_CMAC_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_AES_CMAC_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_AES_CCM_ENABLED - Enable the AES CCM mode using mbed TLS.
+
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_AES_CCM_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_AES_CCM_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_AES_GCM_ENABLED - Enable the AES GCM mode using mbed TLS.
+
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_AES_GCM_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_AES_GCM_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP192R1_ENABLED - Enable secp192r1 (NIST 192-bit) curve
+
+
+// Enable this setting if you need secp192r1 (NIST 192-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP192R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP192R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP224R1_ENABLED - Enable secp224r1 (NIST 224-bit) curve
+
+
+// Enable this setting if you need secp224r1 (NIST 224-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP224R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP224R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP256R1_ENABLED - Enable secp256r1 (NIST 256-bit) curve
+
+
+// Enable this setting if you need secp256r1 (NIST 256-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP256R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP256R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP384R1_ENABLED - Enable secp384r1 (NIST 384-bit) curve
+
+
+// Enable this setting if you need secp384r1 (NIST 384-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP384R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP384R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP521R1_ENABLED - Enable secp521r1 (NIST 521-bit) curve
+
+
+// Enable this setting if you need secp521r1 (NIST 521-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP521R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP521R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP192K1_ENABLED - Enable secp192k1 (Koblitz 192-bit) curve
+
+
+// Enable this setting if you need secp192k1 (Koblitz 192-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP192K1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP192K1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP224K1_ENABLED - Enable secp224k1 (Koblitz 224-bit) curve
+
+
+// Enable this setting if you need secp224k1 (Koblitz 224-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP224K1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP224K1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP256K1_ENABLED - Enable secp256k1 (Koblitz 256-bit) curve
+
+
+// Enable this setting if you need secp256k1 (Koblitz 256-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP256K1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_SECP256K1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP256R1_ENABLED - Enable bp256r1 (Brainpool 256-bit) curve
+
+
+// Enable this setting if you need bp256r1 (Brainpool 256-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP256R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP256R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP384R1_ENABLED - Enable bp384r1 (Brainpool 384-bit) curve
+
+
+// Enable this setting if you need bp384r1 (Brainpool 384-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP384R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP384R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP512R1_ENABLED - Enable bp512r1 (Brainpool 512-bit) curve
+
+
+// Enable this setting if you need bp512r1 (Brainpool 512-bit) support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP512R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_BP512R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_ECC_CURVE25519_ENABLED - Enable Curve25519 curve
+
+
+// Enable this setting if you need Curve25519 support using MBEDTLS
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_ECC_CURVE25519_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_ECC_CURVE25519_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_HASH_SHA256_ENABLED - Enable mbed TLS SHA-256 hash functionality.
+
+
+// mbed TLS backend implementation for SHA-256.
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_HASH_SHA256_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_HASH_SHA256_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_HASH_SHA512_ENABLED - Enable mbed TLS SHA-512 hash functionality.
+
+
+// mbed TLS backend implementation for SHA-512.
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_HASH_SHA512_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_HASH_SHA512_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_HMAC_SHA256_ENABLED - Enable mbed TLS HMAC using SHA-256.
+
+
+// mbed TLS backend implementation for HMAC using SHA-256.
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_HMAC_SHA256_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_HMAC_SHA256_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MBEDTLS_HMAC_SHA512_ENABLED - Enable mbed TLS HMAC using SHA-512.
+
+
+// mbed TLS backend implementation for HMAC using SHA-512.
+
+#ifndef NRF_CRYPTO_BACKEND_MBEDTLS_HMAC_SHA512_ENABLED
+#define NRF_CRYPTO_BACKEND_MBEDTLS_HMAC_SHA512_ENABLED 1
+#endif
+
+//
+
+// NRF_CRYPTO_BACKEND_MICRO_ECC_ENABLED - Enable the micro-ecc backend.
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_MICRO_ECC_ENABLED
+#define NRF_CRYPTO_BACKEND_MICRO_ECC_ENABLED 0
+#endif
+// NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP192R1_ENABLED - Enable secp192r1 (NIST 192-bit) curve
+
+
+// Enable this setting if you need secp192r1 (NIST 192-bit) support using micro-ecc
+
+#ifndef NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP192R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP192R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP224R1_ENABLED - Enable secp224r1 (NIST 224-bit) curve
+
+
+// Enable this setting if you need secp224r1 (NIST 224-bit) support using micro-ecc
+
+#ifndef NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP224R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP224R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP256R1_ENABLED - Enable secp256r1 (NIST 256-bit) curve
+
+
+// Enable this setting if you need secp256r1 (NIST 256-bit) support using micro-ecc
+
+#ifndef NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP256R1_ENABLED
+#define NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP256R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP256K1_ENABLED - Enable secp256k1 (Koblitz 256-bit) curve
+
+
+// Enable this setting if you need secp256k1 (Koblitz 256-bit) support using micro-ecc
+
+#ifndef NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP256K1_ENABLED
+#define NRF_CRYPTO_BACKEND_MICRO_ECC_ECC_SECP256K1_ENABLED 1
+#endif
+
+//
+
+// NRF_CRYPTO_BACKEND_NRF_HW_RNG_ENABLED - Enable the nRF HW RNG backend.
+
+// The nRF HW backend provide access to RNG peripheral in nRF5x devices.
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_NRF_HW_RNG_ENABLED
+#define NRF_CRYPTO_BACKEND_NRF_HW_RNG_ENABLED 0
+#endif
+// NRF_CRYPTO_BACKEND_NRF_HW_RNG_MBEDTLS_CTR_DRBG_ENABLED - Enable mbed TLS CTR-DRBG algorithm.
+
+
+// Enable mbed TLS CTR-DRBG standardized by NIST (NIST SP 800-90A Rev. 1). The nRF HW RNG is used as an entropy source for seeding.
+
+#ifndef NRF_CRYPTO_BACKEND_NRF_HW_RNG_MBEDTLS_CTR_DRBG_ENABLED
+#define NRF_CRYPTO_BACKEND_NRF_HW_RNG_MBEDTLS_CTR_DRBG_ENABLED 1
+#endif
+
+//
+
+// NRF_CRYPTO_BACKEND_NRF_SW_ENABLED - Enable the legacy nRFx sw for crypto.
+
+// The nRF SW cryptography backend (only used in bootloader context).
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_NRF_SW_ENABLED
+#define NRF_CRYPTO_BACKEND_NRF_SW_ENABLED 0
+#endif
+// NRF_CRYPTO_BACKEND_NRF_SW_HASH_SHA256_ENABLED - nRF SW hash backend support for SHA-256
+
+
+// The nRF SW backend provide access to nRF SDK legacy hash implementation of SHA-256.
+
+#ifndef NRF_CRYPTO_BACKEND_NRF_SW_HASH_SHA256_ENABLED
+#define NRF_CRYPTO_BACKEND_NRF_SW_HASH_SHA256_ENABLED 1
+#endif
+
+//
+
+// NRF_CRYPTO_BACKEND_OBERON_ENABLED - Enable the Oberon backend
+
+// The Oberon backend
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_OBERON_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_ENABLED 0
+#endif
+// NRF_CRYPTO_BACKEND_OBERON_CHACHA_POLY_ENABLED - Enable the CHACHA-POLY mode using Oberon.
+
+
+#ifndef NRF_CRYPTO_BACKEND_OBERON_CHACHA_POLY_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_CHACHA_POLY_ENABLED 0
+#endif
+
+// NRF_CRYPTO_BACKEND_OBERON_ECC_SECP256R1_ENABLED - Enable secp256r1 curve
+
+
+// Enable this setting if you need secp256r1 curve support using Oberon library
+
+#ifndef NRF_CRYPTO_BACKEND_OBERON_ECC_SECP256R1_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_ECC_SECP256R1_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_OBERON_ECC_CURVE25519_ENABLED - Enable Curve25519 ECDH
+
+
+// Enable this setting if you need Curve25519 ECDH support using Oberon library
+
+#ifndef NRF_CRYPTO_BACKEND_OBERON_ECC_CURVE25519_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_ECC_CURVE25519_ENABLED 0
+#endif
+
+// NRF_CRYPTO_BACKEND_OBERON_ECC_ED25519_ENABLED - Enable Ed25519 signature scheme
+
+
+// Enable this setting if you need Ed25519 support using Oberon library
+
+#ifndef NRF_CRYPTO_BACKEND_OBERON_ECC_ED25519_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_ECC_ED25519_ENABLED 0
+#endif
+
+// NRF_CRYPTO_BACKEND_OBERON_HASH_SHA256_ENABLED - Oberon SHA-256 hash functionality
+
+
+// Oberon backend implementation for SHA-256.
+
+#ifndef NRF_CRYPTO_BACKEND_OBERON_HASH_SHA256_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_HASH_SHA256_ENABLED 1
+#endif
+
+// NRF_CRYPTO_BACKEND_OBERON_HASH_SHA512_ENABLED - Oberon SHA-512 hash functionality
+
+
+// Oberon backend implementation for SHA-512.
+
+#ifndef NRF_CRYPTO_BACKEND_OBERON_HASH_SHA512_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_HASH_SHA512_ENABLED 0
+#endif
+
+// NRF_CRYPTO_BACKEND_OBERON_HMAC_SHA256_ENABLED - Oberon HMAC using SHA-256
+
+
+// Oberon backend implementation for HMAC using SHA-256.
+
+#ifndef NRF_CRYPTO_BACKEND_OBERON_HMAC_SHA256_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_HMAC_SHA256_ENABLED 0
+#endif
+
+// NRF_CRYPTO_BACKEND_OBERON_HMAC_SHA512_ENABLED - Oberon HMAC using SHA-512
+
+
+// Oberon backend implementation for HMAC using SHA-512.
+
+#ifndef NRF_CRYPTO_BACKEND_OBERON_HMAC_SHA512_ENABLED
+#define NRF_CRYPTO_BACKEND_OBERON_HMAC_SHA512_ENABLED 0
+#endif
+
+//
+
+// NRF_CRYPTO_BACKEND_OPTIGA_ENABLED - Enable the nrf_crypto Optiga Trust X backend.
+
+// Enables the nrf_crypto backend for Optiga Trust X devices.
+//==========================================================
+#ifndef NRF_CRYPTO_BACKEND_OPTIGA_ENABLED
+#define NRF_CRYPTO_BACKEND_OPTIGA_ENABLED 0
+#endif
+// NRF_CRYPTO_BACKEND_OPTIGA_RNG_ENABLED - Optiga backend support for RNG
+
+
+// The Optiga backend provide external chip RNG.
+
+#ifndef NRF_CRYPTO_BACKEND_OPTIGA_RNG_ENABLED
+#define NRF_CRYPTO_BACKEND_OPTIGA_RNG_ENABLED 0
+#endif
+
+// NRF_CRYPTO_BACKEND_OPTIGA_ECC_SECP256R1_ENABLED - Optiga backend support for ECC secp256r1
+
+
+// The Optiga backend provide external chip ECC using secp256r1.
+
+#ifndef NRF_CRYPTO_BACKEND_OPTIGA_ECC_SECP256R1_ENABLED
+#define NRF_CRYPTO_BACKEND_OPTIGA_ECC_SECP256R1_ENABLED 1
+#endif
+
+//
+
+// NRF_CRYPTO_CURVE25519_BIG_ENDIAN_ENABLED - Big-endian byte order in raw Curve25519 data
+
+
+// Enable big-endian byte order in Curve25519 API, if set to 1. Use little-endian, if set to 0.
+
+#ifndef NRF_CRYPTO_CURVE25519_BIG_ENDIAN_ENABLED
+#define NRF_CRYPTO_CURVE25519_BIG_ENDIAN_ENABLED 0
+#endif
+
+//
+
+// nrf_crypto_rng - RNG Configuration
+
+//==========================================================
+// NRF_CRYPTO_RNG_STATIC_MEMORY_BUFFERS_ENABLED - Use static memory buffers for context and temporary init buffer.
+
+
+// Always recommended when using the nRF HW RNG as the context and temporary buffers are small. Consider disabling if using the CC310 RNG in a RAM constrained application. In this case, memory must be provided to nrf_crypto_rng_init, or it can be allocated internally provided that NRF_CRYPTO_ALLOCATOR does not allocate memory on the stack.
+
+#ifndef NRF_CRYPTO_RNG_STATIC_MEMORY_BUFFERS_ENABLED
+#define NRF_CRYPTO_RNG_STATIC_MEMORY_BUFFERS_ENABLED 1
+#endif
+
+// NRF_CRYPTO_RNG_AUTO_INIT_ENABLED - Initialize the RNG module automatically when nrf_crypto is initialized.
+
+
+// Automatic initialization is only supported with static or internally allocated context and temporary memory.
+
+#ifndef NRF_CRYPTO_RNG_AUTO_INIT_ENABLED
+#define NRF_CRYPTO_RNG_AUTO_INIT_ENABLED 1
+#endif
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+// nRF_DFU
+
+//==========================================================
+// DFU security - nrf_dfu_validation - DFU validation
+
+//==========================================================
+// NRF_DFU_APP_ACCEPT_SAME_VERSION - Whether to accept application upgrades with the same version as the current application.
+
+
+// This applies to application updates, and possibly to SoftDevice updates.
+// Bootloader upgrades always require higher versions. SoftDevice upgrades
+// look at the sd_req field independently of this config.
+// Disabling this protects against replay attacks wearing out the flash of the device.
+// This config only has an effect when NRF_DFU_APP_DOWNGRADE_PREVENTION is enabled.
+
+#ifndef NRF_DFU_APP_ACCEPT_SAME_VERSION
+#define NRF_DFU_APP_ACCEPT_SAME_VERSION 1
+#endif
+
+// NRF_DFU_APP_DOWNGRADE_PREVENTION - Check the firmware version and SoftDevice requirements of application (and SoftDevice) updates.
+
+
+// Whether to check the incoming version against the version of the existing app and/or
+// the incoming SoftDevice requirements against the existing SoftDevice.
+// This applies to application updates, and possibly to SoftDevice updates.
+// Disabling this causes the checks to always ignore the incoming firmware version and
+// to ignore the SoftDevice requirements if the first requirement is 0.
+// This does not apply the bootloader updates. If the bootloader depends on the SoftDevice
+// e.g. for BLE transport, this does not apply to SoftDevice updates.
+// See @ref lib_bootloader_dfu_validation for more information.
+// When signed updates are required, version checking should always be enabled.
+
+#ifndef NRF_DFU_APP_DOWNGRADE_PREVENTION
+#define NRF_DFU_APP_DOWNGRADE_PREVENTION 1
+#endif
+
+// NRF_DFU_EXTERNAL_APP_VERSIONING - Require versioning for external applications.
+
+
+// This configuration is only used if NRF_DFU_SUPPORTS_EXTERNAL_APP is set to 1.
+// Setting this will require that any FW images using the FW upgrade type
+// DFU_FW_TYPE_EXTERNAL_APPLICATION must follow a monotonic versioning scheme
+// where the FW version of an upgrade must always be larger than the previously stored
+// FW version.
+
+#ifndef NRF_DFU_EXTERNAL_APP_VERSIONING
+#define NRF_DFU_EXTERNAL_APP_VERSIONING 1
+#endif
+
+// NRF_DFU_FORCE_DUAL_BANK_APP_UPDATES - Accept only dual-bank application updates.
+
+
+// If not enabled then if there is not enough space to perform dual-bank update
+// application is deleted and single-bank update is performed. In case it is considered
+// security concern user can prefer to discard update request rather than overwrite
+// current application.
+
+#ifndef NRF_DFU_FORCE_DUAL_BANK_APP_UPDATES
+#define NRF_DFU_FORCE_DUAL_BANK_APP_UPDATES 0
+#endif
+
+// NRF_DFU_HW_VERSION - Device hardware version.
+// This is used to determine if given update is targeting the device.
+// It is checked against the hw_version value in the init packet
+
+#ifndef NRF_DFU_HW_VERSION
+#define NRF_DFU_HW_VERSION 52
+#endif
+
+// NRF_DFU_REQUIRE_SIGNED_APP_UPDATE - Require a valid signature to update the application or SoftDevice.
+
+
+#ifndef NRF_DFU_REQUIRE_SIGNED_APP_UPDATE
+#define NRF_DFU_REQUIRE_SIGNED_APP_UPDATE 1
+#endif
+
+// NRF_DFU_SINGLE_BANK_APP_UPDATES - Place the application and the SoftDevice directly where they are supposed to be.
+
+
+// Note that this creates security concerns when signing and version checks
+// are enabled. An attacker will be able to delete (but not replace)
+// the current app or SoftDevice without knowing the signature key.
+
+#ifndef NRF_DFU_SINGLE_BANK_APP_UPDATES
+#define NRF_DFU_SINGLE_BANK_APP_UPDATES 0
+#endif
+
+//
+//==========================================================
+
+// NRF_DFU_SETTINGS_COMPATIBILITY_MODE - nrf_dfu_settings - DFU Settings
+
+
+#ifndef NRF_DFU_SETTINGS_COMPATIBILITY_MODE
+#define NRF_DFU_SETTINGS_COMPATIBILITY_MODE 1
+#endif
+
+// nrf_dfu - Device Firmware Upgrade
+
+//==========================================================
+// DFU transport
+
+//==========================================================
+// NRF_DFU_TRANSPORT_ANT - ANT transport settings
+//==========================================================
+#ifndef NRF_DFU_TRANSPORT_ANT
+#define NRF_DFU_TRANSPORT_ANT 0
+#endif
+// NRF_DFU_ANT_MTU - MTU size used for firmware bursts.
+// Sets the maximum burst size used for DFU write commands.
+
+#ifndef NRF_DFU_ANT_MTU
+#define NRF_DFU_ANT_MTU 1024
+#endif
+
+// ANT DFU buffers
+
+//==========================================================
+// NRF_DFU_ANT_BUFFERS_OVERRIDE
+
+// Check this option to override the default number of buffers.
+//==========================================================
+#ifndef NRF_DFU_ANT_BUFFERS_OVERRIDE
+#define NRF_DFU_ANT_BUFFERS_OVERRIDE 0
+#endif
+// NRF_DFU_ANT_BUFFERS - Number of buffers in the ANT transport.
+// Number of buffers to store incoming data while it is being written to flash.
+// Reduce this value to save RAM. If this value is too low, the DFU process will fail.
+
+#ifndef NRF_DFU_ANT_BUFFERS
+#define NRF_DFU_ANT_BUFFERS 8
+#endif
+
+//
+
+//
+//==========================================================
+
+// ANT DFU Channel Configuration
+
+//==========================================================
+// NRF_DFU_ANT_RF_FREQ - DFU RF channel.
+#ifndef NRF_DFU_ANT_RF_FREQ
+#define NRF_DFU_ANT_RF_FREQ 66
+#endif
+
+// NRF_DFU_ANT_DEV_TYPE - Device type field to use for DFU channel id.
+#ifndef NRF_DFU_ANT_DEV_TYPE
+#define NRF_DFU_ANT_DEV_TYPE 10
+#endif
+
+// NRF_DFU_ANT_CHANNEL_PERIOD - Channel period of DFU ANT channel.
+#ifndef NRF_DFU_ANT_CHANNEL_PERIOD
+#define NRF_DFU_ANT_CHANNEL_PERIOD 2048
+#endif
+
+//
+//==========================================================
+
+//
+
+// NRF_DFU_TRANSPORT_BLE - BLE transport settings
+//==========================================================
+#ifndef NRF_DFU_TRANSPORT_BLE
+#define NRF_DFU_TRANSPORT_BLE 1
+#endif
+// NRF_DFU_BLE_SKIP_SD_INIT - Skip the SoftDevice and interrupt vector table initialization.
+
+
+#ifndef NRF_DFU_BLE_SKIP_SD_INIT
+#define NRF_DFU_BLE_SKIP_SD_INIT 0
+#endif
+
+// NRF_DFU_BLE_ADV_NAME - Default advertising name.
+#ifndef NRF_DFU_BLE_ADV_NAME
+#define NRF_DFU_BLE_ADV_NAME "DfuTarget"
+#endif
+
+// NRF_DFU_BLE_ADV_INTERVAL - Advertising interval (in units of 0.625 ms)
+#ifndef NRF_DFU_BLE_ADV_INTERVAL
+#define NRF_DFU_BLE_ADV_INTERVAL 40
+#endif
+
+// BLE DFU security
+
+//==========================================================
+// NRF_DFU_BLE_REQUIRES_BONDS - Require bond with peer.
+
+
+#ifndef NRF_DFU_BLE_REQUIRES_BONDS
+#define NRF_DFU_BLE_REQUIRES_BONDS 0
+
+#endif
+
+//
+//==========================================================
+
+// BLE DFU connection
+
+//==========================================================
+// NRF_DFU_BLE_MIN_CONN_INTERVAL - Minimum connection interval (units).
+// Minimum GAP connection interval, in 1.25 ms units.
+
+#ifndef NRF_DFU_BLE_MIN_CONN_INTERVAL
+#define NRF_DFU_BLE_MIN_CONN_INTERVAL 12
+#endif
+
+// NRF_DFU_BLE_MAX_CONN_INTERVAL - Maximum connection interval (units).
+// Maximum GAP connection interval, in 1.25 ms units.
+
+#ifndef NRF_DFU_BLE_MAX_CONN_INTERVAL
+#define NRF_DFU_BLE_MAX_CONN_INTERVAL 12
+#endif
+
+// NRF_DFU_BLE_CONN_SUP_TIMEOUT_MS - Supervision timeout (ms).
+// GAP connection supervision timeout, in milliseconds.
+
+#ifndef NRF_DFU_BLE_CONN_SUP_TIMEOUT_MS
+#define NRF_DFU_BLE_CONN_SUP_TIMEOUT_MS 6000
+#endif
+
+//
+//==========================================================
+
+// BLE DFU buffers
+
+//==========================================================
+// NRF_DFU_BLE_BUFFERS_OVERRIDE
+
+// Check this option to override the default number of buffers.
+//==========================================================
+#ifndef NRF_DFU_BLE_BUFFERS_OVERRIDE
+#define NRF_DFU_BLE_BUFFERS_OVERRIDE 0
+#endif
+// NRF_DFU_BLE_BUFFERS - Number of buffers in the BLE transport.
+// Number of buffers to store incoming data while it is being written to flash.
+// Reduce this value to save RAM. If this value is too low, the DFU process will fail.
+
+#ifndef NRF_DFU_BLE_BUFFERS
+#define NRF_DFU_BLE_BUFFERS 8
+#endif
+
+//
+
+//
+//==========================================================
+
+//
+
+//
+//==========================================================
+
+// DFU protocol
+
+//==========================================================
+// NRF_DFU_PROTOCOL_FW_VERSION_MSG - Firmware version message support.
+
+
+// Firmware version message support.
+// If disabled, firmware version requests will return NRF_DFU_RES_CODE_OP_CODE_NOT_SUPPORTED.
+
+#ifndef NRF_DFU_PROTOCOL_FW_VERSION_MSG
+#define NRF_DFU_PROTOCOL_FW_VERSION_MSG 1
+#endif
+
+// NRF_DFU_PROTOCOL_REDUCED - Reduced protocol opcode selection.
+
+
+// Only support a minimal set of opcodes; return NRF_DFU_RES_CODE_OP_CODE_NOT_SUPPORTED
+// for unsupported opcodes. The supported opcodes are:NRF_DFU_OP_OBJECT_CREATE,
+// NRF_DFU_OP_OBJECT_EXECUTE, NRF_DFU_OP_OBJECT_SELECT, NRF_DFU_OP_OBJECT_WRITE,
+// NRF_DFU_OP_CRC_GET, NRF_DFU_OP_RECEIPT_NOTIF_SET, and NRF_DFU_OP_ABORT.
+// This reduced feature set is used by the BLE transport to reduce flash usage.
+
+#ifndef NRF_DFU_PROTOCOL_REDUCED
+#define NRF_DFU_PROTOCOL_REDUCED 0
+#endif
+
+// NRF_DFU_PROTOCOL_VERSION_MSG - Protocol version message support.
+
+
+// Protocol version message support.
+// If disabled, protocol version requests will return NRF_DFU_RES_CODE_OP_CODE_NOT_SUPPORTED.
+
+#ifndef NRF_DFU_PROTOCOL_VERSION_MSG
+#define NRF_DFU_PROTOCOL_VERSION_MSG 1
+#endif
+
+//
+//==========================================================
+
+// Misc DFU settings
+
+//==========================================================
+// NRF_DFU_APP_DATA_AREA_SIZE - The size (in bytes) of the flash area reserved for application data.
+// This area is found at the end of the application area, next to the start of
+// the bootloader. This area will not be erased by the bootloader during a
+// firmware upgrade. The size must be a multiple of the flash page size.
+
+#ifndef NRF_DFU_APP_DATA_AREA_SIZE
+#define NRF_DFU_APP_DATA_AREA_SIZE 12288
+#endif
+
+// NRF_DFU_IN_APP - Specifies that this code is in the app, not the bootloader, so some settings are off-limits.
+
+
+// Enable this to disable writing to areas of the settings that are protected
+// by the bootlader. If this is not enabled in the app, certain settings write
+// operations will cause HardFaults or will be ignored. Enabling this option
+// also causes postvalidation to be disabled since this is meant to be done
+// in the bootloader. NRF_BL_DFU_ALLOW_UPDATE_FROM_APP must be enabled in the bootloader.
+
+#ifndef NRF_DFU_IN_APP
+#define NRF_DFU_IN_APP 0
+#endif
+
+// NRF_DFU_SAVE_PROGRESS_IN_FLASH - Save DFU progress in flash.
+
+
+// Save DFU progress to flash so that it can be resumed if interrupted, instead of being restarted.
+// Keep this setting disabled to maximize transfer speed and minimize flash wear.
+// The init packet is always saved in flash, regardless of this setting.
+
+#ifndef NRF_DFU_SAVE_PROGRESS_IN_FLASH
+#define NRF_DFU_SAVE_PROGRESS_IN_FLASH 0
+#endif
+
+// NRF_DFU_SUPPORTS_EXTERNAL_APP - [Experimental] Support for external app.
+
+
+// External apps are apps that will not be activated. They can
+// e.g. be apps to be sent to a third party. External app updates
+// are verified upon reception, but will remain in bank 1, and
+// will never be booted. An external app will be overwritten if
+// a new DFU procedure is performed. Note: This functionality is
+// experimental and not yet used in any examples.
+
+#ifndef NRF_DFU_SUPPORTS_EXTERNAL_APP
+#define NRF_DFU_SUPPORTS_EXTERNAL_APP 0
+#endif
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+// nRF_Libraries
+
+//==========================================================
+// APP_SCHEDULER_ENABLED - app_scheduler - Events scheduler
+//==========================================================
+#ifndef APP_SCHEDULER_ENABLED
+#define APP_SCHEDULER_ENABLED 1
+#endif
+// APP_SCHEDULER_WITH_PAUSE - Enabling pause feature
+
+
+#ifndef APP_SCHEDULER_WITH_PAUSE
+#define APP_SCHEDULER_WITH_PAUSE 0
+#endif
+
+// APP_SCHEDULER_WITH_PROFILER - Enabling scheduler profiling
+
+
+#ifndef APP_SCHEDULER_WITH_PROFILER
+#define APP_SCHEDULER_WITH_PROFILER 0
+#endif
+
+//
+
+// CRC32_ENABLED - crc32 - CRC32 calculation routines
+
+
+#ifndef CRC32_ENABLED
+#define CRC32_ENABLED 1
+#endif
+
+// MEM_MANAGER_ENABLED - mem_manager - Dynamic memory allocator
+//==========================================================
+#ifndef MEM_MANAGER_ENABLED
+#define MEM_MANAGER_ENABLED 1
+#endif
+// MEMORY_MANAGER_SMALL_BLOCK_COUNT - Size of each memory blocks identified as 'small' block. <0-255>
+
+
+#ifndef MEMORY_MANAGER_SMALL_BLOCK_COUNT
+#define MEMORY_MANAGER_SMALL_BLOCK_COUNT 1
+#endif
+
+// MEMORY_MANAGER_SMALL_BLOCK_SIZE - Size of each memory blocks identified as 'small' block.
+// Size of each memory blocks identified as 'small' block. Memory block are recommended to be word-sized.
+
+#ifndef MEMORY_MANAGER_SMALL_BLOCK_SIZE
+#define MEMORY_MANAGER_SMALL_BLOCK_SIZE 32
+#endif
+
+// MEMORY_MANAGER_MEDIUM_BLOCK_COUNT - Size of each memory blocks identified as 'medium' block. <0-255>
+
+
+#ifndef MEMORY_MANAGER_MEDIUM_BLOCK_COUNT
+#define MEMORY_MANAGER_MEDIUM_BLOCK_COUNT 0
+#endif
+
+// MEMORY_MANAGER_MEDIUM_BLOCK_SIZE - Size of each memory blocks identified as 'medium' block.
+// Size of each memory blocks identified as 'medium' block. Memory block are recommended to be word-sized.
+
+#ifndef MEMORY_MANAGER_MEDIUM_BLOCK_SIZE
+#define MEMORY_MANAGER_MEDIUM_BLOCK_SIZE 256
+#endif
+
+// MEMORY_MANAGER_LARGE_BLOCK_COUNT - Size of each memory blocks identified as 'large' block. <0-255>
+
+
+#ifndef MEMORY_MANAGER_LARGE_BLOCK_COUNT
+#define MEMORY_MANAGER_LARGE_BLOCK_COUNT 0
+#endif
+
+// MEMORY_MANAGER_LARGE_BLOCK_SIZE - Size of each memory blocks identified as 'large' block.
+// Size of each memory blocks identified as 'large' block. Memory block are recommended to be word-sized.
+
+#ifndef MEMORY_MANAGER_LARGE_BLOCK_SIZE
+#define MEMORY_MANAGER_LARGE_BLOCK_SIZE 256
+#endif
+
+// MEMORY_MANAGER_XLARGE_BLOCK_COUNT - Size of each memory blocks identified as 'extra large' block. <0-255>
+
+
+#ifndef MEMORY_MANAGER_XLARGE_BLOCK_COUNT
+#define MEMORY_MANAGER_XLARGE_BLOCK_COUNT 0
+#endif
+
+// MEMORY_MANAGER_XLARGE_BLOCK_SIZE - Size of each memory blocks identified as 'extra large' block.
+// Size of each memory blocks identified as 'extra large' block. Memory block are recommended to be word-sized.
+
+#ifndef MEMORY_MANAGER_XLARGE_BLOCK_SIZE
+#define MEMORY_MANAGER_XLARGE_BLOCK_SIZE 1320
+#endif
+
+// MEMORY_MANAGER_XXLARGE_BLOCK_COUNT - Size of each memory blocks identified as 'extra extra large' block. <0-255>
+
+
+#ifndef MEMORY_MANAGER_XXLARGE_BLOCK_COUNT
+#define MEMORY_MANAGER_XXLARGE_BLOCK_COUNT 0
+#endif
+
+// MEMORY_MANAGER_XXLARGE_BLOCK_SIZE - Size of each memory blocks identified as 'extra extra large' block.
+// Size of each memory blocks identified as 'extra extra large' block. Memory block are recommended to be word-sized.
+
+#ifndef MEMORY_MANAGER_XXLARGE_BLOCK_SIZE
+#define MEMORY_MANAGER_XXLARGE_BLOCK_SIZE 3444
+#endif
+
+// MEMORY_MANAGER_XSMALL_BLOCK_COUNT - Size of each memory blocks identified as 'extra small' block. <0-255>
+
+
+#ifndef MEMORY_MANAGER_XSMALL_BLOCK_COUNT
+#define MEMORY_MANAGER_XSMALL_BLOCK_COUNT 0
+#endif
+
+// MEMORY_MANAGER_XSMALL_BLOCK_SIZE - Size of each memory blocks identified as 'extra small' block.
+// Size of each memory blocks identified as 'extra large' block. Memory block are recommended to be word-sized.
+
+#ifndef MEMORY_MANAGER_XSMALL_BLOCK_SIZE
+#define MEMORY_MANAGER_XSMALL_BLOCK_SIZE 64
+#endif
+
+// MEMORY_MANAGER_XXSMALL_BLOCK_COUNT - Size of each memory blocks identified as 'extra extra small' block. <0-255>
+
+
+#ifndef MEMORY_MANAGER_XXSMALL_BLOCK_COUNT
+#define MEMORY_MANAGER_XXSMALL_BLOCK_COUNT 0
+#endif
+
+// MEMORY_MANAGER_XXSMALL_BLOCK_SIZE - Size of each memory blocks identified as 'extra extra small' block.
+// Size of each memory blocks identified as 'extra extra small' block. Memory block are recommended to be word-sized.
+
+#ifndef MEMORY_MANAGER_XXSMALL_BLOCK_SIZE
+#define MEMORY_MANAGER_XXSMALL_BLOCK_SIZE 32
+#endif
+
+// MEM_MANAGER_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef MEM_MANAGER_CONFIG_LOG_ENABLED
+#define MEM_MANAGER_CONFIG_LOG_ENABLED 0
+#endif
+// MEM_MANAGER_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef MEM_MANAGER_CONFIG_LOG_LEVEL
+#define MEM_MANAGER_CONFIG_LOG_LEVEL 3
+#endif
+
+// MEM_MANAGER_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef MEM_MANAGER_CONFIG_INFO_COLOR
+#define MEM_MANAGER_CONFIG_INFO_COLOR 0
+#endif
+
+// MEM_MANAGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef MEM_MANAGER_CONFIG_DEBUG_COLOR
+#define MEM_MANAGER_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// MEM_MANAGER_DISABLE_API_PARAM_CHECK - Disable API parameter checks in the module.
+
+
+#ifndef MEM_MANAGER_DISABLE_API_PARAM_CHECK
+#define MEM_MANAGER_DISABLE_API_PARAM_CHECK 0
+#endif
+
+//
+
+// NRF_BALLOC_ENABLED - nrf_balloc - Block allocator module
+//==========================================================
+#ifndef NRF_BALLOC_ENABLED
+#define NRF_BALLOC_ENABLED 1
+#endif
+// NRF_BALLOC_CONFIG_DEBUG_ENABLED - Enables debug mode in the module.
+//==========================================================
+#ifndef NRF_BALLOC_CONFIG_DEBUG_ENABLED
+#define NRF_BALLOC_CONFIG_DEBUG_ENABLED 0
+#endif
+// NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS - Number of words used as head guard. <0-255>
+
+
+#ifndef NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS
+#define NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS 1
+#endif
+
+// NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS - Number of words used as tail guard. <0-255>
+
+
+#ifndef NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS
+#define NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS 1
+#endif
+
+// NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED - Enables basic checks in this module.
+
+
+#ifndef NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED
+#define NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED 0
+#endif
+
+// NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED - Enables double memory free check in this module.
+
+
+#ifndef NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED
+#define NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED 0
+#endif
+
+// NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED - Enables free memory corruption check in this module.
+
+
+#ifndef NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED
+#define NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED 0
+#endif
+
+// NRF_BALLOC_CLI_CMDS - Enable CLI commands specific to the module
+
+
+#ifndef NRF_BALLOC_CLI_CMDS
+#define NRF_BALLOC_CLI_CMDS 0
+#endif
+
+//
+
+//
+
+// NRF_FSTORAGE_ENABLED - nrf_fstorage - Flash abstraction library
+//==========================================================
+#ifndef NRF_FSTORAGE_ENABLED
+#define NRF_FSTORAGE_ENABLED 1
+#endif
+// nrf_fstorage - Common settings
+
+// Common settings to all fstorage implementations
+//==========================================================
+// NRF_FSTORAGE_PARAM_CHECK_DISABLED - Disable user input validation
+
+
+// If selected, use ASSERT to validate user input.
+// This effectively removes user input validation in production code.
+// Recommended setting: OFF, only enable this setting if size is a major concern.
+
+#ifndef NRF_FSTORAGE_PARAM_CHECK_DISABLED
+#define NRF_FSTORAGE_PARAM_CHECK_DISABLED 1
+#endif
+
+//
+//==========================================================
+
+// nrf_fstorage_sd - Implementation using the SoftDevice
+
+// Configuration options for the fstorage implementation using the SoftDevice
+//==========================================================
+// NRF_FSTORAGE_SD_QUEUE_SIZE - Size of the internal queue of operations
+// Increase this value if API calls frequently return the error @ref NRF_ERROR_NO_MEM.
+
+#ifndef NRF_FSTORAGE_SD_QUEUE_SIZE
+#define NRF_FSTORAGE_SD_QUEUE_SIZE 16
+#endif
+
+// NRF_FSTORAGE_SD_MAX_RETRIES - Maximum number of attempts at executing an operation when the SoftDevice is busy
+// Increase this value if events frequently return the @ref NRF_ERROR_TIMEOUT error.
+// The SoftDevice might fail to schedule flash access due to high BLE activity.
+
+#ifndef NRF_FSTORAGE_SD_MAX_RETRIES
+#define NRF_FSTORAGE_SD_MAX_RETRIES 8
+#endif
+
+// NRF_FSTORAGE_SD_MAX_WRITE_SIZE - Maximum number of bytes to be written to flash in a single operation
+// This value must be a multiple of four.
+// Lowering this value can increase the chances of the SoftDevice being able to execute flash operations in between radio activity.
+// This value is bound by the maximum number of bytes that can be written to flash in a single call to @ref sd_flash_write.
+// That is 1024 bytes for nRF51 ICs and 4096 bytes for nRF52 ICs.
+
+#ifndef NRF_FSTORAGE_SD_MAX_WRITE_SIZE
+#define NRF_FSTORAGE_SD_MAX_WRITE_SIZE 20
+#endif
+
+//
+//==========================================================
+
+//
+
+// NRF_MEMOBJ_ENABLED - nrf_memobj - Linked memory allocator module
+
+
+#ifndef NRF_MEMOBJ_ENABLED
+#define NRF_MEMOBJ_ENABLED 1
+#endif
+
+// NRF_QUEUE_ENABLED - nrf_queue - Queue module
+//==========================================================
+#ifndef NRF_QUEUE_ENABLED
+#define NRF_QUEUE_ENABLED 0
+#endif
+// NRF_QUEUE_CLI_CMDS - Enable CLI commands specific to the module
+
+
+#ifndef NRF_QUEUE_CLI_CMDS
+#define NRF_QUEUE_CLI_CMDS 0
+#endif
+
+//
+
+// NRF_SECTION_ITER_ENABLED - nrf_section_iter - Section iterator
+
+
+#ifndef NRF_SECTION_ITER_ENABLED
+#define NRF_SECTION_ITER_ENABLED 1
+#endif
+
+// NRF_STRERROR_ENABLED - nrf_strerror - Library for converting error code to string.
+
+
+#ifndef NRF_STRERROR_ENABLED
+#define NRF_STRERROR_ENABLED 1
+#endif
+
+// nrf_fprintf - fprintf function.
+
+//==========================================================
+// NRF_FPRINTF_ENABLED - Enable/disable fprintf module.
+
+
+#ifndef NRF_FPRINTF_ENABLED
+#define NRF_FPRINTF_ENABLED 1
+#endif
+
+// NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED - For each printed LF, function will add CR.
+
+
+#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED
+#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 1
+#endif
+
+// NRF_FPRINTF_DOUBLE_ENABLED - Enable IEEE-754 double precision formatting.
+
+
+#ifndef NRF_FPRINTF_DOUBLE_ENABLED
+#define NRF_FPRINTF_DOUBLE_ENABLED 0
+#endif
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+// nRF_Log
+
+//==========================================================
+// NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend
+//==========================================================
+#ifndef NRF_LOG_BACKEND_RTT_ENABLED
+#define NRF_LOG_BACKEND_RTT_ENABLED 1
+#endif
+// NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings.
+// Size of the buffer is a trade-off between RAM usage and processing.
+// if buffer is smaller then strings will often be fragmented.
+// It is recommended to use size which will fit typical log and only the
+// longer one will be fragmented.
+
+#ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE
+#define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64
+#endif
+
+// NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS - Period before retrying writing to RTT
+#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS
+#define NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS 1
+#endif
+
+// NRF_LOG_BACKEND_RTT_TX_RETRY_CNT - Writing to RTT retries.
+// If RTT fails to accept any new data after retries
+// module assumes that host is not active and on next
+// request it will perform only one write attempt.
+// On successful writing, module assumes that host is active
+// and scheme with retry is applied again.
+
+#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_CNT
+#define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 3
+#endif
+
+//
+
+// NRF_LOG_ENABLED - nrf_log - Logger
+//==========================================================
+#ifndef NRF_LOG_ENABLED
+#define NRF_LOG_ENABLED 1
+#endif
+// Log message pool - Configuration of log message pool
+
+//==========================================================
+// NRF_LOG_MSGPOOL_ELEMENT_SIZE - Size of a single element in the pool of memory objects.
+// If a small value is set, then performance of logs processing
+// is degraded because data is fragmented. Bigger value impacts
+// RAM memory utilization. The size is set to fit a message with
+// a timestamp and up to 2 arguments in a single memory object.
+
+#ifndef NRF_LOG_MSGPOOL_ELEMENT_SIZE
+#define NRF_LOG_MSGPOOL_ELEMENT_SIZE 20
+#endif
+
+// NRF_LOG_MSGPOOL_ELEMENT_COUNT - Number of elements in the pool of memory objects
+// If a small value is set, then it may lead to a deadlock
+// in certain cases if backend has high latency and holds
+// multiple messages for long time. Bigger value impacts
+// RAM memory usage.
+
+#ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT
+#define NRF_LOG_MSGPOOL_ELEMENT_COUNT 8
+#endif
+
+//
+//==========================================================
+
+// NRF_LOG_ALLOW_OVERFLOW - Configures behavior when circular buffer is full.
+
+
+// If set then oldest logs are overwritten. Otherwise a
+// marker is injected informing about overflow.
+
+#ifndef NRF_LOG_ALLOW_OVERFLOW
+#define NRF_LOG_ALLOW_OVERFLOW 1
+#endif
+
+// NRF_LOG_BUFSIZE - Size of the buffer for storing logs (in bytes).
+
+
+// Must be power of 2 and multiple of 4.
+// If NRF_LOG_DEFERRED = 0 then buffer size can be reduced to minimum.
+// <128=> 128
+// <256=> 256
+// <512=> 512
+// <1024=> 1024
+// <2048=> 2048
+// <4096=> 4096
+// <8192=> 8192
+// <16384=> 16384
+
+#ifndef NRF_LOG_BUFSIZE
+#define NRF_LOG_BUFSIZE 4096
+#endif
+
+// NRF_LOG_CLI_CMDS - Enable CLI commands for the module.
+
+
+#ifndef NRF_LOG_CLI_CMDS
+#define NRF_LOG_CLI_CMDS 0
+#endif
+
+// NRF_LOG_DEFAULT_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_LOG_DEFAULT_LEVEL
+#define NRF_LOG_DEFAULT_LEVEL 4
+#endif
+
+// NRF_LOG_DEFERRED - Enable deffered logger.
+
+
+// Log data is buffered and can be processed in idle.
+
+#ifndef NRF_LOG_DEFERRED
+#define NRF_LOG_DEFERRED 1
+#endif
+
+// NRF_LOG_FILTERS_ENABLED - Enable dynamic filtering of logs.
+
+
+#ifndef NRF_LOG_FILTERS_ENABLED
+#define NRF_LOG_FILTERS_ENABLED 0
+#endif
+
+// NRF_LOG_NON_DEFFERED_CRITICAL_REGION_ENABLED - Enable use of critical region for non deffered mode when flushing logs.
+
+
+// When enabled NRF_LOG_FLUSH is called from critical section when non deffered mode is used.
+// Log output will never be corrupted as access to the log backend is exclusive
+// but system will spend significant amount of time in critical section
+
+#ifndef NRF_LOG_NON_DEFFERED_CRITICAL_REGION_ENABLED
+#define NRF_LOG_NON_DEFFERED_CRITICAL_REGION_ENABLED 0
+#endif
+
+// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH.
+
+// <16=> 16
+// <32=> 32
+// <64=> 64
+// <128=> 128
+// <256=> 256
+// <512=> 512
+// <1024=> 1024
+
+#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE
+#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128
+#endif
+
+// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH.
+
+// <16=> 16
+// <32=> 32
+// <64=> 64
+// <128=> 128
+// <256=> 256
+// <512=> 512
+// <1024=> 1024
+
+#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE
+#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128
+#endif
+
+// NRF_LOG_USES_COLORS - If enabled then ANSI escape code for colors is prefixed to every string
+//==========================================================
+#ifndef NRF_LOG_USES_COLORS
+#define NRF_LOG_USES_COLORS 0
+#endif
+// NRF_LOG_COLOR_DEFAULT - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_LOG_COLOR_DEFAULT
+#define NRF_LOG_COLOR_DEFAULT 0
+#endif
+
+// NRF_LOG_ERROR_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_LOG_ERROR_COLOR
+#define NRF_LOG_ERROR_COLOR 2
+#endif
+
+// NRF_LOG_WARNING_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_LOG_WARNING_COLOR
+#define NRF_LOG_WARNING_COLOR 4
+#endif
+
+//
+
+// NRF_LOG_USES_TIMESTAMP - Enable timestamping
+
+// Function for getting the timestamp is provided by the user
+//==========================================================
+#ifndef NRF_LOG_USES_TIMESTAMP
+#define NRF_LOG_USES_TIMESTAMP 0
+#endif
+// NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY - Default frequency of the timestamp (in Hz) or 0 to use app_timer frequency.
+#ifndef NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY
+#define NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY 0
+#endif
+
+//
+
+// nrf_log module configuration
+
+//==========================================================
+// nrf_log in nRF_Core
+
+//==========================================================
+// NRF_MPU_LIB_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_MPU_LIB_CONFIG_LOG_ENABLED
+#define NRF_MPU_LIB_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_MPU_LIB_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_MPU_LIB_CONFIG_LOG_LEVEL
+#define NRF_MPU_LIB_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_MPU_LIB_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_MPU_LIB_CONFIG_INFO_COLOR
+#define NRF_MPU_LIB_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_MPU_LIB_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_MPU_LIB_CONFIG_DEBUG_COLOR
+#define NRF_MPU_LIB_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_STACK_GUARD_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_STACK_GUARD_CONFIG_LOG_ENABLED
+#define NRF_STACK_GUARD_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_STACK_GUARD_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_STACK_GUARD_CONFIG_LOG_LEVEL
+#define NRF_STACK_GUARD_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_STACK_GUARD_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_STACK_GUARD_CONFIG_INFO_COLOR
+#define NRF_STACK_GUARD_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_STACK_GUARD_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_STACK_GUARD_CONFIG_DEBUG_COLOR
+#define NRF_STACK_GUARD_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// TASK_MANAGER_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef TASK_MANAGER_CONFIG_LOG_ENABLED
+#define TASK_MANAGER_CONFIG_LOG_ENABLED 0
+#endif
+// TASK_MANAGER_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef TASK_MANAGER_CONFIG_LOG_LEVEL
+#define TASK_MANAGER_CONFIG_LOG_LEVEL 3
+#endif
+
+// TASK_MANAGER_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef TASK_MANAGER_CONFIG_INFO_COLOR
+#define TASK_MANAGER_CONFIG_INFO_COLOR 0
+#endif
+
+// TASK_MANAGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef TASK_MANAGER_CONFIG_DEBUG_COLOR
+#define TASK_MANAGER_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+//
+//==========================================================
+
+// nrf_log in nRF_Drivers
+
+//==========================================================
+// CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef CLOCK_CONFIG_LOG_ENABLED
+#define CLOCK_CONFIG_LOG_ENABLED 0
+#endif
+// CLOCK_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef CLOCK_CONFIG_LOG_LEVEL
+#define CLOCK_CONFIG_LOG_LEVEL 3
+#endif
+
+// CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef CLOCK_CONFIG_INFO_COLOR
+#define CLOCK_CONFIG_INFO_COLOR 0
+#endif
+
+// CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef CLOCK_CONFIG_DEBUG_COLOR
+#define CLOCK_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// COMP_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef COMP_CONFIG_LOG_ENABLED
+#define COMP_CONFIG_LOG_ENABLED 0
+#endif
+// COMP_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef COMP_CONFIG_LOG_LEVEL
+#define COMP_CONFIG_LOG_LEVEL 3
+#endif
+
+// COMP_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef COMP_CONFIG_INFO_COLOR
+#define COMP_CONFIG_INFO_COLOR 0
+#endif
+
+// COMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef COMP_CONFIG_DEBUG_COLOR
+#define COMP_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// GPIOTE_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef GPIOTE_CONFIG_LOG_ENABLED
+#define GPIOTE_CONFIG_LOG_ENABLED 0
+#endif
+// GPIOTE_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef GPIOTE_CONFIG_LOG_LEVEL
+#define GPIOTE_CONFIG_LOG_LEVEL 3
+#endif
+
+// GPIOTE_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef GPIOTE_CONFIG_INFO_COLOR
+#define GPIOTE_CONFIG_INFO_COLOR 0
+#endif
+
+// GPIOTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef GPIOTE_CONFIG_DEBUG_COLOR
+#define GPIOTE_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// LPCOMP_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef LPCOMP_CONFIG_LOG_ENABLED
+#define LPCOMP_CONFIG_LOG_ENABLED 0
+#endif
+// LPCOMP_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef LPCOMP_CONFIG_LOG_LEVEL
+#define LPCOMP_CONFIG_LOG_LEVEL 3
+#endif
+
+// LPCOMP_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef LPCOMP_CONFIG_INFO_COLOR
+#define LPCOMP_CONFIG_INFO_COLOR 0
+#endif
+
+// LPCOMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef LPCOMP_CONFIG_DEBUG_COLOR
+#define LPCOMP_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// MAX3421E_HOST_CONFIG_LOG_ENABLED - Enable logging in the module
+//==========================================================
+#ifndef MAX3421E_HOST_CONFIG_LOG_ENABLED
+#define MAX3421E_HOST_CONFIG_LOG_ENABLED 0
+#endif
+// MAX3421E_HOST_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef MAX3421E_HOST_CONFIG_LOG_LEVEL
+#define MAX3421E_HOST_CONFIG_LOG_LEVEL 3
+#endif
+
+// MAX3421E_HOST_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef MAX3421E_HOST_CONFIG_INFO_COLOR
+#define MAX3421E_HOST_CONFIG_INFO_COLOR 0
+#endif
+
+// MAX3421E_HOST_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef MAX3421E_HOST_CONFIG_DEBUG_COLOR
+#define MAX3421E_HOST_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRFX_USBD_CONFIG_LOG_ENABLED - Enable logging in the module
+//==========================================================
+#ifndef NRFX_USBD_CONFIG_LOG_ENABLED
+#define NRFX_USBD_CONFIG_LOG_ENABLED 0
+#endif
+// NRFX_USBD_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRFX_USBD_CONFIG_LOG_LEVEL
+#define NRFX_USBD_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRFX_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRFX_USBD_CONFIG_INFO_COLOR
+#define NRFX_USBD_CONFIG_INFO_COLOR 0
+#endif
+
+// NRFX_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRFX_USBD_CONFIG_DEBUG_COLOR
+#define NRFX_USBD_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// PDM_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef PDM_CONFIG_LOG_ENABLED
+#define PDM_CONFIG_LOG_ENABLED 0
+#endif
+// PDM_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef PDM_CONFIG_LOG_LEVEL
+#define PDM_CONFIG_LOG_LEVEL 3
+#endif
+
+// PDM_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef PDM_CONFIG_INFO_COLOR
+#define PDM_CONFIG_INFO_COLOR 0
+#endif
+
+// PDM_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef PDM_CONFIG_DEBUG_COLOR
+#define PDM_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// PPI_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef PPI_CONFIG_LOG_ENABLED
+#define PPI_CONFIG_LOG_ENABLED 0
+#endif
+// PPI_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef PPI_CONFIG_LOG_LEVEL
+#define PPI_CONFIG_LOG_LEVEL 3
+#endif
+
+// PPI_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef PPI_CONFIG_INFO_COLOR
+#define PPI_CONFIG_INFO_COLOR 0
+#endif
+
+// PPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef PPI_CONFIG_DEBUG_COLOR
+#define PPI_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// PWM_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef PWM_CONFIG_LOG_ENABLED
+#define PWM_CONFIG_LOG_ENABLED 0
+#endif
+// PWM_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef PWM_CONFIG_LOG_LEVEL
+#define PWM_CONFIG_LOG_LEVEL 3
+#endif
+
+// PWM_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef PWM_CONFIG_INFO_COLOR
+#define PWM_CONFIG_INFO_COLOR 0
+#endif
+
+// PWM_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef PWM_CONFIG_DEBUG_COLOR
+#define PWM_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// QDEC_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef QDEC_CONFIG_LOG_ENABLED
+#define QDEC_CONFIG_LOG_ENABLED 0
+#endif
+// QDEC_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef QDEC_CONFIG_LOG_LEVEL
+#define QDEC_CONFIG_LOG_LEVEL 3
+#endif
+
+// QDEC_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef QDEC_CONFIG_INFO_COLOR
+#define QDEC_CONFIG_INFO_COLOR 0
+#endif
+
+// QDEC_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef QDEC_CONFIG_DEBUG_COLOR
+#define QDEC_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// RNG_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef RNG_CONFIG_LOG_ENABLED
+#define RNG_CONFIG_LOG_ENABLED 0
+#endif
+// RNG_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef RNG_CONFIG_LOG_LEVEL
+#define RNG_CONFIG_LOG_LEVEL 3
+#endif
+
+// RNG_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef RNG_CONFIG_INFO_COLOR
+#define RNG_CONFIG_INFO_COLOR 0
+#endif
+
+// RNG_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef RNG_CONFIG_DEBUG_COLOR
+#define RNG_CONFIG_DEBUG_COLOR 0
+#endif
+
+// RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED - Enables logging of random numbers.
+
+
+#ifndef RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED
+#define RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED 0
+#endif
+
+//
+
+// RTC_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef RTC_CONFIG_LOG_ENABLED
+#define RTC_CONFIG_LOG_ENABLED 0
+#endif
+// RTC_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef RTC_CONFIG_LOG_LEVEL
+#define RTC_CONFIG_LOG_LEVEL 3
+#endif
+
+// RTC_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef RTC_CONFIG_INFO_COLOR
+#define RTC_CONFIG_INFO_COLOR 0
+#endif
+
+// RTC_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef RTC_CONFIG_DEBUG_COLOR
+#define RTC_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// SAADC_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef SAADC_CONFIG_LOG_ENABLED
+#define SAADC_CONFIG_LOG_ENABLED 0
+#endif
+// SAADC_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef SAADC_CONFIG_LOG_LEVEL
+#define SAADC_CONFIG_LOG_LEVEL 3
+#endif
+
+// SAADC_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef SAADC_CONFIG_INFO_COLOR
+#define SAADC_CONFIG_INFO_COLOR 0
+#endif
+
+// SAADC_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef SAADC_CONFIG_DEBUG_COLOR
+#define SAADC_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// SPIS_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef SPIS_CONFIG_LOG_ENABLED
+#define SPIS_CONFIG_LOG_ENABLED 0
+#endif
+// SPIS_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef SPIS_CONFIG_LOG_LEVEL
+#define SPIS_CONFIG_LOG_LEVEL 3
+#endif
+
+// SPIS_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef SPIS_CONFIG_INFO_COLOR
+#define SPIS_CONFIG_INFO_COLOR 0
+#endif
+
+// SPIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef SPIS_CONFIG_DEBUG_COLOR
+#define SPIS_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// SPI_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef SPI_CONFIG_LOG_ENABLED
+#define SPI_CONFIG_LOG_ENABLED 0
+#endif
+// SPI_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef SPI_CONFIG_LOG_LEVEL
+#define SPI_CONFIG_LOG_LEVEL 3
+#endif
+
+// SPI_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef SPI_CONFIG_INFO_COLOR
+#define SPI_CONFIG_INFO_COLOR 0
+#endif
+
+// SPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef SPI_CONFIG_DEBUG_COLOR
+#define SPI_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// TIMER_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef TIMER_CONFIG_LOG_ENABLED
+#define TIMER_CONFIG_LOG_ENABLED 0
+#endif
+// TIMER_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef TIMER_CONFIG_LOG_LEVEL
+#define TIMER_CONFIG_LOG_LEVEL 3
+#endif
+
+// TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef TIMER_CONFIG_INFO_COLOR
+#define TIMER_CONFIG_INFO_COLOR 0
+#endif
+
+// TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef TIMER_CONFIG_DEBUG_COLOR
+#define TIMER_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// TWIS_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef TWIS_CONFIG_LOG_ENABLED
+#define TWIS_CONFIG_LOG_ENABLED 0
+#endif
+// TWIS_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef TWIS_CONFIG_LOG_LEVEL
+#define TWIS_CONFIG_LOG_LEVEL 3
+#endif
+
+// TWIS_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef TWIS_CONFIG_INFO_COLOR
+#define TWIS_CONFIG_INFO_COLOR 0
+#endif
+
+// TWIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef TWIS_CONFIG_DEBUG_COLOR
+#define TWIS_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// TWI_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef TWI_CONFIG_LOG_ENABLED
+#define TWI_CONFIG_LOG_ENABLED 0
+#endif
+// TWI_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef TWI_CONFIG_LOG_LEVEL
+#define TWI_CONFIG_LOG_LEVEL 3
+#endif
+
+// TWI_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef TWI_CONFIG_INFO_COLOR
+#define TWI_CONFIG_INFO_COLOR 0
+#endif
+
+// TWI_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef TWI_CONFIG_DEBUG_COLOR
+#define TWI_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// UART_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef UART_CONFIG_LOG_ENABLED
+#define UART_CONFIG_LOG_ENABLED 0
+#endif
+// UART_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef UART_CONFIG_LOG_LEVEL
+#define UART_CONFIG_LOG_LEVEL 3
+#endif
+
+// UART_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef UART_CONFIG_INFO_COLOR
+#define UART_CONFIG_INFO_COLOR 0
+#endif
+
+// UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef UART_CONFIG_DEBUG_COLOR
+#define UART_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// USBD_CONFIG_LOG_ENABLED - Enable logging in the module
+//==========================================================
+#ifndef USBD_CONFIG_LOG_ENABLED
+#define USBD_CONFIG_LOG_ENABLED 0
+#endif
+// USBD_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef USBD_CONFIG_LOG_LEVEL
+#define USBD_CONFIG_LOG_LEVEL 3
+#endif
+
+// USBD_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef USBD_CONFIG_INFO_COLOR
+#define USBD_CONFIG_INFO_COLOR 0
+#endif
+
+// USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef USBD_CONFIG_DEBUG_COLOR
+#define USBD_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// WDT_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef WDT_CONFIG_LOG_ENABLED
+#define WDT_CONFIG_LOG_ENABLED 0
+#endif
+// WDT_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef WDT_CONFIG_LOG_LEVEL
+#define WDT_CONFIG_LOG_LEVEL 3
+#endif
+
+// WDT_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef WDT_CONFIG_INFO_COLOR
+#define WDT_CONFIG_INFO_COLOR 0
+#endif
+
+// WDT_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef WDT_CONFIG_DEBUG_COLOR
+#define WDT_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+//
+//==========================================================
+
+// nrf_log in nRF_Libraries
+
+//==========================================================
+// APP_BUTTON_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef APP_BUTTON_CONFIG_LOG_ENABLED
+#define APP_BUTTON_CONFIG_LOG_ENABLED 0
+#endif
+// APP_BUTTON_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_BUTTON_CONFIG_LOG_LEVEL
+#define APP_BUTTON_CONFIG_LOG_LEVEL 3
+#endif
+
+// APP_BUTTON_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled.
+
+
+// If module generates a lot of logs, initial log level can
+// be decreased to prevent flooding. Severity level can be
+// increased on instance basis.
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_BUTTON_CONFIG_INITIAL_LOG_LEVEL
+#define APP_BUTTON_CONFIG_INITIAL_LOG_LEVEL 3
+#endif
+
+// APP_BUTTON_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_BUTTON_CONFIG_INFO_COLOR
+#define APP_BUTTON_CONFIG_INFO_COLOR 0
+#endif
+
+// APP_BUTTON_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_BUTTON_CONFIG_DEBUG_COLOR
+#define APP_BUTTON_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// APP_TIMER_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef APP_TIMER_CONFIG_LOG_ENABLED
+#define APP_TIMER_CONFIG_LOG_ENABLED 0
+#endif
+// APP_TIMER_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_TIMER_CONFIG_LOG_LEVEL
+#define APP_TIMER_CONFIG_LOG_LEVEL 3
+#endif
+
+// APP_TIMER_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled.
+
+
+// If module generates a lot of logs, initial log level can
+// be decreased to prevent flooding. Severity level can be
+// increased on instance basis.
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_TIMER_CONFIG_INITIAL_LOG_LEVEL
+#define APP_TIMER_CONFIG_INITIAL_LOG_LEVEL 3
+#endif
+
+// APP_TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_TIMER_CONFIG_INFO_COLOR
+#define APP_TIMER_CONFIG_INFO_COLOR 0
+#endif
+
+// APP_TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_TIMER_CONFIG_DEBUG_COLOR
+#define APP_TIMER_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED
+#define APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED 0
+#endif
+// APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL
+#define APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL 3
+#endif
+
+// APP_USBD_CDC_ACM_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_CDC_ACM_CONFIG_INFO_COLOR
+#define APP_USBD_CDC_ACM_CONFIG_INFO_COLOR 0
+#endif
+
+// APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR
+#define APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// APP_USBD_CONFIG_LOG_ENABLED - Enable logging in the module.
+//==========================================================
+#ifndef APP_USBD_CONFIG_LOG_ENABLED
+#define APP_USBD_CONFIG_LOG_ENABLED 0
+#endif
+// APP_USBD_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_USBD_CONFIG_LOG_LEVEL
+#define APP_USBD_CONFIG_LOG_LEVEL 3
+#endif
+
+// APP_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_CONFIG_INFO_COLOR
+#define APP_USBD_CONFIG_INFO_COLOR 0
+#endif
+
+// APP_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_CONFIG_DEBUG_COLOR
+#define APP_USBD_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// APP_USBD_DUMMY_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef APP_USBD_DUMMY_CONFIG_LOG_ENABLED
+#define APP_USBD_DUMMY_CONFIG_LOG_ENABLED 0
+#endif
+// APP_USBD_DUMMY_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_USBD_DUMMY_CONFIG_LOG_LEVEL
+#define APP_USBD_DUMMY_CONFIG_LOG_LEVEL 3
+#endif
+
+// APP_USBD_DUMMY_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_DUMMY_CONFIG_INFO_COLOR
+#define APP_USBD_DUMMY_CONFIG_INFO_COLOR 0
+#endif
+
+// APP_USBD_DUMMY_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_DUMMY_CONFIG_DEBUG_COLOR
+#define APP_USBD_DUMMY_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// APP_USBD_MSC_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef APP_USBD_MSC_CONFIG_LOG_ENABLED
+#define APP_USBD_MSC_CONFIG_LOG_ENABLED 0
+#endif
+// APP_USBD_MSC_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_USBD_MSC_CONFIG_LOG_LEVEL
+#define APP_USBD_MSC_CONFIG_LOG_LEVEL 3
+#endif
+
+// APP_USBD_MSC_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_MSC_CONFIG_INFO_COLOR
+#define APP_USBD_MSC_CONFIG_INFO_COLOR 0
+#endif
+
+// APP_USBD_MSC_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_MSC_CONFIG_DEBUG_COLOR
+#define APP_USBD_MSC_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED
+#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED 0
+#endif
+// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL
+#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL 3
+#endif
+
+// APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR
+#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR 0
+#endif
+
+// APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR
+#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_ATFIFO_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_ATFIFO_CONFIG_LOG_ENABLED
+#define NRF_ATFIFO_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_ATFIFO_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_ATFIFO_CONFIG_LOG_LEVEL
+#define NRF_ATFIFO_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL
+#define NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL 3
+#endif
+
+// NRF_ATFIFO_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_ATFIFO_CONFIG_INFO_COLOR
+#define NRF_ATFIFO_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_ATFIFO_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_ATFIFO_CONFIG_DEBUG_COLOR
+#define NRF_ATFIFO_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_BALLOC_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_BALLOC_CONFIG_LOG_ENABLED
+#define NRF_BALLOC_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_BALLOC_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_BALLOC_CONFIG_LOG_LEVEL
+#define NRF_BALLOC_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled.
+
+
+// If module generates a lot of logs, initial log level can
+// be decreased to prevent flooding. Severity level can be
+// increased on instance basis.
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL
+#define NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL 3
+#endif
+
+// NRF_BALLOC_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_BALLOC_CONFIG_INFO_COLOR
+#define NRF_BALLOC_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_BALLOC_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_BALLOC_CONFIG_DEBUG_COLOR
+#define NRF_BALLOC_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED
+#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL
+#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL
+#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL 3
+#endif
+
+// NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR
+#define NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR
+#define NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED
+#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL
+#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL
+#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL 3
+#endif
+
+// NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR
+#define NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR
+#define NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED
+#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL
+#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL
+#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL 3
+#endif
+
+// NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR
+#define NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR
+#define NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED
+#define NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL
+#define NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_CLI_BLE_UART_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_CLI_BLE_UART_CONFIG_INFO_COLOR
+#define NRF_CLI_BLE_UART_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR
+#define NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED
+#define NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL
+#define NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR
+#define NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR
+#define NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_CLI_UART_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_CLI_UART_CONFIG_LOG_ENABLED
+#define NRF_CLI_UART_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_CLI_UART_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_CLI_UART_CONFIG_LOG_LEVEL
+#define NRF_CLI_UART_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_CLI_UART_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_CLI_UART_CONFIG_INFO_COLOR
+#define NRF_CLI_UART_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_CLI_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_CLI_UART_CONFIG_DEBUG_COLOR
+#define NRF_CLI_UART_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_LIBUARTE_CONFIG_LOG_ENABLED
+#define NRF_LIBUARTE_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_LIBUARTE_CONFIG_LOG_LEVEL
+#define NRF_LIBUARTE_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_LIBUARTE_CONFIG_INFO_COLOR
+#define NRF_LIBUARTE_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_LIBUARTE_CONFIG_DEBUG_COLOR
+#define NRF_LIBUARTE_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_MEMOBJ_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_MEMOBJ_CONFIG_LOG_ENABLED
+#define NRF_MEMOBJ_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_MEMOBJ_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_MEMOBJ_CONFIG_LOG_LEVEL
+#define NRF_MEMOBJ_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_MEMOBJ_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_MEMOBJ_CONFIG_INFO_COLOR
+#define NRF_MEMOBJ_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_MEMOBJ_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_MEMOBJ_CONFIG_DEBUG_COLOR
+#define NRF_MEMOBJ_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_PWR_MGMT_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_PWR_MGMT_CONFIG_LOG_ENABLED
+#define NRF_PWR_MGMT_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_PWR_MGMT_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_PWR_MGMT_CONFIG_LOG_LEVEL
+#define NRF_PWR_MGMT_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_PWR_MGMT_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_PWR_MGMT_CONFIG_INFO_COLOR
+#define NRF_PWR_MGMT_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_PWR_MGMT_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_PWR_MGMT_CONFIG_DEBUG_COLOR
+#define NRF_PWR_MGMT_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_QUEUE_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_QUEUE_CONFIG_LOG_ENABLED
+#define NRF_QUEUE_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_QUEUE_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_QUEUE_CONFIG_LOG_LEVEL
+#define NRF_QUEUE_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL
+#define NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL 3
+#endif
+
+// NRF_QUEUE_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_QUEUE_CONFIG_INFO_COLOR
+#define NRF_QUEUE_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_QUEUE_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_QUEUE_CONFIG_DEBUG_COLOR
+#define NRF_QUEUE_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_SDH_ANT_LOG_ENABLED - Enable logging in SoftDevice handler (ANT) module.
+//==========================================================
+#ifndef NRF_SDH_ANT_LOG_ENABLED
+#define NRF_SDH_ANT_LOG_ENABLED 0
+#endif
+// NRF_SDH_ANT_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_SDH_ANT_LOG_LEVEL
+#define NRF_SDH_ANT_LOG_LEVEL 3
+#endif
+
+// NRF_SDH_ANT_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SDH_ANT_INFO_COLOR
+#define NRF_SDH_ANT_INFO_COLOR 0
+#endif
+
+// NRF_SDH_ANT_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SDH_ANT_DEBUG_COLOR
+#define NRF_SDH_ANT_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_SDH_BLE_LOG_ENABLED - Enable logging in SoftDevice handler (BLE) module.
+//==========================================================
+#ifndef NRF_SDH_BLE_LOG_ENABLED
+#define NRF_SDH_BLE_LOG_ENABLED 1
+#endif
+// NRF_SDH_BLE_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_SDH_BLE_LOG_LEVEL
+#define NRF_SDH_BLE_LOG_LEVEL 3
+#endif
+
+// NRF_SDH_BLE_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SDH_BLE_INFO_COLOR
+#define NRF_SDH_BLE_INFO_COLOR 0
+#endif
+
+// NRF_SDH_BLE_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SDH_BLE_DEBUG_COLOR
+#define NRF_SDH_BLE_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_SDH_LOG_ENABLED - Enable logging in SoftDevice handler module.
+//==========================================================
+#ifndef NRF_SDH_LOG_ENABLED
+#define NRF_SDH_LOG_ENABLED 1
+#endif
+// NRF_SDH_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_SDH_LOG_LEVEL
+#define NRF_SDH_LOG_LEVEL 3
+#endif
+
+// NRF_SDH_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SDH_INFO_COLOR
+#define NRF_SDH_INFO_COLOR 0
+#endif
+
+// NRF_SDH_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SDH_DEBUG_COLOR
+#define NRF_SDH_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_SDH_SOC_LOG_ENABLED - Enable logging in SoftDevice handler (SoC) module.
+//==========================================================
+#ifndef NRF_SDH_SOC_LOG_ENABLED
+#define NRF_SDH_SOC_LOG_ENABLED 1
+#endif
+// NRF_SDH_SOC_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_SDH_SOC_LOG_LEVEL
+#define NRF_SDH_SOC_LOG_LEVEL 3
+#endif
+
+// NRF_SDH_SOC_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SDH_SOC_INFO_COLOR
+#define NRF_SDH_SOC_INFO_COLOR 0
+#endif
+
+// NRF_SDH_SOC_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SDH_SOC_DEBUG_COLOR
+#define NRF_SDH_SOC_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_SORTLIST_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_SORTLIST_CONFIG_LOG_ENABLED
+#define NRF_SORTLIST_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_SORTLIST_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_SORTLIST_CONFIG_LOG_LEVEL
+#define NRF_SORTLIST_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_SORTLIST_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SORTLIST_CONFIG_INFO_COLOR
+#define NRF_SORTLIST_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_SORTLIST_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_SORTLIST_CONFIG_DEBUG_COLOR
+#define NRF_SORTLIST_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// NRF_TWI_SENSOR_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef NRF_TWI_SENSOR_CONFIG_LOG_ENABLED
+#define NRF_TWI_SENSOR_CONFIG_LOG_ENABLED 0
+#endif
+// NRF_TWI_SENSOR_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef NRF_TWI_SENSOR_CONFIG_LOG_LEVEL
+#define NRF_TWI_SENSOR_CONFIG_LOG_LEVEL 3
+#endif
+
+// NRF_TWI_SENSOR_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_TWI_SENSOR_CONFIG_INFO_COLOR
+#define NRF_TWI_SENSOR_CONFIG_INFO_COLOR 0
+#endif
+
+// NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR
+#define NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+// PM_LOG_ENABLED - Enable logging in Peer Manager and its submodules.
+//==========================================================
+#ifndef PM_LOG_ENABLED
+#define PM_LOG_ENABLED 1
+#endif
+// PM_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef PM_LOG_LEVEL
+#define PM_LOG_LEVEL 3
+#endif
+
+// PM_LOG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef PM_LOG_INFO_COLOR
+#define PM_LOG_INFO_COLOR 0
+#endif
+
+// PM_LOG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef PM_LOG_DEBUG_COLOR
+#define PM_LOG_DEBUG_COLOR 0
+#endif
+
+//
+
+//
+//==========================================================
+
+// nrf_log in nRF_Serialization
+
+//==========================================================
+// SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED - Enables logging in the module.
+//==========================================================
+#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED
+#define SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED 0
+#endif
+// SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL - Default Severity level
+
+// <0=> Off
+// <1=> Error
+// <2=> Warning
+// <3=> Info
+// <4=> Debug
+
+#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL
+#define SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL 3
+#endif
+
+// SER_HAL_TRANSPORT_CONFIG_INFO_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef SER_HAL_TRANSPORT_CONFIG_INFO_COLOR
+#define SER_HAL_TRANSPORT_CONFIG_INFO_COLOR 0
+#endif
+
+// SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR - ANSI escape code prefix.
+
+// <0=> Default
+// <1=> Black
+// <2=> Red
+// <3=> Green
+// <4=> Yellow
+// <5=> Blue
+// <6=> Magenta
+// <7=> Cyan
+// <8=> White
+
+#ifndef SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR
+#define SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR 0
+#endif
+
+//
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+//
+
+// NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED - nrf_log_str_formatter - Log string formatter
+
+
+#ifndef NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED
+#define NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED 1
+#endif
+
+//
+//==========================================================
+
+// nRF_Segger_RTT
+
+//==========================================================
+// segger_rtt - SEGGER RTT
+
+//==========================================================
+// SEGGER_RTT_CONFIG_BUFFER_SIZE_UP - Size of upstream buffer.
+// Note that either @ref NRF_LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE
+// or this value is actually used. It depends on which one is bigger.
+
+#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_UP
+#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 4096
+#endif
+
+// SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS - Maximum number of upstream buffers.
+#ifndef SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS
+#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 2
+#endif
+
+// SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN - Size of downstream buffer.
+#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN
+#define SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN 16
+#endif
+
+// SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS - Maximum number of downstream buffers.
+#ifndef SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS
+#define SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS 2
+#endif
+
+// SEGGER_RTT_CONFIG_DEFAULT_MODE - RTT behavior if the buffer is full.
+
+
+// The following modes are supported:
+// - SKIP - Do not block, output nothing.
+// - TRIM - Do not block, output as much as fits.
+// - BLOCK - Wait until there is space in the buffer.
+// <0=> SKIP
+// <1=> TRIM
+// <2=> BLOCK_IF_FIFO_FULL
+
+#ifndef SEGGER_RTT_CONFIG_DEFAULT_MODE
+#define SEGGER_RTT_CONFIG_DEFAULT_MODE 0
+#endif
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+// nRF_SoftDevice
+
+//==========================================================
+// NRF_SDH_BLE_ENABLED - nrf_sdh_ble - SoftDevice BLE event handler
+//==========================================================
+#ifndef NRF_SDH_BLE_ENABLED
+#define NRF_SDH_BLE_ENABLED 1
+#endif
+// BLE Stack configuration - Stack configuration parameters
+
+// The SoftDevice handler will configure the stack with these parameters when calling @ref nrf_sdh_ble_default_cfg_set.
+// Other libraries might depend on these values; keep them up-to-date even if you are not explicitely calling @ref nrf_sdh_ble_default_cfg_set.
+//==========================================================
+// NRF_SDH_BLE_GAP_DATA_LENGTH <27-251>
+
+
+// Requested BLE GAP data length to be negotiated.
+
+#ifndef NRF_SDH_BLE_GAP_DATA_LENGTH
+#define NRF_SDH_BLE_GAP_DATA_LENGTH 27
+#endif
+
+// NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links.
+#ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT
+#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 1
+#endif
+
+// NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links.
+#ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT
+#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0
+#endif
+
+// NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count.
+// Maximum number of total concurrent connections using the default configuration.
+
+#ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT
+#define NRF_SDH_BLE_TOTAL_LINK_COUNT 1
+#endif
+
+// NRF_SDH_BLE_GAP_EVENT_LENGTH - GAP event length.
+// The time set aside for this connection on every connection interval in 1.25 ms units.
+
+#ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH
+#define NRF_SDH_BLE_GAP_EVENT_LENGTH 6
+#endif
+
+// NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size.
+#ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE
+#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247
+#endif
+
+// NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE - Attribute Table size in bytes. The size must be a multiple of 4.
+#ifndef NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE
+#define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408
+#endif
+
+// NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs.
+#ifndef NRF_SDH_BLE_VS_UUID_COUNT
+#define NRF_SDH_BLE_VS_UUID_COUNT 1
+#endif
+
+// NRF_SDH_BLE_SERVICE_CHANGED - Include the Service Changed characteristic in the Attribute Table.
+
+
+#ifndef NRF_SDH_BLE_SERVICE_CHANGED
+#define NRF_SDH_BLE_SERVICE_CHANGED 0
+
+#endif
+
+//
+//==========================================================
+
+// BLE Observers - Observers and priority levels
+
+//==========================================================
+// NRF_SDH_BLE_OBSERVER_PRIO_LEVELS - Total number of priority levels for BLE observers.
+// This setting configures the number of priority levels available for BLE event handlers.
+// The priority level of a handler determines the order in which it receives events, with respect to other handlers.
+
+#ifndef NRF_SDH_BLE_OBSERVER_PRIO_LEVELS
+#define NRF_SDH_BLE_OBSERVER_PRIO_LEVELS 4
+#endif
+
+// BLE Observers priorities - Invididual priorities
+
+//==========================================================
+// BLE_ADV_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Advertising module.
+
+#ifndef BLE_ADV_BLE_OBSERVER_PRIO
+#define BLE_ADV_BLE_OBSERVER_PRIO 1
+#endif
+
+// BLE_ANCS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Apple Notification Service Client.
+
+#ifndef BLE_ANCS_C_BLE_OBSERVER_PRIO
+#define BLE_ANCS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_ANS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Alert Notification Service Client.
+
+#ifndef BLE_ANS_C_BLE_OBSERVER_PRIO
+#define BLE_ANS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_BAS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Battery Service.
+
+#ifndef BLE_BAS_BLE_OBSERVER_PRIO
+#define BLE_BAS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_BAS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Battery Service Client.
+
+#ifndef BLE_BAS_C_BLE_OBSERVER_PRIO
+#define BLE_BAS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_BPS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Blood Pressure Service.
+
+#ifndef BLE_BPS_BLE_OBSERVER_PRIO
+#define BLE_BPS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_CONN_PARAMS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Connection parameters module.
+
+#ifndef BLE_CONN_PARAMS_BLE_OBSERVER_PRIO
+#define BLE_CONN_PARAMS_BLE_OBSERVER_PRIO 1
+#endif
+
+// BLE_CONN_STATE_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Connection State module.
+
+#ifndef BLE_CONN_STATE_BLE_OBSERVER_PRIO
+#define BLE_CONN_STATE_BLE_OBSERVER_PRIO 0
+#endif
+
+// BLE_CSCS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Cycling Speed and Cadence Service.
+
+#ifndef BLE_CSCS_BLE_OBSERVER_PRIO
+#define BLE_CSCS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_CTS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Current Time Service Client.
+
+#ifndef BLE_CTS_C_BLE_OBSERVER_PRIO
+#define BLE_CTS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_DB_DISC_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Database Discovery module.
+
+#ifndef BLE_DB_DISC_BLE_OBSERVER_PRIO
+#define BLE_DB_DISC_BLE_OBSERVER_PRIO 1
+#endif
+
+// BLE_DFU_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the DFU Service.
+
+#ifndef BLE_DFU_BLE_OBSERVER_PRIO
+#define BLE_DFU_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_DIS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Device Information Client.
+
+#ifndef BLE_DIS_C_BLE_OBSERVER_PRIO
+#define BLE_DIS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_GLS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Glucose Service.
+
+#ifndef BLE_GLS_BLE_OBSERVER_PRIO
+#define BLE_GLS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_HIDS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Human Interface Device Service.
+
+#ifndef BLE_HIDS_BLE_OBSERVER_PRIO
+#define BLE_HIDS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_HRS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Heart Rate Service.
+
+#ifndef BLE_HRS_BLE_OBSERVER_PRIO
+#define BLE_HRS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_HRS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Heart Rate Service Client.
+
+#ifndef BLE_HRS_C_BLE_OBSERVER_PRIO
+#define BLE_HRS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_HTS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Health Thermometer Service.
+
+#ifndef BLE_HTS_BLE_OBSERVER_PRIO
+#define BLE_HTS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_IAS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Immediate Alert Service.
+
+#ifndef BLE_IAS_BLE_OBSERVER_PRIO
+#define BLE_IAS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_IAS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Immediate Alert Service Client.
+
+#ifndef BLE_IAS_C_BLE_OBSERVER_PRIO
+#define BLE_IAS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_LBS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the LED Button Service.
+
+#ifndef BLE_LBS_BLE_OBSERVER_PRIO
+#define BLE_LBS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_LBS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the LED Button Service Client.
+
+#ifndef BLE_LBS_C_BLE_OBSERVER_PRIO
+#define BLE_LBS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_LLS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Link Loss Service.
+
+#ifndef BLE_LLS_BLE_OBSERVER_PRIO
+#define BLE_LLS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_LNS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Location Navigation Service.
+
+#ifndef BLE_LNS_BLE_OBSERVER_PRIO
+#define BLE_LNS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_NUS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the UART Service.
+
+#ifndef BLE_NUS_BLE_OBSERVER_PRIO
+#define BLE_NUS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_NUS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the UART Central Service.
+
+#ifndef BLE_NUS_C_BLE_OBSERVER_PRIO
+#define BLE_NUS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_OTS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Object transfer service.
+
+#ifndef BLE_OTS_BLE_OBSERVER_PRIO
+#define BLE_OTS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_OTS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Object transfer service client.
+
+#ifndef BLE_OTS_C_BLE_OBSERVER_PRIO
+#define BLE_OTS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_RSCS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Running Speed and Cadence Service.
+
+#ifndef BLE_RSCS_BLE_OBSERVER_PRIO
+#define BLE_RSCS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_RSCS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Running Speed and Cadence Client.
+
+#ifndef BLE_RSCS_C_BLE_OBSERVER_PRIO
+#define BLE_RSCS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// BLE_TPS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the TX Power Service.
+
+#ifndef BLE_TPS_BLE_OBSERVER_PRIO
+#define BLE_TPS_BLE_OBSERVER_PRIO 2
+#endif
+
+// BSP_BTN_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Button Control module.
+
+#ifndef BSP_BTN_BLE_OBSERVER_PRIO
+#define BSP_BTN_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the NFC pairing library.
+
+#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO
+#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1
+#endif
+
+// NRF_BLE_BMS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Bond Management Service.
+
+#ifndef NRF_BLE_BMS_BLE_OBSERVER_PRIO
+#define NRF_BLE_BMS_BLE_OBSERVER_PRIO 2
+#endif
+
+// NRF_BLE_CGMS_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Contiuon Glucose Monitoring Service.
+
+#ifndef NRF_BLE_CGMS_BLE_OBSERVER_PRIO
+#define NRF_BLE_CGMS_BLE_OBSERVER_PRIO 2
+#endif
+
+// NRF_BLE_ES_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Eddystone module.
+
+#ifndef NRF_BLE_ES_BLE_OBSERVER_PRIO
+#define NRF_BLE_ES_BLE_OBSERVER_PRIO 2
+#endif
+
+// NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the GATT Service Client.
+
+#ifndef NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO
+#define NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO 2
+#endif
+
+// NRF_BLE_GATT_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the GATT module.
+
+#ifndef NRF_BLE_GATT_BLE_OBSERVER_PRIO
+#define NRF_BLE_GATT_BLE_OBSERVER_PRIO 1
+#endif
+
+// NRF_BLE_GQ_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the GATT Queue module.
+
+#ifndef NRF_BLE_GQ_BLE_OBSERVER_PRIO
+#define NRF_BLE_GQ_BLE_OBSERVER_PRIO 1
+#endif
+
+// NRF_BLE_QWR_BLE_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the Queued writes module.
+
+#ifndef NRF_BLE_QWR_BLE_OBSERVER_PRIO
+#define NRF_BLE_QWR_BLE_OBSERVER_PRIO 2
+#endif
+
+// NRF_BLE_SCAN_OBSERVER_PRIO
+// Priority for dispatching the BLE events to the Scanning Module.
+
+#ifndef NRF_BLE_SCAN_OBSERVER_PRIO
+#define NRF_BLE_SCAN_OBSERVER_PRIO 1
+#endif
+
+// PM_BLE_OBSERVER_PRIO - Priority with which BLE events are dispatched to the Peer Manager module.
+#ifndef PM_BLE_OBSERVER_PRIO
+#define PM_BLE_OBSERVER_PRIO 1
+#endif
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+
+//
+
+// NRF_SDH_ENABLED - nrf_sdh - SoftDevice handler
+//==========================================================
+#ifndef NRF_SDH_ENABLED
+#define NRF_SDH_ENABLED 1
+#endif
+// Dispatch model
+
+// This setting configures how Stack events are dispatched to the application.
+//==========================================================
+// NRF_SDH_DISPATCH_MODEL
+
+
+// NRF_SDH_DISPATCH_MODEL_INTERRUPT: SoftDevice events are passed to the application from the interrupt context.
+// NRF_SDH_DISPATCH_MODEL_APPSH: SoftDevice events are scheduled using @ref app_scheduler.
+// NRF_SDH_DISPATCH_MODEL_POLLING: SoftDevice events are to be fetched manually.
+// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT
+// <1=> NRF_SDH_DISPATCH_MODEL_APPSH
+// <2=> NRF_SDH_DISPATCH_MODEL_POLLING
+
+#ifndef NRF_SDH_DISPATCH_MODEL
+#define NRF_SDH_DISPATCH_MODEL 0
+#endif
+
+//
+//==========================================================
+
+// Clock - SoftDevice clock configuration
+
+//==========================================================
+// NRF_SDH_CLOCK_LF_SRC - SoftDevice clock source.
+
+// <0=> NRF_CLOCK_LF_SRC_RC
+// <1=> NRF_CLOCK_LF_SRC_XTAL
+// <2=> NRF_CLOCK_LF_SRC_SYNTH
+
+#ifndef NRF_SDH_CLOCK_LF_SRC
+#define NRF_SDH_CLOCK_LF_SRC 1
+#endif
+
+// NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval.
+#ifndef NRF_SDH_CLOCK_LF_RC_CTIV
+#define NRF_SDH_CLOCK_LF_RC_CTIV 0
+#endif
+
+// NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature.
+// How often (in number of calibration intervals) the RC oscillator shall be calibrated
+// if the temperature has not changed.
+
+#ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV
+#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 0
+#endif
+
+// NRF_SDH_CLOCK_LF_ACCURACY - External clock accuracy used in the LL to compute timing.
+
+// <0=> NRF_CLOCK_LF_ACCURACY_250_PPM
+// <1=> NRF_CLOCK_LF_ACCURACY_500_PPM
+// <2=> NRF_CLOCK_LF_ACCURACY_150_PPM
+// <3=> NRF_CLOCK_LF_ACCURACY_100_PPM
+// <4=> NRF_CLOCK_LF_ACCURACY_75_PPM
+// <5=> NRF_CLOCK_LF_ACCURACY_50_PPM
+// <6=> NRF_CLOCK_LF_ACCURACY_30_PPM
+// <7=> NRF_CLOCK_LF_ACCURACY_20_PPM
+// <8=> NRF_CLOCK_LF_ACCURACY_10_PPM
+// <9=> NRF_CLOCK_LF_ACCURACY_5_PPM
+// <10=> NRF_CLOCK_LF_ACCURACY_2_PPM
+// <11=> NRF_CLOCK_LF_ACCURACY_1_PPM
+
+#ifndef NRF_SDH_CLOCK_LF_ACCURACY
+#define NRF_SDH_CLOCK_LF_ACCURACY 7
+#endif
+
+//
+//==========================================================
+
+// SDH Observers - Observers and priority levels
+
+//==========================================================
+// NRF_SDH_REQ_OBSERVER_PRIO_LEVELS - Total number of priority levels for request observers.
+// This setting configures the number of priority levels available for the SoftDevice request event handlers.
+// The priority level of a handler determines the order in which it receives events, with respect to other handlers.
+
+#ifndef NRF_SDH_REQ_OBSERVER_PRIO_LEVELS
+#define NRF_SDH_REQ_OBSERVER_PRIO_LEVELS 2
+#endif
+
+// NRF_SDH_STATE_OBSERVER_PRIO_LEVELS - Total number of priority levels for state observers.
+// This setting configures the number of priority levels available for the SoftDevice state event handlers.
+// The priority level of a handler determines the order in which it receives events, with respect to other handlers.
+
+#ifndef NRF_SDH_STATE_OBSERVER_PRIO_LEVELS
+#define NRF_SDH_STATE_OBSERVER_PRIO_LEVELS 2
+#endif
+
+// NRF_SDH_STACK_OBSERVER_PRIO_LEVELS - Total number of priority levels for stack event observers.
+// This setting configures the number of priority levels available for the SoftDevice stack event handlers (ANT, BLE, SoC).
+// The priority level of a handler determines the order in which it receives events, with respect to other handlers.
+
+#ifndef NRF_SDH_STACK_OBSERVER_PRIO_LEVELS
+#define NRF_SDH_STACK_OBSERVER_PRIO_LEVELS 2
+#endif
+
+
+// State Observers priorities - Invididual priorities
+
+//==========================================================
+// CLOCK_CONFIG_STATE_OBSERVER_PRIO
+// Priority with which state events are dispatched to the Clock driver.
+
+#ifndef CLOCK_CONFIG_STATE_OBSERVER_PRIO
+#define CLOCK_CONFIG_STATE_OBSERVER_PRIO 0
+#endif
+
+// POWER_CONFIG_STATE_OBSERVER_PRIO
+// Priority with which state events are dispatched to the Power driver.
+
+#ifndef POWER_CONFIG_STATE_OBSERVER_PRIO
+#define POWER_CONFIG_STATE_OBSERVER_PRIO 0
+#endif
+
+// RNG_CONFIG_STATE_OBSERVER_PRIO
+// Priority with which state events are dispatched to this module.
+
+#ifndef RNG_CONFIG_STATE_OBSERVER_PRIO
+#define RNG_CONFIG_STATE_OBSERVER_PRIO 0
+#endif
+
+//
+//==========================================================
+
+// Stack Event Observers priorities - Invididual priorities
+
+//==========================================================
+// NRF_SDH_ANT_STACK_OBSERVER_PRIO
+// This setting configures the priority with which ANT events are processed with respect to other events coming from the stack.
+// Modify this setting if you need to have ANT events dispatched before or after other stack events, such as BLE or SoC.
+// Zero is the highest priority.
+
+#ifndef NRF_SDH_ANT_STACK_OBSERVER_PRIO
+#define NRF_SDH_ANT_STACK_OBSERVER_PRIO 0
+#endif
+
+// NRF_SDH_BLE_STACK_OBSERVER_PRIO
+// This setting configures the priority with which BLE events are processed with respect to other events coming from the stack.
+// Modify this setting if you need to have BLE events dispatched before or after other stack events, such as ANT or SoC.
+// Zero is the highest priority.
+
+#ifndef NRF_SDH_BLE_STACK_OBSERVER_PRIO
+#define NRF_SDH_BLE_STACK_OBSERVER_PRIO 0
+#endif
+
+// NRF_SDH_SOC_STACK_OBSERVER_PRIO
+// This setting configures the priority with which SoC events are processed with respect to other events coming from the stack.
+// Modify this setting if you need to have SoC events dispatched before or after other stack events, such as ANT or BLE.
+// Zero is the highest priority.
+
+#ifndef NRF_SDH_SOC_STACK_OBSERVER_PRIO
+#define NRF_SDH_SOC_STACK_OBSERVER_PRIO 0
+#endif
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+
+//
+
+// NRF_SDH_SOC_ENABLED - nrf_sdh_soc - SoftDevice SoC event handler
+//==========================================================
+#ifndef NRF_SDH_SOC_ENABLED
+#define NRF_SDH_SOC_ENABLED 1
+#endif
+// SoC Observers - Observers and priority levels
+
+//==========================================================
+// NRF_SDH_SOC_OBSERVER_PRIO_LEVELS - Total number of priority levels for SoC observers.
+// This setting configures the number of priority levels available for the SoC event handlers.
+// The priority level of a handler determines the order in which it receives events, with respect to other handlers.
+
+#ifndef NRF_SDH_SOC_OBSERVER_PRIO_LEVELS
+#define NRF_SDH_SOC_OBSERVER_PRIO_LEVELS 2
+#endif
+
+// SoC Observers priorities - Invididual priorities
+
+//==========================================================
+// BLE_DFU_SOC_OBSERVER_PRIO
+// Priority with which BLE events are dispatched to the DFU Service.
+
+#ifndef BLE_DFU_SOC_OBSERVER_PRIO
+#define BLE_DFU_SOC_OBSERVER_PRIO 1
+#endif
+
+// CLOCK_CONFIG_SOC_OBSERVER_PRIO
+// Priority with which SoC events are dispatched to the Clock driver.
+
+#ifndef CLOCK_CONFIG_SOC_OBSERVER_PRIO
+#define CLOCK_CONFIG_SOC_OBSERVER_PRIO 0
+#endif
+
+// POWER_CONFIG_SOC_OBSERVER_PRIO
+// Priority with which SoC events are dispatched to the Power driver.
+
+#ifndef POWER_CONFIG_SOC_OBSERVER_PRIO
+#define POWER_CONFIG_SOC_OBSERVER_PRIO 0
+#endif
+
+//
+//==========================================================
+
+//
+//==========================================================
+
+
+//
+
+//
+//==========================================================
+
+// <<< end of configuration section >>>
+#endif //SDK_CONFIG_H
+
diff --git a/secure_bootloader_gcc_nrf52.ld b/secure_bootloader_gcc_nrf52.ld
new file mode 100644
index 0000000..7ba9a1f
--- /dev/null
+++ b/secure_bootloader_gcc_nrf52.ld
@@ -0,0 +1,167 @@
+/* Linker script to configure memory regions. */
+
+SEARCH_DIR(.)
+GROUP(-lgcc -lc -lnosys)
+
+MEMORY
+{
+ FLASH (rx) : ORIGIN = 0x000DE000, LENGTH = 0x00020000
+ mbr_params_page (r) : ORIGIN = 0x000FE000, LENGTH = 0x00001000
+ bootloader_settings_page (r) : ORIGIN = 0x000FF000, LENGTH = 0x00001000
+
+ uicr_bootloader_start_address (r) : ORIGIN = 0x10001014, LENGTH = 0x4
+ uicr_mbr_params_page (r) : ORIGIN = 0x10001018, LENGTH = 0x4
+
+ RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 0x0002F000
+ RTT (rwx) : ORIGIN = 0x2003F000, LENGTH = 0x00001000
+}
+
+SECTIONS
+{
+ . = ALIGN(4);
+ .segger_rtt (NOLOAD) :
+ {
+ KEEP(*(.segger_rtt))
+ } > RTT
+}
+
+SECTIONS
+{
+ . = ALIGN(4);
+ .uicr_bootloader_start_address :
+ {
+ PROVIDE(__start_uicr_bootloader_start_address = .);
+ KEEP(*(SORT(.uicr_bootloader_start_address*)))
+ PROVIDE(__stop_uicr_bootloader_start_address = .);
+ } > uicr_bootloader_start_address
+
+ .uicr_mbr_params_page :
+ {
+ PROVIDE(__start_uicr_mbr_params_page = .);
+ KEEP(*(SORT(.uicr_mbr_params_page*)))
+ PROVIDE(__stop_uicr_mbr_params_page = .);
+ } > uicr_mbr_params_page
+ . = ALIGN(4);
+ .mbr_params_page :
+ {
+ PROVIDE(__start_mbr_params_page = .);
+ KEEP(*(SORT(.mbr_params_page*)))
+ PROVIDE(__stop_mbr_params_page = .);
+ } > mbr_params_page
+ . = ALIGN(4);
+ .bootloader_settings_page :
+ {
+ PROVIDE(__start_bootloader_settings_page = .);
+ KEEP(*(SORT(.bootloader_settings_page*)))
+ PROVIDE(__stop_bootloader_settings_page = .);
+ } > bootloader_settings_page
+}
+
+SECTIONS
+{
+ . = ALIGN(4);
+ .mem_section_dummy_ram :
+ {
+ }
+ .log_dynamic_data :
+ {
+ PROVIDE(__start_log_dynamic_data = .);
+ KEEP(*(SORT(.log_dynamic_data*)))
+ PROVIDE(__stop_log_dynamic_data = .);
+ } > RAM
+ .log_filter_data :
+ {
+ PROVIDE(__start_log_filter_data = .);
+ KEEP(*(SORT(.log_filter_data*)))
+ PROVIDE(__stop_log_filter_data = .);
+ } > RAM
+ .fs_data :
+ {
+ PROVIDE(__start_fs_data = .);
+ KEEP(*(.fs_data))
+ PROVIDE(__stop_fs_data = .);
+ } > RAM
+
+} INSERT AFTER .data;
+
+SECTIONS
+{
+ .mem_section_dummy_rom :
+ {
+ }
+ .crypto_data :
+ {
+ PROVIDE(__start_crypto_data = .);
+ KEEP(*(SORT(.crypto_data*)))
+ PROVIDE(__stop_crypto_data = .);
+ } > FLASH
+ .nrf_queue :
+ {
+ PROVIDE(__start_nrf_queue = .);
+ KEEP(*(.nrf_queue))
+ PROVIDE(__stop_nrf_queue = .);
+ } > FLASH
+ .dfu_trans :
+ {
+ PROVIDE(__start_dfu_trans = .);
+ KEEP(*(SORT(.dfu_trans*)))
+ PROVIDE(__stop_dfu_trans = .);
+ } > FLASH
+ .svc_data :
+ {
+ PROVIDE(__start_svc_data = .);
+ KEEP(*(.svc_data))
+ PROVIDE(__stop_svc_data = .);
+ } > FLASH
+ .log_const_data :
+ {
+ PROVIDE(__start_log_const_data = .);
+ KEEP(*(SORT(.log_const_data*)))
+ PROVIDE(__stop_log_const_data = .);
+ } > FLASH
+ .nrf_balloc :
+ {
+ PROVIDE(__start_nrf_balloc = .);
+ KEEP(*(.nrf_balloc))
+ PROVIDE(__stop_nrf_balloc = .);
+ } > FLASH
+ .log_backends :
+ {
+ PROVIDE(__start_log_backends = .);
+ KEEP(*(SORT(.log_backends*)))
+ PROVIDE(__stop_log_backends = .);
+ } > FLASH
+ .sdh_ble_observers :
+ {
+ PROVIDE(__start_sdh_ble_observers = .);
+ KEEP(*(SORT(.sdh_ble_observers*)))
+ PROVIDE(__stop_sdh_ble_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_stack_observers :
+ {
+ PROVIDE(__start_sdh_stack_observers = .);
+ KEEP(*(SORT(.sdh_stack_observers*)))
+ PROVIDE(__stop_sdh_stack_observers = .);
+ } > FLASH
+ .sdh_soc_observers :
+ {
+ PROVIDE(__start_sdh_soc_observers = .);
+ KEEP(*(SORT(.sdh_soc_observers*)))
+ PROVIDE(__stop_sdh_soc_observers = .);
+ } > FLASH
+
+} INSERT AFTER .text
+
+INCLUDE "nrf_common.ld"
\ No newline at end of file