Index: firmware/App/Drivers/PinchValve.c =================================================================== diff -u -r8c14bdff486bb7299381f19672bb9761b91c332b -r5b6e0bbf5048ea88c978afed93b03b29d6ce98f1 --- firmware/App/Drivers/PinchValve.c (.../PinchValve.c) (revision 8c14bdff486bb7299381f19672bb9761b91c332b) +++ firmware/App/Drivers/PinchValve.c (.../PinchValve.c) (revision 5b6e0bbf5048ea88c978afed93b03b29d6ce98f1) @@ -31,6 +31,8 @@ #define PINCH_VALVE_COMMAND_TIMEOUT_MS 1000 ///< Maximum FPGA command execution time. +#define PINCH_VALVE_HOME_OFFSET 10 ///< Offset (in encoder counts) from end of travel edge to set position B and C to. + #define PINCH_VALVE_FPGA_CMD_START_BIT_MASK 0x01 ///< Bit 0 starts a command transaction. (TODO: To change the comments later) #define PINCH_VALVE_FPGA_CMD_WRITE_ONLY_BIT_MASK 0x02 ///< Bit 1 selects a write-only command. #define PINCH_VALVE_FPGA_CMD_TX_COUNT_SHIFT 2 ///< Bits 4-2 contain transmit word count. @@ -1141,6 +1143,8 @@ *************************************************************************/ static PINCH_VALVE_CMD_STATE_T processPinchValveCommandOutput( VALVE_T valve ) { + PINCH_VALVE_CMD_STATE_T result = ; // V - IDLE + if ( TRUE == isValidPinchValve( valve ) ) { switch ( activeCommand[ valve ].cmdHeader ) @@ -1151,6 +1155,7 @@ case PINCH_VALVE_PMD_CMD_GET_EVENT_STATUS: eventStatus[ valve ] = commandOutputWord1[ valve ]; + // TODO - if not motion complete or motion error, stay in this state, otherwise idle break; default: @@ -1161,11 +1166,29 @@ switch ( activeCommandIndex[ valve ] ) { case PINCH_VALVE_HOME_CMD_GET_ACTUAL_POSITION_B: - currentValvePosition[ valve ] = getSigned32OutputValue( valve ); + currentValvePosition[ valve ] = getSigned32OutputValue( valve ) + if ( H1_VALV == valve ) + { + valvePositions[ valve ][ VALVE_POSITION_B_OPEN ] = currentValvePosition[ valve ] + PINCH_VALVE_HOME_OFFSET; + } + else + { + valvePositions[ valve ][ VALVE_POSITION_B_OPEN ] = currentValvePosition[ valve ] - PINCH_VALVE_HOME_OFFSET; + } break; case PINCH_VALVE_HOME_CMD_GET_ACTUAL_POSITION_C: currentValvePosition[ valve ] = getSigned32OutputValue( valve ); + if ( H1_VALV == valve ) + { + valvePositions[ valve ][ VALVE_POSITION_C_CLOSE ] = currentValvePosition[ valve ] - PINCH_VALVE_HOME_OFFSET; + valvePositions[ valve ][ VALVE_POSITION_A_INSERT_EJECT ] = ; + } + else + { + valvePositions[ valve ][ VALVE_POSITION_C_CLOSE ] = currentValvePosition[ valve ] + PINCH_VALVE_HOME_OFFSET; + valvePositions[ valve ][ VALVE_POSITION_A_INSERT_EJECT ] = ; + } break; default: