File syn_datalog.h¶
File List > log > syn_datalog.h
Go to the documentation of this file
#ifndef SYN_DATALOG_H
#define SYN_DATALOG_H
#include "../common/syn_defs.h"
#include "../util/syn_ringbuf.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
uint16_t id;
uint16_t len;
} SYN_DataLogHeader;
typedef struct {
SYN_RingBuf rb;
uint32_t dropped_frames;
} SYN_DataLog;
void syn_datalog_init(SYN_DataLog *log, uint8_t *buf, size_t size);
bool syn_datalog_write(SYN_DataLog *log, uint16_t id, const void *data, uint16_t len);
size_t syn_datalog_read(SYN_DataLog *log, uint16_t *out_id, void *out_data, size_t max_len);
static inline uint32_t syn_datalog_get_dropped(const SYN_DataLog *log)
{
return log->dropped_frames;
}
static inline void syn_datalog_reset(SYN_DataLog *log)
{
syn_ringbuf_reset(&log->rb);
log->dropped_frames = 0;
}
static inline size_t syn_datalog_available(const SYN_DataLog *log)
{
return syn_ringbuf_count(&log->rb);
}
#ifdef __cplusplus
}
#endif
#endif // SYN_DATALOG_H