1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""PyBluez simple example asyncronous-inquiry.py
Demonstration of how to do asynchronous device discovery by subclassing
the DeviceDiscoverer class
Linux only (5/5/2006)
Author: Albert Huang <albert@csail.mit.edu>
$Id: asynchronous-inquiry.py 405 2006-05-06 00:39:50Z albert $
"""
import select
import bluetooth
class MyDiscoverer(bluetooth.DeviceDiscoverer):
def pre_inquiry(self):
self.done = False
def device_discovered(self, address, device_class, rssi, name):
print("{} - {}".format(address, name))
# get some information out of the device class and display it.
# voodoo magic specified at:
# https://www.bluetooth.org/foundry/assignnumb/document/baseband
major_classes = ("Miscellaneous",
"Computer",
"Phone",
"LAN/Network Access Point",
"Audio/Video",
"Peripheral",
"Imaging")
major_class = (device_class >> 8) & 0xf
if major_class < 7:
print(" " + major_classes[major_class])
else:
print(" Uncategorized")
print(" Services:")
service_classes = ((16, "positioning"),
(17, "networking"),
(18, "rendering"),
(19, "capturing"),
(20, "object transfer"),
(21, "audio"),
(22, "telephony"),
(23, "information"))
for bitpos, classname in service_classes:
if device_class & (1 << (bitpos-1)):
print(" ", classname)
print(" RSSI:", rssi)
def inquiry_complete(self):
self.done = True
d = MyDiscoverer()
d.find_devices(lookup_names=True)
readfiles = [d, ]
while True:
rfds = select.select(readfiles, [], [])[0]
if d in rfds:
d.process_event()
if d.done:
break
|