/* * Copyright (c) 2021 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ #ifndef RETAINED_H_ #define RETAINED_H_ #include #include /* Example of validatable retained data. */ struct retained_data { /* The uptime from the current session the last time the * retained data was updated. */ uint64_t uptime_latest; /* Cumulative uptime from all previous sessions up through * uptime_latest of this session. */ uint64_t uptime_sum; /* Number of times the application has started. */ uint32_t boots; /* Number of times the application has gone into system off. */ uint32_t off_count; /* CRC used to validate the retained data. This must be * stored little-endian, and covers everything up to but not * including this field. */ uint32_t crc; }; /* For simplicity in the sample just allow anybody to see and * manipulate the retained state. */ extern struct retained_data retained; /* Check whether the retained data is valid, and if not reset it. * * @return true if and only if the data was valid and reflects state * from previous sessions. */ bool retained_validate(void); /* Update any generic retained state and recalculate its checksum so * subsequent boots can verify the retained state. */ void retained_update(void); #endif /* RETAINED_H_ */