Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08 -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -165,7 +165,6 @@ // Get the calibration values of acid and bicarb getNVRecord2Driver( GET_CAL_ACID_CONCENTREATES, (U08*)&acidConcentrateCalRecord, sizeof( acidConcentrateCalRecord ), NUMBER_OF_ACID_AND_BICARB_NV_DATA_TO_CHECK, ALARM_ID_DG_ACID_CONCENTRATE_INVALID_CAL_RECORD ); - getNVRecord2Driver( GET_CAL_BICARB_CONCENTRATES, (U08*)&bicarbConcentrateCalRecord, sizeof( bicarbConcentrateCalRecord ), NUMBER_OF_ACID_AND_BICARB_NV_DATA_TO_CHECK, ALARM_ID_DG_BICARB_CONCENTRATE_INVALID_CAL_RECORD ); } Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -r852597f3be2578331b0b947b38969b3c9553f889 -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 852597f3be2578331b0b947b38969b3c9553f889) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -409,7 +409,7 @@ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_COND_SENSOR_CHECK ) != SW_CONFIG_ENABLE_VALUE ) #endif { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CONDUCTIVITY_SENSOR_FAULT, sensorId ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CONDUCTIVITY_SENSOR_FAULT, sensorId ); // TODO for DVT testing } } } @@ -422,7 +422,7 @@ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_COND_SENSOR_CHECK ) != SW_CONFIG_ENABLE_VALUE ) #endif { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CONDUCTIVITY_SENSOR_FAULT, sensorId ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CONDUCTIVITY_SENSOR_FAULT, sensorId ); // TODO for DVT testing } } } @@ -500,7 +500,7 @@ { if ( ++internalErrorCount[ sensorId ] > MAX_CONDUCTIVITY_SENSOR_FAILURES ) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CONDUCTIVITY_SENSOR_FAULT, sensorId ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CONDUCTIVITY_SENSOR_FAULT, sensorId ); // TODO DVT } } else @@ -568,7 +568,7 @@ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_COND_SENSOR_CHECK ) != SW_CONFIG_ENABLE_VALUE ) #endif { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_CONDUCTIVITY_SENSOR_FAULT, CONDUCTIVITYSENSORS_CD1_SENSOR, CONDUCTIVITYSENSORS_CD2_SENSOR ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_CONDUCTIVITY_SENSOR_FAULT, CONDUCTIVITYSENSORS_CD1_SENSOR, CONDUCTIVITYSENSORS_CD2_SENSOR ); // TODO DVT } } } Index: firmware/App/Controllers/DialysateFlow.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/DialysateFlow.c (.../DialysateFlow.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Controllers/DialysateFlow.c (.../DialysateFlow.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -91,7 +91,6 @@ SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; BOOL calStatus = getNVRecord2Driver( GET_CAL_FLOW_SENSORS, (U08*)&flowSensorsCalRecord, sizeof( DG_FLOW_SENSORS_CAL_RECORD_T ), NUM_OF_CAL_DATA_FLOW_SENSORS, ALARM_ID_DG_FLOW_SENSORS_INVALID_CAL_RECORD ); - if ( TRUE == calStatus ) { result = SELF_TEST_STATUS_PASSED; Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -346,7 +346,7 @@ BOOL isRPMTooHigh = ( getDrainPumpMeasuredRPM() > MIN_DRAIN_PUMP_RPM ? TRUE : FALSE ); checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_RPM_OUT_OF_RANGE, FALSE, getDrainPumpMeasuredRPM(), MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE ); - checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_OFF_FAULT, isRPMTooHigh, getDrainPumpMeasuredRPM(), MIN_DRAIN_PUMP_RPM ); + checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_OFF_FAULT, isRPMTooHigh, getDrainPumpMeasuredRPM(), MIN_DRAIN_PUMP_RPM ); // TODO DVT // If the off fault alarm has become active, trigger the safety shutdown if ( TRUE == isAlarmActive( ALARM_ID_DRAIN_PUMP_OFF_FAULT ) ) @@ -364,13 +364,13 @@ BOOL isRPMOutOfRange = ( rpmDiff > MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE ? TRUE : FALSE ); checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_RPM_OUT_OF_RANGE, isRPMOutOfRange, getDrainPumpMeasuredRPM(), MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE ); - checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_OFF_FAULT, FALSE, getDrainPumpMeasuredRPM(), MIN_DRAIN_PUMP_RPM ); + checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_OFF_FAULT, FALSE, getDrainPumpMeasuredRPM(), MIN_DRAIN_PUMP_RPM ); // TODO DVT } else { // There are not out of range conditions, clear the alarms checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_RPM_OUT_OF_RANGE, FALSE, getDrainPumpMeasuredRPM(), MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE ); - checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_OFF_FAULT, FALSE, getDrainPumpMeasuredRPM(), MIN_DRAIN_PUMP_RPM ); + checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_OFF_FAULT, FALSE, getDrainPumpMeasuredRPM(), MIN_DRAIN_PUMP_RPM ); // TODO DVT } } Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08 -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -72,7 +72,7 @@ #define PRIMARY_HEATER_DUTY_CYCLE_PER_TEMPERATURE_C 0.03F ///< Primary heaters duty cycle per temperature in C. #define DATA_PUBLISH_COUNTER_START_COUNT 70 ///< Data publish counter start count. -static const F32 WATER_SPECIFIC_HEAT_DIVIDED_BY_MINUTES = 4184 / SEC_PER_MIN; ///< Water specific heat in J/KgC / 60. +static const F32 WATER_SPECIFIC_HEAT_DIVIDED_BY_MINUTES = 4184 / SEC_PER_MIN; ///< Water specific heat in J/KgC / 60. static const F32 PRIMARY_HEATERS_MAXIMUM_POWER_WATTS = 475 + 237.5F; ///< Primary heaters maximum power (main primary = 475W and small primary = 237.5W). /// Heaters exec states @@ -95,12 +95,11 @@ BOOL startHeaterSignal; ///< Heater start indication flag. BOOL isHeaterOn; ///< Heater on/off status flag. F32 dutycycle; ///< Heater duty cycle. - F32 targetROFlow; ///< Heater target flow. + F32 targetFlow; ///< Heater target flow. BOOL hasTargetTempChanged; ///< Heater target temperature change flag indicator. F32 heaterEfficiency; ///< Heater efficiency during the run. BOOL hasTargetBeenReached; ///< Heater flag to indicate whether the target temperature has been reached. - - F32 temporaryInterimTemperature; ///< TODO remove + F32 calculatedTemperature; ///< Heater calculated temperature. } HEATER_STATUS_T; static HEATER_STATUS_T heatersStatus[ NUM_OF_DG_HEATERS ]; ///< Heaters status. @@ -147,7 +146,7 @@ heatersStatus[ heater ].startHeaterSignal = FALSE; heatersStatus[ heater ].isHeaterOn = FALSE; heatersStatus[ heater ].dutycycle = 0.0; - heatersStatus[ heater ].targetROFlow = 0.0; + heatersStatus[ heater ].targetFlow = 0.0; heatersStatus[ heater ].hasTargetTempChanged = FALSE; heatersStatus[ heater ].heaterEfficiency = 1.0; // Assuming 100% efficiency during initialization until it is updated heatersStatus[ heater ].hasTargetBeenReached = FALSE; @@ -229,7 +228,7 @@ { if ( TRUE == heatersStatus[ heater ].hasTargetTempChanged ) { - status = TRUE; + status = TRUE; heatersStatus[ heater ].startHeaterSignal = TRUE; } } @@ -315,52 +314,6 @@ /*********************************************************************//** * @brief - * The handleTrimmerHeaterCmd handles a start trimmer heater command from the HD. - * It resets the trimmer heater's state and sets the duty cycle of the trimmer heater. - * @details Inputs: none - * @details Outputs: process command and send back response - * @param heaterCmdPtr pointer to heater command data record - * @return status - *************************************************************************/ -void handleTrimmerHeaterCmd( TRIMMER_HEATER_CMD_T *heaterCmdPtr ) // TODo remove this function -{ - DG_CMD_RESPONSE_T cmdResponse; - cmdResponse.commandID = DG_CMD_START_TRIMMER_HEATER; - cmdResponse.rejected = TRUE; - cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; - - if ( TRUE == heaterCmdPtr->startHeater ) - { - F32 tempTrimmerTarget = getTrimmerHeaterTargetTemperature(); - - if ( ( tempTrimmerTarget >= MINIMUM_TARGET_TEMPERATURE ) && ( tempTrimmerTarget <= MAXIMUM_TARGET_TEMPERATURE ) ) - { - cmdResponse.rejected = FALSE; - heatersStatus[ DG_TRIMMER_HEATER ].targetTemp = tempTrimmerTarget; - -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_TRIMMER_HEATER ) != SW_CONFIG_ENABLE_VALUE ) -#endif - { - heatersStatus[ DG_TRIMMER_HEATER ].startHeaterSignal = TRUE; - } - } - else - { - cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_INVALID_PARAMETER; - } - } - else - { - cmdResponse.rejected = FALSE; - stopHeater( DG_TRIMMER_HEATER ); - } - - sendCommandResponseMsg( &cmdResponse ); -} - -/*********************************************************************//** - * @brief * The execHeatersMonitor function monitors the status of the heaters. * The internal temperature sensors and the voltages of the heaters are * monitored. The flow is continuously checked and if there is no flow @@ -462,7 +415,7 @@ if ( DG_MODE_FILL == opMode ) { // If the previous average fill flow rate is 0, use the nominal target RO flow from the RO pump - targetFlow = ( getAvgFillFlowRate() - 0.0 > NEARLY_ZERO ? getAvgFillFlowRate() : getTargetROPumpFlowRateLPM() ); + targetFlow = ( getAvgFillFlowRateLPM() - 0.0 > NEARLY_ZERO ? getAvgFillFlowRateLPM() : getTargetROPumpFlowRateLPM() ); dutyCycle = calculatePrimaryHeaterDutyCycle( targetTemperature, inletTemperature, targetFlow, TRUE ); state = HEATER_EXEC_STATE_PRIMARY_CONTROL_TO_TARGET; } @@ -483,9 +436,8 @@ state = HEATER_EXEC_STATE_CONTROL_TO_DISINFECT_TARGET; } - // TODO remove once dialysate heating is done - heatersStatus[ DG_PRIMARY_HEATER ].temporaryInterimTemperature = targetTemperature; - // TODO remove + // Update the calculated target temperature + heatersStatus[ DG_PRIMARY_HEATER ].calculatedTemperature = targetTemperature; setHeaterDutyCycle( heater, dutyCycle ); @@ -569,15 +521,15 @@ HEATERS_STATE_T state = HEATER_EXEC_STATE_TRIMMER_RAMP_TO_TARGET; DG_HEATERS_T heater = DG_TRIMMER_HEATER; F32 currentTemperature = 0.0; - F32 targetFlow = getTargetDialysateFlowLPM(); + F32 targetFlowLPM = getTargetDialysateFlowLPM(); F32 dutyCycle = 0.0; F32 targetTemperature = heatersStatus[ heater ].targetTemp; DG_OP_MODE_T opMode = getCurrentOperationMode(); if ( ( DG_MODE_FILL == opMode ) || ( DG_MODE_GENE == opMode ) || ( DG_MODE_DRAI == opMode ) ) { currentTemperature = getTrimmerHeaterTargetTemperature(); - dutyCycle = calculateTrimmerHeaterDutyCycle( targetTemperature, currentTemperature, targetFlow, TRUE ); + dutyCycle = calculateTrimmerHeaterDutyCycle( targetTemperature, currentTemperature, targetFlowLPM, TRUE ); state = HEATER_EXEC_STATE_TRIMMER_CONTROL_TO_TARGET; } else if ( DG_MODE_HEAT == opMode ) @@ -586,11 +538,14 @@ // Most of the times the heater should be running at 100% duty cycle since the target temperature is 81 C and // it is far from the inlet temperature. currentTemperature = getTemperatureValue( (U32)TEMPSENSORS_HEAT_DISINFECT ); - targetFlow = getTargetROPumpFlowRateLPM(); - dutyCycle = calculateTrimmerHeaterDutyCycle( targetTemperature, currentTemperature, targetFlow, FALSE ); + targetFlowLPM = getTargetROPumpFlowRateLPM(); + dutyCycle = calculateTrimmerHeaterDutyCycle( targetTemperature, currentTemperature, targetFlowLPM, FALSE ); state = HEATER_EXEC_STATE_CONTROL_TO_DISINFECT_TARGET; } + // Update the calculated target temperature + heatersStatus[ DG_TRIMMER_HEATER ].calculatedTemperature = currentTemperature; + setHeaterDutyCycle( heater, dutyCycle ); return state; @@ -734,7 +689,7 @@ // Check the boundaries of the calculated duty cycle dutyCycle = MIN( dutyCycle, HEATERS_MAX_DUTY_CYCLE ); - dutyCycle = MIN( dutyCycle, HEATERS_MIN_DUTY_CYCLE ); + dutyCycle = MAX( dutyCycle, HEATERS_MIN_DUTY_CYCLE ); return dutyCycle; } @@ -753,15 +708,13 @@ { BOOL status = FALSE; F32 targetFlow = ( DG_PRIMARY_HEATER == heater ? getTargetROPumpFlowRateLPM() : getTargetDialysateFlowLPM() ); - BOOL hasFlowChanged = ( fabs( targetFlow - heatersStatus[ heater ].targetROFlow ) > NEARLY_ZERO ? TRUE : FALSE ); + BOOL hasFlowChanged = ( fabs( targetFlow - heatersStatus[ heater ].targetFlow ) > NEARLY_ZERO ? TRUE : FALSE ); // Check if the target flow has changed or the target temperature has changed. if ( ( TRUE == hasFlowChanged ) || ( TRUE == heatersStatus[ heater ].hasTargetTempChanged ) ) { - status = TRUE; - - // Moving back from control to target to ramp. - heatersStatus[ heater ].targetROFlow = targetFlow; + status = TRUE; + heatersStatus[ heater ].targetFlow = targetFlow; heatersStatus[ heater ].hasTargetTempChanged = FALSE; } @@ -820,22 +773,19 @@ if ( ++dataPublicationTimerCounter >= getU32OverrideValue( &heatersDataPublishInterval ) ) { HEATERS_DATA_T data; - - data.mainPrimayHeaterDC = heatersStatus[ DG_PRIMARY_HEATER ].dutycycle * 100.0; + data.mainPrimayHeaterDC = heatersStatus[ DG_PRIMARY_HEATER ].dutycycle * 100.0; // The duty cycle of the primary heater is divided into 2 parts and is applied to main // and small primary heaters. So they are always the same. - data.smallPrimaryHeaterDC = heatersStatus[ DG_PRIMARY_HEATER ].dutycycle * 100.0; - data.trimmerHeaterDC = heatersStatus[ DG_TRIMMER_HEATER ].dutycycle * 100.0; - data.primaryTargetTemp = heatersStatus[ DG_PRIMARY_HEATER ].targetTemp; - data.trimmerTargetTemp = heatersStatus[ DG_TRIMMER_HEATER ].targetTemp; - data.primaryHeaterState = heatersStatus[ DG_PRIMARY_HEATER ].state; - data.trimmerHeaterState = heatersStatus[ DG_TRIMMER_HEATER ].state; - data.primaryEfficiency = heatersStatus[ DG_PRIMARY_HEATER ].heaterEfficiency * 100; + data.smallPrimaryHeaterDC = heatersStatus[ DG_PRIMARY_HEATER ].dutycycle * 100.0; + data.trimmerHeaterDC = heatersStatus[ DG_TRIMMER_HEATER ].dutycycle * 100.0; + data.primaryTargetTemp = heatersStatus[ DG_PRIMARY_HEATER ].targetTemp; + data.trimmerTargetTemp = heatersStatus[ DG_TRIMMER_HEATER ].targetTemp; + data.primaryHeaterState = heatersStatus[ DG_PRIMARY_HEATER ].state; + data.trimmerHeaterState = heatersStatus[ DG_TRIMMER_HEATER ].state; + data.primaryEfficiency = heatersStatus[ DG_PRIMARY_HEATER ].heaterEfficiency * 100; + data.primaryCalcTargetTemp = heatersStatus[ DG_PRIMARY_HEATER ].calculatedTemperature; + data.trimmerCalcCurrentTemp = heatersStatus[ DG_TRIMMER_HEATER ].calculatedTemperature; - data.dialysateTargetLPM = getTargetDialysateFlowLPM(); - data.interimTargetTemp = heatersStatus[ DG_PRIMARY_HEATER ].temporaryInterimTemperature; - data.targetHeaterFlowLPM = heatersStatus[ DG_PRIMARY_HEATER ].targetROFlow; - broadcastData( MSG_ID_DG_HEATERS_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( HEATERS_DATA_T ) ); dataPublicationTimerCounter = 0; Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u -r669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08 -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08) +++ firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -60,10 +60,8 @@ U32 primaryHeaterState; ///< Primary heater state U32 trimmerHeaterState; ///< Trimmer heater state F32 primaryEfficiency; ///< Primary heater efficiency - - F32 dialysateTargetLPM; ///< TODO remove this variable later - F32 interimTargetTemp; ///< TODO remove this variable later - F32 targetHeaterFlowLPM; ///< TODO remove this variable later + F32 primaryCalcTargetTemp; ///< Primary heater calculated target temperature + F32 trimmerCalcCurrentTemp; ///< Trimmer heater calculated current temperature } HEATERS_DATA_T; // ********** Public function prototypes ********** @@ -80,8 +78,6 @@ void execHeaters( void ); -void handleTrimmerHeaterCmd( TRIMMER_HEATER_CMD_T *heaterCmdPtr ); // handle trimmer heater control command from HD - void execHeatersMonitor( void ); void resetHeatersEfficiency( void ); Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -274,7 +274,7 @@ SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; BOOL calStatus = getNVRecord2Driver( GET_CAL_LOAD_CELL_SENSORS, (U08*)&loadCellsCalRecord, sizeof( DG_LOAD_CELLS_CAL_RECORD_T ), - NUM_OF_CAL_DATA_LOAD_CELLS, ALARM_ID_DG_LOAD_CELLS_INVALID_CAL_RECORD ); + NUM_OF_CAL_DATA_LOAD_CELLS, ALARM_ID_DG_LOAD_CELLS_INVALID_CAL_RECORD ); if ( TRUE == calStatus ) { @@ -299,9 +299,8 @@ void tareLoadCell( LOAD_CELL_ID_T loadCellID ) { BOOL isWeightOutOfRange = FALSE; + F32 weight = getLoadCellSmallFilteredWeight( loadCellID ); - F32 weight = getLoadCellSmallFilteredWeight( loadCellID ); - // Check if the load cell is being tared for the first time if ( fabs( loadcells[ loadCellID ].autoCalOffset ) < NEARLY_ZERO ) { @@ -312,7 +311,7 @@ } else { - isWeightOutOfRange = ( fabs( weight ) > MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS ? TRUE : FALSE ); + isWeightOutOfRange = ( /*fabs*/( weight ) > MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS ? TRUE : FALSE ); } if ( FALSE == isWeightOutOfRange ) Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -225,7 +225,7 @@ { case PRESSURE_SELF_TEST_STATE_START: getNVRecord2Driver( GET_CAL_PRESSURE_SENOSRS, (U08*)&pressuresCalRecord, sizeof( DG_PRES_SENSORS_CAL_RECORD_T ), - NUM_OF_CAL_DATA_PRES_SENSORS, ALARM_ID_DG_PRESSURE_SENSORS_INVALID_CAL_RECORD ); + NUM_OF_CAL_DATA_PRES_SENSORS, ALARM_ID_NO_ALARM ); pressuresSelfTestState = PRESSURE_TEST_STATE_IN_PROGRESS; pressuresSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; break; @@ -291,7 +291,7 @@ if ( TRUE == isNewCalibrationRecordAvailable() ) { getNVRecord2Driver( GET_CAL_PRESSURE_SENOSRS, (U08*)&pressuresCalRecord, sizeof( DG_PRES_SENSORS_CAL_RECORD_T ), - NUM_OF_CAL_DATA_PRES_SENSORS, ALARM_ID_DG_PRESSURE_SENSORS_INVALID_CAL_RECORD ); + NUM_OF_CAL_DATA_PRES_SENSORS, ALARM_ID_NO_ALARM ); } // filter every 200ms Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -rf91baac9704a90ab0fea1dd05e11833ffc5a5a4e -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision f91baac9704a90ab0fea1dd05e11833ffc5a5a4e) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -276,6 +276,8 @@ tempSensors[ TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR ].conversionCoeff = conversionCoeff; tempSensors[ TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR ].maxAllowedTemperature = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + tempSensors[ TEMPSENSORS_BAROMETRIC_TEMP_SENSOR ].maxAllowedTemperature = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + // Persistent alarms for inlet water high/low temperature initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD ); @@ -765,6 +767,7 @@ break; case TEMPSENSORS_BAROMETRIC_TEMP_SENSOR: + temperature = 30.0; break; default: Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08 -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -95,7 +95,7 @@ U32 fillSampleCounter; ///< Fill flow sample counter. F32 fillTemperatureRunningSum; ///< Fill temperature running sum. F32 fillTemperatureAverage; ///< Fill temperature average value. - F32 fillFlowRateAverage; ///< Fill flow average value. + F32 fillFlowRateAverageLPM; ///< Fill flow average value in L/min. F32 fillLastTemperature; ///< Fill last temperature value. BOOL isThisFirstFill; ///< Fill flag to indicate whether it is the first fill or not. } FILL_CONDITION_STATUS_T; @@ -284,15 +284,15 @@ /*********************************************************************//** * @brief - * The getAvgFillFlowRate function returns the average fill flow rate in + * The getAvgFillFlowRateLPM function returns the average fill flow rate in * each fill. * @details Inputs: none - * @details Outputs: fillFlowRateAverage + * @details Outputs: fillFlowRateAverageLPM * @return average of the fill flow rate *************************************************************************/ -F32 getAvgFillFlowRate( void ) +F32 getAvgFillFlowRateLPM( void ) { - return fillStatus.fillFlowRateAverage; + return fillStatus.fillFlowRateAverageLPM; } /*********************************************************************//** @@ -336,7 +336,7 @@ getNVRecord2Driver( GET_INF_HEATERS_RECORD, (U08*)&heaterInfo, sizeof( DG_HEATERS_RECORD_T ), 0, ALARM_ID_NO_ALARM ); // If the data in the NV data management was not initialized properly, set it to 0 otherwise, set the average flow rate - fillStatus.fillFlowRateAverage = ( heaterInfo.averageFillFlow < NEARLY_ZERO ? 0.0 : heaterInfo.averageFillFlow ); + fillStatus.fillFlowRateAverageLPM = ( heaterInfo.averageFillFlow < NEARLY_ZERO ? 0.0 : heaterInfo.averageFillFlow ); fillStatus.fillFlowRateRunningSum = 0.0; fillStatus.fillSampleCounter = 0; fillStatus.fillTemperatureRunningSum = 0.0; @@ -772,7 +772,7 @@ // Done with this fill. Calculate the average fill flow rate and average temperature // Reset the variables for the next fill // Get the last fill temperature before leaving to Generation Idle - fillStatus.fillFlowRateAverage = fillStatus.fillFlowRateRunningSum / (F32)fillStatus.fillSampleCounter; + fillStatus.fillFlowRateAverageLPM = fillStatus.fillFlowRateRunningSum / (F32)fillStatus.fillSampleCounter; fillStatus.fillTemperatureAverage = fillStatus.fillTemperatureRunningSum / (F32)fillStatus.fillSampleCounter; fillStatus.fillFlowRateRunningSum = 0.0; fillStatus.fillTemperatureRunningSum = 0.0; @@ -937,7 +937,7 @@ { DG_HEATERS_RECORD_T record; - record.averageFillFlow = fillStatus.fillFlowRateAverage; + record.averageFillFlow = fillStatus.fillFlowRateAverageLPM; setHeatersInfoRecord( (U08*)&record, sizeof( DG_HEATERS_RECORD_T ) ); } Index: firmware/App/Modes/ModeFill.h =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Modes/ModeFill.h (.../ModeFill.h) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Modes/ModeFill.h (.../ModeFill.h) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -58,7 +58,7 @@ U32 execFillMode( void ); // execute the fill mode state machine (call from OperationModes) -F32 getAvgFillFlowRate( void ); +F32 getAvgFillFlowRateLPM( void ); F32 getAvgFillTemperature( void ); Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08 -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -669,11 +669,11 @@ if ( tgtTotalFlowLPM > 0 ) { - heatersTempCalc.tempFillMixAvgTrimmer = ( fillROAvgActual * ( tgtTotalFlowLPM / targetROFlowLPM ) ) - - ( ENVIRONMENT_TEMPERATURE_C * ( tgtAicdFlowLPM / targetROFlowLPM ) ) - + heatersTempCalc.tempFillMixAvgTrimmer = ( fillROAvgActual * ( tgtTotalFlowLPM / targetROFlowLPM ) ) + + ( ENVIRONMENT_TEMPERATURE_C * ( tgtAicdFlowLPM / targetROFlowLPM ) ) + ( ENVIRONMENT_TEMPERATURE_C * ( tgtBicarbFlowLPM / targetROFlowLPM ) ); - heatersTempCalc.tempRsrvr0ActualTrimmer = ( ( heatingConstsCalRecord.ultrafilterVolmL / targetFillVolML ) * tempUFFill ) + + heatersTempCalc.tempRsrvr0ActualTrimmer = ( ( heatingConstsCalRecord.ultrafilterVolmL / targetFillVolML ) * tempUFFill ) + ( ( ( targetFillVolML - heatingConstsCalRecord.ultrafilterVolmL ) / targetFillVolML ) * heatersTempCalc.tempFillMixAvgTrimmer ); Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -655,7 +655,7 @@ if ( TRUE == didTimeout( timeOfLastHDCheckIn, HD_COMM_TIMEOUT_IN_MS ) ) { hdCommunicationStatus.data = FALSE; - activateAlarmNoData( ALARM_ID_HD_COMM_TIMEOUT ); + activateAlarmNoData( ALARM_ID_HD_COMM_TIMEOUT ); // TODO DVT } } Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08 -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 669f36cf32c3b500aa2fd5b08c58ee5e6b2e7f08) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -1103,8 +1103,7 @@ if ( TRUE == heaterCmd.startHeater ) { - F32 temp = getTrimmerHeaterTargetTemperature(); - BOOL isSet = setHeaterTargetTemperature( DG_TRIMMER_HEATER, temp ); + BOOL isSet = setHeaterTargetTemperature( DG_TRIMMER_HEATER, heaterCmd.targetTemp ); if ( TRUE == isSet ) { @@ -1127,8 +1126,6 @@ } sendCommandResponseMsg( &cmdResponse ); - - //handleTrimmerHeaterCmd( &heaterCmd ); TODO remove } sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DG_2_HD, result ); Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -r22176ce95e49213c48454f34ddf5d29b8109f2cb -re8c019d3d43b517cabfdfe75fa5d03749d036018 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 22176ce95e49213c48454f34ddf5d29b8109f2cb) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision e8c019d3d43b517cabfdfe75fa5d03749d036018) @@ -87,10 +87,12 @@ // Monitor DG voltages execVoltagesMonitor(); +#endif // run operation mode state machine execOperationModes(); +#ifndef BOARD_WITH_NO_HARDWARE // Monitor thermistors state machine execThermistors();