В настоящее время я планирую код для устройства Bluetooth с низким энергопотреблением (BLE), которое будет работать с профилем HID over GATT из спецификации Bluetooth. Я прочитал спецификацию HID 1.11 и таблицы использования 1.12, но не могу найти ничего о минимально необходимом использовании Usage_pages и Usages.
Поскольку мы реализуем как хост, так и устройство, план состоит в том, чтобы использовать страницу использования, определенную поставщиком, для нашего дескриптора отчета, но поскольку наша цель — иметь быстрые соединения и низкое энергопотребление, я не хочу отправлять больше байтов, чем Я должен на этапе определения отчета HID через GATT. Из-за этого я рассматриваю возможность удаления всех вариантов использования, которые обычно помечают ввод/вывод, поскольку они кажутся только семантическими.
Вот пример того, что я рассматриваю:
Usage_Page( Vendor Defined)
Usage( Vendor 1)
Collection(Application)
Collection(Logical) ; First Collection and Report
Report_ID(1)
Usage_Page(Button) ; This is what the specification seems to encourage
Usage_Minimum(Button 1)
Usage_Maximum(Button 3)
Logical_Minimum(0) ; Logical limits
Logical_Maximum(1)
Report_Size(3) ; Three bits corresponding to the buttons
Report_Count(1) ; One of the three bit sets
Input( Data, Variable, Absolute) ; Make it an input
Report_Size(5)
Report_Count(1)
Input(Constant) ; Pad the transmitted byte
Collection End
Collection End
Когда я смотрю на это, я вижу много лишних байтов, которые ничего не делают, так как я не использую собственный синтаксический анализатор. Они варьируются от использования до даже логических минимумов/максимумов. Какие последствия могут быть, если я просто определил свой дескриптор отчета только с использованием верхнего уровня и не использовал такие вещи, как логические максимумы?