#ifndef DLT_WRAPPER_H
#define DLT_WRAPPER_H
#include <dlt/dlt.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
DltReturnValue registerApplication(const char *appId, const char *appDescription);
DltReturnValue unregisterApplicationFlushBufferedLogs(void);
DltReturnValue dltFree(void);
DltContext *createContext(void);
void freeContext(DltContext *context);
DltReturnValue registerContext(const char *contextId, const char *contextDescription, DltContext* context);
DltReturnValue unregisterContext(DltContext *context);
DltReturnValue getContextId(DltContext *context, char context_id[DLT_ID_SIZE]);
DltReturnValue getContextLogLevel(DltContext *context, int32_t *log_level);
DltReturnValue getContextTraceStatus(DltContext *context, int32_t *trace_status);
DltReturnValue logDlt(DltContext *context, DltLogLevelType logLevel, const char *message);
DltReturnValue logDltString(DltContext *context, DltLogLevelType logLevel, const char *message);
DltReturnValue logDltUint(DltContext *context, DltLogLevelType logLevel, uint32_t value);
DltReturnValue logDltInt(DltContext *context, DltLogLevelType logLevel, int32_t value);
DltContextData *createContextData(void);
void freeContextData(DltContextData *log);
DltReturnValue dltUserLogWriteStart(DltContext *context, DltContextData *log, DltLogLevelType logLevel);
DltReturnValue dltUserLogWriteFinish(DltContextData *log);
DltReturnValue setContextDataUserTimestamp(DltContextData *log, uint32_t timestamp);
DltReturnValue dltUserLogWriteString(DltContextData *log, const char *text);
DltReturnValue dltUserLogWriteUint(DltContextData *log, uint32_t data);
DltReturnValue dltUserLogWriteInt(DltContextData *log, int32_t data);
DltReturnValue dltUserLogWriteUint64(DltContextData *log, uint64_t data);
DltReturnValue dltUserLogWriteInt64(DltContextData *log, int64_t data);
DltReturnValue dltUserLogWriteFloat32(DltContextData *log, float data);
DltReturnValue dltUserLogWriteFloat64(DltContextData *log, double data);
DltReturnValue dltUserLogWriteBool(DltContextData *log, uint8_t data);
DltReturnValue registerLogLevelChangedCallback(
DltContext *handle,
void (*callback)(char context_id[DLT_ID_SIZE], uint8_t log_level, uint8_t trace_status)
);
#ifdef __cplusplus
}
#endif
#endif