/**
 * \addtogroup BSP
 * \{
 * \addtogroup BSP_CONFIG
 * \{
 * \addtogroup BSP_DEBUG
 *
 * \brief Doxygen documentation is not yet available for this module.
 *        Please check the source code file(s)
 *
 * \{
*/

/**
 ****************************************************************************************
 *
 * @file bsp_debug.h
 *
 * @brief Board Support Package. Debug Configuration.
 *
 * Copyright (c) 2016, Dialog Semiconductor
 * 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 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 the copyright holder nor the names of its contributors 
 *    may be used to endorse or promote products derived from this software without 
 *    specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER 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 BSP_DEBUG_H_
#define BSP_DEBUG_H_


/* --------------------------------- DEBUG GPIO handling macros --------------------------------- */

#define DBG_CONFIGURE(flag, name, func)                         \
{                                                               \
        if (flag == 1) {                                        \
                name##_MODE_REG = 0x300 + func;                 \
        }                                                       \
}

#define DBG_CONFIGURE_HIGH(flag, name)                          \
{                                                               \
        if (flag == 1) {                                        \
                name##_SET_REG = name##_PIN;                    \
                name##_MODE_REG = 0x300;                        \
        }                                                       \
}

#define DBG_CONFIGURE_LOW(flag, name)                           \
{                                                               \
        if (flag == 1) {                                        \
                name##_RESET_REG = name##_PIN;                  \
                name##_MODE_REG = 0x300;                        \
        }                                                       \
}

#define DBG_SET_HIGH(flag, name)                                \
{                                                               \
        if (flag == 1) {                                        \
                name##_SET_REG = name##_PIN;                    \
        }                                                       \
}

#define DBG_SET_LOW(flag, name)                                 \
{                                                               \
        if (flag == 1) {                                        \
                name##_RESET_REG = name##_PIN;                  \
        }                                                       \
}

/* ---------------------------------------------------------------------------------------------- */


/* ---------------------------------- HardFault or NMI event ------------------------------------ */

#ifndef EXCEPTION_DEBUG
#define EXCEPTION_DEBUG                         (0)
#endif

/* ---------------------------------------------------------------------------------------------- */


/* --------------------------------- Clock and Power Manager ------------------------------------ */

#ifndef CPM_DEBUG
#define CPM_DEBUG                               (0)
#endif

#ifndef CPM_USE_FUNCTIONAL_DEBUG
#define CPM_USE_FUNCTIONAL_DEBUG                (0)     // Requires GPIO config.
#endif

#ifndef CPM_USE_TIMING_DEBUG
#define CPM_USE_TIMING_DEBUG                    (0)     // Requires GPIO config.
#endif

#ifndef CPM_USE_RCX_DEBUG
#define CPM_USE_RCX_DEBUG                       (0)     // Requires logging.
#endif

/* Controls which RAM blocks will be retained when the MEASURE_SLEEP_CURRENT test mode is used
 * (optional). */
#ifndef dg_configTESTMODE_RETAIN_RAM
#define dg_configTESTMODE_RETAIN_RAM            (0x1F)
#endif

/* Controls whether the Cache will be retained when the MEASURE_SLEEP_CURRENT test mode is used
 * (optional). */
#ifndef dg_configTESTMODE_RETAIN_CACHE
#define dg_configTESTMODE_RETAIN_CACHE          (0)
#endif

/* Controls whether the ECC RAM will be retained when the MEASURE_SLEEP_CURRENT test mode is used
 * (optional). */
#ifndef dg_config_TESTMODE_RETAIN_ECCRAM
#define dg_config_TESTMODE_RETAIN_ECCRAM        (0)
#endif

/* ---------------------------------------------------------------------------------------------- */


/* --------------------------------------- USB Charger ------------------------------------------ */

#ifndef DEBUG_USB_CHARGER
#define DEBUG_USB_CHARGER                       (0)
#endif

