Nexus Embedded Platform 0.1.0
Statically assembled reusable embedded mechanisms
Loading...
Searching...
No Matches
storage.h
Go to the documentation of this file.
1
6#ifndef NEXUS_COMPONENTS_STORAGE_H
7#define NEXUS_COMPONENTS_STORAGE_H
8#include <stdbool.h>
9#include <stddef.h>
10#include <stdint.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
26
38typedef struct {
39 void* ctx;
40 size_t size;
41 size_t erase_size;
43 nx_storage_status_t (*read)(void*, size_t, void*, size_t);
44 nx_storage_status_t (*program)(void*, size_t, const void*, size_t);
45 nx_storage_status_t (*erase)(void*, size_t, size_t);
48
49#define NX_STORAGE_HEADER_SIZE 32u
50
61typedef struct {
63 size_t offset;
64 size_t bank_size;
66 uint64_t generation;
69 bool opened;
70 uint8_t* workspace;
73
91 const nx_storage_port_t* port,
92 size_t offset, size_t bank_size,
93 void* workspace, size_t workspace_bytes);
104 size_t* size);
117 size_t size);
123size_t nx_storage_capacity(const nx_storage_t* storage);
124
125#ifdef __cplusplus
126}
127#endif
128
129#endif /* NEXUS_COMPONENTS_STORAGE_H */
nx_storage_status_t nx_storage_load(nx_storage_t *storage, void *output, size_t *size)
Load and validate the latest committed whole blob.
nx_storage_status_t
Storage errors expose retry/reopen/recovery decisions.
Definition storage.h:17
@ NX_STORAGE_NO_SPACE
Definition storage.h:22
@ NX_STORAGE_IO
Definition storage.h:20
@ NX_STORAGE_UNSUPPORTED
Definition storage.h:24
@ NX_STORAGE_OK
Definition storage.h:18
@ NX_STORAGE_INVALID
Definition storage.h:19
@ NX_STORAGE_CORRUPT
Definition storage.h:21
@ NX_STORAGE_NOT_FOUND
Definition storage.h:23
nx_storage_status_t nx_storage_save(nx_storage_t *storage, const void *data, size_t size)
Commit a complete blob to the inactive bank.
size_t nx_storage_capacity(const nx_storage_t *storage)
Query usable blob capacity without touching hardware.
nx_storage_status_t nx_storage_open(nx_storage_t *storage, const nx_storage_port_t *port, size_t offset, size_t bank_size, void *workspace, size_t workspace_bytes)
Open/recover two externally supplied uniform erase banks.
Synchronous settled persistent Flash port.
Definition storage.h:38
nx_storage_status_t(* program)(void *, size_t, const void *, size_t)
Definition storage.h:44
size_t erase_size
Definition storage.h:41
size_t program_size
Definition storage.h:42
nx_storage_status_t(* read)(void *, size_t, void *, size_t)
Definition storage.h:43
nx_storage_status_t(* erase)(void *, size_t, size_t)
Definition storage.h:45
nx_storage_status_t(* sync)(void *)
Definition storage.h:46
Instance metadata with caller-sized workspace.
Definition storage.h:61
int active_bank
Definition storage.h:68
size_t workspace_bytes
Definition storage.h:71
size_t payload_offset
Definition storage.h:65
uint8_t * workspace
Definition storage.h:70
size_t bank_size
Definition storage.h:64
size_t payload_size
Definition storage.h:67
size_t offset
Definition storage.h:63
uint64_t generation
Definition storage.h:66
bool opened
Definition storage.h:69
nx_storage_port_t flash
Definition storage.h:62