Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r78cee9347b3766ac7c14d413ed848be758c7e9cd -rf6c512d7d0c0a7e37b11423412af8e792438b1d3 --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 78cee9347b3766ac7c14d413ed848be758c7e9cd) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision f6c512d7d0c0a7e37b11423412af8e792438b1d3) @@ -256,7 +256,7 @@ { if ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == dgSubMode ) { - cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, FALSE ); + cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE ); } } else if ( DG_MODE_DRAI == dgOpMode ) @@ -554,6 +554,19 @@ } /*********************************************************************//** + * @brief + * The getDialysateTemperature function gets the latest dialysate temperature. + * @details Inputs: dgDialysateTemp + * @details Outputs: none + * @return the current dialysate temperature + *************************************************************************/ +F32 getDialysateTemperature( void ) +{ + return dgDialysateTemp; +} + +/*********************************************************************//** + * @brief * The getReservoirWeight function gets the load cell weight of a given * reservoir. * @details Inputs: loadCellWeightInGrams[] Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -r91aa11a47f3b3c744cbbfd9e9c1bd240263aa1bd -rf6c512d7d0c0a7e37b11423412af8e792438b1d3 --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 91aa11a47f3b3c744cbbfd9e9c1bd240263aa1bd) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision f6c512d7d0c0a7e37b11423412af8e792438b1d3) @@ -82,19 +82,31 @@ /// Payload record structure for DG temperature sensors data message. typedef struct { - F32 TPi; ///< Inlet primary heaters temperature sensor - F32 TPo; ///< Outlet primary heaters temperature sensor - F32 TD1; ///< Conductivity sensor 1 temperature sensor - F32 TD2; ///< Conductivity sensor 2 temperature sensor - F32 TRo; ///< Outlet redundant temperature sensor - F32 TDi; ///< Inlet dialysate temperature sensor - F32 HtrPrimThermo; ///< Primary heaters internal temperature sensor - F32 HtrTrimThermo; ///< Trimmer heater internal temperature sensor - F32 HtrPrimColdJunc; ///< Primary heaters cold junction temperature sensor - F32 HtrTrimColdJunc; ///< Trimmer heater cold junction temperature sensor - F32 HtrPrimInternal; ///< Primary heaters internal temperature - F32 HtrTrimInternal; ///< Trimmer heater internal temperature -} DG_TEMPERATURES_T; + F32 inletPrimaryHeater; ///< Inlet primary heater temperature sensor + F32 outletPrimaryHeater; ///< Outlet primary heater temperature sensor + F32 conductivitySensor1; ///< Conductivity sensor 1 temperature sensor + F32 conductivitySensor2; ///< Conductivity sensor 2 temperature sensor + F32 outletRedundant; ///< Outlet redundant temperature sensor + F32 inletDialysate; ///< Inlet dialysate temperature sensor + F32 primaryHeaterThermocouple; ///< Primary heaters thermocouple sensor + F32 trimmerHeaterThermocouple; ///< Trimmer heater thermocouple sensor + F32 priamyHeaterColdjunction; ///< Primary heaters cold junction temperature sensor + F32 trimmerHeaterColdjunction; ///< Trimmer heater cold junction temperature sensor + F32 primaryHeaterInternal; ///< Primary heaters internal temperature (calculated from thermocouple and cold junction) + F32 trimmerHeaterInternal; ///< Trimmer heater internal temperature (calculated from thermocouple and cold junction) + F32 fpgaBoard; ///< FPGA board temperature sensor + F32 loadCellA1B1; ///< Load cell A1/B1 temperature sensor + F32 loadCellA2B2; ///< Load cell A2/B2 temperature sensor + F32 internalTHDORTD; ///< THDo RTD channel temperature sensor + F32 internalTDIRTD; ///< TDI RTD channel temperature sensor + F32 internalCondSnsrTemp; ///< Conductivity Sensor internal temperature sensor + U32 primaryThermoCoupleRaw; ///< Primary heaters thermocouple raw ADC value + U32 primaryColdjuncRaw; ///< Primary heaters cold junction raw ADC value + U32 trimmerThermoCoupleRaw; ///< Trimmer heater thermocouple raw ADC value + U32 trimmerColdjuncRaw; ///< Trimmer heater cold junction raw ADC value + S32 cond1Raw; ///< Conductivity sensor 1 raw temperature ADC value + S32 cond2Raw; ///< Conductivity sensor 2 raw temperature ADC value +} TEMPERATURE_SENSORS_DATA_T; /// Payload record structure for a drain reservoir command message. typedef struct @@ -142,6 +154,7 @@ F32 getReservoirWeight( DG_RESERVOIR_ID_T resID ); F32 getReservoirWeightLargeFilter( DG_RESERVOIR_ID_T resID ); DG_DISINFECT_UI_STATES_T getDGDisinfectsStates( void ); +F32 getDialysateTemperature( void ); void setDGOpMode( U32 opMode, U32 subMode ); void setDialysateTemperatureReadings( F32 temp1, F32 temp2 ); Index: firmware/App/HDCommon.h =================================================================== diff -u -rbad0628d7a6484bfa8a550fd2a589f56d0a6c53d -rf6c512d7d0c0a7e37b11423412af8e792438b1d3 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision bad0628d7a6484bfa8a550fd2a589f56d0a6c53d) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision f6c512d7d0c0a7e37b11423412af8e792438b1d3) @@ -23,7 +23,7 @@ // ********** version ********** #define HD_VERSION_MAJOR 0 -#define HD_VERSION_MINOR 5 +#define HD_VERSION_MINOR 6 #define HD_VERSION_MICRO 0 #define HD_VERSION_BUILD 9037 @@ -39,7 +39,7 @@ // #define TASK_TIMING_OUTPUT_ENABLED 1 // Re-purposes alarm lamp pins for task timing #define DISABLE_ALARM_AUDIO 1 // Disable alarm audio #define SKIP_POST 1 // Skip POST tests - all pass -// #define DONT_SKIP_NV_POST 1 // Do not skip NV Data POST + #define DONT_SKIP_NV_POST 1 // Do not skip NV Data POST // #define USE_LIBRARY_TIME_FUNCTIONS 1 // Use the C library functions mktime() and gmtime() for epoch<=>date conversions #define DISABLE_AIR_TRAP_LEVELING_ALARM 1 // Disable air trap level control alarms // #define DISABLE_3WAY_VALVES 1 // Disable 3-way valves @@ -53,7 +53,7 @@ // #define DISABLE_PUMP_DIRECTION_CHECKS 1 // Do not error on HD pump direction checks #define DISABLE_SYRINGE_PUMP 1 // Disable syringe pump functionality #define ALWAYS_ALLOW_SYRINGE_PUMP_CMDS 1 // Allow syringe pump commands at any time except when pump is busy -// #define DISABLE_PRESSURE_CHECKS 1 // Do not error on HD pressure checks + #define DISABLE_PRESSURE_CHECKS 1 // Do not error on HD pressure checks // #define DISABLE_UF_ALARMS 1 // Do not error on HD ultrafiltration checks // #define DISABLE_VALVE_ALARMS 1 // Do not error on HD valve position #define DISABLE_CAL_CHECK 1 // Disable calibration checks Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r7690b677a3870da643e67bd622d3b342dfac0040 -rf6c512d7d0c0a7e37b11423412af8e792438b1d3 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 7690b677a3870da643e67bd622d3b342dfac0040) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision f6c512d7d0c0a7e37b11423412af8e792438b1d3) @@ -175,8 +175,14 @@ break; case POST_STATE_ALARM_AUDIO: +#ifdef DONT_SKIP_NV_POST + // Skip the rest of the POSTs + postState = POST_STATE_COMPLETED; + testStatus = SELF_TEST_STATUS_PASSED; +#else testStatus = execAlarmAudioSelfTest(); postState = handlePOSTStatus( testStatus ); +#endif break; case POST_STATE_ALARM_LAMP: Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r1eac55db00559965a7dc6752fc42a2c54d56f4b9 -rf6c512d7d0c0a7e37b11423412af8e792438b1d3 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 1eac55db00559965a7dc6752fc42a2c54d56f4b9) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision f6c512d7d0c0a7e37b11423412af8e792438b1d3) @@ -667,7 +667,7 @@ { if ( 0 == message->hdr.payloadLen ) { - handleTreatmentLogDataRequest(); + sendTreatmentLogDataToUI(); } else { @@ -926,9 +926,75 @@ // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer return serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); } - + /*********************************************************************//** * @brief + * The sendTreatmentLogAlarmEventData function constructs a treatment log + * alarm event data message for UI and queues the msg for transmit on the + * appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Treatment log alarm event data msg constructed and queued. + * @param alarmID ID of the occurred alarm + * @param almData1 data associates with the alarm + * @param almData1 data associates with the alarm + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendTreatmentLogAlarmEventData( ALARM_ID_T alarmID, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ) +{ + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + U32 id = (U32)alarmID; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_TREATMENT_LOG_ALARM_EVENT; + msg.hdr.payloadLen = sizeof( ALARM_ID_T ) + 3 * sizeof( F32 ); + + memcpy( payloadPtr, &id, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &almData1.data, sizeof( F32 ) ); + payloadPtr += sizeof( F32 ); + memcpy( payloadPtr, &almData2.data, sizeof( F32 ) ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + return serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); +} + +/*********************************************************************//** + * @brief + * The sendTreatmentLogEventData function constructs a treatment log parameter + * change event data message for UI and queues the msg for transmit on the + * appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Treatment log event data msg constructed and queued. + * @param event ID of parameter change event + * @param oldValue parameter change event old data value + * @param newValue parameter change event new data value + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendTreatmentLogEventData( EVENT_ID_T event, F32 oldValue, F32 newValue ) +{ + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + U32 eventID = (U32)event; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_TREATMENT_LOG_EVENT; + msg.hdr.payloadLen = sizeof( EVENT_ID_T ) + 3 * sizeof( F32 ); + + memcpy( payloadPtr, &eventID, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &oldValue, sizeof( F32 ) ); + payloadPtr += sizeof( F32 ); + memcpy( payloadPtr, &newValue, sizeof( F32 ) ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + return serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); +} + +/*********************************************************************//** + * @brief * The handleSampleWaterCmd function handles a sample water user action command * message from the UI. * @details Inputs: none @@ -3067,12 +3133,12 @@ *************************************************************************/ void handleDGTemperatureData( MESSAGE_T *message ) { - if ( message->hdr.payloadLen == sizeof(DG_TEMPERATURES_T) ) + if ( message->hdr.payloadLen == sizeof( TEMPERATURE_SENSORS_DATA_T ) ) { - DG_TEMPERATURES_T payload; - - memcpy( &payload, message->payload, sizeof(DG_TEMPERATURES_T) ); - setDialysateTemperatureReadings( payload.TDi, payload.TRo ); + TEMPERATURE_SENSORS_DATA_T payload; + + memcpy( &payload, message->payload, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); + setDialysateTemperatureReadings( payload.inletDialysate, payload.outletRedundant ); } // TODO - what to do if invalid payload length? // TODO - how to know if DG stops sending these? Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r3d8fdd44ca1d0ba87e0564d124b4a15ca18bc612 -rf6c512d7d0c0a7e37b11423412af8e792438b1d3 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 3d8fdd44ca1d0ba87e0564d124b4a15ca18bc612) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision f6c512d7d0c0a7e37b11423412af8e792438b1d3) @@ -296,6 +296,12 @@ // MSG_ID_HD_ACTIVE_ALARMS_LIST_REQUEST_RESPONSE BOOL sendActiveAlarmsList( BOOL accepted, U32 reason, U32 *alarmList, U32 size ); +// MSG_ID_HD_TREATMENT_LOG_ALARM_EVENT +BOOL sendTreatmentLogAlarmEventData( ALARM_ID_T alarmID, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); + +// MSG_ID_HD_TREATMENT_LOG_EVENT +BOOL sendTreatmentLogEventData( EVENT_ID_T event, F32 oldValue, F32 newValue ); + // *********** public DG command functions ********** // MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS