My plan is to see if we can avoid setting up formal connections between BLE nodes, because there is an inherent limitation as to how many connections you can have active at any one time. Eight(8) seems to be the limit, and if you use the s130 softmachine then it looks like the limitations are:
- 3 central connections
- 1 peripheral connection
- 1 observer
- 1 broadcaster
The three central connections allow a device running s130 to simultaneously connect to three devices acting as peripherals. The s120 would only allow 8 connection to peripherals anyway, so there is always a severe upper limit on the number of peripherals (or anchors in our case) with which a mobile could connect at one time. Managing/sharing a limited number of connections among many physical peers would complicate things – and I want to avoid that, at least for our initial protos. Worse, an s301 can connect to exactly one central device.
So an anchor would have to discover a mobile, then go through the whole process of forming a connection, and then would have to drop the connection before linking up with another peer. I get the impression that forming, and maintaining a connection is expensive, and takes a relatively long time.
One thing I have discovered is that it is possible to do some minimal data exchanges without forming any connections. A broadcaster simply emits advertising packets at some interval. An advertising packet allegedly last 300-400 micro seconds. Obviously the length of the interval between advertisements has a substantial impact on the battery life. Equally, an observer can simply listen for advertising packets, but of course it has to wake up and listen at the right time, which can be costly if it doesn’t know exactly when to wake up and listen.
So question #1 is: can our nodes simply run a broadcaster and a listener at the same time? If they can, we are off to the races – maybe slow, and power-hungry races, but we are off!
And then question #2 is: Can a broadcaster and a listener exist in a vacuum without any “master” providing a synchronizing clock signal? If not, then we may be forced to make connections, which could blow away all the gains of using BLE in the first place.
One thing I discovered is that all advertising packets are transmitted on just three of the 40 BLE channels. If there are a lot of advertisers (anchors) then there could be a lot of contention for this channel. So question #3 (probably easiest answered by doing) is: How many simultaneous observers and advertisers can inhabit the same space?
And now I see that the s130 documentation says quite clearly in revision 0.5 p10,
It is not possible to start a scanner and an observer concurrently [in the same s130].
But it doesn’t say that you can’t start an advertiser and an observer concurrently. So question #4, can an advertiser and observer run concurrently?