#ifndef DEBUG_USB_CHARGER_FSM
#define DEBUG_USB_CHARGER_FSM                   (0)
#endif

#ifndef DEBUG_USB_CHARGER_PRINT
#define DEBUG_USB_CHARGER_PRINT                 (0)
#endif

#ifndef USB_CHARGER_TIMING_DEBUG
#define USB_CHARGER_TIMING_DEBUG                (0)
#endif

/* ---------------------------------------------------------------------------------------------- */


/* ------------------------------------------- BLE ---------------------------------------------- */

#ifndef BLE_USE_TIMING_DEBUG
#define BLE_USE_TIMING_DEBUG                    (0)     // Requires GPIO config.
#endif

#ifndef BLE_ADAPTER_DEBUG
#define BLE_ADAPTER_DEBUG                       (0)     // Requires GPIO config.
#endif

#ifndef BLE_RX_EN_DEBUG
#define BLE_RX_EN_DEBUG                         (0)     // Requires GPIO config.
#endif

#define BLE_RX_EN_FUNC                          (57)

#ifndef BLE_WINDOW_STATISTICS
#define BLE_WINDOW_STATISTICS                   (0)
#endif

#ifndef BLE_SLEEP_PERIOD_DEBUG
#define BLE_SLEEP_PERIOD_DEBUG                  (0)     // Requires logging and window statistics.
#endif

#ifndef BLE_WAKEUP_MONITOR_PERIOD
#define BLE_WAKEUP_MONITOR_PERIOD               (1024)
#endif

#ifndef BLE_MAX_MISSES_ALLOWED
#define BLE_MAX_MISSES_ALLOWED                  (0)
#endif

#ifndef BLE_MAX_DELAYS_ALLOWED
#define BLE_MAX_DELAYS_ALLOWED                  (0)
#endif

/* ---------------------------------------------------------------------------------------------- */


/* ------------------------------------------ Flash --------------------------------------------- */
#ifndef FLASH_DEBUG
#define FLASH_DEBUG                             (0)     // Requires GPIO config.
#endif

#ifndef __DBG_QSPI_ENABLED
#define __DBG_QSPI_ENABLED                      (0)
#endif

/* ---------------------------------------------------------------------------------------------- */


/* ------------------------------------------ Common -------------------------------------------- */
#ifndef CMN_TIMING_DEBUG
#define CMN_TIMING_DEBUG                        (0)     // Requires GPIO config.
#endif
/* ---------------------------------------------------------------------------------------------- */

/* -------------------------------------------- SPI --------------------------------------------- */
#ifndef SPI_TIMING_DEBUG
#define SPI_TIMING_DEBUG                        (0)     // Requires GPIO config.
#endif
/* ---------------------------------------------------------------------------------------------- */

/* ------------------------------------ GPIO configuration -------------------------------------- */

/* Enable/Disable GPIO pin assignment conflict detection
 */
#define DEBUG_GPIO_ALLOC_MONITOR_ENABLED        (0)


/* Exception handling debug configuration
 *
 */
#if (EXCEPTION_DEBUG == 0)
// Exception occurred (initial configuration: low)
#define EXCEPTIONDBG_MODE_REG                   *(volatile int *)0x20000000
#define EXCEPTIONDBG_SET_REG                    *(volatile int *)0x20000000
#define EXCEPTIONDBG_RESET_REG                  *(volatile int *)0x20000000
#define EXCEPTIONDBG_PIN                        (0)

#else

// Tick (P3[0])
#define EXCEPTIONDBG_MODE_REG                   GPIO->P30_MODE_REG
#define EXCEPTIONDBG_SET_REG                    GPIO->P3_SET_DATA_REG
#define EXCEPTIONDBG_RESET_REG                  GPIO->P3_RESET_DATA_REG
#define EXCEPTIONDBG_PIN                        (1 << 0)

#endif

