예제 #1
0
        public override async void OnPageShown()
        {
            SetWarning(false);

            await BluetoothImpl.Instance.SendRequestAsync(SPPMessage.MessageIds.DEBUG_GET_ALL_DATA);

            _refreshTimer.Start();
            _caseLabel.IsVisible = BluetoothImpl.Instance.DeviceSpec.Supports(IDeviceSpec.Feature.CaseBattery) &&
                                   (DeviceMessageCache.Instance.BasicStatusUpdate?.BatteryCase ?? 101) <= 100;

            /* Initial properties */
            if (_lastGetAllDataParser == null)
            {
                var stub = new DebugGetAllDataParser
                {
                    LeftAdcCurrent  = 0,
                    LeftAdcSOC      = 0,
                    LeftAdcVCell    = 0,
                    LeftThermistor  = 0,
                    RightAdcCurrent = 0,
                    RightAdcSOC     = 0,
                    RightAdcVCell   = 0,
                    RightThermistor = 0
                };
                UpdateDetails(stub);
            }

            UpdateList();

            _findMyGear.Source = (IImage?)Application.Current.FindResource($"FindMyGear{BluetoothImpl.Instance.DeviceSpec.IconResourceKey}");
            _touch.Source      = (IImage?)Application.Current.FindResource($"Touch{BluetoothImpl.Instance.DeviceSpec.IconResourceKey}");

            _loadingSpinner.IsVisible = !BluetoothImpl.Instance.IsConnected;
        }
예제 #2
0
        private void UpdateDetails(DebugGetAllDataParser p)
        {
            _lastGetAllDataParser = p;

            UpdateBatteryPercentage((int)Math.Round(p.LeftAdcSOC), Devices.L);
            UpdateBatteryPercentage((int)Math.Round(p.RightAdcSOC), Devices.R);

            _batteryVoltLeft.Content  = $"{p.LeftAdcVCell:N2}V";
            _batteryVoltRight.Content = $"{p.RightAdcVCell:N2}V";

            if (BluetoothImpl.Instance.ActiveModel == Models.Buds)
            {
                _batteryCurrentLeft.Content  = $"{p.LeftAdcCurrent:N2}mA";
                _batteryCurrentRight.Content = $"{p.RightAdcCurrent:N2}mA";
            }

            UpdateTemperature(p.LeftThermistor, p.RightThermistor);

            var isLeftOnline  = p.LeftAdcSOC > 0;
            var isRightOnline = p.RightAdcSOC > 0;

            _batteryVoltLeft.IsVisible         = isLeftOnline;
            _batteryVoltRight.IsVisible        = isRightOnline;
            _batteryCurrentLeft.IsVisible      = isLeftOnline;
            _batteryCurrentRight.IsVisible     = isRightOnline;
            _batteryTemperatureLeft.IsVisible  = isLeftOnline;
            _batteryTemperatureRight.IsVisible = isRightOnline;

            _batteryIconLeft.IsVisible        = isLeftOnline;
            _batteryIconRight.IsVisible       = isRightOnline;
            _batteryPercentageLeft.IsVisible  = isLeftOnline;
            _batteryPercentageRight.IsVisible = isRightOnline;

            UpdateConnectionState(isLeftOnline, isRightOnline);
        }
예제 #3
0
        public override void OnPageShown()
        {
            _mainWindow.SetOptionsEnabled(true);
            _allowGetAllResponse = true;
            _refreshTimer.Start();

            if (BluetoothService.Instance.ActiveModel == Model.Buds)
            {
                BatteryCase.Content  = "";
                CaseLabel.Visibility = Visibility.Hidden;
            }

            /* Initial properties */
            if (_lastGetAllDataParser == null)
            {
                var stub = new DebugGetAllDataParser();
                stub.LeftAdcCurrent  = 0;
                stub.LeftAdcSOC      = 0;
                stub.LeftAdcVCell    = 0;
                stub.LeftThermistor  = 0;
                stub.RightAdcCurrent = 0;
                stub.RightAdcSOC     = 0;
                stub.RightAdcVCell   = 0;
                stub.RightThermistor = 0;
                UpdateDetails(stub);
            }

            UpdateList();

            UpdatePlusPlacement(_lastPlacementL, _lastPlacementR);
        }
