Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rd835a7b8b0ad94f86edebe04e481ea6a4e7035eb -r28f137017915af37b784c95803b044136fab4d5b --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision d835a7b8b0ad94f86edebe04e481ea6a4e7035eb) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 28f137017915af37b784c95803b044136fab4d5b) @@ -25,6 +25,7 @@ #include "OperationModes.h" #include "StatePreTxRecirculate.h" #include "SyringePump.h" +#include "TaskGeneral.h" #include "Timers.h" #include "TubeSetInstall.h" #include "TxParams.h" @@ -36,12 +37,18 @@ * @{ */ +// ********** private definitions ********** + +/// Interval (ms/task time) at which the Pre-Treatment state data is published on the CAN bus. +#define PRE_TREATMENT_STATE_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) + // ********** private data ********** static TD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current Pre-Treatment sub-state static BOOL goToInstallStateRequested; ///< Flag indicating a request to transition to Install state. static BOOL continueFromRecirculateRequested; ///< Flag indicating a request to transition to Patient Connection state. static BOOL treatmentStartRequested; ///< Flag indicating the UI requested treatment start. +static U32 preTreatmentStateBroadcastTimerCtr; ///< Pre-Treatment state data broadcast timer counter used to schedule when to transmit data. // ********** private function prototypes ********** @@ -52,6 +59,7 @@ static TD_PRE_TREATMENT_MODE_STATE_T handleRecirculateState( void ); ///< Handle Recirculate state during Pre-Treatment static TD_PRE_TREATMENT_MODE_STATE_T handleRxState( void ); ///< Handle Confirm Rx state during Pre-Treatment static TD_PRE_TREATMENT_MODE_STATE_T handlePatientConnectionState( void ); ///< Handle Patient Connection state during Pre-Treatment +static void publishPreTreatmentStates( void ); ///< Publish Pre-Treatment states to the UI. /*********************************************************************//** * @brief @@ -69,6 +77,7 @@ goToInstallStateRequested = FALSE; continueFromRecirculateRequested = FALSE; treatmentStartRequested = FALSE; + preTreatmentStateBroadcastTimerCtr = PRE_TREATMENT_STATE_DATA_PUB_INTERVAL; } /*********************************************************************//** @@ -152,6 +161,7 @@ setPreTreatStateTransition(); } + publishPreTreatmentStates(); return (U32)currentPreTreatmentState; } @@ -486,4 +496,37 @@ } } +/*********************************************************************//** + * @brief + * The publishPreTreatmentStates function publishes the current + * Pre-Treatment state and associated sub-state data to the UI. + * @details \b Inputs: currentPreTreatmentState, + * preTreatmentStateBroadcastTimerCtr. + * @details \b Outputs: preTreatmentStateBroadcastTimerCtr. + * @return none + *************************************************************************/ +static void publishPreTreatmentStates( void ) +{ + if ( ++preTreatmentStateBroadcastTimerCtr >= PRE_TREATMENT_STATE_DATA_PUB_INTERVAL ) + { + PRE_TREATMENT_STATES_DATA_PAYLOAD_T payload = { 0 }; + + preTreatmentStateBroadcastTimerCtr = 0; + + payload.mSubMode = (U32)currentPreTreatmentState; + payload.mInstallState = (U32)getTubeSetInstallState(); + payload.mSelfTestDryState = 0; + payload.mPrimeState = 0; + payload.mRecirculateState = getPreTxRecirculateState(); + payload.mConfirmRxState = 0; + payload.mHeparinState = 0; + payload.mPatientConnectionState = 0; + + broadcastData( MSG_ID_TD_PRE_TREATMENT_STATES_DATA, + COMM_BUFFER_OUT_CAN_TD_BROADCAST, + (U08 *)&payload, + sizeof( PRE_TREATMENT_STATES_DATA_PAYLOAD_T ) ); + } +} + /**@}*/ Index: firmware/App/Services/Messaging.h =================================================================== diff -u -r9c833ef5623ce842267e284d958820ac0dc3a7fc -r28f137017915af37b784c95803b044136fab4d5b --- firmware/App/Services/Messaging.h (.../Messaging.h) (revision 9c833ef5623ce842267e284d958820ac0dc3a7fc) +++ firmware/App/Services/Messaging.h (.../Messaging.h) (revision 28f137017915af37b784c95803b044136fab4d5b) @@ -69,6 +69,19 @@ U32 maxDialRate; ///< Maximum dialysate flow rate (in mL/min) } TREATMENT_PARAM_BROADCAST_PAYLOAD_T; +/// Payload record structure for Pre-Treatment states broadcast. +typedef struct +{ + U32 mSubMode; ///< Current Pre-Treatment state. + U32 mInstallState; ///< Current Tube Set Install state. + U32 mSelfTestDryState; ///< Current Dry Self-Test state. + U32 mPrimeState; ///< Current Prime state. + U32 mRecirculateState; ///< Current Pre-Treatment Recirculate state. + U32 mConfirmRxState; ///< Current Confirm Rx state. + U32 mHeparinState; ///< Current Heparin Setup state. + U32 mPatientConnectionState; ///< Current Patient Connection state. +} PRE_TREATMENT_STATES_DATA_PAYLOAD_T; + /// Institutional record structure containing treatment parameter range limits. typedef struct { Index: firmware/App/Services/StateServices/TubeSetInstall.c =================================================================== diff -u -r5366722d2325ea93db0ad1f696db78597af3b7c6 -r28f137017915af37b784c95803b044136fab4d5b --- firmware/App/Services/StateServices/TubeSetInstall.c (.../TubeSetInstall.c) (revision 5366722d2325ea93db0ad1f696db78597af3b7c6) +++ firmware/App/Services/StateServices/TubeSetInstall.c (.../TubeSetInstall.c) (revision 28f137017915af37b784c95803b044136fab4d5b) @@ -336,6 +336,19 @@ /*********************************************************************//** * @brief + * The getTubeSetInstallState function returns the current Tube Set + * Install sub-state. + * @details \b Inputs: currentInstallState. + * @details \b Outputs: none. + * @return Current Tube Set Install sub-state. + *************************************************************************/ +TUBE_SET_INSTALL_STATE_T getTubeSetInstallState( void ) +{ + return currentInstallState; +} + +/*********************************************************************//** + * @brief * The handleAutoLoadRequest function handles a UI request to * confirm tubeset installation. * @details \b Message \b Sent: MSG_ID_TD_ADJUST_DISPOSABLES_CONFIRM_RESPONSE Index: firmware/App/Services/StateServices/TubeSetInstall.h =================================================================== diff -u -r5366722d2325ea93db0ad1f696db78597af3b7c6 -r28f137017915af37b784c95803b044136fab4d5b --- firmware/App/Services/StateServices/TubeSetInstall.h (.../TubeSetInstall.h) (revision 5366722d2325ea93db0ad1f696db78597af3b7c6) +++ firmware/App/Services/StateServices/TubeSetInstall.h (.../TubeSetInstall.h) (revision 28f137017915af37b784c95803b044136fab4d5b) @@ -52,6 +52,7 @@ void execTubeSetInstall( void ); // Execute the service state machine (call from ModePreTreat and ModeTreatment) BOOL isTubeSetInstallComplete( void ); // Returns True once auto-load finished successfully +TUBE_SET_INSTALL_STATE_T getTubeSetInstallState( void ); // Get the current Tube Set Install sub-state. BOOL handleAutoLoadRequest( MESSAGE_T *message ); // Handle UI auto-load confirmation request BOOL handleSetupTubingSetConnectionConfirmRequest( MESSAGE_T *message ); // Handle UI setup tubing set connection confirmation request