/* Functional debug configuration
 *
 * Note that GPIO overlapping is allowed if the tracked events are discrete and the initial GPIO
 * configuration is the same! No checking is performed for erroneous configuration though!
 *
 */
#if (CPM_USE_FUNCTIONAL_DEBUG == 0)
// Tick (initial configuration: low)
#define CPMDBG_TICK_MODE_REG                    *(volatile int *)0x20000000
#define CPMDBG_TICK_SET_REG                     *(volatile int *)0x20000000
#define CPMDBG_TICK_RESET_REG                   *(volatile int *)0x20000000
#define CPMDBG_TICK_PIN                         (0)

// External Wake-up (initial configuration: low)
#define CPMDBG_EXT_WKUP_MODE_REG                *(volatile int *)0x20000000
#define CPMDBG_EXT_WKUP_SET_REG                 *(volatile int *)0x20000000
#define CPMDBG_EXT_WKUP_RESET_REG               *(volatile int *)0x20000000
#define CPMDBG_EXT_WKUP_PIN                     (0)

// Active / Sleep (initial configuration: high)
#define CPMDBG_POWERUP_MODE_REG                 *(volatile int *)0x20000000
#define CPMDBG_POWERUP_SET_REG                  *(volatile int *)0x20000000
#define CPMDBG_POWERUP_RESET_REG                *(volatile int *)0x20000000
#define CPMDBG_POWERUP_PIN                      (0)

#else

// Tick (P2[3])
#define CPMDBG_TICK_MODE_REG                    GPIO->P23_MODE_REG
#define CPMDBG_TICK_SET_REG                     GPIO->P2_SET_DATA_REG
#define CPMDBG_TICK_RESET_REG                   GPIO->P2_RESET_DATA_REG
#define CPMDBG_TICK_PIN                         (1 << 3)

// External Wake-up (P3[0])
#define CPMDBG_EXT_WKUP_MODE_REG                GPIO->P30_MODE_REG
#define CPMDBG_EXT_WKUP_SET_REG                 GPIO->P3_SET_DATA_REG
#define CPMDBG_EXT_WKUP_RESET_REG               GPIO->P3_RESET_DATA_REG
#define CPMDBG_EXT_WKUP_PIN                     (1 << 0)

// Active / Sleep (P1[4])
#define CPMDBG_POWERUP_MODE_REG                 GPIO->P14_MODE_REG
#define CPMDBG_POWERUP_SET_REG                  GPIO->P1_SET_DATA_REG
#define CPMDBG_POWERUP_RESET_REG                GPIO->P1_RESET_DATA_REG
#define CPMDBG_POWERUP_PIN                      (1 << 4)
#endif

/* Timing debug configuration
 *
 * Note that in this mode the pad latches are removed immediately after the execution resumes from
 * the __WFI(). Because of this, it is not advised to use this feature in projects that use GPIOS.
 * Nevertheless, in case it is used, make sure that the "peripheral initialization" is also done
 * at that point, modifying sys_power_mgr.c accordingly.
 *
 * Note also that GPIO overlapping is allowed if the tracked events are discrete and the initial
 * GPIO configuration is the same! No checking is performed for erroneous configuration though!
 *
 */
#if (CPM_USE_TIMING_DEBUG == 0)
// CPM: sleep or idle entry (until __WFI() is called) (initial configuration: high)
#define CPMDBG_SLEEP_ENTER_MODE_REG             *(volatile int *)0x20000000
#define CPMDBG_SLEEP_ENTER_SET_REG              *(volatile int *)0x20000000
#define CPMDBG_SLEEP_ENTER_RESET_REG            *(volatile int *)0x20000000
#define CPMDBG_SLEEP_ENTER_PIN                  (0)

// CPM: sleep or idle exit (initial configuration: low)
#define CPMDBG_SLEEP_EXIT_MODE_REG              *(volatile int *)0x20000000
#define CPMDBG_SLEEP_EXIT_SET_REG               *(volatile int *)0x20000000
#define CPMDBG_SLEEP_EXIT_RESET_REG             *(volatile int *)0x20000000
#define CPMDBG_SLEEP_EXIT_PIN                   (0)

