HardFOC Flux V1 HAL
Unified HAL API for the HardFOC Flux valve-control platform (ESP32-S3)
Loading...
Searching...
No Matches
NvsManager.h
Go to the documentation of this file.
1
16#ifndef FLUX_NVS_MANAGER_H_
17#define FLUX_NVS_MANAGER_H_
18
19#include <atomic>
20#include <cstdint>
21
22#include "core/hf-core-drivers/internal/hf-internal-interface-wrap/inc/base/BaseNvs.h"
24
36public:
37 static NvsManager& GetInstance() noexcept;
38
39 NvsManager(const NvsManager&) = delete;
40 NvsManager& operator=(const NvsManager&) = delete;
43
45 [[nodiscard]] bool EnsureInitialized() noexcept;
46
47 [[nodiscard]] bool IsInitialized() const noexcept {
48 return initialized_.load(std::memory_order_acquire);
49 }
50
52 [[nodiscard]] bool Deinitialize() noexcept;
53
55 [[nodiscard]] hf_nvs_err_t GetLastError() const noexcept { return last_error_; }
56
61 [[nodiscard]] flux::hal::ManagerError GetManagerError() const noexcept {
62 return manager_error_.load(std::memory_order_acquire);
63 }
64
66 [[nodiscard]] BaseNvs& App() noexcept { return app_; }
67
69 [[nodiscard]] BaseNvs& Calibration() noexcept { return calibration_; }
70
72 [[nodiscard]] BaseNvs& Config() noexcept { return config_; }
73
74 void DumpStatistics() const noexcept;
75
76private:
77 NvsManager() noexcept;
78 ~NvsManager() = default;
79
80 void SetLastError(hf_nvs_err_t e) noexcept { last_error_ = e; }
81
82 BaseNvs& app_;
83 BaseNvs& calibration_;
84 BaseNvs& config_;
85
86 std::atomic<bool> initialized_{false};
87 hf_nvs_err_t last_error_{hf_nvs_err_t::NVS_SUCCESS};
88 std::atomic<flux::hal::ManagerError> manager_error_{flux::hal::ManagerError::NotInitialized};
89};
90
91#endif // FLUX_NVS_MANAGER_H_
Singleton owning the Flux board's persistent-storage namespaces.
Definition NvsManager.h:35
NvsManager(NvsManager &&)=delete
std::atomic< flux::hal::ManagerError > manager_error_
Definition NvsManager.h:88
BaseNvs & config_
flux_cfg (binding slot 2)
Definition NvsManager.h:84
NvsManager & operator=(NvsManager &&)=delete
hf_nvs_err_t GetLastError() const noexcept
Last NVS error from the most recent failing operation (any region).
Definition NvsManager.h:55
bool IsInitialized() const noexcept
Definition NvsManager.h:47
flux::hal::ManagerError GetManagerError() const noexcept
Lifecycle / bind error of the last EnsureInitialized() (shared catalog).
Definition NvsManager.h:61
void SetLastError(hf_nvs_err_t e) noexcept
Definition NvsManager.h:80
BaseNvs & App() noexcept
General application storage (flux namespace).
Definition NvsManager.h:66
BaseNvs & Calibration() noexcept
Calibration and tuning blobs (flux_cal namespace).
Definition NvsManager.h:69
bool Deinitialize() noexcept
Close namespaces (call after other subsystems if they may persist on shutdown).
Definition NvsManager.cpp:72
static NvsManager & GetInstance() noexcept
Definition NvsManager.cpp:17
BaseNvs & Config() noexcept
Device configuration (flux_cfg namespace).
Definition NvsManager.h:72
bool EnsureInitialized() noexcept
Initialize NVS flash (once) and open all Flux namespaces.
Definition NvsManager.cpp:31
NvsManager(const NvsManager &)=delete
BaseNvs & app_
flux (binding slot 0)
Definition NvsManager.h:82
BaseNvs & calibration_
flux_cal (binding slot 1)
Definition NvsManager.h:83
void DumpStatistics() const noexcept
Definition NvsManager.cpp:88
std::atomic< bool > initialized_
Definition NvsManager.h:86
NvsManager & operator=(const NvsManager &)=delete
hf_nvs_err_t last_error_
Definition NvsManager.h:87
Shared HAL types for Flux V1: the manager error catalog and the facade result.
ManagerError
Lifecycle / bind failure catalog shared by every manager (GetManagerError()).
Definition flux_hal_types.hpp:37
@ NotInitialized
Manager not initialised (or shut down)