Target is nrf52832+SoftDeviceS132
When run ActiveScan,
Is SCAN_RSP advertise_report notified only after ADV_SCAN_IND advertise_report?
If I receive only the SCAN_RSP of the SCAN_REQ performed by another device, will it be notified?
Target is nrf52832+SoftDeviceS132
When run ActiveScan,
Is SCAN_RSP advertise_report notified only after ADV_SCAN_IND advertise_report?
If I receive only the SCAN_RSP of the SCAN_REQ performed by another device, will it be notified?
Hi Suiji Biwa,
The Scan response is sent by the advertiser only after receiving Scan request, which the scanner sends only after receiving the ADV_SCAN_IND from the advertiser.

OK.Thanks.
Additional comments,
DeviceB and DeviceD is running by Active Scan.
Figure.1
(A) Will adv_report never be notified ?
Figure.2
(B) Will adv_report never be notified ?
(When the BDADDR is the same, or not same, DeviceA and DeviceC)

loquat said:Figure.1
(A) Will adv_report never be notified ?
A scanner will only look for scan response data from the advertiser only if it has sent a scan_request and only in that event interval. That is if "Device C" sent a scan response to the scan request sent by Device D, it is very unlikely that Device B would be expecting any scan response unless it also sent the scan_req very close to when Device D has done.
loquat said:Figure.2
(B) Will adv_report never be notified ?
(When the BDADDR is the same, or not same, DeviceA and DeviceC)
If one packet is lost from DeviceA, then in the next scan interval of DeviceB, the packet is most likely received and notified to the application.
I am not sure what your main concern is, A central has to actively scan and must have sent a SCAN_REQ in the scan interval, to keep its receiver ramped up expecting a scan response from the advertiser. ADV packet and SCAN_RSP packet are not generally directed.
Again question,
On Figure1,
Is SCAN_RSP not adv_reported by itself?
Is it always adv_reported with the combination of ADV_SCAN_IND / SCAN_RSP?(or ADV_SCAN_IND only)
On Figure.2,
Is it possible that ADV_SCAN_IND and SCAN_RSP have different BDADDR cases?
I want to process only when the SCAN_RSP received by DeviceB is sent from the same device (DeviceA) as ADV_SCAN_IND.
When multiple peripherals are sending ADV_SCAN_IND / SCAN_RSP,
I would like to know how to associate ADV_SCAN_IND and SCAN_RSP on the central side.
Should it be judged by BDADDR?
Or should I put the same identification ID in ADV_SCAN_IND and SCAN_RSP?
And one more question,
ADV_SCAN_IND Message Sequence Charts,
ADV_REPORT is notified only once.
However, in reality, ADV_REPORT is notified twice (ADV_SCAN_IND, SCAN_RSP). I think the chart is wrong, please tell me the correct time chart.
Hi,
Sorry for the late response.
When the scanner sends a scan request, it will accept scan response from only that advertiser to which it has sent scan request to. The link layer in the softdevice will verify the BDADDR of scan request and scan response are the same. So it is not possible for the scanner to process the scan response data of any advertisement for which it has not sent a scan request.
OK Thanks.
And, once more.
ADV_SCAN_IND Message Sequence Charts,
ADV_REPORT is notified only once.
However, in reality, ADV_REPORT is notified twice (ADV_SCAN_IND, SCAN_RSP). I think the chart is wrong, please tell me the correct time chart.
Advertiser sends SCAN_RSP only if it receives a SCAN_REQ from the scanner. The scanner does not send SCAN_REQ if it is not doing an active scanning and hence the top layer of the MSC only shows passive scanning, where the scanner does not send the scan request and the advertiser does not send the scan response.
The Variant #1 of the chart shows the active scanning where the scanner sends the SCAN_REQ and only after receiving this packet the advertiser will send the SCAN_RSP.
The chart seems correct.
Advertiser sends SCAN_RSP only if it receives a SCAN_REQ from the scanner. The scanner does not send SCAN_REQ if it is not doing an active scanning and hence the top layer of the MSC only shows passive scanning, where the scanner does not send the scan request and the advertiser does not send the scan response.
The Variant #1 of the chart shows the active scanning where the scanner sends the SCAN_REQ and only after receiving this packet the advertiser will send the SCAN_RSP.
The chart seems correct.
In the figure below, which is correct, the red case or the green case?

None of them is correct.

Does it mean that the app will not receive ADV_REPORT (SCAN_RSP) if the app cannot set a new buffer by scan_start () between the time the app receives ADV_REPORT (ADV_SCAN_IND) and the time SoftDevice receives SCAN_RSP?
SCAN_RSP will only be sent everytime by the advertiser when it receives SCN_REQ from the scanner.
In the previous figure, we want to allocate adv_report_buffer1 by malloc.
Shouldn't I free adv_report_buffer1 until I receive the SCAN_RSP?