Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -rdd5bc6e4b5b5477043261388db367312425d1be7 -r6d2e13dfca9285909eddd958ca82bf3da1157412 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision dd5bc6e4b5b5477043261388db367312425d1be7) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 6d2e13dfca9285909eddd958ca82bf3da1157412) @@ -55,7 +55,6 @@ { VALVE_POSITION_T commandedPosition; ///< Valve commanded position enum. VALVE_POSITION_T currentPosition; ///< Valve current position enum. -// S16 priorEncPosition; ///< Valve prior position in encoder counts. BOOL hasTransitionBeenRequested; ///< Valve transition request flag. VALVE_STATE_T controlState; ///< Valve control state. U32 valveOpsStartTime; ///< Valve transition start time. @@ -132,7 +131,6 @@ pendingValvePositionChange[ valve ] = VALVE_POSITION_NOT_IN_POSITION; } - #ifdef ASN_DEMO currentValveStates[ H1_VALV ].positionsABC[ VALVE_POSITION_C_CLOSE ] = ROTARY_VALVE_MICROSTEP_FRACTION; currentValveStates[ H1_VALV ].positionsABC[ VALVE_POSITION_B_OPEN ] = 1728; @@ -200,7 +198,8 @@ { BOOL result = FALSE; - if ( ( valve < NUM_OF_VALVES ) && ( position > VALVE_POSITION_NOT_IN_POSITION ) && ( position < NUM_OF_VALVE_POSITIONS ) ) + if ( ( valve < NUM_OF_VALVES ) && ( position > VALVE_POSITION_NOT_IN_POSITION ) && + ( position < NUM_OF_VALVE_POSITIONS ) ) { if ( ( TRUE == currentValveStates[ valve ].hasValveBeenHomed ) && ( FALSE == currentValveStates[ valve ].homingOperationActive ) && @@ -213,7 +212,8 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_TD_VALVES_INVALID_PARAM, ( (U32)valve << SHIFT_16_BITS_FOR_WORD_SHIFT ) | (U32)position ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_TD_VALVES_INVALID_PARAM, + ( (U32)valve << SHIFT_16_BITS_FOR_WORD_SHIFT ) | (U32)position ) } SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_VALVE_POS_CHANGE, (U32)result, (U32)position ); @@ -456,6 +456,7 @@ nextState = VALVE_STATE_IN_TRANSITION; } } + // TODO: Later // else // { // if ( isValveAtCommandedPosition( valve ) != TRUE ) @@ -498,6 +499,7 @@ ( TRUE != getCPLDACPowerLossDetected() ) ) { currentValveStates[ valve ].currentPosition = VALVE_POSITION_NOT_IN_POSITION; + // TODO: Later //currentValveStates[ valve ].hasValveBeenHomed = FALSE; SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_VALVE_TRANSITION_TIMEOUT, (U32)valve, (U32)getPinchValvePosition( valve ) ) Index: firmware/App/Drivers/PinchValve.c =================================================================== diff -u -r88faf0b2c2b71c6d6b75637a11f7d5de41e351af -r6d2e13dfca9285909eddd958ca82bf3da1157412 --- firmware/App/Drivers/PinchValve.c (.../PinchValve.c) (revision 88faf0b2c2b71c6d6b75637a11f7d5de41e351af) +++ firmware/App/Drivers/PinchValve.c (.../PinchValve.c) (revision 6d2e13dfca9285909eddd958ca82bf3da1157412) @@ -152,7 +152,7 @@ // ********** private data ********** -/// This array is used for both H1_VALV +/// Command list for H1 homing function static PINCH_VALVE_COMMAND_T h1HomingCommands[ NUM_OF_PINCH_VALVE_HOMING_COMMANDS ] = { { PINCH_VALVE_PMD_CMD_SET_PROFILE_MODE, PINCH_VALVE_PROFILE_MODE_VELOCITY, 0, 0, 1, 0, TRUE }, // Selects velocity profile mode for homing @@ -175,7 +175,7 @@ { PINCH_VALVE_PMD_CMD_GET_EVENT_STATUS, 0, 0, 0, 0, 1, FALSE } // Polls event status until the third movement completes }; -/// This array is used for both H19_VALV +/// Command list for H1 homing function static PINCH_VALVE_COMMAND_T h19HomingCommands[ NUM_OF_PINCH_VALVE_HOMING_COMMANDS ] = { { PINCH_VALVE_PMD_CMD_SET_PROFILE_MODE, PINCH_VALVE_PROFILE_MODE_VELOCITY, 0, 0, 1, 0, TRUE }, // Selects velocity profile mode for homing @@ -198,7 +198,7 @@ { PINCH_VALVE_PMD_CMD_GET_EVENT_STATUS, 0, 0, 0, 0, 1, FALSE } // Polls event status until the third movement completes }; -/// This array is used for position commands +/// Command list for pinch valve position change function static PINCH_VALVE_COMMAND_T positionCommands[ NUM_OF_PINCH_VALVE_POSITION_COMMANDS ] = { { PINCH_VALVE_PMD_CMD_RESET_EVENT_STATUS, PINCH_VALVE_RESET_EVENT_STATUS_VALUE, 0, 0, 1, 0, TRUE }, // Clears event bits before position movement @@ -312,7 +312,7 @@ setSigned32CommandWords( &h19HomingCommands[ PINCH_VALVE_HOME_CMD_SET_VELOCITY_FIRST ], H19_HOMING_VELOCITY_FIRST ); setSigned32CommandWords( &h19HomingCommands[ PINCH_VALVE_HOME_CMD_SET_VELOCITY_SECOND ], H19_HOMING_VELOCITY_SECOND ); setSigned32CommandWords( &h19HomingCommands[ PINCH_VALVE_HOME_CMD_SET_VELOCITY_THIRD ], POSITION_VELOCITY ); - setSigned32CommandWords(&positionCommands[ PINCH_VALVE_POSITION_CMD_SET_VELOCITY ], POSITION_VELOCITY ); + setSigned32CommandWords( &positionCommands[ PINCH_VALVE_POSITION_CMD_SET_VELOCITY ], POSITION_VELOCITY ); for ( valve = FIRST_VALVE; valve < NUM_OF_VALVES; valve++ ) { @@ -686,7 +686,6 @@ return nextState; } - /*********************************************************************//** * @brief * The handlePinchValveFunctionSendState function submits the next command @@ -1203,18 +1202,11 @@ positionB = valvePositions[ valve ][ VALVE_POSITION_B_OPEN ]; positionC = valvePositions[ valve ][ VALVE_POSITION_C_CLOSE ]; valvePositions[ valve ][ VALVE_POSITION_A_INSERT_EJECT ] = positionB + ( ( positionC - positionB ) / 2 ); -// if ( H1_VALV == valve ) -// { -// setSigned32CommandWords( &h1HomingCommands[ PINCH_VALVE_HOME_CMD_SET_POSITION ], valvePositions[ valve ][ VALVE_POSITION_A_INSERT_EJECT ] ); -// } -// else if (H19_VALV == valve ) -// { -// setSigned32CommandWords( &h19HomingCommands[ PINCH_VALVE_HOME_CMD_SET_POSITION ], valvePositions[ valve ][ VALVE_POSITION_A_INSERT_EJECT ] ); -// } break; default: - break; + // unhandled position - do nothing + break; } } else @@ -1226,7 +1218,8 @@ break; default: - break; + // unhandled position - do nothing + break; } } } @@ -1367,6 +1360,7 @@ U08 transmittedCount; U08 receivedCount; + // TODO: Later to restore this // if ( TRUE == isValidPinchValve( valve ) ) // { // // Transmit count for command header. @@ -1386,7 +1380,6 @@ return result; } - /*********************************************************************//** * @brief * The readPinchValveErrorCount function reads the current error count for @@ -1511,9 +1504,16 @@ *************************************************************************/ static BOOL isValidPinchValvePosition( VALVE_POSITION_T position ) { - BOOL result; + BOOL result = FALSE; - result = ( ( position > VALVE_POSITION_NOT_IN_POSITION ) && ( position < NUM_OF_VALVE_POSITIONS ) ); + if ( ( position > VALVE_POSITION_NOT_IN_POSITION ) && ( position < NUM_OF_VALVE_POSITIONS ) ) + { + result = TRUE; + } + else + { + result = FALSE; + } return result; } Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -r1c21d74bc369572b0fcc5b978adc23dc9ce7c656 -r6d2e13dfca9285909eddd958ca82bf3da1157412 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 1c21d74bc369572b0fcc5b978adc23dc9ce7c656) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 6d2e13dfca9285909eddd958ca82bf3da1157412) @@ -112,8 +112,10 @@ // Control blood pressure vitals execBPModule(); - // Control pinch valves + // Control valves execValvesController(); + + // Control pinch valves execPinchValveFunction(); // Control ejector Index: firmware/App/Tasks/TaskPriority.c =================================================================== diff -u -r456bf0eefe82f055caaa43fc9c2b16a7a60a7895 -r6d2e13dfca9285909eddd958ca82bf3da1157412 --- firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 456bf0eefe82f055caaa43fc9c2b16a7a60a7895) +++ firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 6d2e13dfca9285909eddd958ca82bf3da1157412) @@ -64,8 +64,6 @@ // Verify processor clock speed against FPGA clock // execFPGAClockSpeedTest(); - execPinchValveCommand(); - // Monitor and process buttons execButtons(); @@ -78,6 +76,9 @@ // Monitor air bubble detectors execBubbles(); + // Execute pinch valve command state machine + execPinchValveCommand(); + // Monitor / Control syringe pump execSyringePump();