示例#1
0
        public void LoadFromINI()
        {
            var x = GetPrivateProfileString("Global", "CurrentPowerLevel", "", iniFileName);

            if (!string.IsNullOrWhiteSpace(x))
            {
                this.CurrentPowerLevel = (PowerLevel)Enum.Parse(typeof(PowerLevel), x);
            }
            else
            {
                this._currentPowerLevel = PowerLevel.Low;
            }

            x = GetPrivateProfileString(string.Format("{0}-{1}", this.CurrentBand, this.CurrentTx), "CurrentTxPowerLow", "", iniFileName);
            if (!string.IsNullOrWhiteSpace(x))
            {
                this._currentTxPowerLow = int.Parse(x);
            }

            x = GetPrivateProfileString(string.Format("{0}-{1}", this.CurrentBand, this.CurrentTx), "CurrentTxPowerMid", "", iniFileName);
            if (!string.IsNullOrWhiteSpace(x))
            {
                this._currentTxPowerMid = int.Parse(x);
            }

            x = GetPrivateProfileString(string.Format("{0}-{1}", this.CurrentBand, this.CurrentTx), "CurrentTxPowerHigh", "", iniFileName);
            if (!string.IsNullOrWhiteSpace(x))
            {
                this._currentTxPowerHigh = int.Parse(x);
            }

            ForceTXPowerLevelUpdate();
        }
        private bool SetTdpSimple(PowerLevel level)
        {
            var execRet = ExecNvmlProcedure(false, $"{nameof(SetTdpSimple)}({level})", () => {
                var nvmlDevice = GetNvmlDevice();
                uint minLimit  = 0;
                uint maxLimit  = 0;
                var ret        = NvmlNativeMethods.nvmlDeviceGetPowerManagementLimitConstraints(nvmlDevice, ref minLimit, ref maxLimit);
                if (ret != nvmlReturn.Success)
                {
                    throw new NvmlException($"nvmlDeviceGetPowerManagementLimitConstraints", ret);
                }

                uint defaultLimit = 0;
                ret = NvmlNativeMethods.nvmlDeviceGetPowerManagementDefaultLimit(nvmlDevice, ref defaultLimit);
                if (ret != nvmlReturn.Success)
                {
                    throw new NvmlException($"nvmlDeviceGetPowerManagementDefaultLimit", ret);
                }

                var limit   = minLimit + (defaultLimit - minLimit) * GetUintFromPowerLevel(level) / 2;
                var tdpPerc = (limit * 100.0 / defaultLimit);
                return(SetTdp(nvmlDevice, tdpPerc, defaultLimit));
            });

            return(execRet);
        }
示例#3
0
        private static void MessageHandler(object args)
        {
            if (args is SleepEvent)
            {
                SleepChangeEventHandler h = OnSleepChange;

                if (h != null)
                {
                    h((SleepEvent)args);
                }
            }
            else if (args is PowerEvent)
            {
                PowerEvent pe = (PowerEvent)args;

                PowerLevelChangeEventHandler h = OnPowerLevelChange;

                s_CurrentPowerLevel = pe.Level;

                if (h != null)
                {
                    h(pe);
                }
            }
        }
示例#4
0
        private bool SetTdpSimple(PowerLevel level)
        {
            try
            {
                uint minLimit = 0;
                uint maxLimit = 0;
                var  ret      = NvmlNativeMethods.nvmlDeviceGetPowerManagementLimitConstraints(_nvmlDevice, ref minLimit, ref maxLimit);
                if (ret != nvmlReturn.Success)
                {
                    throw new Exception($"NVML nvmlDeviceGetPowerManagementLimitConstraints failed with status: {ret}");
                }

                uint defaultLimit = 0;
                ret = NvmlNativeMethods.nvmlDeviceGetPowerManagementDefaultLimit(_nvmlDevice, ref defaultLimit);
                if (ret != nvmlReturn.Success)
                {
                    throw new Exception($"NVML nvmlDeviceGetPowerManagementDefaultLimit failed with status: {ret}");
                }

                var limit   = minLimit + (defaultLimit - minLimit) * GetUintFromPowerLevel(level) / 2;
                var tdpPerc = (limit * 100.0 / defaultLimit);
                return(SetTdp(tdpPerc, defaultLimit));
            }
            catch (Exception e)
            {
                Logger.ErrorDelayed("NVML", e.ToString(), _delayedLogging);
                return(false);
            }
        }
示例#5
0
        public bool SetPowerTarget(PowerLevel level)
        {
            PowerLevel = level;
            if (SetTdpSimple(level))
            {
                return(true);
            }

            switch (level)
            {
            case PowerLevel.Low:
                PowerLevel = level;
                return(SetPowerTarget(_minPowerLimit));

            case PowerLevel.Medium:
                PowerLevel = level;
                return(SetPowerTarget((uint)Math.Round((_minPowerLimit + _defaultPowerLimit) / 2d)));

            case PowerLevel.High:
                PowerLevel = level;
                return(SetPowerTarget(_defaultPowerLimit));
            }

            return(false);
        }
