Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -re5d6674fbf4b6ddd8057385babac0a085ce18f42 -rfeb0cd09c472099121146674f89fe88c1445c4d0 --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision e5d6674fbf4b6ddd8057385babac0a085ce18f42) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision feb0cd09c472099121146674f89fe88c1445c4d0) @@ -964,6 +964,7 @@ if ( ++bloodFlowDataPublicationTimerCounter >= getU32OverrideValue( &bloodFlowDataPublishInterval ) ) { BLOOD_PUMP_STATUS_PAYLOAD_T payload; + HD_OP_MODE_T opMode = getCurrentOperationMode(); payload.setPoint = targetBloodFlowRate; payload.measFlow = getMeasuredBloodFlowRate(); @@ -973,6 +974,14 @@ payload.measMCCurr = getMeasuredBloodPumpMCCurrent(); payload.pwmDC = bloodPumpPWMDutyCyclePctSet * FRACTION_TO_PERCENT_FACTOR; payload.rotorCount = getBloodPumpRotorCount(); + if ( ( MODE_PRET == opMode ) || ( MODE_TREA == opMode ) || ( MODE_POST == opMode ) ) + { // prescribed flow only available in treatment modes + payload.presFlow = getTreatmentParameterS32( TREATMENT_PARAM_BLOOD_FLOW ); + } + else + { + payload.presFlow = 0.0F; + } broadcastData( MSG_ID_BLOOD_FLOW_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&payload, sizeof( BLOOD_PUMP_STATUS_PAYLOAD_T ) ); bloodFlowDataPublicationTimerCounter = 0; } Index: firmware/App/Controllers/BloodFlow.h =================================================================== diff -u -r0a4dcd288d4347b85baaa0b07da568b6add5eac7 -rfeb0cd09c472099121146674f89fe88c1445c4d0 --- firmware/App/Controllers/BloodFlow.h (.../BloodFlow.h) (revision 0a4dcd288d4347b85baaa0b07da568b6add5eac7) +++ firmware/App/Controllers/BloodFlow.h (.../BloodFlow.h) (revision feb0cd09c472099121146674f89fe88c1445c4d0) @@ -49,6 +49,7 @@ F32 measMCCurr; F32 pwmDC; U32 rotorCount; + S32 presFlow; } BLOOD_PUMP_STATUS_PAYLOAD_T; // ********** public function prototypes ********** Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -rfeb0cd09c472099121146674f89fe88c1445c4d0 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision feb0cd09c472099121146674f89fe88c1445c4d0) @@ -1097,6 +1097,7 @@ if ( ++dialInFlowDataPublicationTimerCounter >= getU32OverrideValue( &dialInFlowDataPublishInterval ) ) { DIALIN_PUMP_STATUS_PAYLOAD_T payload; + HD_OP_MODE_T opMode = getCurrentOperationMode(); payload.setPoint = targetDialInFlowRate; payload.measFlow = getMeasuredDialInFlowRate(); @@ -1106,6 +1107,14 @@ payload.measMCCurr = getMeasuredDialInPumpMCCurrent(); payload.pwmDC = dialInPumpPWMDutyCyclePctSet * FRACTION_TO_PERCENT_FACTOR; payload.rotorCount = getDialInPumpRotorCount(); + if ( ( MODE_PRET == opMode ) || ( MODE_TREA == opMode ) || ( MODE_POST == opMode ) ) + { // prescribed flow only available in treatment modes + payload.presFlow = getTreatmentParameterS32( TREATMENT_PARAM_DIALYSATE_FLOW ); + } + else + { + payload.presFlow = 0.0F; + } broadcastData( MSG_ID_DIALYSATE_FLOW_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&payload, sizeof( DIALIN_PUMP_STATUS_PAYLOAD_T ) ); dialInFlowDataPublicationTimerCounter = 0; } Index: firmware/App/Controllers/DialInFlow.h =================================================================== diff -u -rb3034747b23029d9ab2b63cf5029f0bf54cf7bb9 -rfeb0cd09c472099121146674f89fe88c1445c4d0 --- firmware/App/Controllers/DialInFlow.h (.../DialInFlow.h) (revision b3034747b23029d9ab2b63cf5029f0bf54cf7bb9) +++ firmware/App/Controllers/DialInFlow.h (.../DialInFlow.h) (revision feb0cd09c472099121146674f89fe88c1445c4d0) @@ -46,6 +46,7 @@ F32 measMCCurr; F32 pwmDC; U32 rotorCount; + S32 presFlow; } DIALIN_PUMP_STATUS_PAYLOAD_T; // ********** public function prototypes ********** Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r6cd6054a5e170246f94a48b3623d277bba3928d5 -rfeb0cd09c472099121146674f89fe88c1445c4d0 --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 6cd6054a5e170246f94a48b3623d277bba3928d5) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision feb0cd09c472099121146674f89fe88c1445c4d0) @@ -93,7 +93,7 @@ /// Expected position of empty in relation to home position. #define SYRINGE_PUMP_EMPTY_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * 11.0F ) -/// Margin of error for empty position determination. +/// Over-travel (past empty) allowance for alarm. #define SYRINGE_PUMP_EMPTY_POS_MARGIN ( SYRINGE_ENCODER_COUNTS_PER_ML * 0.5F ) /// Minimum retract position. #define SYRINGE_PUMP_RETRACT_POS_MIN ( SYRINGE_ENCODER_COUNTS_PER_ML * -0.5F )