summaryrefslogtreecommitdiff
path: root/src/offlinelogstorage/dlt_offline_logstorage.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/offlinelogstorage/dlt_offline_logstorage.h')
-rw-r--r--src/offlinelogstorage/dlt_offline_logstorage.h57
1 files changed, 47 insertions, 10 deletions
diff --git a/src/offlinelogstorage/dlt_offline_logstorage.h b/src/offlinelogstorage/dlt_offline_logstorage.h
index 80a75e8..01427a1 100644
--- a/src/offlinelogstorage/dlt_offline_logstorage.h
+++ b/src/offlinelogstorage/dlt_offline_logstorage.h
@@ -81,16 +81,18 @@
DLT_OFFLINE_LOGSTORAGE_FILE_EXTENSION_LEN + 1)
#define DLT_OFFLINE_LOGSTORAGE_FILTER_UNINIT 0
-#define DLT_OFFLINE_LOGSTORAGE_FILTER_PRESENT (1<<6)
-#define DLT_OFFLINE_LOGSTORAGE_APP_INIT (1<<5)
-#define DLT_OFFLINE_LOGSTORAGE_CTX_INIT (1<<4)
-#define DLT_OFFLINE_LOGSTORAGE_LOG_LVL_INIT (1<<3)
-#define DLT_OFFLINE_LOGSTORAGE_NAME_INIT (1<<2)
-#define DLT_OFFLINE_LOGSTORAGE_SIZE_INIT (1<<1)
+#define DLT_OFFLINE_LOGSTORAGE_FILTER_PRESENT (1<<7)
+#define DLT_OFFLINE_LOGSTORAGE_APP_INIT (1<<6)
+#define DLT_OFFLINE_LOGSTORAGE_CTX_INIT (1<<5)
+#define DLT_OFFLINE_LOGSTORAGE_LOG_LVL_INIT (1<<4)
+#define DLT_OFFLINE_LOGSTORAGE_NAME_INIT (1<<3)
+#define DLT_OFFLINE_LOGSTORAGE_SIZE_INIT (1<<2)
+#define DLT_OFFLINE_LOGSTORAGE_SYNC_BEHAVIOR (1<<1)
#define DLT_OFFLINE_LOGSTORAGE_NUM_INIT 1
-#define DLT_OFFLINE_LOGSTORAGE_FILTER_INIT 0x7F
+/* Sync behavior is optional */
+#define DLT_OFFLINE_LOGSTORAGE_FILTER_INIT 0xFD
-#define DLT_OFFLINE_LOGSTORAGE_FILTER_INITIALIZED(A) ((A) == DLT_OFFLINE_LOGSTORAGE_FILTER_INIT)
+#define DLT_OFFLINE_LOGSTORAGE_FILTER_INITIALIZED(A) ((A) >= DLT_OFFLINE_LOGSTORAGE_FILTER_INIT)
#define DLT_OFFLINE_LOGSTORAGE_IS_FILTER_PRESENT(A) ((A) & DLT_OFFLINE_LOGSTORAGE_FILTER_PRESENT)
@@ -105,10 +107,26 @@
#define DLT_OFFLINE_LOGSTORAGE_MIN(A, B) ((A) < (B) ? (A) : (B))
#define DLT_OFFLINE_LOGSTORAGE_MAX_WRITE_ERRORS 5
-#define DLT_OFFLINE_LOGSTORAGE_MAX_KEY_NUM 6
+#define DLT_OFFLINE_LOGSTORAGE_MAX_KEY_NUM 7
#define DLT_OFFLINE_LOGSTORAGE_CONFIG_SECTION "FILTER"
+/* Offline Logstorage sync strategies */
+#define DLT_LOGSTORAGE_SYNC_ON_MSG 0x00 /* default, on message sync */
+#define DLT_LOGSTORAGE_SYNC_ON_DAEMON_EXIT 0x01 /* sync on daemon exit */
+
+
+/* logstorage max cache */
+unsigned int g_logstorage_cache_max;
+/* current logstorage cache size */
+unsigned int g_logstorage_cache_size;
+
+typedef struct
+{
+ int offset; /* current write offset */
+ unsigned int wrap_around_cnt; /* wrap around counter */
+}DltLogStorageCacheFooter;
+
typedef struct
{
/* File name user configurations */
@@ -126,14 +144,33 @@ typedef struct DltLogStorageFileList
struct DltLogStorageFileList *next;
}DltLogStorageFileList;
-typedef struct
+typedef struct DltLogStorageConfigData DltLogStorageConfigData;
+
+typedef struct DltLogStorageConfigData
{
/* filter section */
int log_level; /* Log level number configured for filter */
char *file_name; /* File name for log storage configured for filter */
unsigned int file_size; /* MAX File size of storage file configured for filter */
unsigned int num_files; /* MAX number of storage files configured for filters */
+ int sync; /* Sync strategy */
+ /* callback function for filter configurations */
+ int (*dlt_logstorage_prepare)(DltLogStorageConfigData *config,
+ DltLogStorageUserConfig *file_config,
+ char *dev_path,
+ int log_msg_size);
+ int (*dlt_logstorage_write)(DltLogStorageConfigData *config,
+ unsigned char *data1,
+ int size1,
+ unsigned char *data2,
+ int size2,
+ unsigned char *data3,
+ int size3);
+ /* status is strategy, e.g. DLT_LOGSTORAGE_SYNC_ON_MSG is used when callback
+ * is called on message received */
+ int (*dlt_logstorage_sync)(DltLogStorageConfigData *config, int status);
FILE *log; /* current open log file */
+ void *cache; /* log data cache */
DltLogStorageFileList *records; /* File name list */
}DltLogStorageConfigData;