File Persistence (Serialization)
When the project is built with -DENABLE_FILE_PERSISTENCE=ON (compiles with -DUSE_FILE_PERSISTENCE),
the serialization layer in serialization.h is available. It provides binary file I/O for entire
groups with group- and datapoint-level version validation.
Enabling Persistence
Set "persistence" in groups.json:
{
"name": "CyclicGroup",
"persistence": "Cyclic",
"baseId": "0x5000",
"version": "2.0.0"
}
Allowed values: "None" (default), "Cyclic", "OnWrite".
The generated GroupDataPointMapping exposes two methods when USE_FILE_PERSISTENCE is defined:
SerializationStatus CyclicGroup.serializeGroup("data/cyclic.bin");
SerializationStatus CyclicGroup.deserializeGroup("data/cyclic.bin");
Version-Aware Upgrade
Each group carries a Version { major, minor, build } and each datapoint carries its own version.
During deserialization:
The stored group version is compared to the current group version.
If they differ and
AllowUpgradeistrueon the group, deserialization continues and skips individual datapoints whose stored version does not match the current version.If
AllowUpgradeisfalseon the group a version mismatch setsSerializationError::GroupVersionand deserialization stops.
API Reference
-
struct SerializationStatus
-
enum class SerializationError : uint8_t
Values:
-
enumerator None
-
enumerator GroupVersion
-
enumerator DatapointVersion
-
enumerator GroupAndDatapointVersion
-
enumerator NotAllBytesRead
-
enumerator None
-
template<typename Data>
struct Serialization
-
template<typename Data>
struct Deserialization