/*  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

#define SYS_LOG_DOMAIN "fs/nvs"
#define SYS_LOG_LEVEL CONFIG_NVS_LOG_LEVEL
#include <logging/sys_log.h>

#define NVS_ID_GT(a, b) (((a) > (b)) ? ((((a)-(b)) > 0x7FFF) ? (0):(1)) : \
	((((b)-(a)) > 0x7FFF) ? (1):(0)))

/*
 * Special id values
 */
#define NVS_ID_EMPTY      0xFFFF
#define NVS_ID_SECTOR_END 0xFFFE
/*
 * Status return values
 */
#define NVS_STATUS_NOSPACE 1

#define NVS_MOVE_BLOCK_SIZE 8

struct nvs_entry {
	off_t data_addr; /* address in flash to write data */
	u16_t len;       /* entry length in bytes */
	u16_t id;        /* entry id, is 0xFFFFF when empty, set to 0xFFFE
			  * for the last entry in a sector
			  */
};

struct _nvs_sector_hdr {
	u32_t fd_magic;
	u16_t fd_id;
};

struct _nvs_data_hdr {
	u16_t id;
	u16_t len;
};

struct _nvs_data_slt {
	u16_t crc16;
};


int nvs_append(struct nvs_fs *fs, struct nvs_entry *entry);
int nvs_append_close(struct nvs_fs *fs, const struct nvs_entry *entry);
void nvs_set_start_entry(struct nvs_fs *fs, struct nvs_entry *entry);
int nvs_walk_entry(struct nvs_fs *fs, struct nvs_entry *entry);
int nvs_get_first_entry(struct nvs_fs *fs, struct nvs_entry *entry);
int nvs_get_last_entry(struct nvs_fs *fs, struct nvs_entry *entry);
int nvs_check_crc(struct nvs_fs *fs, struct nvs_entry *entry);
int nvs_rotate(struct nvs_fs *fs);
int nvs_compute_crc(struct nvs_fs *fs, const struct nvs_entry *entry,
		    u16_t *crc16);
int nvs_flash_read(struct nvs_fs *fs, off_t offset, void *data, size_t len);
int nvs_flash_write(struct nvs_fs *fs, off_t offset, const void *data,
	size_t len);

/**
 * @}
 */
#ifdef __cplusplus
}
#endif

#endif /* __NVS_PRIV_H_ */
