Modbus Vault v1.0
Loading...
Searching...
No Matches
blackbox_logger_internal.h
Go to the documentation of this file.
1
11#ifndef BLACKBOX_LOGGER_INTERNAL_H
12#define BLACKBOX_LOGGER_INTERNAL_H
13
14#include "blackbox_logger.h"
15
16#include <stdint.h>
17
18#define BLACKBOX_LOGGER_HEADER_MAGIC (0x5355424DUL)
19#define BLACKBOX_LOGGER_TAIL_MAGIC (0x4D425553UL)
20#define BLACKBOX_LOGGER_ENTRY_SIZE_WITHOUT_DATA_LENGTH \
21 (sizeof (blackbox_logger_entry_header_t) + \
22 sizeof (blackbox_logger_entry_tail_t))
23#define BLACKBOX_LOGGER_WRITE_LOCK_TIMEOUT_MS (50U)
24#define BLACKBOX_LOGGER_SECTOR_LOCK_TIMEOUT_MS (500U)
29typedef struct {
30 uint32_t header_magic;
31 uint32_t id;
32 uint32_t length;
33} __attribute__ ((packed)) blackbox_logger_entry_header_t;
34
38typedef struct {
39 uint16_t crc;
40 uint32_t tail_magic;
41} __attribute__ ((packed)) blackbox_logger_entry_tail_t;
42
54inline size_t align_num_up_helper (size_t number, size_t align_to)
55{
56 return ((number + (align_to - 1U)) & (~(align_to - 1U)));
57}
58
66inline size_t entry_total_size_helper (size_t data_length)
67{
69}
70
79size_t entry_total_aligned_size_helper (size_t data_length, size_t align_to)
80{
82}
83
91static inline bool is_logically_next_in_order_helper (uint32_t candidate, uint32_t reference)
92{
93 // Modular arithmetic for sequence numbers
94 return (uint32_t) (candidate - reference) < 0x80000000U;
95}
96
97#endif
Flash-backed circular logging system.
#define BLACKBOX_LOGGER_ENTRY_SIZE_WITHOUT_DATA_LENGTH
Definition blackbox_logger_internal.h:20
size_t entry_total_size_helper(size_t data_length)
Calculates entry total size.
Definition blackbox_logger_internal.h:66
size_t align_num_up_helper(size_t number, size_t align_to)
Align-up number.
Definition blackbox_logger_internal.h:54
size_t entry_total_aligned_size_helper(size_t data_length, size_t align_to)
Calculates entry total aligned size.
Definition blackbox_logger_internal.h:79
static bool is_logically_next_in_order_helper(uint32_t candidate, uint32_t reference)
Check if candidate comes after reference taking wrap-around into account.
Definition blackbox_logger_internal.h:91
Blackbox logger entry header structure.
Definition blackbox_logger_internal.h:29
uint32_t length
Definition blackbox_logger_internal.h:32
uint32_t id
Definition blackbox_logger_internal.h:31
uint32_t tail_magic
Definition blackbox_logger_internal.h:40
uint16_t crc
Definition blackbox_logger_internal.h:39
uint32_t header_magic
Definition blackbox_logger_internal.h:30