Inheritance: MonoBehaviour
 internal override void Apply(Sensor.BaseSensorDevice sensor)
 {
     if (!(sensor is TemperatureControllableSensor))
         throw new ArgumentException();
     ((TemperatureControllableSensor)sensor).SetTemperatureSensor(thermistor);
     Refresh(sensor);
 }
コード例 #2
0
ファイル: SSDSandforce.cs プロジェクト: reimashi/jotai
 public SSDSandforce(ISmart smart, string name, string firmwareRevision, 
   int index, ISettings settings) 
   : base(smart, name, firmwareRevision,  index, smartAttributes, settings) 
 {
   this.writeAmplification = new Sensor("Write Amplification", 1, 
     SensorType.Factor, this, settings);    
 }
 internal override void Refresh(Sensor.BaseSensorDevice sensor)
 {
     if (!(sensor is TemperatureControllableSensor))
         throw new ArgumentException();
     if (CoreUtil.DoesThermistorNeedManualPush(sensor, thermistor))
         ((TemperatureControllableSensor)sensor).SetTemperature(GetTemperature());
 }
コード例 #4
0
        public ATIGPU(string name, int adapterIndex, int busNumber, int deviceNumber, ISettings settings)
            : base(name, new Identifier("atigpu", adapterIndex.ToString(CultureInfo.InvariantCulture)), settings)
        {
            this.adapterIndex = adapterIndex;
            this.busNumber = busNumber;
            this.deviceNumber = deviceNumber;

            this.temperature = new Sensor("GPU Core", 0, SensorType.Temperature, this, settings);
            this.fan = new Sensor("GPU Fan", 0, SensorType.Fan, this, settings);
            this.coreClock = new Sensor("GPU Core", 0, SensorType.Clock, this, settings);
            this.memoryClock = new Sensor("GPU Memory", 1, SensorType.Clock, this, settings);
            this.coreVoltage = new Sensor("GPU Core", 0, SensorType.Voltage, this, settings);
            this.coreLoad = new Sensor("GPU Core", 0, SensorType.Load, this, settings);
            this.controlSensor = new Sensor("GPU Fan", 0, SensorType.Control, this, settings);

            ADLOD6ThermalControllerCaps adltcc = new ADLOD6ThermalControllerCaps();
            if (ADL.ADL_Overdrive6_ThermalController_Caps(adapterIndex, ref adltcc) != ADL.ADL_OK)
            {
                adltcc.iFanMinPercent = 0;
                adltcc.iFanMaxPercent = 100;
            }

            this.fanControl = new Control(controlSensor, settings, adltcc.iFanMinPercent, adltcc.iFanMaxPercent);
            this.fanControl.ControlModeChanged += ControlModeChanged;
            this.fanControl.SoftwareControlValueChanged += SoftwareControlValueChanged;
            ControlModeChanged(fanControl);
            this.controlSensor.Control = fanControl;
            Update();
        }
コード例 #5
0
        void OnDataReportChanged(Sensor sender, EventArgs e)
        {
            // get sensor
            WeTabSensor sensor = sender as WeTabSensor;
            if (sensor != null)
            {
                Logger.Debug("Sensor reported");

                // get data object
                WeTabSensorData r = sensor.CurrentWeTabSensorData;
                switch (r.Message)
                {
                    case WeTabSensorMessage.SensorButtonDown:
                        Logger.Debug("Sensor button pressed");
                        _timer.Enabled = true;
                        Logger.Debug("Sensortimer started");
                        break;
                    case WeTabSensorMessage.SensorButtonUp:
                        Logger.Debug("Sensor button released");
                        _timer.Enabled = false;
                        Logger.Debug("Sensortimer interupted");
                        break;
                }
            }
        }
コード例 #6
0
    protected override bool ActivateDeviceSensor(Type sensorID, Sensor.Delay sensorSpeed)
    {
        switch (sensorID)
        {
            case Type.Accelerometer:
                SetSensorOn(sensorID);
                return true;

            case Type.Orientation:
            case Type.MagneticField:
                Input.compass.enabled = true;
                SetSensorOn(sensorID);
                return true;

            case Type.Gyroscope:
            case Type.Gravity:
            case Type.RotationVector:
            case Type.LinearAcceleration:
                Input.gyro.enabled = true;
                SetSensorOn(sensorID);
                return true;

            case Type.Light:
            case Type.Pressure:
            case Type.Temperature:
            case Type.Proximity:
            default:
                return base.ActivateDeviceSensor(sensorID, sensorSpeed);
        }
    }
コード例 #7
0
        // Insertion of a new sensor into sensor table.
        public int AddSensor(Sensor sensor)
        {
            MySqlConnection sqlConnection = new MySqlConnection(connectionString);
            MySqlCommand sqlCmd = sqlConnection.CreateCommand();
            int id = -1;
            try
            {
                sqlConnection.Open();
                sqlCmd.CommandText = "INSERT INTO " +
                                          "SENSORS ( ISENABLE, THRESHOLD, LOCATION, SENSORTYPE, PARENTID ) " +
                                          "VALUES ( " + sensor.IsEnabled + ", " + sensor.Threshold + ", \"" + sensor.Location + "\", \"" + sensor.Type + "\", " + sensor.ParentId + ")";

                sqlCmd.ExecuteNonQuery();
                sqlCmd.CommandText = "SELECT LAST_INSERT_ID() FROM SENSORS";
                id = Convert.ToInt32(sqlCmd.ExecuteScalar());
            }
            catch (Exception e)
            {
                Console.WriteLine("Could not connect to database!");
                Console.WriteLine("{0} Exception caught.", e);
            }
            finally
            {
                sqlConnection.Close();
            }
            return id;
        }
コード例 #8
0
	void Update() {
		leftRayDirection = transform.TransformDirection(new Vector3(-1, 0, 1));
		rightRayDirection = transform.TransformDirection(new Vector3(1, 0, 1));

		if(Physics.Raycast(transform.position, leftRayDirection, out hitLeft, minimumDistanceToAvoid)) {
			if(hitLeft.transform != transform) { // Intersection with own collider is omitted
				touch = Sensor.LEFT;
			}
		}

		if(Physics.Raycast(transform.position, rightRayDirection, out hitRight, minimumDistanceToAvoid)) {
			if(hitRight.transform != transform) { // Intersection with own collider is omitted
				touch = Sensor.RIGHT;
			}
		}

		switch(touch) {
			case Sensor.LEFT:
				Vector3 leftHitNormal = hitLeft.normal;
				Debug.DrawRay(hitLeft.point, leftHitNormal, Color.red);
				leftHitNormal.y = 0.0f; // Restrict movement in y direction
				direction = transform.forward + leftHitNormal * steerForce;
				break;
			case Sensor.RIGHT:
				Vector3 rightHitNormal = hitRight.normal;
				Debug.DrawRay(hitRight.point, rightHitNormal, Color.blue);
				rightHitNormal.y = 0.0f; // Restrict movement in y direction
				direction = transform.forward + rightHitNormal * steerForce;
				break;
		}

		rotate = Quaternion.LookRotation(direction.normalized);
		transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * rotateSpeed);
		transform.position += transform.forward * Time.deltaTime * translateSpeed;
	}
コード例 #9
0
        //----------------------------------------------------------------------------//
        // Constructors                                                               //
        //----------------------------------------------------------------------------//
        ////////////////////////////////////////////////////////////////////////////////
        /// <summary> </summary>
        public SensorControl(Sensor sensor)
        {
            sensor.Control = this;
            InitializeComponent();

            // Load static resources
            if (uiBrushCenter == null)
            {
                // Brushes
                uiBrushCenter  = (Brush) FindResource ("uiBrushCenter" );
                uiBrushCenterS = (Brush) FindResource ("uiBrushCenterS");

                uiBrushAngle  = (Brush) FindResource ("uiBrushAngle" );
                uiBrushRange  = (Brush) FindResource ("uiBrushRange" );
                uiBrushStroke = (Brush) FindResource ("uiBrushStroke");

                uiBrushOrientation = (Brush) FindResource ("uiBrushOrientation");

                // Storyboards
                uiStoryboardFadeIn   = (Storyboard) FindResource ("uiStoryboardFadeIn"  );
                uiStoryboardFadeOut  = (Storyboard) FindResource ("uiStoryboardFadeOut" );
                uiStoryboardExpand   = (Storyboard) FindResource ("uiStoryboardExpand"  );
                uiStoryboardContract = (Storyboard) FindResource ("uiStoryboardContract");
            }

            sensor.PropertyChanged += ActionPropertyChanged;
            sensor.MouseOver       += ActionMouseOver;
            sensor.Selected        += ActionSelected;

            ActionPropertyChanged (sensor);
            ActionMouseOver       (sensor);
            ActionSelected        (sensor);
        }
コード例 #10
0
ファイル: LitersPerHourSensor.cs プロジェクト: cail/hobd
 protected override void Activate()
 {
     ipw = registry.Sensor("InjectorPulseWidth");
     rpm = registry.Sensor("RPM");
     registry.AddListener(ipw, OnSensorChange, ListenInterval);
     registry.AddListener(rpm, OnSensorChange, ListenInterval);
 }
コード例 #11
0
    protected void btnSeleziona_Click(object sender, EventArgs e)
    {
        if (DropDownList1.SelectedIndex == 0)
        {
            lblUnitàDiMisura.Text = "Gradi";
            lblNomeSensore.Text = "DS-1822";
            lblInterfaccia.Text = "1-Wire";
            // creazione del temometro conoscendo l'ID:
            //k = new Temperature_DS1822("Temperatura aria", false, "48-02034234", logger);
            // creazione del termometro con identificazione automatica del codice
            k = new Temperature_DS1822("Temperatura aria", false, logger);

        }
        else if (DropDownList1.SelectedIndex == 1)
        {
            lblUnitàDiMisura.Text = "Percentuale";
            lblNomeSensore.Text = "HIH-4000";
            lblInterfaccia.Text = "1-Wire";
            k = new Humidity_Air_HIH4000("Air humidity", false, new Adc_MCP3208(), 1, logger);
        }
        else if (DropDownList1.SelectedIndex == 2)
        {
            lblUnitàDiMisura.Text = "Percentuale";
            lblNomeSensore.Text = "YL-69-YL-38";
            lblInterfaccia.Text = "1-Wire";
            k = new Humidity_Terrain_YL69YL38("Terrain Humidity", false, new Adc_MCP3208(), 1, logger);
        }
        else if (DropDownList1.SelectedIndex == 3)
        {
            lblUnitàDiMisura.Text = "[lx]";
            lblNomeSensore.Text = "Fotoresistor";
            lblInterfaccia.Text = "###";
            k = new Light_PhotoResistor("Temperature", false, new Adc_MCP3208(), 1, logger);
        }
    }
コード例 #12
0
ファイル: BearTrap.cs プロジェクト: maroussil/dwarfcorp
        public BearTrap(Vector3 pos)
            : base("BearTrap", PlayState.ComponentManager.RootComponent, Matrix.CreateTranslation(pos),
            new Vector3(1.0f, 1.0f, 1.0f), Vector3.Zero, true)
        {
            Allies = PlayState.PlayerFaction;
            Sensor = new Sensor("Sensor", this, Matrix.Identity, new Vector3(0.5f, 0.5f, 0.5f), Vector3.Zero)
            {
                FireTimer = new Timer(0.5f, false)
            };
            Sensor.OnSensed += Sensor_OnSensed;
            DeathTimer = new Timer(0.6f, true);
            DeathParticles = new ParticleTrigger("puff", PlayState.ComponentManager, "DeathParticles", this,
                Matrix.Identity, new Vector3(0.5f, 0.5f, 0.5f), Vector3.Zero)
            {
                SoundToPlay = ""
            };

            DamageAmount = 200;
            Voxel voxUnder = new Voxel();
            PlayState.ChunkManager.ChunkData.GetFirstVoxelUnder(pos, ref voxUnder);
            VoxListener = new VoxelListener(PlayState.ComponentManager, this, PlayState.ChunkManager, voxUnder);
            Sprite = new Sprite(PlayState.ComponentManager, "Sprite", this, Matrix.Identity, new SpriteSheet(ContentPaths.Entities.DwarfObjects.beartrap), false);
            Sprite.AddAnimation(new Animation(0, ContentPaths.Entities.DwarfObjects.beartrap, 32, 32,  0) {Name = IdleAnimation});
            Sprite.AddAnimation(new Animation(1, ContentPaths.Entities.DwarfObjects.beartrap, 32, 32,  0, 1, 2, 3) {Name = TriggerAnimation, Speeds =  new List<float>() {6.6f}, Loops = true});
        }
コード例 #13
0
ファイル: SensorManager.cs プロジェクト: AlexAlbala/MaCRo
        public float getDistance(Sensor type)
        {
            float value = 0;
            float[] values = new float[5];
            float[] auxValues = new float[5];

            switch (type)
            {
                case Sensor.Central:
                    for (int i = 0; i < 5; i++)
                    {
                        //value += central.GetDistance_cm();
                        values[i] = central.GetDistance_cm();
                    }
                    break;
                case Sensor.Wall:
                    for (int i = 0; i < 5; i++)
                    {
                        //value += wall.GetDistance_cm();
                        values[i] = wall.GetDistance_cm();
                    }
                    break;
                case Sensor.wall_back: for (int i = 0; i < 5; i++)
                    {
                        //value += wall_back.GetDistance_cm();
                        values[i] = wall_back.GetDistance_cm();
                    }
                    break;
                case Sensor.Right: for (int i = 0; i < 5; i++)
                    {
                        //value += right.GetDistance_cm();
                        values[i] = right.GetDistance_cm();
                    }
                    break;
                default:
                    return 0;

            }
            int count = 0;

            while (count < 5)
            {
                float min = float.MaxValue;
                short lastMin = -1;
                for (short i = 0; i < 5; i++)
                {
                    if (values[i] < min)
                    {
                        min = values[i];
                        lastMin = i;
                    }
                }
                auxValues[count++] = values[lastMin];
                values[lastMin] = float.MaxValue;
            }

            //MEdIAN FILTER
            return auxValues[2];
        }
