/* NVS: non volatile storage in flash * * Copyright (c) 2018 Laczen * * SPDX-License-Identifier: Apache-2.0 */ #ifndef __NVS_PRIV_H_ #define __NVS_PRIV_H_ #ifdef __cplusplus extern "C" { #endif /* * MASKS AND SHIFT FOR ADDRESSES * an address in nvs is an uint32_t where: * high 2 bytes represent the sector number * low 2 bytes represent the offset in a sector */ #define ADDR_SECT_MASK 0xFFFF0000 #define ADDR_SECT_SHIFT 16 #define ADDR_OFFS_MASK 0x0000FFFF /* * Status return values */ #define NVS_STATUS_NOSPACE 1 #define NVS_BLOCK_SIZE 32 #define NVS_LOOKUP_CACHE_NO_ADDR 0xFFFFFFFF /* Allocation Table Entry */ struct nvs_ate { uint16_t id; /* data id */ uint16_t offset; /* data offset within sector */ uint16_t len; /* data len within sector */ uint8_t part; /* part of a multipart data - future extension */ uint8_t crc8; /* crc8 check of the entry */ } __packed; BUILD_ASSERT(offsetof(struct nvs_ate, crc8) == sizeof(struct nvs_ate) - sizeof(uint8_t), "crc8 must be the last member"); #ifdef __cplusplus } #endif #endif /* __NVS_PRIV_H_ */