/*
 * Copyright (c) 2019 Intel corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef _TRACE_CORE_H
#define _TRACE_CORE_H

#include <irq.h>
#include <zephyr/types.h>

#ifdef __cplusplus
extern "C" {
#endif

#define TRACING_LOCK()		{ int key; key = irq_lock()

#define TRACING_UNLOCK()	{ irq_unlock(key); } }

/**
 * @brief Check tracing enabled or not.
 *
 * @return True if tracing enabled; False if tracing disabled.
 */
bool is_tracing_enabled(void);

/**
 * @brief Give tracing buffer to backend.
 *
 * @param data Tracing buffer address.
 * @param length Tracing buffer length.
 */
void tracing_buffer_handle(uint8_t *data, uint32_t length);

/**
 * @brief Handle tracing packet drop.
 */
void tracing_packet_drop_handle(void);

/**
 * @brief Handle tracing command.
 *
 * @param buf Tracing command buffer address.
 * @param length Tracing command buffer length.
 */
void tracing_cmd_handle(uint8_t *buf, uint32_t length);

/**
 * @brief Trigger tracing thread to run after every first put.
 *
 * @param before_put_is_empty If tracing buffer is empty before this put.
 */
void tracing_trigger_output(bool before_put_is_empty);

/**
 * @brief Check if we are in tracing thread context.
 *
 * @return True if in tracing thread context; False if not.
 */
bool is_tracing_thread(void);

#ifdef __cplusplus
}
#endif

#endif