コード例 #14
0
        internal override void Apply(Sensor.BaseSensorDevice sensor)
        {
            if(!(sensor is Sensor.LED))
                throw new ArgumentException();
            base.Apply(sensor);

            ((Sensor.LED)sensor).SetControlCurve(curve);
        }
コード例 #15
0
    protected override bool ActivateDeviceSensor(Type sensorID, Sensor.Delay sensorSpeed)
    {
		Input.gyro.enabled = true;
		Input.compass.enabled = true;
		Get (sensorID).available = this.GetSensorDebugAvailable((int)sensorID);
		Get (sensorID).active = true;
		return true;
	}
コード例 #16
0
        internal override void Apply(Sensor.BaseSensorDevice sensor)
        {
            if (!(sensor is Sensor.LED))
                throw new ArgumentException();
            base.Apply(sensor);

            ((Sensor.LED)sensor).SetFixedRGBCycleColors(m_color.ToArray());
        }
コード例 #17
0
    private void HardwareSensorAdded(ISensor data) {
      Sensor sensor = new Sensor(data);
      activeInstances.Add(sensor);

      try {
        Instrumentation.Publish(sensor);
      } catch (Exception) { }
    }
コード例 #18
0
        /**
         * Calculates as following:
         *
           LPH = 3600 * maf /  (14.7 * 454*6.17 / 3.78 )

           14.7 grams of air to 1 gram of gasoline - ideal air/fuel ratio

           6.17 pounds per gallon - density of gasoline
           454 grams per pound - conversion
           454*6.17/3.78 - grams per liter

           3600 seconds per hour - conversion
           MAF - mass air flow rate in grams per second
         *
         */
        public void OnSensorChange(Sensor maf)
        {
            TimeStamp = maf.TimeStamp;
            // per second
            Value = maf.Value / (stoich * 454*6.17 / 3.78 );
            // to hour
            Value = Value*3600;
            registry.TriggerListeners(this);
        }
コード例 #19
0
 public DataGridSensorToAddView(Sensor s)
 {
     _timeout = s.MeasuringTimeout.ToString();
     _add = "yes";
     Optimal = s.MeasurableParameter.Optimal.ToString();
     Min = s.MeasurableParameter.Min.ToString();
     Max = s.MeasurableParameter.Max.ToString();
     Measurable = s.MeasurableType;
 }
コード例 #20
0
 internal static byte GetRelativeThermistorByte(Sensor.BaseSensorDevice sensor, IThermistor thermistor)
 {
     if (thermistor == null)
         return 0;
     if (!(thermistor is Thermistor))
         return 7;
     Thermistor thermistorCast = (Thermistor)thermistor;
     return (byte)((sensor.device == thermistorCast.device) ? thermistorCast.id : 7);
 }
コード例 #21
0
ファイル: FuelEconomyTripSensor.cs プロジェクト: cail/hobd
 double FEValue(Sensor distance, Sensor fuel)
 {
     if (distance.Value <= 0 || fuel.Value <= 0)
     {
     return Double.PositiveInfinity;
     }else{
     return fuel.Value * 100 / distance.Value;
     }
 }
コード例 #22
0
ファイル: LitersPerHourSensor.cs プロジェクト: cail/hobd
 /**
  * Calculates as following:
  *
  * rpm/60 * cilinders * injector * 0.001 * injectorFlow * 60 / 1000
  *
  * rpm/60 is rotations per second
  * cilinders number of cilinders
  * injector*0.001 is how long injector is open during one rotation (in seconds)
  * injectorFlow how much cubic centimeters (CC) come through the injector in 1 minute
  * /60 is to give an second
  * /1000 is to give liters from CC
  *
  */
 public void OnSensorChange(Sensor s)
 {
     TimeStamp = s.TimeStamp;
     // liters per second
     Value = rpm.Value/60 * cylinders * ipw.Value * 0.001 * injectorccpm/60 / 1000;
     // to hour
     Value = Value*3600;
     registry.TriggerListeners(this);
 }
コード例 #23
0
    public TBalancer(int portIndex, byte protocolVersion, ISettings settings)
      : base("T-Balancer bigNG",  new Identifier("bigng",
        portIndex.ToString(CultureInfo.InvariantCulture)), settings) 
    {

      this.portIndex = portIndex;
      this.protocolVersion = protocolVersion;

      ParameterDescription[] parameter = new [] {
        new ParameterDescription("Offset [°C]", "Temperature offset.", 0)
      };
      int offset = 0;
      for (int i = 0; i < digitalTemperatures.Length; i++)
        digitalTemperatures[i] = new Sensor("Digital Sensor " + i,
          offset + i, SensorType.Temperature, this, parameter, settings);
      offset += digitalTemperatures.Length;

      for (int i = 0; i < analogTemperatures.Length; i++)
        analogTemperatures[i] = new Sensor("Analog Sensor " + (i + 1),
          offset + i, SensorType.Temperature, this, parameter, settings);
      offset += analogTemperatures.Length;

      for (int i = 0; i < sensorhubTemperatures.Length; i++)
        sensorhubTemperatures[i] = new Sensor("Sensorhub Sensor " + i,
          offset + i, SensorType.Temperature, this, parameter, settings);
      offset += sensorhubTemperatures.Length;

      for (int i = 0; i < miniNGTemperatures.Length; i++)
        miniNGTemperatures[i] = new Sensor("miniNG #" + (i / 2 + 1) +
          " Sensor " + (i % 2 + 1), offset + i, SensorType.Temperature,
          this, parameter, settings);
      offset += miniNGTemperatures.Length;

      for (int i = 0; i < sensorhubFlows.Length; i++)
        sensorhubFlows[i] = new Sensor("Flowmeter " + (i + 1),
          i, SensorType.Flow, this, new [] {
            new ParameterDescription("Impulse Rate", 
              "The impulse rate of the flowmeter in pulses/L", 509)
          }, settings);

      for (int i = 0; i < controls.Length; i++) {
        controls[i] = new Sensor("Fan Channel " + i, i, SensorType.Control, 
          this, settings);
      }

      for (int i = 0; i < miniNGControls.Length; i++) {
        miniNGControls[i] = new Sensor("miniNG #" + (i / 2 + 1) +
          " Fan Channel " + (i % 2 + 1), 4 + i, SensorType.Control, this, 
          settings);
      }

      alternativeRequest = new MethodDelegate(DelayedAlternativeRequest);

      Open();
      Update(); 
    }
コード例 #24
0
ファイル: MongoSensor.cs プロジェクト: LexaGal/Plants
 public MongoSensor(Sensor sensor)
 {
     objId = sensor.Id.ToString();
     plantsareaId = sensor.PlantsAreaId.ToString();
     measurableType = sensor.MeasurableType;
     measuringTimeout = sensor.MeasuringTimeout;
     isOn = sensor.IsOn.ToString();
     dateTime = DateTime.Now;
     isCustom = sensor.IsCustom.ToString();
 }
コード例 #25
0
        public void AddSensor(string sensorType, string sensorUnit)
        {
            Sensor sensor = new Sensor(sensorType, sensorUnit, this);

            Sensors.Add(sensorType,sensor);
            if (sensorType=="temperature")
            {
                Temperature = sensor;
            }
        }
コード例 #26
0
ファイル: EventManager.cs プロジェクト: ufjl0683/sshmc
        public EventManager(Sensor.SensorManager snrmgr)
        {
            // SSHMC01Entities1 db = new SSHMC01Entities1();

             foreach (Sensor.SensorBase snr in snrmgr.getAllDeviceEnum())
             {

                 snr.OnDegreeChanged += new Sensor.OnDegreeChangedHandler(snr_OnDegreeChanged);
             }
        }
コード例 #27
0
ファイル: LitersPerHourSensor.cs プロジェクト: cail/hobd
 protected override void Activate()
 {
     load = registry.Sensor(OBD2Sensors.EngineLoad);
     registry.AddListener(load, OnSensorChange, ListenInterval);
     if (rpm_matrix != null)
     {
     rpm = registry.Sensor(OBD2Sensors.RPM);
     registry.AddListener(rpm, OnSensorChange, ListenInterval);
     }
 }
コード例 #28
0
ファイル: LitersPerHourSensor.cs プロジェクト: cail/hobd
        public void OnSensorChange(Sensor s)
        {
            TimeStamp = s.TimeStamp;

            int lowidx = (int) (rpm.Value / rpm_step);
            int nextidx = rpm_matrix.Length-1 == lowidx ? lowidx : lowidx + 1;
            var coeff = rpm_matrix[lowidx] +  (rpm_matrix[nextidx]-rpm_matrix[lowidx]) * (rpm.Value - lowidx*rpm_step) / rpm_step;
            Value = load.Value * coeff * engine_load_coeff;

            registry.TriggerListeners(this);
        }
コード例 #29
0
ファイル: LitersPerHourSensor.cs プロジェクト: cail/hobd
        /**
         * Calculates as following:
           (credits to ECUTracker)

           IMAP = RPM * MAP / IAT
           MAF = (IMAP/120)*(VE/100)*(ED)*(MM)/(R)

           RPM - Revs per Minute
           MAP - Pressure in kPa
           IAT degrees Kelvin
           R - 8.314 J/K/mole
           MM - Average Molecular Mass of Air 28.97 g/mole.
           VE - Percentage Volumetric Efficiency
           ED - Engine Displacement in Liters
         *
         *
         */
        public void OnSensorChange(Sensor s)
        {
            TimeStamp = s.TimeStamp;
            // per second
            double imap = rpm.Value * map.Value / (iat.Value + 273.15);
            double maf = imap/120 * (this.ve/100) * this.displacement * (28.97) / 8.314;

            // to hour
            Value = maf / (stoich * 454*6.17 / 3.78 ) * 3600;
            registry.TriggerListeners(this);
        }
コード例 #30
0
 public void AssignFrom(Sensor.LED led)
 {
     byte[] colorData = led.GetFixedRGBCycleColors();
     int numColors = GetNumColors();
     int j;
     for (int i = 0; i < numColors; i++)
     {
         j = i * 3;
         colors[i] = new Color(colorData[j], colorData[j + 1], colorData[j + 2]);
     }
 }
コード例 #31
0
        /// <summary>
        /// 增加模块,只需要改变这个方法中的算法就行了。
        /// </summary>
        private void ConvertToRealValue()
        {
            Dictionary <int, string> tempDic;
            string forceData;
            string disData;
            Sensor forceSensor;
            Sensor disSensor;

            for (int i = 0; i < adamList.Count; i++)
            {
                allDataDic.TryGetValue(adamList[i].id, out tempDic);

                if (i == 0)
                {
                    ////读取模块192.168.1.3数据,吊杆位移0,1,2,3与吊杆力4,5,6,7通道
                    //若更换 ?。;j=0 标号 17080383 空载 4.026mA
                    forceSensor = new Sensor(SensorType.forceSensor, 4, 20, 300, 1, 0);
                    tempDic.TryGetValue(4, out forceData);
                    forceSensor.readValue = double.Parse(forceData);
                    disSensor             = new Sensor(SensorType.displaceSensor, 4, 20, 29.8, 100, 20);
                    tempDic.TryGetValue(0, out disData);
                    disSensor.readValue = double.Parse(disData);
                    Steeve steeve0 = new Steeve(0, forceSensor, disSensor);
                    steeveDic[steeve0.id] = steeve0;
                    //j=1标号17110130空载3.992mA
                    forceSensor = new Sensor(SensorType.forceSensor, 4, 20, 300, 1, 0);
                    tempDic.TryGetValue(5, out forceData);
                    forceSensor.readValue = double.Parse(forceData);
                    disSensor             = new Sensor(SensorType.displaceSensor, 4, 20, 29.8, 100, 20);
                    tempDic.TryGetValue(1, out disData);
                    disSensor.readValue = double.Parse(disData);
                    Steeve steeve1 = new Steeve(1, forceSensor, disSensor);
                    steeveDic[steeve1.id] = steeve1;
                    //j=2 17080285 空载 4.012mA
                    forceSensor = new Sensor(SensorType.forceSensor, 4, 20, 300, 1, 0);
                    tempDic.TryGetValue(6, out forceData);
                    forceSensor.readValue = double.Parse(forceData);
                    disSensor             = new Sensor(SensorType.displaceSensor, 4, 20, 29.8, 100, 20);
                    tempDic.TryGetValue(2, out disData);
                    disSensor.readValue = double.Parse(disData);
                    Steeve steeve2 = new Steeve(2, forceSensor, disSensor);
                    steeveDic[steeve2.id] = steeve2;
                    //j=3 17080386 空载4.014mA
                    forceSensor = new Sensor(SensorType.forceSensor, 4, 20, 300, 1, 0);
                    tempDic.TryGetValue(7, out forceData);
                    forceSensor.readValue = double.Parse(forceData);
                    disSensor             = new Sensor(SensorType.displaceSensor, 4, 20, 29.8, 100, 20);
                    tempDic.TryGetValue(3, out disData);
                    disSensor.readValue = double.Parse(disData);
                    Steeve steeve3 = new Steeve(3, forceSensor, disSensor);
                    steeveDic[steeve3.id] = steeve3;
                }


                else if (i == 1)
                {
                    int j = 0;
                    // int count = 0;

                    for (j = 0; j < 3; j++)                                                     //前支架位移电流
                    {
                        disSensor = new Sensor(SensorType.displaceSensor, 4, 20, 1.2, 1000, 0); //传感器量程0.2-4 m;//单位mm
                        tempDic.TryGetValue(j, out disData);
                        disSensor.readValue = double.Parse(disData);
                        FrontPivot pivot = new FrontPivot(j, disSensor);
                        frontPivotDic[pivot.id] = pivot;
                    }
                    disSensor = new Sensor(SensorType.displaceSensor, 4, 20, 1.2, 1000, 0);//传感器量程0.2-4 m;
                    tempDic.TryGetValue(3, out disData);
                    disSensor.readValue = double.Parse(disData);
                    FrontPivot pivot1 = new FrontPivot(3, disSensor);
                    frontPivotDic[pivot1.id] = pivot1;

                    #region 锚杆力,接收但不显示,不保存,不后台报警
                    //  for (j = 4; j < 8; j++)//锚杆力

                    forceSensor = new Sensor(SensorType.forceSensor, 4, 20, 300, 1, 0);
                    tempDic.TryGetValue(4, out forceData);
                    forceSensor.readValue = double.Parse(forceData);

                    Anchor anchor0 = new Anchor(0, forceSensor);
                    anchorDic[anchor0.id] = anchor0;

                    forceSensor = new Sensor(SensorType.forceSensor, 4, 20, 300, 1, 0);
                    tempDic.TryGetValue(5, out forceData);
                    forceSensor.readValue = double.Parse(forceData);

                    Anchor anchor1 = new Anchor(1, forceSensor);
                    anchorDic[anchor1.id] = anchor1;

                    forceSensor = new Sensor(SensorType.forceSensor, 4, 20, 300, 1, 0);
                    tempDic.TryGetValue(6, out forceData);
                    forceSensor.readValue = double.Parse(forceData);
                    Anchor anchor2 = new Anchor(2, forceSensor);
                    anchorDic[anchor2.id] = anchor2;

                    forceSensor = new Sensor(SensorType.forceSensor, 4, 20, 300, 1, 0);
                    tempDic.TryGetValue(7, out forceData);
                    forceSensor.readValue = double.Parse(forceData);

                    Anchor anchor3 = new Anchor(3, forceSensor);
                    anchorDic[anchor3.id] = anchor3;
                    #endregion
                }
            }
        }