예제 #4
0
 private void InstanceOnGetAllDataResponse(object?sender, DebugGetAllDataParser e)
 {
     _pageHeader.LoadingSpinnerVisible = false;
     _hwVer.Description      = e.HardwareVersion ?? Loc.Resolve("unknown");
     _swVer.Description      = e.SoftwareVersion ?? Loc.Resolve("unknown");
     _touchFwVer.Description = e.TouchSoftwareVersion ?? Loc.Resolve("unknown");
     _btAddr.Description     = $"{Left}: {e.LeftBluetoothAddress}, {Right}: {e.RightBluetoothAddress}";
 }
예제 #5
0
        private void UpdateDetails(DebugGetAllDataParser p)
        {
            BatteryVoltLeft.Content     = $"{p.LeftAdcVCell:N}V";
            BatteryVoltRight.Content    = $"{p.RightAdcVCell:N}V";
            BatteryCurrentLeft.Content  = $"{p.LeftAdcCurrent:N}mA";
            BatteryCurrentRight.Content = $"{p.RightAdcCurrent:N}mA";
            if (Properties.Settings.Default.UseFahrenheit)
            {
                BatteryTemperatureLeft.Content  = $"{((9.0 / 5.0) * p.LeftThermistor) + 32:N} °F";
                BatteryTemperatureRight.Content = $"{((9.0 / 5.0) * p.RightThermistor) + 32:N} °F";
            }
            else
            {
                BatteryTemperatureLeft.Content  = $"{p.LeftThermistor:N} °C";
                BatteryTemperatureRight.Content = $"{p.RightThermistor:N} °C";
            }

            Visibility leftSide  = p.LeftAdcSOC <= 0 ? Visibility.Hidden : Visibility.Visible;
            Visibility rightSide = p.RightAdcSOC <= 0 ? Visibility.Hidden : Visibility.Visible;

            BatteryVoltLeft.Visibility         = leftSide;
            BatteryVoltRight.Visibility        = rightSide;
            BatteryCurrentLeft.Visibility      = leftSide;
            BatteryCurrentRight.Visibility     = rightSide;
            BatteryTemperatureLeft.Visibility  = leftSide;
            BatteryTemperatureRight.Visibility = rightSide;

            BatteryIconLeft.Visibility        = leftSide;
            BatteryIconRight.Visibility       = rightSide;
            BatteryPercentageLeft.Visibility  = leftSide;
            BatteryPercentageRight.Visibility = rightSide;

            if (leftSide == Visibility.Visible)
            {
                LeftIcon.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/device/left_gray.png"));
            }
            else
            {
                LeftIcon.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/device/left_gray_dim.png"));
            }

            if (rightSide == Visibility.Visible)
            {
                RightIcon.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/device/right_gray.png"));
            }
            else
            {
                RightIcon.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/device/right_gray_dim.png"));
            }
        }
