Index: firmware/App/Modes/StateTxBloodPrime.c =================================================================== diff -u -r40335bbf315100b9e556fc923973a4e879adbad9 -raeaaac9b79d9c2aa31ad18be9fb20fe52c936189 --- firmware/App/Modes/StateTxBloodPrime.c (.../StateTxBloodPrime.c) (revision 40335bbf315100b9e556fc923973a4e879adbad9) +++ firmware/App/Modes/StateTxBloodPrime.c (.../StateTxBloodPrime.c) (revision aeaaac9b79d9c2aa31ad18be9fb20fe52c936189) @@ -73,11 +73,9 @@ /*********************************************************************//** * @brief - * The initBloodPrime function initializes the Blood Prime state - * unit. Calling this function will reset blood prime and therefore should - * only be called when a new blood prime is due to begin. - * @details Inputs: none - * @details Outputs: Blood prime state unit initialized. + * The initBloodPrime function initializes the Blood Prime state unit. + * @details \b Inputs: none + * @details \b Outputs: Blood prime state unit initialized. * @return none *************************************************************************/ void initBloodPrime( void ) @@ -112,8 +110,8 @@ * state. This function will reset only what is required for resuming a * blood prime that was paused (alarm) so if a blood prime is being restarted, * call the initialize function first to reset everything. - * @details Inputs: none - * @details Outputs: actuators set for initial state of blood prime state + * @details \b Inputs: none + * @details \b Outputs: actuators set for initial state of blood prime state * @return none *************************************************************************/ void transitionToBloodPrime( void ) @@ -124,7 +122,7 @@ setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, TRUE ); // Require BP door to be closed during this state - doorClosedRequired( TRUE, TRUE ); + doorClosedRequired( TRUE ); // Set pinch valves setValvePosition( H1_VALV, VALVE_POSITION_B_OPEN ); // set arterial valve to pump blood from patient @@ -151,8 +149,8 @@ /*********************************************************************//** * @brief * The resetBloodPrimeFlags function resets the blood prime request flags. - * @details Inputs: none - * @details Outputs: Blood prime request flags reset to FALSE. + * @details \b Inputs: none + * @details \b Outputs: Blood prime request flags reset to FALSE. * @return none *************************************************************************/ static void resetBloodPrimeFlags( void ) @@ -164,8 +162,8 @@ * @brief * The getBloodPrimeVolume function gets the calculated blood prime volume * delivered. - * @details Inputs: cumulativeBloodPrimeVolume_mL - * @details Outputs: none + * @details \b Inputs: cumulativeBloodPrimeVolume_mL + * @details \b Outputs: none * @return the current blood prime volume delivered (in mL). *************************************************************************/ static F32 getBloodPrimeVolume( void ) @@ -183,8 +181,8 @@ /*********************************************************************//** * @brief * The execBloodPrime function executes the Blood Prime state machine. - * @details Inputs: bloodPrimeState - * @details Outputs: bloodPrimeState + * @details \b Inputs: bloodPrimeState + * @details \b Outputs: bloodPrimeState * @return none *************************************************************************/ void execBloodPrime( void ) @@ -211,8 +209,8 @@ * @brief * The handleBloodPrimeRampState function handles the blood prime ramp * state operations. - * @details Inputs: flags - * @details Outputs: flags handled + * @details \b Inputs: flags + * @details \b Outputs: flags handled * @return next blood prime state *************************************************************************/ static BLOOD_PRIME_STATE_T handleBloodPrimeRampState( void ) @@ -255,8 +253,8 @@ * @brief * The getCurrentBloodPrimeState function returns the current state of the * blood prime state. - * @details Inputs: bloodPrimeState - * @details Outputs: none + * @details \b Inputs: bloodPrimeState + * @details \b Outputs: none * @return bloodPrimeState *************************************************************************/ BLOOD_PRIME_STATE_T getCurrentBloodPrimeState( void ) @@ -266,10 +264,12 @@ /*********************************************************************//** * @brief - * The publishBloodPrimeData function publishes blood prime progress to UI - * at 1 Hz interval. - * @details Inputs: bloodPrimePublishTimerCtr - * @details Outputs: rinseback data published + * The publishBloodPrimeData function publishes blood prime data + * at interval. + * @details \b Message \b Sent: MSG_ID_TD_BLOOD_PRIME_PROGRESS_DATA + * @details \b Inputs: bloodPrimePublishTimerCtr, + * bloodPrimePublishInterval + * @details \b Outputs: blood prime data are published to CAN bus * @return none *************************************************************************/ static void publishBloodPrimeData( void ) @@ -293,71 +293,98 @@ /*********************************************************************//** * @brief - * The testSetBloodPrimeVolumeOverride function sets or resets the override - * of calculated blood prime volume. - * @details Inputs: none - * @details Outputs: cumulativeBloodPrimeVolume_mL - * @param message Override message from Dialin + * The testSetBloodPrimeVolumeOverride function override the blood prime volume. + * @details \b Inputs: none + * @details \b Outputs: cumulativeBloodPrimeVolume_mL + * @param message Override message from Dialin which includes the blood + * prime volume to override it to. * @return TRUE if override request is successful, FALSE if not *************************************************************************/ BOOL testSetBloodPrimeVolumeOverride( MESSAGE_T *message ) { + BOOL result = FALSE; - BOOL enable = FALSE; - F32 volume = 0.0F; + F32 volume_mL = 0.0F; - if ( ( TRUE == isTestingActivated() ) && ( ( sizeof( BOOL ) + sizeof( F32 ) ) == message->hdr.payloadLen ) ) + if ( ( TRUE == isTestingActivated() ) && ( sizeof( F32 ) == message->hdr.payloadLen ) ) { result = TRUE; - memcpy( &enable, message->payload, sizeof( BOOL ) ); - memcpy( &volume, &message->payload[ sizeof( BOOL ) ], sizeof( F32 ) ); + memcpy( &volume_mL, message->payload, sizeof( F32 ) ); + cumulativeBloodPrimeVolume_mL.ovData = volume_mL; + cumulativeBloodPrimeVolume_mL.override = OVERRIDE_KEY; + } - if ( TRUE == enable ) - { - cumulativeBloodPrimeVolume_mL.ovData = volume; - cumulativeBloodPrimeVolume_mL.override = OVERRIDE_KEY; - } - else - { - cumulativeBloodPrimeVolume_mL.override = OVERRIDE_RESET; - cumulativeBloodPrimeVolume_mL.ovData = cumulativeBloodPrimeVolume_mL.ovInitData; - } + return result; +} + +/*********************************************************************//** + * @brief + * The testResetBloodPrimeVolumeOverride function override the blood prime volume. + * @details \b Inputs: none + * @details \b Outputs: cumulativeBloodPrimeVolume_mL + * @param message Override message from Dialin which includes the blood + * prime volume to override it to. + * @return TRUE if override request is successful, FALSE if not + *************************************************************************/ +BOOL testResetBloodPrimeVolumeOverride( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + if ( ( TRUE == isTestingActivated() ) && ( 0U == message->hdr.payloadLen ) ) + { + result = TRUE; + cumulativeBloodPrimeVolume_mL.override = OVERRIDE_RESET; + cumulativeBloodPrimeVolume_mL.ovData = cumulativeBloodPrimeVolume_mL.ovInitData; } return result; } /*********************************************************************//** * @brief - * The testSetBloodPrimePublishIntervalOverride function sets or resets the - * override of blood prime data publish interval. - * @details Inputs: none - * @details Outputs: bloodPrimePublishInterval - * @param message Override message from Dialin + * The testSetBloodPrimePublishIntervalOverride function overrides the interval + * at which the TD blood prime data is published. + * @details \b Inputs: none + * @details \b Outputs: bloodPrimePublishInterval + * @param message Override message from Dialin which includes the interval + * to override the blood prime broadcast interval to. * @return TRUE if override request is successful, FALSE if not *************************************************************************/ BOOL testSetBloodPrimePublishIntervalOverride( MESSAGE_T *message ) { BOOL result = FALSE; - BOOL enable = FALSE; - U32 intervalMs = 0U; + U32 interval_ms = 0U; - if ( ( TRUE == isTestingActivated() ) && ( ( sizeof( BOOL ) + sizeof( U32 ) ) == message->hdr.payloadLen ) ) + if ( ( TRUE == isTestingActivated() ) && ( sizeof( U32 ) == message->hdr.payloadLen ) ) { result = TRUE; - memcpy( &enable, message->payload, sizeof( BOOL ) ); - memcpy( &intervalMs, &message->payload[ sizeof( BOOL ) ], sizeof( U32 ) ); + memcpy( &interval_ms, message->payload, sizeof( U32 ) ); + bloodPrimePublishInterval.ovData = (U32)( interval_ms / (U32)TASK_GENERAL_INTERVAL ); + bloodPrimePublishInterval.override = OVERRIDE_KEY; + } - if ( TRUE == enable ) - { - bloodPrimePublishInterval.ovData = intervalMs / TASK_GENERAL_INTERVAL; - bloodPrimePublishInterval.override = OVERRIDE_KEY; - } - else - { - bloodPrimePublishInterval.override = OVERRIDE_RESET; - bloodPrimePublishInterval.ovData = bloodPrimePublishInterval.ovInitData; - } + return result; +} + +/*********************************************************************//** + * @brief + * The testResetBloodPrimePublishIntervalOverride function overrides the interval + * at which the TD blood prime data is published. + * @details \b Inputs: none + * @details \b Outputs: bloodPrimePublishInterval + * @param message Override message from Dialin which includes the interval + * to override the blood prime broadcast interval to. + * @return TRUE if override request is successful, FALSE if not + *************************************************************************/ +BOOL testResetBloodPrimePublishIntervalOverride( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + if ( ( TRUE == isTestingActivated() ) && ( 0U == message->hdr.payloadLen ) ) + { + result = TRUE; + bloodPrimePublishInterval.override = OVERRIDE_RESET; + bloodPrimePublishInterval.ovData = bloodPrimePublishInterval.ovInitData; } return result;