コード例 #32
0
ファイル: Program.cs プロジェクト: 777Max777/AquaNose2
            /// <summary>
            /// Проверка данных на стабильность
            /// </summary>
            /// <param name="sensor">Сенсор</param>
            /// <param name="data"> Самые свежие данные сенсора</param>
            /// <returns>константа стабильности Program.Service.CHECK_*</returns>
            public static int checkOk(Sensor sensor, PointD[] data)
            {
                if (data == null || sensor == null || data.Length == 0)
                {
                    return(CHECK_NO_SIGNAL);
                }

                PointD startPoint = data[0];
                PointD finalPoint = data[data.Length - 1];

                if (finalPoint.Y < 1d)
                {
                    return(CHECK_NO_SIGNAL);
                }

                bool inPassportFork = true;

                foreach (PointD point in data)
                {
                    if ((point.Y > sensor.PassportFrequency + sensor.PassportAmplitude)
                        ||
                        (point.Y < sensor.PassportFrequency - sensor.PassportAmplitude)
                        )
                    {
                        inPassportFork = false;
                    }
                }

                if (!inPassportFork)
                {
                    return(CHECK_NOT_IN_PASSPORT);
                }

                if (finalPoint.X - startPoint.X <= Presets.stableTime)
                {
                    return(CHECK_NOT_STABLE);
                }

                double max = double.MinValue;
                double min = double.MaxValue;

                foreach (PointD point in data)
                {
                    if ((point.X <= finalPoint.X) && (point.X >= finalPoint.X - Presets.stableTime))
                    {
                        if (point.Y < min)
                        {
                            min = point.Y;
                        }
                        if (point.Y > max)
                        {
                            max = point.Y;
                        }
                    }
                }

                if (max - min > Presets.stableAmp)
                {
                    return(CHECK_NOT_STABLE);
                }

                return(CHECK_STABLE);
            }
コード例 #33
0
        protected Cpu(int processorIndex, CpuId[][] cpuId) : base(cpuId[0][0].Name)
        {
            CpuId = cpuId;

            Vendor     = cpuId[0][0].Vendor;
            Identifier = $"{Vendor}/{processorIndex}";

            family   = cpuId[0][0].Family;
            model    = cpuId[0][0].Model;
            stepping = cpuId[0][0].Stepping;

            this.processorIndex = processorIndex;
            CoreCount           = cpuId.Length;

            // check if processor has MSRs
            if (cpuId[0][0].Data.GetLength(0) > 1 &&
                (cpuId[0][0].Data[1, 3] & 0x20) != 0)
            {
                HasModelSpecificRegisters = true;
            }
            else
            {
                HasModelSpecificRegisters = false;
            }

            // check if processor has a TSC
            if (cpuId[0][0].Data.GetLength(0) > 1 &&
                (cpuId[0][0].Data[1, 3] & 0x10) != 0)
            {
                HasTimeStampCounter = true;
            }
            else
            {
                HasTimeStampCounter = false;
            }

            // check if processor supports an invariant TSC
            if (cpuId[0][0].ExtData.GetLength(0) > 7 &&
                (cpuId[0][0].ExtData[7, 3] & 0x100) != 0)
            {
                isInvariantTimeStampCounter = true;
            }
            else
            {
                isInvariantTimeStampCounter = false;
            }

            TotalLoad = CoreCount > 1 ? new Sensor("CPU Total", 0, SensorType.Load, this) : null;
            CoreLoads = new Sensor[CoreCount];
            for (var i = 0; i < CoreLoads.Length; i++)
            {
                CoreLoads[i] = new Sensor(CoreString(i), i + 1,
                                          SensorType.Load, this);
            }

            CpuLoad = new CpuLoad(cpuId);
            if (CpuLoad.IsAvailable)
            {
                foreach (var sensor in CoreLoads)
                {
                    ActivateSensor(sensor);
                }

                if (TotalLoad != null)
                {
                    ActivateSensor(TotalLoad);
                }
            }

            if (HasTimeStampCounter)
            {
                var mask = ThreadAffinity.Set(1UL << cpuId[0][0].Thread);

                EstimateTimeStampCounterFrequency();

                ThreadAffinity.Set(mask);
            }
            else
            {
                EstimatedTimeStampCounterFrequency = 0;
            }

            TimeStampCounterFrequency = EstimatedTimeStampCounterFrequency;
        }
