public void Parse_InvalidDataFormat_ExceptionThrown() { string rawData = "01-80-01-00-00-00-00-80-01-80-01-80-01-00-00-00-00-00-CB-B8-33-4C-88-4F"; var bytes = ConvertStringBytesToByteArray(rawData); RuuviTag.Parse(bytes); }
public async Task ReadDeviceDataAsync_RuuviTagFound_ReturnData() { // Arrange var numberFormatInfo = new NumberFormatInfo() { NumberDecimalSeparator = "." }; const string ruuviTagAddress = "testAddress"; var sensorDevice = new SensorDevice { SensorDeviceTypeId = Type.SensorDeviceTypeId.RuuviTag, Id = "SensorDevice1", Address = ruuviTagAddress }; var ruuviTag = new RuuviTag() { AccelerationX = 0.123, AccelerationY = 0.564, AccelerationZ = -0.153, AirPressure = 1060, BatteryVoltage = 2.11, DataFormat = 5, Humidity = 77, MacAddress = ruuviTagAddress, MeasurementSequenceNumber = 22, MovementCounter = 123, Temperature = 33.3, TxPower = 3 }; _bleReaderMock.Setup(b => b.GetManufacturerDataAsync <RuuviTag>(ruuviTagAddress)).ReturnsAsync(ruuviTag); var deviceDataReader = _serviceProvider.GetService <DeviceDataReader.DeviceDataReader>(); // Act var measurementList = await deviceDataReader.ReadDeviceDataAsync(sensorDevice); // Assert Assert.AreEqual(8, measurementList.Count, "Amount of returned measurements is not correct"); Assert.AreEqual(ruuviTag.AccelerationX.Value.ToString(numberFormatInfo), measurementList.First(m => m.SensorId.Equals("AccelerationX", StringComparison.OrdinalIgnoreCase)).Value, "Value of AccelerationX is not correct"); Assert.AreEqual(ruuviTag.AccelerationY.Value.ToString(numberFormatInfo), measurementList.First(m => m.SensorId.Equals("AccelerationY", StringComparison.OrdinalIgnoreCase)).Value, "Value of AccelerationY is not correct"); Assert.AreEqual(ruuviTag.AccelerationZ.Value.ToString(numberFormatInfo), measurementList.First(m => m.SensorId.Equals("AccelerationZ", StringComparison.OrdinalIgnoreCase)).Value, "Value of AccelerationZ is not correct"); Assert.AreEqual(ruuviTag.AirPressure.Value.ToString(numberFormatInfo), measurementList.First(m => m.SensorId.Equals("Pressure", StringComparison.OrdinalIgnoreCase)).Value, "Value of Pressure is not correct"); Assert.AreEqual(ruuviTag.BatteryVoltage.Value.ToString(numberFormatInfo), measurementList.First(m => m.SensorId.Equals("BatteryVoltage", StringComparison.OrdinalIgnoreCase)).Value, "Value of BatteryVoltage is not correct"); Assert.AreEqual(ruuviTag.Humidity.Value.ToString(numberFormatInfo), measurementList.First(m => m.SensorId.Equals("Humidity", StringComparison.OrdinalIgnoreCase)).Value, "Value of Humidity is not correct"); Assert.AreEqual(ruuviTag.Temperature.Value.ToString(numberFormatInfo), measurementList.First(m => m.SensorId.Equals("Temperature", StringComparison.OrdinalIgnoreCase)).Value, "Value of Temperature is not correct"); Assert.AreEqual(ruuviTag.MovementCounter.Value.ToString(numberFormatInfo), measurementList.First(m => m.SensorId.Equals("MovementCounter", StringComparison.OrdinalIgnoreCase)).Value, "Value of MovementCounter is not correct"); }
private void CheckV4Data(byte[] bytes, double temperature, double humidity, double airPressure) { var data = RuuviTag.Parse(bytes); Assert.AreEqual(temperature, data.Temperature, "Temperature"); Assert.AreEqual(humidity, data.Humidity, "Humidity"); Assert.AreEqual(airPressure, data.AirPressure, "AirPressure"); Assert.IsNull(data.AccelerationX, "Acceleration X"); Assert.IsNull(data.AccelerationY, "Acceleration Y"); Assert.IsNull(data.AccelerationZ, "Acceleration Z"); Assert.IsNull(data.BatteryVoltage, "Battery voltage"); Assert.IsNull(data.TxPower, "TX power"); Assert.IsNull(data.MovementCounter, "Movement counter"); Assert.IsNull(data.MeasurementSequenceNumber, "Measurement sequence"); Assert.IsNull(data.MacAddress, "MAC address"); }
/// <inheritdoc cref="IBleReader"/> public async Task <T> GetManufacturerDataAsync <T>(string macAddress) { var manufacturerData = await ReadDeviceDataAsync(macAddress); if (manufacturerData != null) { if (typeof(T) == typeof(RuuviTag)) { return((T)Convert.ChangeType(RuuviTag.Parse(manufacturerData.Data), typeof(T))); } // Add support for parsing data of other device types else { throw new UnsupportedDeviceTypeException($"Support for getting manufacturer data of type '{typeof(T).ToString()}' has not been implemented"); } } return(default(T)); }