Index: firmware/App/Controllers/AirTrap.h =================================================================== diff -u -rbccdf42b4195cd774760bc75dc21ab78727f9a4a -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Controllers/AirTrap.h (.../AirTrap.h) (revision bccdf42b4195cd774760bc75dc21ab78727f9a4a) +++ firmware/App/Controllers/AirTrap.h (.../AirTrap.h) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -44,7 +44,7 @@ U32 h13State; ///< Is air trap intake valve open or closed U32 h20State; ///< Is air trap outlet valve open or closed BOOL isAutoControlling; ///< Flag indicates whether air trap level is being auto controlled - U32 airTrapState; + U32 airTrapState; ///< Air trap state } AIR_TRAP_PAYLOAD_T; #pragma pack(pop) Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -rbe1f6ba8f58abfe098865c85ebca070eb0dde6ce -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision be1f6ba8f58abfe098865c85ebca070eb0dde6ce) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -25,7 +25,6 @@ #include "Timers.h" #include "Valves.h" - /** * @addtogroup Valves * @{ @@ -44,7 +43,7 @@ #define VALVE_FORCE_HOME TRUE ///< Force valve to home even if already homed. #define ZERO_ENC_DEBOUNCE_THRESHOLD_CNT 5 ///< Valves zero encoder debounce threshold count. #define ZERO_ENC_DEBOUNCE_TIMEOUT_MS ( 0.25 * MS_PER_SECOND ) ///< Valves zero encoder debounce timeout in milliseconds. -#define POS_D_VENOUS_OFFSET_FROM_ZERO_CNT 32 ///< Position D venous offset from zero position in counts. +#define POS_D_PARTIAL_CLOSE_FROM_ZERO_CNT 32 ///< Position D partial close from zero position in counts. /// Valve controller states typedef enum Valve_Control_States @@ -126,7 +125,7 @@ static VALVE_STATE_T handleValvesFindEnergizedEdgeState( VALVE_T valve ); static VALVE_STATE_T handleValvesIdleState( VALVE_T valve ); static VALVE_STATE_T handleValvesTransitionState( VALVE_T valve ); - +static void checkValveInRange( VALVE_T valve, SW_FAULT_ID_T SWFault ); static void publishValvesData( void ); /*********************************************************************//** @@ -334,6 +333,8 @@ { VALVE_STATE_T nextState = VALVE_STATE_WAIT_FOR_POST; + checkValveInRange( valve, SW_FAULT_ID_TD_VALVES_INVALID_WAIT_FOR_POST_STATE ); + if ( getCurrentOperationMode() != MODE_INIT ) { nextState = VALVE_STATE_RESET_VALVE; @@ -354,24 +355,10 @@ static VALVE_STATE_T handleValvesResetValve( VALVE_T valve ) { VALVE_STATE_T nextState = VALVE_STATE_RESET_ENCODER; - U08 resetValve = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_ENABLE_ENCODER | FPGA_PINCH_VALVES_DISABLE | - FPGA_PINCH_VALVES_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; - switch ( valve ) - { - case H1_VALV: - setH1Control( resetValve ); - break; + checkValveInRange( valve, SW_FAULT_ID_TD_VALVES_INVALID_RESET ); + resetValve( valve ); - case H19_VALV: - setH19Control( resetValve ); - break; - - default: - // Do nothing as the fault mode is checked in the exec function - break; - } - return nextState; } @@ -387,31 +374,12 @@ static VALVE_STATE_T handleValvesResetEncoder( VALVE_T valve ) { VALVE_STATE_T nextState = VALVE_STATE_ENABLE_VALVE; - U08 resetEnc = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_RESET_ENCODER | FPGA_PINCH_VALVES_DISABLE | - FPGA_PINCH_VALVES_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; - switch ( valve ) - { - case H1_VALV: - setH1Control( resetEnc ); - break; - - case H19_VALV: - setH19Control( resetEnc ); - break; - - default: - // Do nothing as the fault mode is checked in the exec function - break; - } - + checkValveInRange( valve, SW_FAULT_ID_TD_VALVES_INVALID_RESET_ENCODER ); + resetValveEncoder( valve ); // Set the timer for the first debounce read currentValveStates[ valve ].valveOpsStartTime = getMSTimerCount(); -#ifdef ASN_DEMO - currentValveStates[ valve ].hasValveBeenReset = FALSE; -#endif - return nextState; } @@ -427,81 +395,32 @@ static VALVE_STATE_T handleValvesEnableValve( VALVE_T valve ) { VALVE_STATE_T nextState = VALVE_STATE_ENABLE_VALVE; - U08 enableValve = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_ENABLE_ENCODER | FPAG_PINCH_VALVES_ENABLE | - FPGA_PINCH_VALVES_NOT_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; S16 valveEncPosistion = getValveEncoderPosition( valve ); + checkValveInRange( valve, SW_FAULT_ID_TD_VALVES_INVALID_ENABLE ); + if ( FALSE == currentValveStates[ valve ].hasValveBeenReset ) { - switch ( valve ) - { - case H1_VALV: - setH1Control( enableValve ); - break; - - case H19_VALV: - setH19Control( enableValve ); - break; - - default: - // Do nothing as the fault mode is checked in the exec function - break; - } - + enableValve( valve ); currentValveStates[ valve ].hasValveBeenReset = TRUE; } else { - // First enable the valve and then set the position to 0 to clear the FPGA command registers - switch ( valve ) - { - case H1_VALV: - setH1Position( 0 ); - break; - - case H19_VALV: - setH19Position( 0 ); - break; - - default: - // Do nothing as the fault mode is checked in the exec function - break; - } + setValveZeroEncoderPosition( valve ); } if ( valveEncPosistion >= ZERO_ENC_DEBOUNCE_THRESHOLD_CNT ) { // Keep reseting the debouce timer until the encoder count is less than the encoder count is less than the number currentValveStates[ valve ].valveOpsStartTime = getMSTimerCount(); } - else if ( TRUE == didTimeout( currentValveStates[ valve ].valveOpsStartTime, 2000 /*ZERO_ENC_DEBOUNCE_TIMEOUT_MS*/ ) ) + else if ( TRUE == didTimeout( currentValveStates[ valve ].valveOpsStartTime, ZERO_ENC_DEBOUNCE_TIMEOUT_MS ) ) { -#ifndef ASN_DEMO // Position C is hard coded as count 8. // Position D is hard coded as an offset form 0. - currentValveStates[ valve ].positionsABC[ VALVE_POSITION_C_CLOSE ] = ROTARY_VALVE_MICROSTEP_FRACTION; - currentValveStates[ valve ].positionsABC[ VALVE_POSITION_D_PARTIAL_CLOSE ] = POS_D_VENOUS_OFFSET_FROM_ZERO_CNT; - nextState = VALVE_STATE_HOMING_NOT_STARTED; -#endif - -#ifdef ASN_DEMO - nextState = VALVE_STATE_HOMING_NOT_STARTED; - switch ( valve ) - { - case H1_VALV: - setH1Position( 880 ); - break; - - case H19_VALV: - setH19Position( 880 ); - break; - - default: - // Do nothing as the fault mode is checked in the exec function - break; - } - nextState = VALVE_STATE_HOMING_NOT_STARTED; -#endif + currentValveStates[ valve ].positionsABC[ VALVE_POSITION_C_CLOSE ] = ROTARY_VALVE_MICROSTEP_FRACTION; + currentValveStates[ valve ].positionsABC[ VALVE_POSITION_D_PARTIAL_CLOSE ] = POS_D_PARTIAL_CLOSE_FROM_ZERO_CNT; + nextState = VALVE_STATE_HOMING_NOT_STARTED; } return nextState; @@ -520,28 +439,31 @@ { VALVE_STATE_T nextState = VALVE_STATE_HOMING_NOT_STARTED; -#ifndef ASN_DEMO + checkValveInRange( valve, SW_FAULT_ID_TD_VALVES_INVALID_NOT_HOMED ); + if ( TRUE == currentValveStates[ valve ].hasHomingBeenRequested ) { - switch ( currentValveStates[ valve ].valveHomingStatus ) - { - case VALVE_HOMING_INIT: - currentValveStates[ valve ].proposedEnergizedPos = ROTARY_VALVE_INIT_FULL_SWING_COUNTS; - break; + currentValveStates[ valve ].proposedEnergizedPos = ROTARY_VALVE_INIT_FULL_SWING_COUNTS; - case VALVE_HOMING_FORWARD: - currentValveStates[ valve ].proposedEnergizedPos += ROTARY_VALVE_MICROSTEP_FRACTION; - break; + //switch ( currentValveStates[ valve ].valveHomingStatus ) + //{ + // case VALVE_HOMING_INIT: + // currentValveStates[ valve ].proposedEnergizedPos = 1880; //ROTARY_VALVE_INIT_FULL_SWING_COUNTS; + // break; + // + // case VALVE_HOMING_FORWARD: + // currentValveStates[ valve ].proposedEnergizedPos += ROTARY_VALVE_MICROSTEP_FRACTION; + // break; + // + // case VALVE_HOMING_REVERSE: + // currentValveStates[ valve ].proposedEnergizedPos -= ROTARY_VALVE_MICROSTEP_FRACTION; + // break; + // + // default: + // // Do nothing as complete has nothing to do + // break; + //} - case VALVE_HOMING_REVERSE: - currentValveStates[ valve ].proposedEnergizedPos -= ROTARY_VALVE_MICROSTEP_FRACTION; - break; - - default: - // Do nothing as complete has nothing to do - break; - } - if ( ( currentValveStates[ valve ].proposedEnergizedPos <= ROTARY_VALVE_ENERGIZED_EDGE_MIN_COUNTS ) || ( currentValveStates[ valve ].proposedEnergizedPos >= ROTARY_VALVE_ENERGIZED_EDGE_MAX_COUNTS ) ) { @@ -559,7 +481,6 @@ setValveCmdChangePosition( valve, (U16)currentValveStates[ valve ].proposedEnergizedPos, MOTOR_DIR_FORWARD ); } } -#endif return nextState; } @@ -578,6 +499,8 @@ VALVE_STATE_T nextState = VALVE_STATE_HOMING_FIND_ENERGIZED_EDGE; S16 curPos = currentValveStates[ valve ].currentEncPosition; + checkValveInRange( valve, SW_FAULT_ID_TD_VALVES_INVALID_FIND_ENERGIZED_EDGE ); + // have we found forward edge of travel? if ( abs( curPos - currentValveStates[ valve ].priorEncPosition ) < VALVE_HOME_MIN_POS_CHG ) { @@ -587,22 +510,22 @@ } else if ( TRUE == didTimeout( currentValveStates[ valve ].valveOpsStartTime, HOMING_EDGE_DETECTION_TIMEOUT_MS ) ) { - if ( VALVE_HOMING_INIT == currentValveStates[ valve ].valveHomingStatus ) + //if ( VALVE_HOMING_INIT == currentValveStates[ valve ].valveHomingStatus ) + //{ + // S16 tgtPos = currentValveStates[ valve ].positionsABC[ VALVE_POSITION_C_CLOSE ]; + // S16 mag = curPos - tgtPos; // calculate magnitude of position change + // + // // Set commanded position and transition start time stamp + // // Transition back to position C to try the next energized position. It has to start from position C + // currentValveStates[ valve ].commandedPosition = VALVE_POSITION_C_CLOSE; + // currentValveStates[ valve ].valveOpsStartTime = getMSTimerCount(); + // currentValveStates[ valve ].valveHomingStatus = VALVE_HOMING_FORWARD; + // nextState = VALVE_STATE_IN_TRANSITION; + // // Command FPGA to move valve to commanded position + // setValveCmdChangePosition( valve, (U16)(mag), MOTOR_DIR_REVERSE ); + //} + //else { - S16 tgtPos = currentValveStates[ valve ].positionsABC[ VALVE_POSITION_C_CLOSE ]; - S16 mag = curPos - tgtPos; // calculate magnitude of position change - - // Set commanded position and transition start time stamp - // Transition back to position C to try the next energized position. It has to start from position C - currentValveStates[ valve ].commandedPosition = VALVE_POSITION_C_CLOSE; - currentValveStates[ valve ].valveOpsStartTime = getMSTimerCount(); - currentValveStates[ valve ].valveHomingStatus = VALVE_HOMING_FORWARD; - nextState = VALVE_STATE_IN_TRANSITION; - // Command FPGA to move valve to commanded position - setValveCmdChangePosition( valve, (U16)(mag), MOTOR_DIR_REVERSE ); - } - else - { S16 posC = currentValveStates[ valve ].positionsABC[ VALVE_POSITION_C_CLOSE ]; S16 posA = posC + ( ( curPos - posC ) / 2 ); @@ -655,6 +578,8 @@ { VALVE_STATE_T nextState = VALVE_STATE_IDLE; + checkValveInRange( valve, SW_FAULT_ID_TD_VALVES_INVALID_IDLE ); + // handle a home request if ( TRUE == currentValveStates[ valve ].hasHomingBeenRequested ) { @@ -668,6 +593,7 @@ currentValveStates[ valve ].commandedPosition = VALVE_POSITION_C_CLOSE; currentValveStates[ valve ].valveOpsStartTime = getMSTimerCount(); currentValveStates[ valve ].valveHomingStatus = VALVE_HOMING_INIT; + currentValveStates[ valve ].hasValveBeenReset = FALSE; nextState = VALVE_STATE_IN_TRANSITION; // Command FPGA to move valve to commanded position setValveCmdChangePosition( valve, (U16)(mag), MOTOR_DIR_REVERSE ); @@ -718,6 +644,8 @@ S16 tgtPos = currentValveStates[ valve ].positionsABC[ currentValveStates[ valve ].commandedPosition ]; S16 delta = tgtPos - curPos; + checkValveInRange( valve, SW_FAULT_ID_TD_VALVES_INVALID_IN_TRANSITION ); + // have we completed the transition? if ( abs( delta ) < VALVE_TRANSITION_MIN_TGT_DELTA ) { @@ -770,6 +698,25 @@ /*********************************************************************//** * @brief + * The checkValveInRange function checks whether the selected valve is in range + * and if not it will trigger the provided software fault. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given valve is invalid. + * @details \b Inputs: none + * @details \b Outputs: none + * @param valve the valve check whether it is in range + * @param SWFault the provided software fault to trigger + * @return none + *************************************************************************/ +static void checkValveInRange( VALVE_T valve, SW_FAULT_ID_T SWFault ) +{ + if ( valve >= NUM_OF_VALVES ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, (U32)SWFault, (U32)valve ) + } +} + +/*********************************************************************//** + * @brief * The publishValvesData function constructs and sends the valves data * broadcast message. * @details \b Message \b Sent: MSG_ID_TD_VALVES_DATA Index: firmware/App/Drivers/GLXferPump.h =================================================================== diff -u -r79a1bc916aaa25b696385e9b292bf6262bab6113 -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Drivers/GLXferPump.h (.../GLXferPump.h) (revision 79a1bc916aaa25b696385e9b292bf6262bab6113) +++ firmware/App/Drivers/GLXferPump.h (.../GLXferPump.h) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -34,7 +34,7 @@ // ********** public definitions ********** #define AIR_PUMP_MOTOR_OFF 0 ///< Power level setting (PWM) for H12 air pump to turn pump off. -#define AIR_PUMP_MOTOR_MAX_PWM 250 ///< Power level setting (PWM) maximum for H12 air pump. +#define AIR_PUMP_MOTOR_MAX_PWM 60 ///< Power level setting (PWM) maximum for H12 air pump. // ********** public function prototypes ********** Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -r0eb4b76d5209ff2adf583a9ab6ec8f87a5aa011b -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 0eb4b76d5209ff2adf583a9ab6ec8f87a5aa011b) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -53,6 +53,7 @@ #define COUNTS_TO_MILLI_BAR 100 ///< Counts to milli-bar conversion. #define BARO_SENSOR_REFERENCE_TEMP_C 2000 ///< Barometric sensor reference temperature in C. #define BARO_SENSOR_WAIT_FOR_COEFF_TIME_OUT_MS ( 20 * MS_PER_SECOND ) ///< Barometric sensor wait for coefficients timeout in milliseconds. +#define BARO_SENSOR_MAX_CRC_VALUE_TO_OVERRIDE 10000 ///< Barometric sensor maximum allowed CRC value to override to. static const U32 TWO_TO_POWER_OF_6 = ( 1 << 6 ); ///< 2^6. static const U32 TWO_TO_POWER_OF_7 = ( 1 << 7 ); ///< 2^7. @@ -530,7 +531,7 @@ *************************************************************************/ BOOL testBaroPressureMFGCRCOverride( MESSAGE_T *message ) { - BOOL result = u32Override( message, &baroConvConsts.coeffsCRC, 0, 10000 ); + BOOL result = u32Override( message, &baroConvConsts.coeffsCRC, 0, BARO_SENSOR_MAX_CRC_VALUE_TO_OVERRIDE ); return result; } Index: firmware/App/Drivers/RotaryValve.c =================================================================== diff -u -r8de3c971a08a5e2d822a6a1d1d1c477b6d4cbd5b -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Drivers/RotaryValve.c (.../RotaryValve.c) (revision 8de3c971a08a5e2d822a6a1d1d1c477b6d4cbd5b) +++ firmware/App/Drivers/RotaryValve.c (.../RotaryValve.c) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -213,7 +213,125 @@ return result; } +/*********************************************************************//** + * @brief + * The resetValve function resets the valve. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid valve given. + * @details \b Inputs: valveStatus[] + * @details \b Outputs: none + * @param valve ID of valve to get status for + * @return none + *************************************************************************/ +void resetValve( VALVE_T valve ) +{ + U08 resetValve = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_ENABLE_ENCODER | FPGA_PINCH_VALVES_DISABLE | + FPGA_PINCH_VALVES_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; + switch ( valve ) + { + case H1_VALV: + setH1Control( resetValve ); + break; + + case H19_VALV: + setH19Control( resetValve ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_RESET_REQ, (U32)valve ) + break; + } +} + +/*********************************************************************//** + * @brief + * The resetValveEncoder function resets the valve's encoder. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid valve given. + * @details \b Inputs: valveStatus[] + * @details \b Outputs: none + * @param valve ID of valve to get status for + * @return none + *************************************************************************/ +void resetValveEncoder( VALVE_T valve ) +{ + U08 resetEnc = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_RESET_ENCODER | FPGA_PINCH_VALVES_DISABLE | + FPGA_PINCH_VALVES_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; + + switch ( valve ) + { + case H1_VALV: + setH1Control( resetEnc ); + break; + + case H19_VALV: + setH19Control( resetEnc ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_RESET_ENCODER_REQ, (U32)valve ) + break; + } +} + +/*********************************************************************//** + * @brief + * The enableValve function enables the valve. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid valve given. + * @details \b Inputs: valveStatus[] + * @details \b Outputs: none + * @param valve ID of valve to get status for + * @return none + *************************************************************************/ +void enableValve( VALVE_T valve ) +{ + U08 enableValve = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_ENABLE_ENCODER | FPAG_PINCH_VALVES_ENABLE | + FPGA_PINCH_VALVES_NOT_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; + + switch ( valve ) + { + case H1_VALV: + setH1Control( enableValve ); + break; + + case H19_VALV: + setH19Control( enableValve ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ENABLE_REQ, (U32)valve ) + break; + } +} + +/*********************************************************************//** + * @brief + * The setValveZeroEncoderPosition function zeros the valve's encoders position. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid valve given. + * @details \b Inputs: valveStatus[] + * @details \b Outputs: none + * @param valve ID of valve to get status for + * @return none + *************************************************************************/ +void setValveZeroEncoderPosition( VALVE_T valve ) +{ + // First enable the valve and then set the position to 0 to clear the FPGA command registers + switch ( valve ) + { + case H1_VALV: + setH1Position( 0 ); + break; + + case H19_VALV: + setH19Position( 0 ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ENCODER_REQ, (U32)valve ) + break; + } +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Drivers/RotaryValve.h =================================================================== diff -u -ra074eec2ed7d04a1ea90072d7c9c013bf27a6e90 -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Drivers/RotaryValve.h (.../RotaryValve.h) (revision a074eec2ed7d04a1ea90072d7c9c013bf27a6e90) +++ firmware/App/Drivers/RotaryValve.h (.../RotaryValve.h) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -35,7 +35,7 @@ #define ROTARY_VALVE_MICROSTEP_FRACTION 8 ///< Rotary valve motors configured for 1/8 step microstepping. #define ROTARY_VALVE_GEAR_RATIO 3.7F ///< Rotary valve motor gear ratio is 3.7:1. -#define ROTARY_VALVE_INIT_FULL_SWING_COUNTS 1760 ///< Rotary valve swing arm travel range is appx. micro steps. +#define ROTARY_VALVE_INIT_FULL_SWING_COUNTS 1880 ///< Rotary valve swing arm travel range is appx. micro steps. #define ROTARY_VALVE_ENERGIZED_EDGE_MAX_COUNTS 1900 ///< Rotary valve energized edge maximum allowed counts. #define ROTARY_VALVE_ENERGIZED_EDGE_MIN_COUNTS 1700 ///< Rotary valve energized edge minimum allowed counts. @@ -55,6 +55,11 @@ void setValveCmdChangePosition( VALVE_T valve, U16 mag, MOTOR_DIR_T dir ); S16 getValveEncoderPosition( VALVE_T valve ); +void resetValve( VALVE_T valve ); +void resetValveEncoder( VALVE_T valve ); +void enableValve( VALVE_T valve ); +void setValveZeroEncoderPosition( VALVE_T valve ); + BOOL testValveEncoderPositionOverride( MESSAGE_T *message ); BOOL testValveStatusOverride( MESSAGE_T *message ); BOOL testSetValve( MESSAGE_T *message ); Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r22a8500467c47070dff55824e2ec567c007434ce -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 22a8500467c47070dff55824e2ec567c007434ce) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -966,7 +966,7 @@ { U32 treatmentTime = MIN_TREATMENT_TIME_MINUTES; -// if ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_ONE_MINUTE_TREATMENT ) ) + //if ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_ONE_MINUTE_TREATMENT ) ) { treatmentTime = 1; } Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rf979c391268b595e44fb6747d43487e4d2294e68 -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision f979c391268b595e44fb6747d43487e4d2294e68) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -133,12 +133,12 @@ SW_FAULT_ID_PERISTALTIC_PUMP_SET_SPEED_OUT_OF_RANGE = 102, SW_FAULT_ID_TD_VALVES_INVALID_PARAM = 103, SW_FAULT_ID_TD_VALVES_INVALID_VALVE1 = 104, - SW_FAULT_ID_TD_VALVES_INVALID_VALVE2 = 105, - SW_FAULT_ID_TD_VALVES_INVALID_VALVE3 = 106, - SW_FAULT_ID_TD_VALVES_INVALID_VALVE4 = 107, - SW_FAULT_ID_TD_VALVES_INVALID_VALVE5 = 108, - SW_FAULT_ID_TD_VALVES_INVALID_VALVE6 = 109, - SW_FAULT_ID_TD_VALVES_INVALID_VALVE7 = 110, + SW_FAULT_ID_TD_VALVES_INVALID_WAIT_FOR_POST_STATE = 105, + SW_FAULT_ID_TD_VALVES_INVALID_RESET = 106, + SW_FAULT_ID_TD_VALVES_INVALID_RESET_ENCODER = 107, + SW_FAULT_ID_TD_VALVES_INVALID_ENABLE = 108, + SW_FAULT_ID_TD_VALVES_INVALID_NOT_HOMED = 109, + SW_FAULT_ID_TD_VALVES_INVALID_FIND_ENERGIZED_EDGE = 110, SW_FAULT_ID_TD_VALVES_INVALID_VALVE8 = 111, SW_FAULT_ID_TD_VALVES_INVALID_STATE = 112, SW_FAULT_ID_BLOOD_FLOW_SET_TOO_HIGH = 113, @@ -170,6 +170,12 @@ SW_FAULT_ID_BUBBLES_INVALID_SENSOR_ID3 = 139, SW_FAULT_ID_TEMPERATURE_INVALID_STATE = 140, SW_FAULT_ID_TEMPERATURE_SENSOR_INVALID_SENSOR = 141, + SW_FAULT_ID_VALVES_INVALID_VALVE_RESET_REQ = 142, + SW_FAULT_ID_VALVES_INVALID_VALVE_RESET_ENCODER_REQ = 143, + SW_FAULT_ID_VALVES_INVALID_VALVE_ENABLE_REQ = 144, + SW_FAULT_ID_VALVES_INVALID_VALVE_ENCODER_REQ = 145, + SW_FAULT_ID_TD_VALVES_INVALID_IDLE = 146, + SW_FAULT_ID_TD_VALVES_INVALID_IN_TRANSITION = 147, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/Messaging.c =================================================================== diff -u -rf979c391268b595e44fb6747d43487e4d2294e68 -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision f979c391268b595e44fb6747d43487e4d2294e68) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -175,6 +175,7 @@ { MSG_ID_TD_BARO_MFG_CRC_OVERRIDE, &testBaroPressureMFGCRCOverride }, { MSG_ID_TD_BARO_PRESSURE_OVERRIDE, &testBaroPressureOverride }, { MSG_ID_TD_TEMPERATURE_OVERRIDE, &testTemperatureOverride }, + { MSG_ID_TD_TEMPERATURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testTemperatureDataPublishIntervalOverride }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T))