Index: sources/StateController.h =================================================================== diff -u -rb4e5f0d4181127e7941f8ae437e1f61c5c746091 -r6e0ddbfa4863bb12a64dfde5baeada941acadaf8 --- sources/StateController.h (.../StateController.h) (revision b4e5f0d4181127e7941f8ae437e1f61c5c746091) +++ sources/StateController.h (.../StateController.h) (revision 6e0ddbfa4863bb12a64dfde5baeada941acadaf8) @@ -29,7 +29,7 @@ private: // General defines - #define UI_MSG_DD_STATUS_INDEX 4 + #define UI_MSG_BB_STATUS_INDEX 4 #define UI_MSG_BB_PAYLOAD_ID 0x63 #define COUNTER_VAR_DEFAULT_VALUE -1 #define PRESC_TIME_DEFAULT_VALUE -1 @@ -59,20 +59,24 @@ // Treatment params #define MIN_DIAL_RATE_MLPM 100 #define MAX_DIAL_RATE_MLPM 600 - #define MIN_TX_TIME_MINS 60 + #define MIN_TX_TIME_MINS (1 * MINUTES_PER_HOUR) + #define MAX_TX_TIME_MINS (8 * MINUTES_PER_HOUR) + #define MAX_UF_VOL_ML (8 * MILLILITERS_PER_LITER) + #define MAX_UF_RATE_MLPM (2000.0 / MINUTES_PER_HOUR) - #define DEFAULT_TX_ELAPSED_TIME_S (2 * MINUTES_PER_HOUR) * SECONDS_PER_MINUTE - #define TX_PARAM_PRESCRIBED_DUR_S ((4 * MINUTES_PER_HOUR) + 30) * SECONDS_PER_MINUTE - #define TX_PARAM_UF_VOLUME_L 2.0 - #define TX_PARAM_BLOOD_FLOW_RATE_MLPM 400 - #define TX_PARAM_DIAL_FLOW_RATE_MLPM 600 - #define TX_PARAM_SALINE_BOLUS_VOL_ML 200 + #define DEF_TX_ELAPSED_TIME_S (2 * MINUTES_PER_HOUR) * SECONDS_PER_MINUTE + #define DEF_TX_PARAM_PRESCRIBED_DUR_S ((4 * MINUTES_PER_HOUR) + 30) * SECONDS_PER_MINUTE + #define DEF_TX_PARAM_UF_VOLUME_L 2.0 + #define DEF_TX_PARAM_BLOOD_FLOW_RATE_MLPM 400 + #define DEF_TX_PARAM_DIAL_FLOW_RATE_MLPM 600 + #define DEF_TX_PARAM_SALINE_BOLUS_VOL_ML 200 + #define DEF_TX_PARAM_RINSEBACK_FLOW_RATE_MLPM 200 + #define DEF_TX_PARAM_ART_PRES_LIMIT_WIN_MMHG 120 + #define DEF_TX_PARAM_VEN_PRES_LIMIT_WIN_MMHG 100 + #define DEF_TX_PARAM_VEN_PRES_LIMIT_ASYM_WIN_MMHG 20 + #define DEF_TX_PARAM_DIA_TEMPERATURE_C 37.0 // Treatment defines - #define TIME_PRESCRIBED_S_INDEX 5 // TODO remove - #define TIME_ELAPSED_S_INDEX 6 // TODo remove - #define TIME_REMAINING_S_INDEX 7 // TODO remove - #define BLOOD_PRIME_VOLUME_ML (106.6 + 40) #define BLOOD_FLOW_INTEGRATOR (1.0 / (SECONDS_PER_MINUTE * (MILLISECONDS_PER_SECOND /QOBJECT_TIMER_TIMEOUT_MS))) #define MAX_DIALYSATE_VOLUME_ML 150000 @@ -118,6 +122,26 @@ User_Command_ID _dryDemoCurrentCmd; drydemoXMLstates _dryDemo; + struct Pre_Treatment_Params { + bool hasTxParamsBeenInitialized; + quint32 bloodFlowRateMLPM; + quint32 dialysateFlowRateMLPM; + quint32 txDurationMins; + quint32 salineBolusVolML; + quint32 acidConc; + quint32 bicarbConc; + quint32 dialyzerType; + quint32 heparinType; + quint32 bloodMeasurementInveralMin; + quint32 rinsebackFlowRateMLPM; + qint32 areterialPresLimitWindowMMHG; + qint32 venousPresLimitWindowMMHG; + qint32 venousPresLimitAsymWindowMMHG; + float heparinDispenseRateMLHR; + float heparinBolusVolML; + float dialysateTemperatureC; + }; + // New state machine stuff struct Treatment_Variables { float accumulatedVolumeML; @@ -131,25 +155,32 @@ float refUFVolumeML; }; - State_Status _stateStatus; + State_Status _stateStatus; // TODO remove QList _broadcastMessages; QList _sendMessages; QHash _treatmentRcvdMessages; - bool _isBoradcastListReady; // TODO use a mutex + bool _isBroadcastListReady; // TODO use a mutex bool _isSendListReady; // Todo use a mutex Treatment_Variables _treatmentVars; + Pre_Treatment_Params _treatmentParams; void initMessagesHashTable(); void transitionApplicationToStandBy(); void resetVariables(); - void sendMessages(bool isBroadcast); + void setTreatmentParams(bool isFromUI, const QVariant &payload); void prepareOcclusionBroadcastData(); void prepareTreatmentTimeBroadcastData(); void prepareTreatmentStatesBroadcastData(const QVariantList &payload); + void prepareBloodFlowBroadcastData(); + void prepareDialysateFlowBroadcastData(); + void prepareDialysateOutFlowBroadcastData(); + void prepareTreatmentParamsRangesBroadcastData(); + void handleTreatmentReceivedMessages(); void handleTreatmentTimeChangeRequest(const QVariant &payload); + void handleMsgBBPayload(const QVariant &payload); void onIdleStateChange(bool active); void onTreatmentParamsStateChange(bool active);