public CC2650Sensor() : base() { accelerometer = new Accelerometer(); humidity = new HumiditySensor(); light = new LightSensor(); pressure = new PressureSensor(); temperature = new IRTemperatureSensor(); battery = new BatteryLevel(); key = new SimpleKeyService(); io = new IOService(); accelerometer.SensorValueChanged += CC2650Sensor_SensorValueChanged; humidity.SensorValueChanged += CC2650Sensor_SensorValueChanged; light.SensorValueChanged += CC2650Sensor_SensorValueChanged; pressure.SensorValueChanged += CC2650Sensor_SensorValueChanged; temperature.SensorValueChanged += CC2650Sensor_SensorValueChanged; battery.SensorValueChanged += CC2650Sensor_SensorValueChanged; key.SensorValueChanged += CC2650Sensor_SensorValueChanged; }
public override async void Initialize() { Debug.WriteLine("*CC2650Sensor::Initialize: enter"); try { if (await accelerometer.Initialize(accelerometer.SensorServiceUuid)) { await accelerometer.EnableSensor(); await accelerometer.EnableNotifications(); Debug.WriteLine("Accelerometer enabled"); } else { Debug.WriteLine("Accelerometer doesn't exists"); } if (await humidity.Initialize(humidity.SensorServiceUuid)) { await humidity.EnableSensor(); await humidity.EnableNotifications(); Debug.WriteLine("Humidity enabled"); } else { Debug.WriteLine("Humidity doesn't exists"); } if (await light.Initialize(light.SensorServiceUuid)) { await light.EnableSensor(); await light.EnableNotifications(); Debug.WriteLine("Lightness enabled"); } else { Debug.WriteLine("Lightness doesn't exists"); } if (await pressure.Initialize(pressure.SensorServiceUuid)) { await pressure.EnableSensor(); await pressure.EnableNotifications(); Debug.WriteLine("Pressure enabled"); } else { Debug.WriteLine("Pressure doesn't exists"); } if (await temperature.Initialize(temperature.SensorServiceUuid)) { await temperature.EnableSensor(); await temperature.EnableNotifications(); Debug.WriteLine("Temperature enabled"); } else { Debug.WriteLine("Temperature doesn't exists"); } if (await key.Initialize(key.SensorServiceUuid)) { await key.EnableSensor(); await key.EnableNotifications(); Debug.WriteLine("Simple Key Service enabled"); } else { Debug.WriteLine("Simple Key doesn't exists"); } if (await battery.Initialize(battery.SensorServiceUuid)) { await battery.Setup(); byte[] bytes = await BatteryLevel.GetLevel(); double bl = BatteryLevel.CalculateBatteryInPercent(bytes); Debug.WriteLine("Battery Level Service enabled=" + (int)bl); } else { Debug.WriteLine("Battery Level doesn't exists"); } if (await io.Initialize(io.SensorServiceUuid)) { await io.EnableSensor(); Debug.WriteLine("IO Service enabled"); } else { Debug.WriteLine("IO Service doesn't exists"); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } Debug.WriteLine("*CC2650Sensor::Initialize: exit"); InitializedStatus = true; }
private void CC2650Sensor_SensorValueChanged(object sender, SensorValueChangedEventArgs e) { //Debug.WriteLine("*CC2650Sensor_SensorValueChanged:" + e.Origin); switch (e.Origin) { case SensorName.Accelerometer: float[] accValues = Accelerometer.CalculateCoordinates(e.RawData, AccelRange); lock (lastSensorReading) { lastSensorReading.AccelX = accValues[0]; lastSensorReading.AccelY = accValues[1]; lastSensorReading.AccelZ = accValues[2]; lastSensorReading.GyroX = accValues[3]; lastSensorReading.GyroY = accValues[4]; lastSensorReading.GyroZ = accValues[5]; lastSensorReading.MagX = accValues[6]; lastSensorReading.MagY = accValues[7]; lastSensorReading.MagZ = accValues[8]; } break; case SensorName.HumiditySensor: double rh = HumiditySensor.CalculateHumidityInPercent(e.RawData); double rt = HumiditySensor.CalculateHumidityTempareture(e.RawData, TemparetureScale); lock (lastSensorReading) { lastSensorReading.Humidity = rh; lastSensorReading.HTemperature = rt; } break; case SensorName.LightSensor: double rl = LightSensor.CalculateLightnessInLux(e.RawData); lock (lastSensorReading) { lastSensorReading.Lightness = rl; } //Special service for Battery here! Task <byte[]> task = Task.Run(() => BatteryLevel.GetLevel()); byte[] bytes = task.Result; if (bytes != null) { double bl = BatteryLevel.CalculateBatteryInPercent(bytes); //Debug.WriteLine("Battery Level:" + (int) bl); lock (lastSensorReading) { lastSensorReading.BatteryLevel = bl; } } break; case SensorName.PressureSensor: double hp = (PressureSensor.CalculatePressure(e.RawData)); double ht = (PressureSensor.CalculatePressureTempareture(e.RawData, TemparetureScale)); lock (lastSensorReading) { lastSensorReading.Pressure = hp; lastSensorReading.PTemperature = ht; } break; case SensorName.BatteryLevel: Debug.WriteLine("Battery Level Service is not here."); break; case SensorName.SimpleKeyService: bool leftKey = false; if (SimpleKeyService.LeftKeyHit(e.RawData)) { leftKey = true; //Debug.WriteLine("leftKey"); } bool rightKey = false; if (SimpleKeyService.RightKeyHit(e.RawData)) { rightKey = true; //Debug.WriteLine("rightKey"); } lock (lastSensorReading) { lastSensorReading.LeftKey = leftKey; lastSensorReading.RightKey = rightKey; } break; case SensorName.TemperatureSensor: double ambient = IRTemperatureSensor.CalculateAmbientTemperature(e.RawData, TemparetureScale); double target = IRTemperatureSensor.CalculateTargetTemperature(e.RawData, ambient, TemparetureScale); lock (lastSensorReading) { lastSensorReading.ATemperature = ambient; lastSensorReading.OTemperature = target; } break; } }