예제 #6
0
        private void UpdateDetails(DebugGetAllDataParser p)
        {
            _lastGetAllDataParser = p;

            BatteryVoltLeft.Content  = $"{p.LeftAdcVCell:N}V";
            BatteryVoltRight.Content = $"{p.RightAdcVCell:N}V";

            if (BluetoothService.Instance.ActiveModel == Model.Buds)
            {
                BatteryCurrentLeft.Content  = $"{p.LeftAdcCurrent:N}mA";
                BatteryCurrentRight.Content = $"{p.RightAdcCurrent:N}mA";
            }

            UpdateTemperature(p.LeftThermistor, p.RightThermistor);

            Visibility leftSide  = p.LeftAdcSOC <= 0 ? Visibility.Hidden : Visibility.Visible;
            Visibility rightSide = p.RightAdcSOC <= 0 ? Visibility.Hidden : Visibility.Visible;

            BatteryVoltLeft.Visibility         = leftSide;
            BatteryVoltRight.Visibility        = rightSide;
            BatteryCurrentLeft.Visibility      = leftSide;
            BatteryCurrentRight.Visibility     = rightSide;
            BatteryTemperatureLeft.Visibility  = leftSide;
            BatteryTemperatureRight.Visibility = rightSide;

            BatteryIconLeft.Visibility        = leftSide;
            BatteryIconRight.Visibility       = rightSide;
            BatteryPercentageLeft.Visibility  = leftSide;
            BatteryPercentageRight.Visibility = rightSide;

            string type = BluetoothService.Instance.ActiveModel == Model.BudsLive ? "Bean" : "Bud";

            if (leftSide == Visibility.Visible)
            {
                LeftIcon.Source = (ImageSource)Application.Current.Resources.MergedDictionaries[0][$"Left{type}Connected"];
            }
            else
            {
                LeftIcon.Source = (ImageSource)Application.Current.Resources.MergedDictionaries[0][$"Left{type}Disconnected"];
            }

            if (rightSide == Visibility.Visible)
            {
                RightIcon.Source = (ImageSource)Application.Current.Resources.MergedDictionaries[0][$"Right{type}Connected"];
            }
            else
            {
                RightIcon.Source = (ImageSource)Application.Current.Resources.MergedDictionaries[0][$"Right{type}Disconnected"];
            }
        }
예제 #7
0
 private void InstanceOnGetAllDataResponse(object sender, DebugGetAllDataParser e)
 {
     Dispatcher.Invoke(() =>
     {
         LoadingSpinner.Visibility = Visibility.Hidden;
         LoadingSpinner.Stop();
         HwVer.TextDetail      = e.HardwareVersion;
         SwVer.TextDetail      = e.SoftwareVersion;
         TouchFwVer.TextDetail = e.TouchSoftwareVersion;
         BtAddr.TextDetail     = $"{Left}: {e.LeftBluetoothAddress}, {Right}: {e.RightBluetoothAddress}";
         Proximity.TextDetail  = $"{Left}: {e.LeftProximity:N}, {Right}: {e.RightProximity:N}";
         Thermo.TextDetail     = $"{Left}: {e.LeftThermistor:N} °C, {Right}: {e.RightThermistor:N} °C";
         AdcSoc.TextDetail     = $"{Left}: {e.LeftAdcSOC:N}%, {Right}: {e.RightAdcSOC:N}%";
         AdcVoltage.TextDetail = $"{Left}: {e.LeftAdcVCell:N}V, {Right}: {e.RightAdcVCell:N}V";
         AdcCurrent.TextDetail = $"{Left}: {e.LeftAdcCurrent:N}mA, {Right}: {e.RightAdcCurrent:N}mA";
         Hall.TextDetail       = $"{Left}: {e.LeftHall}, {Right}: {e.RightHall}";
     });
 }
예제 #8
0
        public override async void OnPageShown()
        {
            SetWarning(false);

            await BluetoothImpl.Instance.SendRequestAsync(SPPMessage.MessageIds.DEBUG_GET_ALL_DATA);

            _refreshTimer.Start();
            _caseLabel.IsVisible = BluetoothImpl.Instance.DeviceSpec.Supports(IDeviceSpec.Feature.CaseBattery);

            /* Initial properties */
            if (_lastGetAllDataParser == null)
            {
                var stub = new DebugGetAllDataParser
                {
                    LeftAdcCurrent  = 0,
                    LeftAdcSOC      = 0,
                    LeftAdcVCell    = 0,
                    LeftThermistor  = 0,
                    RightAdcCurrent = 0,
                    RightAdcSOC     = 0,
                    RightAdcVCell   = 0,
                    RightThermistor = 0
                };
                UpdateDetails(stub);
            }

            UpdateList();

            string type = "Bud";

            if (BluetoothImpl.Instance.ActiveModel == Models.BudsLive)
            {
                type = "Bean";
            }
            else if (BluetoothImpl.Instance.ActiveModel == Models.BudsPro)
            {
                type = "Pro";
            }

            _findMyGear.Source = (IImage?)Application.Current.FindResource($"FindMyGear{type}");
            _touch.Source      = (IImage?)Application.Current.FindResource($"Touch{type}");

            _loadingSpinner.IsVisible = !BluetoothImpl.Instance.IsConnected;
        }
