public void StartCharge(EnumAddressDirection chargeDirection)
        {
            Task.Run(() =>
            {
                try
                {
                    SpinWait.SpinUntil(() => false, 2000);
                    IsCharging = true;
                    OnUpdateChargeStatusEvent?.Invoke(this, IsCharging);

                    while (BatteryStatus.Percentage < 100 && IsCharging)
                    {
                        SpinWait.SpinUntil(() => false, 2000);

                        BatteryStatus.Percentage = Math.Min(BatteryStatus.Percentage + 10, 100);

                        OnUpdateBatteryStatusEvent?.Invoke(this, BatteryStatus);
                    }
                }
                catch (Exception ex)
                {
                    OnLogErrorEvent?.Invoke(this, new MessageHandlerArgs()
                    {
                        ClassMethodName = GetType().Name + ":" + System.Reflection.MethodBase.GetCurrentMethod().Name,
                        Message         = ex.Message
                    });
                }

                SpinWait.SpinUntil(() => false, 2000);

                IsCharging = false;
                OnUpdateChargeStatusEvent?.Invoke(this, IsCharging);
            });
        }
        public void GetBatteryAndChargeStatus()
        {
            var localData = LocalPackage.MainFlowHandler.localData;

            OnUpdateBatteryStatusEvent?.Invoke(this, new BatteryStatus()
            {
                Percentage = (int)localData.BatteryInfo.SOC,
                Voltage    = localData.BatteryInfo.V
            });

            OnUpdateChargeStatusEvent?.Invoke(this, localData.MIPCData.Charging);
        }
 public void GetBatteryAndChargeStatus()
 {
     OnUpdateBatteryStatusEvent?.Invoke(this, BatteryStatus);
     OnUpdateChargeStatusEvent?.Invoke(this, IsCharging);
 }
 public void SetPercentageTo(int percentage)
 {
     BatteryStatus.Percentage = percentage;
     OnUpdateBatteryStatusEvent?.Invoke(this, BatteryStatus);
 }