Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -r46bfe970a8efd732ba6aca22ae170879e549b25f -raeaaac9b79d9c2aa31ad18be9fb20fe52c936189 --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision 46bfe970a8efd732ba6aca22ae170879e549b25f) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision aeaaac9b79d9c2aa31ad18be9fb20fe52c936189) @@ -44,16 +44,6 @@ NUM_OF_VALVE_POSITIONS, ///< Number of valve positions } VALVE_POSITION_T; -/// 3 way valves names -typedef enum valvesNames -{ - VDI = 0, ///< Valve Dialyzer Inlet - VDO, ///< Valve Dialyzer Outlet - VBA, ///< Valve Blood Arterial - VBV, ///< Valve Blood Venous - NUM_OF_VALVE_COUNT ///< Number of valve count -} TD_VALVE_T; - #pragma pack(push, 1) /// TD valves broadcast data typedef struct 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; Index: firmware/App/Modes/StateTxBloodPrime.h =================================================================== diff -u -r2fe1bfe77e53e5b92dae1b89c726c59b7b95939f -raeaaac9b79d9c2aa31ad18be9fb20fe52c936189 --- firmware/App/Modes/StateTxBloodPrime.h (.../StateTxBloodPrime.h) (revision 2fe1bfe77e53e5b92dae1b89c726c59b7b95939f) +++ firmware/App/Modes/StateTxBloodPrime.h (.../StateTxBloodPrime.h) (revision aeaaac9b79d9c2aa31ad18be9fb20fe52c936189) @@ -22,7 +22,7 @@ #include "TDDefs.h" /** - * @defgroup BloodPrime BloodPrime + * @defgroup StateTxBloodPrime StateTxBloodPrime * @brief Blood prime sub-mode of treatment mode. * The blood prime state is where we go when treatment is first started or * when returning to treatment after a rinseback. @@ -54,7 +54,10 @@ BLOOD_PRIME_STATE_T getCurrentBloodPrimeState( void ); // Get the current treatment sub-mode state BOOL testSetBloodPrimeVolumeOverride( MESSAGE_T *message ); +BOOL testResetBloodPrimeVolumeOverride( MESSAGE_T *message ); + BOOL testSetBloodPrimePublishIntervalOverride( MESSAGE_T *message ); +BOOL testResetBloodPrimePublishIntervalOverride( MESSAGE_T *message ); /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -rb824ef4b479578c5aa702abd9147aef505a6fb04 -raeaaac9b79d9c2aa31ad18be9fb20fe52c936189 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision b824ef4b479578c5aa702abd9147aef505a6fb04) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision aeaaac9b79d9c2aa31ad18be9fb20fe52c936189) @@ -36,6 +36,7 @@ #include "PAL.h" #include "Pressures.h" #include "RotaryValve.h" +#include "StateTxBloodPrime.h" #include "StateTxDialysis.h" #include "StateTxPaused.h" #include "Switches.h" @@ -176,6 +177,10 @@ { MSG_ID_TD_BARO_PRESSURE_OVERRIDE, &testBaroPressureOverride }, { MSG_ID_TD_TEMPERATURE_OVERRIDE, &testTemperatureOverride }, { MSG_ID_TD_TEMPERATURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testTemperatureDataPublishIntervalOverride }, + { MSG_ID_TD_SET_BLOOD_PRIME_VOLUME_OVERRIDE, &testSetBloodPrimeVolumeOverride }, + { MSG_ID_TD_RESET_BLOOD_PRIME_VOLUME_OVERRIDE, &testResetBloodPrimeVolumeOverride }, + { MSG_ID_TD_SET_BLOOD_PRIME_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testSetBloodPrimePublishIntervalOverride }, + { MSG_ID_TD_RESET_BLOOD_PRIME_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testResetBloodPrimePublishIntervalOverride }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T))