Exemplo n.º 1
0
        internal BatteryStatus(BatteryStatusResult batteryStatusResult)
        {
            Capacity            = batteryStatusResult.BatteryCapacity;
            Remaining           = batteryStatusResult.BatteryDegradation;
            RemainingPercent    = (int)Math.Round((double)batteryStatusResult.BatteryDegradation / batteryStatusResult.BatteryCapacity * 100, MidpointRounding.AwayFromZero);
            EstimatedRangeKm    = (int)Math.Round(batteryStatusResult.CruisingRangeAcOn / 1000D, MidpointRounding.AwayFromZero);
            TimeToFullCharge    = TimeRequiredModel.ToTimeSpan(batteryStatusResult.TimeRequiredToFull);
            TimeToFullCharge3KW = TimeRequiredModel.ToTimeSpan(batteryStatusResult.TimeRequiredToFull200);
            TimeToFullCharge6KW = TimeRequiredModel.ToTimeSpan(batteryStatusResult.TimeRequiredToFull6kW);

            if (batteryStatusResult.PluginState == PluginState.NotConnected)
            {
                ChargingStatus = ChargingStatus.NotConnected;
            }
            else if (batteryStatusResult.ChargeMode == ChargeMode.NotCharging)
            {
                ChargingStatus = ChargingStatus.Connected;
            }
            else if (batteryStatusResult.ChargeMode == ChargeMode.Wall220v)
            {
                ChargingStatus = ChargingStatus.Charging;
            }
            else if (batteryStatusResult.ChargeMode == ChargeMode.RapidCharging)
            {
                ChargingStatus = ChargingStatus.RapidCharging;
            }

            UpdatedAt = batteryStatusResult.TimeStamp.ToLocalTime();
        }
        /// <summary>
        /// Gets the battery level for the INS
        /// </summary>
        /// <param name="theSummit">Summit System</param>
        /// <param name="_log">Caliburn Micro Logger</param>
        /// <returns>String that tells the battery status of the INS</returns>
        public string GetINSBatteryLevel(ref SummitSystem theSummit, ILog _log)
        {
            BatteryStatusResult outputBuffer = null;
            APIReturnInfo       commandInfo  = new APIReturnInfo();

            //Return Not Connected if summit is null
            if (theSummit == null)
            {
                return(INSBatteryLevel);
            }

            try
            {
                commandInfo = theSummit.ReadBatteryLevel(out outputBuffer);
            }
            catch (Exception e)
            {
                _log.Error(e);
            }

            // Ensure the command was successful before using the result
            try
            {
                //Check if command was successful
                if (commandInfo.RejectCode == 0)
                {
                    // Retrieve the battery level from the output buffer
                    if (outputBuffer != null)
                    {
                        INSBatteryLevel = outputBuffer.BatteryLevelPercent.ToString();
                    }
                }
                else
                {
                    INSBatteryLevel = "";
                }
            }
            catch (Exception e)
            {
                INSBatteryLevel = "";
                _log.Error(e);
            }
            //Return either battery level, empty string or Not Connected
            return(INSBatteryLevel);
        }