1 /* 2 * Copyright (c) 2019 - 2023, Nordic Semiconductor ASA 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright notice, this 11 * list of conditions and the following disclaimer. 12 * 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * 3. Neither the name of Nordic Semiconductor ASA nor the names of its 18 * contributors may be used to endorse or promote products derived from this 19 * software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 * POSSIBILITY OF SUCH DAMAGE. 32 * 33 */ 34 35 /** 36 * @brief Module that contains debug helpers for the 802.15.4 radio driver for the nRF SoC devices. 37 * 38 */ 39 40 #ifndef NRF_802154_DEBUG_CORE_H_ 41 #define NRF_802154_DEBUG_CORE_H_ 42 43 #include <stdint.h> 44 45 #ifdef __cplusplus 46 extern "C" { 47 #endif 48 49 #define PIN_DBG_TIMESLOT_ACTIVE 3 50 #define PIN_DBG_TIMESLOT_EXTEND_REQ 4 51 #define PIN_DBG_TIMESLOT_SESSION_IDLE 16 52 #define PIN_DBG_TIMESLOT_RADIO_IRQ 28 53 #define PIN_DBG_TIMESLOT_FAILED 29 54 #define PIN_DBG_TIMESLOT_BLOCKED 30 55 #define PIN_DBG_RAAL_CRITICAL_SECTION 15 56 57 #define PIN_DBG_RTC0_EVT_REM 31 58 59 #if ENABLE_DEBUG_GPIO 60 61 #define NRF_802154_DEBUG_CORE_PINS_USED ((1 << PIN_DBG_TIMESLOT_ACTIVE) | \ 62 (1 << PIN_DBG_TIMESLOT_EXTEND_REQ) | \ 63 (1 << PIN_DBG_TIMESLOT_SESSION_IDLE) | \ 64 (1 << PIN_DBG_TIMESLOT_RADIO_IRQ) | \ 65 (1 << PIN_DBG_TIMESLOT_FAILED) | \ 66 (1 << PIN_DBG_TIMESLOT_BLOCKED) | \ 67 (1 << PIN_DBG_RAAL_CRITICAL_SECTION)) 68 69 #else // ENABLE_DEBUG_GPIO 70 71 #define NRF_802154_DEBUG_CORE_PINS_USED 0 72 73 #endif 74 75 #if ENABLE_DEBUG_GPIO 76 77 #define nrf_802154_pin_set(pin) NRF_P0->OUTSET = (1UL << (pin)) 78 #define nrf_802154_pin_clr(pin) NRF_P0->OUTCLR = (1UL << (pin)) 79 #define nrf_802154_pin_tgl(pin) \ 80 do \ 81 { \ 82 volatile uint32_t ps = NRF_P0->OUT; \ 83 \ 84 NRF_P0->OUTSET = (~ps & (1UL << (pin))); \ 85 NRF_P0->OUTCLR = (ps & (1UL << (pin))); \ 86 } \ 87 while (0); 88 89 #else // ENABLE_DEBUG_GPIO 90 91 #define nrf_802154_pin_set(pin) 92 #define nrf_802154_pin_clr(pin) 93 #define nrf_802154_pin_tgl(pin) 94 95 #endif // ENABLE_DEBUG_GPIO 96 97 #ifdef __cplusplus 98 } 99 #endif 100 101 #endif /* NRF_802154_DEBUG_CORE_H_ */ 102