Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r2bdd010a62ea113058640fc1e9c763dcf885c93c -r5b3be58e0b2dc2ffce534363f85023d03ca561ba --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 2bdd010a62ea113058640fc1e9c763dcf885c93c) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 5b3be58e0b2dc2ffce534363f85023d03ca561ba) @@ -62,6 +62,7 @@ #define SYRINGE_PUMP_RETRACT_RATE 10800.0 ///< Retract rate is 15 mL/ 5 s = 3 mL/s = 10,800 mL/hr. #define SYRINGE_PUMP_SEEK_RATE 3600.0 ///< Seek plunger rate is 5 mL/ 5 s = 1 mL/s = 3,600 mL/hr. #define SYRINGE_PUMP_PRIME_RATE 635.0 ///< Prime rate is 0.5 mm ^ 2 x PI x 450 mm = 0.353 mL / 2s = 635 mL/hr. +#define SYRINGE_PUMP_MAX_RATE 11000.0 ///< Maximum rate of the syringe pump (in mL). #define SYRINGE_PUMP_RATE_ALARM_PERSISTENCE ( 1 * MS_PER_SECOND ) ///< Alarm persistence period for syringe pump speed check alarms. @@ -793,7 +794,6 @@ syringePumpHomePositionOffset = getFPGASyringePumpEncoderPosition(); syringePumpPosition.data = 0; syringePumpVolumeDelivered.data = 0.0; - syringePumpHasBeenHomed = TRUE; result = SYRINGE_PUMP_OFF_STATE; } // Stop retract if syringe is detected (should not have a syringe loaded during retract) @@ -1281,69 +1281,323 @@ return result; } -BOOL testSyringePumpOperationRequest( U32 op, F32 rate, F32 volume ) +/*********************************************************************//** + * @brief + * The testSyringePumpOperationRequest function requests a given syringe pump + * operation. + * @details Inputs: none + * @details Outputs: TBD + * @param opParams record containing the requested operation and its parameters + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSyringePumpOperationRequest( SYRINGE_PUMP_OP_PAYLOAD_T opParams ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + SYRINGE_PUMP_OPERATION_T op = (SYRINGE_PUMP_OPERATION_T)(opParams.syringePumpOp); + + switch ( op ) + { + case SYRINGE_PUMP_OP_STOP: + stopSyringePump(); + result = TRUE; + break; + + case SYRINGE_PUMP_OP_RETRACT: + result = retractSyringePump(); + break; + + case SYRINGE_PUMP_OP_SEEK_AND_PRIME: + result = primeSyringePump(); + break; + + case SYRINGE_PUMP_OP_BOLUS: + result = startHeparinBolus( opParams.rate ); + break; + + case SYRINGE_PUMP_OP_CONTINUOUS: + result = startHeparinContinuous( opParams.rate ); + break; + + default: + // Ok, just ignore and we will return FALSE rejecting request + break; + } + } + + return result; } -BOOL testSetSyringePumpMeasuredRateOverride( U32 value ) +/*********************************************************************//** + * @brief + * The testSetSyringePumpMeasuredRateOverride function overrides the measured + * rate of the syringe pump. + * @details Inputs: none + * @details Outputs: syringePumpMeasRate + * @param value override syringe pump measured rate with this value (in mL/hr) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetSyringePumpMeasuredRateOverride( F32 value ) { + BOOL result = FALSE; + if ( ( TRUE == isTestingActivated() ) && ( value <= SYRINGE_PUMP_MAX_RATE ) ) + { + result = TRUE; + syringePumpMeasRate.ovData = value; + syringePumpMeasRate.override = OVERRIDE_KEY; + } + + return result; } +/*********************************************************************//** + * @brief + * The testResetSyringePumpMeasuredRateOverride function resets the override + * of the syringe pump measured rate. + * @details Inputs: none + * @details Outputs: syringePumpMeasRate + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ BOOL testResetSyringePumpMeasuredRateOverride( void ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + syringePumpMeasRate.override = OVERRIDE_RESET; + syringePumpMeasRate.ovData = syringePumpMeasRate.ovInitData; + } + + return result; } -BOOL testSetSyringePumpMeasuredForceOverride( U32 value ) +/*********************************************************************//** + * @brief + * The testSetSyringePumpMeasuredForceOverride function overrides the measured + * force analog signal of the syringe pump. + * @details Inputs: none + * @details Outputs: syringePumpMeasForce + * @param value override syringe pump measured force signal with this value (in V) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetSyringePumpMeasuredForceOverride( F32 value ) { + BOOL result = FALSE; + if ( ( TRUE == isTestingActivated() ) && ( value >= 0.0 ) && ( value <= SYRINGE_PUMP_ADC_REF_V ) ) + { + result = TRUE; + syringePumpMeasForce.ovData = value; + syringePumpMeasForce.override = OVERRIDE_KEY; + } + + return result; } +/*********************************************************************//** + * @brief + * The testResetSyringePumpMeasuredForceOverride function resets the override + * of the syringe pump measured force analog signal. + * @details Inputs: none + * @details Outputs: syringePumpMeasForce + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ BOOL testResetSyringePumpMeasuredForceOverride( void ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + syringePumpMeasForce.override = OVERRIDE_RESET; + syringePumpMeasForce.ovData = syringePumpMeasForce.ovInitData; + } + + return result; } -BOOL testSetSyringePumpMeasuredSyringeDetectOverride( U32 value ) +/*********************************************************************//** + * @brief + * The testSetSyringePumpMeasuredSyringeDetectOverride function overrides the measured + * syringe detect analog signal of the syringe pump. + * @details Inputs: none + * @details Outputs: syringePumpMeasSyringeDetectionSwitch + * @param value override syringe pump measured syringe detection signal with this value (in V) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetSyringePumpMeasuredSyringeDetectOverride( F32 value ) { + BOOL result = FALSE; + if ( ( TRUE == isTestingActivated() ) && ( value >= 0.0 ) && ( value <= SYRINGE_PUMP_ADC_REF_V ) ) + { + result = TRUE; + syringePumpMeasSyringeDetectionSwitch.ovData = value; + syringePumpMeasSyringeDetectionSwitch.override = OVERRIDE_KEY; + } + + return result; } +/*********************************************************************//** + * @brief + * The testResetSyringePumpMeasuredSyringeDetectOverride function resets the override + * of the syringe pump measured syringe detect analog signal. + * @details Inputs: none + * @details Outputs: syringePumpMeasSyringeDetectionSwitch + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ BOOL testResetSyringePumpMeasuredSyringeDetectOverride( void ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + syringePumpMeasSyringeDetectionSwitch.override = OVERRIDE_RESET; + syringePumpMeasSyringeDetectionSwitch.ovData = syringePumpMeasSyringeDetectionSwitch.ovInitData; + } + + return result; } -BOOL testSetSyringePumpMeasuredHomeOverride( U32 value ) +/*********************************************************************//** + * @brief + * The testSetSyringePumpMeasuredHomeOverride function overrides the measured + * home analog signal of the syringe pump. + * @details Inputs: none + * @details Outputs: syringePumpMeasHome + * @param value override syringe pump measured home signal with this value (in V) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetSyringePumpMeasuredHomeOverride( F32 value ) { + BOOL result = FALSE; + if ( ( TRUE == isTestingActivated() ) && ( value >= 0.0 ) && ( value <= SYRINGE_PUMP_ADC_REF_V ) ) + { + result = TRUE; + syringePumpMeasHome.ovData = value; + syringePumpMeasHome.override = OVERRIDE_KEY; + } + + return result; } +/*********************************************************************//** + * @brief + * The testResetSyringePumpMeasuredHomeOverride function resets the override + * of the syringe pump measured home analog signal. + * @details Inputs: none + * @details Outputs: syringePumpMeasHome + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ BOOL testResetSyringePumpMeasuredHomeOverride( void ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + syringePumpMeasHome.override = OVERRIDE_RESET; + syringePumpMeasHome.ovData = syringePumpMeasHome.ovInitData; + } + + return result; } -BOOL testSetSyringePumpMeasuredPositionOverride( U32 value ) +/*********************************************************************//** + * @brief + * The testSetSyringePumpMeasuredPositionOverride function overrides the measured + * position of the syringe pump. + * @details Inputs: none + * @details Outputs: syringePumpPosition + * @param value override syringe pump measured position with this value (in encoder counts) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetSyringePumpMeasuredPositionOverride( S32 value ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + syringePumpPosition.ovData = value; + syringePumpPosition.override = OVERRIDE_KEY; + } + + return result; } +/*********************************************************************//** + * @brief + * The testResetSyringePumpMeasuredPositionOverride function resets the override + * of the syringe pump measured position. + * @details Inputs: none + * @details Outputs: syringePumpPosition + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ BOOL testResetSyringePumpMeasuredPositionOverride( void ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + syringePumpPosition.override = OVERRIDE_RESET; + syringePumpPosition.ovData = syringePumpPosition.ovInitData; + } + + return result; } -BOOL testSetSyringePumpMeasuredVolumeOverride( U32 value ) +/*********************************************************************//** + * @brief + * The testSetSyringePumpMeasuredVolumeOverride function overrides the measured + * rate of the syringe pump measured volume delivered. + * @details Inputs: none + * @details Outputs: syringePumpVolumeDelivered + * @param value override syringe pump measured volume with this value (in mL) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetSyringePumpMeasuredVolumeOverride( F32 value ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + syringePumpVolumeDelivered.ovData = value; + syringePumpVolumeDelivered.override = OVERRIDE_KEY; + } + + return result; } +/*********************************************************************//** + * @brief + * The testResetSyringePumpMeasuredVolumeOverride function resets the override + * of the syringe pump measured volume delivered. + * @details Inputs: none + * @details Outputs: syringePumpVolumeDelivered + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ BOOL testResetSyringePumpMeasuredVolumeOverride( void ) { + BOOL result = FALSE; + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + syringePumpVolumeDelivered.override = OVERRIDE_RESET; + syringePumpVolumeDelivered.ovData = syringePumpVolumeDelivered.ovInitData; + } + + return result; } /**@}*/ Index: firmware/App/Controllers/SyringePump.h =================================================================== diff -u -r2bdd010a62ea113058640fc1e9c763dcf885c93c -r5b3be58e0b2dc2ffce534363f85023d03ca561ba --- firmware/App/Controllers/SyringePump.h (.../SyringePump.h) (revision 2bdd010a62ea113058640fc1e9c763dcf885c93c) +++ firmware/App/Controllers/SyringePump.h (.../SyringePump.h) (revision 5b3be58e0b2dc2ffce534363f85023d03ca561ba) @@ -31,9 +31,28 @@ // ********** public definitions ********** -/// Payload record structure for the pressure & occlusions data message. +/// Enumeration of syringe pump operations. +typedef enum SyringePumpOperations +{ + SYRINGE_PUMP_OP_STOP = 0, + SYRINGE_PUMP_OP_RETRACT = 1, + SYRINGE_PUMP_OP_SEEK_AND_PRIME = 2, + SYRINGE_PUMP_OP_BOLUS = 3, + SYRINGE_PUMP_OP_CONTINUOUS = 4, + NUM_OF_SYRINGE_PUMP_OPS +} SYRINGE_PUMP_OPERATION_T; + +/// Payload record structure for the syringe pump operation request message. typedef struct { + U32 syringePumpOp; + F32 rate; + F32 volume; +} SYRINGE_PUMP_OP_PAYLOAD_T; + +/// Payload record structure for the syringe pump data message. +typedef struct +{ U32 syringePumpState; F32 syringePumpSetRate; F32 syringePumpMeasRate; @@ -44,16 +63,6 @@ F32 syringePumpMeasForce; } SYRINGE_PUMP_DATA_PAYLOAD_T; -/// Enumeration of syringe pump operations. -typedef enum SyringePumpOperations -{ - SYRINGE_PUMP_OP_STOP = 0 - SYRINGE_PUMP_OP_RETRACT = 1 - SYRINGE_PUMP_OP_SEEK_AND_PRIME = 2 - SYRINGE_PUMP_OP_BOLUS = 3 - SYRINGE_PUMP_OP_CONTINUOUS = 4 -} SYRINGE_PUMP_OPERATION_T; - // ********** public function prototypes ********** void initSyringePump( void ); @@ -75,18 +84,18 @@ BOOL testSetSyringePumpDataPublishIntervalOverride( U32 value ); BOOL testResetSyringePumpDataPublishIntervalOverride( void ); -BOOL testSyringePumpOperationRequest( U32 op, F32 rate, F32 volume ); -BOOL testSetSyringePumpMeasuredRateOverride( U32 value ); +BOOL testSyringePumpOperationRequest( SYRINGE_PUMP_OP_PAYLOAD_T opParams ); +BOOL testSetSyringePumpMeasuredRateOverride( F32 value ); BOOL testResetSyringePumpMeasuredRateOverride( void ); -BOOL testSetSyringePumpMeasuredForceOverride( U32 value ); +BOOL testSetSyringePumpMeasuredForceOverride( F32 value ); BOOL testResetSyringePumpMeasuredForceOverride( void ); -BOOL testSetSyringePumpMeasuredSyringeDetectOverride( U32 value ); +BOOL testSetSyringePumpMeasuredSyringeDetectOverride( F32 value ); BOOL testResetSyringePumpMeasuredSyringeDetectOverride( void ); -BOOL testSetSyringePumpMeasuredHomeOverride( U32 value ); +BOOL testSetSyringePumpMeasuredHomeOverride( F32 value ); BOOL testResetSyringePumpMeasuredHomeOverride( void ); -BOOL testSetSyringePumpMeasuredPositionOverride( U32 value ); +BOOL testSetSyringePumpMeasuredPositionOverride( S32 value ); BOOL testResetSyringePumpMeasuredPositionOverride( void ); -BOOL testSetSyringePumpMeasuredVolumeOverride( U32 value ); +BOOL testSetSyringePumpMeasuredVolumeOverride( F32 value ); BOOL testResetSyringePumpMeasuredVolumeOverride( void ); /**@}*/ Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r2bdd010a62ea113058640fc1e9c763dcf885c93c -r5b3be58e0b2dc2ffce534363f85023d03ca561ba --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 2bdd010a62ea113058640fc1e9c763dcf885c93c) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 5b3be58e0b2dc2ffce534363f85023d03ca561ba) @@ -909,7 +909,7 @@ bolusSalineVolumeDelivered += volSinceLastUpdateMl; totalSalineVolumeDelivered += volSinceLastUpdateMl; bolusSalineMotorCount = u32DiffWithWrap( bolusSalineLastMotorCount, getBloodPumpMotorCount() ) / BP_HALL_EDGE_COUNTS_PER_REV; - bolusSalineVolumeDelivered_Safety = ( (F32)bolusSalineMotorCount * VOLUME_PER_BP_MOTOR_REV_ML ); // TODO - include upstream pressure compensation to this calc + bolusSalineVolumeDelivered_Safety = ( (F32)bolusSalineMotorCount * VOLUME_PER_BP_MOTOR_REV_ML ); // TODO - include upstream pressure compensation to this calc (from PBA). #ifndef DISABLE_SALINE_BOLUS_CHECKS // TODO - check for empty saline bag Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -re23087e0c17f6ea81d60641fdb52121a8dd5a099 -r5b3be58e0b2dc2ffce534363f85023d03ca561ba --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision e23087e0c17f6ea81d60641fdb52121a8dd5a099) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 5b3be58e0b2dc2ffce534363f85023d03ca561ba) @@ -1455,6 +1455,38 @@ handleTestSuperClearAlarmsRequest( message ); break; + case MSG_ID_HD_SYRINGE_PUMP_SEND_INTERVAL_OVERRIDE: + handleTestSyringePumpDataBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_OPERATION_REQUEST: + handleTestSyringePumpOperationRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_RATE_OVERRIDE: + handleTestSyringePumpMeasuredRateOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_FORCE_OVERRIDE: + handleTestSyringePumpMeasuredForceOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_SYRINGE_DETECT_OVERRIDE: + handleTestSyringePumpMeasuredSyringeDetectOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_HOME_OVERRIDE: + handleTestSyringePumpMeasuredHomeOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_POSITION_OVERRIDE: + handleTestSyringePumpMeasuredPositionOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_VOLUME_OVERRIDE: + handleTestSyringePumpMeasuredVolumeOverrideRequest( message ); + break; + default: // TODO - unrecognized message ID received - ignore break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -racb165deff7036d41bbe12678f35cd9539012838 -r5b3be58e0b2dc2ffce534363f85023d03ca561ba --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision acb165deff7036d41bbe12678f35cd9539012838) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 5b3be58e0b2dc2ffce534363f85023d03ca561ba) @@ -4313,4 +4313,253 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } +/*********************************************************************//** + * @brief + * The handleTestSyringePumpDataBroadcastIntervalOverrideRequest function handles a + * request to override the syringe pump data broadcast interval. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestSyringePumpDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetSyringePumpDataPublishIntervalOverride( (U32)(payload.state.u32) ); + } + else + { + result = testResetSyringePumpDataPublishIntervalOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestSyringePumpOperationRequest function handles a + * request to initiate a syringe pump operation. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestSyringePumpOperationRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + if ( message->hdr.payloadLen == sizeof(SYRINGE_PUMP_OP_PAYLOAD_T) ) + { + SYRINGE_PUMP_OP_PAYLOAD_T payload; + + memcpy( &payload, message->payload, sizeof(SYRINGE_PUMP_OP_PAYLOAD_T) ); + result = testSyringePumpOperationRequest( payload ); + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestSyringePumpMeasuredRateOverrideRequest function handles a + * request to override the syringe pump measured rate. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestSyringePumpMeasuredRateOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetSyringePumpMeasuredRateOverride( payload.state.f32 ); + } + else + { + result = testResetSyringePumpMeasuredRateOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestSyringePumpMeasuredForceOverrideRequest function handles a + * request to override the syringe pump measured force analog signal. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestSyringePumpMeasuredForceOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetSyringePumpMeasuredForceOverride( payload.state.f32 ); + } + else + { + result = testResetSyringePumpMeasuredForceOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestSyringePumpMeasuredSyringeDetectOverrideRequest function handles a + * request to override the syringe pump syringe detected analog signal. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestSyringePumpMeasuredSyringeDetectOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetSyringePumpMeasuredSyringeDetectOverride( payload.state.f32 ); + } + else + { + result = testResetSyringePumpMeasuredSyringeDetectOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestSyringePumpMeasuredHomeOverrideRequest function handles a + * request to override the syringe pump measured home analog signal. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestSyringePumpMeasuredHomeOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetSyringePumpMeasuredHomeOverride( payload.state.f32 ); + } + else + { + result = testResetSyringePumpMeasuredHomeOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestSyringePumpMeasuredPositionOverrideRequest function handles a + * request to override the syringe pump measured position. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestSyringePumpMeasuredPositionOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetSyringePumpMeasuredPositionOverride( (S32)(payload.state.u32) ); + } + else + { + result = testResetSyringePumpMeasuredPositionOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestSyringePumpMeasuredVolumeOverrideRequest function handles a + * request to override the syringe pump measured volume delivered. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestSyringePumpMeasuredVolumeOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetSyringePumpMeasuredVolumeOverride( payload.state.f32 ); + } + else + { + result = testResetSyringePumpMeasuredVolumeOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + /**@}*/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r1afd5c87ef15399998a743c2ebcafe2cc03bd363 -r5b3be58e0b2dc2ffce534363f85023d03ca561ba --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 1afd5c87ef15399998a743c2ebcafe2cc03bd363) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 5b3be58e0b2dc2ffce534363f85023d03ca561ba) @@ -475,6 +475,30 @@ // MSG_ID_HD_SET_OP_MODE_REQUEST void handleTestSetOpModeRequest( MESSAGE_T *message ); +// MSG_ID_HD_SYRINGE_PUMP_SEND_INTERVAL_OVERRIDE: +void handleTestSyringePumpDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SYRINGE_PUMP_OPERATION_REQUEST: +void handleTestSyringePumpOperationRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SYRINGE_PUMP_MEASURED_RATE_OVERRIDE: +void handleTestSyringePumpMeasuredRateOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SYRINGE_PUMP_MEASURED_FORCE_OVERRIDE: +void handleTestSyringePumpMeasuredForceOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SYRINGE_PUMP_SYRINGE_DETECT_OVERRIDE: +void handleTestSyringePumpMeasuredSyringeDetectOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SYRINGE_PUMP_MEASURED_HOME_OVERRIDE: +void handleTestSyringePumpMeasuredHomeOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SYRINGE_PUMP_MEASURED_POSITION_OVERRIDE: +void handleTestSyringePumpMeasuredPositionOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SYRINGE_PUMP_MEASURED_VOLUME_OVERRIDE: +void handleTestSyringePumpMeasuredVolumeOverrideRequest( MESSAGE_T *message ); + /**@}*/ #endif