Index: firmware/App/Controllers/ConcentratePumps.h =================================================================== diff -u -rb6d20d9e5c704a9f7ebceea9bb12731dac61fc2a -rf2b23abd44f71103b3ef6b0a96f18cc82d263735 --- firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision b6d20d9e5c704a9f7ebceea9bb12731dac61fc2a) +++ firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision f2b23abd44f71103b3ef6b0a96f18cc82d263735) @@ -30,38 +30,61 @@ */ // ********** public definitions ********** +#ifdef __DIENER_CONC_PUMP__ +// For 100 RPM, Diener pump delivers 40ml/min,so restricing 300 RPM for now to maintain accuracy. We may allow up to 500 RPM +// that yields 200 ml/min, but as speed increases, accuracy may drop. +#define CONCENTRATE_PUMP_MAX_SPEED 120.0F ///< Optimal speed for concentrate pump in mL/min +#define UF_PUMP_SPEED 100.0F ///< 100 ml/min, runs at 250 RPM +#else +#define CONCENTRATE_PUMP_MAX_SPEED 48.0F ///< Maximum speed for concentrate pump in mL/min +#define UF_PUMP_SPEED 40.0F ///< 40 ml/min, runs at 400 RPM +#endif +#define DEFAULT_ACID_VOLUME_ML 0.67F ///< Acid concentrate volume in ml. +#define DEFAULT_BICARB_VOLUME_ML 1.15F ///< Bicarb concentrate volume in ml. -#define CONCENTRATE_PUMP_MAX_SPEED 48.0F ///< Maximum speed for concentrate pump in mL/min +#define DOSING_CONT_VOLUME 0xFFFF ///< Volume set to 0xFFFF enables contineous delivery based on the speed set. -#define PARK_CONC_PUMPS TRUE ///< For park parameter to requestConcentratePumpOff(). -#define NO_PARK_CONC_PUMPS FALSE ///< For park parameter to requestConcentratePumpOff(). +#define PARK_CONC_PUMPS TRUE ///< For park parameter to requestConcentratePumpOff(). +#define NO_PARK_CONC_PUMPS FALSE ///< For park parameter to requestConcentratePumpOff(). /// Enumeration of concentrate pumps. typedef enum ConcentratePumps { - CONCENTRATEPUMPS_CP1_ACID = 0, ///< Acid concentrate pump - CONCENTRATEPUMPS_FIRST = CONCENTRATEPUMPS_CP1_ACID, ///< First concentrate pump in list - CONCENTRATEPUMPS_CP2_BICARB, ///< Bicarbonate concentrate pump - NUM_OF_CONCENTRATE_PUMPS ///< Number of concentrate pumps + D11_PUMP = 0, ///< Acid concentrate pump + CONCENTRATEPUMPS_FIRST = D11_PUMP, ///< First concentrate pump in list + D10_PUMP, ///< Bicarbonate concentrate pump + D76_PUMP, ///< Ultrafilteration pump + NUM_OF_CONCENTRATE_PUMPS ///< Number of concentrate pumps } CONCENTRATE_PUMPS_T; /// Concentrate pump data struct. typedef struct { - F32 cp1CurrentSetSpeed; ///< Concentrate pump CP1 current set speed - F32 cp1MeasuredSpeed; ///< Concentrate pump CP1 measured speed - F32 cp2CurrentSetSpeed; ///< Concentrate pump CP2 current set speed - F32 cp2MeasuredSpeed; ///< Concentrate pump CP2 measured speed - U32 cp1State; ///< Concentrate pump CP1 current state - U32 cp2State; ///< Concentrate pump CP2 current state - F32 cp1PulseUS; ///< Concentrate pump CP1 pulse in microseconds - F32 cp2PulseUS; ///< Concentrate pump CP2 pulse in microseconds - F32 cp1TargetSpeed; ///< Concentrate pump CP1 target speed - F32 cp2TargetSpeed; ///< Concentrate pump CP2 target speed - BOOL cp1Parked; ///< Concentrate pump CP1 parked status - BOOL cp2Parked; ///< Concentrate pump CP2 parked status - BOOL cp1ParkFault; ///< Concentrate pump CP1 park fault status - BOOL cp2ParkFault; ///< Concentrate pump CP2 park fault status + F32 d11_PumpCurrentSetSpeed; ///< Concentrate pump D11_Pump current set speed + F32 d11_PumpMeasuredSpeed; ///< Concentrate pump D11_Pump measured speed + F32 d10_PumpCurrentSetSpeed; ///< Concentrate pump D10_Pump current set speed + F32 d10_PumpMeasuredSpeed; ///< Concentrate pump D10_Pump measured speed + U32 d11_PumpTargetRevCount; ///< Concentrate pump D11_Pump target revolution count + U32 d11_PumpMeasuredRevCount; ///< Concentrate pump D11_Pump measured revolution count + U32 d10_PumpTargetRevCount; ///< Concentrate pump D10_Pump target revolution count + U32 d10_PumpMeasuredRevCount; ///< Concentrate pump D10_Pump measured revolution count + U32 d11_PumpState; ///< Concentrate pump D11_Pump current state + U32 d10_PumpState; ///< Concentrate pump D10_Pump current state + F32 d11_PumpPulseUS; ///< Concentrate pump D11_Pump pulse in microseconds + F32 d10_PumpPulseUS; ///< Concentrate pump D10_Pump pulse in microseconds + F32 d11_PumpTargetSpeed; ///< Concentrate pump D11_Pump target speed + F32 d10_PumpTargetSpeed; ///< Concentrate pump D10_Pump target speed + BOOL d11_PumpParked; ///< Concentrate pump D11_Pump parked status + BOOL d10_PumpParked; ///< Concentrate pump D10_Pump parked status + BOOL d11_PumpParkFault; ///< Concentrate pump D11_Pump park fault status + BOOL d10_PumpParkFault; ///< Concentrate pump D10_Pump park fault status + F32 d76_PumpTargetSpeed; ///< Concentrate pump D76_Pump target speed + F32 d76_PumpCurrentSetSpeed; ///< Concentrate pump D76_Pump current set speed + F32 d76_PumpMeasuredSpeed; ///< Concentrate pump D76_Pump measured speed + U32 d76_PumpTargetRevCount; ///< Concentrate pump D76_Pump target revolution count + U32 d76_PumpMeasuredRevCount; ///< Concentrate pump D76_Pump measured revolution count + U32 d76_PumpState; ///< Concentrate pump D76_Pump current state + F32 d76_PumpPulseUS; ///< Concentrate pump D76_Pump pulse in microseconds } CONCENTRATE_PUMP_DATA_T; // ********** public function prototypes ********** @@ -75,21 +98,25 @@ void requestConcentratePumpOn( CONCENTRATE_PUMPS_T pumpId ); void requestConcentratePumpOff( CONCENTRATE_PUMPS_T pumpId, BOOL park ); -void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min ); +void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min, F32 targetVolume_ml ); F32 getConcentratePumpTargetFlowMLPM( CONCENTRATE_PUMPS_T pumpId ); F32 getMeasuredPumpSpeedMLPM( CONCENTRATE_PUMPS_T pumpId ); F32 getPumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpParkRequest( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpIsParked( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpParkIsFaulted( CONCENTRATE_PUMPS_T pumpId ); +U16 getConcPumpTargetRevolutionCount( CONCENTRATE_PUMPS_T pumpId ); +U16 getConcPumpCurrentMeasuredRevolutionCount( CONCENTRATE_PUMPS_T pumpId ); BOOL handleConcentratePumpParkRequest( void ); BOOL isConcPumpParkInProgress( CONCENTRATE_PUMPS_T pumpId ); +BOOL isConcentratePumpDosingCompleted( CONCENTRATE_PUMPS_T pumpId ); BOOL testConcentratePumpDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testConcentratePumpTargetSpeedOverride( MESSAGE_T *message ); BOOL testConcentratePumpMeasuredSpeedOverride( MESSAGE_T *message ); BOOL testConcentratePumpParkedOverride( MESSAGE_T *message ); BOOL testConcentratePumpParkCmdFaultedOverride( MESSAGE_T *message ); +BOOL testConcentratePumpTargetRevCountOverride( MESSAGE_T *message ); BOOL testConcentratePumpStartStopOverride( MESSAGE_T *message ); // Concentrate pump start/stop request BOOL testConcentratePumpParkRequestOverride( MESSAGE_T *message ); // Concentrate pump stop/park request