#ifndef OUID_NVS_H__
#define OUID_NVS_H__

#ifdef __cplusplus
extern "C" {
#endif

//--------------------------------- INCLUDES ----------------------------------
#include "fds.h"
#include <stdint.h>
#include <stdbool.h>

//---------------------------------- MACROS -----------------------------------
//#define STORAGE_OUID_ID     1
//#define SECTOR_COUNT (2U)
//#define STORAGE_NODE DT_NODE_BY_FIXED_PARTITION_LABEL(storage)
//#define FLASH_NODE DT_MTD_FROM_FIXED_PARTITION(STORAGE_NODE)
#define STORE_IN_NVS    1
#define MAX_DIRTY_RECORDS_BEFORE_GARBAGE_COLLECTION 4
//-------------------------------- DATA TYPES ---------------------------------
typedef struct FDSSysDataComponents_s {
    fds_stat_t fds_stat;

    fds_find_token_t sys_data_ouid_token;
    fds_find_token_t sys_data_ouid_backup_token;

    fds_flash_record_t sys_data_ouid_record;
    fds_flash_record_t sys_data_ouid_backup_record;   

} FDSSysDataComponents_t;

//---------------------- PUBLIC FUNCTION PROTOTYPES --------------------------
uint32_t init_nvs_storage(void);
uint32_t get_ouid(uint32_t *ouid);
uint32_t set_ouid(uint32_t *new_ouid);
bool ouid_is_stored(void);

#ifdef __cplusplus
}
#endif

#endif //OUID_NVS_H__


