/************************************************************************** * * Copyright (c) 2026-2027 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file NVDriver.h * * @author (original) Arpita Srivastava * @date (original) 31-Mar-2026 * ***************************************************************************/ #ifndef _NV_DRIVER_H #define _NV_DRIVER_H #include "Common.h" /** * @defgroup NVDriver NVDriver * @brief * * @addtogroup NVDriver * @{ */ // ********** public definitions ********** #define BANK7_SECTOR0_START_ADDRESS 0xF0200000 ///< Bank7 sector 0 start address. #define BANK7_SECTOR0_END_ADDRESS 0xF0203FFF ///< Bank7 sector 0 end address. #define BANK7_SECTOR1_START_ADDRESS 0xF0204000 ///< Bank7 sector 1 start address. #define BANK7_SECTOR1_END_ADDRESS 0xF0207FFF ///< Bank7 sector 1 end address. #define BANK7_SECTOR2_START_ADDRESS 0xF0208000 ///< Bank7 sector 2 start address. #define BANK7_SECTOR2_END_ADDRESS 0xF020BFFF ///< Bank7 sector 2 end address. #define BANK7_SECTOR3_START_ADDRESS 0xF020C000 ///< Bank7 sector 3 start address. #define BANK7_SECTOR3_END_ADDRESS 0xF020FFFF ///< Bank7 sector 3 end address. /// NVDataMgmt memory operation modes enumeration. typedef enum NVDataMgmt_Operation { NVDATAMGMT_NONE = 0, ///< Default mode to prevent any accidental ops. NVDATAMGMT_WRITE, ///< Operation mode write. NVDATAMGMT_READ, ///< Operation mode read. NVDATAMGMT_ERASE_SECTOR, ///< Operation mode erase a sector (EEPROM). NUM_OF_NVDATAMGMT_OPS_STATES ///< Total number of operation states. } NVDATAMGMT_OPERATION_STATE_T; /// NVDataMgmt records' jobs states typedef enum NVDataMgmt_Records_Jobs { NVDATAMGMT_SYSTEM_RECORD = 0, ///< NVDataMgmt process write system record. NVDATAMGMT_SERVICE_RECORD, ///< NVDataMgmt process service record. NVDATAMGMT_CALIBRATION_RECORD, ///< NVDataMgmt process write calibration record. NVDATAMGMT_INSTITUTIONAL_RECORD, ///< NVDataMgmt process institutional record. NVDATAMGMT_USAGE_INFO_RECORD, ///< NVDataMgmt process usage info record. NUM_OF_NVDATMGMT_RECORDS_JOBS ///< Number of NVDataMgmt records jobs. } RECORD_JOBS_STATE_T; /// Process records job structure typedef struct { NVDATAMGMT_OPERATION_STATE_T memoryOperation; ///< Memory operation. RECORD_JOBS_STATE_T recordJob; ///< Record job (i.e sector 0). } PROCESS_RECORD_JOB_T; // ********** public function prototypes ********** void initNVDriver( void ); void eraseSector( U32* recordFlashAddress ); void writeSector( U32* recordFlashAddress, U08* bufferAddress, U32 bufferSize ); void readSector( U32* recordFlashAddress, U32* bufferAddress, U32 bufferSize ); BOOL isFlashReady( void ); /**@}*/ #endif /* _NV_DRIVER_H */