Когда-то на форуме 4pda.ru появился пост с предложением создать приложение, позволяющее использовать КПК в качестве Bluetooth мыши. В то время я довольно смутно представлял эту технологию и пост очень заинтересовал меня тем, что появилась возможность удовлетворить постоянную жажду знаний изучением Bluetooth.
Я начал с того, что скачал и несколько раз прочитал спецификацию. Потом начал изучать профиль HID, т.к. именно такой вариант мыши предлагалось реализовать. И, как снежный ком, началось изучение:
— спецификации HID;
— профилей;
— протоколов SDP, RFCOMM, L2CAP;
— осмысление того, что такое вообще стек Bluetooth;
— как реализуют стек различные производители (Broadcom, Microsoft).
У меня был легендарный HP hx4700 с броадкомовским стеком. Я скачал SDK, долго анализировал примеры, идущие вместе с SDK, и когда дошло дело до попытки реализации, я понял, что самая главная информация, без которой не напишешь работающую программу, недоступна обычным посетителям сайта bluetooth.com. Какая? «Assigned numbers» — ключевые постоянные числа технологии, применяемые в формировании SDP записей. Эта информация была доступна только на сайте bluetooth.org. Этот сайт является порталом т.н. группы SIG (Special Interest Group), закрытого общества разработчиков и заинтересованных этой технологией лиц. Для регистрации на портале нужно было внести немало информации, в т.ч. свой сайт, название своей фирмы, вид деятельности и т.д. Что бы хоть как-то на какое-то время попасть на сайт и скачать информацию, пока местные «модераторы» не проверят мои данные, я зарегистрировал пустой сайт на «народе», подсунул в требуемые данные всякую белиберду, и данные у меня. Это сейчас «Assigned numbers» лежат вместе с остальной документацией на bluetooth.com, а тогда было гораздо сложнее их достать 🙂 Мало того, на просторах сети были только скудные данные.
В общем я написал что-то подобное на предложение, но как проверить? Вот это был вопрос. Дело в том, что для ОС Windows (для ББ) нет программ, способных логгировать транспортировку данных Bluetooth. Пришлось изучать иксы 🙂 Поставил я на виртуальную машину и мандриву и убунту (кстати до этого я только слышал о них). Загрузил туда блютусные утилиты, и какое было счастье от того, что я мог видеть весь процесс обмена данными до бита по всем протоколам: HCI, SDP, L2CAP. Благодаря иксам я отладил свою первую программку.
Но она работала на стеке Broadcom. Когда я выложил ее для тестирования, узнал новое — оказывается 90% устройств на базе WinMob используют стек Microsoft. «Фигня» — подумал я — «чё там, броадком уже знаю, а МС за день пойму». 😉 Но не тут-то было. Оказалось что подход к клиентскому использованию стека у этих 2х производителей кардинально отличается. Если Broadcom предоставлял практически полный доступ к стеку через свои интерфейсы, то MS предоставляло API только к протоколу RFCOMM. Вот тут и была засада. В конечном итоге MS была побеждена 🙂 и было написано тестовое приложение для её стека.
После этого я решил совместить 2 реализации в одну и все таки что-то сделать, но т.к. для меня весь этот процесс -хобби и времени ему уделяется не много, реализация находится в полу-замороженном состоянии.
За время общения в выше указанном посте, участники форума меня забросали плюсами, и я чувствую неловкость от того, что все ни как не доведу до ума, то, что есть. У меня просят исходники, но их бесполезно отдавать, т.к., не зная принципов технологии, в логике работы программы не разобраться.
Чтобы как-то реабилитироваться, пришла мысль рассказать по шагам, как я реализовывал эту задумку с постепенным выкладыванием исходников, так, что бы это было понятно.
Записи под рубрикой «HID» предназначены для ознакомления с возможностью использования технологии Bluetooth для превращения КПК и коммуникаторов на базе ОС Windows Mobile в HID устройства. В этих записях на примере превращения КПК в HID мышь для ББ, я попытаюсь с самого начала рассказать и описать как это можно сделать, попутно рассказывая об используемых технологиях.