Skip to main content

Class: SavedVariable<T>

The SavedVariable template class provides a mechanism to manage variables with persistent storage using the MatrixOS::NVS API. It supports automatic saving, loading, and managing variable states.

The source file for this utility is located in os/framework/SavedVariable.h


Template Parameter​

  • T: The type of the variable to store.

Macros​

CreateSavedVar​

#define CreateSavedVar(scope, name, type, default_value)

Creates a SavedVariable instance with a hash derived from the scope and name.

Example:

// Macro usage
CreateSavedVar("Settings", Brightness, uint8_t, 128);
// Expands to:
SavedVariable<uint8_t> Brightness("Settings", "Brightness", 128);

Members​

hash​

uint32_t hash;
  • Type: uint32_t
  • Description: The unique hash identifier for the saved variable.

state​

SavedVariableState state;
  • Type: SavedVariableState
  • Description: Tracks the state of the variable. Possible states are:
    • NotInited: The variable is not initialized.
    • Inited: The variable is initialized.
    • Loaded: The variable is loaded from persistent storage.
    • Deleted: The variable has been deleted.

value​

T value;
  • Type: T
  • Description: The value of the saved variable.

Constructors​

Parameterized Constructor (Scope and Name)​

SavedVariable(string scope, string name, T default_value);

Initializes the variable with a unique hash derived from its scope and name.

Parameters:

  • scope (string): A namespace or grouping for the variable.
  • name (string): The name of the variable.
  • default_value (T): The default value for the variable.

Parameterized Constructor (Hash)​

SavedVariable(uint32_t hash, T default_value);

Initializes the variable with a precomputed hash.

Parameters:

  • hash (uint32_t): The unique hash for the variable.
  • default_value (T): The default value for the variable.

Methods​

Load​

bool Load();

Loads the variable value from persistent storage.

Returns:

  • bool: true if the variable was successfully loaded, false otherwise.

Loaded​

bool Loaded();

Checks if the variable is loaded from persistent storage.

Returns:

  • bool: true if the variable is loaded, false otherwise.

Set​

bool Set(T new_value);

Sets a new value for the variable and saves it to persistent storage.

Parameters:

  • new_value (T): The new value to set.

Returns:

  • bool: true if the value was successfully saved, false otherwise.

TempSet​

bool TempSet(T new_value);

Temporarily updates the variable without saving it to persistent storage.

Parameters:

  • new_value (T): The new value to set.

Returns:

  • bool: Always returns true.

Save​

bool Save();

Saves the current value to persistent storage.

Returns:

  • bool: true if the value was successfully saved, false otherwise.

Get​

T& Get();

Retrieves the value of the variable, loading it from persistent storage if not already loaded.

Returns:

  • T&: A reference to the variable's value.

Delete​

bool Delete();

Deletes the variable from persistent storage.

Returns:

  • bool: true if the variable was successfully deleted, false otherwise.

Operators​

The SavedVariable class provides various operators for arithmetic, comparison, and assignment. The operators automatically update the value in persistent storage unless explicitly stated.

Assignment​

bool operator=(T new_value);

Comparison​

bool operator==(T new_value);
bool operator!=(T new_value);
bool operator>(T new_value);
bool operator<(T new_value);
bool operator>=(T new_value);
bool operator<=(T new_value);

Arithmetic​

T operator+(T operation_value);
T operator-(T operation_value);
T operator*(T operation_value);
T operator/(T operation_value);
T operator%(T operation_value);

Increment/Decrement​

T& operator++();  // Pre-increment
T operator++(int); // Post-increment
T& operator--(); // Pre-decrement
T operator--(int); // Post-decrement

Pointer and Type Conversion​

T* operator&();
operator T();
operator T*();

Enums​

SavedVariableState​

Defines the possible states of a SavedVariable:

  • NotInited
  • Inited
  • Loaded
  • Deleted

Comments