При использовании HID на устройстве Bluetooth, как правило, нет необходимо напрямую создавать соединение L2CAP.Все (???) стеки Bluetooth в Win32 поддерживают Bluetooth HID и обеспечивают доступ к потоку / управлению HID через собственный Windows HID API.Нет (прямой) L2CAP требуется!: -)
В WinCE также есть встроенная поддержка Bluetooth HID, но я не уверен, что есть способ получить доступ к HID API.
Так работает библиотека wiimore Брайана Пика.- он использует HID API.Хорошая вещь в этом заключается в том, что таким образом получают поддержку для всех (?) Стеков Bluetooth - каждое из них поддерживает устройства HID через Windows HID API, в то время как для непосредственного использования L2CAP потребуется поддержка каждого из API стеков... (это если у них есть один! BlueSoleil не имеет API L2CAP, насколько я вижу).
Итак, на Win32 нужно просто выполнить сопряжение с устройством и проверить, установлен ли флажок HID на его BluetoothВкладка панели управления сервисом (какой бы стек Bluetooth ни использовался).В моей библиотеке 32feet.NET можно обнаружить устройство, а затем убедиться, что для него включен HID с:
BluetoothDeviceInfo[] list = btCli.DiscoveryDevices();
var deviceInfo = list[n]; // Select the correct device
deviceInfo.SetServiceState(BluetoothService.HumanInterfaceDevice, true);
(Это должно работать на MSFT и BlueSoleil; для Widcomm AFAIK такого API нет -хотя при сопряжении в любом случае он может быть автоматически включен).
Единственное возможное исключение состоит в том, что, очевидно, некоторые устройства не полностью совместимы со спецификациями Bluetooth / HID, мне говорят, что контроллер PS3 blu-ray подобентот.Тогда можно попробовать напрямую подключиться к L2CAP - однако вполне вероятно, что поддержка HID в стеке будет мешать сторонним приложениям, пытающимся предоставить ту же услугу ...