Монитор сердечного ритма Garmin BLE - я не могу получить данные HRM через Bluetooth, что мне не хватает? - PullRequest
0 голосов
/ 09 марта 2020

С помощью пульсометра Bluetooth / ANT + без маркировки я могу легко получить данные HRM, используя gatttool:

<MAC address>> connect
Attempting to connect to <MAC address>
Connection successful
<MAC address>> primary
(...)
<MAC address>> char-desc 0x000c 0x0011
(...)
<MAC address>> char-write-req 0x000f 0100
Characteristic value was written successfully
Notification handle = 0x000e value: 16 34 e4 04 
Notification handle = 0x000e value: 16 34 a5 04 
Notification handle = 0x000e value: 16 33 ea 04 
Notification handle = 0x000e value: 16 33 de 04

С этим я отправляю на обработку 0x000f, что составляет 00002902-0000-1000-8000-00805f9b34fb, куда мне нужно отправить запрос ( do c для 0x2902 ), и я получаю ответы от другого дескриптора ( do c для 0x2a37 ).

Я уже немного смущен полезной нагрузкой 0100, которую мы отправляем. Spe c для 0x2902 говорит, что мы должны отправить 16 бит, а 0x0100 равно 0b100000000. Это приводит к 0b0000000100000000 или 0b1000000000000000? Почему мы отправляем 0x0100, а не 0x8000 (то есть 1 с 15 0)?

В любом случае 01, 010, 0100, 01000 будут работать, но больше цифр не получится. Разве он не должен потерпеть неудачу уже с 5 цифрами, так как 4 шестнадцатеричных символа составляют 16 бит? В любом случае, 01 работает (уведомления включены, индикация выключена?), 02 не приведет к обновлениям (уведомления отключены, индикация включена?), 03 работает (уведомления включены, индикация включена?). Правильно ли мое понимание?

Теперь я беру свой пульсометр Garmin (это Garmin HRM Dual). Я могу просто подключиться к нему через Bluetooth, я могу найти правильный дескриптор для взаимодействия с HRM (дескриптор, который соответствует UUID 0x2902), но когда я использую gatttool, чтобы отправить char-write-req к дескриптору, как ранее , это говорит, что значение было написано, но ничего не происходит. Я пробовал несколько значений, но ничего не происходит.

Я что-то упустил? Есть ли какой-то дополнительный шаг, который необходимо предпринять перед вызовом дескриптора HRM? Спасибо.

...