|
Modbus Vault v1.0
|
Implementation of the blackbox logger. More...
Functions | |
| static blackbox_logger_err_t | is_data_entry_internal (const uint8_t *data_ptr, const size_t data_size) |
| Check if valid data entry. | |
| static blackbox_logger_err_t | validate_entry_internal (const uint8_t *data_ptr, const size_t data_size) |
| Validate entry. | |
| size_t | get_entries_chunk_size_with_ceiling_helper (const uint8_t *buf_ptr, const size_t buf_size, const size_t ceiling_size, const size_t align_to) |
| Get maximum chunk size of entries with ceiling. | |
| static void | timer_flush_flash_internal (void *logger_ptr) |
| Flush flash callback for timer. | |
| static blackbox_logger_err_t | update_parameters_internal (const blackbox_logger_t *logger_ptr) |
| Update Logger configuration parameters structure. | |
| static blackbox_logger_err_t | esp_to_blackbox_error_map (const esp_err_t err) |
| Maps esp errors to logger errors. | |
| static blackbox_logger_err_t | binary_search_recover_helper (const blackbox_logger_t *logger_ptr) |
| Binary search partition sectors beginnings to find maximum ID. | |
| static blackbox_logger_err_t | linear_recover_helper (const blackbox_logger_t *logger_ptr) |
| Search linearly from given logger parameters until maximum ID is found. | |
| static blackbox_logger_err_t | recover_logger_internal (blackbox_logger_t *logger_ptr) |
| Recover Logger parameters. | |
| blackbox_logger_err_t | blackbox_logger_init (blackbox_logger_t *logger_ptr, blackbox_logger_config_t *config_ptr) |
| Initialize BlackBox Logger. | |
| blackbox_logger_err_t | blackbox_logger_write (blackbox_logger_t *logger_ptr, const blackbox_logger_entry_view_t *entry_ptr) |
| Write an entry to flash. | |
| blackbox_logger_err_t | blackbox_logger_read (const blackbox_logger_t *logger_ptr, const uint32_t read_offset, blackbox_logger_entry_view_t *entry_ptr, const size_t entry_buf_max_capacity) |
| Read an entry from flash. | |
| blackbox_logger_err_t | blackbox_logger_flush (blackbox_logger_t *logger_ptr) |
| Flush buffered data to flash. | |
| blackbox_logger_err_t | blackbox_logger_next_replay (blackbox_logger_t *logger_ptr, blackbox_logger_iter_cb_t is_entry_processed_cb_func, void *cb_arg_void_ptr, blackbox_logger_entry_view_t *entry_ptr, const size_t entry_buf_max_capacity) |
| Replay next available log entry. | |
| blackbox_logger_err_t | blackbox_logger_iterate_replay (blackbox_logger_t *logger_ptr, blackbox_logger_iter_cb_t is_entry_processed_cb_func, void *cb_arg_void_ptr, blackbox_logger_entry_view_t *entry_ptr, const size_t entry_buf_max_capacity) |
| Iterate over available log entries. | |
| void | blackbox_logger_get_parameters_defaults (blackbox_logger_parameters_t *parameter_ptr) |
| Get Logger parameters defaults. | |
| bool | blackbox_logger_has_replay_data (const blackbox_logger_t *logger_ptr) |
| Is log data available for replay. | |
| void | blackbox_logger_deinit (blackbox_logger_t *logger_ptr) |
| De-init BlackBox Logger. | |
Variables | |
| static const char * | TAG = "BB_LOG" |
| static blackbox_logger_parameters_t | blackbox_logger_default_parameters |
Implementation of the blackbox logger.
|
static |
Binary search partition sectors beginnings to find maximum ID.
| logger_ptr | Pointer to BlackBox Logger instance |
| BLACKBOX_LOGGER_OK | Search success |
| BLACKBOX_LOGGER_ERR_FAIL | Search fail |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| void blackbox_logger_deinit | ( | blackbox_logger_t * | logger_ptr | ) |
De-init BlackBox Logger.
De-init BlackBox Logger by flushing then stopping and deleting the timer and free-up used resources
| logger_ptr | Pointer to BlackBox Logger instance |
| blackbox_logger_err_t blackbox_logger_flush | ( | blackbox_logger_t * | logger_ptr | ) |
Flush buffered data to flash.
| logger_ptr | Pointer to BlackBox Logger instance |
| BLACKBOX_LOGGER_OK | Flush success |
| BLACKBOX_LOGGER_ERR_FAIL | Failed to write/erase partition |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_NO_MEM | Flash is full |
| BLACKBOX_LOGGER_ERR_TIMEOUT | Timed out waiting for resource |
| void blackbox_logger_get_parameters_defaults | ( | blackbox_logger_parameters_t * | parameter_ptr | ) |
Get Logger parameters defaults.
| parameter_ptr | Pointer to parameters structure |
| bool blackbox_logger_has_replay_data | ( | const blackbox_logger_t * | logger_ptr | ) |
Is log data available for replay.
| logger_ptr | Pointer to BlackBox Logger instance |
| blackbox_logger_err_t blackbox_logger_init | ( | blackbox_logger_t * | logger_ptr, |
| blackbox_logger_config_t * | config_ptr | ||
| ) |
Initialize BlackBox Logger.
Initialize logger with provided configurations using parameters as hints for recover also setup a one-shot timer with a preset-time for flushing buffered data to flash
| logger_ptr | Pointer to BlackBox Logger instance |
| config_ptr | Pointer to BlackBox Logger configuration instance |
| BLACKBOX_LOGGER_OK | Initialize success |
| BLACKBOX_FAIL | Initialize Fail |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_NO_MEM | No available memory for resource allocation |
| blackbox_logger_err_t blackbox_logger_iterate_replay | ( | blackbox_logger_t * | logger_ptr, |
| blackbox_logger_iter_cb_t | is_entry_processed_cb_func, | ||
| void * | cb_arg_void_ptr, | ||
| blackbox_logger_entry_view_t * | entry_ptr, | ||
| const size_t | entry_buf_max_capacity | ||
| ) |
Iterate over available log entries.
Iterate over available log entries calling a callback function on success stopping-on empty log or when callback returns false
| logger_ptr | Pointer to BlackBox Logger instance |
| is_entry_processed_cb_func | Callback for when entry is available |
| cb_arg_void_ptr | Void pointer to callback argument |
| entry_ptr | Pointer to entry to read to |
| entry_buf_max_capacity | Provided buffer maximum capacity |
| BLACKBOX_LOGGER_OK | Replay success |
| BLACKBOX_LOGGER_ERR_FAIL | Failed to read from partition |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_NO_MEM | No available memory for entry data |
| BLACKBOX_LOGGER_ERR_TIMEOUT | Timed out waiting for resource |
| BLACKBOX_LOGGER_ERR_INVALID_CRC | Invalid CRC for the entry |
| BLACKBOX_LOGGER_ERR_INVALID_ENTRY | Invalid entry found |
| BLACKBOX_LOGGER_ERR_PROCESS_FAIL | Callback refused/failed to process entry |
| blackbox_logger_err_t blackbox_logger_next_replay | ( | blackbox_logger_t * | logger_ptr, |
| blackbox_logger_iter_cb_t | is_entry_processed_cb_func, | ||
| void * | cb_arg_void_ptr, | ||
| blackbox_logger_entry_view_t * | entry_ptr, | ||
| const size_t | entry_buf_max_capacity | ||
| ) |
Replay next available log entry.
calling a callback function on next available log entry then advance replay offset on callback returns true otherwise returns with error code
| logger_ptr | Pointer to BlackBox Logger instance |
| is_entry_processed_cb_func | Callback for when entry is available |
| cb_arg_void_ptr | Void pointer to callback argument |
| entry_ptr | Pointer to entry to read to |
| entry_buf_max_capacity | Provided buffer maximum capacity |
| BLACKBOX_LOGGER_OK | Replay success |
| BLACKBOX_LOGGER_ERR_FAIL | Failed to read from partition |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_NO_MEM | No available memory for entry data |
| BLACKBOX_LOGGER_ERR_TIMEOUT | Timed out waiting for resource |
| BLACKBOX_LOGGER_ERR_INVALID_CRC | Invalid CRC for the entry |
| BLACKBOX_LOGGER_ERR_INVALID_ENTRY | Invalid entry found |
| BLACKBOX_LOGGER_ERR_PROCESS_FAIL | Callback refused/failed to process entry |
| blackbox_logger_err_t blackbox_logger_read | ( | const blackbox_logger_t * | logger_ptr, |
| uint32_t | read_offset, | ||
| blackbox_logger_entry_view_t * | entry_ptr, | ||
| size_t | entry_buf_max_capacity | ||
| ) |
Read an entry from flash.
Read to a buffer with a capacity provided by caller from a given flash offset
| logger_ptr | Pointer to BlackBox Logger instance |
| read_offset | Offset to read from |
| entry_ptr | Pointer to entry to be logged |
| entry_buf_max_capacity | Provided buffer maximum capacity |
| BLACKBOX_LOGGER_OK | Read success |
| BLACKBOX_LOGGER_ERR_FAIL | Failed to read from partition |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_NO_MEM | No available memory for entry data |
| BLACKBOX_LOGGER_ERR_TIMEOUT | Timed out waiting for resource |
| BLACKBOX_LOGGER_ERR_INVALID_CRC | Invalid CRC for the entry |
| BLACKBOX_LOGGER_ERR_INVALID_ENTRY | Invalid entry found |
| blackbox_logger_err_t blackbox_logger_write | ( | blackbox_logger_t * | logger_ptr, |
| const blackbox_logger_entry_view_t * | entry_ptr | ||
| ) |
Write an entry to flash.
Write to buffer first with a pre-defined maximum length if exceeded, it gets flushed. Entries are wrapped between header and tail with crc16 to ensures data integrity after power loss Look at blackbox_logger_flush for more details
| logger_ptr | Pointer to BlackBox Logger instance |
| entry_ptr | Pointer to entry to be logged |
| BLACKBOX_LOGGER_OK | Write success |
| BLACKBOX_LOGGER_ERR_FAIL | Failed to flush writing buffer |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_NO_MEM | No available memory for resource allocation |
| BLACKBOX_LOGGER_ERR_TIMEOUT | Timed out waiting for resource |
|
static |
Maps esp errors to logger errors.
| err | ESP error |
| size_t get_entries_chunk_size_with_ceiling_helper | ( | const uint8_t * | buf_ptr, |
| const size_t | buf_size, | ||
| const size_t | ceiling_size, | ||
| const size_t | align_to | ||
| ) |
Get maximum chunk size of entries with ceiling.
Get maximum bytes to take from buffer that contains entries and doesn't exceed ceiling size
| buf_ptr | Pointer to entries buffer |
| buf_size | Buffer size |
| ceiling_size | Size of maximum bytes to get as ceiling |
| align_to | Align to nearest |
|
static |
Check if valid data entry.
| data_ptr | Pointer to data |
| data_size | Size of data buffer |
| BLACKBOX_LOGGER_ERR_NO_MEM | No available memory for entry data |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_INVALID_CRC | Invalid CRC for the entry |
| BLACKBOX_LOGGER_ERR_INVALID_ENTRY | Invalid entry |
|
static |
Search linearly from given logger parameters until maximum ID is found.
| logger_ptr | Pointer to BlackBox Logger instance |
| BLACKBOX_LOGGER_OK | Search success |
| BLACKBOX_LOGGER_ERR_FAIL | Search fail |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
|
static |
Recover Logger parameters.
Recover Logger parameters first using provided parameters if not valid it binary searches for 'head sector' a sector which has the highest entry ID at it's beginning then linearly search that 'head sector' for the highest ID
| logger_ptr | Pointer to BlackBox Logger instance |
| BLACKBOX_LOGGER_OK | Recover success |
| BLACKBOX_LOGGER_ERR_FAIL | Recover fail |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_TIMEOUT | Timed out waiting for resource |
|
static |
Flush flash callback for timer.
Flush buffer to flash when triggered by the timer
| logger_ptr | Pointer to BlackBox Logger instance |
|
static |
Update Logger configuration parameters structure.
Update configuration parameters if logger parameters changed at any point
| logger_ptr | Pointer to BlackBox Logger instance |
| BLACKBOX_LOGGER_OK | Update success |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
|
static |
Validate entry.
Checks header, tail and CRC validity
| data_ptr | Pointer to data |
| data_size | Size of data |
| BLACKBOX_LOGGER_OK | Valid entry |
| BLACKBOX_LOGGER_ERR_INVALID_ARG | Provided invalid argument(s) |
| BLACKBOX_LOGGER_ERR_INVALID_CRC | Invalid CRC for the entry |
| BLACKBOX_LOGGER_ERR_INVALID_ENTRY | Invalid entry |
|
static |
Blackbox Logger default parameters structure
|
static |
Blackbox Logger TAG name