Bluetooth LE Характеристика записи ответа - PullRequest
0 голосов
/ 05 октября 2019

У меня есть встроенное устройство под управлением BT5 с настройкой сервера GATT. На сервере я настроил службу с различными характеристиками, чтобы позволить клиенту (ПК или мобильному устройству) настраивать различные параметры устройства, записывая характеристики.

Я бы хотел, чтобы устройство отправляло ответ от уровня приложения для каждой записи. Мне не ясно, каким будет рекомендуемый путь.

Я думал о том, чтобы клиент прочитал или подписался на общую характеристику состояния, но я хочу убедиться, что я не упускаю более простой способ сделать это. Я посмотрел на запись BT с помощью команды ответа, но кажется, что подтверждение этого может произойти ниже, чем в приложении.

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Вы должны иметь возможность использовать ответ на запись в качестве «ответа на уровне приложения». Я не видел ни одного стека Bluetooth, где этот ответ отправляется на более низком уровне до того, как приложение обработало запрос. Причина, вероятно, в том, что приложение может даже отправить код ошибки приложения вместо ответа на запись, поэтому было бы глупо переводить обработку ответа на запись на более низкий уровень. Даже в Android (если вы настроили сервер GATT) вы отправляете ответ на запись из приложения.

Ситуация отличается с Индикациями, хотя стек Bluetooth иногда отправляет Подтверждение на более низком уровне, чемприложение, еще до того, как оно проинформирует приложение о прибытии Индикации, что, на мой взгляд, немного странно и делает Индикации бессмысленными по сравнению с Уведомлениями.

0 голосов
/ 07 октября 2019

Я решил это с помощью характеристики уведомления. Сначала клиент подписывается на события уведомления на этой CCD, а затем каждая команда, отправленная хосту / устройству, подтверждается хостом, запускающим уведомление. Чтобы лучше синхронизировать команду и ответ, вы можете добавить инкрементный идентификатор команды к каждой команде и сделать так, чтобы идентификатор команды был частью данных уведомления, отправляемых обратно клиенту.

Однако я реализовалэто потому, что мне нужен был ответ после , когда устройство обработало команду, и результаты были отправлены обратно клиенту. Если все, что вы хотите знать, это то, получил ли хост команду, CCD с записью с ответом - это путь.

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

Действительно, обработчик записи с ответом почти всегда реализуется в стеке BLE, а не на уровне приложения. Однако я не понимаю, почему это будет проблемой;вы должны получать отчеты об ошибках вашего стека BLE в той или иной форме, когда запись с ответом завершается неудачно. Если это блокирующий вызов, он может даже вернуть успешное значение.

...