Я хочу использовать 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 или подобные излишки?