// Low clocks (initial configuration: low)
#define CPMDBG_LOWER_CLOCKS_MODE_REG            *(volatile int *)0x20000000
#define CPMDBG_LOWER_CLOCKS_SET_REG             *(volatile int *)0x20000000
#define CPMDBG_LOWER_CLOCKS_RESET_REG           *(volatile int *)0x20000000
#define CPMDBG_LOWER_CLOCKS_PIN                 (0)

// XTAL16M settling (initial configuration: low)
#define CPMDBG_XTAL16M_SETTLED_MODE_REG         *(volatile int *)0x20000000
#define CPMDBG_XTAL16M_SETTLED_SET_REG          *(volatile int *)0x20000000
#define CPMDBG_XTAL16M_SETTLED_RESET_REG        *(volatile int *)0x20000000
#define CPMDBG_XTAL16M_SETTLED_PIN              (0)

#else

// CPM: sleep or idle entry (until __WFI() is called) (P1[7])
#define CPMDBG_SLEEP_ENTER_MODE_REG             GPIO->P17_MODE_REG
#define CPMDBG_SLEEP_ENTER_SET_REG              GPIO->P1_SET_DATA_REG
#define CPMDBG_SLEEP_ENTER_RESET_REG            GPIO->P1_RESET_DATA_REG
#define CPMDBG_SLEEP_ENTER_PIN                  (1 << 7)

// CPM: sleep or idle exit (P1[6])
#define CPMDBG_SLEEP_EXIT_MODE_REG              GPIO->P16_MODE_REG
#define CPMDBG_SLEEP_EXIT_SET_REG               GPIO->P1_SET_DATA_REG
#define CPMDBG_SLEEP_EXIT_RESET_REG             GPIO->P1_RESET_DATA_REG
#define CPMDBG_SLEEP_EXIT_PIN                   (1 << 6)

// Low clocks (P1[5])
#define CPMDBG_LOWER_CLOCKS_MODE_REG            GPIO->P15_MODE_REG
#define CPMDBG_LOWER_CLOCKS_SET_REG             GPIO->P1_SET_DATA_REG
#define CPMDBG_LOWER_CLOCKS_RESET_REG           GPIO->P1_RESET_DATA_REG
#define CPMDBG_LOWER_CLOCKS_PIN                 (1 << 5)

// XTAL16M settling (P1[4])
#define CPMDBG_XTAL16M_SETTLED_MODE_REG         GPIO->P14_MODE_REG
#define CPMDBG_XTAL16M_SETTLED_SET_REG          GPIO->P1_SET_DATA_REG
#define CPMDBG_XTAL16M_SETTLED_RESET_REG        GPIO->P1_RESET_DATA_REG
#define CPMDBG_XTAL16M_SETTLED_PIN              (1 << 4)
#endif

#if (BLE_USE_TIMING_DEBUG == 0)
// BLE LP & GEN irqs (initial configuration: low)
#define CPMDBG_BLE_IRQ_MODE_REG                 *(volatile int *)0x20000000
#define CPMDBG_BLE_IRQ_SET_REG                  *(volatile int *)0x20000000
#define CPMDBG_BLE_IRQ_RESET_REG                *(volatile int *)0x20000000
#define CPMDBG_BLE_IRQ_PIN                      (0)

// BLE sleep prepare (final stage) (initial configuration: low)
#define CPMDBG_BLE_SLEEP_ENTRY_MODE_REG         *(volatile int *)0x20000000
#define CPMDBG_BLE_SLEEP_ENTRY_SET_REG          *(volatile int *)0x20000000
#define CPMDBG_BLE_SLEEP_ENTRY_RESET_REG        *(volatile int *)0x20000000
#define CPMDBG_BLE_SLEEP_ENTRY_PIN              (0)

