66 uint8_t getCount()
const;
70 bool removeByInstanceId(uint8_t instanceId);
74 const InstanceRecord *findBySubDeviceId(uint8_t subDeviceId)
const;
79 bool resize(uint8_t newCount);
95 bool beginStagedArtifact(uint8_t instanceId,
96 uint32_t artifactSize,
102 bool readArtifact(uint8_t instanceId,
105 uint16_t size)
const override;
106 static uint32_t stagedArtifactCrc32(
111 struct StoredInstanceHeader {
113 uint8_t reserved = 0;
114 uint32_t definitionId = 0;
115 uint16_t definitionVersion = 0;
116 uint8_t channelCount = 0;
117 uint16_t configSize = 0;
118 uint32_t revision = 0;
119 uint32_t artifactSize = 0;
120 uint32_t artifactCrc32 = 0;
123 struct StoredInstanceHeaderV3 {
125 uint8_t reserved = 0;
126 uint32_t definitionId = 0;
127 uint16_t definitionVersion = 0;
128 uint8_t channelCount = 0;
129 uint16_t configSize = 0;
132 struct StoredChannelMapping {
133 uint8_t channelId = 0;
134 uint8_t channelNumber = 0;
138 bool loadVariant(uint8_t instanceId, uint8_t variant,
InstanceRecord *record)
140 bool loadVariant(uint8_t instanceId,
143 bool loadConfig)
const;
144 bool loadVariantMetadata(uint8_t instanceId,
147 bool loadConfig)
const;
148 bool loadActiveVariant(uint8_t instanceId,
149 uint8_t *activeVariant,
156 bool copyActiveArtifact(
const InstanceRecord &record, uint8_t targetVariant);
157 bool validateArtifact(uint8_t instanceId,
159 uint32_t artifactSize,
160 uint32_t expectedCrc32)
const;
161 bool getActiveVariant(uint8_t instanceId, uint8_t *variant)
const;
162 bool readArtifactFromVariant(uint8_t instanceId,
167 uint16_t size)
const;
168 bool eraseArtifactChunks(uint8_t instanceId, uint8_t variant);
169 bool eraseVariant(uint8_t instanceId, uint8_t variant);
170 bool eraseInstance(uint8_t instanceId);
171 bool cleanupLoadedInstance(uint8_t instanceId,
172 uint8_t activeVariant,
173 uint8_t loadedVariant);
174 bool slotExists(uint8_t instanceId)
const;
175 void makeActKey(uint8_t instanceId,
char *output)
const;
176 void makeHeaderKey(uint8_t instanceId, uint8_t variant,
char *output)
const;
177 void makeChannelMapKey(uint8_t instanceId,
180 void makeConfigKey(uint8_t instanceId, uint8_t variant,
char *output)
const;
181 void makeArtifactChunkKey(uint8_t instanceId,
185 bool readBlobExact(
const char *key,
char *output,
size_t expectedSize)
const;