/**
 * @file lv_profiler_builtin_private.h
 *
 */

#ifndef LV_PROFILER_BUILTIN_PRIVATE_H
#define LV_PROFILER_BUILTIN_PRIVATE_H

#ifdef __cplusplus
extern "C" {
#endif

/*********************
 *      INCLUDES
 *********************/

#include "lv_profiler_builtin.h"

#if LV_USE_PROFILER && LV_USE_PROFILER_BUILTIN

/*********************
 *      DEFINES
 *********************/

/**********************
 *      TYPEDEFS
 **********************/

/**
 * @brief LVGL profiler built-in configuration structure
 */
struct _lv_profiler_builtin_config_t {
    size_t buf_size;                    /**< The size of the buffer used for profiling data */
    uint32_t tick_per_sec;              /**< The number of ticks per second */
    uint64_t (*tick_get_cb)(void);      /**< Callback function to get the current tick count */
    void (*flush_cb)(const char * buf); /**< Callback function to flush the profiling data */
    int (*tid_get_cb)(void);            /**< Callback function to get the current thread ID */
    int (*cpu_get_cb)(void);            /**< Callback function to get the current CPU */
};


/**********************
 * GLOBAL PROTOTYPES
 **********************/

#if LV_USE_PROFILER_BUILTIN_POSIX

/**
 * Initialize the built-in profiler with POSIX functions.
 */
void lv_profiler_builtin_posix_init(void);

#endif /* LV_USE_PROFILER_BUILTIN_POSIX */

/**********************
 *      MACROS
 **********************/

#endif /* LV_USE_PROFILER && LV_USE_PROFILER_BUILTIN */

#ifdef __cplusplus
} /*extern "C"*/
#endif

#endif /*LV_PROFILER_BUILTIN_PRIVATE_H*/