// BLE LP irq signal (diagnostics) (initial configuration: unknown)
#define CPMDBG_BLE_LP_IRQ_MODE_REG              *(volatile int *)0x20000000

#else

// BLE LP & GEN ISRs (P1[4])
#define CPMDBG_BLE_IRQ_MODE_REG                 GPIO->P14_MODE_REG
#define CPMDBG_BLE_IRQ_SET_REG                  GPIO->P1_SET_DATA_REG
#define CPMDBG_BLE_IRQ_RESET_REG                GPIO->P1_RESET_DATA_REG
#define CPMDBG_BLE_IRQ_PIN                      (1 << 4)

// BLE sleep prepare (final stage) (P1[4])
#define CPMDBG_BLE_SLEEP_ENTRY_MODE_REG         GPIO->P14_MODE_REG
#define CPMDBG_BLE_SLEEP_ENTRY_SET_REG          GPIO->P1_SET_DATA_REG
#define CPMDBG_BLE_SLEEP_ENTRY_RESET_REG        GPIO->P1_RESET_DATA_REG
#define CPMDBG_BLE_SLEEP_ENTRY_PIN              (1 << 4)

// BLE LP irq signal (diagnostics) (P2[3])
#define CPMDBG_BLE_LP_IRQ_MODE_REG              GPIO->P23_MODE_REG
#endif

#if (BLE_ADAPTER_DEBUG == 0)
#define BLEBDG_ADAPTER_MODE_REG                 *(volatile int *)0x20000000
#define BLEBDG_ADAPTER_SET_REG                  *(volatile int *)0x20000000
#define BLEBDG_ADAPTER_RESET_REG                *(volatile int *)0x20000000
#define BLEBDG_ADAPTER_PIN                      (0)

#else

#define BLEBDG_ADAPTER_MODE_REG                 GPIO->P30_MODE_REG
#define BLEBDG_ADAPTER_SET_REG                  GPIO->P3_SET_DATA_REG
#define BLEBDG_ADAPTER_RESET_REG                GPIO->P3_RESET_DATA_REG
#define BLEBDG_ADAPTER_PIN                      (1 << 0)
#endif

#if (BLE_RX_EN_DEBUG == 0)
#define BLEBDG_RXEN_MODE_REG                    *(volatile int *)0x20000000
#define BLEBDG_RXEN_SET_REG                     *(volatile int *)0x20000000
#define BLEBDG_RXEN_RESET_REG                   *(volatile int *)0x20000000
#define BLEBDG_RXEN_PIN                         (0)

#else

#define BLEBDG_RXEN_MODE_REG                    GPIO->P12_MODE_REG
#define BLEBDG_RXEN_SET_REG                     GPIO->P1_SET_DATA_REG
#define BLEBDG_RXEN_RESET_REG                   GPIO->P1_RESET_DATA_REG
#define BLEBDG_RXEN_PIN                         (1 << 2)
#endif

#if (USB_CHARGER_TIMING_DEBUG == 0)
// CHRG: Inside critical section (initial configuration: low)
#define CHRGDBG_CRITICAL_SECTION_MODE_REG       *(volatile int *)0x20000000
#define CHRGDBG_CRITICAL_SECTION_SET_REG        *(volatile int *)0x20000000
#define CHRGDBG_CRITICAL_SECTION_RESET_REG      *(volatile int *)0x20000000
#define CHRGDBG_CRITICAL_SECTION_PIN            (0)

// CHRG: FSM task (initial configuration: low)
#define CHRGDBG_FSM_TASK_MODE_REG               *(volatile int *)0x20000000
#define CHRGDBG_FSM_TASK_SET_REG                *(volatile int *)0x20000000
#define CHRGDBG_FSM_TASK_RESET_REG              *(volatile int *)0x20000000
#define CHRGDBG_FSM_TASK_PIN                    (0)

