protected override void HandleMessage(MessageBase message) { if (message is InputDeviceDetailsRequest) { if (device != null) { logger.Warn($"Input device was received multiple times"); } else { var detailsMessage = message as InputDeviceDetailsRequest; var deviceApi = (InputDeviceApi)Enum.Parse(typeof(InputDeviceApi), detailsMessage.InputApi); device = inputDevices.Create(detailsMessage.Id, detailsMessage.Name, deviceApi, detailsMessage.Sources.Select(InputDeviceSourceWithValue.Create).ToList(), detailsMessage.Targets.Select(InputDeviceTargetWithValue.Create).ToList()); device.FeedbackReceived += DeviceFeedbackReceived; } } if (message is InputDeviceInputRequest) { if (device == null) { logger.Warn($"Input was received to Input device without sending details first"); } else { var inputMessage = message as InputDeviceInputRequest; device.SetData(inputMessage.Inputs.ToDictionary(i => i.Id, i => i.Value)); } } }