openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.3 KiB

#ifndef LOGGER_H
#define LOGGER_H
#include <stdio.h>
#include <stdint.h>
#include <pthread.h>
#include <bzlib.h>
#ifdef __cplusplus
extern "C" {
#endif
#define LOGGER_MAX_HANDLES 16
typedef struct LoggerHandle {
pthread_mutex_t lock;
int refcnt;
char segment_path[4096];
char log_path[4096];
char lock_path[4096];
FILE* log_file;
BZFILE* bz_file;
FILE* qlog_file;
char qlog_path[4096];
BZFILE* bz_qlog;
} LoggerHandle;
typedef struct LoggerState {
pthread_mutex_t lock;
uint8_t* init_data;
size_t init_data_len;
int part;
char route_name[64];
char log_name[64];
bool has_qlog;
LoggerHandle handles[LOGGER_MAX_HANDLES];
LoggerHandle* cur_handle;
} LoggerState;
void logger_init(LoggerState *s, const char* log_name, const uint8_t* init_data, size_t init_data_len, bool has_qlog);
int logger_next(LoggerState *s, const char* root_path,
char* out_segment_path, size_t out_segment_path_len,
int* out_part);
LoggerHandle* logger_get_handle(LoggerState *s);
void logger_close(LoggerState *s);
void logger_log(LoggerState *s, uint8_t* data, size_t data_size, bool in_qlog);
void lh_log(LoggerHandle* h, uint8_t* data, size_t data_size, bool in_qlog);
void lh_close(LoggerHandle* h);
#ifdef __cplusplus
}
#endif
#endif