/************************************************************************** * * 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 NVRecordsDD.h * * @author (original) Arpita Srivastava * @date (original) 31-Mar-2026 * ***************************************************************************/ #ifndef _NV_RECORDS_DD_H_ #define _NV_RECORDS_DD_H_ #include "Common.h" #include "DDDefs.h" #include "NVDriver.h" /** * @defgroup NVRecordsDD NVRecordsDD * @brief * * @addtogroup NVRecordsDD * @{ */ // ********** public definitions ********** #define MAX_TOP_LEVEL_PN_CHARS 10U ///< Max number of characters for top level part number. #define MAX_TOP_LEVEL_SN_CHARS 20U ///< Max number of characters for top level serial number. #define PRES_SENSORS_RESERVED_SPACE_COUNT 5 ///< Pressure sensors reserved space count. #define FLOW_SENSROS_RESERVED_SPACE_COUNT 2 ///< Flow sensors reserved space count. #define TEMP_SENSORS_RESERVED_SPACE_COUNT 2 ///< Temperature sensors reserved space count. #define GENERIC_VOL_RESERVED_SPACE_COUNT 4 ///< Generic volumes reserved space count. #define MAX_EEPROM_WRITE_BUFFER_BYTES 16U ///< Max allowed bytes for an EEPROM write (16 bytes). /// NVDataMgmt self-test states enumeration. typedef enum NVDataMgmt_Self_Test_States { NVDATAMGMT_SELF_TEST_STATE_READ_RECORDS = 0, ///< Self test read records. NVDATAMGMT_SELF_TEST_STATE_CHECK_CRC, ///< Self test check CRC. NVDATAMGMT_SELF_TEST_STATE_COMPLETE, ///< Self test complete. NUM_OF_NVDATAMGMT_SELF_TEST_STATES ///< Total number of self-test states. } NVDATAMGMT_SELF_TEST_STATE_T; /// Process records specifications structure typedef struct { U32 startAddress; ///< Jobs spec start address. U32 sizeofJob; ///< Jobs spec size of job. U32 maxWriteBufferSize; ///< Jobs max write allowed processing buffer size. U32 maxReadBufferSize; ///< Jobs max read allowed processing buffer size. U08* structAddressPtr; ///< Jobs structure address pointer. U08* structCRCPtr; ///< Jobs structure CRC pointer. DD_EVENT_ID_T nvEvent; ///< Jobs non-volatile DD event (i.e calibration, system). } PROCESS_RECORD_SPECS_T; #ifndef _RELEASE_ /// Software configuration enums typedef enum software_configurations { SW_CONFIG_DISABLE_TRIMMER_HEATER = 0, ///< Software configuration disable trimmer heater. SW_CONFIG_DISABLE_ACCELS, ///< Software configuration disable accelerometers. SW_CONFIG_DISABLE_CAL_CHECK, ///< Software configuration disable calibration check. SW_CONFIG_DISABLE_HEATERS_MONITOR, ///< Software configuration disable heaters monitor. SW_CONFIG_DISABLE_DRAIN_PUMP_MONITOR, ///< Software configuration disable drain pump monitor. SW_CONFIG_DISABLE_RO_PUMP_MONITOR, ///< Software configuration disable RO pump monitor. SW_CONFIG_DISABLE_RO_RATIO_CHECK, // TODO remove ///< Software configuration disable RO ratio check SW_CONFIG_DISABLE_COND_SENSOR_CHECK, ///< Software configuration disable conductivity sensor check. SW_CONFIG_DISABLE_WATER_QUALITY_CHECK, ///< Software configuration disable water quality check. SW_CONFIG_DISABLE_FLOW_VS_LOAD_CELL_CHECK_IN_FILL, ///< Software configuration disable flow vs. load cell check in fill. SW_CONFIG_DISABLE_HEATERS_EFFICIENCY, ///< Software configuration disable heaters efficiency. SW_CONFIG_DISABLE_DISINFECT_CONDUCTIVITY_CHECK, ///< Software configuration disable disinfect conductivity check. SW_CONFIG_DISABLE_CONC_PUMPS, ///< Software configuration disable concentrate pumps. SW_CONFIG_DISABLE_CAPS_MONITOR, ///< Software configuration disable cap monitor. SW_CONFIG_DISABLE_UV_REACTORS, ///< Software configuration disable UV reactors. SW_CONFIG_DISABLE_VOLTAGES_MONITOR, ///< Software configuration disable voltages monitor. SW_CONFIG_DISABLE_BICARB_ALARMS, ///< Software configuration disable bicarb alarms. SW_CONFIG_DISABLE_EMPTY_BOTTLES_ALARM, ///< Software configuration disable empty bottle alarms. SW_CONFIG_DISABLE_BICARB_CONDUCTIVITY_TEST, // TODO remove ///< Software configuration disable bicarb conductivity test. SW_CONFIG_DISABLE_ACID_CONDUCTIVITY_TEST, // TODO remove ///< Software configuration disable acid conductivity test. SW_CONFIG_DISABLE_CONC_PUMPS_SPEED_ALARM, ///< Software configuration disable concentrate pumps speed alarm. SW_CONFIG_DISABLE_MIXING_IN_FILL, // TODO remove ///< Software configuration disable mixing in fill. SW_CONFIG_DISABLE_TEMPERATURE_SENSORS_ALARM, ///< Software configuration disable temperature sensors alarm. SW_CONFIG_DISABLE_CONCENTRATE_PUMPS_PARK, ///< Software configuration disable concentrate pumps park feature. SW_CONFIG_ENABLE_USING_TPO_FOR_PRIMARY_HEATER_CONTROL, ///< Software configuration enable TPo for primary heater control. NUM_OF_SW_CONFIGS ///< Number of software configurations. } SOFTWARE_CONFIG_T; #endif /// DD available NV data to get typedef enum DD_nv_commands { GET_CAL_PRESSURE_SENOSRS = 0, ///< Get pressure sensors calibration data. GET_CAL_LOAD_CELL_SENSORS, ///< Get load cell sensors calibration data. GET_CAL_FLOW_SENSORS, ///< Get flow sensors calibration data. GET_CAL_ACID_CONCENTREATES, ///< Get acid concentrates calibration data. GET_CAL_BICARB_CONCENTRATES, ///< Get bicarb concentrates calibration data. GET_CAL_ACCEL_SENSORS, ///< Get accelerometers calibration data. GET_CAL_TEMP_SENSORS, ///< Get temperature sensors calibration data. GET_CAL_HEATING_RECORD, ///< Get heating calibration record. GET_CAL_DRAIN_LINE_VOLUME_RECORD, ///< Get drain line volume record. GET_CAL_RO_PUMP_RECORD, ///< Get RO pump calibration record. GET_CAL_CONCENTRATE_PUMPS_RECORD, ///< Get concentrate pumps calibration record. GET_CAL_DRAIN_PUMP_RECORD, ///< Get drain pump calibration record. GET_CAL_FANS_RECORD, ///< Get fans calibration record. GET_CAL_PRE_RO_PURGE_VOLUME_RECORD, ///< Get pre RO purge volume record. GET_CAL_FILTERS_RECORD, ///< Get filters record. GET_CAL_FILL_CONDUCTIVITIES_RECORD, ///< Get fill conductivities record. GET_INF_HEATERS_RECORD, ///< Get heaters information form the the last run. GET_SYS_RECORD, ///< Get system record. GET_SRV_RECORD, ///< Get service record. GET_SRR_RECORD, ///< Get scheduled runs record. GET_USAGE_RECORD, ///< Get usage record. NUM_OF_NV_DD_DATA ///< Number of non-volatile data. } NV_DATA_T; /// DD pressure sensors enumeration. typedef enum DD_pressure_sensors { CAL_DATA_RO_PUMP_INLET_PRES_SENSOR = 0, ///< DD calibration data RO pump inlet pressure sensor. CAL_DATA_RO_PUMP_OUTLET_PRES_SENSOR, ///< DD calibration data RO pump outlet pressure sensor. CAL_DATA_DRAIN_PUMP_INLET_PRES_SENSOR, ///< DD calibration data drain pump inlet pressure sensor. CAL_DATA_DRAIN_PUMP_OUTLET_PRES_SENSOR, ///< DD calibration data drain pump outlet pressure sensor. CAL_DATA_BAROMETRIC_PRES_SENSOR, ///< DD calibration data barometric pressure sensor. NUM_OF_CAL_DATA_PRES_SENSORS, ///< Number of calibration data pressure sensors. } CAL_DATA_DD_PRES_SENSORS_T; /// DD flow sensors enumeration. typedef enum DD_flow_sensors { CAL_DATA_RO_PUMP_FLOW_SENSOR = 0, ///< RO pump flow sensor. CAL_DATA_DIALYSATE_FLOW_SENSOR, ///< RO pump dialysate flow sensor. NUM_OF_CAL_DATA_FLOW_SENSORS, ///< Number of flow sensors. } CAL_DATA_DD_FLOW_SENSORS_T; /// DD load cells enumeration. typedef enum DD_load_cells { CAL_DATA_LOAD_CELL_A1 = 0, ///< Load cell A1. CAL_DATA_LOAD_CELL_A2, ///< Load cell A2. CAL_DATA_LOAD_CELL_B1, ///< Load cell B1. CAL_DATA_LOAD_CELL_B2, ///< Load cell B2. NUM_OF_CAL_DATA_LOAD_CELLS, ///< Number of load cells. } CAL_DATA_DD_LOAD_CELLS_T; /// DD temperature sensors enumeration. typedef enum DD_temperature_sensors { CAL_DATA_FPGA_BOARD_TEMP = 0, ///< FPGA board temperature sensor. CAL_DATA_LOAD_CELL_A1_B1_TEMP, ///< Load cell A1/B1 temperature sensor. CAL_DATA_LOAD_CELL_A2_B2_TEMP, ///< Load cell A2/B2 temperature sensor. CAL_DATA_INTERNAL_THDO_RTD_TEMP, ///< Internal THDO RTC temperature sensor. CAL_DATA_INTERNAL_TDI_RTD_TEMP, ///< Internal TDI RTD temperature sensor. CAL_DATA_INTERNAL_COND_SENSOR_TEMP, ///< Internal conductivity sensor temperature sensor. CAL_DATA_THERMISTOR_DD_ONBOARD_NTC_TEMP, ///< DD onboard NTC thermistor. CAL_DATA_THERMISTOR_POWER_SUPPLY_1_TEMP, ///< Power supply 1 thermistor. CAL_DATA_THERMISTOR_POWER_SUPPLY_2_TEMP, ///< Power supply 2 thermistor. CAL_DATA_OUTLET_REDUNDANT_TEMP, ///< Outlet redundant temperature sensor. CAL_DATA_INLET_DIALYSATE_TEMP, ///< Inlet dialysate temperature sensor. CAL_DATA_INLET_PRIMARY_HEATER_TEMP, ///< Inlet primary heater temperature sensor. CAL_DATA_OUTLET_PRIMARY_HEATER_TEMP, ///< Outlet primary heater temperature sensor. CAL_DATA_COND_SENSOR_1_TEMP, ///< Conductivity sensor 1 temperature sensor. CAL_DATA_COND_SENSOR_2_TEMP, ///< Conductivity sensor 2 temperature sensor. CAL_DATA_HEAT_DISINFECT_TEMP, ///< Heat disinfect temperature sensor. CAL_DATA_INTERNAL_THD_TEMP, ///< Heat disinfect internal ADC temperature sensor. CAL_DATA_BARMOTERIC_TEMP, ///< Barometric temperature sensor. NUM_OF_CAL_DATA_TEMP_SENSORS, ///< Number of temperature sensors. } CAL_DATA_DD_TEMP_SENSORS_T; /// DD pumps enumeration. typedef enum DD_pumps { CAL_DATA_CONC_PUMP_CP1_ACID = 0, ///< Concentrate pump 1. CAL_DATA_CONC_PUMP_CP2_BICARB, ///< Concentrate pump 2. NUM_OF_CAL_DATA_DD_CONC_PUMPS ///< Number of DD concentrate pumps. } CAL_DATA_DD_PUMPS_T; /// DD acid concentrate enumeration. typedef enum DD_acid_concentrate { CAL_DATA_ACID_CONCENTRATE_1 = 0, ///< Acid concentrate 1. CAL_DATA_ACID_CONCENTRATE_2, ///< Acid concentrate 2. CAL_DATA_ACID_CONCENTRATE_3, ///< Acid concentrate 3. CAL_DATA_ACID_CONCENTRATE_4, ///< Acid concentrate 4. CAL_DATA_ACID_CONCENTRATE_5, ///< Acid concentrate 5. NUM_OF_CAL_DATA_ACID_CONCENTRATES ///< Number of acid concentrates. } CAL_DATA_DD_ACID_CONCENTRATES_T; /// DD bicarb concentrate enumeration. typedef enum DD_bicarb_concentrate { CAL_DATA_BICARB_CONCENTRATE_1 = 0, ///< Bicarb concentrate 1. CAL_DATA_BICARB_CONCENTRATE_2, ///< Bicarb concentrate 2. CAL_DATA_BICARB_CONCENTRATE_3, ///< Bicarb concentrate 3. CAL_DATA_BICARB_CONCENTRATE_4, ///< Bicarb concentrate 4. CAL_DATA_BICARB_CONCENTRATE_5, ///< Bicarb concentrate 5. NUM_OF_CAL_DATA_BICARB_CONCENTRATES ///< Number of bicarb concentrates. } CAL_DATA_DD_BICARB_CONCENTRATES_T; /// DD fans enumeration. typedef enum DD_fans { CAL_DATA_INLET_FAN_1 = 0, ///< Inlet fan 1. CAL_DATA_INLET_FAN_2, ///< Inlet fan 2. CAL_DATA_INLET_FAN_3, ///< Inlet fan 3. CAL_DATA_OUTLET_FAN_1, ///< Outlet fan 1. CAL_DATA_OUTLET_FAN_2, ///< Outlet fan 2. CAL_DATA_OUTLET_FAN_3, ///< Outlet fan 3. NUM_OF_CAL_DATA_FANS ///< Number of fans. } CAL_DATA_DD_FANS_T; /// DD scheduled runs enumeration. typedef enum DD_scheduled_runs { RUN_FLUSH = 0, ///< Flush run. RUN_HEAT_DISINFECT, ///< Heat disinfect run. RUN_CHEMICAL_DISINFECT, ///< Chemical disinfect run. NUM_OF_DD_SCHEDULED_RUNS ///< Number of DD scheduled runs. } SCHEDULED_DD_RUNS_T; /// DD usage info items typedef enum DD_usage_items { USAGE_INFO_RO_GEN_WATER = 0, ///< Usage info RO generated water. USAGE_INFO_BASIC_FLUSH, ///< Usage info basic flush. USAGE_INFO_CHEM_DIS_START, ///< Usage info chemcial disinfect start. USAGE_INFO_CHEM_DIS, ///< Usage info chemical disinfect complete. USAGE_INFO_CHEM_FLUSH, ///< Usage info chemical flush complete. USAGE_INFO_HEAT_DIS, ///< Usage info heat disinfect complete. USAGE_INFO_FILTER_FLUSH, ///< Usage info filter flush complete. USAGE_INFO_HEAT_DIS_ACTIVE_COOL, ///< Usage info heat disinfect active cool complete. NUM_OF_USAGE_INFO_ITEMS ///< Number of usage info items. } DD_USAGE_INFO_ITEMS_T; /// DD fill conductivity tests typedef enum DD_conductivity_ops { FILL_COND_NORMAL_OP = 0, ///< Fill conductivity normal operation. FILL_COND_ACID_TEST, ///< Fill conductivity acid test. FILL_COND_BICARB_TEST, ///< Fill conductivity bicarb test. NUM_OF_FILL_COND_TEST ///< Number of fill conductivity test. } DD_FILL_COND_OPS_T; #pragma pack(push, 1) /// Polynomial calibration structure typedef struct { F32 fourthOrderCoeff; ///< Fourth order coefficient. F32 thirdOrderCoeff; ///< Third order coefficient. F32 secondOrderCoeff; ///< Second order coefficient. F32 gain; ///< Gain. F32 offset; ///< Offset. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC for the polynomial calibration payload. } POLYNOMIAL_CAL_PAYLOAD_T; /// DD calibration sensor temperature compensation calibration structure typedef struct { F32 gain; ///< Gain. F32 coefficient; ///< Coefficient. F32 offset; ///< Offset. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC for the conductivity sensors temperature compensation cal payload. } DD_COND_SENSOR_TEMP_COMP_CAL_PAYLOAD_T; /// DD concentrate pumps calibration record typedef struct { POLYNOMIAL_CAL_PAYLOAD_T concentratePumps[ NUM_OF_CAL_DATA_DD_CONC_PUMPS ]; ///< DD concentrate pumps calibration data. } DD_CONC_PUMPS_CAL_RECORD_T; /// DD drain pump two-gain payload typedef struct { F32 voltage2SpeedRatio; ///< Voltage to speed ratio. F32 stepSpeed2FlowRatio; ///< Step speed to flow ratio. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC for the drain pump structure. } DD_DRAIN_PUMP_CAL_RECORD_T; /// DD RO pump calibration structure. typedef struct { F32 gain1Ratio; ///< RO pump gain1 ratio. F32 gain2Ratio; ///< RO pump gain2 ratio. F32 gain3Ratio; ///< RO pump gain3 ratio. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC for the DD RO pump calibration structure. } DD_RO_PUMP_CAL_RECORD_T; /// Pressure sensors calibration structure typedef struct { POLYNOMIAL_CAL_PAYLOAD_T pressureSensors[ NUM_OF_CAL_DATA_PRES_SENSORS ]; ///< Pressure sensors to calibrate. POLYNOMIAL_CAL_PAYLOAD_T reservedSpace[ PRES_SENSORS_RESERVED_SPACE_COUNT ]; ///< Reserved space for future pressure sensors. } DD_PRES_SENSORS_CAL_RECORD_T; /// Flow sensors calibration structure typedef struct { POLYNOMIAL_CAL_PAYLOAD_T flowSensors[ NUM_OF_CAL_DATA_FLOW_SENSORS ]; ///< Flow sensors to calibrate. POLYNOMIAL_CAL_PAYLOAD_T reservedSpace[ FLOW_SENSROS_RESERVED_SPACE_COUNT ]; ///< Reserved space for future flow sensors. } DD_FLOW_SENSORS_CAL_RECORD_T; /// Load cells calibration structure typedef struct { POLYNOMIAL_CAL_PAYLOAD_T loadCells[ NUM_OF_CAL_DATA_LOAD_CELLS ]; ///< Load cells to calibrate. } DD_LOAD_CELLS_CAL_RECORD_T; /// Temperature sensors calibration structure typedef struct { POLYNOMIAL_CAL_PAYLOAD_T tempSensors[ NUM_OF_CAL_DATA_TEMP_SENSORS ]; ///< Temperature sensors to calibrate. POLYNOMIAL_CAL_PAYLOAD_T reservedSpace[ TEMP_SENSORS_RESERVED_SPACE_COUNT ]; ///< Reserved space for future temperature sensors. } DD_TEMP_SENSORS_CAL_RECORD_T; /// Drain line volume calibration structure typedef struct { F32 volume; ///< DD Drain line volume. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC. } DD_DRAIN_LINE_VOLUME_T; /// DD pre RO purge volume calibration structure typedef struct { F32 pressure2FlowRatio; ///< Pressure to flow ratio. F32 volume; ///< Volume. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC. } DD_PRE_RO_PURGE_VOLUME_T; /// DD generic volumes (reserved space) typedef struct { F32 volume; ///< Volume. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC. } DD_GENERIC_VOLUME_DATA_T; /// DD generic volume record typedef struct { DD_GENERIC_VOLUME_DATA_T genericVolume[ GENERIC_VOL_RESERVED_SPACE_COUNT ]; ///< DD generic volume record. }DD_GENERIC_VOLUME_RECORD_T; /// DD acid concentrate typedef struct { F32 acidConcMixRatio; ///< Acid concentrate mix ratio. F32 acidFullBottleVolumeML; ///< Acid full bottle volume in milliliters. F32 acidConductivityUSPerCM; ///< Acid conductivity in uS/cm. F32 acidBottleTemperature; ///< Acid bottle temperature in C. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC. } DD_ACID_CONCENTRATE_T; /// DD bicarb concentrate typedef struct { F32 bicarbConcMixRatio; ///< Bicarb concentrate mix ratio. F32 bicarbStartVolumeML; ///< Bicarb start volume. F32 bicarbConductivityUSPerCM; ///< Bicarb conductivity in uS/cm. F32 bicarbBottleTemperature; ///< Bicarb bottle temperature in C. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC. } DD_BICARB_CONCENTRATE_T; /// DD acid concentrates typedef struct { DD_ACID_CONCENTRATE_T acidConcentrate[ NUM_OF_CAL_DATA_ACID_CONCENTRATES ]; ///< DD acid concentrates. } DD_ACID_CONCENTRATES_RECORD_T; /// DD bicarb concentrates typedef struct { DD_BICARB_CONCENTRATE_T bicarbConcentrate[ NUM_OF_CAL_DATA_BICARB_CONCENTRATES ]; ///< DD bicarb concentrates. } DD_BICARB_CONCENTRATES_RECORD_T; /// DD filter calibration record typedef struct { F32 reservedSpace1; ///< DD filter reserved space 1. F32 reservedSpace2; ///< DD filter reserved space 2. F32 reservedSpace3; ///< DD filter reserved space 3 U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC. } DD_FILTER_CAL_RECORD_T; /// DD filters calibration data structure typedef struct { DD_FILTER_CAL_RECORD_T roFilter; ///< RO filter. DD_FILTER_CAL_RECORD_T ultraFilter; ///< Ultra filter. DD_FILTER_CAL_RECORD_T sedimentFilter; ///< Sediment filter. DD_FILTER_CAL_RECORD_T carbonFilter; ///< Carbon filter. DD_FILTER_CAL_RECORD_T carbonPolishFilter; ///< Carbon polish filter. } DD_FILTERS_CAL_RECORD_T; /// DD fan calibration data structure typedef struct { F32 reservedSpace1; ///< Reserved space 1. F32 reservedSpace2; ///< Reserved space 2. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC. } DD_FAN_CAL_RECORD_T; /// DD fans calibration data structure typedef struct { DD_FAN_CAL_RECORD_T fans[ NUM_OF_CAL_DATA_FANS ]; ///< Fans calibration record. } DD_FANS_CAL_RECORD_T; /// HD accelerometer sensor calibration record typedef struct { F32 accelXOffset; ///< DD accelerometer X axis offset. F32 accelYOffset; ///< DD accelerometer Y axis offset. F32 accelZOffset; ///< DD accelerometer Z axis offset. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC for the DD accelerometer sensor. } DD_ACCEL_SENSOR_CAL_RECORD_T; /// DD heating calibration record typedef struct { F32 reservoirTempTauCPerMin; ///< Reservoir temperature Tau C/min. F32 ultrafilterTempTauCPerMin; ///< Ultrafilter temperature Tau C/min. U32 ultrafilterVolmL; ///< Ultrafilter volume in mL. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC for the reservoirs and UF record. } DD_HEATING_CAL_RECORD_T; /// DD acid and bicarb fill conductivity values typedef struct { F32 acidConduSPerCM; ///< Acid conductivity uS/cm. F32 bicarbConduSPerCM; ///< Bicarb conductivity uS/cm. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC for the acid/bicarb fill conductivity values. } DD_ACID_BICARB_FILL_COND_VALUES_T; /// DD acid and bicarb fill conductivity record typedef struct { DD_ACID_BICARB_FILL_COND_VALUES_T fillCondValues[ NUM_OF_ACID_TYPE ][ NUM_OF_FILL_COND_TEST ]; ///< Acid and bicarb fill conductivity values. } DD_CHEMICALS_FILL_COND_CAL_RECORD_T; /// DD systems record structure typedef struct { char topLevelPN[ MAX_TOP_LEVEL_PN_CHARS ]; ///< DD top level part number. char topLevelSN[ MAX_TOP_LEVEL_SN_CHARS ]; ///< DD top level serial number. U08 mfgLocation; ///< DD manufacturing location. U32 mfgDate; ///< DD manufacturing date. U16 crc; ///< CRC for the DD system record structure. } DD_SYSTEM_RECORD_T; /// DD scheduled runs record structure typedef struct { U32 lastRunTime; ///< DD scheduled run last run time. U16 crc; ///< CRC for the DD scheduled run record structure. } DD_SCHEDULED_RUN_T; /// DD scheduled run record structure typedef struct { DD_SCHEDULED_RUN_T ddScheduledRun[ NUM_OF_DD_SCHEDULED_RUNS ]; ///< DD scheduled run. } DD_SCHEDULED_RUN_RECORD_T; /// DD heaters information structure typedef struct { F32 averageFillFlow; ///< Average fill flow rate. } DD_HEATERS_RECORD_T; #ifndef _RELEASE_ /// DD software configurations typedef struct { U08 swConfigs[ NUM_OF_SW_CONFIGS ]; ///< Software configurations. } DD_SW_CONFIG_RECORD_T; #endif #pragma pack(pop) #pragma pack(push, 1) /// DD usage info structure. typedef struct { F32 roWaterGenTotalL; ///< Total RO water generated in liters. (Cannot be reset) F32 roWaterGenSinceLastServiceL; ///< RO water generated since last treatment in liters. U32 lastBasicFlushCompleteDateEpoch; ///< Last basic flush complete date in epoch. U32 lastChemDisStartDateEpoch; ///< Last chemical disinfect start date in epoch. U32 lastChemDisCompleteDateEpoch; ///< Last chemical disinfect complete date in epoch. U32 lastChemDisFlushCompleteDateEpoch; ///< Last chemical disinfect flush complete date in epoch. U32 lastHeatDisCompleteDateEpoch; ///< Last heat disinfect complete date in epoch. U32 lastHeatActiveCoolCompleteDateEpoch; ///< Last heat disinfect active cool complete date in epoch. U32 lastFilterFlushCompleteDateEpoch; ///< Last filter flush complete date in epoch. U32 lastResetTimeEpoch; ///< Last time the record was reset in epoch. U16 crc; ///< CRC for the DD usage info structure. } DD_USAGE_INFO_RECORD_T; /// DD service record structure typedef struct { U08 serviceLoc; ///< DD service location. U32 lastServiceEpochDate; ///< DD last service date in epoch. U32 serviceIntervalSeconds; ///< DD service interval in seconds. U32 lastResetTimeEpoch; ///< Last time the record was reset in epoch. U16 crc; ///< CRC for the DD service record structure. } DD_SERVICE_RECORD_T; #pragma pack(pop) // ********** public function prototypes ********** void initNVRecordsDD( void ); SELF_TEST_STATUS_T execNVDataMgmtSelfTest ( void ); PROCESS_RECORD_SPECS_T getProcessRecord( RECORD_JOBS_STATE_T job ); void benignPolynomialCalRecord( POLYNOMIAL_CAL_PAYLOAD_T* record ); BOOL setLastDisinfectDate( DD_USAGE_INFO_ITEMS_T disinfect, U32 epochTime ); BOOL setServiceTime( void ); BOOL getNVRecord2Driver( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, U08 numOfSnsrs2Check, ALARM_ID_T nvAlarm ); BOOL testSetNVRecordCRCOverride( U32 job, U16 crc ); void updateNVSelfTestResult( SELF_TEST_STATUS_T result ); void updateNVSelfTestState( NVDATAMGMT_SELF_TEST_STATE_T state ); void updateSelfTestReadRecordsFlag ( BOOL value ); #ifndef _RELEASE_ U08 getSoftwareConfigStatus( SOFTWARE_CONFIG_T config ); #endif /**@}*/ #endif /* _NV_RECORDS_DD_H_ */