public static IDeviceFactory GetHidDeviceFactory(
     this FilterDeviceDefinition filterDeviceDefinition,
     ILoggerFactory loggerFactory,
     Func <Report, TransferResult> readReportTransform = null,
     WriteReportTransform writeReportTransform         = null)
 => filterDeviceDefinition.CreateUwpHidDeviceFactory(
     loggerFactory,
     readReportTransform: readReportTransform,
     writeReportTransform: writeReportTransform);
Ejemplo n.º 2
0
        public async Task TestWriteAndReadFromTemperHid()
        {
            //Send the request part of the Message Contract
            var request = new byte[9] {
                0x00, 0x01, 0x80, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00
            };

            var filterDeviceDefinition = new FilterDeviceDefinition(vendorId: 0x413d, productId: 0x2107, usagePage: 65280);

            var integrationTester = new IntegrationTester(
#if WINDOWS_UWP
                filterDeviceDefinition.CreateUwpHidDeviceFactory(loggerFactory));
#else
                filterDeviceDefinition.GetHidDeviceFactory(loggerFactory));
#endif
            await integrationTester.TestAsync(request, (result, device) =>
            {
                Assert.IsTrue(device.IsInitialized);

                var temperatureTimesOneHundred = (result.Data[4] & 0xFF) + (result.Data[3] << 8);
                var temp = Math.Round(temperatureTimesOneHundred / 100.0m, 2, MidpointRounding.ToEven);

                //I think my room should pretty much always be between these temperatures
                Assert.IsTrue(temp is > 10 and < 35);

                var windowsHidDevice = (HidDevice)device;
#if WINDOWS_UWP
#else
                //TODO: Share these with UWP
                Assert.AreEqual(TemperBufferSize, device.ConnectedDeviceDefinition.ReadBufferSize);
                Assert.AreEqual(TemperBufferSize, device.ConnectedDeviceDefinition.WriteBufferSize);
                Assert.AreEqual(TemperBufferSize, windowsHidDevice.ReadBufferSize);
                Assert.AreEqual(TemperBufferSize, windowsHidDevice.WriteBufferSize);
#endif
                return(Task.FromResult(true));
            }, TemperBufferSize);
        }