Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

Replace ESP32/nRF24 with nRF52

My previous post and the response I got was hugely helpful to my understanding ESB on the nRF52. Now that I grasp the basics, I felt it was appropriate to create a new post for additional questions.

I continue to struggle to replace my PIC & ESP32/nRF24 combination with a nRF52. I have a rudimentary grasp of how ESB should work on the nRF52. However, I am not having any success implementing it.

For my setup I have two ESP32/nRF24 combinations. A dedicated Transmitter and a dedicated Receiver successfully communicating. Therefore, I can confirm my Transmitter Setup and that I understand the addressing and setup requirements. I am using the proven/dedicated ESP32 Transmitter to send.

I programmed the nRF52 (using the nRF5 because that’s the setup information I have, and I don’t want to introduce additional variables).

I have tried to leave the prx code unedited as much as possible except to make the appropriate configuration changes and disable "NRF_LOG_DEFERRED 0". Most of the changes are to esb_init().

I believe I have set the nRF52 setup correctly to be the Receiver, however __WFE() never seems to fire, so no Event is triggered.

I would love for someone to point out where I am making my mistake(s). Otherwise, I am at a dead end. I have included source code for the nRF52 and ESP32.

Here is the output/settings for my ESP32/nRF24 Transmitter:

17:16:53.958 -> SPI Frequency = 10 Mhz
17:16:53.958 -> Channel = 40 (~ 2440 MHz)
17:16:53.958 -> RF Data Rate = 1 MBPS
17:16:53.958 -> RF Power Amplifier = PA_MAX
17:16:53.958 -> RF Low Noise Amplifier = Enabled
17:16:53.992 -> CRC Length = 8 bits
17:16:53.992 -> Address Length = 5 bytes
17:16:53.992 -> Static Payload Length = 32 bytes
17:16:53.992 -> Auto Retry Delay = 1500 microseconds
17:16:53.992 -> Auto Retry Attempts = 15 maximum
17:16:53.992 -> Packets lost on
17:16:53.992 -> current channel = 0
17:16:53.992 -> Retry attempts made for
17:16:53.992 -> last transmission = 0
17:16:53.992 -> Multicast = Disabled
17:16:53.992 -> Custom ACK Payload = Disabled
17:16:53.992 -> Dynamic Payloads = Disabled
17:16:53.992 -> Auto Acknowledgment = Disabled
17:16:53.992 -> Primary Mode = TX
17:16:54.026 -> TX address = 0xc2c2c2c2c2
17:16:54.026 -> pipe 0 ( open ) bound = 0xc2c2c2c2c2
17:16:54.026 -> pipe 1 ( open ) bound = 0xe7e7e7e7e7
17:16:54.026 -> pipe 2 (closed) bound = 0xc3
17:16:54.026 -> pipe 3 (closed) bound = 0xc4
17:16:54.026 -> pipe 4 (closed) bound = 0xc5
17:16:54.026 -> pipe 5 (closed) bound = 0xc6

#include "nrf_esb.h"

#include <stdbool.h>
#include <stdint.h>
#include "sdk_common.h"
#include "nrf.h"
#include "nrf_esb_error_codes.h"
#include "nrf_delay.h"
#include "nrf_gpio.h"
#include "nrf_error.h"
#include "boards.h"

#include "nrf_log.h"
#include "nrf_log_ctrl.h"
#include "nrf_log_default_backends.h"


uint8_t led_nr;

nrf_esb_payload_t rx_payload;

/*lint -save -esym(40, BUTTON_1) -esym(40, BUTTON_2) -esym(40, BUTTON_3) -esym(40, BUTTON_4) -esym(40, LED_1) -esym(40, LED_2) -esym(40, LED_3) -esym(40, LED_4) */

void nrf_esb_event_handler(nrf_esb_evt_t const * p_event)
{
    switch (p_event->evt_id)
    {
        case NRF_ESB_EVENT_TX_SUCCESS:
            NRF_LOG_DEBUG("TX SUCCESS EVENT");
            break;
        case NRF_ESB_EVENT_TX_FAILED:
            NRF_LOG_DEBUG("TX FAILED EVENT");
            break;
        case NRF_ESB_EVENT_RX_RECEIVED:
            NRF_LOG_DEBUG("RX RECEIVED EVENT");
            if (nrf_esb_read_rx_payload(&rx_payload) == NRF_SUCCESS)
            {
                // Set LEDs identical to the ones on the PTX.
                nrf_gpio_pin_write(LED_1, !(rx_payload.data[1]%8>0 && rx_payload.data[1]%8<=4));
                nrf_gpio_pin_write(LED_2, !(rx_payload.data[1]%8>1 && rx_payload.data[1]%8<=5));
                nrf_gpio_pin_write(LED_3, !(rx_payload.data[1]%8>2 && rx_payload.data[1]%8<=6));
                nrf_gpio_pin_write(LED_4, !(rx_payload.data[1]%8>3));

                NRF_LOG_DEBUG("Receiving packet: %02x", rx_payload.data[1]);
            }
            break;
    }
}


void clocks_start( void )
{
    NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
    NRF_CLOCK->TASKS_HFCLKSTART = 1;

    while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);
}


void gpio_init( void )
{
    bsp_board_init(BSP_INIT_LEDS);
}


