/** * Reads and parses one area header. This function does not read the area's * contents. * * @param out_is_scratch On success, 0 or 1 gets written here, * indicating whether the area is a scratch * area. * @param area_offset The flash offset of the start of the area. * * @return 0 on success; * nonzero on failure. */ static int nffs_restore_detect_one_area(uint8_t flash_id, uint32_t area_offset, struct nffs_disk_area *out_disk_area) { int rc; rc = hal_flash_read(flash_id, area_offset, out_disk_area, sizeof *out_disk_area); if (rc != 0) { return FS_HW_ERROR; } if (!nffs_area_magic_is_set(out_disk_area)) { return FS_ECORRUPT; } return 0; }
/** * Reads and parses one area header. This function does not read the area's * contents. * * @param out_is_scratch On success, 0 or 1 gets written here, * indicating whether the area is a scratch * area. * @param area_offset The flash offset of the start of the area. * * @return 0 on success; * nonzero on failure. */ static int nffs_restore_detect_one_area(uint8_t flash_id, uint32_t area_offset, struct nffs_disk_area *out_disk_area) { int rc; STATS_INC(nffs_stats, nffs_readcnt_detect); rc = hal_flash_read(flash_id, area_offset, out_disk_area, sizeof *out_disk_area); if (rc != 0) { return FS_EHW; } if (!nffs_area_magic_is_set(out_disk_area)) { return FS_ECORRUPT; } if (!nffs_area_is_current_version(out_disk_area)) { return FS_EUNEXP; } return 0; }