@@ -37,6 +37,7 @@ def __init__(self, adapter_name):
3737 raise _error_from_dbus_error (e )
3838 object_manager_object = self ._bus .get_object ("org.bluez" , "/" )
3939 self ._adapter = dbus .Interface (adapter_object , 'org.bluez.Adapter1' )
40+ self ._adapter_properties = dbus .Interface (self ._adapter , 'org.freedesktop.DBus.Properties' )
4041 self ._object_manager = dbus .Interface (object_manager_object , "org.freedesktop.DBus.ObjectManager" )
4142 self ._device_path_regex = re .compile ('^/org/bluez/' + adapter_name + '/dev((_[A-Z0-9]{2}){6})$' )
4243 self ._devices = {}
@@ -47,6 +48,14 @@ def __init__(self, adapter_name):
4748
4849 self .update_devices ()
4950
51+ @property
52+ def is_adapter_powered (self ):
53+ return self ._adapter_properties .Get ('org.bluez.Adapter1' , 'Powered' ) == 1
54+
55+ @is_adapter_powered .setter
56+ def is_adapter_powered (self , powered ):
57+ return self ._adapter_properties .Set ('org.bluez.Adapter1' , 'Powered' , dbus .Boolean (powered ))
58+
5059 def run (self ):
5160 """
5261 Starts the main loop that is necessary to receive Bluetooth events from the Bluetooth adapter.
@@ -129,7 +138,9 @@ def start_discovery(self, service_uuids=[]):
129138 self ._adapter .StartDiscovery ()
130139 except dbus .exceptions .DBusException as e :
131140 if e .get_dbus_name () == 'org.bluez.Error.NotReady' :
132- raise errors .NotReady ("Bluetooth adapter not ready. Run 'echo \" power on\" | sudo bluetoothctl'." )
141+ raise errors .NotReady (
142+ "Bluetooth adapter not ready. "
143+ "Set `is_adapter_powered` to `True` or run 'echo \" power on\" | sudo bluetoothctl'." )
133144 if e .get_dbus_name () == 'org.bluez.Error.InProgress' :
134145 # Discovery was already started - ignore exception
135146 pass
0 commit comments