private void RobotConnection_CurrentSpeedFeedbackReceived(object sender, MessageParsedEventArgs e)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                var now = DateTime.Now;

                if (_mainViewModel.GuiStatusViewModel.IsRawVelocityEnabled)
                {
                    _mainViewModel.SpeedFeedbackChart.AddNewPoint(
                        new MeasurementModel {
                        DateTime = now, Value = e.LeftMotor.RawVelocity
                    },
                        new MeasurementModel {
                        DateTime = now, Value = e.RightMotor.RawVelocity
                    });
                }
                else
                {
                    _mainViewModel.SpeedFeedbackChart.AddNewPoint(
                        new MeasurementModel {
                        DateTime = now, Value = e.LeftMotor.Velocity
                    },
                        new MeasurementModel {
                        DateTime = now, Value = e.RightMotor.Velocity
                    });
                }

                if (_mainViewModel.GuiStatusViewModel.IsRawCurrentEnabled)
                {
                    _mainViewModel.CurrentFeedbackChart.AddNewPoint(
                        new MeasurementModel {
                        DateTime = now, Value = e.LeftMotor.RawCurrent
                    },
                        new MeasurementModel {
                        DateTime = now, Value = e.RightMotor.RawCurrent
                    });
                }
                else
                {
                    _mainViewModel.CurrentFeedbackChart.AddNewPoint(
                        new MeasurementModel {
                        DateTime = now, Value = e.LeftMotor.Current
                    },
                        new MeasurementModel {
                        DateTime = now, Value = e.RightMotor.Current
                    });
                }
            });
        }
        /// <summary>
        /// We are goind to log when speed and current appear
        /// because it is updated with highest frequency
        /// </summary>
        private void RobotConnection_SpeedCurrentReceived(object sender, MessageParsedEventArgs e)
        {
            _log.TimeStamp       = DateTime.Now;
            _log.LeftSpeed       = e.LeftMotor.Velocity;
            _log.RawLeftSpeed    = e.LeftMotor.RawVelocity;
            _log.RightSpeed      = e.RightMotor.Velocity;
            _log.RawRightSpeed   = e.RightMotor.RawVelocity;
            _log.LeftCurrent     = e.LeftMotor.Current;
            _log.RawLeftCurrent  = e.LeftMotor.RawCurrent;
            _log.RightCurrent    = e.RightMotor.Current;
            _log.RawRightCurrent = e.RightMotor.RawCurrent;
            _log.LeftSetpoint    = Setpoints.LeftSpeed;
            _log.RightSetpoint   = Setpoints.RightSpeed;

            Log();
        }
 // done
 private void RobotConnection_ParametersReceived(object sender, MessageParsedEventArgs e) =>
 _mainViewModel.RobotControlsViewModel.ParametersModel = e.Parameters;
 // done
 private void RobotConnection_VoltageTemperatureFeedbackReceived(object sender, MessageParsedEventArgs e) =>
 _mainViewModel.RobotControlsViewModel.RobotStatus = new RobotStatusModel
 {
     Temperature = e.VoltageTemperatureFeedbackModel.Temperature,
     Voltage     = e.VoltageTemperatureFeedbackModel.Voltage
 };
 private void Client_OnMessageDecoded(MessageParsedEventArgs eventargs)
 => OnMessageDecoded?.Invoke(eventargs);
 private void RobotConnection_VoltageTemperatureReceived(object sender, MessageParsedEventArgs e)
 {
     _log.Voltage     = e.VoltageTemperatureFeedbackModel.Voltage;
     _log.Temperature = e.VoltageTemperatureFeedbackModel.Temperature;
 }