示例#6
0
 public override int GetHashCode()
 {
     return(23 ^ Name.GetHashCode() ^
            Slot.GetHashCode() ^
            PowerLevel.GetHashCode() ^
            Tier.GetHashCode() ^
            ClassType.GetHashCode());
 }
 public static EncounterEnemy CreateEnemyOfSetPowerLevel(System.Type enemyType,PowerLevel powerLevel)
 {
     EncounterEnemy newEnemy=(EncounterEnemy)System.Activator.CreateInstance(enemyType);
     newEnemy.CommonConstructor();
     if (powerLevel == PowerLevel.Normal)
         newEnemy.NormalConstructor();
     if (powerLevel == PowerLevel.Tough)
         newEnemy.ToughConstructor();
     return newEnemy;
 }
        /// <summary>
        /// Gets the <see cref="PowerLevel"/> entry associated to the given value.
        /// </summary>
        /// <param name="dumb"></param>
        /// <param name="value">Value of the <see cref="PowerLevel"/> to retrieve.</param>
        /// <returns>The <see cref="PowerLevel"/> entry associated to the given value, <code>PowerLevel.LEVEL.UNKNOWN</code> if the <paramref name="value"/> could not be found in the list.</returns>
        public static PowerLevel Get(this PowerLevel dumb, byte value)
        {
            var values = Enum.GetValues(typeof(PowerLevel)).OfType <PowerLevel>();

            if (values.Cast <byte>().Contains(value))
            {
                return((PowerLevel)value);
            }

            return(PowerLevel.LEVEL_UNKNOWN);
        }
 // percent is in hundreds, e.g. 100%
 public bool SetPowerTarget(double percent)
 {
     if (DeviceMonitorManager.DisableDevicePowerModeSettings)
     {
         Logger.InfoDelayed(LogTag, $"SetPowerTarget Disabled DeviceMonitorManager.DisableDevicePowerModeSettings==true", TimeSpan.FromSeconds(30));
         return(false);
     }
     // TODO this Custom thingh shouild be changed so each mode has a custom setting
     PowerLevel = PowerLevel.Custom;
     return(SetTdpPercentage(percent));
 }
        public bool SetPowerTarget(PowerLevel level)
        {
            if (DeviceMonitorManager.DisableDevicePowerModeSettings)
            {
                Logger.InfoDelayed(LogTag, $"SetPowerTarget Disabled DeviceMonitorManager.DisableDevicePowerModeSettings==true", TimeSpan.FromSeconds(30));
                return(false);
            }

            PowerLevel = level;
            return(SetTdpSimple(level));
        }
示例#11
0
    public void Shoot(int pow)
    {
        PowerLevel shotPower = PowerLevel.one;

        GameObject temp;

        if (pow >= 3)
        {
            shotPower = PowerLevel.super;
        }
        else if (pow >= 2)
        {
            shotPower = PowerLevel.three;
        }
        else if (pow >= 1)
        {
            shotPower = PowerLevel.two;
        }
        else
        {
            shotPower = PowerLevel.one;
        }

        switch (shotPower)
        {
        case PowerLevel.one:
            temp = Instantiate(bullet1, forwardHolder);
            temp.GetComponent <Rigidbody2D>().AddForce(forward * bulletForce * 200);
            temp.transform.SetParent(GameObject.Find("Independent").transform);
            break;

        case PowerLevel.two:
            temp = Instantiate(bullet2, transform.position, forwardHolder.transform.rotation);
            temp.GetComponent <Rigidbody2D>().AddForce(forward * bulletForce * 200);
            temp.transform.SetParent(GameObject.Find("Independent").transform);
            break;

        case PowerLevel.three:
            temp = Instantiate(bullet3, transform.position, forwardHolder.transform.rotation);
            temp.GetComponent <Rigidbody2D>().AddForce(forward * bulletForce * 200);
            temp.transform.SetParent(GameObject.Find("Independent").transform);
            break;

        case PowerLevel.super:
            temp = Instantiate(bulletSuper, transform.position, forwardHolder.transform.rotation);
            temp.GetComponent <Rigidbody2D>().AddForce(forward * bulletForce * 200);
            temp.transform.SetParent(GameObject.Find("Independent").transform);
            break;

        default:
            break;
        }
    }
示例#12
0
        private static uint GetUintFromPowerLevel(PowerLevel powerLevel)
        {
            switch (powerLevel)
            {
            case PowerLevel.Low: return(0);

            case PowerLevel.Medium: return(1);

            case PowerLevel.High: return(2);

            default: throw new Exception("GetUintFromPowerLevel - Unknown PowerLevel");
            }
        }
