Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -410,13 +410,13 @@ /*********************************************************************//** * @brief - * The setHydValveStatetoClosedState function sets the all Hydraulics / DD + * The setHydValvesStatetoClosedState function sets all Hydraulics / DD * valves to close state except balancing chamber, UF and Inlet water control. * @details \b Inputs: none * @details \b Outputs: valve states * @return none. *************************************************************************/ -void setHydValveStatetoClosedState( void ) +void setHydValvesStatetoClosedState( void ) { VALVES_T valve; @@ -429,13 +429,13 @@ /*********************************************************************//** * @brief - * The setUFValveStatetoClosedState function sets the all UF valves + * The setUFValvesStatetoClosedState function sets all UF valves * to close state. * @details \b Inputs: none * @details \b Outputs: valve states * @return none. *************************************************************************/ -void setUFValveStatetoClosedState( void ) +void setUFValvesStatetoClosedState( void ) { VALVES_T valve; Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -96,8 +96,8 @@ BOOL setValveState( VALVES_T valve, VALVE_STATE_NAMES_T valveState ); BOOL setValveStateDelayed( VALVES_T valve, VALVE_STATE_NAMES_T valveState, U32 delayMs ); VALVE_STATE_NAMES_T getValveStateName( VALVES_T valveID ); -void setHydValveStatetoClosedState( void ); -void setUFValveStatetoClosedState( void ); +void setHydValvesStatetoClosedState( void ); +void setUFValvesStatetoClosedState( void ); BOOL testValvesStatesPublishIntervalOverride( MESSAGE_T *message ); BOOL testValveStateOverride( MESSAGE_T *message ); Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -59,21 +59,21 @@ static U32 hydChamberPressureCheckStartTimeMS; ///< Current time when hydraulics chamber pressure check satrted in milliseconds. static U32 spentDialPressureCheckStartTimeMS; ///< Current time when spent dialysate pressure check started in milliseconds. static OVERRIDE_U32_T isDialDeliveryInProgress; ///< To indicate dialysate started delivering to dialyzer for treatment (overrideable) -static BOOL isDialysateGoodtoDeliver; ///< Flag indicating whether ready to deliver dialysate or not. +static OVERRIDE_U32_T isDialysateGoodtoDeliver; ///< Flag indicating whether ready to deliver dialysate or not. static U32 genDialysateDataPublicationTimerCounter; ///< Used to schedule generate dialysate data publication to CAN bus. static OVERRIDE_U32_T genDialysateDataPublishInterval; ///< Generate dialysate mode data publish interval. // ********** private function prototypes ********** static void setModeGenDStateTransition( DD_GEND_MODE_STATE_T state ); static BOOL hydChamberWaterInletControl( void ); -static DD_GEND_MODE_STATE_T handleGendHydraulicsChamberWaterInletCheckState( void ); -static DD_GEND_MODE_STATE_T handleGendHydChamberPressureCheckState( void ); -static DD_GEND_MODE_STATE_T handleGendFreshDialysatePressureCheckState( void ); -static DD_GEND_MODE_STATE_T handleGendSpentDialysatePressureCheckState( void ); -static DD_GEND_MODE_STATE_T handleGendProduceDialysateyState( void ); -static DD_GEND_MODE_STATE_T handleGendDialysateDeliveryState( void ); -static DD_GEND_MODE_STATE_T handleGendDialysateDeliveryPauseState( void ); +static DD_GEND_MODE_STATE_T handleGenDHydraulicsChamberWaterInletCheckState( void ); +static DD_GEND_MODE_STATE_T handleGenDHydChamberPressureCheckState( void ); +static DD_GEND_MODE_STATE_T handleGenDFreshDialysatePressureCheckState( void ); +static DD_GEND_MODE_STATE_T handleGenDSpentDialysatePressureCheckState( void ); +static DD_GEND_MODE_STATE_T handleGenDProduceDialysateyState( void ); +static DD_GEND_MODE_STATE_T handleGenDDialysateDeliveryState( void ); +static DD_GEND_MODE_STATE_T handleGenDDialysateDeliveryPauseState( void ); static void publishGenDialysateModeData( void ); /*********************************************************************//** @@ -91,7 +91,10 @@ // targetHydChamberFluidTemp.override = OVERRIDE_RESET; // isHydChamberTempinRange = FALSE; genDialysateState = DD_GEND_STATE_START; - isDialysateGoodtoDeliver = FALSE; + isDialysateGoodtoDeliver.data = FALSE; + isDialysateGoodtoDeliver.ovData = FALSE; + isDialysateGoodtoDeliver.ovInitData = FALSE; + isDialysateGoodtoDeliver.override = OVERRIDE_RESET; isDialDeliveryInProgress.data = FALSE; isDialDeliveryInProgress.ovData = FALSE; isDialDeliveryInProgress.ovInitData = FALSE; @@ -124,14 +127,12 @@ return genDialysateState; } - /*********************************************************************//** * @brief * The execGenDialysateMonitor function monitors the balancing chamber fill * operations and alarm if temperature and conductivity is not in range. - * @details \b Inputs: - * @details \b Outputs: - * @details \b Alarm: none. + * @details \b Inputs: isBalChamberFillInProgress + * @details \b Outputs: isDialysateGoodtoDeliver * @return none. *************************************************************************/ void execGenDialysateMonitor( void ) @@ -147,7 +148,7 @@ // Temperature range check // Coductivity range check - isDialysateGoodtoDeliver = TRUE; + isDialysateGoodtoDeliver.data = TRUE; } } @@ -172,8 +173,8 @@ case DD_GEND_HYD_CHAMBER_WATER_INLET_CHECK_STATE: // Close all balancing chamber and hydraulics valves valveControlForBCClosedState(); - setHydValveStatetoClosedState(); - setUFValveStatetoClosedState(); + setHydValvesStatetoClosedState(); + setUFValvesStatetoClosedState(); // Get the target temperature from TD //targetHydChamberFluidTemp.data = HYD_CHAMBER_FLUID_TEMP_C_MIN; @@ -201,7 +202,7 @@ valveControlForBCOpenState(); // Make sure valves are in correct position - setValveState( VDR, VALVE_STATE_OPEN ); //D53 + setValveState( VDR, VALVE_STATE_OPEN ); // Drain valve : D53 setValveState( VDI, VALVE_STATE_CLOSED ); setValveState( VDO, VALVE_STATE_CLOSED ); setValveState( VDB2, VALVE_STATE_OPEN ); @@ -272,31 +273,31 @@ break; case DD_GEND_HYD_CHAMBER_WATER_INLET_CHECK_STATE: - genDialysateState = handleGendHydraulicsChamberWaterInletCheckState(); + genDialysateState = handleGenDHydraulicsChamberWaterInletCheckState(); break; case DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE: - genDialysateState = handleGendHydChamberPressureCheckState(); + genDialysateState = handleGenDHydChamberPressureCheckState(); break; case DD_GEND_FRESH_DIALYSATE_PRESSURE_CHECK_STATE: - genDialysateState = handleGendFreshDialysatePressureCheckState(); + genDialysateState = handleGenDFreshDialysatePressureCheckState(); break; case DD_GEND_SPENT_DIALYSATE_PRESSURE_CHECK_STATE: - genDialysateState = handleGendSpentDialysatePressureCheckState(); + genDialysateState = handleGenDSpentDialysatePressureCheckState(); break; case DD_GEND_PRODUCE_DIALYSATE_STATE: - genDialysateState = handleGendProduceDialysateyState(); + genDialysateState = handleGenDProduceDialysateyState(); break; case DD_GEND_DIALYSATE_DELIVERY_STATE: - genDialysateState = handleGendDialysateDeliveryState(); + genDialysateState = handleGenDDialysateDeliveryState(); break; case DD_GEND_DIALYSATE_DELIVERY_PAUSE: - genDialysateState = handleGendDialysateDeliveryPauseState(); + genDialysateState = handleGenDDialysateDeliveryPauseState(); break; default: @@ -331,7 +332,7 @@ if ( STATE_HIGH == floaterLevel1 ) { //turn off inlet water valve - setValveState( VHO, VALVE_STATE_CLOSED ); + setValveState( VHI, VALVE_STATE_CLOSED ); // // read latest fluid temperature // hydChamberTemperature = getTemperatureValue( TEMPSENSORS_HYDRAULICS_PRIMARY_HEATER ); @@ -358,7 +359,7 @@ else { // if level is not met,allow inlet water to hydraulics chamber - setValveState( VHO, VALVE_STATE_OPEN ); + setValveState( VHI, VALVE_STATE_OPEN ); } // Invalid levels @@ -372,13 +373,13 @@ /*********************************************************************//** * @brief - * The handleGendHydraulicsChamberWaterInletCheckState function checks the + * The handleGenDHydraulicsChamberWaterInletCheckState function checks the * water level and allow the water into hydraulics for dialysate generation. * @details \b Inputs: floater levels. * @details \b Outputs: none * @return the current state of gen dialysate mode *************************************************************************/ -static DD_GEND_MODE_STATE_T handleGendHydraulicsChamberWaterInletCheckState( void ) +static DD_GEND_MODE_STATE_T handleGenDHydraulicsChamberWaterInletCheckState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_HYD_CHAMBER_WATER_INLET_CHECK_STATE; @@ -395,13 +396,13 @@ /*********************************************************************//** * @brief - * The handleGendHydChamberPressureCheckState function checks the + * The handleGenDHydChamberPressureCheckState function checks the * hydraulics chamber pressure at chamber 4 of hydraulics. * @details \b Inputs: pressure sensor readings, hydChamberPressureCheckStartTimeMS * @details \b Outputs: none * @return the current state of gen dialysate mode *************************************************************************/ -static DD_GEND_MODE_STATE_T handleGendHydChamberPressureCheckState( void ) +static DD_GEND_MODE_STATE_T handleGenDHydChamberPressureCheckState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE; F32 hydPressure = getFilteredPressure( PRESSURE_SENSOR_HYDRAULICS_OUTLET ); @@ -424,14 +425,14 @@ /*********************************************************************//** * @brief - * The handleGendFreshDialysatePressureCheckState function checks the + * The handleGenDFreshDialysatePressureCheckState function checks the * positive pressure level ( chamber 5) of hydraulics chamber or fresh * dialysate side. * @details \b Inputs: pressure sensor readings,hydChamberPressureCheckStartTimeMS * @details \b Outputs: none * @return the current state of gen dialysate mode *************************************************************************/ -static DD_GEND_MODE_STATE_T handleGendFreshDialysatePressureCheckState( void ) +static DD_GEND_MODE_STATE_T handleGenDFreshDialysatePressureCheckState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_FRESH_DIALYSATE_PRESSURE_CHECK_STATE; F32 hydPressure = getFilteredPressure( PRESSURE_SENSOR_FRESH_DIALYSATE ); @@ -454,14 +455,14 @@ /*********************************************************************//** * @brief - * The handleGendSpentDialysatePressureCheckState function checks the + * The handleGenDSpentDialysatePressureCheckState function checks the * spent dialyaste pressure is in range to begin balancing chamber dialysate * delivery. * @details \b Inputs: pressure sensor readings,spentDialPressureCheckStartTimeMS. * @details \b Outputs: none * @return the current state of gen dialysate mode *************************************************************************/ -static DD_GEND_MODE_STATE_T handleGendSpentDialysatePressureCheckState( void ) +static DD_GEND_MODE_STATE_T handleGenDSpentDialysatePressureCheckState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_SPENT_DIALYSATE_PRESSURE_CHECK_STATE; F32 spentdialPressure = getFilteredPressure( PRESSURE_SENSOR_SPENT_DIALYSATE ); @@ -485,14 +486,14 @@ /*********************************************************************//** * @brief - * The handleGendProduceDialysateyState function produces dialysate + * The handleGenDProduceDialysateyState function produces dialysate * by executing balancing chamber and decides to pass the dialysate * for treatment. * @details \b Inputs: none * @details \b Outputs: balancing chamber state. * @return the current state of gen dialysate mode *************************************************************************/ -static DD_GEND_MODE_STATE_T handleGendProduceDialysateyState( void ) +static DD_GEND_MODE_STATE_T handleGenDProduceDialysateyState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_PRODUCE_DIALYSATE_STATE; @@ -501,7 +502,7 @@ //if the produced dialysate is good and TD asks for dialysate delivery // move to next state - if ( ( TRUE == isDialysateGoodtoDeliver ) && ( FALSE == getTDDialyzerBypass() ) ) + if ( ( TRUE == getDialGoodToDeliverStatus() ) && ( FALSE == getTDDialyzerBypass() ) ) { setModeGenDStateTransition( DD_GEND_DIALYSATE_DELIVERY_STATE ); state = DD_GEND_DIALYSATE_DELIVERY_STATE; @@ -512,13 +513,13 @@ /*********************************************************************//** * @brief - * The handleGendDialysateDeliveryState function performing dialysate + * The handleGenDDialysateDeliveryState function performing dialysate * delivery by executing balancing chamber. * @details \b Inputs: none * @details \b Outputs: balancing chamber state. * @return the current state of gen dialysate mode *************************************************************************/ -static DD_GEND_MODE_STATE_T handleGendDialysateDeliveryState( void ) +static DD_GEND_MODE_STATE_T handleGenDDialysateDeliveryState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_DIALYSATE_DELIVERY_STATE; @@ -527,7 +528,7 @@ // if TD asks for bypass or dialysate is not good to deliver //transition to produce dialystate state - if ( ( FALSE == isDialysateGoodtoDeliver ) || ( TRUE == getTDDialyzerBypass() ) ) + if ( ( FALSE == getDialGoodToDeliverStatus() ) || ( TRUE == getTDDialyzerBypass() ) ) { setModeGenDStateTransition( DD_GEND_PRODUCE_DIALYSATE_STATE ); state = DD_GEND_PRODUCE_DIALYSATE_STATE; @@ -538,14 +539,14 @@ /*********************************************************************//** * @brief - * The handleGendDialysateDeliveryPauseState function pause the dialysate + * The handleGenDDialysateDeliveryPauseState function pause the dialysate * delivery due to alarms conditions or some control asked to be in * paused state. * @details \b Inputs: none * @details \b Outputs: none * @return the current state of gen dialysate mode *************************************************************************/ -static DD_GEND_MODE_STATE_T handleGendDialysateDeliveryPauseState( void ) +static DD_GEND_MODE_STATE_T handleGenDDialysateDeliveryPauseState( void ) { DD_GEND_MODE_STATE_T state = DD_GEND_DIALYSATE_DELIVERY_PAUSE; @@ -569,16 +570,20 @@ /*********************************************************************//** * @brief - * The requestDDStop function handles an TD request to stop (return to standby mode). - * @details \b Inputs: none - * @details \b Outputs: DD standby mode requested - * @return TRUE if request accepted. + * The getDialGoodToDeliverStatus function gets the dialysate good to deliver + * status. + * @details \b Inputs: isDialysateGoodtoDeliver + * @details \b Outputs: none + * @return the current status of dialysate delivery *************************************************************************/ -BOOL requestDDStop( void ) +U32 getDialGoodToDeliverStatus( void ) { - BOOL result = TRUE; + U32 result = isDialysateGoodtoDeliver.data; - requestNewOperationMode( DD_MODE_STAN ); + if ( OVERRIDE_KEY == isDialysateGoodtoDeliver.override ) + { + result = isDialysateGoodtoDeliver.ovData; + } return result; } @@ -648,7 +653,7 @@ data.hydNegativePressure = getFilteredPressure( PRESSURE_SENSOR_HYDRAULICS_OUTLET ); data.hydPositivePressure = getFilteredPressure( PRESSURE_SENSOR_FRESH_DIALYSATE ); data.spentDialysatePressure = getFilteredPressure( PRESSURE_SENSOR_SPENT_DIALYSATE ); - data.isDialysateGoodtoDeliver = isDialysateGoodtoDeliver; + data.isDialysateGoodtoDeliver = (BOOL)getDialGoodToDeliverStatus(); broadcastData( MSG_ID_DD_GEN_DIALYSATE_MODE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( GEN_DIALYSATE_MODE_DATA_T ) ); @@ -698,6 +703,23 @@ /*********************************************************************//** * @brief + * The testDialGoodToDeliverStatusOverride function sets the override value + * of the dialysate good to deliver status flag. + * @details Inputs: isDialysateGoodtoDeliver + * @details Outputs: isDialysateGoodtoDeliver + * @param message Override message from Dialin which includes the override + * value to override the dialysate delivery in progress flag. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testDialGoodToDeliverStatusOverride( MESSAGE_T *message ) +{ + BOOL result = u32Override( message, &isDialysateGoodtoDeliver, 0, TRUE ); + + return result; +} + +/*********************************************************************//** + * @brief * The testGenDHydChamberFluidTempOverride function sets the override value * of the hydraulics chamber fluid temperature. * @details Inputs: targetHydChamberFluidTemp Index: firmware/App/Modes/ModeGenDialysate.h =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -48,16 +48,18 @@ // ********** public function prototypes ********** -void initGenDialysateMode( void ); // initialize this gen dialysate mode unit -U32 transitionToGenDialysateMode( void ); // prepares for transition to gen dialysate mode -U32 execGenDialysateMode( void ); // execute the gen dialysate mode state machine (call from OperationModes) -BOOL requestDDStop( void ); // TD request to stop the dialysate generation. +void initGenDialysateMode( void ); // Initialize this gen dialysate mode unit +U32 transitionToGenDialysateMode( void ); // Prepares for transition to gen dialysate mode +U32 execGenDialysateMode( void ); // Execute the gen dialysate mode state machine (call from OperationModes) +void execGenDialysateMonitor( void ); // Dialysate generation monitor -DD_GEND_MODE_STATE_T getCurrentGenDialysateState( void ); // get the current state of the gen dialysate mode. +DD_GEND_MODE_STATE_T getCurrentGenDialysateState( void ); // Get the current state of the gen dialysate mode. +U32 getDialGoodToDeliverStatus( void ); // Get the dialysate good to deliver status -BOOL testDDGenDialysateDataPublishIntervalOverride( MESSAGE_T *message ); -BOOL testDialDeliveryInProgressOverride( MESSAGE_T *message ); // To override the dialysate delivery in progress flag -BOOL testGenDHydChamberFluidTempOverride( MESSAGE_T *message ); // Override the hydraulics chamber fluid temperature +BOOL testDDGenDialysateDataPublishIntervalOverride( MESSAGE_T *message ); // GenD Mode data publish interval override +BOOL testDialDeliveryInProgressOverride( MESSAGE_T *message ); // To override the dialysate delivery in progress flag +BOOL testDialGoodToDeliverStatusOverride( MESSAGE_T *message ); // To override the dialysate good to deliver status flag +BOOL testGenDHydChamberFluidTempOverride( MESSAGE_T *message ); // Override the hydraulics chamber fluid temperature /**@}*/ Index: firmware/App/Monitors/Level.c =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Monitors/Level.c (.../Level.c) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -99,7 +99,7 @@ // Process the status of the Level case FLOATER_1: //currentLevelStatus = ( getFPGAFloater1Status() != 0 ? STATE_LOW : STATE_MEDIUM ); - currentLevelStatus = ( getFPGAFloater1Status() != 0 ? STATE_LOW : STATE_HIGH ); + currentLevelStatus = ( getFPGAFloater1Status() != TRUE ? STATE_LOW : STATE_HIGH ); break; case FLOATER_2: Index: firmware/App/Services/FpgaDD.c =================================================================== diff -u -r48c75a394c56b82886760e9a136b638edecf7572 -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 48c75a394c56b82886760e9a136b638edecf7572) +++ firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -90,6 +90,8 @@ #define FPGA_DGP_PUMP_ERROR_BIT 0x01 ///< Fresh dialysate pump error bit mask. #define FPGA_SDP_PUMP_ERROR_BIT 0x02 ///< Spent dialysate pump error bit mask. +#define FPGA_FLOATER_LEVEL_BIT 0x01 ///< Floater level bit mask. + /// FPGA size of V3 read bytes. #define FPGA_SIZE_OF_V3_READ_BYTES ( FPGA_READ_V3_END_BYTE_NUM - FPGA_READ_V3_START_BYTE_NUM ) @@ -2258,9 +2260,12 @@ * @details \b Outputs: none * @return last FPGA floater 1 level reading *************************************************************************/ -U08 getFPGAFloater1Status( void ) +BOOL getFPGAFloater1Status( void ) { - return fpgaSensorReadings.fpgaFloater1Status; + U08 mask = fpgaSensorReadings.fpgaFloater1Status & FPGA_FLOATER_LEVEL_BIT; + BOOL result = ( mask > 0 ? FALSE : TRUE ); + + return result; } /*********************************************************************//** Index: firmware/App/Services/FpgaDD.h =================================================================== diff -u -r48c75a394c56b82886760e9a136b638edecf7572 -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 48c75a394c56b82886760e9a136b638edecf7572) +++ firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -190,10 +190,10 @@ U16 getFPGAPRoRawTemperature( void ); //Level sensor -U16 getFPGALevelSensor1( void ); -U16 getFPGALevelSensor2( void ); -U08 getFPGAFloater1Status( void ); -U08 getFPGAFloater2Status( void ); +U16 getFPGALevelSensor1( void ); +U16 getFPGALevelSensor2( void ); +BOOL getFPGAFloater1Status( void ); +U08 getFPGAFloater2Status( void ); //Temperature sensors U32 getFPGAInletHeatExchangerTemp( void ); Index: firmware/App/Services/TDInterface.c =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -17,9 +17,9 @@ #include "Messaging.h" #include "MessagePayloads.h" +#include "ModeGenDialysate.h" #include "ModeInitPOST.h" #include "ModeStandby.h" -#include "ModeGenDialysate.h" #include "OperationModes.h" #include "PersistentAlarm.h" #include "SystemCommDD.h" @@ -343,17 +343,9 @@ memcpy( &startTxRequest, message->payload, sizeof( DIALYSATE_DELIVERY_REQ_PAYLOAD_T ) ); + // Process the dialysate delivery request message if ( ( DD_MODE_STAN == ddMode ) && ( TRUE == startTxRequest.start ) ) { - result = requestDDStart(); - } - else if ( ( DD_MODE_GEND == ddMode ) && ( FALSE == startTxRequest.start ) ) - { - result = requestDDStop(); - } - - if ( ( DD_MODE_STAN == ddMode ) && ( DD_MODE_GEND == ddMode ) ) - { // Set dialysate flow rate, UF rate and dialysate temperature setTDDialysateFlowrate( startTxRequest.dialRate ); setTDUFRate( startTxRequest.ufRate ); @@ -363,8 +355,30 @@ setTDAcidAndBicarbType( startTxRequest.acidType, startTxRequest.bicarbType ); setTDDialyzerBypass( startTxRequest.bypassDialyzer ); - result |= TRUE; + // start dialysate generation + result = requestDDStart(); } + else if ( DD_MODE_GEND == ddMode ) + { + if ( FALSE == startTxRequest.start ) + { + // stop dialysate generation by transitioning to standby mode + requestNewOperationMode( DD_MODE_STAN ); + } + else + { + // Set dialysate flow rate, UF rate and dialysate temperature + setTDDialysateFlowrate( startTxRequest.dialRate ); + setTDUFRate( startTxRequest.ufRate ); + setTDTargetDialysateTemperature( startTxRequest.dialTemp ); + + // Set concentrate types, Bypass dialyzer + setTDAcidAndBicarbType( startTxRequest.acidType, startTxRequest.bicarbType ); + setTDDialyzerBypass( startTxRequest.bypassDialyzer ); + } + + result = TRUE; + } } sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DD_2_TD, result ); Index: firmware/App/Services/TDInterface.h =================================================================== diff -u -r6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Services/TDInterface.h (.../TDInterface.h) (revision 6679a2cd813b21a8cb4c58b3eeb721e0eef9a10b) +++ firmware/App/Services/TDInterface.h (.../TDInterface.h) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -42,27 +42,22 @@ BOOL handleDialysateDeliveryRequestMsg( MESSAGE_T *message ); -TD_OP_MODE_T getTDOpMode( void ); -U32 getTDSubMode( void ); void setTDOpMode( U32 opMode, U32 subMode ); - -F32 getTDDialysateFlowrate( void ); void setTDDialysateFlowrate( F32 dialFlowrate ); - -F32 getTDUFRate( void ); void setTDUFRate( F32 ufRate ); - -F32 getTDTargetDialysateTemperature( void ); void setTDTargetDialysateTemperature( F32 dialTemperature ); - -BOOL getTDDialyzerBypass( void ); void setTDDialyzerBypass( F32 dialBypass ); +void setTDAcidAndBicarbType( U32 acid, U32 bicarb ); +U32 getTDSubMode( void ); +F32 getTDDialysateFlowrate( void ); +F32 getTDUFRate( void ); +F32 getTDTargetDialysateTemperature( void ); +BOOL getTDDialyzerBypass( void ); +TD_OP_MODE_T getTDOpMode( void ); +DD_ACID_TYPES_T getTDAcidConcentrateType( void ); DD_BICARB_TYPES_T getTDBicarbConcentrateType( void ); -DD_ACID_TYPES_T getTDAcidConcentrateType( void ); -void setTDAcidAndBicarbType( U32 acid, U32 bicarb ); - /**@}*/ #endif Index: firmware/App/Tasks/TaskPriority.c =================================================================== diff -u -ra14bc308c72272ce0275d263cf010c90d8a37355 -rbce6e6d1cfb6e8a0b186419416460ead3a44e5e1 --- firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision a14bc308c72272ce0275d263cf010c90d8a37355) +++ firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision bce6e6d1cfb6e8a0b186419416460ead3a44e5e1) @@ -23,6 +23,7 @@ #include "Heaters.h" #include "InternalADC.h" #include "Level.h" +#include "ModeGenDialysate.h" #include "Pressure.h" #include "TaskPriority.h" #include "Temperature.h" @@ -86,6 +87,9 @@ // Heaters monitor execHeatersMonitor(); + // Dialysate generation monitor + execGenDialysateMonitor(); + // Second pass for FPGA execFPGA( FALSE ); #endif