// CHRG: Control task (initial configuration: low)
#define CPMDBG_CONTROL_TASK_MODE_REG            *(volatile int *)0x20000000
#define CPMDBG_CONTROL_TASK_SET_REG             *(volatile int *)0x20000000
#define CPMDBG_CONTROL_TASK_RESET_REG           *(volatile int *)0x20000000
#define CPMDBG_CONTROL_TASK_PIN                 (0)

#else

// CHRG: Inside critical section (P3[2])
#define CHRGDBG_CRITICAL_SECTION_MODE_REG       GPIO->P32_MODE_REG
#define CHRGDBG_CRITICAL_SECTION_SET_REG        GPIO->P3_SET_DATA_REG
#define CHRGDBG_CRITICAL_SECTION_RESET_REG      GPIO->P3_RESET_DATA_REG
#define CHRGDBG_CRITICAL_SECTION_PIN            (1 << 2)

// CHRG: FSM task (P3[3])
#define CHRGDBG_FSM_TASK_MODE_REG               GPIO->P33_MODE_REG
#define CHRGDBG_FSM_TASK_SET_REG                GPIO->P3_SET_DATA_REG
#define CHRGDBG_FSM_TASK_RESET_REG              GPIO->P3_RESET_DATA_REG
#define CHRGDBG_FSM_TASK_PIN                    (1 << 3)

// CHRG: Control task (P3[4])
#define CPMDBG_CONTROL_TASK_MODE_REG            GPIO->P34_MODE_REG
#define CPMDBG_CONTROL_TASK_SET_REG             GPIO->P3_SET_DATA_REG
#define CPMDBG_CONTROL_TASK_RESET_REG           GPIO->P3_RESET_DATA_REG
#define CPMDBG_CONTROL_TASK_PIN                 (1 << 4)

#endif

#if (CMN_TIMING_DEBUG == 0)
// Common: Inside critical section (initial configuration: low)
#define CMNDBG_CRITICAL_SECTION_MODE_REG       *(volatile int *)0x20000000
#define CMNDBG_CRITICAL_SECTION_SET_REG        *(volatile int *)0x20000000
#define CMNDBG_CRITICAL_SECTION_RESET_REG      *(volatile int *)0x20000000
#define CMNDBG_CRITICAL_SECTION_PIN            (0)

#else

// Common: Inside critical section (P4[6])
#define CMNDBG_CRITICAL_SECTION_MODE_REG        GPIO->P40_MODE_REG
#define CMNDBG_CRITICAL_SECTION_SET_REG         GPIO->P4_SET_DATA_REG
#define CMNDBG_CRITICAL_SECTION_RESET_REG       GPIO->P4_RESET_DATA_REG
#define CMNDBG_CRITICAL_SECTION_PIN             (1 << 0)

#endif


/* Flash debug configuration
 *
 */
#if (FLASH_DEBUG == 0)
// Write page (initial configuration: low)
#define FLASHDBG_PAGE_PROG_MODE_REG             *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_SET_REG              *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_RESET_REG            *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_PIN                  (0)

// Program page wait loop (initial configuration: low)
#define FLASHDBG_PAGE_PROG_WL_MODE_REG          *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_WL_SET_REG           *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_WL_RESET_REG         *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_WL_PIN               (0)

// Program page wait loop - pending irq check (initial configuration: low)
#define FLASHDBG_PAGE_PROG_WL_IRQ_MODE_REG      *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_WL_IRQ_SET_REG       *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_WL_IRQ_RESET_REG     *(volatile int *)0x20000000
#define FLASHDBG_PAGE_PROG_WL_IRQ_PIN           (0)

// Suspend op (initial configuration: low)
#define FLASHDBG_SUSPEND_MODE_REG               *(volatile int *)0x20000000
#define FLASHDBG_SUSPEND_SET_REG                *(volatile int *)0x20000000
#define FLASHDBG_SUSPEND_RESET_REG              *(volatile int *)0x20000000
#define FLASHDBG_SUSPEND_PIN                    (0)

