I'm looking into how (very precise microsecond) synchronization in BLE among (slave) nodes might be possible and I've come up with a couple ideas. I'm hoping I can get some input on what looks achievable/unlikely.
1) Advertiser mode: One node acts in advertisement mode to broadcast a 'synchronization' packet with the other nodes (to be synchronized with eachother, the broadcaster node remains unsynchronized) listening. Broadcast packets are assumed to be received by all nodes at approximately the same time. Upon reception of a packet, a node immediately saves its current local time and then adjusts it to be 0 (in the case that after the packet is processed it is found out to be not a synchronization packet, the time can be reset by knowing the saved time.)
Problems/Questions
1a) Do the listening nodes actually receive the packet at the same time? In classic BT this appears to be yes but in BLE it sounds as if the listening nodes are searching over 3 different frequencies which would mean the synch packet might arrive at different times to each of the nodes which would ruin this approach
2a) Connectionless approach...no encryption...Also, would appear that in actual usage the system would alternate between advertisement mode (to get synchronized) and then connection mode (where the slaves transfer data back to the master), not sure how feasible this really is..
3a) Other nearby advertisers could lead to a lot of disruptions in this scenario, perhaps nodes should be synchronized coarsely at first (inside of a connection) which then allows scheduling a fine grain synchronization afterwards?
2) Connection Mode: Say there are 2 nodes to be synchronized with eachother. Node 1 would send a time stamp (created at a low level to avoid delays) to node 2. Node 1 would then immediately send a second time stamp to node 2(to account for the sending delays). Node 2 would use both time stamps (and possibly reception time stamps of its own to compensate for reception delays) to synchronize itself to Node 1.
Problems
2a) Possibly lots of variable delays introduced in this method...Can low level time stamping be easily done with the BLE stack or will it require significant firmware modifications?
Any help or info anyone can provide would be great.
Thanks