/*
         * Events
         */
        private void InstanceOnStatusUpdate(object sender, StatusUpdateParser e)
        {
            GenerateTrayContext(e.BatteryL, e.BatteryR, e.BatteryCase);

            if (_previousWearState == WearStates.None && e.WearState != WearStates.None &&
                Settings.Default.ResumePlaybackOnSensor)
            {
                if (!AudioPlaybackDetection.IsWindowsPlayingSound())
                {
                    try
                    {
                        new InputSimulator().Keyboard.KeyPress(VirtualKeyCode.MEDIA_PLAY_PAUSE);
                    }
                    catch (Exception ex)
                    {
                        Sentry.SentrySdk.AddBreadcrumb(ex.Message, "inputsimulator", level: Sentry.Protocol.BreadcrumbLevel.Warning);
                    }
                    Console.WriteLine(@"[ResumePlaybackOnSensor] All criteria are met; emitting play/pause keypress");
                }
                else
                {
                    Console.WriteLine(@"[ResumePlaybackOnSensor] Windows appears to playback sound; do not emit a play/pause keypress");
                }
            }

            _previousWearState = e.WearState;
        }
        public void UpdateDashboard(BaseMessageParser parser)
        {
            if (parser.GetType() == typeof(ExtendedStatusUpdateParser))
            {
                if (_allowGetAllResponse)
                {
                    BluetoothService.Instance.SendAsync(SPPMessageBuilder.Info.GetAllData());
                }
                Dispatcher.Invoke(() =>
                {
                    if (BluetoothService.Instance.ActiveModel == Model.BudsPlus ||
                        BluetoothService.Instance.ActiveModel == Model.BudsLive)
                    {
                        ExtendedStatusUpdateParser p = (ExtendedStatusUpdateParser)parser;
                        UpdatePlusPlacement(p.PlacementL, p.PlacementR);
                        _lastPlacementL      = p.PlacementL;
                        _lastPlacementR      = p.PlacementR;
                        BatteryCase.Content  = BluetoothService.Instance.ActiveModel == Model.Buds ? "" : $"{p.BatteryCase}%";
                        CaseLabel.Visibility = BluetoothService.Instance.ActiveModel == Model.Buds ? Visibility.Hidden : Visibility.Visible;
                    }

                    if (BluetoothService.Instance.ActiveModel == Model.BudsLive)
                    {
                        ExtendedStatusUpdateParser p = (ExtendedStatusUpdateParser)parser;
                        AncToggle.SetChecked(p.NoiceCancelling);
                    }
                });
            }
            else if (parser.GetType() == typeof(StatusUpdateParser))
            {
                if (_allowGetAllResponse)
                {
                    BluetoothService.Instance.SendAsync(SPPMessageBuilder.Info.GetAllData());
                }
                Dispatcher.Invoke(() =>
                {
                    if (BluetoothService.Instance.ActiveModel == Model.BudsPlus ||
                        BluetoothService.Instance.ActiveModel == Model.BudsLive)
                    {
                        StatusUpdateParser p = (StatusUpdateParser)parser;
                        UpdatePlusPlacement(p.PlacementL, p.PlacementR);
                        _lastPlacementL      = p.PlacementL;
                        _lastPlacementR      = p.PlacementR;
                        BatteryCase.Content  = BluetoothService.Instance.ActiveModel == Model.Buds ? "" : $"{p.BatteryCase}%";
                        CaseLabel.Visibility = BluetoothService.Instance.ActiveModel == Model.Buds ? Visibility.Hidden : Visibility.Visible;
                    }
                });
            }
            else if (parser.GetType() == typeof(DebugGetAllDataParser))
            {
                var p = (DebugGetAllDataParser)parser;
                UpdateBatteryPercentage((int)Math.Round(p.LeftAdcSOC), Side.L);
                UpdateBatteryPercentage((int)Math.Round(p.RightAdcSOC), Side.R);

                Dispatcher.Invoke(() => { UpdateDetails(p); });
            }
        }
Example #3
0
        private void OnStatusUpdate(object?sender, StatusUpdateParser e)
        {
            if (_lastWearState == WearStates.None &&
                e.WearState != WearStates.None && SettingsProvider.Instance.ResumePlaybackOnSensor)
            {
                MediaKeyRemoteImpl.Instance.Play();
            }

            _lastWearState = e.WearState;
        }
        public void UpdateDashboard(BaseMessageParser parser)
        {
            if (parser.GetType() == typeof(ExtendedStatusUpdateParser))
            {
                if (_allowGetAllResponse)
                {
                    BluetoothService.Instance.SendAsync(SPPMessageBuilder.Info.GetAllData());
                }
                Dispatcher.Invoke(() =>
                {
                    if (BluetoothService.Instance.ActiveModel == Model.BudsPlus)
                    {
                        ExtendedStatusUpdateParser p    = (ExtendedStatusUpdateParser)parser;
                        BatteryTemperatureLeft.Content  = p.PlacementL.ToString();
                        BatteryTemperatureRight.Content = p.PlacementR.ToString();
                        BatteryCase.Content             = p.BatteryCase <= 0 ? "" : $"{p.BatteryCase}%";
                        CaseLabel.Visibility            = p.BatteryCase <= 0 ? Visibility.Hidden : Visibility.Visible;
                    }
                });
            }
            else if (parser.GetType() == typeof(StatusUpdateParser))
            {
                if (_allowGetAllResponse)
                {
                    BluetoothService.Instance.SendAsync(SPPMessageBuilder.Info.GetAllData());
                }
                Dispatcher.Invoke(() =>
                {
                    if (BluetoothService.Instance.ActiveModel == Model.BudsPlus)
                    {
                        StatusUpdateParser p            = (StatusUpdateParser)parser;
                        BatteryTemperatureLeft.Content  = p.PlacementL.ToString();
                        BatteryTemperatureRight.Content = p.PlacementR.ToString();
                        BatteryCase.Content             = p.BatteryCase <= 0 ? "" : $"{p.BatteryCase}%";
                        CaseLabel.Visibility            = p.BatteryCase <= 0 ? Visibility.Hidden : Visibility.Visible;
                    }
                });
            }
            else if (parser.GetType() == typeof(DebugGetAllDataParser))
            {
                var p = (DebugGetAllDataParser)parser;
                UpdateBatteryPercentage((int)Math.Round(p.LeftAdcSOC), Side.L);
                UpdateBatteryPercentage((int)Math.Round(p.RightAdcSOC), Side.R);

                Dispatcher.Invoke(() =>
                {
                    UpdateDetails(p);
                });
            }
        }
        /*
         * Events
         */
        private void InstanceOnStatusUpdate(object sender, StatusUpdateParser e)
        {
            GenerateTrayContext(e.BatteryL, e.BatteryR, e.BatteryCase);

            if (_previousWearState == WearStates.None && e.WearState != WearStates.None &&
                Settings.Default.ResumePlaybackOnSensor)
            {
                if (!AudioPlaybackDetection.IsWindowsPlayingSound())
                {
                    new InputSimulator().Keyboard.KeyPress(VirtualKeyCode.MEDIA_PLAY_PAUSE);
                    Console.WriteLine(@"[ResumePlaybackOnSensor] All criteria are met; emitting play/pause keypress");
                }
                else
                {
                    Console.WriteLine(@"[ResumePlaybackOnSensor] Windows appears to playback sound; do not emit a play/pause keypress");
                }
            }

            _previousWearState = e.WearState;
        }
 private void InstanceOnStatusUpdate(object sender, StatusUpdateParser e)
 {
     UpdateDashboard(e);
 }