コード例 #34
0
        public AMD10CPU(int processorIndex, CPUID[][] cpuid, ISettings settings)
            : base(processorIndex, cpuid, settings)
        {
            // AMD family 1Xh processors support only one temperature sensor
            coreTemperature = new Sensor(
                "Core" + (coreCount > 1 ? " #1 - #" + coreCount : ""), 0,
                SensorType.Temperature, this, new [] {
                new ParameterDescription("Offset [°C]", "Temperature offset.", 0)
            }, settings);

            switch (family)
            {
            case 0x10: miscellaneousControlDeviceId =
                FAMILY_10H_MISCELLANEOUS_CONTROL_DEVICE_ID; break;

            case 0x11: miscellaneousControlDeviceId =
                FAMILY_11H_MISCELLANEOUS_CONTROL_DEVICE_ID; break;

            case 0x12: miscellaneousControlDeviceId =
                FAMILY_12H_MISCELLANEOUS_CONTROL_DEVICE_ID; break;

            case 0x14: miscellaneousControlDeviceId =
                FAMILY_14H_MISCELLANEOUS_CONTROL_DEVICE_ID; break;

            case 0x15:
                switch (model & 0xF0)
                {
                case 0x00: miscellaneousControlDeviceId =
                    FAMILY_15H_MODEL_00_MISC_CONTROL_DEVICE_ID; break;

                case 0x10: miscellaneousControlDeviceId =
                    FAMILY_15H_MODEL_10_MISC_CONTROL_DEVICE_ID; break;

                case 0x30: miscellaneousControlDeviceId =
                    FAMILY_15H_MODEL_30_MISC_CONTROL_DEVICE_ID; break;

                default: miscellaneousControlDeviceId = 0; break;
                }
                break;

            case 0x16:
                switch (model & 0xF0)
                {
                case 0x00: miscellaneousControlDeviceId =
                    FAMILY_16H_MODEL_00_MISC_CONTROL_DEVICE_ID; break;

                case 0x30: miscellaneousControlDeviceId =
                    FAMILY_16H_MODEL_30_MISC_CONTROL_DEVICE_ID; break;

                default: miscellaneousControlDeviceId = 0; break;
                }
                break;

            default: miscellaneousControlDeviceId = 0; break;
            }

            // get the pci address for the Miscellaneous Control registers
            miscellaneousControlAddress = GetPciAddress(
                MISCELLANEOUS_CONTROL_FUNCTION, miscellaneousControlDeviceId);

            busClock   = new Sensor("Bus Speed", 0, SensorType.Clock, this, settings);
            coreClocks = new Sensor[coreCount];
            for (int i = 0; i < coreClocks.Length; i++)
            {
                coreClocks[i] = new Sensor(CoreString(i), i + 1, SensorType.Clock,
                                           this, settings);
                if (HasTimeStampCounter)
                {
                    ActivateSensor(coreClocks[i]);
                }
            }

            corePerformanceBoostSupport = (cpuid[0][0].ExtData[7, 3] & (1 << 9)) > 0;

            // set affinity to the first thread for all frequency estimations
            ulong mask = ThreadAffinity.Set(1UL << cpuid[0][0].Thread);

            // disable core performance boost
            uint hwcrEax, hwcrEdx;

            Ring0.Rdmsr(HWCR, out hwcrEax, out hwcrEdx);
            if (corePerformanceBoostSupport)
            {
                Ring0.Wrmsr(HWCR, hwcrEax | (1 << 25), hwcrEdx);
            }

            uint ctlEax, ctlEdx;

            Ring0.Rdmsr(PERF_CTL_0, out ctlEax, out ctlEdx);
            uint ctrEax, ctrEdx;

            Ring0.Rdmsr(PERF_CTR_0, out ctrEax, out ctrEdx);

            timeStampCounterMultiplier = estimateTimeStampCounterMultiplier();

            // restore the performance counter registers
            Ring0.Wrmsr(PERF_CTL_0, ctlEax, ctlEdx);
            Ring0.Wrmsr(PERF_CTR_0, ctrEax, ctrEdx);

            // restore core performance boost
            if (corePerformanceBoostSupport)
            {
                Ring0.Wrmsr(HWCR, hwcrEax, hwcrEdx);
            }

            // restore the thread affinity.
            ThreadAffinity.Set(mask);

            // the file reader for lm-sensors support on Linux
            temperatureStream = null;
            int p = (int)Environment.OSVersion.Platform;

            if ((p == 4) || (p == 128))
            {
                string[] devicePaths = Directory.GetDirectories("/sys/class/hwmon/");
                foreach (string path in devicePaths)
                {
                    string name = null;
                    try {
                        using (StreamReader reader = new StreamReader(path + "/device/name"))
                            name = reader.ReadLine();
                    } catch (IOException) { }
                    switch (name)
                    {
                    case "k10temp":
                        temperatureStream = new FileStream(path + "/device/temp1_input",
                                                           FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                        break;
                    }
                }
            }

            Update();
        }
コード例 #35
0
ファイル: AMD17CPU.cs プロジェクト: ningjx/PCMonitor
        public AMD17CPU(int processorIndex, CPUID[][] cpuid, ISettings settings)
            : base(processorIndex, cpuid, settings)
        {
            string cpuName = cpuid[0][0].BrandString;

            if (!string.IsNullOrEmpty(cpuName))
            {
                foreach (var item in tctlOffsetItems)
                {
                    if (cpuName.StartsWith(item.Name))
                    {
                        tctlOffset = item.Offset;
                        break;
                    }
                }
            }

            coreTemperature = new Sensor(
                "CPU Package", 0, SensorType.Temperature, this, new[] {
                new ParameterDescription("Offset [°C]", "Temperature offset.", 0)
            }, this.settings);

            if (tctlOffset != 0.0f)
            {
                tctlTemperature = new Sensor(
                    "CPU Tctl", 1, true, SensorType.Temperature, this, new[] {
                    new ParameterDescription("Offset [°C]", "Temperature offset.", 0)
                }, this.settings);
            }

            ccdMaxTemperature = new Sensor(
                "CPU CCD Max", 2, SensorType.Temperature, this, this.settings);

            ccdAvgTemperature = new Sensor(
                "CPU CCD Average", 3, SensorType.Temperature, this, this.settings);

            switch (model & 0xf0)
            {
            case 0x30:
            case 0x70:
                maxCcdCount = 8; break;

            default:
                maxCcdCount = 4; break;
            }

            ccdTemperatures = new Sensor[maxCcdCount];
            for (int i = 0; i < ccdTemperatures.Length; i++)
            {
                ccdTemperatures[i] = new Sensor(
                    "CPU CCD #" + (i + 1), i + 4, SensorType.Temperature, this,
                    new[] {
                    new ParameterDescription("Offset [°C]", "Temperature offset.", 0)
                }, this.settings);
            }

            if (Ring0.Rdmsr(MSR_RAPL_PWR_UNIT, out uint eax, out _))
            {
                energyUnitMultiplier = 1.0f / (1 << (int)((eax >> 8) & 0x1F));
            }

            if (energyUnitMultiplier != 0)
            {
                if (Ring0.Rdmsr(MSR_PKG_ENERGY_STAT, out uint energyConsumed, out _))
                {
                    lastEnergyTime     = DateTime.UtcNow;
                    lastEnergyConsumed = energyConsumed;
                    packagePowerSensor = new Sensor(
                        "CPU Package", 0, SensorType.Power, this, settings);
                    ActivateSensor(packagePowerSensor);
                }
            }
            coresPowerSensor = new Sensor("CPU Cores", 1, SensorType.Power, this,
                                          settings);

            busClock = new Sensor("Bus Speed", 0, SensorType.Clock, this, settings);
            timeStampCounterMultiplier = GetTimeStampCounterMultiplier();
            if (timeStampCounterMultiplier > 0)
            {
                busClock.Value = (float)(TimeStampCounterFrequency /
                                         timeStampCounterMultiplier);
                ActivateSensor(busClock);
            }

            this.cores = new Core[coreCount];
            for (int i = 0; i < this.cores.Length; i++)
            {
                this.cores[i] = new Core(i, cpuid[i], this, settings);
            }
        }
コード例 #36
0
 /// <summary>
 /// Initializes the platform resources required for the compass sensor.
 /// </summary>
 static void Initialize()
 {
     sensorManager       = (SensorManager)Game.Activity.GetSystemService(Context.SensorService);
     sensorMagneticField = sensorManager.GetDefaultSensor(SensorType.MagneticField);
     sensorAccelerometer = sensorManager.GetDefaultSensor(SensorType.Accelerometer);
 }
コード例 #37
0
        public JsonResult Post([FromBody] Sensor sensor)
        {
            var valuepairs = _repo.GetReadings(sensor, r => new object[] { r.Time.TimeOfDay.TotalMilliseconds, r.Value });

            return(new JsonResult(valuepairs));
        }
コード例 #38
0
    void DrawOption(Sensor sensor, IOption opt)
    {
        if (!cachedValue.ContainsKey(opt))
        {
            cachedValue[opt] = opt.Value;
        }

        string k = opt.Key.ToString();
        float  v = cachedValue[opt];

        if (opt.ReadOnly)
        {
            EditorGUILayout.BeginHorizontal();
            GUI.enabled = false;
            EditorGUILayout.LabelField(k, GUILayout.Width(EditorGUIUtility.labelWidth - 4));
            GUI.enabled = true;
            EditorGUILayout.SelectableLabel(v.ToString(), EditorStyles.textField, GUILayout.Height(EditorGUIUtility.singleLineHeight));
            EditorGUILayout.EndHorizontal();
        }
        else if (opt.IsCheckbox())
        {
            bool isChecked = Convert.ToBoolean(v);
            if (isChecked != EditorGUILayout.Toggle(k, isChecked))
            {
                cachedValue[opt] = opt.Value = Convert.ToSingle(!isChecked);
            }
        }
        else if (opt.IsEnum(sensor.Options))
        {
            var valuesStrings = new List <string>();
            int selected      = 0;
            int counter       = 0;
            for (float i = opt.Min; i <= opt.Max; i += opt.Step, counter++)
            {
                if (Math.Abs(i - v) < 0.001)
                {
                    selected = counter;
                }
                valuesStrings.Add(sensor.Options.OptionValueDescription(opt.Key, i));
            }
            var newSelection = EditorGUILayout.Popup(k, selected, valuesStrings.ToArray());
            if (newSelection != selected)
            {
                cachedValue[opt] = opt.Value = Convert.ToSingle(newSelection);
            }
        }
        else if (opt.IsIntegersOnly())
        {
            var newVal = EditorGUILayout.IntSlider(k, (int)v, (int)opt.Min, (int)opt.Max);
            if (newVal != Convert.ToInt32(v))
            {
                cachedValue[opt] = opt.Value = Convert.ToSingle(newVal);
            }
        }
        else
        {
            float s = EditorGUILayout.Slider(k, v, opt.Min, opt.Max);
            if (!Mathf.Approximately(s, v))
            {
                cachedValue[opt] = opt.Value = s;
            }
        }
    }
コード例 #39
0
 private void Sensor(object sender, RoutedEventArgs e)
 {
     DataContext = new Sensor();
 }
コード例 #40
0
 public KelvinToCelsiusConverter(Sensor sensor) : base(sensor)
 {
 }
コード例 #41
0
 private void Awake()
 {
     _sensor                = GetComponent <Sensor>();
     _sensor.OnActivated   += Activated;
     _sensor.OnDeactivated += Deactivated;
 }
コード例 #42
0
 public void RegisterSensor(Sensor sensor)
 {
     sensors.Add(sensor);
 }
コード例 #43
0
ファイル: HeadingService.cs プロジェクト: lulzzz/Scavenger
 public void OnAccuracyChanged(Sensor sensor, [GeneratedEnum] SensorStatus accuracy)
 {
 }
コード例 #44
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            try
            {
                base.OnCreate(savedInstanceState);
                SetContentView(Resource.Layout.AgoraAudioCallActivityLayout);

                GlobalContext = MsgTabbedMainActivity.GetInstance();

                SensorManager = (SensorManager)GetSystemService(SensorService);
                Proximity     = SensorManager.GetDefaultSensor(SensorType.Proximity);

                UserId = Intent?.GetStringExtra("UserID");
                Avatar = Intent?.GetStringExtra("avatar");
                Name   = Intent?.GetStringExtra("name");

                var dataCallId = Intent?.GetStringExtra("CallID") ?? "Data not available";
                if (dataCallId != "Data not available" && !string.IsNullOrEmpty(dataCallId))
                {
                    CallId = dataCallId;

                    FromId = Intent?.GetStringExtra("from_id");
                    Active = Intent?.GetStringExtra("active");
                    var time = Intent?.GetStringExtra("time");
                    Status   = Intent?.GetStringExtra("status");
                    RoomName = Intent?.GetStringExtra("room_name");
                    CallType = Intent?.GetStringExtra("type");
                    Console.WriteLine(time);
                }

                SpeakerAudioButton = FindViewById <CircleButton>(Resource.Id.speaker_audio_button);
                EndCallButton      = FindViewById <CircleButton>(Resource.Id.end_audio_call_button);
                MuteAudioButton    = FindViewById <CircleButton>(Resource.Id.mute_audio_call_button);

                UserImageView    = FindViewById <ImageView>(Resource.Id.audiouserImageView);
                UserNameTextView = FindViewById <TextView>(Resource.Id.audiouserNameTextView);
                DurationTextView = FindViewById <TextView>(Resource.Id.audiodurationTextView);

                SpeakerAudioButton.Click += Speaker_audio_button_Click;
                EndCallButton.Click      += End_call_button_Click;
                MuteAudioButton.Click    += Mute_audio_button_Click;


                SpeakerAudioButton.SetImageResource(Resource.Drawable.ic_speaker_close);


                LoadUserInfo(UserId);

                if (CallType == "Agora_audio_calling_start")
                {
                    Start_Call_Action("call");
                }
                else
                {
                    Start_Call_Action("recieve_call");
                }
            }
            catch (Exception e)
            {
                Methods.DisplayReportResultTrack(e);
            }
        }
コード例 #45
0
        public AMD0FCPU(int processorIndex, CPUID[][] cpuid, ISettings settings)
            : base(processorIndex, cpuid, settings)
        {
            float offset = -49.0f;

            // AM2+ 65nm +21 offset
            uint model = cpuid[0][0].Model;

            if (model >= 0x69 && model != 0xc1 && model != 0x6c && model != 0x7c)
            {
                offset += 21;
            }

            if (model < 40)
            {
                // AMD Athlon 64 Processors
                thermSenseCoreSelCPU0 = 0x0;
                thermSenseCoreSelCPU1 = 0x4;
            }
            else
            {
                // AMD NPT Family 0Fh Revision F, G have the core selection swapped
                thermSenseCoreSelCPU0 = 0x4;
                thermSenseCoreSelCPU1 = 0x0;
            }

            // check if processor supports a digital thermal sensor
            if (cpuid[0][0].ExtData.GetLength(0) > 7 &&
                (cpuid[0][0].ExtData[7, 3] & 1) != 0)
            {
                coreTemperatures = new Sensor[coreCount];
                for (int i = 0; i < coreCount; i++)
                {
                    coreTemperatures[i] =
                        new Sensor("Core #" + (i + 1), i, SensorType.Temperature,
                                   this, new [] { new ParameterDescription("Offset [°C]",
                                                                           "Temperature offset of the thermal sensor.\n" +
                                                                           "Temperature = Value + Offset.", offset) }, settings);
                }
            }
            else
            {
                coreTemperatures = new Sensor[0];
            }

            miscellaneousControlAddress = GetPciAddress(
                MISCELLANEOUS_CONTROL_FUNCTION, MISCELLANEOUS_CONTROL_DEVICE_ID);

            busClock   = new Sensor("Bus Speed", 0, SensorType.Clock, this, settings);
            coreClocks = new Sensor[coreCount];
            for (int i = 0; i < coreClocks.Length; i++)
            {
                coreClocks[i] = new Sensor(CoreString(i), i + 1, SensorType.Clock,
                                           this, settings);
                if (HasTimeStampCounter)
                {
                    ActivateSensor(coreClocks[i]);
                }
            }

            Update();
        }
コード例 #46
0
        public AMD0FCPU(int processorIndex, CPUID[][] cpuid)
        {
            this.processorIndex = processorIndex;
            this.name           = cpuid[0][0].Name;
            this.icon           = Utilities.EmbeddedResources.GetImage("cpu.png");

            int coreCount = cpuid.Length;

            totalLoad = new Sensor("CPU Total", 0, SensorType.Load, this);

            float offset = -49.0f;

            // AM2+ 65nm +21 offset
            uint model = cpuid[0][0].Model;

            if (model >= 0x69 && model != 0xc1 && model != 0x6c && model != 0x7c)
            {
                offset += 21;
            }

            // check if processor supports a digital thermal sensor
            if (cpuid[0][0].ExtData.GetLength(0) > 7 &&
                (cpuid[0][0].ExtData[7, 3] & 1) != 0)
            {
                coreTemperatures = new Sensor[coreCount];
                for (int i = 0; i < coreCount; i++)
                {
                    coreTemperatures[i] =
                        new Sensor("Core #" + (i + 1), i, null, SensorType.Temperature,
                                   this, new ParameterDescription[] {
                        new ParameterDescription("Offset",
                                                 "Temperature offset of the thermal sensor.\n" +
                                                 "Temperature = Value + Offset.", offset)
                    });
                }
            }
            else
            {
                coreTemperatures = new Sensor[0];
            }

            coreLoads = new Sensor[coreCount];
            for (int i = 0; i < coreCount; i++)
            {
                coreLoads[i] = new Sensor("Core #" + (i + 1), i + 1,
                                          SensorType.Load, this);
            }

            cpuLoad = new CPULoad(cpuid);
            if (cpuLoad.IsAvailable)
            {
                foreach (Sensor sensor in coreLoads)
                {
                    ActivateSensor(sensor);
                }
                ActivateSensor(totalLoad);
            }

            pciAddress = WinRing0.FindPciDeviceById(PCI_AMD_VENDOR_ID,
                                                    PCI_AMD_0FH_MISCELLANEOUS_DEVICE_ID, (byte)processorIndex);

            Update();
        }
コード例 #47
0
        protected DateTimeFormatInfo _dtformat; // 时间字段格式

        public virtual IEnumerable <byte[]> ReadData(Sensor si, string filePath)
        {
            return(null);
        }
コード例 #48
0
 public void OnAccuracyChanged(Sensor sensor, SensorStatus accuracy)
 {
     //do nothing
 }
