/************************************************************************** * * 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 NVMsgQ.h * * @author (original) Arpita Srivastava * @date (original) 31-Mar-2026 * ***************************************************************************/ #ifndef _NV_MSG_Q_H_ #define _NV_MSG_Q_H_ #include "Common.h" #include "DDDefs.h" #include "NVDriver.h" /** * @defgroup NVMsgQ NVMsgQ * @brief * * @addtogroup NVMsgQ * @{ */ // ********** public definitions ********** #define NV_RECORD_SLOT_SIZE 4096 // 4K #define SYSTEM_RECORD_OFFSET (0U * NV_RECORD_SLOT_SIZE) #define SERVICE_RECORD_OFFSET (0U * NV_RECORD_SLOT_SIZE) #define CAL_RECORD_OFFSET (1U * NV_RECORD_SLOT_SIZE) #define INSTIT_RECORD_OFFSET (0U * NV_RECORD_SLOT_SIZE) #define USAGE_RECORD_OFFSET (0U * NV_RECORD_SLOT_SIZE) #define SYSTEM_RECORD_NV_MEM_START_ADDRESS ( BANK7_SECTOR0_START_ADDRESS + SYSTEM_RECORD_OFFSET ) #define SERVICE_RECORD_NV_MEM_START_ADDRESS ( BANK7_SECTOR1_START_ADDRESS + SERVICE_RECORD_OFFSET ) #define CAL_RECORD_NV_MEM_START_ADDRESS ( BANK7_SECTOR1_START_ADDRESS + CAL_RECORD_OFFSET ) #define INSTIT_RECORD_NV_MEM_START_ADDRESS ( BANK7_SECTOR2_START_ADDRESS + INSTIT_RECORD_OFFSET ) #define USAGE_INFO_START_ADDRESS ( BANK7_SECTOR3_START_ADDRESS + USAGE_RECORD_OFFSET ) ///< DD usage info start address in RTC RAM (48). #define MIN_JOBS_NEEDED_FOR_SECTOR_0 5U ///< Min queue count needed to erase and write all (5) records back in sector 0. /// NVDataMgmt records read status typedef enum NVDataMgmt_NV_Records_Read_Status { NVDATAMGMT_RECORDS_NOT_STARTED = 0, ///< NVDataMgmt records not started. NVDATAMGMT_RECORDS_QUEUED, ///< NVDataMgmt records queued. NVDATAMGMT_RECORDS_READ, ///< NVDataMgmt records read. NVDATAMGMT_RECORDS_CRC_CHECKED, ///< NVDataMgmt records CRC checked. NUM_OF_NVDATAMGMT_READ_RECORDS_STATES, ///< Number of NVDataMgmt read records states. } NVDATAMGMT_RECORDS_READ_STATUS_T; // ********** public function prototypes ********** void initNVMsgQ ( void ); void execNVDataMgmtProcessRecord( void ); // Record operations queue functions void enqueueRecordJob( NVDATAMGMT_OPERATION_STATE_T ops, RECORD_JOBS_STATE_T job ); void dequeueRecordJob( void ); BOOL isRecordQueueEmpty( void ); BOOL isRecordQueueFull( void ); U32 getAvailableRecordQueueCount( void ); BOOL enqueueSector0Records( void ); void enqueuePOSTReadRecords( void ); BOOL testDDGetNVRecord( MESSAGE_T *message ); BOOL testDDSetNVRecord( MESSAGE_T *message ); void handleSendInstitutionalRecordToUI( MESSAGE_T* message ); BOOL receiveRecordFromDialin( RECORD_JOBS_STATE_T job, U32 currentMessage, U32 totalMessages, U32 length, U08 *addressPtr ); BOOL isNewCalibrationRecordAvailable( void ); void updateNewCalAvailableFlag( BOOL value ); void updateRecordReadStatus( NVDATAMGMT_RECORDS_READ_STATUS_T status ); void updateCalStartTimer( U32 value ); PROCESS_RECORD_JOB_T getCurrentProcessRecordJob ( void ); /**@}*/ #endif /* _NV_MSG_Q_H_ */