示例#13
0
        private void Update()
        {
            m_CurrentLevel = m_HI5Status.GetPowerLevel(m_Type);

            if (m_HI5Status.IsGloveAvailable(m_Type))
            {
                SetPowerLevelSpriteRenderer(m_CurrentLevel);
            }
            else
            {
                SetPowerLevelSpriteRenderer(PowerLevel.Unknown);
            }
        }
        private static void SetPowerMode(string device, PowerLevel level)
        {
            var devs = device == "*" ?
                       AvailableDevices.Devices :
                       AvailableDevices.Devices.Where(d => d.B64Uuid == device);

            var found      = devs.Count() > 0;
            var hasEnabled = false;
            var setSuccess = new List <bool>();

            foreach (var dev in devs)
            {
                if (!dev.Enabled)
                {
                    continue;
                }
                if (!dev.CanSetPowerMode)
                {
                    continue;
                }
                hasEnabled = true;
                // TODO check if set
                var result = dev.SetPowerMode(level);
                setSuccess.Add(result);
            }

            if (setSuccess.Any(t => t) && !setSuccess.All(t => t))
            {
                throw new RpcException("Not able to set power modes for all devices", ErrorCode.UnableToHandleRpc);
            }

            if (found && !hasEnabled)
            {
                throw new RpcException("No settable devices found", ErrorCode.UnableToHandleRpc);
            }

            if (!found)
            {
                throw new RpcException("No settable devices found", ErrorCode.UnableToHandleRpc);
            }
        }
示例#15
0
        private void SetPowerLevelSpriteRenderer(PowerLevel level)
        {
            switch (level)
            {
            case PowerLevel.Unknown:
                m_SpritRenderer.sprite = null;
                break;

            case PowerLevel.Full:
                m_SpritRenderer.sprite = m_Full;
                break;

            case PowerLevel.Normal:
                m_SpritRenderer.sprite = m_Normal;
                break;

            case PowerLevel.Low:
                m_SpritRenderer.sprite = m_Low;
                break;
            }
        }
示例#16
0
    private IEnumerator AllowPowerUsers(Permissions permission, PowerLevel power, string errorIfNotAllowed)
    {
        ActionAllowed allowed = ActionAllowed.Unfinished;

        yield return(null);

        yield return(new object[]
        {
            permission.ToString(),
            new Action(() => allowed = ActionAllowed.Allowed),
            new Action(() => allowed = ActionAllowed.Denied)
        });

        yield return(null);

        DebugLog("Permission = {0}, Result = {1}", permission, allowed);

        if (allowed == ActionAllowed.Allowed)
        {
            yield break;
        }
        allowed = ActionAllowed.Unfinished;
        yield return(new object[]
        {
            EnumUtils.StringValueOf(power),
            new Action(() => allowed = ActionAllowed.Allowed),
            new Action(() => allowed = ActionAllowed.Denied)
        });

        yield return(null);

        DebugLog("Power override {0}, Result = {1}", power, allowed);

        if (allowed == ActionAllowed.Allowed)
        {
            yield break;
        }
        Audio.PlayGameSoundAtTransform(KMSoundOverride.SoundEffect.Strike, transform);
        yield return("sendtochaterror " + errorIfNotAllowed);
    }
示例#17
0
    PowerLevel DisplayLevelForm(string label, PowerLevel data, ref bool foldout)
    {
        PowerLevel newData = data;

        foldout = EditorGUILayout.Foldout(foldout, label + " : " + newData.Name);

        if (foldout)
        {
            newData.Name = EditorGUILayout.TextField("Name", newData.Name);
            GUILayout.Space(5);

            EditorGUILayout.BeginHorizontal();
            DisplayIndividualForm("Clover", ref newData.CloverDescription, ref newData.CloverEffectValue);
            DisplayIndividualForm("Amaranth", ref newData.AmaranthDescription, ref newData.AmaranthEffectValue);
            EditorGUILayout.EndHorizontal();

            newData.CostMultiplier = EditorGUILayout.FloatField("Cost Multiplier", newData.CostMultiplier);
            newData.VitaePrice     = EditorGUILayout.IntField("Price (Vitae)", newData.VitaePrice);
        }

        return(newData);
    }
