Index: firmware/App/Services/NVRecordsDD.h =================================================================== diff -u -r66b03c4d4724df628b4fd175567880f23eb35259 -r63c3a65e681810f037718377c6ed5a28c897d0ca --- firmware/App/Services/NVRecordsDD.h (.../NVRecordsDD.h) (revision 66b03c4d4724df628b4fd175567880f23eb35259) +++ firmware/App/Services/NVRecordsDD.h (.../NVRecordsDD.h) (revision 63c3a65e681810f037718377c6ed5a28c897d0ca) @@ -29,283 +29,288 @@ /** * @defgroup NVRecordsDD NVRecordsDD * @brief + * This module handles Non-Volatile data management including record + * validation, self-test execution, and update of system, service, + * usage, institutional, and calibration records. It ensures data + * integrity using CRC checks and updates invalid records with + * default values. * * @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). +#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_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 recordFlashAddress; ///< Jobs spec start address. - U32 sizeofRecord; ///< Jobs spec size of job. - 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). + U32 recordFlashAddress; ///< Jobs spec start address. + U32 sizeofRecord; ///< Jobs spec size of job. + 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; /// DD available NV data to get typedef enum DD_nv_commands { - GET_CAL_PRESSURE_SENOSRS = 0, ///< Get pressure sensors calibration data. - GET_CAL_TEMP_SENSORS, ///< Get temperature sensors calibration data. - GET_CAL_CONCENTRATE_PUMPS_RECORD, ///< Get concentrate pumps calibration record. + GET_CAL_PRESSURE_SENOSRS = 0, ///< Get pressure sensors calibration data. + GET_CAL_TEMP_SENSORS, ///< Get temperature sensors calibration data. + GET_CAL_CONCENTRATE_PUMPS_RECORD, ///< Get concentrate pumps calibration record. GET_CAL_DIALYSATE_PUMPS_RECORD, - 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_FILL_CONDUCTIVITIES_RECORD, ///< Get fill conductivities record. + 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_FILL_CONDUCTIVITIES_RECORD, ///< Get fill conductivities record. GET_CAL_BLOOD_LEAK_SENSOR, - GET_SYS_RECORD, ///< Get system record. - GET_SRV_RECORD, ///< Get service record. - GET_INSTITUTIONAL_RECORD, ///< Get institutional record. - GET_USAGE_RECORD, ///< Get usage record. - NUM_OF_NV_DD_DATA ///< Number of non-volatile data. + GET_SYS_RECORD, ///< Get system record. + GET_SRV_RECORD, ///< Get service record. + GET_INSTITUTIONAL_RECORD, ///< Get institutional record. + GET_USAGE_RECORD, ///< Get usage record. + NUM_OF_NV_DD_DATA ///< Number of non-volatile data. } NV_DATA_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_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_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 scheduled runs enumeration. typedef enum DD_scheduled_runs { - RUN_FLUSH = 0, ///< Flush run. - RUN_HEAT_DISINFECT, ///< Heat disinfect run. - NUM_OF_DD_SCHEDULED_RUNS ///< Number of DD scheduled runs. + RUN_FLUSH = 0, ///< Flush run. + RUN_HEAT_DISINFECT, ///< Heat 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_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. + USAGE_INFO_RO_GEN_WATER = 0, ///< Usage info RO generated water. + USAGE_INFO_BASIC_FLUSH, ///< Usage info basic flush. + 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. + 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. + 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; /// Pressure sensors calibration structure typedef struct { - POLYNOMIAL_CAL_PAYLOAD_T pressureSensors[ NUM_OF_PRESSURE_SENSORS ]; ///< Pressure sensors to calibrate. + POLYNOMIAL_CAL_PAYLOAD_T pressureSensors[ NUM_OF_PRESSURE_SENSORS ]; ///< Pressure sensors to calibrate. } DD_PRES_SENSORS_CAL_RECORD_T; /// Temperature sensors calibration structure typedef struct { - POLYNOMIAL_CAL_PAYLOAD_T tempSensors[ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature sensors to calibrate. + POLYNOMIAL_CAL_PAYLOAD_T tempSensors[ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature sensors to calibrate. } DD_TEMP_SENSORS_CAL_RECORD_T; /// DD concentrate pumps calibration record typedef struct { - POLYNOMIAL_CAL_PAYLOAD_T concentratePumps[ NUM_OF_CONCENTRATE_PUMPS ]; ///< DD concentrate pumps calibration data. + POLYNOMIAL_CAL_PAYLOAD_T concentratePumps[ NUM_OF_CONCENTRATE_PUMPS ]; ///< DD concentrate pumps calibration data. } DD_CONC_PUMPS_CAL_RECORD_T; /// DD dialysate pump calibration structure typedef struct { - float targetPumpSpeed[ NUM_OF_DIALYSATE_PUMPS ]; ///< Target Pump Speed - U32 calibrationTime; ///< Calibration time. - U16 crc; ///< CRC for the polynomial calibration payload. + float targetPumpSpeed[ NUM_OF_DIALYSATE_PUMPS ]; ///< Target Pump Speed + U32 calibrationTime; ///< Calibration time. + U16 crc; ///< CRC for the polynomial calibration payload. } DD_DIALYSATE_PUMP_DATA_T; /// DD dialysate pumps calibration record typedef struct { - DD_DIALYSATE_PUMP_DATA_T dialysatePump[ NUM_OF_DIALYSATE_PUMPS ]; ///< DD dialysate pumps calibration data. + DD_DIALYSATE_PUMP_DATA_T dialysatePump[ NUM_OF_DIALYSATE_PUMPS ]; ///< DD dialysate pumps calibration data. } DD_DIALYSATE_PUMPS_CAL_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. + 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. + 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_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_CONCENTRATE_T bicarbConcentrate[ NUM_OF_CAL_DATA_BICARB_CONCENTRATES ]; ///< DD bicarb concentrates. } DD_BICARB_CONCENTRATES_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. + 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 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. + 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_ACID_BICARB_FILL_COND_VALUES_T fillCondValues[ NUM_OF_ACID_TYPE ][ NUM_OF_FILL_COND_TEST ]; ///< Acid and bicarb fill conductivity values. } DD_CONCENTRATES_COND_CAL_RECORD_T; /// DD blood leak calibration structure typedef struct { - U16 setPoint; ///< Blood leak sensor set point. - U32 calibrationTime; ///< Calibration time. - U16 crc; ///< CRC for the HD blood leak calibration payload. + U16 setPoint; ///< Blood leak sensor set point. + U32 calibrationTime; ///< Calibration time. + U16 crc; ///< CRC for the HD blood leak calibration payload. } DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T; /// DD systems record structure typedef struct { - BOOL isROFeatured; ///< True : RO featured. False : RO de-featured. - BOOL isR0FeaturedBoostPump; ///< True : RO featured with boost pump. False : RO featured without the boost pump. - 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. + BOOL isROFeatured; ///< True : RO featured. False : RO de-featured. + BOOL isR0FeaturedBoostPump; ///< True : RO featured with boost pump. False : RO featured without the boost pump. + 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 service record structure typedef struct { - BOOL isHDFOnlineFluid; ///< True : HDF Online Fluid feature is available, False if not. - U32 waterRecovey; ///< Low : 0, Medium : 1, High : 2. - 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. + BOOL isHDFOnlineFluid; ///< True : HDF Online Fluid feature is available, False if not. + U32 waterRecovey; ///< Low : 0, Medium : 1, High : 2. + 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; /// DD institutional record structure typedef struct { - U32 minDialysateFlowMLPM; ///< Min dialysate flow in mL/min. - U32 maxDialysateFlowMLPM; ///< Max dialysate flow in mL/min. - F32 minDialysateTempC; ///< Min dialysate temperature in C. - F32 maxDialysateTempC; ///< Max dialysate temperature in C. - F32 acidConcentrate; ///< acid concentrate - F32 bicarbCartridgeSizeG; ///< bicarbonate cartridge size in grams. - F32 minSodiumMEQL; ///< Min sodium in mEq/L - F32 maxSodiumMEQL; ///< Max sodium in mEq/L - F32 minBicarbonateMEQL; ///< Min bicarbonate in mEq/L - F32 maxBicarbonateMEQL; ///< Max bicarbonate in mEq/L - U32 minRORejectionRatioPCT; ///< Min RO rejection ratio in percent. - U32 disinfectionFrequency; ///< Disinfection days between cycles. - F32 disinfectionCycleTime; ///< Disinfection Cycle Time - F32 minInletWaterCondAlarmLimitUSPCM; ///< Min inlet water conductivity alarm limit in uS/cm. - F32 maxInletWaterCondAlarmLimitUSPCM; ///< Max inlet water conductivity alarm limit in uS/cm. - F32 acidConcentrateJugSizeL; ///< acid concentrate jug size in Liters - F32 minAcidAlarmLimitPCT; ///< Min acid alarm limit in percent. - F32 minBicarbAlarmLimitPCT; ///< Min bicarbonate alarm limit in percent. - U32 postTreatDrainOption; ///< Dialysate Post Treatment Drain Option  - U32 postTreatDryBicarbOption; ///< Dry Bicarbonate Post Treatment Option  - U32 calibrationTime; ///< Calibration time in epoch. - U16 crc; ///< CRC of the institutional record. + U32 minDialysateFlowMLPM; ///< Min dialysate flow in mL/min. + U32 maxDialysateFlowMLPM; ///< Max dialysate flow in mL/min. + F32 minDialysateTempC; ///< Min dialysate temperature in C. + F32 maxDialysateTempC; ///< Max dialysate temperature in C. + F32 acidConcentrate; ///< acid concentrate + F32 bicarbCartridgeSizeG; ///< bicarbonate cartridge size in grams. + F32 minSodiumMEQL; ///< Min sodium in mEq/L + F32 maxSodiumMEQL; ///< Max sodium in mEq/L + F32 minBicarbonateMEQL; ///< Min bicarbonate in mEq/L + F32 maxBicarbonateMEQL; ///< Max bicarbonate in mEq/L + U32 minRORejectionRatioPCT; ///< Min RO rejection ratio in percent. + U32 disinfectionFrequency; ///< Disinfection days between cycles. + F32 disinfectionCycleTime; ///< Disinfection Cycle Time + F32 minInletWaterCondAlarmLimitUSPCM; ///< Min inlet water conductivity alarm limit in uS/cm. + F32 maxInletWaterCondAlarmLimitUSPCM; ///< Max inlet water conductivity alarm limit in uS/cm. + F32 acidConcentrateJugSizeL; ///< acid concentrate jug size in Liters + F32 minAcidAlarmLimitPCT; ///< Min acid alarm limit in percent. + F32 minBicarbAlarmLimitPCT; ///< Min bicarbonate alarm limit in percent. + U32 postTreatDrainOption; ///< Dialysate Post Treatment Drain Option  + U32 postTreatDryBicarbOption; ///< Dry Bicarbonate Post Treatment Option  + U32 calibrationTime; ///< Calibration time in epoch. + U16 crc; ///< CRC of the institutional record. } DD_INSTITUTIONAL_RECORD_T; /// 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 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. + 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 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; #pragma pack(pop) @@ -319,12 +324,11 @@ 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 getNVRecord2Driver( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, + U08 numOfSnsrs2Check, ALARM_ID_T nvAlarm ); void updateNVSelfTestResult( SELF_TEST_STATUS_T result ); void updateNVSelfTestState( NVDATAMGMT_SELF_TEST_STATE_T state ); void updateSelfTestReadRecordsFlag ( BOOL value ); - BOOL testSetNVRecordCRCOverride( U32 job, U16 crc ); /**@}*/