1 Reply Latest reply on Oct 11, 2016 4:33 AM by userc_39500

    Scan+Advertise vs Connected+Broadcasting

      I understand a few stipulations for simultaneously scanning and advertising, and also broadcasting while in a connected state, such as while connected, broadcasts must be non-connectable, undirected advertisements, however, while scanning, advertisements can be of any type.  Also, as far as API calls, starting advertisements must happen before starting up scanning.  I do have some related questions involving the connected/broadcasting function that isn't mention in the docs though, if anyone can help:


      1.  I noticed that there is no "NON_CONNECTABLE_DIRECTED_ADV".  The non-connectable portion is understandable, but what if, for example, I wanted a connected device's broadcast to only reach a specific non-connected device?  How would that be accomplished?


      2.   If directed broadcasting isn't possible, do these broadcast advertisements have a scan response packet? 


           If so, does filtering apply?  I figured that if I can't direct the advertisement, I could filter the scan response packet from everything but the defined devices.


      3.  This one relates to both Scanning/Advertising and Connected/Broadcasting: Can you dynamically update these advertisements using CyBle_GapUpdateAdvData while scanning or connected, or would you need to be in a disconnected, or non-broadcasting, state, update, then restart?

        • 1. Re: Scan+Advertise vs Connected+Broadcasting

          Directed Advertising is a special kind of advertisement where slave aggressively targets a master. Since this aggressive advertisement "pollutes the air", they are only allowed for 1.28 seconds. Citing "Bluetooth Low Energy - The Developer's Handbook" by Robin Heydon (7.5.2):


          When using directed advertising, a device cannot be actively scanned. Also, directed advertising packets cannot have any additional data in the payload of the packet; they contain only the two addresses needed, and nothing more.


          As far as I understand, Directed Advertisements are used to let a previously connected slave to disconnect from master (to save power?) and then fast connect back to the master when it needs to transmit some data to it.




          I think you should use (the normal) Undirected Advertisements. It's up to the master to make a connection (initiator) so any master should actually be able to connect to your device. You can however make a bond with a master and slave to prevent other masters from connecting, and the newer Bluetooth 4.2 actually lets the Link Layer perform the address resolving; see http://www.cypress.com/forum/psoc-4-ble/whitelisting-resolvable-random-address . If you want to target a specific device, you can put thats address into the Advertising Data. If you have a Manufacturer ID (you get such for free from Bluetooth SIG), you can put anything you want into advertisements. However, there are actually two interesting, official datatypes for Advertising Data you can take a look at: Public Target Address and Random Target Address. See "Core Specification Supplement (CSS) v6" (1.13, 1.14) found here: https://www.bluetooth.com/specifications/adopted-specifications