public static IDeviceFactory CreateAndroidUsbDeviceFactory( this FilterDeviceDefinition filterDeviceDefinition, UsbManager usbManager, Context context, ILoggerFactory loggerFactory = null, GetConnectedDeviceDefinitionsAsync getConnectedDeviceDefinitionsAsync = null, GetUsbInterfaceManager getUsbInterfaceManager = null, ushort?readBufferSize = null, ushort?writeBufferSize = null, IAndroidFactory androidFactory = null, Func <AndroidUsbDevice, IUsbPermissionBroadcastReceiver> getUsbPermissionBroadcastReceiver = null ) => CreateAndroidUsbDeviceFactory( new ReadOnlyCollection <FilterDeviceDefinition>(new List <FilterDeviceDefinition> { filterDeviceDefinition }), usbManager, context, loggerFactory, getConnectedDeviceDefinitionsAsync, getUsbInterfaceManager, readBufferSize, writeBufferSize, androidFactory, getUsbPermissionBroadcastReceiver);
public UsbPermissionBroadcastReceiver( UsbManager manager, usbDevice device, Context context, IAndroidFactory androidFactory, ILogger logger = null) { _Manager = manager ?? throw new ArgumentNullException(nameof(manager)); _Device = device ?? throw new ArgumentNullException(nameof(device)); _Context = context ?? throw new ArgumentNullException(nameof(context)); _logger = logger ?? NullLogger.Instance; _androidFactory = androidFactory; }
public AndroidUsbInterfaceManager( UsbManager usbManager, int deviceNumberId, IAndroidFactory androidFactory, Func <usbDevice, IUsbPermissionBroadcastReceiver> usbPermissionBroadcastReceiver, ILoggerFactory loggerFactory = null, ushort?readBufferLength = null, ushort?writeBufferLength = null) : base(loggerFactory) { ReadBufferSizeProtected = readBufferLength; WriteBufferSizeProtected = writeBufferLength; UsbManager = usbManager ?? throw new ArgumentNullException(nameof(usbManager)); DeviceNumberId = deviceNumberId; _androidFactory = androidFactory; _getUsbPermissionBroadcastReceiver = usbPermissionBroadcastReceiver; Logger.LogInformation("read buffer size: {readBufferLength} writeBufferLength {writeBufferLength}", readBufferLength, writeBufferLength); }
public AndroidUsbInterface( UsbInterface usbInterface, UsbDeviceConnection usbDeviceConnection, IAndroidFactory androidFactory, ILogger logger = null, ushort?readBufferSize = null, ushort?writeBufferSize = null, int?timeout = null, Func <UsbDeviceConnection, SetupPacket, byte[], int?, Task <TransferResult> > performControlTransferAsync = null) : base( performControlTransferAsync != null ? //A func was passed in new PerformControlTransferAsync((sb, data, c) => performControlTransferAsync(usbDeviceConnection, sb, data, timeout)) : //Use the default new PerformControlTransferAsync((sb, data, c) => PerformControlTransferAndroid(usbDeviceConnection, sb, data, timeout, c)), logger, readBufferSize, writeBufferSize) { UsbInterface = usbInterface ?? throw new ArgumentNullException(nameof(usbInterface)); _UsbDeviceConnection = usbDeviceConnection ?? throw new ArgumentNullException(nameof(usbDeviceConnection)); _androidFactory = androidFactory; _timeout = timeout; }
public static IDeviceFactory CreateAndroidUsbDeviceFactory( this IEnumerable <FilterDeviceDefinition> filterDeviceDefinitions, UsbManager usbManager, Context context, ILoggerFactory loggerFactory = null, GetConnectedDeviceDefinitionsAsync getConnectedDeviceDefinitionsAsync = null, GetUsbInterfaceManager getUsbInterfaceManager = null, ushort?readBufferSize = null, ushort?writeBufferSize = null, IAndroidFactory androidFactory = null, Func <AndroidUsbDevice, IUsbPermissionBroadcastReceiver> getUsbPermissionBroadcastReceiver = null ) { if (usbManager == null) { throw new ArgumentNullException(nameof(usbManager)); } if (context == null) { throw new ArgumentNullException(nameof(context)); } loggerFactory ??= NullLoggerFactory.Instance; #if __ANDROID__ androidFactory ??= new AndroidFactory(); getUsbPermissionBroadcastReceiver ??= new Func <AndroidUsbDevice, IUsbPermissionBroadcastReceiver>((ud) => new UsbPermissionBroadcastReceiver( usbManager, ud, context, androidFactory, loggerFactory.CreateLogger <UsbPermissionBroadcastReceiver>())); #else if (androidFactory == null) { throw new ArgumentNullException(nameof(androidFactory)); } if (getUsbPermissionBroadcastReceiver == null) { throw new ArgumentNullException(nameof(getUsbPermissionBroadcastReceiver)); } #endif getConnectedDeviceDefinitionsAsync ??= (cancellationToken) => { return(Task.FromResult <IEnumerable <ConnectedDeviceDefinition> > ( new ReadOnlyCollection <ConnectedDeviceDefinition> ( usbManager .DeviceList .Select(kvp => kvp.Value) .Where ( d => filterDeviceDefinitions .FirstOrDefault ( f => (!f.VendorId.HasValue || f.VendorId.Value == d.VendorId) && (!f.ProductId.HasValue || f.ProductId.Value == d.ProductId) ) != null ) .Select(AndroidUsbInterfaceManager.GetAndroidDeviceDefinition) .ToList() ) )); }; getUsbInterfaceManager ??= (a, cancellationToken) => Task.FromResult <IUsbInterfaceManager>( new AndroidUsbInterfaceManager( usbManager, //TODO: throw a validation message int.Parse(a, IntParsingCulture), androidFactory, getUsbPermissionBroadcastReceiver, loggerFactory, readBufferSize, writeBufferSize )); return(UsbDeviceFactoryExtensions.CreateUsbDeviceFactory(getConnectedDeviceDefinitionsAsync, getUsbInterfaceManager, loggerFactory)); }