示例#18
0
        /// <summary>
        /// The ChangePowerLevel method enables the caller to adjust the current power level of the device.
        /// The behavior of the power levels are determined by the hardware vendor.  This method raises the
        /// OnPowerLevelChange event.
        /// </summary>
        /// <param name="level">Describes the power level for which the system should enter</param>
        public static void ChangePowerLevel(PowerLevel level)
        {
            if (s_CurrentPowerLevel == level)
            {
                return;
            }

            PowerLevelChangeEventHandler h = OnPowerLevelChange;

            if (h != null)
            {
                PowerEvent e = new PowerEvent();

                e.EventType = PowerEventType.PreNotify;
                e.Level     = level;
                e.Time      = DateTime.UtcNow;

                h(e);
            }

            InternalChangePowerLevel(level);

            s_CurrentPowerLevel = level;
        }
示例#19
0
 extern private static void InternalChangePowerLevel(PowerLevel level);
示例#20
0
 // percent is in hundreds, e.g. 100%
 public bool SetPowerTarget(double percent)
 {
     PowerLevel = PowerLevel.Custom;
     return(SetPowerTarget((uint)Math.Round(percent * 1000)));
 }
示例#21
0
 private static extern void SetLevel(PowerLevel powerLevel, PowerWakeSource wakeSource, ulong data);
示例#22
0
 /// <summary>
 /// Sets the output power level at which this XBee device transmits conducted power.
 /// </summary>
 /// <param name="powerLevel">The new output power level to be set in this XBee device.</param>
 /// <exception cref="ArgumentException">If <paramref name="powerLevel"/>
 /// is <see cref="PowerLevel.LEVEL_UNKNOWN"/>.</exception>
 /// <exception cref="InterfaceNotOpenException">If this device connection is not open.</exception>
 /// <exception cref="TimeoutException">If there is a timeout setting the power level command.</exception>
 /// <exception cref="XBeeException">If there is any other XBee related error.</exception>
 /// <seealso cref="GetPowerLevel"/>
 /// <seealso cref="PowerLevel"/>
 public new void SetPowerLevel(PowerLevel powerLevel)
 {
     base.SetPowerLevel(powerLevel);
 }
示例#23
0
        private static void MessageHandler(object args)
        {
            if (args is SleepEvent)
            {
                SleepChangeEventHandler h = OnSleepChange;

                if (h != null)
                {
                    h((SleepEvent)args);
                }
            }
            else if (args is PowerEvent)
            {
                PowerEvent pe = (PowerEvent)args;

                PowerLevelChangeEventHandler h = OnPowerLevelChange;

                s_CurrentPowerLevel = pe.Level;

                if (h != null)
                {
                    h(pe);
                }
            }
        }
示例#24
0
 extern private static void InternalChangePowerLevel(PowerLevel level);
 public static string ToDisplayString(this PowerLevel source)
 {
     return(string.Format("{0}: {1}", HexUtils.ByteToHexString((byte)source), lookupTable[source]));
 }
		/**
		 * Sets the output power level at which this XBee device transmits 
		 * conducted power.
		 * 
		 * @param powerLevel The new output power level to be set in this XBee 
		 *                   device.
		 * 
		 * @throws InterfaceNotOpenException if this device connection is not open.
		 * @throws ArgumentNullException if {@code powerLevel == null}.
		 * @throws TimeoutException if there is a timeout setting the power level.
		 * @throws XBeeException if there is any other XBee related exception.
		 * 
		 * @see #getPowerLevel()
		 * @see com.digi.xbee.api.models.PowerLevel
		 */
		public void SetPowerLevel(PowerLevel powerLevel)/*throws TimeoutException, XBeeException */{
			if (powerLevel == null)
				throw new ArgumentNullException("Power level cannot be null.");

			SetParameter("PL", ByteUtils.IntToByteArray(powerLevel.GetValue()));
		}
 /// <summary>
 /// Gets the power level value.
 /// </summary>
 /// <param name="source"></param>
 /// <returns>The power level value.</returns>
 public static byte GetValue(this PowerLevel source)
 {
     return((byte)source);
 }
 /// <summary>
 /// Gets the power level description.
 /// </summary>
 /// <param name="source"></param>
 /// <returns>The power level description.</returns>
 public static string GetDescription(this PowerLevel source)
 {
     return(lookupTable[source]);
 }
示例#29
0
        /// <summary>
        /// The ChangePowerLevel method enables the caller to adjust the current power level of the device.
        /// The behavior of the power levels are determined by the hardware vendor.  This method raises the
        /// OnPowerLevelChange event.
        /// </summary>
        /// <param name="level">Describes the power level for which the system should enter</param>
        public static void ChangePowerLevel(PowerLevel level)
        {
            if (s_CurrentPowerLevel == level) return;

            PowerLevelChangeEventHandler h = OnPowerLevelChange;

            if (h != null)
            {
                PowerEvent e = new PowerEvent();

                e.EventType = PowerEventType.PreNotify;
                e.Level = level;
                e.Time = DateTime.UtcNow;

                h(e);
            }

            InternalChangePowerLevel(level);

            s_CurrentPowerLevel = level;
        }