Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rfb4b4a4f9d16742bfb76f62970a43c97e1ac14f0 -r8e7158d8231435496fcf1d5649e51babf859ccc7 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision fb4b4a4f9d16742bfb76f62970a43c97e1ac14f0) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 8e7158d8231435496fcf1d5649e51babf859ccc7) @@ -1,26 +1,45 @@ -/************************************************************************** - * - * Copyright (c) 2019-2020 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 - * - * @date 10-Oct-2019 - * @author S. Nash - * - * @brief header file for System Communication message definitions and functions. - * - **************************************************************************/ +/************************************************************************** +* +* Copyright (c) 2019-2021 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) Sean Nash +* @date (last) 01-Dec-2020 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ #ifndef __SYSTEM_COMM_MESSAGES_H__ #define __SYSTEM_COMM_MESSAGES_H__ -#include "HDCommon.h" -#include "MsgQueues.h" +#include "HDCommon.h" +#include "AirTrap.h" +#include "BloodFlow.h" +#include "DGInterface.h" +#include "DialInFlow.h" #include "DialOutFlow.h" +#include "Dialysis.h" +#include "ModeTreatment.h" +#include "MsgQueues.h" +#include "NVDataMgmt.h" +#include "PresOccl.h" +#include "Valves.h" +/** + * @defgroup SystemCommMessages SystemCommMessages + * @brief The system communication messages module provides helper functions + * for sending outgoing system message and handling incoming system messages. + * + * @addtogroup SystemCommMessages + * @{ + */ + // ********** public definitions ********** // ********** public function prototypes ********** @@ -30,63 +49,154 @@ // 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_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_LOAD_CELL_READINGS void handleLoadCellReadingsFromDG( MESSAGE_T *message ); +// MSG_ID_DG_TEMPERATURE_DATA: +void handleDGTemperatureData( MESSAGE_T *message ); + +// MSG_ID_RO_PUMP_DATA: +void handleROPumpData( MESSAGE_T *message ); + +// MSG_ID_DRAIN_PUMP_DATA: +void handleDrainPumpData( MESSAGE_T *message ); + +// MSG_ID_DG_PRESSURES_DATA: +void handleDGPressuresData( MESSAGE_T *message ); + +// MSG_ID_DG_RESERVOIR_DATA: +void handleDGReservoirData( MESSAGE_T *message ); + +// MSG_ID_UI_START_TREATMENT +void handleUIStartTreatmentMsg( MESSAGE_T *message ); + +// MSG_ID_HD_START_TREATMENT_RESPONSE +BOOL sendTreatmentStartResponseMsg( BOOL accepted, U32 reason ); + +// MSG_ID_UI_TREATMENT_END_REQUEST +void handleUIUserEndTreatmentRequest( MESSAGE_T *message ); + +// MSG_ID_HD_TREATMENT_END_RESPONSE +BOOL sendTreatmentEndResponseMsg( BOOL accepted ); + +// MSG_ID_UI_NEW_TREATMENT_PARAMS +void handleTreatmentParametersFromUI( MESSAGE_T *message ); + +// MSG_ID_HD_NEW_TREATMENT_PARAMS_RESPONSE +BOOL sendTreatmentParametersResponseMsg( BOOL rejected, U08 *rejectReasons, U32 byteLength ); + +// 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_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 ); +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_PARAM_CHANGE_RANGES -BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, U32 minUFVol, U32 maxUFVol, U32 minDialRate, U32 maxDialRate ); +BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, F32 minUFVol, F32 maxUFVol, U32 minDialRate, U32 maxDialRate ); // MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_REQUEST void handleChangeBloodDialysateRateChangeRequest( MESSAGE_T *message ); + +// MSG_ID_USER_SALINE_BOLUS_REQUEST +void handleSalineBolusRequest( MESSAGE_T *message ); + +// 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_UI_PRESSURE_LIMITS_CHANGE_REQUEST +void handleChangePressureLimitsRequest( MESSAGE_T *message ); + +// MSG_ID_HD_PRESSURE_LIMITS_CHANGE_RESPONSE +BOOL sendPressureLimitsChangeResponse( PRESSURE_LIMIT_CHANGE_RESPONSE_T *data ); + // MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS BOOL sendDialysateTempTargetsToDG( F32 primary, F32 trimmer ); -// MSG_ID_REQUEST_FW_VERSIONS -void handleFWVersionRequest( MESSAGE_T *message ); +// MSG_ID_DG_SWITCH_RESERVOIR_CMD +BOOL sendDGSwitchReservoirCommand( U32 activeReservoir ); +// MSG_ID_DG_FILL_CMD +BOOL sendDGFillCommand( U32 fillToVolumeMl ); + +// MSG_ID_DG_DRAIN_CMD +BOOL sendDGDrainCommand( U32 drainToVolumeMl ); + +// MSG_ID_STARTING_STOPPING_TREATMENT_CMD +BOOL sendDGStartStopCommand( BOOL start ); + +// MSG_ID_DG_SAMPLE_WATER_CMD +BOOL sendDGSampleWaterCommand( void ); + +// MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD +BOOL sendDGStartStopTrimmerHeaterCommand( BOOL start ); + +// MSG_ID_DG_OP_MODE: +void handleDGOpMode( MESSAGE_T *message ); + +// MSG_ID_HD_ACCELEROMETER_DATA +BOOL broadcastAccelData( F32 x, F32 y, F32 z, F32 xm, F32 ym, F32 zm, F32 xt, F32 yt, F32 zt ); + // MSG_ID_ALARM_STATUS BOOL broadcastAlarmStatus( COMP_ALARM_STATUS_T almStatus ); + // MSG_ID_ALARM_TRIGGERED BOOL broadcastAlarmTriggered( U16 alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); + // MSG_ID_ALARM_CLEARED BOOL broadcastAlarmCleared( U16 alarm ); // MSG_ID_BLOOD_FLOW_DATA -BOOL broadcastBloodFlowData( U32 flowStPt, F32 measFlow, F32 measRotorSpd, F32 measSpd, F32 measMCSpd, F32 measMCCurr, F32 pwmDC ); +BOOL broadcastBloodFlowData( BLOOD_PUMP_STATUS_PAYLOAD_T *bloodData ); // MSG_ID_DIALYSATE_FLOW_DATA -BOOL broadcastDialInFlowData( U32 flowStPt, F32 measFlow, F32 measRotorSpd, F32 measSpd, F32 measMCSpd, F32 measMCCurr, F32 pwmDC ); +BOOL broadcastDialInFlowData( DIALIN_PUMP_STATUS_PAYLOAD_T *dialInData ); // MSG_ID_DIALYSATE_OUT_FLOW_DATA BOOL broadcastDialOutFlowData( DIAL_OUT_FLOW_DATA_T *dialOutFlowData ); // MSG_ID_PRESSURE_OCCLUSION_DATA -BOOL broadcastPresOcclData( F32 artPres, F32 venPres, F32 bpOccl, F32 diOccl, F32 doOccl ); +BOOL broadcastPresOcclData( PRESSURE_OCCLUSION_DATA_T data ); // MSG_ID_RTC_EPOCH BOOL broadcastRTCEpoch( U32 epoch ); @@ -95,25 +205,42 @@ BOOL broadcastTreatmentTime( U32 secsTotTreatment, U32 secsElapsed, U32 secsRemaining ); // MSG_ID_TREATMENT_STATE -BOOL broadcastTreatmentState( U32 subMode, U32 uFState, BOOL salineBolusState ); +BOOL broadcastTreatmentState( U32 subMode, U32 uFState, U32 salineBolusState ); // MSG_ID_POWER_OFF_WARNING BOOL broadcastPowerOffWarning( void ); +// MSG_ID_HD_OP_MODE +BOOL broadcastHDOperationMode( U32 mode, U32 subMode ); + +// MSG_ID_HD_VALVES_DATA +BOOL broadcastHDValves( HD_VALVE_DATA_T *valveData ); + +// MSG_ID_SALINE_BOLUS_DATA +BOOL broadcastSalineBolusData( SALINE_BOLUS_DATA_PAYLOAD_T data ); + +// MSG_ID_HD_AIR_TRAP_DATA +BOOL broadcastAirTrapData( AIR_TRAP_LEVELS_T lowerLevel, AIR_TRAP_LEVELS_T upperLevel ); + +#ifdef EMC_TEST_BUILD +// MSG_ID_CAN_ERROR_COUNT +BOOL broadcastCANErrorCount( U32 count ); +#endif + // *********** public test support message functions ********** #ifdef DEBUG_ENABLED -// DEBUG OUTPUT -BOOL sendDebugData( U08 *dbgData, U32 len ); +// DEBUG OUTPUT to debug UART +BOOL sendDebugData( U08 *dbgData, U32 len ); + +// Debug message to UI for logging +void sendDebugDataToUI( U08 *str ); #endif // MSG_TESTER_LOG_IN void handleTesterLogInRequest( MESSAGE_T *message ); BOOL isTestingActivated( void ); -// MSG_ID_HD_MESSAGE -void handleTestHDMessageRequest( MESSAGE_T *message ); - // MSG_ID_OFF_BUTTON_STATE_OVERRIDE void handleTestOffButtonStateOverrideRequest( MESSAGE_T *message ); @@ -141,6 +268,9 @@ // MSG_ID_BLOOD_FLOW_MEAS_OVERRIDE void handleTestBloodFlowMeasuredOverrideRequest( MESSAGE_T *message ); +// MSG_ID_BLOOD_FLOW_SIG_STRENGTH_OVERRIDE +void handleTestBloodFlowSignalStrengthOverrideRequest( MESSAGE_T *message ); + // MSG_ID_BLOOD_PUMP_MC_MEAS_SPEED_OVERRIDE void handleTestBloodPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); @@ -157,11 +287,17 @@ void handleTestBloodPumpRotorMeasuredSpeedOverrideRequest( MESSAGE_T *message ); // MSG_ID_DIAL_IN_FLOW_SET_PT_OVERRIDE -void handleTestDialInFlowSetPointOverrideRequest( MESSAGE_T *message ); +void handleTestDialInFlowSetPointOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_FLOW_SET_PT_OVERRIDE +void handleTestDialOutFlowSetPointOverrideRequest( MESSAGE_T *message ); // MSG_ID_DIAL_IN_FLOW_MEAS_OVERRIDE void handleTestDialInFlowMeasuredOverrideRequest( MESSAGE_T *message ); +// MSG_ID_DIAL_IN_FLOW_SIG_STRENGTH_OVERRIDE +void handleTestDialInFlowSignalStrengthOverrideRequest( MESSAGE_T *message ); + // MSG_ID_DIAL_IN_PUMP_MC_MEAS_SPEED_OVERRIDE void handleTestDialInPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); @@ -222,5 +358,77 @@ // MSG_ID_DIAL_OUT_LOAD_CELL_WEIGHT_OVERRIDE void handleTestDialOutLoadCellWeightOverrideRequest( MESSAGE_T *message ); -#endif +// MSG_ID_HD_SAFETY_SHUTDOWN_OVERRIDE: +void handleTestHDSafetyShutdownOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_ACCEL_OVERRIDE: +void handleTestHDAccelOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_ACCEL_MAX_OVERRIDE: +void handleTestHDAccelMaxOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_ACCEL_SEND_INTERVAL_OVERRIDE: +void handleTestHDAccelBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_ACCEL_SET_CALIBRATION: +void handleSetAccelCalibration( MESSAGE_T *message ); + +// MSG_ID_HD_BLOOD_FLOW_SET_CALIBRATION: +void handleSetBloodFlowCalibration( MESSAGE_T *message ); + +// MSG_ID_HD_DIALYSATE_FLOW_SET_CALIBRATION: +void handleSetDialysateFlowCalibration( MESSAGE_T *message ); + +// MSG_ID_HD_SET_PARAMETER_TREATMENT_PARAMETER +void handleTestSetTreatmentParameter( MESSAGE_T *message ); + +// MSG_ID_VALVES_STATES_PUBLISH_INTERVAL_OVERRIDE +void handleTestHDValvesBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_HOME_VALVE +void handleHomeHDValve( MESSAGE_T *message ); + +// MSG_ID_HD_VALVES_SET_AIR_TRAP_VALVE +void handleSetAirTrapValve( MESSAGE_T *message ); + +// MSG_ID_HD_VALVES_SET_POSITION +void handleSetHDValvePositionOverrideRequest( MESSAGE_T *message ); + +#ifdef DEBUG_ENABLED +// MSG_ID_HD_VALVES_SET_PWM_OVERRIDE +void handleSetHDValvePWMOverrideRequest( MESSAGE_T *message ); +#endif + +// MSG_ID_HD_SET_PARAMETER_TREATMENT_PARAMETER +void handleTestSetTreatmentParameter( MESSAGE_T *message ); +// MSG_ID_HD_SOFTWARE_RESET_REQUEST +void handleHDSoftwareResetRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_PUMP_HOME_CMD +void handleTestBloodPumpHomeRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_IN_PUMP_HOME_CMD +void handleTestDialInPumpHomeRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_PUMP_HOME_CMD +void handleTestDialOutPumpHomeRequest( MESSAGE_T *message ); + +// MSG_ID_HD_AIR_TRAP_SEND_INTERVAL_OVERRIDE +void handleSetAirTrapBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_AIR_TRAP_LEVEL_SENSOR_OVERRIDE +void handleSetAirTrapLevelSensorOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_SUPER_CLEAR_ALARMS_CMD +void handleTestSuperClearAlarmsRequest( MESSAGE_T *message ); + +// MSG_ID_HD_REQUEST_CALIBRATION_DATA +void handleTestHDCalibrationDataRequest( MESSAGE_T *message ); + +// MSG_ID_HD_ERASE_CALIBRATION_DATA +void handleTestEraseHDCalibrationDataRequest( MESSAGE_T *message ); + +/**@}*/ + +#endif