Какова природа свойства BLE notify?

Мне нужно обеспечить связь через Bluetooth Low Energy 4.0 между iOS-устройством с одной стороны и определенным периферийным устройством, на котором есть bluetooth-модуль.
Периферийное устройство было собрано с модулем DORJI DBM01 bluetooth LE 4.0, который позволяет общаться с ним, используя одну характеристику со свойством READ (UUID = 0xFFF4) и одну характеристику со свойством WRITE (UUID = 0xFFF1). Техническое руководство по DORJI DBM01 находится здесь: http://dorji.com/docs/data/DBM01.pdf
Мне удалось установить соединение bluetooth LE между iOS-устройством (используя Core Bluetooth Framework) и описанным выше периферийным устройством, но характеристика со свойством READ не имеет свойства notify (CBCharacteristicPropertyNotify в Core Bluetooth Framework).
Поэтому я должен использовать какой-то бесконечный цикл для сканирования и чтения новой информации из характеристики со свойством READ (вызывая метод экземпляра CBPeripheral - readValueForCharacteristic:) вместо подписи на характеристическое значение (путем вызова метода setNotifyValue:forCharacteristic:).
Можно ли добавить свойство notify для чтения характеристики периферийного устройства (например, инженером, создавшим периферийное устройство или добавить какой-либо низкоуровневый код, который выполняется на периферийном устройстве) или свойство notify является неотъемлемой частью BLE-модуля (DORJI DBM01)) и его нельзя добавить без использования другого BLE-модуля?

1 ответ

Решение

DBM01 основан на Texas Instruments CC2540, как и многие другие модули BLE-to-serial, которые реализуют уведомления, поэтому технически это возможно сделать.

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

Другим вариантом может быть (но это действительно зависит от вашего сценария) переключение центральной и периферийной ролей, чтобы приложение iOS получало уведомление, когда модуль BLE записывает данные. Насколько я понимаю, это нужно сделать аппаратно (уровень на конкретном выводе должен быть изменен).

Другие вопросы по тегам