コード例 #49
0
        public SuperIOHardware(Mainboard mainboard, ISuperIO superIO,
                               Manufacturer manufacturer, Model model, ISettings settings)
        {
            this.mainboard = mainboard;
            this.superIO   = superIO;
            this.name      = ChipName.GetName(superIO.Chip);

            List <Voltage>     v = new List <Voltage>();
            List <Temperature> t = new List <Temperature>();
            List <Fan>         f = new List <Fan>();

            switch (superIO.Chip)
            {
            case Chip.IT8712F:
            case Chip.IT8716F:
            case Chip.IT8718F:
            case Chip.IT8720F:
            case Chip.IT8726F:
                switch (manufacturer)
                {
                case Manufacturer.ASUS:
                    switch (model)
                    {
                    case Model.Crosshair_III_Formula: // IT8720F
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("CPU", 0));
                        for (int i = 0; i < superIO.Fans.Length; i++)
                        {
                            f.Add(new Fan("Fan #" + (i + 1), i));
                        }
                        break;

                    case Model.M2N_SLI_DELUXE:
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("+3.3V", 1));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 4, 30, 10));
                        v.Add(new Voltage("+5VSB", 7, 6.8f, 10));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("Motherboard", 1));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("Chassis Fan #1", 1));
                        f.Add(new Fan("Power Fan", 2));
                        break;

                    case Model.M4A79XTD_EVO: // IT8720F
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("Motherboard", 1));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("Chassis Fan #1", 1));
                        f.Add(new Fan("Chassis Fan #2", 2));
                        break;

                    default:
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("Voltage #2", 1, true));
                        v.Add(new Voltage("Voltage #3", 2, true));
                        v.Add(new Voltage("Voltage #4", 3, true));
                        v.Add(new Voltage("Voltage #5", 4, true));
                        v.Add(new Voltage("Voltage #6", 5, true));
                        v.Add(new Voltage("Voltage #7", 6, true));
                        v.Add(new Voltage("Voltage #8", 7, true));
                        v.Add(new Voltage("VBat", 8));
                        for (int i = 0; i < superIO.Temperatures.Length; i++)
                        {
                            t.Add(new Temperature("Temperature #" + (i + 1), i));
                        }
                        for (int i = 0; i < superIO.Fans.Length; i++)
                        {
                            f.Add(new Fan("Fan #" + (i + 1), i));
                        }
                        break;
                    }
                    break;

                case Manufacturer.DFI:
                    switch (model)
                    {
                    case Model.LP_BI_P45_T2RS_Elite: // IT8718F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("FSB VTT", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 4, 30, 10));
                        v.Add(new Voltage("NB Core", 5));
                        v.Add(new Voltage("VDIMM", 6));
                        v.Add(new Voltage("+5VSB", 7, 6.8f, 10));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("System", 1));
                        t.Add(new Temperature("Chipset", 2));
                        f.Add(new Fan("Fan #1", 0));
                        f.Add(new Fan("Fan #2", 1));
                        f.Add(new Fan("Fan #3", 2));
                        break;

                    case Model.LP_DK_P55_T3eH9: // IT8720F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("VTT", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 4, 30, 10));
                        v.Add(new Voltage("CPU PLL", 5));
                        v.Add(new Voltage("DRAM", 6));
                        v.Add(new Voltage("+5VSB", 7, 6.8f, 10));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("Chipset", 0));
                        t.Add(new Temperature("CPU PWM", 1));
                        t.Add(new Temperature("CPU", 2));
                        f.Add(new Fan("Fan #1", 0));
                        f.Add(new Fan("Fan #2", 1));
                        f.Add(new Fan("Fan #3", 2));
                        break;

                    default:
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("VTT", 1, true));
                        v.Add(new Voltage("+3.3V", 2, true));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10, 0, true));
                        v.Add(new Voltage("+12V", 4, 30, 10, 0, true));
                        v.Add(new Voltage("Voltage #6", 5, true));
                        v.Add(new Voltage("DRAM", 6, true));
                        v.Add(new Voltage("+5VSB", 7, 6.8f, 10, 0, true));
                        v.Add(new Voltage("VBat", 8));
                        for (int i = 0; i < superIO.Temperatures.Length; i++)
                        {
                            t.Add(new Temperature("Temperature #" + (i + 1), i));
                        }
                        for (int i = 0; i < superIO.Fans.Length; i++)
                        {
                            f.Add(new Fan("Fan #" + (i + 1), i));
                        }
                        break;
                    }
                    break;

                case Manufacturer.Gigabyte:
                    switch (model)
                    {
                    case Model._965P_S3: // IT8718F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 7, 27, 9.1f));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("System", 0));
                        t.Add(new Temperature("CPU", 1));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan", 1));
                        break;

                    case Model.EP45_DS3R: // IT8718F
                    case Model.EP45_UD3R:
                    case Model.X38_DS5:
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 7, 27, 9.1f));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("System", 0));
                        t.Add(new Temperature("CPU", 1));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan #2", 1));
                        f.Add(new Fan("Power Fan", 2));
                        f.Add(new Fan("System Fan #1", 3));
                        break;

                    case Model.EX58_EXTREME: // IT8720F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("System", 0));
                        t.Add(new Temperature("CPU", 1));
                        t.Add(new Temperature("Northbridge", 2));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan #2", 1));
                        f.Add(new Fan("Power Fan", 2));
                        f.Add(new Fan("System Fan #1", 3));
                        break;

                    case Model.P35_DS3:  // IT8718F
                    case Model.P35_DS3L: // IT8718F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 7, 27, 9.1f));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("System", 0));
                        t.Add(new Temperature("CPU", 1));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan #1", 1));
                        f.Add(new Fan("System Fan #2", 2));
                        f.Add(new Fan("Power Fan", 3));
                        break;

                    case Model.P55_UD4:  // IT8720F
                    case Model.P55M_UD4: // IT8720F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 5, 27, 9.1f));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("System", 0));
                        t.Add(new Temperature("CPU", 2));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan #2", 1));
                        f.Add(new Fan("Power Fan", 2));
                        f.Add(new Fan("System Fan #1", 3));
                        break;

                    case Model.GA_MA770T_UD3: // IT8720F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 4, 27, 9.1f));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("System", 0));
                        t.Add(new Temperature("CPU", 1));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan #1", 1));
                        f.Add(new Fan("System Fan #2", 2));
                        f.Add(new Fan("Power Fan", 3));
                        break;

                    case Model.GA_MA785GMT_UD2H: // IT8718F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 4, 27, 9.1f));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("System", 0));
                        t.Add(new Temperature("CPU", 1));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan", 1));
                        f.Add(new Fan("NB Fan", 2));
                        break;

                    case Model.X58A_UD3R: // IT8720F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1));
                        v.Add(new Voltage("+3.3V", 2));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10));
                        v.Add(new Voltage("+12V", 5, 27, 9.1f));
                        v.Add(new Voltage("VBat", 8));
                        t.Add(new Temperature("System", 0));
                        t.Add(new Temperature("CPU", 1));
                        t.Add(new Temperature("Northbridge", 2));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan #2", 1));
                        f.Add(new Fan("Power Fan", 2));
                        f.Add(new Fan("System Fan #1", 3));
                        break;

                    default:
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("DRAM", 1, true));
                        v.Add(new Voltage("+3.3V", 2, true));
                        v.Add(new Voltage("+5V", 3, 6.8f, 10, 0, true));
                        v.Add(new Voltage("Voltage #5", 4, true));
                        v.Add(new Voltage("Voltage #6", 5, true));
                        v.Add(new Voltage("Voltage #7", 6, true));
                        v.Add(new Voltage("+12V", 7, 27, 9.1f, 0, true));
                        v.Add(new Voltage("VBat", 8));
                        for (int i = 0; i < superIO.Temperatures.Length; i++)
                        {
                            t.Add(new Temperature("Temperature #" + (i + 1), i));
                        }
                        for (int i = 0; i < superIO.Fans.Length; i++)
                        {
                            f.Add(new Fan("Fan #" + (i + 1), i));
                        }
                        break;
                    }
                    break;

                default:
                    v.Add(new Voltage("CPU VCore", 0));
                    v.Add(new Voltage("Voltage #2", 1, true));
                    v.Add(new Voltage("Voltage #3", 2, true));
                    v.Add(new Voltage("Voltage #4", 3, true));
                    v.Add(new Voltage("Voltage #5", 4, true));
                    v.Add(new Voltage("Voltage #6", 5, true));
                    v.Add(new Voltage("Voltage #7", 6, true));
                    v.Add(new Voltage("Voltage #8", 7, true));
                    v.Add(new Voltage("VBat", 8));
                    for (int i = 0; i < superIO.Temperatures.Length; i++)
                    {
                        t.Add(new Temperature("Temperature #" + (i + 1), i));
                    }
                    for (int i = 0; i < superIO.Fans.Length; i++)
                    {
                        f.Add(new Fan("Fan #" + (i + 1), i));
                    }
                    break;
                }
                break;

            case Chip.IT8721F:
                switch (manufacturer)
                {
                case Manufacturer.ECS:
                    switch (model)
                    {
                    case Model.A890GXM_A: // IT8721F
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("VDIMM", 1));
                        v.Add(new Voltage("NB Voltage", 2));
                        v.Add(new Voltage("Analog +3.3V", 3, 10, 10));
                        // v.Add(new Voltage("VDIMM", 6, true));
                        v.Add(new Voltage("Standby +3.3V", 7, 10, 10));
                        v.Add(new Voltage("VBat", 8, 10, 10));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("System", 1));
                        t.Add(new Temperature("Northbridge", 2));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("System Fan", 1));
                        f.Add(new Fan("Power Fan", 2));
                        break;

                    default:
                        v.Add(new Voltage("Voltage #1", 0, true));
                        v.Add(new Voltage("Voltage #2", 1, true));
                        v.Add(new Voltage("Voltage #3", 2, true));
                        v.Add(new Voltage("Analog +3.3V", 3, 10, 10, 0, true));
                        v.Add(new Voltage("Voltage #5", 4, true));
                        v.Add(new Voltage("Voltage #6", 5, true));
                        v.Add(new Voltage("Voltage #7", 6, true));
                        v.Add(new Voltage("Standby +3.3V", 7, 10, 10, 0, true));
                        v.Add(new Voltage("VBat", 8, 10, 10));
                        for (int i = 0; i < superIO.Temperatures.Length; i++)
                        {
                            t.Add(new Temperature("Temperature #" + (i + 1), i));
                        }
                        for (int i = 0; i < superIO.Fans.Length; i++)
                        {
                            f.Add(new Fan("Fan #" + (i + 1), i));
                        }
                        break;
                    }
                    break;

                default:
                    v.Add(new Voltage("Voltage #1", 0, true));
                    v.Add(new Voltage("Voltage #2", 1, true));
                    v.Add(new Voltage("Voltage #3", 2, true));
                    v.Add(new Voltage("Analog +3.3V", 3, 10, 10, 0, true));
                    v.Add(new Voltage("Voltage #5", 4, true));
                    v.Add(new Voltage("Voltage #6", 5, true));
                    v.Add(new Voltage("Voltage #7", 6, true));
                    v.Add(new Voltage("Standby +3.3V", 7, 10, 10, 0, true));
                    v.Add(new Voltage("VBat", 8, 10, 10));
                    for (int i = 0; i < superIO.Temperatures.Length; i++)
                    {
                        t.Add(new Temperature("Temperature #" + (i + 1), i));
                    }
                    for (int i = 0; i < superIO.Fans.Length; i++)
                    {
                        f.Add(new Fan("Fan #" + (i + 1), i));
                    }
                    break;
                }
                break;

            case Chip.F71858:
                v.Add(new Voltage("VCC3V", 0, 150, 150));
                v.Add(new Voltage("VSB3V", 1, 150, 150));
                v.Add(new Voltage("Battery", 2, 150, 150));
                for (int i = 0; i < superIO.Temperatures.Length; i++)
                {
                    t.Add(new Temperature("Temperature #" + (i + 1), i));
                }
                for (int i = 0; i < superIO.Fans.Length; i++)
                {
                    f.Add(new Fan("Fan #" + (i + 1), i));
                }
                break;

            case Chip.F71862:
            case Chip.F71869:
            case Chip.F71882:
            case Chip.F71889ED:
            case Chip.F71889F:
                switch (manufacturer)
                {
                case Manufacturer.EVGA:
                    switch (model)
                    {
                    case Model.X58_SLI_Classified: // F71882
                        v.Add(new Voltage("VCC3V", 0, 150, 150));
                        v.Add(new Voltage("CPU VCore", 1, 47, 100));
                        v.Add(new Voltage("DIMM", 2, 47, 100));
                        v.Add(new Voltage("CPU VTT", 3, 24, 100));
                        v.Add(new Voltage("IOH Vcore", 4, 24, 100));
                        v.Add(new Voltage("+5V", 5, 51, 12));
                        v.Add(new Voltage("+12V", 6, 56, 6.8f));
                        v.Add(new Voltage("3VSB", 7, 150, 150));
                        v.Add(new Voltage("VBat", 8, 150, 150));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("VREG", 1));
                        t.Add(new Temperature("System", 2));
                        f.Add(new Fan("CPU Fan", 0));
                        f.Add(new Fan("Power Fan", 1));
                        f.Add(new Fan("Chassis Fan", 2));
                        break;

                    default:
                        v.Add(new Voltage("VCC3V", 0, 150, 150));
                        v.Add(new Voltage("CPU VCore", 1));
                        v.Add(new Voltage("Voltage #3", 2, true));
                        v.Add(new Voltage("Voltage #4", 3, true));
                        v.Add(new Voltage("Voltage #5", 4, true));
                        v.Add(new Voltage("Voltage #6", 5, true));
                        v.Add(new Voltage("Voltage #7", 6, true));
                        v.Add(new Voltage("VSB3V", 7, 150, 150));
                        v.Add(new Voltage("VBat", 8, 150, 150));
                        for (int i = 0; i < superIO.Temperatures.Length; i++)
                        {
                            t.Add(new Temperature("Temperature #" + (i + 1), i));
                        }
                        for (int i = 0; i < superIO.Fans.Length; i++)
                        {
                            f.Add(new Fan("Fan #" + (i + 1), i));
                        }
                        break;
                    }
                    break;

                default:
                    v.Add(new Voltage("VCC3V", 0, 150, 150));
                    v.Add(new Voltage("CPU VCore", 1));
                    v.Add(new Voltage("Voltage #3", 2, true));
                    v.Add(new Voltage("Voltage #4", 3, true));
                    v.Add(new Voltage("Voltage #5", 4, true));
                    v.Add(new Voltage("Voltage #6", 5, true));
                    v.Add(new Voltage("Voltage #7", 6, true));
                    v.Add(new Voltage("VSB3V", 7, 150, 150));
                    v.Add(new Voltage("VBat", 8, 150, 150));
                    for (int i = 0; i < superIO.Temperatures.Length; i++)
                    {
                        t.Add(new Temperature("Temperature #" + (i + 1), i));
                    }
                    for (int i = 0; i < superIO.Fans.Length; i++)
                    {
                        f.Add(new Fan("Fan #" + (i + 1), i));
                    }
                    break;
                }
                break;

            case Chip.W83627EHF:
                v.Add(new Voltage("CPU VCore", 0));
                v.Add(new Voltage("Voltage #2", 1, true));
                v.Add(new Voltage("AVCC", 2, 34, 34));
                v.Add(new Voltage("3VCC", 3, 34, 34));
                v.Add(new Voltage("Voltage #5", 4, true));
                v.Add(new Voltage("Voltage #6", 5, true));
                v.Add(new Voltage("Voltage #7", 6, true));
                v.Add(new Voltage("3VSB", 7, 34, 34));
                v.Add(new Voltage("VBAT", 8, 34, 34));
                v.Add(new Voltage("Voltage #10", 9, true));
                t.Add(new Temperature("CPU", 0));
                t.Add(new Temperature("Auxiliary", 1));
                t.Add(new Temperature("System", 2));
                f.Add(new Fan("System Fan", 0));
                f.Add(new Fan("CPU Fan", 1));
                f.Add(new Fan("Auxiliary Fan", 2));
                f.Add(new Fan("CPU Fan #2", 3));
                f.Add(new Fan("Auxiliary Fan #2", 4));
                break;

            case Chip.W83627DHG:
            case Chip.W83627DHGP:
            case Chip.W83667HG:
            case Chip.W83667HGB:
                switch (manufacturer)
                {
                case Manufacturer.ASRock:
                    switch (model)
                    {
                    case Model._880GMH_USB3: // W83627DHG-P
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("+3.3V", 3, 34, 34));
                        v.Add(new Voltage("+5V", 5, 15, 7.5f));
                        v.Add(new Voltage("+12V", 6, 56, 10));
                        v.Add(new Voltage("Standby +3.3V", 7, 34, 34));
                        v.Add(new Voltage("VBAT", 8, 34, 34));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("Motherboard", 2));
                        f.Add(new Fan("Chassis Fan", 0));
                        f.Add(new Fan("CPU Fan", 1));
                        f.Add(new Fan("Power Fan", 2));
                        break;

                    default:
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("Voltage #2", 1, true));
                        v.Add(new Voltage("AVCC", 2, 34, 34));
                        v.Add(new Voltage("3VCC", 3, 34, 34));
                        v.Add(new Voltage("Voltage #5", 4, true));
                        v.Add(new Voltage("Voltage #6", 5, true));
                        v.Add(new Voltage("Voltage #7", 6, true));
                        v.Add(new Voltage("3VSB", 7, 34, 34));
                        v.Add(new Voltage("VBAT", 8, 34, 34));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("Auxiliary", 1));
                        t.Add(new Temperature("System", 2));
                        f.Add(new Fan("System Fan", 0));
                        f.Add(new Fan("CPU Fan", 1));
                        f.Add(new Fan("Auxiliary Fan", 2));
                        f.Add(new Fan("CPU Fan #2", 3));
                        f.Add(new Fan("Auxiliary Fan #2", 4));
                        break;
                    }
                    break;

                case Manufacturer.ASUS:
                    switch (model)
                    {
                    case Model.P6X58D_E:        // W83667HG
                    case Model.Rampage_II_GENE: // W83667HG
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("+12V", 1, 11.5f, 1.91f));
                        v.Add(new Voltage("Analog +3.3V", 2, 34, 34));
                        v.Add(new Voltage("+3.3V", 3, 34, 34));
                        v.Add(new Voltage("+5V", 4, 15, 7.5f));
                        v.Add(new Voltage("Standby +3.3V", 7, 34, 34));
                        v.Add(new Voltage("VBAT", 8, 34, 34));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("Motherboard", 2));
                        f.Add(new Fan("Chassis Fan #1", 0));
                        f.Add(new Fan("CPU Fan", 1));
                        f.Add(new Fan("Power Fan", 2));
                        f.Add(new Fan("Chassis Fan #2", 3));
                        f.Add(new Fan("Chassis Fan #3", 4));
                        break;

                    case Model.Rampage_Extreme: // W83667HG
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("+12V", 1, 12, 2));
                        v.Add(new Voltage("Analog +3.3V", 2, 34, 34));
                        v.Add(new Voltage("+3.3V", 3, 34, 34));
                        v.Add(new Voltage("+5V", 4, 15, 7.5f));
                        v.Add(new Voltage("Standby +3.3V", 7, 34, 34));
                        v.Add(new Voltage("VBAT", 8, 34, 34));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("Motherboard", 2));
                        f.Add(new Fan("Chassis Fan #1", 0));
                        f.Add(new Fan("CPU Fan", 1));
                        f.Add(new Fan("Power Fan", 2));
                        f.Add(new Fan("Chassis Fan #2", 3));
                        f.Add(new Fan("Chassis Fan #3", 4));
                        break;

                    default:
                        v.Add(new Voltage("CPU VCore", 0));
                        v.Add(new Voltage("Voltage #2", 1, true));
                        v.Add(new Voltage("AVCC", 2, 34, 34));
                        v.Add(new Voltage("3VCC", 3, 34, 34));
                        v.Add(new Voltage("Voltage #5", 4, true));
                        v.Add(new Voltage("Voltage #6", 5, true));
                        v.Add(new Voltage("Voltage #7", 6, true));
                        v.Add(new Voltage("3VSB", 7, 34, 34));
                        v.Add(new Voltage("VBAT", 8, 34, 34));
                        t.Add(new Temperature("CPU", 0));
                        t.Add(new Temperature("Auxiliary", 1));
                        t.Add(new Temperature("System", 2));
                        f.Add(new Fan("System Fan", 0));
                        f.Add(new Fan("CPU Fan", 1));
                        f.Add(new Fan("Auxiliary Fan", 2));
                        f.Add(new Fan("CPU Fan #2", 3));
                        f.Add(new Fan("Auxiliary Fan #2", 4));
                        break;
                    }
                    break;

                default:
                    v.Add(new Voltage("CPU VCore", 0));
                    v.Add(new Voltage("Voltage #2", 1, true));
                    v.Add(new Voltage("AVCC", 2, 34, 34));
                    v.Add(new Voltage("3VCC", 3, 34, 34));
                    v.Add(new Voltage("Voltage #5", 4, true));
                    v.Add(new Voltage("Voltage #6", 5, true));
                    v.Add(new Voltage("Voltage #7", 6, true));
                    v.Add(new Voltage("3VSB", 7, 34, 34));
                    v.Add(new Voltage("VBAT", 8, 34, 34));
                    t.Add(new Temperature("CPU", 0));
                    t.Add(new Temperature("Auxiliary", 1));
                    t.Add(new Temperature("System", 2));
                    f.Add(new Fan("System Fan", 0));
                    f.Add(new Fan("CPU Fan", 1));
                    f.Add(new Fan("Auxiliary Fan", 2));
                    f.Add(new Fan("CPU Fan #2", 3));
                    f.Add(new Fan("Auxiliary Fan #2", 4));
                    break;
                }
                break;

            case Chip.W83627HF:
            case Chip.W83627THF:
            case Chip.W83687THF:
                v.Add(new Voltage("CPU VCore", 0));
                v.Add(new Voltage("Voltage #2", 1, true));
                v.Add(new Voltage("Voltage #3", 2, true));
                v.Add(new Voltage("AVCC", 3, 34, 51));
                v.Add(new Voltage("Voltage #5", 4, true));
                v.Add(new Voltage("5VSB", 5, 34, 51));
                v.Add(new Voltage("VBAT", 6));
                t.Add(new Temperature("CPU", 0));
                t.Add(new Temperature("Auxiliary", 1));
                t.Add(new Temperature("System", 2));
                f.Add(new Fan("System Fan", 0));
                f.Add(new Fan("CPU Fan", 1));
                f.Add(new Fan("Auxiliary Fan", 2));
                break;

            default:
                for (int i = 0; i < superIO.Voltages.Length; i++)
                {
                    v.Add(new Voltage("Voltage #" + (i + 1), i, true));
                }
                for (int i = 0; i < superIO.Temperatures.Length; i++)
                {
                    t.Add(new Temperature("Temperature #" + (i + 1), i));
                }
                for (int i = 0; i < superIO.Fans.Length; i++)
                {
                    f.Add(new Fan("Fan #" + (i + 1), i));
                }
                break;
            }

            const string formula = "Voltage = value + (value - Vf) * Ri / Rf.";

            foreach (Voltage voltage in v)
            {
                if (voltage.Index < superIO.Voltages.Length)
                {
                    Sensor sensor = new Sensor(voltage.Name, voltage.Index,
                                               voltage.Hidden, SensorType.Voltage, this, new [] {
                        new ParameterDescription("Ri [kΩ]", "Input resistance.\n" +
                                                 formula, voltage.Ri),
                        new ParameterDescription("Rf [kΩ]", "Reference resistance.\n" +
                                                 formula, voltage.Rf),
                        new ParameterDescription("Vf [V]", "Reference voltage.\n" +
                                                 formula, voltage.Vf)
                    }, settings);
                    voltages.Add(sensor);
                }
            }

            foreach (Temperature temperature in t)
            {
                if (temperature.Index < superIO.Temperatures.Length)
                {
                    Sensor sensor = new Sensor(temperature.Name, temperature.Index,
                                               SensorType.Temperature, this, new [] {
                        new ParameterDescription("Offset [°C]", "Temperature offset.", 0)
                    }, settings);
                    temperatures.Add(sensor);
                }
            }

            foreach (Fan fan in f)
            {
                if (fan.Index < superIO.Fans.Length)
                {
                    Sensor sensor = new Sensor(fan.Name, fan.Index, SensorType.Fan,
                                               this, settings);
                    fans.Add(sensor);
                }
            }
        }
