Index: firmware/App/Controllers/AirPump.c =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rbe3707da4ead2a2eb0462e7e496a8cf407682957 --- firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision be3707da4ead2a2eb0462e7e496a8cf407682957) @@ -37,6 +37,7 @@ /// Payload record structure for air pump test set command message payload. typedef struct { + U32 reset; ///< Air pump reset U32 h12State; ///< Air pump state to command. U32 h12Power; ///< Air pump power level to command. } AIR_PUMP_SET_CMD_PAYLOAD_T; @@ -47,6 +48,7 @@ static AIR_PUMP_STATE_T currentAirPumpState; ///< Current air pump control state. static U08 currentAirPumpPowerLevel; ///< Current air pump power level setting. static U32 airPumpDataPublicationTimerCounter; ///< Air pump data broadcast timer counter. +static BOOL airPumpTesterOverrideActive; ///< Air pump reset activation. static OVERRIDE_U32_T airPumpDataPublishInterval; ///< Air pump data broadcast interval (in ms). // ********** private function prototypes ********** @@ -72,6 +74,7 @@ airPumpDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; currentAirPumpState = AIR_PUMP_STATE_INIT; currentAirPumpPowerLevel = AIR_PUMP_MOTOR_OFF; + airPumpTesterOverrideActive = FALSE; airPumpDataPublishInterval.data = AIR_PUMP_DATA_PUB_INTERVAL; airPumpDataPublishInterval.ovData = AIR_PUMP_DATA_PUB_INTERVAL; airPumpDataPublishInterval.ovInitData = AIR_PUMP_DATA_PUB_INTERVAL; @@ -83,13 +86,21 @@ * The setAirPumpState function sets the current air pump state machine state. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid state given. * @details \b Inputs: currentAirPumpState - * @details \b Outputs: currentAirPumpState, currentAirPumpMotorPowerLevel + * @details \b Outputs: currentAirPumpState, currentAirPumpMotorPowerLevel, + * reset status. * @param state Air pump state to set * @param power Power level to set air pump to + * @param reset Control to give back to firmware * @return none *************************************************************************/ -void setAirPumpState( AIR_PUMP_STATE_T state, U08 power ) +void setAirPumpState( AIR_PUMP_STATE_T state, U08 power, BOOL reset ) { + if ( reset != FALSE ) + { + airPumpTesterOverrideActive = FALSE; + return ; + } + if ( state < NUM_OF_AIR_PUMP_STATES ) { currentAirPumpState = state; @@ -267,13 +278,13 @@ if ( TRUE == isTestingActivated() ) { // Verify payload length is valid - if ( sizeof( U32 ) + sizeof( U32 ) == message->hdr.payloadLen ) + if ( sizeof( U32 ) + sizeof( U32 ) + sizeof( U32 ) == message->hdr.payloadLen ) { U08 *msgPayload = &message->payload[0]; AIR_PUMP_SET_CMD_PAYLOAD_T payload; memcpy( &payload, msgPayload, sizeof( AIR_PUMP_SET_CMD_PAYLOAD_T ) ); - setAirPumpState( (AIR_PUMP_STATE_T)payload.h12State, (U08)payload.h12Power ); + setAirPumpState( (AIR_PUMP_STATE_T)payload.h12State, (U08)payload.h12Power, (payload.reset != 0U) ); result = TRUE; } } Index: firmware/App/Controllers/AirPump.h =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rbe3707da4ead2a2eb0462e7e496a8cf407682957 --- firmware/App/Controllers/AirPump.h (.../AirPump.h) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Controllers/AirPump.h (.../AirPump.h) (revision be3707da4ead2a2eb0462e7e496a8cf407682957) @@ -55,7 +55,7 @@ void initAirPump(void); void execAirPumpController(void); -void setAirPumpState( AIR_PUMP_STATE_T state, U08 power ); +void setAirPumpState( AIR_PUMP_STATE_T state, U08 power, BOOL reset ); AIR_PUMP_STATE_T getAirPumpState( void ); BOOL testAirPumpDataPublishIntervalOverride( MESSAGE_T *message ); Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rbe3707da4ead2a2eb0462e7e496a8cf407682957 --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision be3707da4ead2a2eb0462e7e496a8cf407682957) @@ -331,7 +331,7 @@ if ( TRUE == pendingStartAirTrapController ) { pendingStartAirTrapController = FALSE; - setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF ); + setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF, FALSE ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); result = AIR_TRAP_CLOSED_STATE; @@ -367,7 +367,7 @@ ( TRUE == didTimeout( airTrapLowerDelayStartTime, AIR_PUMP_ON_DELAY_TIME_MS ) ) ) { set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_OPEN_STATE ); // open valve H13 to allow air to be pumped into air trap from atmosphere - setAirPumpState( AIR_PUMP_STATE_ON, getAirPumpLowerPowerLevel() ); + setAirPumpState( AIR_PUMP_STATE_ON, getAirPumpLowerPowerLevel(), FALSE ); airTrapLowerStartTime = getMSTimerCount(); signalInitiatePressureStabilization( USE_SHORT_STABILIZATION_PERIOD ); SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_AIR_TRAP_LOWER, ON, 0 ); @@ -379,7 +379,7 @@ else if ( ( airTrapWasFilledAtStartOfTreatement != TRUE ) || ( AIR_TRAP_LEVEL_AIR == getLevelSensorState( H17_LEVL ) ) ) { - setAirPumpState( AIR_PUMP_STATE_ON, getAirPumpRaisePowerLevel() ); + setAirPumpState( AIR_PUMP_STATE_ON, getAirPumpRaisePowerLevel(), FALSE ); set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_OPEN_STATE ); // open valve H20 to allow air to be pumped out of air trap to atmosphere airTrapFillStartTime = getMSTimerCount(); SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_AIR_TRAP_FILL, ON, 0 ); @@ -406,7 +406,7 @@ if ( TRUE == pendingStopAirTrapController ) { pendingStopAirTrapController = FALSE; - setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF ); + setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF, FALSE ); set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); result = AIR_TRAP_MANUAL_CONTROL_STATE; } @@ -416,7 +416,7 @@ airTrapWasFilledAtStartOfTreatement = TRUE; set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_OPEN_STATE ); // open valve H13 to allow air to be pumped into air trap from atmosphere - setAirPumpState( AIR_PUMP_STATE_ON, getAirPumpLowerPowerLevel() ); + setAirPumpState( AIR_PUMP_STATE_ON, getAirPumpLowerPowerLevel(), FALSE ); airTrapLowerStartTime = getMSTimerCount(); signalInitiatePressureStabilization( USE_SHORT_STABILIZATION_PERIOD ); SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_AIR_TRAP_LOWER, ON, 0 ); @@ -447,15 +447,15 @@ if ( TRUE == pendingStopAirTrapController ) { pendingStopAirTrapController = FALSE; - setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF ); + setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF, FALSE ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); result = AIR_TRAP_MANUAL_CONTROL_STATE; } // Transition back to closed state when air trap lower level operation completed when air detected at upper level else if ( ( TRUE == didTimeout( airTrapLowerStartTime, airPumpStopTime ) ) || ( AIR_TRAP_LEVEL_AIR == getRawLevelSensorState( H16_LEVL ) ) ) { - setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF ); + setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF, FALSE ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); airTrapLowerDelayStartTime = getMSTimerCount(); signalLowVenousPressureCheck(); Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rbe3707da4ead2a2eb0462e7e496a8cf407682957 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision be3707da4ead2a2eb0462e7e496a8cf407682957) @@ -166,7 +166,7 @@ { case TD_FAULT_ENERGIZED_STATE: signalBloodPumpHardStop(); - setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF ); + setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF, FALSE ); setValvePosition( H1_VALV, VALVE_POSITION_C_CLOSE ); setValvePosition( H19_VALV, VALVE_POSITION_C_CLOSE ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); @@ -177,7 +177,7 @@ case TD_FAULT_DEENERGIZED_STATE: signalBloodPumpHardStop(); - setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF ); + setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF, FALSE ); setValvePosition( H1_VALV, VALVE_POSITION_C_CLOSE ); setValvePosition( H19_VALV, VALVE_POSITION_C_CLOSE ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); Index: firmware/App/Modes/ModeTxParams.c =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rbe3707da4ead2a2eb0462e7e496a8cf407682957 --- firmware/App/Modes/ModeTxParams.c (.../ModeTxParams.c) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Modes/ModeTxParams.c (.../ModeTxParams.c) (revision be3707da4ead2a2eb0462e7e496a8cf407682957) @@ -209,7 +209,7 @@ // Start out with all actuators off in treatment parameters mode signalBloodPumpHardStop(); - setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF ); + setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF, FALSE ); endAirTrapControl(); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE );