Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -r622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -163,10 +163,9 @@ * @brief * The setDrainPumpTargetSpeed function sets a new target RPM for the * drain pump. - * @details Inputs: drainPumpDAC, targetDrainPumpSpeed, drainPumpControlMode, - * drainPumpControlModeSet - * @details Outputs: drainPumpDAC, targetDrainPumpSpeed, drainPumpControlMode, - * drainPumpControlModeSet + * @details Inputs: none + * @details Outputs: drainPumpDAC, targetDrainPumpRPM, drainPumpControlMode, + * drainPumpControlModeSet, signalNewRPMRequest * @param rpm new drain pump target RPM * @return TRUE if new target RPM is set, FALSE if not *************************************************************************/ @@ -292,7 +291,7 @@ * The signalDrainPumpHardStop function stops the Drain pump immediately. * @details Inputs: none * @details Outputs: targetDrainPumpSpeed, drainPumpState, drainPumpControlMode, - * hasClosedLoopBeenRequested, drainControlTimerCounter, isRMPNonZeroInClosedLoop + * hasClosedLoopBeenRequested, drainControlTimerCounter * @return none *************************************************************************/ void signalDrainPumpHardStop( void ) @@ -313,8 +312,8 @@ * The execDrainPumpMonitor function executes the drain pump monitor. * RPM = ( 1 / ADC ) * conversion coefficient. * ADC = ( 1 / RPM ) * conversion coefficient. - * @details Inputs: currentDrainPumpRPM - * @details Outputs: currentDrainPumpRPM + * @details Inputs: drainPumpControlModeSet, drainPumpState + * @details Outputs: drainPumpMeasuredRPM * @return none *************************************************************************/ void execDrainPumpMonitor( void ) @@ -522,9 +521,8 @@ * @brief * The handleDrainPumpOffState function handles the drain pump off state of * the drain pump controller state machine. - * @details Inputs: drainPumpControlModeSet, drainPumpDACSet, drainPumpDAC - * hasClosedLoopBeenRequested - * @details Outputs: drainPumpDACSet + * @details Inputs: drainPumpControlModeSet, hasClosedLoopBeenRequested * + * @details Outputs: drainPumpDACSet, signalNewRPMRequest * @return next state for the controller state machine *************************************************************************/ static DRAIN_PUMP_STATE_T handleDrainPumpOffState( void ) Index: firmware/App/Controllers/Fans.c =================================================================== diff -u -r622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Controllers/Fans.c (.../Fans.c) (revision 622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94) +++ firmware/App/Controllers/Fans.c (.../Fans.c) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -88,9 +88,9 @@ * @brief * The initFans function initializes the fans module. * @details Inputs: none - * @details Outputs: fansExecState, fansStatus, fansControlCounter, - * fansPublishCounter, fansMonitorCounter, isPOSTComplete, hasAlarmBeenRaised, - * rpmAlarmStartTimer, fansStatus + * @details Outputs: fansExecState, fansControlCounter, fansPublishCounter, + * fansMonitorCounter, isPOSTComplete, hasAlarmBeenRaised, rpmAlarmStartTimer, + * fansStatus * @return none *************************************************************************/ void initFans( void ) @@ -469,8 +469,8 @@ * @brief * The publishFansData function publishes the fans data at the specified * time interval. - * @details Inputs: dataPublishCounter - * @details Outputs: dataPublishCounter + * @details Inputs: fansPublishCounter, fansPublishInterval + * @details Outputs: fansPublishCounter * @return none *************************************************************************/ static void publishFansData( void ) @@ -576,7 +576,7 @@ /*********************************************************************//** * @brief * The testResetFanRPMOverride function resets the override value of a fan. - * @details Inputs: none + * @details Inputs: fansStatus * @details Outputs: fansStatus * @param fanId fan index * @return TRUE if override successful, FALSE if not Index: firmware/App/Controllers/FluidLeak.c =================================================================== diff -u -r622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Controllers/FluidLeak.c (.../FluidLeak.c) (revision 622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94) +++ firmware/App/Controllers/FluidLeak.c (.../FluidLeak.c) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -132,9 +132,9 @@ // Publish fluid leak state on interval if ( ++fluidLeakStatePublicationTimerCounter >= getU32OverrideValue( &fluidLeakStatePublishInterval ) ) { - FLUID_LEAK_STATES_T state = getFluidLeakState(); + U32 state = (U32)getFluidLeakState(); - broadcastData( MSG_ID_DG_FLUID_LEAK_STATE, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&state, sizeof( FLUID_LEAK_STATES_T ) ); + broadcastData( MSG_ID_DG_FLUID_LEAK_STATE, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&state, sizeof( U32 ) ); fluidLeakStatePublicationTimerCounter = 0; } } Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r26f63d0260a3c35277e3e6dbca3573c253775318 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 26f63d0260a3c35277e3e6dbca3573c253775318) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -356,7 +356,8 @@ *************************************************************************/ void execHeatersMonitor( void ) { - /*DG_HEATERS_T heater; +#ifdef 0 // This code is disabled to prevent any heaters monitoring while the driver in in development. + DG_HEATERS_T heater; #ifndef IGNORE_HEATERS_MONITOR checkPrimaryHeaterTempSensors(); @@ -399,10 +400,10 @@ heatersStatus[ heater ].heaterOnWithNoFlowTimer = getMSTimerCount(); } } - }*/ + } - // TODO un-comment the heaters voltage - //monitorHeatersVoltage(); + monitorHeatersVoltage(); +#endif // Check for data publication publishHeatersData(); @@ -506,8 +507,6 @@ HEATERS_STATE_T state = HEATER_EXEC_STATE_PRIMARY_CONTROL_TO_TARGET; DG_HEATERS_T heater = DG_PRIMARY_HEATER; - // TODO do we need any control to maintain the temperature? - if ( TRUE == haveHeaterControlConditionsChanged( heater ) ) { state = HEATER_EXEC_STATE_PRIMARY_RAMP_TO_TARGET; @@ -848,8 +847,8 @@ /*********************************************************************//** * @brief * The monitorHeatersVoltage function monitors the heaters' voltages - * @details Inputs: heatersVoltageMonitorTimeCounter - * @details Outputs: heatersVoltageMonitorTimeCounter + * @details Inputs: voltageMonitorTimeCounter + * @details Outputs: voltageMonitorTimeCounter * @return none *************************************************************************/ static void monitorHeatersVoltage( void ) Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u -r26f63d0260a3c35277e3e6dbca3573c253775318 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 26f63d0260a3c35277e3e6dbca3573c253775318) +++ firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -41,7 +41,6 @@ NUM_OF_DG_HEATERS, ///< Number of the heaters } DG_HEATERS_T; -#pragma pack(push,1) /// Target temperature data structure. typedef struct { @@ -62,14 +61,12 @@ F32 mainPrimayHeaterDC; ///< Main primary heater DC F32 smallPrimaryHeaterDC; ///< Small primary heater DC F32 trimmerHeaterDC; ///< Trimmer heater DC - F32 primaryTargetTemp; ///< Primary heaters target temperature + F32 primaryTargetTemp; ///< Primary heater target temperature F32 trimmerTargetTemp; ///< Trimmer heater target temperature U32 primaryHeaterState; ///< Primary heater state U32 trimmerHeaterState; ///< Trimmer heater state - - F32 primaryEfficiency; + F32 primaryEfficiency; ///< Primary heater efficiency } HEATERS_DATA_T; -#pragma pack(pop) // ********** Public function prototypes ********** Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r9a3be9ebb32e5e0d8e1496def50e04dedf490406 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 9a3be9ebb32e5e0d8e1496def50e04dedf490406) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -371,6 +371,8 @@ } #ifndef IGNORE_RO_PUMP_MONITOR + F32 roFeedbackDutyCycle = ROP_FEEDBACK_100_PCT_DUTY_CYCLE_VOLTAGE / roFeedbackVoltage; + // To monitor the flow, the control mode must be in closed loop mode and the pump should be control to flow state // If the pump is controlled to the maximum pressure, the flow might be different from the target flow for more than 10% // but the pump is not able to achieve the flow. @@ -401,12 +403,15 @@ if ( TRUE == isROPumpOn ) { - F32 roFeedbackDutyCycle = ROP_FEEDBACK_100_PCT_DUTY_CYCLE_VOLTAGE / roFeedbackVoltage; BOOL isDCOutOfRange = ( fabs( roFeedbackDutyCycle - roPumpDutyCyclePctSet ) > ROP_DUTY_CYCLE_OUT_OF_RANGE_TOLERANCE ? TRUE : FALSE ); roPumpFeedbackDutyCyclePct = roFeedbackDutyCycle; checkPersistentAlarm( ALARM_ID_RO_PUMP_DUTY_CYCLE_OUT_OF_RANGE, TRUE, roFeedbackDutyCycle, roPumpDutyCyclePctSet ); } + else + { + checkPersistentAlarm( ALARM_ID_RO_PUMP_DUTY_CYCLE_OUT_OF_RANGE, FALSE, roFeedbackDutyCycle, roPumpDutyCyclePctSet ); + } #endif // Publish RO pump data on interval @@ -1016,7 +1021,7 @@ { BOOL result = FALSE; - //if ( TRUE == isTestingActivated() ) TODO uncomment + if ( TRUE == isTestingActivated() ) { // Check if duty cycle is within range if ( value >= MIN_RO_PUMP_DUTY_CYCLE && value <= MAX_RO_PUMP_DUTY_CYCLE ) Index: firmware/App/Modes/ModeFlush.c =================================================================== diff -u -r622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision 622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94) +++ firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -43,7 +43,7 @@ #define FLUSH_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Mode flush data publish interval in counts. #define RO_PUMP_TARGET_FLOW_RATE_LPM 0.8 ///< RO pump target flow rate during flush/fill in L/min. #define RO_PUMP_MAX_PRESSURE_PSI 130 ///< Maximum RO pump pressure during flush/fill states in psi. -#define DRAIN_PUMP_TARGET_RPM 2400 ///< Drain pump target RPM during drain. +#define DRAIN_PUMP_TARGET_RPM 2300 ///< Drain pump target RPM during drain. // Drain R1 & R2 states defines #define DRAIN_WEIGHT_UNCHANGE_TIMEOUT ( 6 * MS_PER_SECOND ) ///< Time period of unchanged weight during draining before timeout. Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -191,7 +191,7 @@ U16 fpgaADCVccAux; ///< Reg 408. Internal FPGA Vcc auxiliary voltage. U16 fpgaADCVPVN; ///< Reg 410. Internal FPGA VPVN voltage. - U16 fpgaROPumpDutyCycleFeedback; ///< Reg 412. RO pump duty cycle feedback. + U16 fpgaOpenRegister; ///< Reg 412. Open register. U16 fpgaDrainPumpSpeedFeedback; ///< Reg 414. Drain pump speed feedback. U16 fpgaDrainPumpCurrentFeedback; ///< Reg 416. Drain pump current feedback. @@ -1936,17 +1936,4 @@ return ( fpgaSensorReadings.fpgaGPIO & CONCENTRATE_CAP_SWITCH_MASK ); } - -/*********************************************************************//** - * @brief - * The getFPGAROPumpDutyCycleFeedback function returns the RO pump duty cycle feedback. - * @details Inputs: fpgaSensorReadings - * @details Outputs: none - * @return RO pump PWM feedback - *************************************************************************/ -U16 getFPGAROPumpDutyCycleFeedback( void ) -{ - return fpgaSensorReadings.fpgaROPumpDutyCycleFeedback; -} - /**@}*/ Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94 -r01da5a9677431082a2ce6cdd69c26f9e778537b4 --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 622eebf6fb7f1c6c232ffd82bc072dd30a7b3f94) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 01da5a9677431082a2ce6cdd69c26f9e778537b4) @@ -142,8 +142,6 @@ U08 getFPGADialysateCapStatus( void ); U08 getFPGAConcentrateCapStatus( void ); -U16 getFPGAROPumpDutyCycleFeedback( void ); - /**@}*/ #endif