コード例 #50
0
 public static Converter CreateConverter(SensorUnity expectedUnity, SensorUnity realUnity, Sensor sensor, Visualizer visualizer)
 {
     foreach (Type converterType in typeof(Converter).Assembly.GetTypes())
     {
         ConverterAttribute converterAttribute = (ConverterAttribute)converterType.GetCustomAttribute(typeof(ConverterAttribute));
         if (converterAttribute != null && converterAttribute.inputUnity == realUnity && converterAttribute.outputUnity == expectedUnity)
         {
             return((Converter)Activator.CreateInstance(converterType, sensor, visualizer));
         }
     }
     throw new Exception("There is no converter supporting this conversion, expected: " + expectedUnity.ToString() + ", real: " + realUnity);
 }
コード例 #51
0
    public void OnReceivingSensorAccess(Vehicle accessor, Sensor sensor, Track track)
    {
        if (sensor.sensorType == this.counterSensorType)
        {
            if (isSelfDefenseJamming == false || track.target == self)
            {
                switch (jamType)
                {
                case JamType.DistanceJamming:
                {
                    float jamStrengthAtDistance = GetJamStrengthAtDistance(accessor.position - self.position);
                    if (sensor.IsJamSuccessful(jamStrengthAtDistance))
                    {
                        var   sensorPosition      = accessor.position;
                        var   losVec              = track.position - sensorPosition;
                        float randomDistanceCoeff = UnityEngine.Random.Range(-jamStrength, jamStrength) + 1f;
                        var   falsePos            = losVec.magnitude * randomDistanceCoeff * losVec.normalized + sensorPosition;

                        track.position = falsePos;
                    }
                    break;
                }

                case JamType.PositionJamming:
                {
                    float jamStrengthAtDistance = GetJamStrengthAtDistance(accessor.position - self.position);
                    if (sensor.IsJamSuccessful(jamStrengthAtDistance))
                    {
                        float randomDistanceCoeff = UnityEngine.Random.Range(0, GetJamStrengthAtDistance(accessor.position - self.position)) + 1f;
                        var   falsePos            = track.position - self.velocity.magnitude * randomDistanceCoeff * self.velocity.normalized;

                        track.position = falsePos;
                    }
                    break;
                }

                case JamType.DatalinkJamming:
                {
                    var datalinkModules = accessor.GetComponents <DatalinkModule>();
                    if (datalinkModules != null && datalinkModules.Length > 0)
                    {
                        for (int i = 0; i < datalinkModules.Length; ++i)
                        {
                            DatalinkModule datalinkModule = datalinkModules[i];
                            datalinkModule.jamState += GetJamStrengthAtDistance(accessor.position - self.position);
                        }
                    }
                    break;
                }

                case JamType.FalseTarget:
                {
                    if (falseTrack == null || falseTrack.age > maxFalseTrackAge)
                    {
                        Vector3 falsePos   = self.position + UnityEngine.Random.insideUnitSphere * jamStrength;
                        Vector2 randCircle = UnityEngine.Random.insideUnitCircle;
                        falsePos.x += randCircle.x * jamStrength * 10f;
                        falsePos.z += randCircle.y * jamStrength * 10f;

                        Vector3 falseVel = UnityEngine.Random.insideUnitCircle.normalized * 200f;

                        falseVehicle          = new Vehicle();
                        falseVehicle.position = falsePos;
                        falseVehicle.speed    = 200f;
                        falseVehicle.pitch    = 0f;
                        falseVehicle.course   = UnityEngine.Random.Range(0f, 1f) * 360f;
                        falseVehicle.typeName = self.typeName;

                        falseTrack          = new Track(accessor, falseVehicle, TrackId.Unknown);
                        falseTrack.position = falsePos;
                        falseTrack.velocity = falseVehicle.velocity;
                    }
                    else
                    {
                        falseTrack.timeOfLastUpdate = Time.time;
                    }
                    break;
                }
                }
            }
        }
    }
