コード例 #1
0
        internal static BluetoothDevice ConvertStructToDeviceClass(BluetoothDeviceStruct device)
        {
            BluetoothDevice     resultDevice = new BluetoothDevice();
            Collection <string> uuidList     = null;

            if (device.ServiceCount > 0)
            {
                IntPtr[] extensionList = new IntPtr[device.ServiceCount];
                Marshal.Copy(device.ServiceUuidList, extensionList, 0, device.ServiceCount);
                uuidList = new Collection <string> ();
                foreach (IntPtr extension in extensionList)
                {
                    string uuid = Marshal.PtrToStringAnsi(extension);
                    uuidList.Add(uuid);
                }
            }

            resultDevice.RemoteDeviceAddress = device.Address;
            resultDevice.RemoteDeviceName    = device.Name;
            resultDevice.RemoteDeviceClass   = new BluetoothClass();
            resultDevice.Class.MajorType     = device.Class.MajorDeviceClassType;
            resultDevice.Class.MinorType     = device.Class.MinorDeviceClassType;
            resultDevice.Class.Mask          = device.Class.MajorServiceClassMask;
            resultDevice.RemotePaired        = device.IsPaired;
            resultDevice.RemoteConnected     = device.IsConnected;
            resultDevice.RemoteAuthorized    = device.IsAuthorized;
            resultDevice.RemoteDeviceService = uuidList;
            resultDevice.RemoteDeviceCount   = device.ServiceCount;
            resultDevice.RemoteManufLength   = device.ManufacturerDataLength;
            resultDevice.RemoteManufData     = device.ManufacturerData;

            return(resultDevice);
        }
コード例 #2
0
        internal BluetoothDevice GetBondedDevice(string address)
        {
            IntPtr deviceInfo;
            int    ret = Interop.Bluetooth.GetBondedDeviceByAddress(address, out deviceInfo);

            if (ret != (int)BluetoothError.None)
            {
                Log.Error(Globals.LogTag, "Failed to get bonded device by address, Error - " + (BluetoothError)ret);
                BluetoothErrorFactory.ThrowBluetoothException(ret);
            }
            BluetoothDeviceStruct device = (BluetoothDeviceStruct)Marshal.PtrToStructure(deviceInfo, typeof(BluetoothDeviceStruct));

            return(BluetoothUtils.ConvertStructToDeviceClass(device));
        }
コード例 #3
0
        internal static BluetoothDevice ConvertStructToDeviceClass(BluetoothDeviceStruct device)
        {
            const int DeviceNameLengthMax = 248;
            const int UuidLengthMax       = 50;

            BluetoothDevice     resultDevice = new BluetoothDevice();
            Collection <string> uuidList     = null;

            if (device.ServiceCount > 0)
            {
                IntPtr[] extensionList = new IntPtr[device.ServiceCount];
                Marshal.Copy(device.ServiceUuidList, extensionList, 0, device.ServiceCount);
                uuidList = new Collection <string> ();
                Log.Info(Globals.LogTag, "UUID Count: " + device.ServiceCount);
                foreach (IntPtr extension in extensionList)
                {
                    if (extension != IntPtr.Zero)
                    {
                        string uuid = Marshal.PtrToStringAnsi(extension, UuidLengthMax);
                        Log.Info(Globals.LogTag, "UUID: " + uuid);
                        uuidList.Add(uuid);
                    }
                }
            }

            resultDevice.RemoteDeviceAddress = device.Address;
            if (device.Name != IntPtr.Zero)
            {
                resultDevice.RemoteDeviceName = Marshal.PtrToStringAnsi(device.Name, DeviceNameLengthMax);
                Log.Info(Globals.LogTag, "Device Name: " + resultDevice.RemoteDeviceName);
            }
            resultDevice.RemoteDeviceClass   = new BluetoothClass();
            resultDevice.Class.MajorType     = device.Class.MajorDeviceClassType;
            resultDevice.Class.MinorType     = device.Class.MinorDeviceClassType;
            resultDevice.Class.Mask          = device.Class.MajorServiceClassMask;
            resultDevice.RemotePaired        = device.IsPaired;
            resultDevice.RemoteConnected     = device.IsConnected;
            resultDevice.RemoteAuthorized    = device.IsAuthorized;
            resultDevice.RemoteDeviceService = uuidList;
            resultDevice.RemoteDeviceCount   = device.ServiceCount;
            resultDevice.RemoteManufLength   = device.ManufacturerDataLength;

            if (device.ManufacturerData != IntPtr.Zero)
            {
                resultDevice.RemoteManufData = Marshal.PtrToStringAnsi(device.ManufacturerData, device.ManufacturerDataLength);
            }

            return(resultDevice);
        }