Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r5dc5b0076f547c0c14e71f0e5373112e9c890f4f -rb05bbd09d430425d907779b02feadde8addc8c79 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 5dc5b0076f547c0c14e71f0e5373112e9c890f4f) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision b05bbd09d430425d907779b02feadde8addc8c79) @@ -87,132 +87,78 @@ typedef BOOL (*MsgFuncPtr)( MESSAGE_T* ); + +/// Message handling look-up table record type. +typedef struct +{ + U16 msgID; ///< ID of received message to handle. + MsgFuncPtr msgHandler; ///< Pointer to message handling function associated with a message ID. +} MSG_HANDLER_LOOKUP_T; + /// Message handling function lookup table -static const U16 MSG_FUNCTION_HANDLER_LOOKUP[] = { - MSG_ID_FW_VERSIONS_REQUEST, - MSG_ID_DD_OP_MODE_DATA, - MSG_ID_DD_PRESSURES_DATA, - MSG_ID_UI_TREATMENT_PARAMS_TO_VALIDATE, - MSG_ID_UI_ULTRAFILTRATION_VOLUME_TO_VALIDATE, - MSG_ID_UI_TREATMENT_PARAMS_CONFIRMED, - MSG_ID_UI_INITIATE_TREATMENT_WORKFLOW, - MSG_ID_UI_UF_PAUSE_RESUME_REQUEST, - MSG_ID_TESTER_LOGIN_REQUEST, - MSG_ID_TD_SOFTWARE_RESET_REQUEST, - MSG_ID_TD_BUBBLE_OVERRIDE_REQUEST, - MSG_ID_TD_BUBBLE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, - MSG_ID_TD_VOLTAGE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, - MSG_ID_TD_VOLTAGE_OVERRIDE_REQUEST, - MSG_ID_TD_PRESSURE_OVERRIDE_REQUEST, - MSG_ID_TD_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, - MSG_ID_TD_AIR_PUMP_SET_STATE_REQUEST, - MSG_ID_TD_AIR_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, - MSG_ID_TD_SWITCHES_PUBLISH_INTERVAL_OVERRIDE_REQUEST, - MSG_ID_TD_SWITCH_STATE_OVERRIDE_REQUEST, - MSG_ID_TD_OFF_BUTTON_OVERRIDE_REQUEST, - MSG_ID_TD_STOP_BUTTON_OVERRIDE_REQUEST, - MSG_ID_TD_ALARM_LAMP_PATTERN_OVERRIDE_REQUEST, - 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_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_3_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, - MSG_ID_TD_TMP_PRESSURE_OVERRIDE_REQUEST, - MSG_ID_TD_REQ_CURRENT_TREATMENT_PARAMETERS, - MSG_ID_TD_SET_TREATMENT_PARAMETER, - MSG_ID_TD_OP_MODE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, - MSG_ID_TD_OP_MODE_OVERRIDE_REQUEST, - MSG_ID_TD_EJECTOR_MOTOR_SET_SPEED_REQUEST, - MSG_ID_TD_EJECTOR_COMMAND +static const MSG_HANDLER_LOOKUP_T MSG_FUNCTION_HANDLER_LOOKUP[] = { + { MSG_ID_FW_VERSIONS_REQUEST, &handleVersionRequestMessage }, + { MSG_ID_DD_OP_MODE_DATA, &setDDOpMode }, + { MSG_ID_DD_PRESSURES_DATA, &setDialysatePressure }, + { MSG_ID_UI_TREATMENT_PARAMS_TO_VALIDATE, &validateAndSetTreatmentParameters }, + { MSG_ID_UI_ULTRAFILTRATION_VOLUME_TO_VALIDATE, &validateAndSetUFVolume }, + { MSG_ID_UI_TREATMENT_PARAMS_CONFIRMED, &signalUserConfirmationOfTreatmentParameters }, + { MSG_ID_UI_INITIATE_TREATMENT_WORKFLOW, &signalUserInitiateTreatment }, + { MSG_ID_UI_UF_PAUSE_RESUME_REQUEST, &signalPauseResumeUF }, + { MSG_ID_TESTER_LOGIN_REQUEST, &handleTesterLogInRequest }, + { MSG_ID_TD_SOFTWARE_RESET_REQUEST, &testTDSoftwareResetRequest }, + { MSG_ID_TD_BUBBLE_OVERRIDE_REQUEST, &testBubbleDetectOverride }, + { MSG_ID_TD_BUBBLE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBubblesDataPublishIntervalOverride }, + { MSG_ID_TD_VOLTAGE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testVoltageDataPublishIntervalOverride }, + { MSG_ID_TD_VOLTAGE_OVERRIDE_REQUEST, &testVoltageOverride }, + { MSG_ID_TD_PRESSURE_OVERRIDE_REQUEST, &testPressureSensorOverride }, + { MSG_ID_TD_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testSwitchesDataPublishIntervalOverride }, + { MSG_ID_TD_AIR_PUMP_SET_STATE_REQUEST, &testSetAirPump }, + { MSG_ID_TD_AIR_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testAirPumpDataPublishIntervalOverride }, + { MSG_ID_TD_SWITCHES_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testSwitchesDataPublishIntervalOverride }, + { MSG_ID_TD_SWITCH_STATE_OVERRIDE_REQUEST, &testSwitchOverride }, + { MSG_ID_TD_OFF_BUTTON_OVERRIDE_REQUEST, &testOffButtonOverride }, + { MSG_ID_TD_STOP_BUTTON_OVERRIDE_REQUEST, &testStopButtonOverride }, + { MSG_ID_TD_ALARM_LAMP_PATTERN_OVERRIDE_REQUEST, &testAlarmLampPatternOverride }, + { MSG_ID_TD_ALARM_AUDIO_LEVEL_OVERRIDE_REQUEST, &testAlarmAudioVolumeLevelOverride }, + { MSG_ID_TD_ALARM_AUDIO_CURRENT_HG_OVERRIDE_REQUEST, &testPrimaryAlarmAudioCurrentHGOverride }, + { MSG_ID_TD_ALARM_AUDIO_CURRENT_LG_OVERRIDE_REQUEST, &testPrimaryAlarmAudioCurrentLGOverride }, + { MSG_ID_TD_BACKUP_ALARM_AUDIO_CURRENT_OVERRIDE_REQUEST, &testBackupAlarmAudioCurrentOverride }, + { MSG_ID_TD_AIR_TRAP_LEVEL_OVERRIDE_REQUEST, &testLevelSensorOverride }, + { MSG_ID_TD_AIR_TRAP_LEVEL_RAW_OVERRIDE_REQUEST, &testRawLevelSensorOverride }, + { MSG_ID_TD_AIR_TRAP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testAirTrapDataPublishIntervalOverride }, + { MSG_ID_TD_3_WAY_VALVE_SET_STATE_REQUEST, &testSet3WayValve }, + { MSG_ID_TD_ROTARY_PINCH_VALVE_SET_POS_REQUEST, &testSetValve }, + { MSG_ID_TD_ROTARY_PINCH_VALVE_STATUS_OVERRIDE_REQUEST, &testValveStatusOverride }, + { MSG_ID_TD_ROTARY_PINCH_VALVE_POSITION_OVERRIDE_REQUEST, &testValveEncoderPositionOverride }, + { MSG_ID_TD_VALVES_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testValvesDataPublishIntervalOverride }, + { MSG_ID_TD_PINCH_VALVE_SET_POSITION_REQUEST, &testValveSetABCCmdPosition }, + { MSG_ID_TD_PINCH_VALVE_HOME_REQUEST, &testHomeValve }, + { MSG_ID_TD_ALARM_STATUS_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testAlarmStatusPublishIntervalOverride }, + { MSG_ID_TD_ALARM_INFO_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testAlarmInfoPublishIntervalOverride }, + { MSG_ID_TD_ALARM_START_TIME_OVERRIDE_REQUEST, &testSetAlarmStartTimeOverride }, + { MSG_ID_TD_ALARM_CLEAR_ALL_ALARMS_REQUEST, &testClearAllAlarms }, + { MSG_ID_TD_WATCHDOG_OVERRIDE_REQUEST, &testWatchdogTaskCheckInOverride }, + { MSG_ID_TD_ALARM_STATE_OVERRIDE_REQUEST, &testAlarmStateOverride }, + { MSG_ID_TD_SAFETY_SHUTDOWN_OVERRIDE_REQUEST, &testSafetyShutdownOverride }, + { MSG_ID_TD_BLOOD_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBloodFlowDataPublishIntervalOverride }, + { MSG_ID_TD_BLOOD_PUMP_SET_FLOW_RATE_REQUEST, &testSetTargetBloodFlowRateOverride }, + { MSG_ID_TD_BLOOD_PUMP_SET_SPEED_REQUEST, &testSetBloodPumpSpeedOverride }, + { MSG_ID_TD_BLOOD_PUMP_MEASURED_FLOW_RATE_OVERRIDE_REQUEST, &testMeasuredBloodFlowRateOverride }, + { MSG_ID_TD_BLOOD_PUMP_MEASURED_MOTOR_SPEED_OVERRIDE_REQUEST, &testMeasuredBloodPumpSpeedOverride }, + { MSG_ID_TD_BLOOD_PUMP_MEASURED_ROTOR_SPEED_OVERRIDE_REQUEST, &testMeasuredBloodPumpRotorSpeedOverride }, + { MSG_ID_TD_BLOOD_PUMP_ROTOR_COUNT_OVERRIDE_REQUEST, &testBloodPumpRotorCountOverride }, + { MSG_ID_TD_TMP_PRESSURE_OVERRIDE_REQUEST, &testTMPOverride }, + { MSG_ID_TD_REQ_CURRENT_TREATMENT_PARAMETERS, &testTxParamsRequest }, + { MSG_ID_TD_SET_TREATMENT_PARAMETER, &testSetTreatmentParameter }, + { MSG_ID_TD_OP_MODE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testSetOpModePublishIntervalOverride }, + { MSG_ID_TD_OP_MODE_OVERRIDE_REQUEST, &testSetOperationMode }, + { MSG_ID_TD_EJECTOR_MOTOR_SET_SPEED_REQUEST, &testSetEjectorMotorSpeed }, + { MSG_ID_TD_EJECTOR_COMMAND, &testEjectorCommand } }; -/// Message handling function table -static const MsgFuncPtr MSG_FUNCTION_HANDLERS[] = { - &handleVersionRequestMessage, - &setDDOpMode, - &setDialysatePressure, - &validateAndSetTreatmentParameters, - &validateAndSetUFVolume, - &signalUserConfirmationOfTreatmentParameters, - &signalUserInitiateTreatment, - &signalPauseResumeUF, - &handleTesterLogInRequest, - &testTDSoftwareResetRequest, - &testBubbleDetectOverride, - &testBubblesDataPublishIntervalOverride, - &testVoltageDataPublishIntervalOverride, - &testVoltageOverride, - &testPressureSensorOverride, - &testSwitchesDataPublishIntervalOverride, - &testSetAirPump, - &testAirPumpDataPublishIntervalOverride, - &testSwitchesDataPublishIntervalOverride, - &testSwitchOverride, - &testOffButtonOverride, - &testStopButtonOverride, - &testAlarmLampPatternOverride, - &testAlarmAudioVolumeLevelOverride, - &testPrimaryAlarmAudioCurrentHGOverride, - &testPrimaryAlarmAudioCurrentLGOverride, - &testBackupAlarmAudioCurrentOverride, - &testLevelSensorOverride, - &testRawLevelSensorOverride, - &testAirTrapDataPublishIntervalOverride, - &testSet3WayValve, - &testSetValve, - &testValveStatusOverride, - &testValveEncoderPositionOverride, - &testValvesDataPublishIntervalOverride, - &testValveSetABCCmdPosition, - &testHomeValve, - &testAlarmStatusPublishIntervalOverride, - &testAlarmInfoPublishIntervalOverride, - &testSetAlarmStartTimeOverride, - &testClearAllAlarms, - &testWatchdogTaskCheckInOverride, - &testAlarmStateOverride, - &testSafetyShutdownOverride, - &testBloodFlowDataPublishIntervalOverride, - &testSetTargetBloodFlowRateOverride, - &testSetBloodPumpSpeedOverride, - &testMeasuredBloodFlowRateOverride, - &testMeasuredBloodPumpSpeedOverride, - &testMeasuredBloodPumpRotorSpeedOverride, - &testBloodPumpRotorCountOverride, - &testTMPOverride, - &testTxParamsRequest, - &testSetTreatmentParameter, - &testSetOpModePublishIntervalOverride, - &testSetOperationMode, - &testSetEjectorMotorSpeed, - &testEjectorCommand -}; +#define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T)) -#define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLERS) / sizeof(MsgFuncPtr)) - // ********** private data ********** static BOOL testerLoggedIn = FALSE; ///< Flag indicates whether an external tester (connected PC) has sent a valid login message. @@ -424,9 +370,9 @@ // Search for the index associated with the given override command message ID and then use index to get the handling function for ( i = 0; i < NUM_OF_FUNCTION_HANDLERS; i++ ) { - if ( MSG_FUNCTION_HANDLER_LOOKUP[i] == msgID ) + if ( MSG_FUNCTION_HANDLER_LOOKUP[i].msgID == msgID ) { - func = MSG_FUNCTION_HANDLERS[i]; + func = MSG_FUNCTION_HANDLER_LOOKUP[i].msgHandler; break; } }