| /* |
| * Copyright (c) 2016-2017 Nordic Semiconductor ASA |
| * Copyright (c) 2016 Vinayak Kariappa Chettimada |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef _DEBUG_H_ |
| #define _DEBUG_H_ |
| |
| /* below are some interesting macros referenced by controller |
| * which can be defined to SoC's GPIO toggle to observe/debug the |
| * controller's runtime behavior. |
| */ |
| #ifdef CONFIG_BT_CTLR_DEBUG_PINS |
| #define DEBUG_INIT() do { \ |
| NRF_GPIO->DIRSET = 0x03FF0000; \ |
| NRF_GPIO->OUTCLR = 0x03FF0000; } \ |
| while (0) |
| |
| #define DEBUG_CPU_SLEEP(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTSET = BIT(16); \ |
| NRF_GPIO->OUTCLR = BIT(16); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(16); \ |
| NRF_GPIO->OUTSET = BIT(16); } \ |
| } while (0) |
| |
| #define DEBUG_TICKER_ISR(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(17); \ |
| NRF_GPIO->OUTSET = BIT(17); } \ |
| else { \ |
| NRF_GPIO->OUTSET = BIT(17); \ |
| NRF_GPIO->OUTCLR = BIT(17); } \ |
| } while (0) |
| |
| #define DEBUG_TICKER_TASK(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(17); \ |
| NRF_GPIO->OUTSET = BIT(17); } \ |
| else { \ |
| NRF_GPIO->OUTSET = BIT(17); \ |
| NRF_GPIO->OUTCLR = BIT(17); } \ |
| } while (0) |
| |
| #define DEBUG_TICKER_JOB(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(18); \ |
| NRF_GPIO->OUTSET = BIT(18); } \ |
| else { \ |
| NRF_GPIO->OUTSET = BIT(18); \ |
| NRF_GPIO->OUTCLR = BIT(18); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_ISR(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(23); \ |
| NRF_GPIO->OUTSET = BIT(23); } \ |
| else { \ |
| NRF_GPIO->OUTSET = BIT(23); \ |
| NRF_GPIO->OUTCLR = BIT(23); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_XTAL(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(24); \ |
| NRF_GPIO->OUTSET = BIT(24); } \ |
| else { \ |
| NRF_GPIO->OUTSET = BIT(24); \ |
| NRF_GPIO->OUTCLR = BIT(24); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_ACTIVE(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(25); \ |
| NRF_GPIO->OUTSET = BIT(25); } \ |
| else { \ |
| NRF_GPIO->OUTSET = BIT(25); \ |
| NRF_GPIO->OUTCLR = BIT(25); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_CLOSE(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = 0x00000000; \ |
| NRF_GPIO->OUTSET = 0x00000000; } \ |
| else { \ |
| NRF_GPIO->OUTCLR = 0x00780000; } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_PREPARE_A(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(19); \ |
| NRF_GPIO->OUTSET = BIT(19); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(19); \ |
| NRF_GPIO->OUTSET = BIT(19); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_START_A(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(19); \ |
| NRF_GPIO->OUTSET = BIT(19); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(19); \ |
| NRF_GPIO->OUTSET = BIT(19); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_PREPARE_S(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(20); \ |
| NRF_GPIO->OUTSET = BIT(20); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(20); \ |
| NRF_GPIO->OUTSET = BIT(20); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_START_S(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(20); \ |
| NRF_GPIO->OUTSET = BIT(20); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(20); \ |
| NRF_GPIO->OUTSET = BIT(20); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_PREPARE_O(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(21); \ |
| NRF_GPIO->OUTSET = BIT(21); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(21); \ |
| NRF_GPIO->OUTSET = BIT(21); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_START_O(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(21); \ |
| NRF_GPIO->OUTSET = BIT(21); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(21); \ |
| NRF_GPIO->OUTSET = BIT(21); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_PREPARE_M(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(22); \ |
| NRF_GPIO->OUTSET = BIT(22); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(22); \ |
| NRF_GPIO->OUTSET = BIT(22); } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_START_M(flag) do { \ |
| if (flag) { \ |
| NRF_GPIO->OUTCLR = BIT(22); \ |
| NRF_GPIO->OUTSET = BIT(22); } \ |
| else { \ |
| NRF_GPIO->OUTCLR = BIT(22); \ |
| NRF_GPIO->OUTSET = BIT(22); } \ |
| } while (0) |
| |
| #else |
| |
| #define DEBUG_INIT() |
| |
| #define DEBUG_CPU_SLEEP(flag) |
| |
| #define DEBUG_TICKER_ISR(flag) |
| |
| #define DEBUG_TICKER_TASK(flag) |
| |
| #define DEBUG_TICKER_JOB(flag) |
| |
| #define DEBUG_RADIO_ISR(flag) |
| |
| #define DEBUG_RADIO_HCTO(flag) |
| |
| #define DEBUG_RADIO_XTAL(flag) |
| |
| #define DEBUG_RADIO_ACTIVE(flag) |
| |
| #define DEBUG_RADIO_CLOSE(flag) |
| |
| #define DEBUG_RADIO_PREPARE_A(flag) |
| |
| #define DEBUG_RADIO_START_A(flag) |
| |
| #define DEBUG_RADIO_PREPARE_S(flag) |
| |
| #define DEBUG_RADIO_START_S(flag) |
| |
| #define DEBUG_RADIO_PREPARE_O(flag) |
| |
| #define DEBUG_RADIO_START_O(flag) |
| |
| #define DEBUG_RADIO_PREPARE_M(flag) |
| |
| #define DEBUG_RADIO_START_M(flag) |
| |
| #endif /* CONFIG_BT_CTLR_DEBUG_PINS */ |
| |
| #endif /* _DEBUG_H_ */ |