コード例 #52
0
        private void Sensor_PointerEnter(object sender, PointerRoutedEventArgs e)
        {
            // No need to do anything if no event selected.
            if (_home.SelectedEventIndex < 0)
            {
                return;
            }
            // Update Layout
            Rectangle sensorRect = null;
            Sensor    sensor     = null;
            TextBlock sensorText = null;
            int       i          = 0;

            if (sender is Rectangle)
            {
                sensorRect = (Rectangle)sender;
                for (i = 0; i < canvasSensorList.Count; i++)
                {
                    if (canvasSensorList[i].Item2 == sensorRect)
                    {
                        sensor     = canvasSensorList[i].Item1;
                        sensorText = canvasSensorList[i].Item3;
                        break;
                    }
                }
            }
            else if (sender is TextBlock)
            {
                sensorText = (TextBlock)sender;
                for (i = 0; i < canvasSensorList.Count; i++)
                {
                    if (canvasSensorList[i].Item3 == sensorText)
                    {
                        sensor     = canvasSensorList[i].Item1;
                        sensorRect = canvasSensorList[i].Item2;
                        break;
                    }
                }
            }
            sensorDetail.Text  = "Name: " + sensor.name + "\n";
            sensorDetail.Text += "Type: " + sensor.type + "\n";
            sensorDetail.Text += "Description: \n" + sensor.description;
            int eventIndex = _home.SensorLastFireStat[sensor.name];

            if (eventIndex != -1)
            {
                sensorDetail.Text += (_home.SelectedEventIndex - eventIndex).ToString() + " events ago\n";
                sensorDetail.Text += "at " + _home.sensorEventCollection[eventIndex].TimeTag.ToString("H:mm:ss");
            }
            sensorDetail.Visibility = Visibility.Visible;
            double sensorDetail_x = Canvas.GetLeft(sensorRect) + sensorRect.ActualWidth;
            double sensorDetail_y = Canvas.GetTop(sensorRect) + sensorRect.ActualHeight;

            if (sensorDetail_x + sensorDetail.ActualWidth > sensorCanvas.ActualWidth)
            {
                sensorDetail_x = Canvas.GetLeft(sensorRect) - sensorDetail.ActualWidth;
            }
            if (sensorDetail_y + sensorDetail.ActualHeight > sensorCanvas.ActualHeight)
            {
                sensorDetail_y = Canvas.GetTop(sensorRect) - sensorDetail.ActualHeight;
            }
            Canvas.SetLeft(sensorDetail, sensorDetail_x);
            Canvas.SetTop(sensorDetail, sensorDetail_y);
            sensorCanvas.InvalidateArrange();
            sensorCanvas.UpdateLayout();
        }
コード例 #53
0
        public void ParseRadioBroadcast(string packet)
        {
            //parse the packet
            string[] tokens = packet.Split(',');
            string   id     = tokens[0];
            string   status = tokens[1];

            // find sensor with id
            Sensor sensor = null;

            for (IEnumerator enumerator = sensors.GetEnumerator(); enumerator.MoveNext();)
            {
                if (enumerator.Current == null)
                {
                    enumerator.MoveNext();
                }
                Sensor s = (Sensor)enumerator.Current;
                if (s.GetId() == id)
                {
                    sensor = s;
                    break;
                }
            }

            //trip or reset sensor
            if (sensor != null)
            {
                if ("TRIPPED" == status)
                {
                    sensor.Trip();
                }
                else
                {
                    sensor.Reset();
                }
            }

            //get the message from the sensor and display it
            string message = GetSensorMessage(sensor);

            view.ShowMessage(message);

            // sound the alarm if armed
            if (isArmed())
            {
                audibleAlarm.Sound();
            }

            // check if a sensor test is running and adjust status
            if (runningSensorTest)
            {
                if ("TRIPPED" == status)
                {
                    sensorTestStatusMap.Add(id, PASS);
                }

                // check to see if test is complete
                bool done = true;
                for (IEnumerator enumerator = sensorTestStatusMap.Values.GetEnumerator(); enumerator.MoveNext();)
                {
                    if (enumerator.Current == null)
                    {
                        enumerator.MoveNext();
                    }
                    string testStatus = (string)enumerator.Current;
                    if (PENDING == testStatus)
                    {
                        done = false;
                        break;
                    }
                }

                //terminate test if complete
                if (done)
                {
                    terminateSensorTest();
                }
            }
        }
コード例 #54
0
 // Use this for initialization
 void Start()
 {
     sensor = transform.Find("Sensor").gameObject.GetComponent <Sensor>();
     //distances that cause an immediate stop
     stopDistances = new List <int>();
     for (var i = 0; i < 39; i++)
     {
         stopDistances.Add(0);
     }
     for (var i = 0; i < 193; i++)
     {
         stopDistances.Add(300);
     }
     for (var i = 0; i < 39; i++)
     {
         stopDistances.Add(0);
     }
     //distances that cause a turn
     turnDistances = new List <int>();
     for (var i = 0; i < 39; i++)
     {
         turnDistances.Add(0);
     }
     for (var i = 0; i < 193; i++)
     {
         turnDistances.Add(500);
     }
     for (var i = 0; i < 39; i++)
     {
         turnDistances.Add(0);
     }
     //distances free for random left
     freeDistancesLeft = new List <int>();
     for (var i = 0; i < 39; i++)
     {
         freeDistancesLeft.Add(0);
     }
     for (var i = 0; i < 97; i++)
     {
         freeDistancesLeft.Add(550);
     }
     for (var i = 0; i < 96; i++)
     {
         freeDistancesLeft.Add(500);
     }
     for (var i = 0; i < 39; i++)
     {
         freeDistancesLeft.Add(0);
     }
     //distances free for random right
     freeDistancesRight = new List <int>();
     for (var i = 0; i < 39; i++)
     {
         freeDistancesRight.Add(0);
     }
     for (var i = 0; i < 96; i++)
     {
         freeDistancesRight.Add(500);
     }
     for (var i = 0; i < 97; i++)
     {
         freeDistancesRight.Add(550);
     }
     for (var i = 0; i < 39; i++)
     {
         freeDistancesRight.Add(0);
     }
 }
