Midnight Sun Firmware
Loading...
Searching...
No Matches
persist.h
1#pragma once
2
3/************************************************************************************************
4 * @file persist.h
5 *
6 * @brief Persist API Header file
7 *
8 * @date 2025-03-10
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14#include <stddef.h>
15
16/* Inter-component Headers */
17
18/* Intra-component Headers */
19#include "flash.h"
20#include "status.h"
21
28/* Commit data every second if dirty */
29#define PERSIST_COMMIT_TIMEOUT_MS 1000
30
31typedef struct {
32 void *blob;
33 size_t blob_size;
34 uintptr_t flash_addr;
35 uintptr_t prev_flash_addr;
36 uint32_t prev_hash;
37 uint8_t page;
39
54StatusCode persist_init(PersistStorage *persist, uint8_t page, void *blob, size_t blob_size, bool overwrite);
55
64
StatusCode
StatusCodes for various errors.
Definition: status.h:27
StatusCode persist_commit(PersistStorage *persist)
Force a persist data commit.
Definition: persist.c:112
StatusCode persist_init(PersistStorage *persist, uint8_t page, void *blob, size_t blob_size, bool overwrite)
Attempt to load stored data into the provided blob.
Definition: persist.c:35
Definition: persist.h:31