Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r5a61bccd959265c00e5276ba23391198ca82b6dd -rb935e1d4656c04dda9644800c8bf21bd89eee6ab --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 5a61bccd959265c00e5276ba23391198ca82b6dd) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision b935e1d4656c04dda9644800c8bf21bd89eee6ab) @@ -1,98 +1,411 @@ -/************************************************************************** - * - * 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. - * - **************************************************************************/ - -#ifndef __SYSTEM_COMM_MESSAGES_H__ -#define __SYSTEM_COMM_MESSAGES_H__ - -#include "DGCommon.h" -#include "MsgQueues.h" - -// ********** public definitions ********** - -// ********** public function prototypes ********** - -// ACK MSG -BOOL sendACKMsg( MESSAGE_T *message ); - -// 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_RTC_EPOCH -BOOL broadcastRTCEpoch( U32 epoch ); // TODO - probably don't want DG to broadcast these - -// MSG_ID_LOAD_CELL_READINGS -BOOL broadcastLoadCellData( F32 loadCellA1, F32 loadCellA2, F32 loadCellB1, F32 loadCellB2 ); - -// MSG_ID_RO_PUMP_DATA -BOOL broadcastROPumpData( U32 tgtPressure, F32 measFlow, F32 setPWM ); - -// MSG_ID_DRAIN_PUMP_DATA -BOOL broadcastDrainPumpData( U32 tgtSpeed, F32 setPWM ); - -// MSG_ID_DG_PRESSURES_DATA -BOOL broadcastPressureSensorsData( F32 measROIn, F32 measROOut, F32 measDrainIn, F32 measDrainOut ); - -// MSG_ID_POWER_OFF_WARNING -void handlePowerOffWarning( MESSAGE_T *message ); - -// MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS -void handleSetDialysateTemperatureCmd( MESSAGE_T *message ); - -// MSG_ID_REQUEST_FW_VERSIONS -void handleFWVersionCmd( MESSAGE_T *message ); - -// MSG_ID_DG_SWITCH_RESERVOIR -void handleSwitchReservoirCmd( MESSAGE_T *message ); - -// MSG_ID_DG_FILL -void handleFillCmd( MESSAGE_T *message ); - -// MSG_ID_DG_DRAIN -void handleDrainCmd( MESSAGE_T *message ); - -// MSG_ID_STARTING_STOPPING_TREATMENT -void handleStartStopTreatmentMsg( MESSAGE_T *message ); - -// *********** public test support message functions ********** - -#ifdef DEBUG_ENABLED -// DEBUG OUTPUT -BOOL sendDebugData( U08 *dbgData, U32 len ); -#endif - -// MSG_TESTER_LOG_IN -void handleTesterLogInRequest( MESSAGE_T *message ); -BOOL isTestingActivated( void ); - -// MSG_ID_DG_MESSAGE -void handleTestDGMessageRequest( MESSAGE_T *message ); - -// MSG_ID_WATCHDOG_TASK_CHECKIN_OVERRIDE: -void handleTestWatchdogCheckInStateOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_ALARM_STATE_OVERRIDE -void handleTestAlarmStateOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_LOAD_CELL_OVERRIDE -void handleTestLoadCellOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_SET_RTC_TIMESTAMP -void handleSetRTCTimestamp( MESSAGE_T *message ); - -#endif - +/************************************************************************** +* +* Copyright (c) 2019-2022 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) Dara Navaei +* @date (last) 19-Oct-2022 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ + +#ifndef __SYSTEM_COMM_MESSAGES_H__ +#define __SYSTEM_COMM_MESSAGES_H__ + +#include "CommBuffers.h" +#include "DGCommon.h" +#include "DrainPump.h" +#include "Fans.h" +#include "FluidLeak.h" +#include "LoadCell.h" +#include "MessageSupport.h" +#include "ModeChemicalDisinfect.h" +#include "ModeFlush.h" +#include "ModeHeatDisinfect.h" +#include "MsgQueues.h" +#include "NVDataMgmt.h" +#include "Reservoirs.h" +#include "ROPump.h" +#include "Switches.h" +#include "TemperatureSensors.h" +#include "Thermistors.h" +#include "UVReactors.h" +#include "Voltages.h" + +/** + * @defgroup SystemCommMessages SystemCommMessages + * @brief System communication messages service module. Handles and broadcasts system messages. + * + * @addtogroup SystemCommMessages + * @{ + */ + +// ********** public definitions ********** + +#define ACK_REQUIRED TRUE ///< Require an ACK. +#define ACK_NOT_REQUIRED FALSE ///< Not require an ACK. + +// ********** public function prototypes ********** + +U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ); + +// ACK MSG +BOOL sendACKMsg( MESSAGE_T *message ); + +// MSG_ID_DG_EVENT +BOOL sendEvent( DG_EVENT_ID_T event, EVENT_DATA_T dat1, EVENT_DATA_T dat2 ); + +// Serialize message +U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ); + +// MSG_ID_ALARM_TRIGGERED +BOOL broadcastAlarmTriggered( U32 alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); + +// MSG_ID_ALARM_CLEARED +BOOL broadcastAlarmCleared( U32 alarm ); + +// MSG_ID_ALARM_CONDITION_CLEARED +BOOL broadcastAlarmConditionCleared( U32 alarm ); + +// MSG_ID_DG_COMMAND_RESPONSE +void sendCommandResponseMsg( DG_CMD_RESPONSE_T *cmdResponsePtr ); + +// MSG_ID_POWER_OFF_WARNING +void handlePowerOffWarning( MESSAGE_T *message ); + +// MSG_ID_RTC_EPOCH +void handleRTCSyncFromHD( MESSAGE_T *message ); + +// MSG_ID_ALARM_CLEARED +void handleAlarmClear( MESSAGE_T *message ); + +// MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS +void handleSetDialysateTemperatureCmd( MESSAGE_T *message ); + +// MSG_ID_REQUEST_FW_VERSIONS +void handleFWVersionCmd( MESSAGE_T *message ); + +// MSG_ID_REQUEST_FW_VERSIONS +void handleDGSerialNumberRequest( void ); + +// MSG_ID_HD_REQUEST_DG_SERVICE_RECORD +void handleDGServiceScheduleRequest( MESSAGE_T *message ); + +// MSG_ID_HD_REQUEST_DG_CONCENTRATE_RATIOS +void handleDGSendConcentrateMixingRatios( MESSAGE_T *message ); + +// MSG_ID_DG_SWITCH_RESERVOIR_CMD +void handleSwitchReservoirCmd( MESSAGE_T *message ); + +// MSG_ID_DG_CHANGE_VALVE_SETTING_CMD +void handleChangeValveSettingCmd( MESSAGE_T *message ); + +// MSG_ID_DG_FILL_CMD +void handleFillCmd( MESSAGE_T *message ); + +// MSG_ID_DG_DRAIN_CMD +void handleDrainCmd( MESSAGE_T *message ); + +// MSG_ID_STARTING_STOPPING_TREATMENT +void handleStartStopTreatmentMsg( MESSAGE_T *message ); + +// MSG_ID_DG_SAMPLE_WATER_CMD +void handleSampleWaterCmd( MESSAGE_T *message ); + +// MSG_ID_SET_RTC_TIMESTAMP +void handleSetRTCTimestamp( MESSAGE_T *message ); + +// MSG_ID_START_STOP_PRIMARY_HEATER +BOOL handleStartStopPrimaryHeater( MESSAGE_T * message ); + +// MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD +BOOL handleDGStartStopTrimmerHeater( MESSAGE_T *message ); + +// MSG_ID_HD_START_STOP_TRIMMER_HEATER_CMD +void handleHDStartStopTrimmerHeaterCmd( MESSAGE_T *message ); + +// MSG_ID_DG_SEND_CALIBRATION_DATA +BOOL sendDGCalibrationRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* calRcrdAddress ); + +// MSG_ID_DG_SEND_SYSTEM_RECORD +BOOL sendDGSystemRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* sysRcrdAddress ); + +// MSG_ID_DG_SEND_SERVICE_RECORD +BOOL sendDGServiceRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* srvcRcrdAddress ); + +// MSG_ID_DG_POST_SINGLE_TEST_RESULT +BOOL sendPOSTTestResult( DG_POST_STATE_T test, BOOL passed ); + +// MSG_ID_DG_POST_FINAL_TEST_RESULT +BOOL sendPOSTFinalResult( BOOL passed ); + +// MSG_ID_DG_SEND_SW_CONFIG_RECORD +BOOL sendDGSWConfigRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* swRcrdAddress ); + +// MSG_ID_DG_SEND_USAGE_INFO_RECORD +BOOL sendDGUsageInfoRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* usageInfoAddress ); + +// MSG_ID_HD_OP_MODE +BOOL handleSetHDOperationMode( MESSAGE_T *message ); + +// MSG_ID_HD_REQUEST_DG_USAGE_INFO +void handleHDRequestDGUsageInfo( MESSAGE_T * message ); + +// MSG_ID_UI_REQUEST_SERVICE_MODE +void handleServiceModeRequest( MESSAGE_T *message ); + +// MSG_ID_DG_RESPONSE_SERVICE_MODE_REQUEST +BOOL sendServiceModeResponse( BOOL accepted, U32 rejCode ); + +// *********** public test support message functions ********** + +// MSG_TESTER_LOG_IN +void handleTesterLogInRequest( MESSAGE_T *message ); +BOOL isTestingActivated( void ); + +// MSG_ID_DG_ALARM_STATE_OVERRIDE +void handleTestAlarmStateOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_WATCHDOG_TASK_CHECKIN_OVERRIDE: +void handleTestWatchdogCheckInStateOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_LOAD_CELL_OVERRIDE +void handleTestLoadCellOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_LOAD_CELLL_SEND_INTERVAL_OVERRIDE: +void handleTestLoadCellDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_TEMPERATURE_SENSORS_OVERRIDE +void handleTestTemperatureSensorsOverrideRequest ( MESSAGE_T *message ); + +// MSG_ID_TEMPERATURE_SENSORS_DATA_PUBLISH_OVERRIDE +void handleTestTemperatureSensorsDataPublishOverrideRequest ( MESSAGE_T *message ); + +// MSG_ID_PUBLSIH_HEATERS_DATA_OVERRIDE +void handleTestHeatersDataPublishOverrideRequest ( MESSAGE_T *message ); + +// MSG_ID_PRESSURE_OVERRIDE: +void handleTestPressureSensorOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_PRESSURE_SEND_INTERVAL_OVERRIDE: +void handleTestPressureDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIALYSATE_MEASURED_FLOW_OVERRIDE: +void handleTestMeasuredFlowOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_RO_PUMP_SEND_INTERVAL_OVERRIDE: +void handleTestROPumpDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIALYSATE_FLOW_SEND_INTERVAL_OVERRIDE: +void handleTestFlowSensorsDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DRAIN_PUMP_SET_RPM_OVERRIDE +void handleTestDrainPumpRPMOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DRAIN_PUMP_SET_RPM +void handleTestSetDrainPumpRPM( MESSAGE_T *message ); + +// MSG_ID_DRAIN_PUMP_SEND_INTERVAL_OVERRIDE: +void handleTestDrainPumpDataBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_VALVE_STATE_OVERRIDE +void handleTestValveStateOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_VALVES_STATES_PUBLISH_INTERVAL_OVERRIDE +void handleTestValvesStatesPublishIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_SAFETY_SHUTDOWN_OVERRIDE: +void handleTestDGSafetyShutdownOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DRAIN_PUMP_SET_DELTA_PRESSURE_OVERRIDE +void handleSetDrainPumpTargetOutletPressure( MESSAGE_T *message ); + +// MSG_ID_DG_SWITCHES_STATUS_OVERRIDE +void handleSetSwitchesStatusOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_SWITCHES_PUBLISH_INTERVAL_OVERRIDE +void handleTestSwitchesPublishIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_CONDUCTIVITY_OVERRIDE +void handleTestSetConductivityOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE +void handleTestSetConductivityDataPublishIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_ACCEL_OVERRIDE: +void handleTestDGAccelOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_ACCEL_MAX_OVERRIDE: +void handleTestDGAccelMaxOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_ACCEL_SEND_INTERVAL_OVERRIDE: +void handleTestDGAccelBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_MONITORED_VOLTAGES_SEND_INTERVAL_OVERRIDE +void handleTestMonitoredVoltagesSendIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_MONITORED_VOLTAGES_OVERRIDE +void handleTestMonitoredVoltageOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_START_STOP_INLET_UV_REACTOR +void handleStartStopUVReactors( MESSAGE_T *message ); + +// MSG_ID_UV_REACTORS_DATA_PUBLISH_INTERVAL_OVERRIDE +void handleTestUVReactorsDataPublishIntervalOverride( MESSAGE_T *message ); + +// MSG_ID_DG_FLUID_LEAK_SEND_INTERVAL_OVERRIDE +void handleSetFluidLeakBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_FLUID_LEAK_STATE_DETECTOR_OVERRIDE +void handleSetFluidLeakStateDetectorOverrideRequest( MESSAGE_T *message); + +// MSG_ID_DG_SOFTWARE_RESET_REQUEST +void handleDGSoftwareResetRequest( MESSAGE_T *message); + +// MSG_ID_DG_UV_REACTORS_HEALTH_OVERRIDE +void handleTestUVReactorsHealthOverride( MESSAGE_T *message ); + +// MSG_ID_DG_CONCENTRATE_PUMP_MEASURED_SPEED_OVERRIDE +void handleConcentratePumpMeasuredSpeedOverride( MESSAGE_T *message ); + +// MSG_ID_CONCENTRATE_PUMP_TARGET_SPEED_OVERRIDE +void handleSetConcentratePumpTargetSpeed( MESSAGE_T *message ); + +// MSG_ID_CONCENTRATE_PUMP_STATE_CHANGE_REQUEST +void handleConcentratePumpStateChangeRequest( MESSAGE_T *message ); + +// MSG_ID_CONCENTRATE_PUMP_PUBLISH_INTERVAL_OVERRIDE +void handleConcentratePumpPublishIntervalOverride( MESSAGE_T *message ); + +// MSG_ID_DG_THERMISTORS_DATA_PUBLISH_INTERVAL_OVERRIDE +void handleTestThermistorsDataPublishIntervalOverride( MESSAGE_T *message ); + +// MSG_ID_DG_THERMISTORS_VALUE_OVERRIDE +void handleTestThermistorsValueOverride( MESSAGE_T *message ); + +// MSG_ID_DG_FANS_DATA_PUBLISH_INTERVAL_OVERRIDE +void handleTestFansDataPublishIntervalOverride( MESSAGE_T *message ); + +// MSG_ID_DG_RO_PUMP_DUTY_CYCLE_OVERRIDE +void handleTestROPumpDutyCycleOverride( MESSAGE_T *message ); + +// MSG_ID_DG_RO_FLOW_RATE_OVERRIDE +void handleTestMeasuredROFlowRateOverride( MESSAGE_T *message ); + +// MSG_ID_DG_SET_RO_PUMP_TARGET_FLOW +void handleTestROPumpTargetFlowOverride( MESSAGE_T *message ); + +// MSG_ID_DG_RO_PUMP_TARGET_PRESSURE_OVERRIDE +void handleROPumpTargetPressureOverride( MESSAGE_T *message ); + +// MSG_ID_DG_START_STOP_FLUSH +BOOL handleStartStopDGFlush( MESSAGE_T *message ); + +// MSG_ID_DG_START_STOP_HEAT_DISINFECT +BOOL handleStartStopDGHeatDisinfect( MESSAGE_T *message ); + +// MSG_ID_UI_DG_SET_RTC_REQUEST +void handleUIClockSyncRequest( MESSAGE_T *message ); + +// MSG_ID_HD_DG_POST_RESULT_REQUEST +void handleDGPOSTResultRequest( MESSAGE_T *message ); + +// MSG_ID_DG_SET_CALIBRATION_DATA +void handleSetDGCalibrationRecord( MESSAGE_T *message ); + +// MSG_ID_DG_GET_CALIBRATION_RECORD +void handleGetDGCalibrationRecord( MESSAGE_T *message ); + +// MSG_ID_DG_SET_SYSTEM_DATA +void handleSetDGSystemRecord( MESSAGE_T *message ); + +// MSG_ID_DG_GET_SYSTEM_DATA +void handleGetDGSystemRecord( MESSAGE_T *message ); + +// MSG_ID_DG_GET_SERVICE_RECORD +void handleGetDGServiceRecord( MESSAGE_T *message ); + +// MSG_ID_DG_SET_SERVICE_RECORD +void handleSetDGServiceRecord( MESSAGE_T *message ); + +// MSG_ID_DG_START_STOP_CHEM_DSINFECT +BOOL handleStartStopDGChemicalDisinfect( MESSAGE_T *message ); + +// MSG_ID_DG_OP_MODE_PUBLISH_INTERVAL_OVERRIDE +void handleSetDGOpModeBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_FILTER_FLUSH_TIME_PERIOD_OVERRIDE +void handleFilterFlushTimePeriodOverride( MESSAGE_T *message ); + +// MSG_ID_DG_BLOCK_MESSAGE_TRANSMISSION +void handleTestBlockMessagesRequest( MESSAGE_T *message ); + +// MSG_ID_DG_ALARM_INFO_SEND_INTERVAL_OVERRIDE +void handleTestAlarmInfoSendIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_SUPER_CLEAR_ALARMS_CMD +void handleTestSuperClearAlarmsRequest( MESSAGE_T *message ); + +// MSG_ID_DG_FANS_RPM_OVERRIDE +void handleFansRPMOverride( MESSAGE_T *message ); + +// MSG_ID_DG_STOP_RTC_CLOCK +void handleStopDGRTCClock( MESSAGE_T * message ); + +// MSG_ID_DG_DRAIN_PUMP_MEASURED_RPM_OVERRIDE +void handleSetDrainPumpMeasuredRPMOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_SET_FANS_RPM_ALARM_START_TIME_OFFSET +void handleTestFansRPMAlarmStartTimeOffsetRequest( MESSAGE_T *message ); + +// MSG_ID_DG_USED_ACID_VOLUME_ML_OVERRIDE +void handleTestUsedAcidVolumeMLOverrideRequest(MESSAGE_T *message); + +// MSG_ID_DG_USED_BICARB_VOLUME_ML_OVERRIDE +void handleTestUsedBicarbVolumeMLOverrideRequest(MESSAGE_T *message); + +// MSG_ID_DG_FANS_DUTY_CYCLE_OVERRIDE +void handleSetFansDutyCycleOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_GET_SW_CONFIG_RECORD +void handleGetDGSoftwareConfigRecord( MESSAGE_T *message ); + +// MSG_ID_DG_SET_SW_CONFIG_RECORD +void handleSetDGSoftwareConfigRecord( MESSAGE_T *message ); + +// MSG_ID_DG_HD_COMMUNICATION_STATUS +void handleTestHDCommunicationStatusOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_SET_PRIMARY_AND_TRIMMER_HEATERS_TARGET_TEMP +void handleSetPrimaryAndTrimmerHeatersTargetTemperature( MESSAGE_T *message ); + +// MSG_ID_DG_GET_USAGE_INFO_RECORD +void handleGetDGUsageInfoRecord( MESSAGE_T *message ); + +// MSG_ID_DG_SET_USAGE_INFO_RECORD +void handleSetDGUsageInfoRecord( MESSAGE_T *message ); + +// MSG_ID_HD_REQUEST_DG_ALARMS +void handleResendAllAlarmsCommand( MESSAGE_T *message ); + +// MSG_ID_DG_SET_OP_MODE_REQUEST +void handleTestSetOpModeRequest( MESSAGE_T *message ); + +// MSG_ID_DG_RESERVOIR_TARE_REQUEST +void handleTestTareReservoirRequest( MESSAGE_T *message ); + +// MSG_ID_HD_OP_MODE +BOOL handleSetHDOperationMode( MESSAGE_T *message ); + +// MSG_ID_DG_DRAIN_PUMP_CURRENT_OVERRIDE +void handleTestDrainPumpMeasuredCurrentOverride( MESSAGE_T *message ); + +/**@}*/ + +#endif