コード例 #55
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            try
            {
                base.OnCreate(savedInstanceState);
                SetContentView(Resource.Layout.AgoraVideoCallActivityLayout);

                GlobalContext = TabbedMainActivity.GetInstance();

                SensorManager = (SensorManager)GetSystemService(SensorService);
                Proximity     = SensorManager.GetDefaultSensor(SensorType.Proximity);

                UserId = Intent.GetStringExtra("UserID");
                Avatar = Intent.GetStringExtra("avatar");
                Name   = Intent.GetStringExtra("name");

                var dataCallId = Intent.GetStringExtra("CallID") ?? "Data not available";
                if (dataCallId != "Data not available" && !string.IsNullOrEmpty(dataCallId))
                {
                    CallId = dataCallId;

                    FromId = Intent.GetStringExtra("from_id");
                    Active = Intent.GetStringExtra("active");
                    var time = Intent.GetStringExtra("time");
                    Status   = Intent.GetStringExtra("status");
                    RoomName = Intent.GetStringExtra("room_name");
                    CallType = Intent.GetStringExtra("type");
                    Console.WriteLine(time);
                }

                SwitchCamButton = FindViewById <Button>(Resource.Id.switch_cam_button);
                MuteVideoButton = FindViewById <CircleButton>(Resource.Id.mute_video_button);
                EndCallButton   = FindViewById <CircleButton>(Resource.Id.end_call_button);
                MuteAudioButton = FindViewById <CircleButton>(Resource.Id.mute_audio_button);

                UserInfoviewContainer    = FindViewById <RelativeLayout>(Resource.Id.userInfoview_container);
                UserImageView            = FindViewById <ImageView>(Resource.Id.userImageView);
                UserNameTextView         = FindViewById <TextView>(Resource.Id.userNameTextView);
                NoteTextView             = FindViewById <TextView>(Resource.Id.noteTextView);
                PictureInToPictureButton = FindViewById <ImageView>(Resource.Id.pictureintopictureButton);

                if (!PackageManager.HasSystemFeature(PackageManager.FeaturePictureInPicture))
                {
                    PictureInToPictureButton.Visibility = ViewStates.Gone;
                }

                SwitchCamButton.Click          += Switch_cam_button_Click;
                MuteVideoButton.Click          += Mute_video_button_Click;
                EndCallButton.Click            += End_call_button_Click;
                MuteAudioButton.Click          += Mute_audio_button_Click;
                PictureInToPictureButton.Click += PictureInToPictureButton_Click;

                LoadUserInfo();

                if (CallType == "Agora_video_calling_start")
                {
                    Start_Call_Action("call");
                }
                else
                {
                    Start_Call_Action("recieve_call");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
コード例 #56
0
 public SsdSandforce(StorageInfo storageInfo, ISmart smart, string name, string firmwareRevision, int index, ISettings settings)
     : base(storageInfo, smart, name, firmwareRevision, "ssd", index, _smartAttributes, settings)
 {
     _writeAmplification = new Sensor("Write Amplification", 1, SensorType.Factor, this, settings);
 }
コード例 #57
0
 public void OnAccuracyChanged(Sensor sensor, [GeneratedEnum] SensorStatus accuracy)
 {
     //throw new NotImplementedException();
 }
コード例 #58
0
ファイル: MoverInspector.cs プロジェクト: BKGcode/ZombieDad
    public override void OnInspectorGUI()
    {
        if (Application.isPlaying)
        {
            GUILayout.Label("Mover settings can't be changed  in the inspector while the game is running.", EditorStyles.centeredGreyMiniLabel);
            return;
        }

        if (mover == null)
        {
            Setup();
            return;
        }

        GUILayout.Label("Mover Options", EditorStyles.boldLabel);

        Rect _space;

        EditorGUI.BeginChangeCheck();

        mover.stepHeightRatio = EditorGUILayout.Slider("Step Height Ratio", mover.stepHeightRatio, 0f, 1f);

        GUILayout.Label("Collider Options", EditorStyles.boldLabel);

        mover.colliderHeight    = EditorGUILayout.FloatField("Collider Height", mover.colliderHeight);
        mover.colliderThickness = EditorGUILayout.FloatField("Collider Thickness", mover.colliderThickness);
        mover.colliderOffset    = EditorGUILayout.Vector3Field("Collider Offset", mover.colliderOffset);

        if (EditorGUI.EndChangeCheck())
        {
            mover.RecalculateColliderDimensions();
            OnEditorVariableChanged();
        }

        GUILayout.Label("Sensor Options", EditorStyles.boldLabel);

        EditorGUI.BeginChangeCheck();

        mover.sensorType      = (Sensor.CastType)EditorGUILayout.EnumPopup("Sensor Type", mover.sensorType);
        mover.sensorLayermask = EditorGUILayout.MaskField("Layermask", mover.sensorLayermask, physicsLayers);

        mover.isInDebugMode = EditorGUILayout.Toggle("Debug Mode", mover.isInDebugMode);

        if (EditorGUI.EndChangeCheck())
        {
            OnEditorVariableChanged();
        }

        if (mover.sensorType == Sensor.CastType.RaycastArray)
        {
            GUILayout.Label("Advanced Options", EditorStyles.centeredGreyMiniLabel);
        }
        GUILayout.Space(5);

        if (mover.sensorType == Sensor.CastType.Raycast)
        {
        }
        else if (mover.sensorType == Sensor.CastType.Spherecast)
        {
        }
        else if (mover.sensorType == Sensor.CastType.RaycastArray)
        {
            if (raycastArrayPositions == null)
            {
                raycastArrayPositions = Sensor.GetRaycastStartPositions(mover.sensorArrayRows, mover.sensorArrayRayCount, mover.sensorArrayRowsAreOffset, 1f);
            }

            EditorGUI.BeginChangeCheck();

            mover.sensorArrayRayCount      = EditorGUILayout.IntSlider("Number", mover.sensorArrayRayCount, 3, 9);
            mover.sensorArrayRows          = EditorGUILayout.IntSlider("Rows", mover.sensorArrayRows, 1, 5);
            mover.sensorArrayRowsAreOffset = EditorGUILayout.Toggle("Offset Rows", mover.sensorArrayRowsAreOffset);

            if (EditorGUI.EndChangeCheck())
            {
                raycastArrayPositions = Sensor.GetRaycastStartPositions(mover.sensorArrayRows, mover.sensorArrayRayCount, mover.sensorArrayRowsAreOffset, 1f);
                OnEditorVariableChanged();
            }

            GUILayout.Space(5);

            _space = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Height(100));

            Rect background = new Rect(_space.x + (_space.width - _space.height) / 2f, _space.y, _space.height, _space.height);
            EditorGUI.DrawRect(background, Color.grey);

            float point_size = 3f;

            Vector2 center = new Vector2(background.x + background.width / 2f, background.y + background.height / 2f);

            if (raycastArrayPositions != null && raycastArrayPositions.Length != 0)
            {
                for (int i = 0; i < raycastArrayPositions.Length; i++)
                {
                    Vector2 position = center + new Vector2(raycastArrayPositions[i].x, raycastArrayPositions[i].z) * background.width / 2f * 0.9f;

                    EditorGUI.DrawRect(new Rect(position.x - point_size / 2f, position.y - point_size / 2f, point_size, point_size), Color.white);
                }
            }

            if (raycastArrayPositions != null && raycastArrayPositions.Length != 0)
            {
                GUILayout.Label("Number of rays = " + raycastArrayPositions.Length, EditorStyles.centeredGreyMiniLabel);
            }
        }
    }
コード例 #59
0
        public IntelCpu(int processorIndex, CpuId[][] cpuId, ISettings settings) : base(processorIndex, cpuId, settings)
        {
            // set tjMax
            float[] tjMax;
            switch (_family)
            {
            case 0x06:
            {
                switch (_model)
                {
                case 0x0F:         // Intel Core 2 (65nm)
                    _microArchitecture = MicroArchitecture.Core;
                    switch (_stepping)
                    {
                    case 0x06:             // B2
                        switch (_coreCount)
                        {
                        case 2:
                            tjMax = Floats(80 + 10);
                            break;

                        case 4:
                            tjMax = Floats(90 + 10);
                            break;

                        default:
                            tjMax = Floats(85 + 10);
                            break;
                        }
                        break;

                    case 0x0B:             // G0
                        tjMax = Floats(90 + 10);
                        break;

                    case 0x0D:             // M0
                        tjMax = Floats(85 + 10);
                        break;

                    default:
                        tjMax = Floats(85 + 10);
                        break;
                    }
                    break;

                case 0x17:         // Intel Core 2 (45nm)
                    _microArchitecture = MicroArchitecture.Core;
                    tjMax = Floats(100);
                    break;

                case 0x1C:         // Intel Atom (45nm)
                    _microArchitecture = MicroArchitecture.Atom;
                    switch (_stepping)
                    {
                    case 0x02:             // C0
                        tjMax = Floats(90);
                        break;

                    case 0x0A:             // A0, B0
                        tjMax = Floats(100);
                        break;

                    default:
                        tjMax = Floats(90);
                        break;
                    }
                    break;

                case 0x1A:         // Intel Core i7 LGA1366 (45nm)
                case 0x1E:         // Intel Core i5, i7 LGA1156 (45nm)
                case 0x1F:         // Intel Core i5, i7
                case 0x25:         // Intel Core i3, i5, i7 LGA1156 (32nm)
                case 0x2C:         // Intel Core i7 LGA1366 (32nm) 6 Core
                case 0x2E:         // Intel Xeon Processor 7500 series (45nm)
                case 0x2F:         // Intel Xeon Processor (32nm)
                    _microArchitecture = MicroArchitecture.Nehalem;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x2A:         // Intel Core i5, i7 2xxx LGA1155 (32nm)
                case 0x2D:         // Next Generation Intel Xeon, i7 3xxx LGA2011 (32nm)
                    _microArchitecture = MicroArchitecture.SandyBridge;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x3A:         // Intel Core i5, i7 3xxx LGA1155 (22nm)
                case 0x3E:         // Intel Core i7 4xxx LGA2011 (22nm)
                    _microArchitecture = MicroArchitecture.IvyBridge;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x3C:         // Intel Core i5, i7 4xxx LGA1150 (22nm)
                case 0x3F:         // Intel Xeon E5-2600/1600 v3, Core i7-59xx
                // LGA2011-v3, Haswell-E (22nm)
                case 0x45:         // Intel Core i5, i7 4xxxU (22nm)
                case 0x46:
                    _microArchitecture = MicroArchitecture.Haswell;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x3D:         // Intel Core M-5xxx (14nm)
                case 0x47:         // Intel i5, i7 5xxx, Xeon E3-1200 v4 (14nm)
                case 0x4F:         // Intel Xeon E5-26xx v4
                case 0x56:         // Intel Xeon D-15xx
                    _microArchitecture = MicroArchitecture.Broadwell;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x36:         // Intel Atom S1xxx, D2xxx, N2xxx (32nm)
                    _microArchitecture = MicroArchitecture.Atom;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x37:         // Intel Atom E3xxx, Z3xxx (22nm)
                case 0x4A:
                case 0x4D:         // Intel Atom C2xxx (22nm)
                case 0x5A:
                case 0x5D:
                    _microArchitecture = MicroArchitecture.Silvermont;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x4E:
                case 0x5E:         // Intel Core i5, i7 6xxxx LGA1151 (14nm)
                case 0x55:         // Intel Core X i7, i9 7xxx LGA2066 (14nm)
                    _microArchitecture = MicroArchitecture.Skylake;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x4C:         // Intel Airmont (Cherry Trail, Braswell)
                    _microArchitecture = MicroArchitecture.Airmont;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x8E:         // Intel Core i5, i7 7xxxx (14nm) (Kaby Lake) and 8xxxx (14nm++) (Coffee Lake)
                case 0x9E:
                    _microArchitecture = MicroArchitecture.KabyLake;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x5C:         // Goldmont (Apollo Lake)
                case 0x5F:         // (Denverton)
                    _microArchitecture = MicroArchitecture.Goldmont;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x7A:         // Goldmont plus (Gemini Lake)
                    _microArchitecture = MicroArchitecture.GoldmontPlus;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x66:         // Intel Core i3 8xxx (10nm) (Cannon Lake)
                    _microArchitecture = MicroArchitecture.CannonLake;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x7D:         // Intel Core i3, i5, i7 10xxx (10nm) (Ice Lake)
                case 0x7E:
                case 0x6A:         // Ice Lake server
                case 0x6C:
                    _microArchitecture = MicroArchitecture.IceLake;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0xA6:         // Intel Core i3, i5, i7 10xxxU (14nm)
                    _microArchitecture = MicroArchitecture.CometLake;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x86:         // Tremont (10nm) (Elkhart Lake, Skyhawk Lake)
                    _microArchitecture = MicroArchitecture.Tremont;
                    tjMax = GetTjMaxFromMsr();
                    break;

                case 0x8C:         // Tiger Lake (10nm)
                case 0x8D:
                    _microArchitecture = MicroArchitecture.TigerLake;
                    tjMax = GetTjMaxFromMsr();
                    break;

                default:
                    _microArchitecture = MicroArchitecture.Unknown;
                    tjMax = Floats(100);
                    break;
                }
            }
            break;

            case 0x0F:
            {
                switch (_model)
                {
                case 0x00:         // Pentium 4 (180nm)
                case 0x01:         // Pentium 4 (130nm)
                case 0x02:         // Pentium 4 (130nm)
                case 0x03:         // Pentium 4, Celeron D (90nm)
                case 0x04:         // Pentium 4, Pentium D, Celeron D (90nm)
                case 0x06:         // Pentium 4, Pentium D, Celeron D (65nm)
                    _microArchitecture = MicroArchitecture.NetBurst;
                    tjMax = Floats(100);
                    break;

                default:
                    _microArchitecture = MicroArchitecture.Unknown;
                    tjMax = Floats(100);
                    break;
                }
            }
            break;

            default:
                _microArchitecture = MicroArchitecture.Unknown;
                tjMax = Floats(100);
                break;
            }
            // set timeStampCounterMultiplier
            switch (_microArchitecture)
            {
            case MicroArchitecture.Atom:
            case MicroArchitecture.Core:
            case MicroArchitecture.NetBurst:
            {
                if (Ring0.ReadMsr(IA32_PERF_STATUS, out uint _, out uint edx))
                {
                    _timeStampCounterMultiplier = ((edx >> 8) & 0x1f) + 0.5 * ((edx >> 14) & 1);
                }

                break;
            }

            case MicroArchitecture.Airmont:
            case MicroArchitecture.Broadwell:
            case MicroArchitecture.CannonLake:
            case MicroArchitecture.CometLake:
            case MicroArchitecture.Goldmont:
            case MicroArchitecture.GoldmontPlus:
            case MicroArchitecture.Haswell:
            case MicroArchitecture.IceLake:
            case MicroArchitecture.IvyBridge:
            case MicroArchitecture.KabyLake:
            case MicroArchitecture.Nehalem:
            case MicroArchitecture.SandyBridge:
            case MicroArchitecture.Silvermont:
            case MicroArchitecture.Skylake:
            case MicroArchitecture.TigerLake:
            case MicroArchitecture.Tremont:
            {
                if (Ring0.ReadMsr(MSR_PLATFORM_INFO, out uint eax, out uint _))
                {
                    _timeStampCounterMultiplier = (eax >> 8) & 0xff;
                }
            }
            break;

            default:
                _timeStampCounterMultiplier = 0;
                break;
            }

            int coreSensorId = 0;

            // check if processor supports a digital thermal sensor at core level
            if (cpuId[0][0].Data.GetLength(0) > 6 && (cpuId[0][0].Data[6, 0] & 1) != 0 && _microArchitecture != MicroArchitecture.Unknown)
            {
                _coreTemperatures = new Sensor[_coreCount];
                for (int i = 0; i < _coreTemperatures.Length; i++)
                {
                    _coreTemperatures[i] = new Sensor(CoreString(i),
                                                      coreSensorId,
                                                      SensorType.Temperature,
                                                      this,
                                                      new[]
                    {
                        new ParameterDescription("TjMax [°C]", "TjMax temperature of the core sensor.\n" + "Temperature = TjMax - TSlope * Value.", tjMax[i]),
                        new ParameterDescription("TSlope [°C]", "Temperature slope of the digital thermal sensor.\n" + "Temperature = TjMax - TSlope * Value.", 1)
                    },
                                                      settings);

                    ActivateSensor(_coreTemperatures[i]);
                    coreSensorId++;
                }
            }
            else
            {
                _coreTemperatures = new Sensor[0];
            }

            // check if processor supports a digital thermal sensor at package level
            if (cpuId[0][0].Data.GetLength(0) > 6 && (cpuId[0][0].Data[6, 0] & 0x40) != 0 && _microArchitecture != MicroArchitecture.Unknown)
            {
                _packageTemperature = new Sensor("CPU Package",
                                                 coreSensorId,
                                                 SensorType.Temperature,
                                                 this,
                                                 new[]
                {
                    new ParameterDescription("TjMax [°C]", "TjMax temperature of the package sensor.\n" + "Temperature = TjMax - TSlope * Value.", tjMax[0]),
                    new ParameterDescription("TSlope [°C]", "Temperature slope of the digital thermal sensor.\n" + "Temperature = TjMax - TSlope * Value.", 1)
                },
                                                 settings);

                ActivateSensor(_packageTemperature);
                coreSensorId++;
            }

            // dist to tjmax sensor
            if (cpuId[0][0].Data.GetLength(0) > 6 && (cpuId[0][0].Data[6, 0] & 1) != 0 && _microArchitecture != MicroArchitecture.Unknown)
            {
                _distToTjMaxTemperatures = new Sensor[_coreCount];
                for (int i = 0; i < _distToTjMaxTemperatures.Length; i++)
                {
                    _distToTjMaxTemperatures[i] = new Sensor(CoreString(i) + " Distance to TjMax", coreSensorId, SensorType.Temperature, this, settings);
                    ActivateSensor(_distToTjMaxTemperatures[i]);
                    coreSensorId++;
                }
            }
            else
            {
                _distToTjMaxTemperatures = new Sensor[0];
            }

            //core temp avg and max value
            //is only available when the cpu has more than 1 core
            if (cpuId[0][0].Data.GetLength(0) > 6 && (cpuId[0][0].Data[6, 0] & 0x40) != 0 && _microArchitecture != MicroArchitecture.Unknown && _coreCount > 1)
            {
                _coreMax = new Sensor("Core Max", coreSensorId, SensorType.Temperature, this, settings);
                ActivateSensor(_coreMax);
                coreSensorId++;

                _coreAvg = new Sensor("Core Average", coreSensorId, SensorType.Temperature, this, settings);
                ActivateSensor(_coreAvg);
            }
            else
            {
                _coreMax = null;
                _coreAvg = null;
            }

            _busClock   = new Sensor("Bus Speed", 0, SensorType.Clock, this, settings);
            _coreClocks = new Sensor[_coreCount];
            for (int i = 0; i < _coreClocks.Length; i++)
            {
                _coreClocks[i] = new Sensor(CoreString(i), i + 1, SensorType.Clock, this, settings);
                if (HasTimeStampCounter && _microArchitecture != MicroArchitecture.Unknown)
                {
                    ActivateSensor(_coreClocks[i]);
                }
            }

            if (_microArchitecture == MicroArchitecture.Airmont ||
                _microArchitecture == MicroArchitecture.Broadwell ||
                _microArchitecture == MicroArchitecture.CannonLake ||
                _microArchitecture == MicroArchitecture.CometLake ||
                _microArchitecture == MicroArchitecture.Goldmont ||
                _microArchitecture == MicroArchitecture.GoldmontPlus ||
                _microArchitecture == MicroArchitecture.Haswell ||
                _microArchitecture == MicroArchitecture.IceLake ||
                _microArchitecture == MicroArchitecture.IvyBridge ||
                _microArchitecture == MicroArchitecture.KabyLake ||
                _microArchitecture == MicroArchitecture.SandyBridge ||
                _microArchitecture == MicroArchitecture.Silvermont ||
                _microArchitecture == MicroArchitecture.Skylake ||
                _microArchitecture == MicroArchitecture.TigerLake ||
                _microArchitecture == MicroArchitecture.Tremont)
            {
                _powerSensors       = new Sensor[_energyStatusMsrs.Length];
                _lastEnergyTime     = new DateTime[_energyStatusMsrs.Length];
                _lastEnergyConsumed = new uint[_energyStatusMsrs.Length];

                if (Ring0.ReadMsr(MSR_RAPL_POWER_UNIT, out uint eax, out uint _))
                {
                    switch (_microArchitecture)
                    {
                    case MicroArchitecture.Silvermont:
                    case MicroArchitecture.Airmont:
                        _energyUnitMultiplier = 1.0e-6f * (1 << (int)((eax >> 8) & 0x1F));
                        break;

                    default:
                        _energyUnitMultiplier = 1.0f / (1 << (int)((eax >> 8) & 0x1F));
                        break;
                    }
                }

                if (_energyUnitMultiplier != 0)
                {
                    string[] powerSensorLabels = { "CPU Package", "CPU Cores", "CPU Graphics", "CPU Memory" };

                    for (int i = 0; i < _energyStatusMsrs.Length; i++)
                    {
                        if (!Ring0.ReadMsr(_energyStatusMsrs[i], out eax, out uint _))
                        {
                            continue;
                        }


                        _lastEnergyTime[i]     = DateTime.UtcNow;
                        _lastEnergyConsumed[i] = eax;
                        _powerSensors[i]       = new Sensor(powerSensorLabels[i],
                                                            i,
                                                            SensorType.Power,
                                                            this,
                                                            settings);

                        ActivateSensor(_powerSensors[i]);
                    }
                }
            }

            Update();
        }