예제 #9
0
 private void InstanceOnGetAllDataResponse(object sender, DebugGetAllDataParser e)
 {
     UpdateDashboard(e);
 }
 private void Instance_GetAllDataResponse(object sender, DebugGetAllDataParser e)
 {
     Settings.Default.LastSwVersion = e.SoftwareVersion;
     Settings.Default.Save();
 }
예제 #11
0
        private void UpdateDetails(DebugGetAllDataParser p)
        {
            BatteryVoltLeft.Content  = $"{p.LeftAdcVCell:N}V";
            BatteryVoltRight.Content = $"{p.RightAdcVCell:N}V";

            if (BluetoothService.Instance.ActiveModel == Model.Buds)
            {
                BatteryCurrentLeft.Content  = $"{p.LeftAdcCurrent:N}mA";
                BatteryCurrentRight.Content = $"{p.RightAdcCurrent:N}mA";

                if (Properties.Settings.Default.UseFahrenheit)
                {
                    BatteryTemperatureLeft.Content  = $"{((9.0 / 5.0) * p.LeftThermistor) + 32:N} °F";
                    BatteryTemperatureRight.Content = $"{((9.0 / 5.0) * p.RightThermistor) + 32:N} °F";
                }
                else
                {
                    BatteryTemperatureLeft.Content  = $"{p.LeftThermistor:N} °C";
                    BatteryTemperatureRight.Content = $"{p.RightThermistor:N} °C";
                }
            }
            else
            {
                //Switch positions for a better layout
                if (Properties.Settings.Default.UseFahrenheit)
                {
                    BatteryCurrentLeft.Content  = $"{((9.0 / 5.0) * p.LeftThermistor) + 32:N} °F";
                    BatteryCurrentRight.Content = $"{((9.0 / 5.0) * p.RightThermistor) + 32:N} °F";
                }
                else
                {
                    BatteryCurrentLeft.Content  = $"{p.LeftThermistor:N} °C";
                    BatteryCurrentRight.Content = $"{p.RightThermistor:N} °C";
                }
            }

            Visibility leftSide  = p.LeftAdcSOC <= 0 ? Visibility.Hidden : Visibility.Visible;
            Visibility rightSide = p.RightAdcSOC <= 0 ? Visibility.Hidden : Visibility.Visible;

            BatteryVoltLeft.Visibility         = leftSide;
            BatteryVoltRight.Visibility        = rightSide;
            BatteryCurrentLeft.Visibility      = leftSide;
            BatteryCurrentRight.Visibility     = rightSide;
            BatteryTemperatureLeft.Visibility  = leftSide;
            BatteryTemperatureRight.Visibility = rightSide;

            BatteryIconLeft.Visibility        = leftSide;
            BatteryIconRight.Visibility       = rightSide;
            BatteryPercentageLeft.Visibility  = leftSide;
            BatteryPercentageRight.Visibility = rightSide;

            if (leftSide == Visibility.Visible)
            {
                LeftIcon.Source = (ImageSource)Application.Current.Resources.MergedDictionaries[0]["LeftBudConnected"];
            }
            else
            {
                LeftIcon.Source = (ImageSource)Application.Current.Resources.MergedDictionaries[0]["LeftBudDisconnected"];
            }

            if (rightSide == Visibility.Visible)
            {
                RightIcon.Source = (ImageSource)Application.Current.Resources.MergedDictionaries[0]["RightBudConnected"];
            }
            else
            {
                RightIcon.Source = (ImageSource)Application.Current.Resources.MergedDictionaries[0]["RightBudDisconnected"];
            }
        }