Пример #1
0
        private static ulong FindAndSelectHub(IPoweredUpBluetoothAdapter poweredUpBluetoothAdapter)
        {
            ulong result  = 0;
            var   devices = new ConcurrentBag <(int key, ulong bluetoothAddresss, PoweredUpHubManufacturerData deviceType)>();
            var   cts     = new CancellationTokenSource();
            int   idx     = 1;

            Console.WriteLine("Scan Started. Please select the Hub (using a number keys or 'q' to terminate):");

            poweredUpBluetoothAdapter.Discover(info =>
            {
                if (devices.FirstOrDefault(kv => kv.bluetoothAddresss == info.BluetoothAddress) == default)
                {
                    var deviceType = (PoweredUpHubManufacturerData)info.ManufacturerData[1];
                    devices.Add((idx, info.BluetoothAddress, deviceType));

                    Console.WriteLine($"{idx}: {(PoweredUpHubManufacturerData)info.ManufacturerData[1]} (with address {info.BluetoothAddress})");

                    idx++;
                }
            }, cts.Token);

            var input = Console.ReadLine();

            cts.Cancel();

            if (int.TryParse(input, out var key))
            {
                var selected = devices.FirstOrDefault(kv => kv.key == key);

                result = selected.bluetoothAddresss; // default is 0

                if (result != default)
                {
                    Console.WriteLine($"Selected {selected.deviceType} with key {selected.key}");
                }
            }

            return(result);
        }
Пример #2
0
 public BluetoothKernel(IPoweredUpBluetoothAdapter bluetoothAdapter, ILogger <BluetoothKernel> logger = default)
 {
     _bluetoothAdapter = bluetoothAdapter ?? throw new ArgumentNullException(nameof(bluetoothAdapter));
     _logger           = logger;
 }
Пример #3
0
    private static (IPoweredUpBluetoothDeviceInfo bluetoothDeviceInfo, SystemType systemType) FindAndSelectHub(IPoweredUpBluetoothAdapter poweredUpBluetoothAdapter)
    {
        IPoweredUpBluetoothDeviceInfo resultDeviceInfo = default;
        SystemType resultSystemType = default;
        var        devices          = new ConcurrentBag <(int key, IPoweredUpBluetoothDeviceInfo bluetoothDeviceInfo, PoweredUpHubManufacturerData deviceType)>();
        var        cts = new CancellationTokenSource();
        int        idx = 1;

        Console.WriteLine("Scan Started. Please select the Hub (using a number keys or 'q' to terminate):");

        poweredUpBluetoothAdapter.Discover(info =>
        {
            if (devices.FirstOrDefault(kv => kv.bluetoothDeviceInfo.Equals(info)) == default)
            {
                var deviceType = (PoweredUpHubManufacturerData)info.ManufacturerData[1];
                devices.Add((idx, info, deviceType));

                var text = (info is IPoweredUpBluetoothDeviceInfoWithMacAddress mac) ? mac.ToIdentificationString() : "not revealed";

                Console.WriteLine($"{idx}: {(PoweredUpHubManufacturerData)info.ManufacturerData[1]} (with address {text})");

                idx++;
            }

            return(Task.CompletedTask);
        }, cts.Token);

        var input = Console.ReadLine();

        cts.Cancel();

        if (int.TryParse(input, out var key))
        {
            var selected = devices.FirstOrDefault(kv => kv.key == key);

            resultDeviceInfo = selected.bluetoothDeviceInfo;
            resultSystemType = (SystemType)selected.deviceType;

            if (resultDeviceInfo != default)
            {
                Console.WriteLine($"Selected {selected.deviceType} with key {selected.key}");
            }
        }

        return(resultDeviceInfo, resultSystemType);
    }