zephyriot / zep-jira14

0 stars 0 forks source link

BLE central scan ignores changes in payload #2040

Open nashif opened 7 years ago

nashif commented 7 years ago

Reported by Neha Purushothaman:

I am using BOARD quark_se_c1000_devboard with nrf51 Raytac module running hci_uart as controller. I noticed that the zephyr1.7.x github version master/a61cf36 BLE scan has a filtering option to avoid duplicate packets. For our application, we are sending data in the beacon payload. It gets updated every 5 sec. But bt_le_scan_start() returns only 1 beacon until our peripheral board changes to a connectable/different mode of advertising.

Change requested : While filtering, we request to check for the whole payload instead of just the adv type.

(Imported from Jira ZEP-2202)

nashif commented 7 years ago

by Vinayak Kariappa Chettimada:

This is not a bug.

As per BT Spec. Vol.6, Part B, section 4.4.3.5 Advertising Reports

... "the actual data may change; advertising data or scan response data is not considered significant when determining duplicate advertising reports."

Applications can use "filter_dup" field set to BT_HCI_LE_SCAN_FILTER_DUP_DISABLE.

nashif commented 7 years ago

by Neha Purushothaman:

Hi Vinayak, We are sending real time data in the manufacturer specific data field of advertising packets. We saw a lot of applications that use this method of sending data so as to reduce the power consumption involved in establishing a connection. I already have a filter implemented in my application that will remove all the duplicate packets, but having the zephyr scan-filter in controller side will significantly reduce the UART traffic and processing power. Plus it will help us become more power efficient. Even though the BT spec says data is not considered significant when determining duplicate reports, it would be a good feature to include considering peripherals are allowed to send a custom data in packets and since it is not uncommon to use it for sending real time data. Thanks

nashif commented 7 years ago

by Vinayak Kariappa Chettimada:

Moving payload filter into controller definitely reduces UART traffic, but the processing is transferred to controller and also makes the interface non compliant unless a vendor specific command is added to have this custom behavior. Also, based on whether you are using 16KB RAM or 32KB RAM nRF51, payload filtering will be limited.

Carles Cufi comments?

nashif commented 7 years ago

by Mark Linkmeyer:

Carles Cufi , please see request above for your feedback. Thx.

nashif commented 7 years ago

by Carles Cufi:

We can address this as part of the Zephyr HCI VS extensions, but it won't be done for 1.9. I would also like Marcel Holtmann 's opinion before we move forward with this.