Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rd9e5244f8f1da1f42e87f9c5ab8bdad728805a7e -r4c26b49a73736fa697bf7565dd7685c4e1cd599a --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision d9e5244f8f1da1f42e87f9c5ab8bdad728805a7e) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 4c26b49a73736fa697bf7565dd7685c4e1cd599a) @@ -1,24 +1,24 @@ /************************************************************************** * -* Copyright (c) 2019-2023 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file SystemCommMessages.h * -* @author (last) Michael Garthwaite -* @date (last) 04-Oct-2023 +* @author (last) Dara Navaei +* @date (last) 10-May-2024 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 * ***************************************************************************/ - -#ifndef __SYSTEM_COMM_MESSAGES_H__ -#define __SYSTEM_COMM_MESSAGES_H__ -#include "AirPump.h" +#ifndef __SYSTEM_COMM_MESSAGES_H__ +#define __SYSTEM_COMM_MESSAGES_H__ + +#include "AirPump.h" #include "AirTrap.h" #include "BloodFlow.h" #include "BloodLeak.h" @@ -27,13 +27,13 @@ #include "CommBuffers.h" #include "DGInterface.h" #include "DialInFlow.h" -#include "DialOutFlow.h" +#include "DialOutFlow.h" #include "Dialysis.h" -#include "Fans.h" +#include "Fans.h" #include "FluidLeak.h" #include "HDCommon.h" #include "MessageSupport.h" -#include "ModeInitPOST.h" +#include "ModeInitPOST.h" #include "ModePostTreat.h" #include "ModePreTreat.h" #include "ModeStandby.h" @@ -49,7 +49,7 @@ #include "Temperatures.h" #include "Valves.h" #include "Voltages.h" - + /** * @defgroup SystemCommMessages SystemCommMessages * @brief The system communication messages module provides helper functions @@ -62,7 +62,7 @@ // ********** public definitions ********** #define ACK_REQUIRED TRUE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. -#define ACK_NOT_REQUIRED FALSE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. +#define ACK_NOT_REQUIRED FALSE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. #pragma pack(push, 1) /// Payload record structure for ACK response. @@ -126,16 +126,6 @@ U32 dialRate; ///< new dialysate flow rate } BLOOD_DIAL_RATE_CHANGE_RESPONSE_PAYLOAD_T; -/// Payload record structure for event messages. -typedef struct -{ - U32 event; ///< Event ID - U32 dataType1; ///< Data type for data field 1 - EVENT_DATAS_T data1; ///< data field 1 - U32 dataType2; ///< Data type for data field 2 - EVENT_DATAS_T data2; ///< Data field 2 -} EVENT_PAYLOAD_T; - /// Payload record structure for treatment parameter broadcast messages. typedef struct { @@ -146,22 +136,22 @@ U32 minDialRate; ///< Minimum dialysate flow rate (in mL/min) U32 maxDialRate; ///< Maximum dialysate flow rate (in mL/min) } TREATMENT_PARAM_BROADCAST_PAYLOAD_T; - -// ********** public function prototypes ********** -// Serialize message +// ********** public function prototypes ********** + +// Serialize message U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ); -// ACK MSG +// ACK MSG BOOL sendACKMsg( MESSAGE_T *message ); -// MSG_ID_DG_CHECK_IN -void handleDGCheckIn( MESSAGE_T *message ); - -// MSG_ID_UI_CHECK_IN -void handleUICheckIn( MESSAGE_T *message ); - -// MSG_ID_REQUEST_FW_VERSIONS +// MSG_ID_DG_CHECK_IN +void handleDGCheckIn( MESSAGE_T *message ); + +// MSG_ID_UI_CHECK_IN +void handleUICheckIn( MESSAGE_T *message ); + +// MSG_ID_REQUEST_FW_VERSIONS void handleFWVersionRequest( MESSAGE_T *message ); // MSG_ID_REQUEST_FW_VERSIONS @@ -180,8 +170,8 @@ void handleHDServiceScheduleRequest( MESSAGE_T *message ); // MSG_ID_REQUEST_HD_USAGE_INFO -void handleHDUsageInfoRequest( MESSAGE_T *message ); - +void handleHDUsageInfoRequest( MESSAGE_T *message ); + // MSG_ID_DG_VERSION void handleDGVersionResponse( MESSAGE_T *message ); @@ -191,16 +181,16 @@ // MSG_ID_HD_EVENT BOOL sendEvent( HD_EVENT_ID_T event, EVENT_DATA_T dat1, EVENT_DATA_T dat2 ); -// MSG_ID_OFF_BUTTON_PRESS -BOOL sendOffButtonMsgToUI( U08 cmd ); -void handleOffButtonConfirmMsgFromUI( MESSAGE_T *message ); +// MSG_ID_OFF_BUTTON_PRESS +BOOL sendOffButtonMsgToUI( U08 cmd ); +void handleOffButtonConfirmMsgFromUI( MESSAGE_T *message ); // MSG_ID_ALARM_TRIGGERED void handleAlarmTriggered( MESSAGE_T *message ); // MSG_ID_ALARM_CLEARED void handleAlarmCleared( MESSAGE_T *message ); - + // MSG_ID_USER_REQUEST_ALARM_SILENCE void handleUIAlarmSilenceRequest( MESSAGE_T *message ); @@ -222,7 +212,7 @@ // MSG_ID_UI_POST_FINAL_TEST_RESULT void handleUIPOSTFinalResult( MESSAGE_T *message ); -// MSG_ID_LOAD_CELL_READINGS +// MSG_ID_LOAD_CELL_READINGS void handleLoadCellReadingsFromDG( MESSAGE_T *message ); // MSG_ID_DG_HEATERS_DATA @@ -247,8 +237,8 @@ void handleTreatmentParametersFromUI( MESSAGE_T *message ); // MSG_ID_HD_NEW_TREATMENT_PARAMS_RESPONSE -BOOL sendTreatmentParametersResponseMsg( BOOL accepted, U08 *rejectReasons, U32 byteLength ); - +BOOL sendTreatmentParametersResponseMsg( BOOL accepted, U08 *rejectReasons, U32 byteLength ); + // MSG_ID_UI_SET_UF_VOLUME_PARAMETER void handleUFVolumeSetRequest( MESSAGE_T *message ); @@ -258,40 +248,40 @@ // MSG_ID_UI_USER_CONFIRM_TREATMENT_PARAMS void handleUIUserConfirmTreatmentParameters( MESSAGE_T *message ); -// MSG_ID_USER_UF_PAUSE_RESUME_REQUEST -void handleUFPauseResumeRequest( MESSAGE_T *message ); +// MSG_ID_USER_UF_PAUSE_RESUME_REQUEST +void handleUFPauseResumeRequest( MESSAGE_T *message ); -// MSG_ID_USER_UF_PAUSE_RESUME_RESPONSE +// MSG_ID_USER_UF_PAUSE_RESUME_RESPONSE BOOL sendUFPauseResumeResponse( BOOL accepted, U32 reason, U32 ufState ); -// MSG_ID_USER_UF_SETTINGS_CHANGE_REQUEST -void handleChangeUFSettingsRequest( MESSAGE_T *message ); - -// MSG_ID_USER_UF_SETTINGS_CHANGE_RESPONSE -BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff, F32 oldUFRate_mL_min ); - -// MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE -void handleChangeUFSettingsConfirmation( MESSAGE_T *message ); - -// MSG_ID_USER_UF_SETTINGS_CHANGE_CONFIRMATION_RESPONSE -BOOL sendChangeUFSettingsOptionResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min ); - -// MSG_ID_USER_TREATMENT_TIME_CHANGE_REQUEST -void handleChangeTreatmentDurationRequest( MESSAGE_T *message ); - -// MSG_ID_USER_TREATMENT_TIME_CHANGE_RESPONSE -BOOL sendChangeTreatmentDurationResponse( BOOL accepted, U32 reason, U32 time_min, F32 volume_mL ); - +// MSG_ID_USER_UF_SETTINGS_CHANGE_REQUEST +void handleChangeUFSettingsRequest( MESSAGE_T *message ); + +// MSG_ID_USER_UF_SETTINGS_CHANGE_RESPONSE +BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff, F32 oldUFRate_mL_min ); + +// MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE +void handleChangeUFSettingsConfirmation( MESSAGE_T *message ); + +// MSG_ID_USER_UF_SETTINGS_CHANGE_CONFIRMATION_RESPONSE +BOOL sendChangeUFSettingsOptionResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min ); + +// MSG_ID_USER_TREATMENT_TIME_CHANGE_REQUEST +void handleChangeTreatmentDurationRequest( MESSAGE_T *message ); + +// MSG_ID_USER_TREATMENT_TIME_CHANGE_RESPONSE +BOOL sendChangeTreatmentDurationResponse( BOOL accepted, U32 reason, U32 time_min, F32 volume_mL ); + // MSG_ID_TREATMENT_TIME_REMAINING_OVERRIDE: void handleTestTreatmentTimeRemainingOverrideRequest( MESSAGE_T *message ); -// MSG_ID_TREATMENT_PARAM_CHANGE_RANGES -BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, F32 minUFVol, F32 maxUFVol, U32 minDialRate, U32 maxDialRate ); +// MSG_ID_TREATMENT_PARAM_CHANGE_RANGES +BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, F32 minUFVol, F32 maxUFVol, U32 minDialRate, U32 maxDialRate ); // MSG_ID_HD_TREATMENT_LOG_PERIODIC_DATA BOOL sendTreatmentPeriodicDataToUI( TREATMENT_LOG_DATA_PERIODIC_T * periodDataPtr ); -// MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_REQUEST +// MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_REQUEST void handleChangeBloodDialysateRateChangeRequest( MESSAGE_T *message ); // MSG_ID_USER_SALINE_BOLUS_REQUEST @@ -300,9 +290,9 @@ // MSG_ID_USER_SALINE_BOLUS_RESPONSE BOOL sendSalineBolusResponse( BOOL accepted, U32 rejReason, U32 bolusVol ); -// MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_RESPONSE -BOOL sendChangeBloodDialysateRateChangeResponse( BOOL accepted, U32 reason, U32 bloodRate, U32 dialRate ); - +// MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_RESPONSE +BOOL sendChangeBloodDialysateRateChangeResponse( BOOL accepted, U32 reason, U32 bloodRate, U32 dialRate ); + // MSG_ID_UI_PRESSURE_LIMITS_CHANGE_REQUEST void handleChangePressureLimitsRequest( MESSAGE_T *message ); @@ -430,44 +420,44 @@ BOOL sendActiveAlarmsList( ACTIVE_ALARM_LIST_RESPONSE_PAYLOAD_T alarmListPayload ); // MSG_ID_HD_TREATMENT_LOG_ALARM_EVENT -BOOL sendTreatmentLogAlarmEventData( ALARM_ID_T alarmID, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); +BOOL sendTreatmentLogAlarmEventData( ALARM_ID_T alarmID, F32 alarmData1, F32 alarmData2 ); // MSG_ID_HD_TREATMENT_LOG_EVENT BOOL sendTreatmentLogEventData( TX_EVENT_ID_T event, F32 oldValue, F32 newValue ); // *********** public DG command functions ********** -// MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS -BOOL sendDialysateHeatingParamsToDG( DG_CMD_DIALYSATE_HEATING_PARAMS_T *params ); - -// MSG_ID_DG_SWITCH_RESERVOIR_CMD -BOOL sendDGSwitchReservoirCommand( DG_SWITCH_RSRVRS_CMD_T *cmd ); +// MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS +BOOL sendDialysateHeatingParamsToDG( DG_CMD_DIALYSATE_HEATING_PARAMS_T *params ); +// MSG_ID_DG_SWITCH_RESERVOIR_CMD +BOOL sendDGSwitchReservoirCommand( DG_SWITCH_RSRVRS_CMD_T *cmd ); + // MSG_ID_DG_CHANGE_VALVE_SETTING_CMD BOOL sendDGChangeValveSettingCommand( U32 valveSettingCmd ); - -// MSG_ID_DG_FILL_CMD -BOOL sendDGFillCommand( U32 cmd, U32 fillToVolumeMl, F32 targetFlowRateLPM ); - -// MSG_ID_DG_DRAIN_CMD -BOOL sendDGDrainCommand( DRAIN_RESERVOIR_CMD_PAYLOAD_T *drainCmdPtr ); - -// MSG_ID_STARTING_STOPPING_TREATMENT_CMD -BOOL sendDGStartStopCommand( BOOL start ); - -// MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD -BOOL sendDGStartStopTrimmerHeaterCommand( BOOL start ); - -// MSG_ID_DG_SAMPLE_WATER_CMD -BOOL sendDGSampleWaterCommand( SAMPLE_WATER_CMD_T cmd ); +// MSG_ID_DG_FILL_CMD +BOOL sendDGFillCommand( U32 cmd, U32 fillToVolumeMl, F32 targetFlowRateLPM ); + +// MSG_ID_DG_DRAIN_CMD +BOOL sendDGDrainCommand( DRAIN_RESERVOIR_CMD_PAYLOAD_T *drainCmdPtr ); + +// MSG_ID_STARTING_STOPPING_TREATMENT_CMD +BOOL sendDGStartStopCommand( BOOL start ); + +// MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD +BOOL sendDGStartStopTrimmerHeaterCommand( BOOL start ); + +// MSG_ID_DG_SAMPLE_WATER_CMD +BOOL sendDGSampleWaterCommand( SAMPLE_WATER_CMD_T cmd ); + // MSG_ID_DG_COMMAND_RESPONSE void handleDGCmdResp( MESSAGE_T *messagePtr ); // MSG_ID_UI_HD_SET_RTC_REQUEST: void handleUIClockSyncRequest( MESSAGE_T *message ); - -// MSG_ID_DG_OP_MODE + +// MSG_ID_DG_OP_MODE void handleDGOpMode( MESSAGE_T *message ); // MSG_ID_DG_START_STOP_FLUSH @@ -494,7 +484,7 @@ // MSG_ID_UI_REQUEST_SERVICE_MODE void handleUIServiceModeRequest( MESSAGE_T *message ); -// MSG_ID_ALARM_STATUS +// MSG_ID_ALARM_STATUS BOOL broadcastAlarmStatus( COMP_ALARM_STATUS_T almStatus ); // MSG_ID_HD_SEND_CALIBRATION_RECORD @@ -568,6 +558,12 @@ // MSG_ID_DG_SEND_RO_PERMEATE_SAMPLE_DISPENSE_READY_TO_HD void handleReceiveROPermeateSampleReadyToDispenseFromDG( MESSAGE_T* message ); +// MSG_ID_UI_INSTITUTIONAL_RECORD_REQUEST +void handleSendInstitutionalRecordToUI( MESSAGE_T* message ); + +// MSG_ID_UI_HD_RESET_IN_SERVICE_MODE_REQUEST +void handleUIHDResetInServiceModeRequest( MESSAGE_T* message ); + // *********** public test support message functions ********** // MSG_TESTER_LOG_IN @@ -605,22 +601,22 @@ // MSG_ID_DIALYSATE_INLET_PUMP_ROTOR_COUNT_OVERRIDE void handleHDDialInPumpRotorCountOverrideRequest( MESSAGE_T *message ); -// MSG_ID_BLOOD_PUMP_MC_MEAS_SPEED_OVERRIDE -void handleTestBloodPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_PUMP_MC_MEAS_CURR_OVERRIDE -void handleTestBloodPumpMCMeasuredCurrentOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_FLOW_SEND_INTERVAL_OVERRIDE -void handleTestBloodFlowBroadcastIntervalOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_PUMP_MEAS_SPEED_OVERRIDE -void handleTestBloodPumpMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_PUMP_MEAS_ROTOR_SPEED_OVERRIDE -void handleTestBloodPumpRotorMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_IN_FLOW_SET_PT_OVERRIDE +// MSG_ID_BLOOD_PUMP_MC_MEAS_SPEED_OVERRIDE +void handleTestBloodPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_PUMP_MC_MEAS_CURR_OVERRIDE +void handleTestBloodPumpMCMeasuredCurrentOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_FLOW_SEND_INTERVAL_OVERRIDE +void handleTestBloodFlowBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_PUMP_MEAS_SPEED_OVERRIDE +void handleTestBloodPumpMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_PUMP_MEAS_ROTOR_SPEED_OVERRIDE +void handleTestBloodPumpRotorMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_IN_FLOW_SET_PT_OVERRIDE void handleTestDialInFlowSetPointOverrideRequest( MESSAGE_T *message ); // MSG_ID_DIAL_OUT_FLOW_SET_PT_OVERRIDE @@ -651,7 +647,13 @@ void handleTestVenousPressureOverrideRequest( MESSAGE_T *message ); // MSG_ID_OCCLUSION_BLOOD_PUMP_OVERRIDE -void handleTestBloodPumpOcclusionOverrideRequest( MESSAGE_T *message ); +void handleTestBloodPumpOcclusionOverrideRequest( MESSAGE_T *message ); + +//MSG_ID_HD_PARTIAL_OCCLUSION_BLOOD_PUMP_OVERRIDE +void handleTestFilteredBloodPumpOcclusionOverrideRequest( MESSAGE_T *message ); + +//MSG_ID_HD_PARTIAL_OCCL_BLOOD_PUMP_BASELINE_OVERRIDE +void handleTestBloodPumpOcclusionBaselineOverrideRequest( MESSAGE_T *message ); // MSG_ID_PRES_OCCL_SEND_INTERVAL_OVERRIDE void handleTestPresOcclBroadcastIntervalOverrideRequest( MESSAGE_T *message ); @@ -731,6 +733,9 @@ // MSG_ID_HD_AIR_TRAP_LEVEL_SENSOR_OVERRIDE void handleSetAirTrapLevelSensorOverrideRequest( MESSAGE_T *message ); +// MSG_ID_HD_RAW_AIR_TRAP_LEVEL_SENSOR_OVERRIDE +void handleSetRawAirTrapLevelSensorOverrideRequest( MESSAGE_T *message ); + // MSG_ID_HD_FLUID_LEAK_SEND_INTERVAL_OVERRIDE void handleSetFluidLeakBroadcastIntervalOverrideRequest( MESSAGE_T *message ); @@ -989,6 +994,15 @@ // MSG_ID_HD_BLOOD_PUMP_HARD_STOP void handleBloodPumpHardStopRequest( MESSAGE_T *message ); +// MSG_ID_HD_SET_ENTER_BOOTLOADER +void handleSetBootloaderRequest( MESSAGE_T *message ); + +// MSG_ID_HD_ENTER_BOOTLOADER_NOW +void handleEnterBootloaderNowRequest( MESSAGE_T *message ); + +// MSG_ID_HD_REBOOT_NOW +void handleRebootNowRequest( MESSAGE_T *message ); + // MSG_ID_HD_ENABLE_VENOUS_BUBBLE_ALARM_DETECTION void handleEnableVenousBubbleAlarmDetectionRequest( MESSAGE_T *message ); @@ -1016,6 +1030,20 @@ // MSG_ID_HD_RECIRULATION_PCT_OVERRIDE void handleTestHDRecirulationPctOverrideRequest( MESSAGE_T* message ); +// MSG_ID_FW_SET_ENTER_BOOTLOADER +// MSG_ID_FW_ENTER_BOOTLOADER_NOW +// MSG_ID_FW_REBOOT_NOW +void handleRebootNowRequest( MESSAGE_T *message ); + +// MSG_ID_HD_GET_INSTITUTIONAL_RECORD +void handleGetHDInstitutionalRecord( MESSAGE_T *message ); + +// MSG_ID_HD_SEND_INSTITUTIONAL_RECORD +BOOL sendHDInstitutionalRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* srvcRcrdAddress ); + +// MSG_ID_HD_SET_INSTITUTIONAL_RECORD +void handleSetHDInstitutionalRecord( MESSAGE_T *message ); + /**@}*/ -#endif +#endif