Index: NVDataMgmt.h =================================================================== diff -u -re1b34b080d041c571ca4aad8a31104d2773c17df -rbbe8661808bec6f4e9715fd01ddcb2265d571d19 --- NVDataMgmt.h (.../NVDataMgmt.h) (revision e1b34b080d041c571ca4aad8a31104d2773c17df) +++ NVDataMgmt.h (.../NVDataMgmt.h) (revision bbe8661808bec6f4e9715fd01ddcb2265d571d19) @@ -1,46 +1,162 @@ /************************************************************************** - * - * Copyright (c) 2019-2020 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 NVDataMgmt.h - * - * @date 11-FEB-2020 - * @author D. Navaei - * - * @brief NVDataMgmt header file. - * - **************************************************************************/ +* +* Copyright (c) 2020-2022 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 NVDataMgmt.h +* +* @author (last) Dara Navaei +* @date (last) 13-Jul-2022 +* +* @author (original) Dara Navaei +* @date (original) 12-Feb-2020 +* +***************************************************************************/ #ifndef FWCOMMON_NVDATAMGMT_H_ #define FWCOMMON_NVDATAMGMT_H_ #include "Common.h" -#define SN_BUFFER_LENGTH 10U +#ifdef _HD_ + #include "NVDataMgmtHDRecords.h" + #include "OperationModes.h" + #include "HDDefs.h" +#endif +#ifdef _DG_ + #include "NVDataMgmtDGRecords.h" +#endif +/** + * @defgroup NVDataMgmt NVDataMgmt + * @brief Non-volatile data management module. Handles Bank 7 of the TI processor and the + * RAM of the RTC chip. + * + * @addtogroup NVDataMgmt + * @{ + */ + +// ********** public definitions ********** + +#ifndef _RELEASE_ +#define SW_CONFIG_ENABLE_VALUE 1 ///< Software configuration enable. +#define SW_CONFIG_DISABLE_VALUE 0 ///< Software configuration disable. +#endif + +/// Log event enumeration. +typedef enum log_event +{ + NVDATAMGMT_MODE_CHANGE = 0, ///< Mode change. + NVDATAMGMT_ALARM, ///< Alarm. + NVDATAMGMT_DISINFECTION_STARTED, ///< Disinfection started. + NVDATAMGMT_DISINFECTION_ENDED, ///< Disinfection ended. + NVDATAMGMT_DEVICE_TURNED_ON, ///< Device turned on. + NVDATAMGMT_DEVICE_TURNED_OFF, ///< Device turned off. + NVDATAMGMT_UI_CRASHED ///< UI crashed. +} NVDATAMGMT_LOG_EVENT_T; + +/// Read status enumeration. +typedef enum read_status +{ + NVDATAMGMT_READ_IDLE = 0, ///< Read status idle. + NVDATAMGMT_READ_IN_PROGRESS, ///< Read status in progress. + NVDATAMGMT_READ_COMPLETE ///< Read status complete. +} NVDATAMGMT_READ_STATUS_T; + +/// NVDataMgmt records' jobs states +typedef enum NVDataMgmt_Records_Jobs +{ + NVDATAMGMT_CALIBRATION_RECORD = 0, ///< NVDataMgmt process write calibration record. + NVDATAMGMT_SYSTEM_RECORD, ///< NVDataMgmt process write system record. + NVDATAMGMT_SERVICE_RECORD, ///< NVDataMgmt process service record. +#ifndef _RELEASE + NVDATAMGMT_SW_CONFIG_RECORD, ///< NVDataMgmt process software record. +#endif +#ifdef _DG_ + NVDATAMGMT_SCHEDULED_RUNS_RECORD, ///< NVDataMgmt process scheduled runs record. + NVDATAMGMT_HEATERS_INFO_RECORD, ///< NVDataMgmt process heaters info record. +#endif + NVDATAMGMT_USAGE_INFO_RECORD, ///< NVDataMgmt process usage info record. + NUM_OF_NVDATMGMT_RECORDS_JOBS ///< Number of NVDataMgmt records jobs. +} RECORD_JOBS_STATE_T; + +/// 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; + +#pragma pack(push, 1) +/// Read data status structure. +typedef struct get_data +{ + NVDATAMGMT_READ_STATUS_T status; ///< Read data status. + U08* externalBuffer; ///< External buffer address. +} READ_DATA_T; + +/// Log data structure. +typedef struct +{ + U32 epochTime; ///< Log data time in epoch. + U32 eventCode; ///< Log data event code. + U32 subCode; ///< Log data sub code. + F32 data1; ///< Log data 1. + F32 data2; ///< Log data 2. + F32 data3; ///< Log data 3. + F32 data4; ///< Log data 4. + F32 data5; ///< Log data 5. +} LOG_DATA_T; +#pragma pack(pop) + void initNVDataMgmt( void ); +void signalPowerOffWarning( void ); + void execNVDataMgmt( void ); SELF_TEST_STATUS_T execNVDataMgmtSelfTest( void ); -BOOL getSerialNumber( char* buffer ); +void execNVDataMgmtProcessRecord( void ); -BOOL setSerialNumber( char* buffer ); +BOOL isNewCalibrationRecordAvailable( void ); -BOOL setMfgData( char* buffer ); +BOOL getNVRecord2Driver( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, U08 numOfSnsrs2Check, ALARM_ID_T nvAlarm ); -BOOL getMfgData( char* buffer ); +#ifndef _RELEASE_ +U08 getSoftwareConfigStatus( SOFTWARE_CONFIG_T config ); +#endif +#ifdef _DG_ +BOOL setROWaterGeneratedL( F32 liters ); +BOOL setLastDisinfectDate( DG_DISINFECT_T disinfect, U32 epochTime ); +BOOL setDisinfectStatus( BOOL disinfectStatus ); +BOOL setHeatersInfoRecord( U08 *addressPtr, U32 infoLength ); +#endif +#ifdef _HD_ +BOOL setTxTimeHours( F32 hours ); +BOOL setTxLastStartTimeEpoch( U32 epoch ); +#endif +BOOL setServiceTime( void ); +BOOL writeLogData( LOG_DATA_T* data ); // Phase 1B +BOOL readLogData( READ_DATA_T* buffer, U32 length ); // Phase 1B +BOOL sendRecordToDialin( RECORD_JOBS_STATE_T job ); +BOOL receiveRecordFromDialin( RECORD_JOBS_STATE_T job, U32 currentMessage, U32 totalMessages, U32 length, U08 *addressPtr ); +void benignPolynomialCalRecord( POLYNOMIAL_CAL_PAYLOAD_T* record ); +NVDATAMGMT_RECORDS_READ_STATUS getNVRecordsReadStatus( void ); +BOOL enqueueNVRecordsForRead( void ); +/**@}*/ -#endif /* FWCOMMON_NVDATAMGMT_H_ */ +#endif