характеристики c записи в неинтерактивном режиме - PullRequest
1 голос
/ 02 мая 2020

Я хочу использовать gatttool в сценарии оболочки.

То, чего я хочу достичь, похоже на следующее:

В интерактивном режиме я могу сделайте это:

# gatttool -b xx:xx:xx:xx:xx:xx -I
[xx:xx:xx:xx:xx:xx][LE]> connect
Attempting to connect to xx:xx:xx:xx:xx:xx
Connection successful
[xx:xx:xx:xx:xx:xx][LE]> char-write-cmd 0x0025 aabbcc
Notification handle = 0x0025 value: aa bb cc

Теперь, если я работаю не в интерактивном режиме:

# gatttool -b xx:xx:xx:xx:xx:xx --char-write --handle=0x0025 --value=aabbcc

Он просто зависает, мне нужно разбить его на CTRL+C и ничего не отправляет на устройство.

Теперь, все вышеприведенные вопросы рекомендуют использовать --char-write-req вместо --char-write.

Но это вводит в заблуждение, поскольку запрос и команда означают разные вещи.

Мое устройство не принимает запросы, только команды (даже в интерактивном режиме!). Поэтому попытка отправить те же данные с request не удастся:

# gatttool -b xx:xx:xx:xx:xx:xx -I
[xx:xx:xx:xx:xx:xx][LE]> connect
Attempting to connect to xx:xx:xx:xx:xx:xx
Connection successful
[xx:xx:xx:xx:xx:xx][LE]> char-write-req 0x0025 aabbcc
Error: Characteristic Write Request failed: Attribute can't be written

Теперь, конечно, использование рекомендаций из приведенных выше вопросов (--char-write-req) не удастся:

# gatttool -b xx:xx:xx:xx:xx:xx --char-write-req --handle=0x0025 --value=aabbcc
Characteristic Write Request failed: Attribute can't be written

Так что же является неинтерактивной альтернативой написания характерной команды c, если я не хочу использовать для этого какие-либо Python или подобные излишки?

...