<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Device.Net</name>
    </assembly>
    <members>
        <member name="M:Device.Net.AsyncExtensions.FirstOrDefaultAsync``1(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Threading.Tasks.Task{System.Boolean}},System.Threading.CancellationToken)">
            <summary>
            TODO: Why do I need to do this? Why doesn't linq have this?
            </summary>
        </member>
        <member name="T:Device.Net.ConnectedDeviceDefinition">
            <summary>
            Represents the definition of a device that has been physically connected and has a DeviceId
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.DeviceId">
            <summary>
            The device Id or path specific to the platform for the device
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.DeviceType">
            <summary>
            The type of device interface
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.VendorId">
            <summary>
            Vendor ID
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.ProductId">
            <summary>
            Product Id
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.Label">
            <summary>
            Freeform tag to be used as needed
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.UsagePage">
            <summary>
            Used to further filter down device definitions on some platforms
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.ProductName">
            <summary>
            The name of the device product according to the Manufacturer
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.Manufacturer">
            <summary>
            Name of the device's manufacturer
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.SerialNumber">
            <summary>
            Unique serial number of the physical device
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.Usage">
            <summary>
            
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.VersionNumber">
            <summary>
            Device version number
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.WriteBufferSize">
            <summary>
            The maximum size of data to be written to the device
            </summary>
        </member>
        <member name="P:Device.Net.ConnectedDeviceDefinition.ReadBufferSize">
            <summary>
            The maximum size of data to be read from the device
            </summary>
        </member>
        <member name="T:Device.Net.DeviceBase">
            <summary>
            Base class for all devices
            </summary>
        </member>
        <member name="M:Device.Net.DeviceExtensions.Aggregate(System.Collections.Generic.IList{Device.Net.IDeviceFactory},Microsoft.Extensions.Logging.ILoggerFactory)">
            <summary>
            Creates a new <see cref="T:Device.Net.IDeviceFactory"/> that contains with the existing deviceFactories
            </summary>
            <param name="deviceFactories"></param>
            <param name="loggerFactory"></param>
            <returns></returns>
        </member>
        <member name="M:Device.Net.DeviceExtensions.IsDefinitionMatch(Device.Net.FilterDeviceDefinition,Device.Net.ConnectedDeviceDefinition,Device.Net.DeviceType)">
            <summary>
            Compares a <see cref="T:Device.Net.ConnectedDeviceDefinition"/> with a <see cref="T:Device.Net.FilterDeviceDefinition"/>
            </summary>
            <param name="filterDevice"></param>
            <param name="actualDevice"></param>
            <param name="deviceType"></param>
            <returns>True if the filterDevice matches the actualDevice</returns>
        </member>
        <member name="M:Device.Net.DeviceFactory.#ctor(Microsoft.Extensions.Logging.ILoggerFactory,Device.Net.GetConnectedDeviceDefinitionsAsync,Device.Net.GetDeviceAsync,System.Func{Device.Net.ConnectedDeviceDefinition,System.Threading.CancellationToken,System.Threading.Tasks.Task{System.Boolean}})">
            <summary>
            Constructs a DeviceFactory
            </summary>
            <param name="loggerFactory">The factory for creating new loggers for each device</param>
            <param name="getConnectedDevicesAsync">A delegate that returns matching connected device definitions</param>
            <param name="getDevice">A delegate to construct the device based on the specified connected device definition</param>
            <param name="supportsDevice">A delegate that returns whether or not this factory supports the connected device</param>
        </member>
        <member name="T:Device.Net.DeviceListener">
            <summary>
            Handles connection of devices. This is not the recommended approach. Please use DeviceManager where possible. Documentation href="https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.iloggerfactory" 
            </summary>
        </member>
        <member name="F:Device.Net.DeviceListener._CreatedDevicesByDefinition">
            <summary>
            This is the list of Devices by their filter definition. Note this is not actually keyed by the connected definition.
            </summary>
        </member>
        <member name="M:Device.Net.DeviceListener.#ctor(Device.Net.IDeviceFactory,System.Nullable{System.Int32},Microsoft.Extensions.Logging.ILoggerFactory)">
            <summary>
            Handles connecting to and disconnecting from a set of potential devices by their definition
            </summary>
        </member>
        <member name="M:Device.Net.DeviceListener.Start">
            <summary>
            Starts the polling for devices if polling is being used.
            </summary>
        </member>
        <member name="P:Device.Net.FilterDeviceDefinition.ProductId">
            <summary>
            Product Id
            </summary>
        </member>
        <member name="P:Device.Net.FilterDeviceDefinition.UsagePage">
            <summary>
            Used to further filter down device definitions on some platforms
            </summary>
        </member>
        <member name="P:Device.Net.FilterDeviceDefinition.Label">
            <summary>
            Not used for filtering. Only used to give a meaningful name to the filter that is carried on to the device definition
            </summary>
        </member>
        <member name="T:Device.Net.IDataReceiver">
            <summary>
            Receives data from some source
            </summary>
        </member>
        <member name="M:Device.Net.IDataReceiver.ReadAsync(System.Threading.CancellationToken)">
            <summary>
            Read from the source or wait for data to appear for reading
            </summary>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:Device.Net.IDataReceiver.DataReceived(Device.Net.TransferResult)">
            <summary>
            Manually set the data that appears at the source
            </summary>
            <param name="bytes"></param>
        </member>
        <member name="P:Device.Net.IDataReceiver.HasData">
            <summary>
            Whether or not data has already been received that has not yet been read
            </summary>
        </member>
        <member name="P:Device.Net.IDevice.IsInitialized">
            <summary>
            Whether or not the device has been successfully initialized
            </summary>
        </member>
        <member name="M:Device.Net.IDevice.ReadAsync(System.Threading.CancellationToken)">
            <summary>
            Read a page of data. Warning: this is not thread safe. WriteAndReadAsync() should be preferred.
            </summary>
        </member>
        <member name="M:Device.Net.IDevice.WriteAsync(System.Byte[],System.Threading.CancellationToken)">
            <summary>
            Write a page of data. Warning: this is not thread safe. WriteAndReadAsync() should be preferred.
            </summary>
        </member>
        <member name="M:Device.Net.IDevice.InitializeAsync(System.Threading.CancellationToken)">
            <summary>
            Close any existing connections and reinitialize the device. 
            </summary>
        </member>
        <member name="M:Device.Net.IDevice.WriteAndReadAsync(System.Byte[],System.Threading.CancellationToken)">
            <summary>
            Write a page of data and then wait for the device to return a page. If the implementation derives from DeviceBase, this method is thread safe.
            </summary>
        </member>
        <member name="P:Device.Net.IDevice.DeviceId">
            <summary>
            Device unique OS level Id for the type of device. The device should have been constructed with this Id. It is used to initialize the device.
            </summary>
        </member>
        <member name="P:Device.Net.IDevice.ConnectedDeviceDefinition">
            <summary>
            Information about the device. This information should be collected from initialization and will be null before initialization and after disposal
            </summary>
        </member>
        <member name="M:Device.Net.IDevice.Close">
            <summary>
            Closes the device, but allows for it to be reopened at a later point in time (as opposed to disposing)
            </summary>
        </member>
        <member name="M:Device.Net.IDevice.Flush(System.Threading.CancellationToken)">
            <summary>
            Flushes the device. Note: Only available for serial port devices currently
            </summary>
        </member>
        <member name="T:Device.Net.IDeviceFactory">
            <summary>
            Abstraction for enumerating and constructing <see cref="T:Device.Net.IDeviceFactory"/>s 
            </summary>
        </member>
        <member name="M:Device.Net.IDeviceFactory.GetConnectedDeviceDefinitionsAsync(System.Threading.CancellationToken)">
            <summary>
            Gets the definition of connected devices
            </summary>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:Device.Net.IDeviceFactory.GetDeviceAsync(Device.Net.ConnectedDeviceDefinition,System.Threading.CancellationToken)">
            <summary>
            Given a <see cref="T:Device.Net.ConnectedDeviceDefinition"/> returns a <see cref="T:Device.Net.IDevice"/>
            </summary>
            <param name="connectedDeviceDefinition"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:Device.Net.IDeviceFactory.SupportsDeviceAsync(Device.Net.ConnectedDeviceDefinition,System.Threading.CancellationToken)">
            <summary>
            Whether or not the factory supports the given device definition
            </summary>
            <param name="connectedDeviceDefinition"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="T:Device.Net.Observable`1">
            <summary>
            Basic observable which does thib of the Rx extensions so that we don't have to add that dependency
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="T:Device.Net.Observer`1">
            <summary>
            This class is a fill in for the Reactive extensions so that we don't need to depend on those at the low level
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="T:Device.Net.TransferResult">
            <summary>
            Represents the result of a read or write transfer
            </summary>
        </member>
        <member name="P:Device.Net.TransferResult.Data">
            <summary>
            The data that was transferred
            </summary>
        </member>
        <member name="P:Device.Net.TransferResult.BytesTransferred">
            <summary>
            The number of bytes transferred
            </summary>
        </member>
        <member name="M:Device.Net.TransferResult.op_Implicit(System.Byte[])~Device.Net.TransferResult">
            <summary>
            This automatically converts an array of bytes to <see cref="T:Device.Net.TransferResult"/>. TODO: Remove this because it is too easy to swallow up the information of how many bytes were actually read
            </summary>
            <param name="data"></param>
        </member>
        <member name="M:Device.Net.Windows.APICalls.SetupDiEnumDeviceInterfaces(System.IntPtr,System.IntPtr,System.Guid@,System.UInt32,Device.Net.Windows.SpDeviceInterfaceData@)">
            <summary>
            https://docs.microsoft.com/en-us/windows/desktop/api/setupapi/nf-setupapi-setupdienumdeviceinterfaces
            </summary>
        </member>
        <member name="T:Device.Net.Windows.AqsHelpers">
            <summary>
            Advanced Query Syntax is a query syntax for searching for various Windows components. UWP uses this to search for devices.
            </summary>
        </member>
        <member name="T:Device.Net.Windows.Dcb">
            <summary>
            Defines the control setting for a serial communications device.
            </summary>
        </member>
    </members>
</doc>
