I'm working up a network of advertising only tags that will be used to harvest small amounts of data back to a central node. As i understand it, I have set an interval of 1 sec with a random interval of 0.25 sec. This translates to a sequence : Advertise on 37, wait 1-1.25sec, advertise on 38, wait 1-1.25sec, advertise on 39, wait 1.25sec.
My question is on the other side. I am running a scan time and interval of 200mS. My hope is to be as close to constantly scanning as possible (power is not an issue). When I scan for 200mS, am I scanning all 3 advertisement channels sequentially, consecutively or simultaneously?
Scan 200ms on 37, scan 200ms on 38, scan 200ms on 39
Scan for 200ms/3 on 37, Scan for 200ms/3 on 38, Scan for 200ms/3 on 39
Scan for 200mS on 37,38,39
Something else entirely?
Is there a way to know what advertisement channel the received advertisement came from? Or is there a way to force the advertiser to only broadcast on one channel?
That's not how advertising works, the advertisement intervals is not in between different channels. You advertise no channels 37-39 consecutively and then wait before advertising again on those 3 channels.
On the scanner side it is like your first description, you will listen to one single channel during each scan interval and then go to the next one in the subsequent scan interval. So if you want to quickly rotate through the 3 advertisement channels you should set a short scan interval.
So a site I've been using for research shows this description. Is this not accurate?
take a look at Figure 1 in this article:
I think it better matches how the advertising actually works.
The picture that you attached is not necessarily wrong. I checked the BLE 4.0 specification and it says:
"The channel is divided into advertising events where each advertising event
can hop on all three advertising PHY channels." (3.3.2 LE Physical Channels)
I read the spec as follows: It is possible (but not mandatory) to advertise on all channels during one advertisement event.