File syn_trace.h¶
File List > debug > syn_trace.h
Go to the documentation of this file
#ifndef SYN_TRACE_H
#define SYN_TRACE_H
#include "../port/syn_port_system.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/* ── Trace entry ────────────────────────────────────────────────────────── */
typedef struct {
uint32_t timestamp;
uint16_t event_id;
uint16_t value;
} SYN_TraceEntry;
/* ── Trace buffer ───────────────────────────────────────────────────────── */
typedef struct {
SYN_TraceEntry *entries;
uint16_t capacity;
uint16_t head;
uint32_t count;
bool enabled;
} SYN_Trace;
typedef void (*SYN_TracePrintFunc)(const char *str);
/* ── API ────────────────────────────────────────────────────────────────── */
void syn_trace_init(SYN_Trace *trace, SYN_TraceEntry *entries, uint16_t capacity);
void syn_trace_record(SYN_Trace *trace, uint16_t event_id, uint16_t value);
#define SYN_TRACE(trace, id, val) syn_trace_record((trace), (id), (val))
void syn_trace_enable(SYN_Trace *trace, bool enable);
void syn_trace_clear(SYN_Trace *trace);
static inline uint32_t syn_trace_count(const SYN_Trace *trace)
{
return trace->count;
}
bool syn_trace_read(const SYN_Trace *trace, uint32_t index, SYN_TraceEntry *entry);
void syn_trace_dump(const SYN_Trace *trace, SYN_TracePrintFunc print);
#ifdef __cplusplus
}
#endif
#endif /* SYN_TRACE_H */