1 /* 2 * Copyright (c) 2024 Nordic Semiconductor ASA. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_DEBUG_CORESIGHT_CS_TRACE_DEFMT_H__ 8 #define ZEPHYR_INCLUDE_DEBUG_CORESIGHT_CS_TRACE_DEFMT_H__ 9 10 #include <zephyr/kernel.h> 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 /** 16 * @defgroup coresight_apis Coresight APIs 17 * @{ 18 * @} 19 * @defgroup cs_trace_defmt Coresight Trace Deformatter 20 * @ingroup coresight_apis 21 * @{ 22 */ 23 24 /** @brief Callback signature. 25 * 26 * @param id Stream ID. 27 * @param data Data. 28 * @param len Data length. 29 */ 30 typedef void (*cs_trace_defmt_cb)(uint32_t id, const uint8_t *data, size_t len); 31 32 /** @brief Size of trace deformatter frame size in 32 bit words. */ 33 #define CORESIGHT_TRACE_FRAME_SIZE32 4 34 35 /** @brief Size of trace deformatter frame size in bytes. */ 36 #define CORESIGHT_TRACE_FRAME_SIZE (CORESIGHT_TRACE_FRAME_SIZE32 * sizeof(uint32_t)) 37 38 /** @brief Initialize Coresight Trace Deformatter. 39 * 40 * @param cb Callback. 41 */ 42 int cs_trace_defmt_init(cs_trace_defmt_cb cb); 43 44 /** @brief Decode data from the stream. 45 * 46 * Trace formatter puts data in the 16 byte long blocks. 47 * 48 * Callback is called with decoded data. 49 * 50 * @param data Data. 51 * @param len Data length. Must equal 16. 52 * 53 * @retval 0 On successful deformatting. 54 * @retval -EINVAL If wrong length is provided. 55 */ 56 int cs_trace_defmt_process(const uint8_t *data, size_t len); 57 58 /** @} */ 59 60 #ifdef __cplusplus 61 } 62 #endif 63 64 #endif /* ZEPHYR_INCLUDE_DEBUG_CORESIGHT_CS_TRACE_DEFMT_H__ */ 65