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 = accValues[0]; lastSensorReading.AccelY = accValues[1]; lastSensorReading.AccelZ = 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)) { leftKey = true; } bool rightKey = false; if (SimpleKeyService.RightKeyHit(e.RawData)) { 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; } }
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; }