/ examples / ble_detailed_scan.py
ble_detailed_scan.py
 1  # This example scans for any BLE advertisements and prints one advertisement and one scan response
 2  # from every device found. This scan is more detailed than the simple test because it includes
 3  # specialty advertising types.
 4  
 5  from adafruit_ble import BLERadio
 6  
 7  from adafruit_ble.advertising import Advertisement
 8  from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
 9  
10  ble = BLERadio()
11  print("scanning")
12  found = set()
13  scan_responses = set()
14  # By providing Advertisement as well we include everything, not just specific advertisements.
15  for advertisement in ble.start_scan(ProvideServicesAdvertisement, Advertisement):
16      addr = advertisement.address
17      if advertisement.scan_response and addr not in scan_responses:
18          scan_responses.add(addr)
19      elif not advertisement.scan_response and addr not in found:
20          found.add(addr)
21      else:
22          continue
23      print(addr, advertisement)
24      print("\t" + repr(advertisement))
25      print()
26  
27  print("scan done")