Bluez DBus API для установки дублирующего фильтра для отключения

Как настроить параметры сканирования и отключить фильтр дубликатов, чтобы я мог получать всю рекламу с контроллера? StartDiscovery API только уведомляет всякий раз, когда определяется новое устройство, но я хочу отключить дубликат фильтра, чтобы я мог получать каждую рекламу от контроллера ?. Но я не нашел никакого API DBus, чтобы установить параметры сканирования или установить API включения сканирования.

Моя цель проста. Мне нужно получать уведомления о каждой рекламе, полученной на контроллере, в мое клиентское приложение. Как я могу это сделать с помощью Bluez?

Примечание: я могу упустить некоторые основные моменты, потому что я новичок в bluetooth и bluez.


person Narrator    schedule 13.05.2016    source источник
comment
Можете ли вы проверить этот git.kernel. org / cgit / bluetooth / bluez.git / tree / doc /?   -  person Parthiban    schedule 14.09.2016
comment
@ParthibanN SetDiscoveryFilter предоставляет несколько параметров, таких как тип, потери пути, rssi, uuids, но нет возможности установить параметр фильтра дублирования из SetDiscoveryFilter.   -  person Narrator    schedule 24.09.2016
comment
AFAIK, нет прямого фильтра, который можно было бы применить к существующим устройствам. Вы можете следить за изменениями свойств существующих устройств. Сигнал PropertiesChanged будет испускаться для существующих устройств с новыми значениями RSSI. Но это касается близости. Я не уверен, какова будет реакция, если устройство и адаптер находятся в статическом положении.   -  person Parthiban    schedule 26.09.2016
comment
git.kernel.org/cgit/ bluetooth / bluez.git / tree / doc /   -  person Parthiban    schedule 26.09.2016
comment
Раздел комментариев не подходит для отображения моих результатов. Итак, удалите это и добавьте в качестве ответа. Но не уверен, что это ответ на ваш вопрос.   -  person Parthiban    schedule 26.09.2016
comment
Да, вы правы, всякий раз, когда есть изменения в значениях rssi, PropertyChanged будет уведомлять нас, но мне нужно получать уведомления для каждого рекламного объявления, полученного в контроллер, даже если все параметры одинаковы. Для этого мы должны использовать API низкого уровня (hci).   -  person Narrator    schedule 27.09.2016
comment
Я. Это может быть возможно с низкоуровневыми / системными вызовами или вызовами HCI. Я также новичок в Bluetooth, может быть, мне потребуется некоторое время, чтобы ответить на него конкретно. Извините.   -  person Parthiban    schedule 27.09.2016


Ответы (1)


В выходных данных ниже вы можете видеть, что устройство «Parthiban» уже присутствует в / org / bluez / hci0 / dev_44_D8_84_02_A3_17. Я начал сканирование, которое, в свою очередь, запускает метод «StartDiscovery ()», и то же устройство обновляется значением RSSI.

root@mx6q:~# bluetoothctl 
[NEW] Controller 5C:F3:70:6E:26:02 Adapter [default]
**[NEW] Device 44:D8:84:02:A3:17 Parthiban**
[NEW] Device 2C:F0:A2:26:D7:F5 iPhone tteam
[NEW] Device 78:F8:82:10:E7:0C Nexus 5X
[bluetooth]# scan on
Discovery started
[CHG] Controller 5C:F3:70:6E:26:02 Discovering: yes
**[CHG] Device 44:D8:84:02:A3:17 RSSI: -52**

Таким образом, вы можете использовать «g_dbus_connection_signal_subscribe» в интерфейсе «org.freedesktop.DBus.Properties» для сигнала «PropertiesChanged».

while(g_variant_iter_loop(&iter, "{sv}", &property, &value)) {
    if(strcasecmp(property, "RSSI") == 0) {
        /*
         * - Extract the device address from object path
         *  /org/bluez/hci0/dev_44_D8_84_02_A3_17
         *  - Play with the device
         */
    }
person Parthiban    schedule 26.09.2016