uint32_t esb_init( void )
{
    uint32_t err_code;
    uint8_t base_addr_0[4] = {0xE7, 0xE7, 0xE7, 0xE7};
    uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
    uint8_t addr_prefix[8] = {0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8 };

    //nrf_esb_config_t nrf_esb_config         = NRF_ESB_DEFAULT_CONFIG;
    //nrf_esb_config.payload_length           = 8;
    //nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB_DPL;
    //nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_2MBPS;
    //nrf_esb_config.mode                     = NRF_ESB_MODE_PRX;
    //nrf_esb_config.event_handler            = nrf_esb_event_handler;
    //nrf_esb_config.selective_auto_ack       = false;

    
    // OVERWRITE NRF_ESB_DEFAULT_CONFIG
    nrf_esb_config_t nrf_esb_config         = NRF_ESB_DEFAULT_CONFIG;
    nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB;
    nrf_esb_config.mode                     = NRF_ESB_MODE_PRX;
    nrf_esb_config.event_handler            = nrf_esb_event_handler;
    nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_1MBPS;
    nrf_esb_config.crc                      = NRF_ESB_CRC_8BIT;
    nrf_esb_config.tx_output_power          = NRF_ESB_TX_POWER_4DBM;
    nrf_esb_config.payload_length           = 32;
    nrf_esb_config.selective_auto_ack       = false;

    //err_code = nrf_esb_set_address_length(5); // causes: HardFault_Handler
    err_code = nrf_esb_set_rf_channel(40);    // overwrite default 2

    err_code = nrf_esb_init(&nrf_esb_config);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_base_address_0(base_addr_0);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_base_address_1(base_addr_1);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_prefixes(addr_prefix, 8);
    VERIFY_SUCCESS(err_code);

    return err_code;
}


int main(void)
{
    uint32_t err_code;

    /* Configure board. */
    gpio_init();

    err_code = NRF_LOG_INIT(NULL);
    APP_ERROR_CHECK(err_code);

    NRF_LOG_DEFAULT_BACKENDS_INIT();

    int counter = 0;
    NRF_LOG_INFO("NRF INFO");

    clocks_start();

    err_code = esb_init();
    APP_ERROR_CHECK(err_code);

    NRF_LOG_INFO("Enhanced ShockBurst Receiver Example started.");

    err_code = nrf_esb_start_rx();
    APP_ERROR_CHECK(err_code);

    while (true)
    {
        bsp_board_led_invert(LED_3); // THIS DOES NOT WORK!?
        bsp_board_led_invert(2); // THIS WORKS.

        if (NRF_LOG_PROCESS() == false)
        {
            bsp_board_led_invert(3); //LED flashes
            __WFE(); // WAIT FOR EVENT, NEVER FIRES. SYSTEM STOPS HERE.
        }
        //nrf_delay_ms(500); // FOR TESTING LEDS ONLY!
    }
}
/*lint -restore */