// Erase sector cmd (initial configuration: low)
#define FLASHDBG_SECTOR_ERASE_MODE_REG          *(volatile int *)0x20000000
#define FLASHDBG_SECTOR_ERASE_SET_REG           *(volatile int *)0x20000000
#define FLASHDBG_SECTOR_ERASE_RESET_REG         *(volatile int *)0x20000000
#define FLASHDBG_SECTOR_ERASE_PIN               (0)

// Notify task (initial configuration: low)
#define FLASHDBG_TASK_NOTIFY_MODE_REG           *(volatile int *)0x20000000
#define FLASHDBG_TASK_NOTIFY_SET_REG            *(volatile int *)0x20000000
#define FLASHDBG_TASK_NOTIFY_RESET_REG          *(volatile int *)0x20000000
#define FLASHDBG_TASK_NOTIFY_PIN                (0)

// Suspend action (low level) (initial configuration: low)
#define FLASHDBG_SUSPEND_ACTION_MODE_REG        *(volatile int *)0x20000000
#define FLASHDBG_SUSPEND_ACTION_SET_REG         *(volatile int *)0x20000000
#define FLASHDBG_SUSPEND_ACTION_RESET_REG       *(volatile int *)0x20000000
#define FLASHDBG_SUSPEND_ACTION_PIN             (0)

// Resume op (initial configuration: low)
#define FLASHDBG_RESUME_MODE_REG                *(volatile int *)0x20000000
#define FLASHDBG_RESUME_SET_REG                 *(volatile int *)0x20000000
#define FLASHDBG_RESUME_RESET_REG               *(volatile int *)0x20000000
#define FLASHDBG_RESUME_PIN                     (0)

#else

// Write page (initial configuration: low)
#define FLASHDBG_PAGE_PROG_MODE_REG             GPIO->P30_MODE_REG
#define FLASHDBG_PAGE_PROG_SET_REG              GPIO->P3_SET_DATA_REG
#define FLASHDBG_PAGE_PROG_RESET_REG            GPIO->P3_RESET_DATA_REG
#define FLASHDBG_PAGE_PROG_PIN                  (1 << 0)

// Program page wait loop (initial configuration: low)
#define FLASHDBG_PAGE_PROG_WL_MODE_REG          GPIO->P31_MODE_REG
#define FLASHDBG_PAGE_PROG_WL_SET_REG           GPIO->P3_SET_DATA_REG
#define FLASHDBG_PAGE_PROG_WL_RESET_REG         GPIO->P3_RESET_DATA_REG
#define FLASHDBG_PAGE_PROG_WL_PIN               (1 << 1)

// Program page wait loop - pending irq check (initial configuration: low)
#define FLASHDBG_PAGE_PROG_WL_IRQ_MODE_REG      GPIO->P32_MODE_REG
#define FLASHDBG_PAGE_PROG_WL_IRQ_SET_REG       GPIO->P3_SET_DATA_REG
#define FLASHDBG_PAGE_PROG_WL_IRQ_RESET_REG     GPIO->P3_RESET_DATA_REG
#define FLASHDBG_PAGE_PROG_WL_IRQ_PIN           (1 << 2)

// Suspend op (initial configuration: low)
#define FLASHDBG_SUSPEND_MODE_REG               GPIO->P33_MODE_REG
#define FLASHDBG_SUSPEND_SET_REG                GPIO->P3_SET_DATA_REG
#define FLASHDBG_SUSPEND_RESET_REG              GPIO->P3_RESET_DATA_REG
#define FLASHDBG_SUSPEND_PIN                    (1 << 3)

// Erase sector cmd (initial configuration: low)
#define FLASHDBG_SECTOR_ERASE_MODE_REG          GPIO->P34_MODE_REG
#define FLASHDBG_SECTOR_ERASE_SET_REG           GPIO->P3_SET_DATA_REG
#define FLASHDBG_SECTOR_ERASE_RESET_REG         GPIO->P3_RESET_DATA_REG
#define FLASHDBG_SECTOR_ERASE_PIN               (1 << 4)

