public CC2541Sensor()
     : base()
 {
     accelerometer = new Accelerometer();
     humidity = new HumiditySensor();
     pressure = new PressureSensor();
     temperature = new IRTemperatureSensor();
     key = new SimpleKeyService();
     accelerometer.SensorValueChanged += CC2541Sensor_SensorValueChanged;
     humidity.SensorValueChanged += CC2541Sensor_SensorValueChanged;
     pressure.SensorValueChanged += CC2541Sensor_SensorValueChanged;
     temperature.SensorValueChanged += CC2541Sensor_SensorValueChanged;
     key.SensorValueChanged += CC2541Sensor_SensorValueChanged;
 }
Exemple #2
0
        private void CC2541Sensor_SensorValueChanged(object sender, SensorValueChangedEventArgs e)
        {
            switch (e.Origin)
            {
            case SensorName.Accelerometer:
                double[] accValues = Accelerometer.CalculateCoordinates(e.RawData, 1 / 64.0);
                lock (lastSensorReading)
                {
                    lastSensorReading.AccelX = (float)accValues[0];
                    lastSensorReading.AccelY = (float)accValues[1];
                    lastSensorReading.AccelZ = (float)accValues[2];
                }
                break;

            case SensorName.HumiditySensor:
                double rh = HumiditySensor.CalculateHumidityInPercent(e.RawData);
                lock (lastSensorReading)
                {
                    lastSensorReading.Humidity = rh;
                }
                break;

            case SensorName.PressureSensor:
                double hp = (PressureSensor.CalculatePressure(e.RawData, pressure.CalibrationData) / 100);
                lock (lastSensorReading)
                {
                    lastSensorReading.Pressure = hp;
                }
                break;

            case SensorName.SimpleKeyService:
                bool leftKey = false;
                if (SimpleKeyService.LeftKeyHit(e.RawData))
                {
                    Debug.WriteLine("leftKey");
                    leftKey = true;
                }
                bool rightKey = false;
                if (SimpleKeyService.RightKeyHit(e.RawData))
                {
                    Debug.WriteLine("rightKey");
                    rightKey = true;
                }
                lock (lastSensorReading)
                {
                    lastSensorReading.LeftKey  = leftKey;
                    lastSensorReading.RightKey = rightKey;
                }
                break;

            case SensorName.TemperatureSensor:
                double ambient = IRTemperatureSensor.CalculateAmbientTemperature(e.RawData, TemperatureScale.Celsius);
                double target  = IRTemperatureSensor.CalculateTargetTemperature(e.RawData, ambient, TemperatureScale.Celsius);
                lock (lastSensorReading)
                {
                    lastSensorReading.ATemperature = ambient;
                    lastSensorReading.OTemperature = target;
                }
                break;
            }
        }