Parents
  • Hi,

    Try setting nrf_esb_config to NRF_ESB_LEGACY_CONFIG , this is the default legacy radio parameters. Identical to the nRF24Lxx defaults

  • I did the following, but no change. 

    // OVERWRITE NRF_ESB_DEFAULT_CONFIG
    //nrf_esb_config_t nrf_esb_config = NRF_ESB_DEFAULT_CONFIG;
    nrf_esb_config_t nrf_esb_config = NRF_ESB_LEGACY_CONFIG;
    nrf_esb_config.protocol = NRF_ESB_PROTOCOL_ESB;
    nrf_esb_config.mode = NRF_ESB_MODE_PRX;
    nrf_esb_config.event_handler = nrf_esb_event_handler;
    nrf_esb_config.bitrate = NRF_ESB_BITRATE_1MBPS;
    nrf_esb_config.crc = NRF_ESB_CRC_8BIT;
    nrf_esb_config.tx_output_power = NRF_ESB_TX_POWER_4DBM;
    nrf_esb_config.payload_length = 32;
    nrf_esb_config.selective_auto_ack = false;

    my sdk_config.h, if you think there might be something there?

    /**
     * Copyright (c) 2017 - 2021, 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
    // <h> nRF_Drivers 
    
    //==========================================================
    // <e> NRFX_PRS_ENABLED - nrfx_prs - Peripheral Resource Sharing module
    //==========================================================
    #ifndef NRFX_PRS_ENABLED
    #define NRFX_PRS_ENABLED 1
    #endif
    // <q> NRFX_PRS_BOX_0_ENABLED  - Enables box 0 in the module.
     
    
    #ifndef NRFX_PRS_BOX_0_ENABLED
    #define NRFX_PRS_BOX_0_ENABLED 0
    #endif
    
    // <q> NRFX_PRS_BOX_1_ENABLED  - Enables box 1 in the module.
     
    
    #ifndef NRFX_PRS_BOX_1_ENABLED
    #define NRFX_PRS_BOX_1_ENABLED 0
    #endif
    
    // <q> NRFX_PRS_BOX_2_ENABLED  - Enables box 2 in the module.
     
    
    #ifndef NRFX_PRS_BOX_2_ENABLED
    #define NRFX_PRS_BOX_2_ENABLED 0
    #endif
    
    // <q> NRFX_PRS_BOX_3_ENABLED  - Enables box 3 in the module.
     
    
    #ifndef NRFX_PRS_BOX_3_ENABLED
    #define NRFX_PRS_BOX_3_ENABLED 0
    #endif
    
    // <q> NRFX_PRS_BOX_4_ENABLED  - Enables box 4 in the module.
     
    
    #ifndef NRFX_PRS_BOX_4_ENABLED
    #define NRFX_PRS_BOX_4_ENABLED 1
    #endif
    
    // <e> NRFX_PRS_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRFX_PRS_CONFIG_LOG_ENABLED
    #define NRFX_PRS_CONFIG_LOG_ENABLED 0
    #endif
    // <o> NRFX_PRS_CONFIG_LOG_LEVEL  - Default Severity level
     
    // <0=> Off 
    // <1=> Error 
    // <2=> Warning 
    // <3=> Info 
    // <4=> Debug 
    
    #ifndef NRFX_PRS_CONFIG_LOG_LEVEL
    #define NRFX_PRS_CONFIG_LOG_LEVEL 3
    #endif
    
    // <o> NRFX_PRS_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_PRS_CONFIG_INFO_COLOR
    #define NRFX_PRS_CONFIG_INFO_COLOR 0
    #endif
    
    // <o> NRFX_PRS_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_PRS_CONFIG_DEBUG_COLOR
    #define NRFX_PRS_CONFIG_DEBUG_COLOR 0
    #endif
    
    // </e>
    
    // </e>
    
    // <e> NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver
    //==========================================================
    #ifndef NRFX_UARTE_ENABLED
    #define NRFX_UARTE_ENABLED 1
    #endif
    // <o> NRFX_UARTE0_ENABLED - Enable UARTE0 instance 
    #ifndef NRFX_UARTE0_ENABLED
    #define NRFX_UARTE0_ENABLED 0
    #endif
    
    // <o> NRFX_UARTE1_ENABLED - Enable UARTE1 instance 
    #ifndef NRFX_UARTE1_ENABLED
    #define NRFX_UARTE1_ENABLED 0
    #endif
    
    // <o> NRFX_UARTE_DEFAULT_CONFIG_HWFC  - Hardware Flow Control
     
    // <0=> Disabled 
    // <1=> Enabled 
    
    #ifndef NRFX_UARTE_DEFAULT_CONFIG_HWFC
    #define NRFX_UARTE_DEFAULT_CONFIG_HWFC 0
    #endif
    
    // <o> NRFX_UARTE_DEFAULT_CONFIG_PARITY  - Parity
     
    // <0=> Excluded 
    // <14=> Included 
    
    #ifndef NRFX_UARTE_DEFAULT_CONFIG_PARITY
    #define NRFX_UARTE_DEFAULT_CONFIG_PARITY 0
    #endif
    
    // <o> NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE  - Default Baudrate
     
    // <323584=> 1200 baud 
    // <643072=> 2400 baud 
    // <1290240=> 4800 baud 
    // <2576384=> 9600 baud 
    // <3862528=> 14400 baud 
    // <5152768=> 19200 baud 
    // <7716864=> 28800 baud 
    // <8388608=> 31250 baud 
    // <10289152=> 38400 baud 
    // <15007744=> 56000 baud 
    // <15400960=> 57600 baud 
    // <20615168=> 76800 baud 
    // <30801920=> 115200 baud 
    // <61865984=> 230400 baud 
    // <67108864=> 250000 baud 
    // <121634816=> 460800 baud 
    // <251658240=> 921600 baud 
    // <268435456=> 1000000 baud 
    
    #ifndef NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE
    #define NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE 30801920
    #endif
    
    // <o> NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY  - Interrupt priority
     
    // <0=> 0 (highest) 
    // <1=> 1 
    // <2=> 2 
    // <3=> 3 
    // <4=> 4 
    // <5=> 5 
    // <6=> 6 
    // <7=> 7 
    
    #ifndef NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY
    #define NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY 6
    #endif
    
    // <e> NRFX_UARTE_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRFX_UARTE_CONFIG_LOG_ENABLED
    #define NRFX_UARTE_CONFIG_LOG_ENABLED 0
    #endif
    // <o> NRFX_UARTE_CONFIG_LOG_LEVEL  - Default Severity level
     
    // <0=> Off 
    // <1=> Error 
    // <2=> Warning 
    // <3=> Info 
    // <4=> Debug 
    
    #ifndef NRFX_UARTE_CONFIG_LOG_LEVEL
    #define NRFX_UARTE_CONFIG_LOG_LEVEL 3
    #endif
    
    // <o> NRFX_UARTE_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_UARTE_CONFIG_INFO_COLOR
    #define NRFX_UARTE_CONFIG_INFO_COLOR 0
    #endif
    
    // <o> NRFX_UARTE_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_UARTE_CONFIG_DEBUG_COLOR
    #define NRFX_UARTE_CONFIG_DEBUG_COLOR 0
    #endif
    
    // </e>
    
    // </e>
    
    // <e> NRFX_UART_ENABLED - nrfx_uart - UART peripheral driver
    //==========================================================
    #ifndef NRFX_UART_ENABLED
    #define NRFX_UART_ENABLED 1
    #endif
    // <o> NRFX_UART0_ENABLED - Enable UART0 instance 
    #ifndef NRFX_UART0_ENABLED
    #define NRFX_UART0_ENABLED 0
    #endif
    
    // <o> NRFX_UART_DEFAULT_CONFIG_HWFC  - Hardware Flow Control
     
    // <0=> Disabled 
    // <1=> Enabled 
    
    #ifndef NRFX_UART_DEFAULT_CONFIG_HWFC
    #define NRFX_UART_DEFAULT_CONFIG_HWFC 0
    #endif
    
    // <o> NRFX_UART_DEFAULT_CONFIG_PARITY  - Parity
     
    // <0=> Excluded 
    // <14=> Included 
    
    #ifndef NRFX_UART_DEFAULT_CONFIG_PARITY
    #define NRFX_UART_DEFAULT_CONFIG_PARITY 0
    #endif
    
    // <o> NRFX_UART_DEFAULT_CONFIG_BAUDRATE  - Default Baudrate
     
    // <323584=> 1200 baud 
    // <643072=> 2400 baud 
    // <1290240=> 4800 baud 
    // <2576384=> 9600 baud 
    // <3866624=> 14400 baud 
    // <5152768=> 19200 baud 
    // <7729152=> 28800 baud 
    // <8388608=> 31250 baud 
    // <10309632=> 38400 baud 
    // <15007744=> 56000 baud 
    // <15462400=> 57600 baud 
    // <20615168=> 76800 baud 
    // <30924800=> 115200 baud 
    // <61845504=> 230400 baud 
    // <67108864=> 250000 baud 
    // <123695104=> 460800 baud 
    // <247386112=> 921600 baud 
    // <268435456=> 1000000 baud 
    
    #ifndef NRFX_UART_DEFAULT_CONFIG_BAUDRATE
    #define NRFX_UART_DEFAULT_CONFIG_BAUDRATE 30924800
    #endif
    
    // <o> NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY  - Interrupt priority
     
    // <0=> 0 (highest) 
    // <1=> 1 
    // <2=> 2 
    // <3=> 3 
    // <4=> 4 
    // <5=> 5 
    // <6=> 6 
    // <7=> 7 
    
    #ifndef NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY
    #define NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY 6
    #endif
    
    // <e> NRFX_UART_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRFX_UART_CONFIG_LOG_ENABLED
    #define NRFX_UART_CONFIG_LOG_ENABLED 0
    #endif
    // <o> NRFX_UART_CONFIG_LOG_LEVEL  - Default Severity level
     
    // <0=> Off 
    // <1=> Error 
    // <2=> Warning 
    // <3=> Info 
    // <4=> Debug 
    
    #ifndef NRFX_UART_CONFIG_LOG_LEVEL
    #define NRFX_UART_CONFIG_LOG_LEVEL 3
    #endif
    
    // <o> NRFX_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 NRFX_UART_CONFIG_INFO_COLOR
    #define NRFX_UART_CONFIG_INFO_COLOR 0
    #endif
    
    // <o> NRFX_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 NRFX_UART_CONFIG_DEBUG_COLOR
    #define NRFX_UART_CONFIG_DEBUG_COLOR 0
    #endif
    
    // </e>
    
    // </e>
    
    // <e> UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer
    //==========================================================
    #ifndef UART_ENABLED
    #define UART_ENABLED 1
    #endif
    // <o> UART_DEFAULT_CONFIG_HWFC  - Hardware Flow Control
     
    // <0=> Disabled 
    // <1=> Enabled 
    
    #ifndef UART_DEFAULT_CONFIG_HWFC
    #define UART_DEFAULT_CONFIG_HWFC 0
    #endif
    
    // <o> UART_DEFAULT_CONFIG_PARITY  - Parity
     
    // <0=> Excluded 
    // <14=> Included 
    
    #ifndef UART_DEFAULT_CONFIG_PARITY
    #define UART_DEFAULT_CONFIG_PARITY 0
    #endif
    
    // <o> UART_DEFAULT_CONFIG_BAUDRATE  - Default Baudrate
     
    // <323584=> 1200 baud 
    // <643072=> 2400 baud 
    // <1290240=> 4800 baud 
    // <2576384=> 9600 baud 
    // <3862528=> 14400 baud 
    // <5152768=> 19200 baud 
    // <7716864=> 28800 baud 
    // <10289152=> 38400 baud 
    // <15400960=> 57600 baud 
    // <20615168=> 76800 baud 
    // <30801920=> 115200 baud 
    // <61865984=> 230400 baud 
    // <67108864=> 250000 baud 
    // <121634816=> 460800 baud 
    // <251658240=> 921600 baud 
    // <268435456=> 1000000 baud 
    
    #ifndef UART_DEFAULT_CONFIG_BAUDRATE
    #define UART_DEFAULT_CONFIG_BAUDRATE 30801920
    #endif
    
    // <o> UART_DEFAULT_CONFIG_IRQ_PRIORITY  - Interrupt priority
     
    
    // <i> Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice
    // <0=> 0 (highest) 
    // <1=> 1 
    // <2=> 2 
    // <3=> 3 
    // <4=> 4 
    // <5=> 5 
    // <6=> 6 
    // <7=> 7 
    
    #ifndef UART_DEFAULT_CONFIG_IRQ_PRIORITY
    #define UART_DEFAULT_CONFIG_IRQ_PRIORITY 6
    #endif
    
    // <q> UART_EASY_DMA_SUPPORT  - Driver supporting EasyDMA
     
    
    #ifndef UART_EASY_DMA_SUPPORT
    #define UART_EASY_DMA_SUPPORT 1
    #endif
    
    // <q> UART_LEGACY_SUPPORT  - Driver supporting Legacy mode
     
    
    #ifndef UART_LEGACY_SUPPORT
    #define UART_LEGACY_SUPPORT 1
    #endif
    
    // <e> UART0_ENABLED - Enable UART0 instance
    //==========================================================
    #ifndef UART0_ENABLED
    #define UART0_ENABLED 1
    #endif
    // <q> UART0_CONFIG_USE_EASY_DMA  - Default setting for using EasyDMA
     
    
    #ifndef UART0_CONFIG_USE_EASY_DMA
    #define UART0_CONFIG_USE_EASY_DMA 1
    #endif
    
    // </e>
    
    // <e> UART1_ENABLED - Enable UART1 instance
    //==========================================================
    #ifndef UART1_ENABLED
    #define UART1_ENABLED 0
    #endif
    // </e>
    
    // </e>
    
    // </h> 
    //==========================================================
    
    // <h> nRF_Libraries 
    
    //==========================================================
    // <e> NRF_BALLOC_ENABLED - nrf_balloc - Block allocator module
    //==========================================================
    #ifndef NRF_BALLOC_ENABLED
    #define NRF_BALLOC_ENABLED 1
    #endif
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <q> 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
    
    // <q> 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
    
    // <q> 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
    
    // <q> NRF_BALLOC_CLI_CMDS  - Enable CLI commands specific to the module
     
    
    #ifndef NRF_BALLOC_CLI_CMDS
    #define NRF_BALLOC_CLI_CMDS 0
    #endif
    
    // </e>
    
    // </e>
    
    // <q> NRF_MEMOBJ_ENABLED  - nrf_memobj - Linked memory allocator module
     
    
    #ifndef NRF_MEMOBJ_ENABLED
    #define NRF_MEMOBJ_ENABLED 1
    #endif
    
    // <q> NRF_STRERROR_ENABLED  - nrf_strerror - Library for converting error code to string.
     
    
    #ifndef NRF_STRERROR_ENABLED
    #define NRF_STRERROR_ENABLED 1
    #endif
    
    // <h> nrf_fprintf - fprintf function.
    
    //==========================================================
    // <q> NRF_FPRINTF_ENABLED  - Enable/disable fprintf module.
     
    
    #ifndef NRF_FPRINTF_ENABLED
    #define NRF_FPRINTF_ENABLED 1
    #endif
    
    // <q> 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
    
    // <q> NRF_FPRINTF_DOUBLE_ENABLED  - Enable IEEE-754 double precision formatting.
     
    
    #ifndef NRF_FPRINTF_DOUBLE_ENABLED
    #define NRF_FPRINTF_DOUBLE_ENABLED 0
    #endif
    
    // </h> 
    //==========================================================
    
    // </h> 
    //==========================================================
    
    // <h> nRF_Log 
    
    //==========================================================
    // <e> NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend
    //==========================================================
    #ifndef NRF_LOG_BACKEND_RTT_ENABLED
    #define NRF_LOG_BACKEND_RTT_ENABLED 0
    #endif
    // <o> NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. 
    // <i> Size of the buffer is a trade-off between RAM usage and processing.
    // <i> if buffer is smaller then strings will often be fragmented.
    // <i> It is recommended to use size which will fit typical log and only the
    // <i> longer one will be fragmented.
    
    #ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE
    #define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64
    #endif
    
    // <o> 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
    
    // <o> NRF_LOG_BACKEND_RTT_TX_RETRY_CNT - Writing to RTT retries. 
    // <i> If RTT fails to accept any new data after retries
    // <i> module assumes that host is not active and on next
    // <i> request it will perform only one write attempt.
    // <i> On successful writing, module assumes that host is active
    // <i> 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
    
    // </e>
    
    // <e> NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend
    //==========================================================
    #ifndef NRF_LOG_BACKEND_UART_ENABLED
    #define NRF_LOG_BACKEND_UART_ENABLED 1
    #endif
    // <o> NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin 
    #ifndef NRF_LOG_BACKEND_UART_TX_PIN
    #define NRF_LOG_BACKEND_UART_TX_PIN 6
    #endif
    
    // <o> NRF_LOG_BACKEND_UART_BAUDRATE  - Default Baudrate
     
    // <323584=> 1200 baud 
    // <643072=> 2400 baud 
    // <1290240=> 4800 baud 
    // <2576384=> 9600 baud 
    // <3862528=> 14400 baud 
    // <5152768=> 19200 baud 
    // <7716864=> 28800 baud 
    // <10289152=> 38400 baud 
    // <15400960=> 57600 baud 
    // <20615168=> 76800 baud 
    // <30801920=> 115200 baud 
    // <61865984=> 230400 baud 
    // <67108864=> 250000 baud 
    // <121634816=> 460800 baud 
    // <251658240=> 921600 baud 
    // <268435456=> 1000000 baud 
    
    #ifndef NRF_LOG_BACKEND_UART_BAUDRATE
    #define NRF_LOG_BACKEND_UART_BAUDRATE 30801920
    #endif
    
    // <o> NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. 
    // <i> Size of the buffer is a trade-off between RAM usage and processing.
    // <i> if buffer is smaller then strings will often be fragmented.
    // <i> It is recommended to use size which will fit typical log and only the
    // <i> longer one will be fragmented.
    
    #ifndef NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE
    #define NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE 64
    #endif
    
    // </e>
    
    // <e> NRF_LOG_ENABLED - nrf_log - Logger
    //==========================================================
    #ifndef NRF_LOG_ENABLED
    #define NRF_LOG_ENABLED 1
    #endif
    // <h> Log message pool - Configuration of log message pool
    
    //==========================================================
    // <o> NRF_LOG_MSGPOOL_ELEMENT_SIZE - Size of a single element in the pool of memory objects. 
    // <i> If a small value is set, then performance of logs processing
    // <i> is degraded because data is fragmented. Bigger value impacts
    // <i> RAM memory utilization. The size is set to fit a message with
    // <i> 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
    
    // <o> NRF_LOG_MSGPOOL_ELEMENT_COUNT - Number of elements in the pool of memory objects 
    // <i> If a small value is set, then it may lead to a deadlock
    // <i> in certain cases if backend has high latency and holds
    // <i> multiple messages for long time. Bigger value impacts
    // <i> RAM memory usage.
    
    #ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT
    #define NRF_LOG_MSGPOOL_ELEMENT_COUNT 8
    #endif
    
    // </h> 
    //==========================================================
    
    // <q> NRF_LOG_ALLOW_OVERFLOW  - Configures behavior when circular buffer is full.
     
    
    // <i> If set then oldest logs are overwritten. Otherwise a 
    // <i> marker is injected informing about overflow.
    
    #ifndef NRF_LOG_ALLOW_OVERFLOW
    #define NRF_LOG_ALLOW_OVERFLOW 1
    #endif
    
    // <o> NRF_LOG_BUFSIZE  - Size of the buffer for storing logs (in bytes).
     
    
    // <i> Must be power of 2 and multiple of 4.
    // <i> 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 1024
    #endif
    
    // <q> NRF_LOG_CLI_CMDS  - Enable CLI commands for the module.
     
    
    #ifndef NRF_LOG_CLI_CMDS
    #define NRF_LOG_CLI_CMDS 0
    #endif
    
    // <o> 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
    
    // <q> NRF_LOG_DEFERRED  - Enable deffered logger.
     
    
    // <i> Log data is buffered and can be processed in idle.
    
    #ifndef NRF_LOG_DEFERRED
    #define NRF_LOG_DEFERRED 0
    #endif
    
    // <q> NRF_LOG_FILTERS_ENABLED  - Enable dynamic filtering of logs.
     
    
    #ifndef NRF_LOG_FILTERS_ENABLED
    #define NRF_LOG_FILTERS_ENABLED 0
    #endif
    
    // <q> NRF_LOG_NON_DEFFERED_CRITICAL_REGION_ENABLED  - Enable use of critical region for non deffered mode when flushing logs.
     
    
    // <i> When enabled NRF_LOG_FLUSH is called from critical section when non deffered mode is used.
    // <i> Log output will never be corrupted as access to the log backend is exclusive
    // <i> 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
    
    // <o> 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
    
    // <o> 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
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_LOG_USES_TIMESTAMP - Enable timestamping
    
    // <i> Function for getting the timestamp is provided by the user
    //==========================================================
    #ifndef NRF_LOG_USES_TIMESTAMP
    #define NRF_LOG_USES_TIMESTAMP 0
    #endif
    // <o> 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
    
    // </e>
    
    // <h> nrf_log module configuration 
    
    //==========================================================
    // <h> nrf_log in nRF_Core 
    
    //==========================================================
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> TASK_MANAGER_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef TASK_MANAGER_CONFIG_LOG_ENABLED
    #define TASK_MANAGER_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // </h> 
    //==========================================================
    
    // <h> nrf_log in nRF_Drivers 
    
    //==========================================================
    // <e> CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef CLOCK_CONFIG_LOG_ENABLED
    #define CLOCK_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> COMP_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef COMP_CONFIG_LOG_ENABLED
    #define COMP_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> GPIOTE_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef GPIOTE_CONFIG_LOG_ENABLED
    #define GPIOTE_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> LPCOMP_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef LPCOMP_CONFIG_LOG_ENABLED
    #define LPCOMP_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> MAX3421E_HOST_CONFIG_LOG_ENABLED - Enable logging in the module
    //==========================================================
    #ifndef MAX3421E_HOST_CONFIG_LOG_ENABLED
    #define MAX3421E_HOST_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRFX_USBD_CONFIG_LOG_ENABLED - Enable logging in the module
    //==========================================================
    #ifndef NRFX_USBD_CONFIG_LOG_ENABLED
    #define NRFX_USBD_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> PDM_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef PDM_CONFIG_LOG_ENABLED
    #define PDM_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> PPI_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef PPI_CONFIG_LOG_ENABLED
    #define PPI_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> PWM_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef PWM_CONFIG_LOG_ENABLED
    #define PWM_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> QDEC_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef QDEC_CONFIG_LOG_ENABLED
    #define QDEC_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> RNG_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef RNG_CONFIG_LOG_ENABLED
    #define RNG_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // <q> 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
    
    // </e>
    
    // <e> RTC_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef RTC_CONFIG_LOG_ENABLED
    #define RTC_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> SAADC_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef SAADC_CONFIG_LOG_ENABLED
    #define SAADC_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> SPIS_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef SPIS_CONFIG_LOG_ENABLED
    #define SPIS_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> SPI_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef SPI_CONFIG_LOG_ENABLED
    #define SPI_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> TIMER_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef TIMER_CONFIG_LOG_ENABLED
    #define TIMER_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> TWIS_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef TWIS_CONFIG_LOG_ENABLED
    #define TWIS_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> TWI_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef TWI_CONFIG_LOG_ENABLED
    #define TWI_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> UART_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef UART_CONFIG_LOG_ENABLED
    #define UART_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> USBD_CONFIG_LOG_ENABLED - Enable logging in the module
    //==========================================================
    #ifndef USBD_CONFIG_LOG_ENABLED
    #define USBD_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> WDT_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef WDT_CONFIG_LOG_ENABLED
    #define WDT_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // </h> 
    //==========================================================
    
    // <h> nrf_log in nRF_Libraries 
    
    //==========================================================
    // <e> APP_BUTTON_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef APP_BUTTON_CONFIG_LOG_ENABLED
    #define APP_BUTTON_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> APP_BUTTON_CONFIG_INITIAL_LOG_LEVEL  - Initial severity level if dynamic filtering is enabled.
     
    
    // <i> If module generates a lot of logs, initial log level can
    // <i> be decreased to prevent flooding. Severity level can be
    // <i> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> APP_TIMER_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef APP_TIMER_CONFIG_LOG_ENABLED
    #define APP_TIMER_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> APP_TIMER_CONFIG_INITIAL_LOG_LEVEL  - Initial severity level if dynamic filtering is enabled.
     
    
    // <i> If module generates a lot of logs, initial log level can
    // <i> be decreased to prevent flooding. Severity level can be
    // <i> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> APP_USBD_CONFIG_LOG_ENABLED - Enable logging in the module.
    //==========================================================
    #ifndef APP_USBD_CONFIG_LOG_ENABLED
    #define APP_USBD_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_ATFIFO_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRF_ATFIFO_CONFIG_LOG_ENABLED
    #define NRF_ATFIFO_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_BALLOC_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRF_BALLOC_CONFIG_LOG_ENABLED
    #define NRF_BALLOC_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL  - Initial severity level if dynamic filtering is enabled.
     
    
    // <i> If module generates a lot of logs, initial log level can
    // <i> be decreased to prevent flooding. Severity level can be
    // <i> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRF_LIBUARTE_CONFIG_LOG_ENABLED
    #define NRF_LIBUARTE_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_MEMOBJ_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRF_MEMOBJ_CONFIG_LOG_ENABLED
    #define NRF_MEMOBJ_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_QUEUE_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRF_QUEUE_CONFIG_LOG_ENABLED
    #define NRF_QUEUE_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_SDH_BLE_LOG_ENABLED - Enable logging in SoftDevice handler (BLE) module.
    //==========================================================
    #ifndef NRF_SDH_BLE_LOG_ENABLED
    #define NRF_SDH_BLE_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_SDH_LOG_ENABLED - Enable logging in SoftDevice handler module.
    //==========================================================
    #ifndef NRF_SDH_LOG_ENABLED
    #define NRF_SDH_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_SDH_SOC_LOG_ENABLED - Enable logging in SoftDevice handler (SoC) module.
    //==========================================================
    #ifndef NRF_SDH_SOC_LOG_ENABLED
    #define NRF_SDH_SOC_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> NRF_SORTLIST_CONFIG_LOG_ENABLED - Enables logging in the module.
    //==========================================================
    #ifndef NRF_SORTLIST_CONFIG_LOG_ENABLED
    #define NRF_SORTLIST_CONFIG_LOG_ENABLED 0
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // <e> PM_LOG_ENABLED - Enable logging in Peer Manager and its submodules.
    //==========================================================
    #ifndef PM_LOG_ENABLED
    #define PM_LOG_ENABLED 1
    #endif
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // </h> 
    //==========================================================
    
    // <h> nrf_log in nRF_Serialization 
    
    //==========================================================
    // <e> 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
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // </e>
    
    // </h> 
    //==========================================================
    
    // </h> 
    //==========================================================
    
    // </e>
    
    // <q> 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
    
    // </h> 
    //==========================================================
    
    // <h> nRF_Segger_RTT 
    
    //==========================================================
    // <h> segger_rtt - SEGGER RTT
    
    //==========================================================
    // <o> SEGGER_RTT_CONFIG_BUFFER_SIZE_UP - Size of upstream buffer. 
    // <i> Note that either @ref NRF_LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE
    // <i> 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 512
    #endif
    
    // <o> 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
    
    // <o> 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
    
    // <o> 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
    
    // <o> SEGGER_RTT_CONFIG_DEFAULT_MODE  - RTT behavior if the buffer is full.
     
    
    // <i> The following modes are supported:
    // <i> - SKIP  - Do not block, output nothing.
    // <i> - TRIM  - Do not block, output as much as fits.
    // <i> - 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
    
    // </h> 
    //==========================================================
    
    // </h> 
    //==========================================================
    
    // <<< end of configuration section >>>
    #endif //SDK_CONFIG_H
    
    

  • Hi,

    mej7000 said:
    It's probably not super helpful, but I also have two pca10040's. I flashed the unedited example code prx and ptx to each of those and they work.

    If you set up esb_prx on the nRF52840-DK , and esb_ptx on nRF52832-DK(pca10040), does that work? (Make sure you use the same esb configuartion on both rx and tx)

  • Excellent idea! Before jumping to the 52840, I edited the code on the two pca10040s. I enabled the modifications line by line and am 100% sure it is NRF_ESB_PROTOCOL_ESB causing the problem. Everything works fine with the following settings until I switch NRF_ESB_PROTOCOL_ESB_DPL to NRF_ESB_PROTOCOL_ESB.

        nrf_esb_config_t nrf_esb_config         = NRF_ESB_LEGACY_CONFIG;
        //nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB_DPL;
        nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB; // doesn't like this.
        nrf_esb_config.retransmit_delay         = 600;
        nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_1MBPS;
        nrf_esb_config.crc                      = NRF_ESB_CRC_8BIT;
        nrf_esb_config.tx_output_power          = NRF_ESB_TX_POWER_4DBM;
        nrf_esb_config.payload_length           = 32;
        err_code = nrf_esb_set_rf_channel(40); 
        VERIFY_SUCCESS(err_code);
    
        nrf_esb_config.event_handler            = nrf_esb_event_handler;
        nrf_esb_config.mode                     = NRF_ESB_MODE_PRX;
        nrf_esb_config.selective_auto_ack       = false;
    
        err_code = nrf_esb_init(&nrf_esb_config);
        VERIFY_SUCCESS(err_code);

    It looks like the protocol is already set to NRF_ESB_PROTOCOL_ESB in the definition of NRF_ESB_LEGACY_CONFIG, so I tried just commenting out both protocol lines, but that didn't work.

    //nrf_esb_config.protocol = NRF_ESB_PROTOCOL_ESB_DPL;
    //nrf_esb_config.protocol = NRF_ESB_PROTOCOL_ESB; // doesn't like this.

    {.protocol = NRF_ESB_PROTOCOL_ESB, \
    .mode = NRF_ESB_MODE_PTX, \
    .event_handler = 0, \
    .bitrate = NRF_ESB_BITRATE_2MBPS, \
    .tx_output_power = NRF_ESB_TX_POWER_0DBM, \
    .retransmit_delay = 600, \
    .retransmit_count = 3, \
    .tx_mode = NRF_ESB_TXMODE_AUTO, \
    .radio_irq_priority = 1, \
    .event_irq_priority = 2, \
    .payload_length = 32, \
    .selective_auto_ack = false \
    }
    Also, I don't know if this is significant, but I noticed that the jumpers were different on the two boards (see image). Reset/Detect is not jumper'd on the second board. As far as I know this is how it came from the factory. I didn't move them and I am the only one with access to the boards.


    Is this the problem (see bold)? I will check the receiver against a running nrf24 tomorrow...

    Backward compatibility

    The Enhanced ShockBurst library is compatible with the legacy nRFgo SDK. To ensure that your application built with the nRF Connect SDK can communicate with nRF24 devices that run applications built with the nRFgo SDK, use the configuration ESB_LEGACY_CONFIG.

    Note, however, that the provided samples in the two SDKs do not correspond, so that you cannot use the Transmitter sample from one SDK with the Receiver sample from the other SDK.

  • The only way I could get communication from the ESP32/nRF24 to pca10040 was by enabling DynamicPayloads. Although it works I would love to know if there is a way to not enable DynamicPayloads and still get communication to work...

    ESP32 code

      radio.setChannel( 0x28 ); //2440
      radio.setAutoAck( false );
      radio.setCRCLength( RF24_CRC_8 );
      radio.setPALevel(RF24_PA_MAX);
      radio.setDataRate(RF24_1MBPS);
      radio.enableDynamicPayloads();

    nRF code

    uint32_t esb_init( void )
    {
        uint32_t err_code;
    
        // RECEIVER (1) ---
        uint8_t base_addr_0[4] = {0xE7, 0xE7, 0xE7, 0xE7};
        uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
        uint8_t addr_prefix[8] = {0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8 };
    
    
        // RECEIVER ---
        nrf_esb_config_t nrf_esb_config         = NRF_ESB_LEGACY_CONFIG;
    
        nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB_DPL;
        //nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB; // doesn't like this.
    
        nrf_esb_config.retransmit_delay         = 600;
        nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_1MBPS;
        nrf_esb_config.crc                      = NRF_ESB_CRC_8BIT;
        nrf_esb_config.tx_output_power          = NRF_ESB_TX_POWER_4DBM;
        nrf_esb_config.payload_length           = 32;
        err_code = nrf_esb_set_rf_channel(40); 
        VERIFY_SUCCESS(err_code);
    
        nrf_esb_config.event_handler            = nrf_esb_event_handler;
        nrf_esb_config.mode                     = NRF_ESB_MODE_PRX;
        nrf_esb_config.selective_auto_ack       = false;
    
        err_code = nrf_esb_init(&nrf_esb_config);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_base_address_0(base_addr_0);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_base_address_1(base_addr_1);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_prefixes(addr_prefix, 8);
        VERIFY_SUCCESS(err_code);
    
        return err_code;
    }

  • Hi,

    Good to hear it's working.

    You might need to set selective_auto_ack to true for that. 

    Also this post might be helpful:  ESB ACK packet not received? 

  • The ESB module treats ACK packets the same regardless of a payload contained within. And since dynamic payloads are required for ACK packets that have payloads, the dynamic payloads feature is required for basic auto-ack functionality (even when not using an ACK payload).

    In our RF24 Arduino library (for the nRF24L01), we use static payloads with auto-ack enabled as defaults for better OTA compatibility with counterfeit/clone chips. This seems to be an exploit of the nRF24L01 firmware though as successful use of these defaults contradict what the nRF24L01 datasheet says about auto-ack functionality (which I think is meant to refer to auto-ack with payloads).

Reply
  • The ESB module treats ACK packets the same regardless of a payload contained within. And since dynamic payloads are required for ACK packets that have payloads, the dynamic payloads feature is required for basic auto-ack functionality (even when not using an ACK payload).

    In our RF24 Arduino library (for the nRF24L01), we use static payloads with auto-ack enabled as defaults for better OTA compatibility with counterfeit/clone chips. This seems to be an exploit of the nRF24L01 firmware though as successful use of these defaults contradict what the nRF24L01 datasheet says about auto-ack functionality (which I think is meant to refer to auto-ack with payloads).

Children
  • Thank you for your reply! I appreciate your insight. The RF24 Arduino library you worked on was very instrumental to our understanding the nRF24 device in both the Arduino IDE and subsequently on PIC MCU's. And now again understanding how to use it with the nRF52. I can't tell you how much I appreciate it!

    Our devices help to reduce stress and heart attacks in fire fighters. We are now in additional government studies to further examine the health benefits. Creating these devices might not have been possible, certainly would have been more difficult, without the RF24 Arduino library you created. Thanks!

    -mike

    https://www.easealert.com/

Related