Index: firmware/App/Services/Messaging.c =================================================================== diff -u -ra91074d04b607deabe4fbf714d40e9d191590359 -r56100135135bb715d316b5fd002a4a4951b9334a --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision a91074d04b607deabe4fbf714d40e9d191590359) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 56100135135bb715d316b5fd002a4a4951b9334a) @@ -18,17 +18,26 @@ #include // For memcpy() #include "AirPump.h" +#include "AirTrap.h" +#include "AlarmMgmt.h" +#include "BloodFlow.h" #include "Bubbles.h" #include "Buttons.h" #include "Compatible.h" +#include "CpldInterface.h" +#include "LevelSensors.h" #include "Messaging.h" #include "OperationModes.h" #include "PAL.h" #include "PressureSensor.h" +#include "RotaryValve.h" #include "Switches.h" #include "SystemCommTD.h" #include "Utilities.h" +#include "Valve2Way.h" +#include "Valves.h" #include "Voltages.h" +#include "WatchdogMgmt.h" /** * @addtogroup Messaging @@ -58,15 +67,15 @@ COMM_BUFFER_OUT_CAN_TD_ALARM, ///< Buffer for responding to incoming RO alarm messages COMM_BUFFER_OUT_CAN_TD_ALARM, ///< Buffer for responding to incoming UI alarm messages COMM_BUFFER_NOT_USED, ///< Buffer for outgoing TD to DD messages so no response buffer - COMM_BUFFER_OUT_CAN_TD_2_DD, ///< Buffer for responding to incoming DD to HD messages + COMM_BUFFER_OUT_CAN_TD_2_DD, ///< Buffer for responding to incoming DD to TD messages COMM_BUFFER_NOT_USED, ///< Buffer for outgoing TD to UI messages so no response buffer - COMM_BUFFER_OUT_CAN_TD_2_UI, ///< Buffer for responding to incoming UI to HD messages + COMM_BUFFER_OUT_CAN_TD_2_UI, ///< Buffer for responding to incoming UI to TD messages COMM_BUFFER_NOT_USED, ///< Buffer for outgoing TD broadcast messages so no response buffer COMM_BUFFER_OUT_CAN_TD_BROADCAST, ///< Buffer for responding to incoming DD broadcast messages COMM_BUFFER_OUT_CAN_TD_BROADCAST, ///< Buffer for responding to incoming RO broadcast messages COMM_BUFFER_OUT_CAN_TD_BROADCAST, ///< Buffer for responding to incoming UI broadcast messages - COMM_BUFFER_OUT_CAN_PC, ///< Buffer for responding to incoming PC to TD messages - COMM_BUFFER_NOT_USED, ///< Buffer for outgoing HD to PC messages so no response buffer + COMM_BUFFER_OUT_CAN_PC, ///< Buffer for responding to incoming PC to RO messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing TD to PC messages so no response buffer }; typedef BOOL (*MsgFuncPtr)( MESSAGE_T* ); @@ -91,7 +100,31 @@ MSG_ID_TD_ALARM_AUDIO_LEVEL_OVERRIDE_REQUEST, MSG_ID_TD_ALARM_AUDIO_CURRENT_HG_OVERRIDE_REQUEST, MSG_ID_TD_ALARM_AUDIO_CURRENT_LG_OVERRIDE_REQUEST, - MSG_ID_TD_BACKUP_ALARM_AUDIO_CURRENT_OVERRIDE_REQUEST + MSG_ID_TD_BACKUP_ALARM_AUDIO_CURRENT_OVERRIDE_REQUEST, + MSG_ID_TD_AIR_TRAP_LEVEL_OVERRIDE_REQUEST, + MSG_ID_TD_AIR_TRAP_LEVEL_RAW_OVERRIDE_REQUEST, + MSG_ID_TD_AIR_TRAP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_TD_2_WAY_VALVE_SET_STATE_REQUEST, + MSG_ID_TD_ROTARY_PINCH_VALVE_SET_POS_REQUEST, + MSG_ID_TD_ROTARY_PINCH_VALVE_STATUS_OVERRIDE_REQUEST, + MSG_ID_TD_ROTARY_PINCH_VALVE_POSITION_OVERRIDE_REQUEST, + MSG_ID_TD_VALVES_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_TD_PINCH_VALVE_SET_POSITION_REQUEST, + MSG_ID_TD_PINCH_VALVE_HOME_REQUEST, + MSG_ID_TD_ALARM_STATUS_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_TD_ALARM_INFO_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_TD_ALARM_START_TIME_OVERRIDE_REQUEST, + MSG_ID_TD_ALARM_CLEAR_ALL_ALARMS_REQUEST, + MSG_ID_TD_WATCHDOG_OVERRIDE_REQUEST, + MSG_ID_TD_ALARM_STATE_OVERRIDE_REQUEST, + MSG_ID_TD_SAFETY_SHUTDOWN_OVERRIDE_REQUEST, + MSG_ID_TD_BLOOD_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_TD_BLOOD_PUMP_SET_FLOW_RATE_REQUEST, + MSG_ID_TD_BLOOD_PUMP_SET_SPEED_REQUEST, + MSG_ID_TD_BLOOD_PUMP_MEASURED_FLOW_RATE_OVERRIDE_REQUEST, + MSG_ID_TD_BLOOD_PUMP_MEASURED_MOTOR_SPEED_OVERRIDE_REQUEST, + MSG_ID_TD_BLOOD_PUMP_MEASURED_ROTOR_SPEED_OVERRIDE_REQUEST, + MSG_ID_TD_BLOOD_PUMP_ROTOR_COUNT_OVERRIDE_REQUEST }; /// Message handling function table @@ -114,7 +147,31 @@ &testAlarmAudioVolumeLevelOverride, &testPrimaryAlarmAudioCurrentHGOverride, &testPrimaryAlarmAudioCurrentLGOverride, - &testBackupAlarmAudioCurrentOverride + &testBackupAlarmAudioCurrentOverride, + &testLevelSensorOverride, + &testRawLevelSensorOverride, + &testAirTrapDataPublishIntervalOverride, + &testSet2WayValve, + &testSetValve, + &testValveStatusOverride, + &testValveEncoderPositionOverride, + &testValvesDataPublishIntervalOverride, + &testValveSetABCCmdPosition, + &testHomeValve, + &testAlarmStatusPublishIntervalOverride, + &testAlarmInfoPublishIntervalOverride, + &testSetAlarmStartTimeOverride, + &testClearAllAlarms, + &testWatchdogTaskCheckInOverride, + &testAlarmStateOverride, + &testSafetyShutdownOverride, + &testBloodFlowDataPublishIntervalOverride, + &testSetTargetBloodFlowRateOverride, + &testSetBloodPumpSpeedOverride, + &testMeasuredBloodFlowRateOverride, + &testMeasuredBloodPumpSpeedOverride, + &testMeasuredBloodPumpRotorSpeedOverride, + &testBloodPumpRotorCountOverride }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLERS) / sizeof(MsgFuncPtr)) @@ -372,16 +429,51 @@ } } +// Send message helper functions +/*********************************************************************//** + * @brief + * The broadcastAlarmStatus function constructs an alarm status msg to + * be broadcast and queues the msg for transmit on the appropriate CAN channel. + * @details \b Inputs: none + * @details \b Outputs: alarm status msg constructed and queued. + * @param almStatus alarm status record + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastAlarmStatus( COMP_ALARM_STATUS_T almStatus ) +{ + BOOL result; + ALARM_COMP_STATUS_PAYLOAD_T payload; + payload.alarmState = (U32)almStatus.alarmsState; + payload.alarmTop = (U32)almStatus.alarmTop; + payload.silenceExpiresIn = almStatus.alarmsSilenceExpiresIn; + payload.alarmsFlags = ( almStatus.systemFault ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_SYSTEM_FAULT) : 0 ); + payload.alarmsFlags |= ( almStatus.stop ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_STOP) : 0 ); + payload.alarmsFlags |= ( almStatus.noClear ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_NO_CLEAR) : 0 ); + payload.alarmsFlags |= ( almStatus.noResume ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_NO_RESUME) : 0 ); + payload.alarmsFlags |= ( almStatus.noRinseback ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_NO_RINSEBACK) : 0 ); + payload.alarmsFlags |= ( almStatus.noEndTreatment ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_NO_END_TREATMENT) : 0 ); + payload.alarmsFlags |= ( almStatus.ok ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_OK_BUTTON_ONLY) : 0 ); + payload.alarmsFlags |= ( almStatus.alarmsSilenced ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_ALARMS_SILENCED) : 0 ); + payload.alarmsFlags |= ( almStatus.lampOn ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_LAMP_ON) : 0 ); + payload.alarmsFlags |= ( almStatus.noBloodRecirc ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_BLOOD_RECIRC) : 0 ); + payload.alarmsFlags |= ( almStatus.noDialRecirc ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_DIALYSATE_RECIRC) : 0 ); + payload.alarmsFlags |= ( almStatus.noMinimize ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_NO_MINIMIZE) : 0 ); + payload.alarmsFlags |= ( almStatus.topAlarmConditionDetected ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_TOP_CONDITION) : 0 ); + + result = broadcastData( MSG_ID_ALARM_STATUS_DATA, COMM_BUFFER_OUT_CAN_TD_ALARM, (U08*)&payload, sizeof( ALARM_COMP_STATUS_PAYLOAD_T ) ); + + return result; +} + + // *********************************************************************** // ***************** Message Sending Helper Functions ******************** // *********************************************************************** - - /*********************************************************************//** * @brief * The sendEvent function constructs a TD event message and queues the msg @@ -534,8 +626,6 @@ testerLoggedIn = FALSE; } - sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, testerLoggedIn ); - return testerLoggedIn; }