1 /* 2 * Copyright (c) 2020 - 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 * @defgroup nrf_802154_spinel_serialization_logging 37 * 802.15.4 radio driver spinel serialization logging 38 * @{ 39 * 40 */ 41 42 #ifndef NRF_802154_SPINEL_LOG_H_ 43 #define NRF_802154_SPINEL_LOG_H_ 44 45 #include <stdint.h> 46 #include <stddef.h> 47 48 #ifdef __cplusplus 49 extern "C" { 50 #endif 51 52 #ifdef CONFIG_NRF_802154_SER_LOG 53 54 #define NRF_802154_SPINEL_LOG_RAW(...) nrf_802154_spinel_log(__VA_ARGS__) 55 #define NRF_802154_SPINEL_BUFF_LOG_RAW(p_buff, buff_len) nrf_802154_spinel_buff_log(p_buff, \ 56 buff_len) 57 58 #else // CONFIG_NRF_802154_SER_LOG 59 60 #define NRF_802154_SPINEL_LOG_RAW(...) ((void)(0)) 61 #define NRF_802154_SPINEL_BUFF_LOG_RAW(...) ((void)(0)) 62 63 #endif // CONFIG_NRF_802154_SER_LOG 64 65 #define NRF_802154_SPINEL_LOG_BANNER_CALLING() \ 66 do \ 67 { \ 68 NRF_802154_SPINEL_LOG_RAW("Calling %s\n", __func__); \ 69 } \ 70 while (0) 71 72 #define NRF_802154_SPINEL_LOG_BANNER_RESPONSE() \ 73 do \ 74 { \ 75 NRF_802154_SPINEL_LOG_RAW("Received response for %s\n", __func__); \ 76 } \ 77 while (0) 78 79 #define NRF_802154_SPINEL_LOG_VAR_NAMED(fmt, var, name) \ 80 do \ 81 { \ 82 NRF_802154_SPINEL_LOG_RAW("\t%s: "fmt "\n", name, var); \ 83 } \ 84 while (0) 85 86 #define NRF_802154_SPINEL_LOG_VAR(fmt, var) \ 87 NRF_802154_SPINEL_LOG_VAR_NAMED(fmt, var, #var) 88 89 #define NRF_802154_SPINEL_LOG_BUFF_NAMED(p_buff, buff_len, name) \ 90 do \ 91 { \ 92 NRF_802154_SPINEL_LOG_RAW("\t%s: ", name); \ 93 NRF_802154_SPINEL_BUFF_LOG_RAW(p_buff, buff_len); \ 94 NRF_802154_SPINEL_LOG_RAW("\n\t%s_address: 0x%08x\n", name, p_buff); \ 95 } \ 96 while (0) 97 98 #define NRF_802154_SPINEL_LOG_BUFF(p_buff, buff_len) \ 99 NRF_802154_SPINEL_LOG_BUFF_NAMED(p_buff, buff_len, #p_buff) 100 101 /** 102 * @brief Printf-like function for logging from spinel serialization module. 103 * 104 * @param[in] p_fmt Pointer to a format string. 105 * @param[in] ... Data to be printed according to @ref p_fmt format string. 106 * 107 */ 108 void nrf_802154_spinel_log(const char * p_fmt, ...); 109 110 /** 111 * @brief Log contents of the buffer. 112 * 113 * @param[in] p_buff Pointer to a buffer to be printed. 114 * @param[in] buff_len Size of the @ref p_buff buffer. 115 * 116 */ 117 void nrf_802154_spinel_buff_log(const uint8_t * p_buff, size_t buff_len); 118 119 #ifdef __cplusplus 120 } 121 #endif 122 123 #endif /* SPINEL_H_ */ 124 125 /** @} */ 126