Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r89a18b2f70a2cb6028e73600b5ecb054d7858a05 -rd1abd0eba39f6eb00e7d1022628605cd45a63b32 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 89a18b2f70a2cb6028e73600b5ecb054d7858a05) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision d1abd0eba39f6eb00e7d1022628605cd45a63b32) @@ -149,7 +149,7 @@ TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_CONFIRM_RX_STATE; DD_OP_MODE_T ddOpMode = getDDOpMode(); DD_PRE_GEN_DIALYSATE_STATE_T ddSubMode = (DD_PRE_GEN_DIALYSATE_STATE_T)getDDSubMode(); - BOOL isDialysateGoodToDeliver = TRUE; // TODO update with get API for getDialGoodToDeliverStatus + BOOL isDialysateGoodToDeliver = getDialysateGoodToDeliverStatus(); F32 bicarbConvFactor = BICARBONATE_CONVERSION_FACTOR; F32 presUFVolumeL = 0.0F; F32 presUFRateLHr = 0.0F; Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -re9e339870c5ed01230963f00d400331ab879c91f -rd1abd0eba39f6eb00e7d1022628605cd45a63b32 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision e9e339870c5ed01230963f00d400331ab879c91f) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision d1abd0eba39f6eb00e7d1022628605cd45a63b32) @@ -186,6 +186,7 @@ SW_FAULT_ID_TD_AIR_PUMP_DUTY_CYCLE_OUT_OF_RANGE = 155, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER = 156, SW_FAULT_ID_INVALID_TREATMENT_MODALITY = 157, + SW_FAULT_ID_INVALID_DD_DIALYSATE_DATA = 158, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/DDInterface.c =================================================================== diff -u -re7e2fef9fda6c6e876f7aba1c8f837d8aa713392 -rd1abd0eba39f6eb00e7d1022628605cd45a63b32 --- firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision e7e2fef9fda6c6e876f7aba1c8f837d8aa713392) +++ firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision d1abd0eba39f6eb00e7d1022628605cd45a63b32) @@ -42,6 +42,7 @@ static F32 dialysatePressure; ///< Current dialysate pressure reported by DD. static BOOL ddStartCommandSent; ///< Flag indicates command to start DD has been sent. static BOOL ddStarted; ///< Flag indicates whether we have commanded the DD to start or stop. +static BOOL isDialysateGoodtoDeliver; ///< Flag indicating whether dialysate is good to deliver. static BOOL ddOpModeDataFreshFlag; ///< Flag to signal the handleDDOpMode() to process fresh dd op mode data. static BOOL ddDialysatePressureFreshFlag; ///< Flag to signal @@ -71,7 +72,9 @@ ddCurrentOpMode = DD_MODE_INIT; ddSubMode = 0; dialysatePressure = 0.0F; + isDialysateGoodtoDeliver = FALSE; + ddOpModeDataFreshFlag = FALSE; ddDialysatePressureFreshFlag = FALSE; @@ -245,6 +248,38 @@ /*********************************************************************//** * @brief + * The setDialysateData function sets the latest DD dialysate data reported by + * the DD (called by DD published message handler). + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if message is invalid. + * @details \b Inputs: none + * @details \b Outputs: isDialysateGoodtoDeliver + * @param message Pointer to the DD dialysate mode data broadcast message + * @return TRUE if message handled successfully, FALSE if not + *************************************************************************/ +BOOL setDialysateData( MESSAGE_T *message ) +{ + BOOL result = FALSE; + GEN_DIALYSATE_MODE_DATA_T payload; + + // parse message payload + memcpy( &payload, &message->payload[ 0 ], sizeof( GEN_DIALYSATE_MODE_DATA_T ) ); + + if ( message->hdr.payloadLen == sizeof( GEN_DIALYSATE_MODE_DATA_T ) ) + { + isDialysateGoodtoDeliver = payload.isDialysateGoodtoDeliver; + result = TRUE; + } + else + { +#ifndef TEST_UI_ONLY + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_DD_DIALYSATE_DATA, (U32)message->hdr.payloadLen ); +#endif + } + return result; +} + +/*********************************************************************//** + * @brief * The getDialysatePressure function gets the latest reported dialysate * pressure. * @details \b Inputs: dialysatePressure @@ -258,6 +293,20 @@ /*********************************************************************//** * @brief + * The getDialysateGoodToDeliverStatus function gets the status + * whether dialysate is good to deliver + * pressure. + * @details \b Inputs: isDialysateGoodtoDeliver + * @details \b Outputs: none + * @return Latest dialysate good to delivery status. + *************************************************************************/ +BOOL getDialysateGoodToDeliverStatus( void ) +{ + return isDialysateGoodtoDeliver; +} + +/*********************************************************************//** + * @brief * The setDialysatePressure function sets the latest dialysate pressure * reported by the DD sub-system. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if message invalid. @@ -321,7 +370,6 @@ #ifndef TEST_UI_ONLY sendMessage( MSG_ID_DD_PRE_GEN_DIALYSATE_REQUEST_DATA, COMM_BUFFER_OUT_CAN_TD_2_DD, (U08*)(&preGenDialysateCmdSet), sizeof( PRE_GEN_DIALYSATE_REQ_PAYLOAD_T ) ); #endif -// ddStartCommandSent = TRUE; } /*********************************************************************//** Index: firmware/App/Services/DDInterface.h =================================================================== diff -u -re7e2fef9fda6c6e876f7aba1c8f837d8aa713392 -rd1abd0eba39f6eb00e7d1022628605cd45a63b32 --- firmware/App/Services/DDInterface.h (.../DDInterface.h) (revision e7e2fef9fda6c6e876f7aba1c8f837d8aa713392) +++ firmware/App/Services/DDInterface.h (.../DDInterface.h) (revision d1abd0eba39f6eb00e7d1022628605cd45a63b32) @@ -51,8 +51,10 @@ DD_OP_MODE_T getDDOpMode( void ); U32 getDDSubMode( void ); F32 getDialysatePressure( void ); +BOOL getDialysateGoodToDeliverStatus( void ); BOOL setDDOpMode( MESSAGE_T *message ); +BOOL setDialysateData( MESSAGE_T *message ); BOOL setDialysatePressure( MESSAGE_T *message ); void cmdStartPreGenerateDialysate( F32 qd, F32 dialTemp, F32 acidConvFactor, F32 bicarbConvFactor, U32 sodium, U32 bicarbonate ); Index: firmware/App/Services/Messaging.c =================================================================== diff -u -re9e339870c5ed01230963f00d400331ab879c91f -rd1abd0eba39f6eb00e7d1022628605cd45a63b32 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision e9e339870c5ed01230963f00d400331ab879c91f) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision d1abd0eba39f6eb00e7d1022628605cd45a63b32) @@ -183,6 +183,7 @@ { MSG_ID_TD_BLOOD_PRIME_VOLUME_OVERRIDE, &testBloodPrimeVolumeOverride }, { MSG_ID_TD_BLOOD_PRIME_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBloodPrimePublishIntervalOverride }, { MSG_ID_TD_ENABLE_VENOUS_BUBBLE_ALARM, &testEnableVenousBubbleAlarm }, + { MSG_ID_DD_GEN_DIALYSATE_MODE_DATA, &setDialysateData }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T)) Index: firmware/App/TDCommon.h =================================================================== diff -u -rd212465988292ce9cee4c1086371b88be46f8504 -rd1abd0eba39f6eb00e7d1022628605cd45a63b32 --- firmware/App/TDCommon.h (.../TDCommon.h) (revision d212465988292ce9cee4c1086371b88be46f8504) +++ firmware/App/TDCommon.h (.../TDCommon.h) (revision d1abd0eba39f6eb00e7d1022628605cd45a63b32) @@ -117,6 +117,15 @@ U32 ctrlMode; ///< Control mode. } OVERRIDE_PUMP_SET_PT_PAYLOAD_T; +/// Generate dialysate mode data structure +typedef struct +{ + U32 genDialysateExecState; ///< Generate dialysate execution state + BOOL isDialDelInProgress; ///< Whether Dialysate Delivery in progress or not + BOOL isDialysateGoodtoDeliver; ///< Ready to deliver dialysate or not + F32 currentQd; ///< Current dialysate flow rate (ml/min) +} GEN_DIALYSATE_MODE_DATA_T; + #pragma pack(pop) // **** Common Macros ****