// Notify task (initial configuration: low)
#define FLASHDBG_TASK_NOTIFY_MODE_REG           GPIO->P35_MODE_REG
#define FLASHDBG_TASK_NOTIFY_SET_REG            GPIO->P3_SET_DATA_REG
#define FLASHDBG_TASK_NOTIFY_RESET_REG          GPIO->P3_RESET_DATA_REG
#define FLASHDBG_TASK_NOTIFY_PIN                (1 << 5)

// Suspend action (low level) (initial configuration: low)
#define FLASHDBG_SUSPEND_ACTION_MODE_REG        GPIO->P36_MODE_REG
#define FLASHDBG_SUSPEND_ACTION_SET_REG         GPIO->P3_SET_DATA_REG
#define FLASHDBG_SUSPEND_ACTION_RESET_REG       GPIO->P3_RESET_DATA_REG
#define FLASHDBG_SUSPEND_ACTION_PIN             (1 << 6)

// Resume op (initial configuration: low)
#define FLASHDBG_RESUME_MODE_REG                GPIO->P37_MODE_REG
#define FLASHDBG_RESUME_SET_REG                 GPIO->P3_SET_DATA_REG
#define FLASHDBG_RESUME_RESET_REG               GPIO->P3_RESET_DATA_REG
#define FLASHDBG_RESUME_PIN                     (1 << 7)

#endif


/* Enables the logging of stack (RW) heap memories usage.
 *
 * The feature shall only be enabled in development/debug mode
 */
#ifndef dg_configLOG_BLE_STACK_MEM_USAGE
#define dg_configLOG_BLE_STACK_MEM_USAGE                (0)
#endif

/**
 * \brief Enables BLE diagnostic signals.
 *
 * There are 4 diagnostic signal configurations that user can choose from. To enable a specific
 * configuration, simply define dg_configBLE_DIAGN_CONFIG with the perspective configuration ID.
 * Configuration ID 0 disables BLE diagnostics.
 *
 * ------------------------------------------------------------------------------------------------------
 * | Signal     | Pin   | Config 1              | Config 2      | Config 3              | Config 4      |
 * ------------------------------------------------------------------------------------------------------
 * | ble_diag0  | P2_0  | -                     | -             | -                     | -             |
 * ------------------------------------------------------------------------------------------------------
 * | ble_diag1  | P2_1  | -                     | -             | -                     | -             |
 * ------------------------------------------------------------------------------------------------------
 * | ble_diag2  | P2_2  | -                     | -             | -                     | -             |
 * ------------------------------------------------------------------------------------------------------
 * | ble_diag3  | P1_0  | -                     | -             | -                     | -             |
 * ------------------------------------------------------------------------------------------------------
 * | ble_diag4  | P1_1  | ble_slp_irq           | radcntl_txen  | radcntl_txen          | radcntl_txen  |
 * ------------------------------------------------------------------------------------------------------
 * | ble_diag5  | P1_2  | ble_cscnt_irq         | radcntl_rxen  | rf_tx_en              | radcntl_rxen  |
 * ------------------------------------------------------------------------------------------------------
 * | ble_diag6  | P1_3  | ble_finetgtim_irq     | rf_rx_en      | rf_tx_data            | ble_rx_irq    |
 * ------------------------------------------------------------------------------------------------------
 * | ble_diag7  | P2_3  | ble_event_irq         | rf_rx_data    | rf_tx_data_valid      | ble_event_irq |
 * ------------------------------------------------------------------------------------------------------
 */
#ifndef dg_configBLE_DIAGN_CONFIG
#define dg_configBLE_DIAGN_CONFIG                   (0)
#endif

#endif /* BSP_DEBUG_H_ */

/**
\}
\}
\}
*/
