/************************************************************************** * * 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 * * @author (last) Dara Navaei * @date (last) 24-Aug-2020 * * @author (original) Dara Navaei * @date (original) 12-Feb-2020 * ***************************************************************************/ #ifndef FWCOMMON_NVDATAMGMT_H_ #define FWCOMMON_NVDATAMGMT_H_ #include "Common.h" #ifdef _HD_ #include "NVDataMgmtHDRecords.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 ********** /// 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; #pragma pack(push, 1) /********************** OLD STRUCTS TODO REMOVE ******************/ /// Payload record structure for a linear calibration message. TODO remove typedef struct { F32 gain; F32 offset; } LINEAR_F32_CAL_PAYLOAD_T; // TODO remove the above structure /// Calibration data structure. typedef struct calibration_Data { U32 calRecordRevision; ///< Revision of calibration record (rev when structure changes to determine compatibility with f/w version) F32 accelXOffset; ///< Accelerometer X axis offset F32 accelYOffset; ///< Accelerometer Y axis offset F32 accelZOffset; ///< Accelerometer Z axis offset #ifdef _HD_ F32 bloodFlowGain; ///< Gain for blood flow sensor F32 bloodFlowOffset_mL_min; ///< Offset for blood flow sensor F32 dialysateFlowGain; ///< Gain for dialysate flow sensor F32 dialysateFlowOffset_mL_min; ///< Offset for dialysate flow sensor char calDateBloodFlow[ MAX_DATE_CHARACTERS ]; ///< Last calibration date of blood flow sensor char calDateDialysateFlow[ MAX_DATE_CHARACTERS ]; ///< Last calibration date of blood flow sensor #endif //char calDateAccel[ MAX_DATE_CHARACTERS ]; ///< Last calibration date of accelerometer } CALIBRATION_DATA_T; /********************** TODO OLD STRUCT REMOVE ******************/ /// 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 ); void execNVDataMgmtProcessRecord( void ); BOOL getCalibrationRecord( void ); BOOL setCalibrationRecord( U32 currentMessage, U32 totalMessages, U32 length, U08 *addressPtr ); BOOL getSystemRecord( void ); BOOL setSystemRecord( U32 currentMessage, U32 totalMessages, U32 length, U08 *addressPtr ); BOOL getServiceRecord( void ); BOOL setServiceRecord( U32 currentMessage, U32 totalMessages, U32 length, U08 *addressPtr ); BOOL getScheduledRunsRecord( void ); BOOL setScheduledRunsRecord( U32 currentMessage, U32 totalMessages, U32 length, U08 *addressPtr ); #ifdef _DG_ DG_PRES_SENSORS_CAL_RECORD_T getDGPressureSensorsCalibrationRecord( void ); DG_FLOW_SENSORS_CAL_RECORD_T getDGFlowSensorsCalibrationRecord( void ); DG_LOAD_CELLS_CAL_RECORD_T getDGLoadCellsCalibrationRecord( void ); DG_TEMP_SENSORS_CAL_RECORD_T getDGTemperatureSensorsCalibrationRecord( void ); DG_COND_SENSORS_CAL_RECORD_T getDGConducitivitySensorsCalibrationRecord( void ); DG_DRAIN_LINE_VOLUME_T getDGDrainLineVolumeRecord( void ); DG_PRE_RO_PURGE_VOLUME_T getDGPreROPurgeVolumeRecord( void ); DG_RESERVOIR_VOLUME_RECORD_T getDGReservoirsVolumeRecord( void ); DG_ACID_CONCENTRATES_T getDGAcidConcentratesRecord( void ); DG_BICARB_CONCENTRATES_T getDGBicarbConcentratesRecord( void ); DG_FILTERS_CAL_RECORD_T getDGFiltersRecord( void ); DG_FANS_CAL_RECORD_T getDGFansRecord( void ); DG_SYSTEM_RECORD_T getDGSystemRecord( void ); DG_SERVICE_RECORD_T getDGServiceRecord( void ); DG_SCHEDULED_RUN_RECORD_T getDGScheduledRunRecord( void ); DG_RO_PUMP_CAL_RECORD_T getDGROPumpRecord( void ); DG_DRAIN_PUMP_CAL_RECORD_T getDGDrainPumpRecord( void ); #endif BOOL setCalibrationData ( CALIBRATION_DATA_T data ); //TODO remove BOOL getCalibrationData ( CALIBRATION_DATA_T* buffer ); //TODO remove BOOL testResetCalibrationData( U32 key ); // TODO clean up BOOL setTreatmentTime ( U32 hours ); U32 getTreatmentTime ( void ); BOOL setWaterConsumption ( U32 liters ); U32 getWaterConsumption ( void ); BOOL writeLogData ( LOG_DATA_T* data ); BOOL readLogData ( READ_DATA_T* buffer, U32 length ); /**@}*/ #endif