device: fix bug found in testing
This commit is contained in:
parent
c7195881e3
commit
b616419f72
|
@ -305,6 +305,21 @@ class Device:
|
||||||
self._profiles = _hidpp20.get_profiles(self)
|
self._profiles = _hidpp20.get_profiles(self)
|
||||||
return self._profiles
|
return self._profiles
|
||||||
|
|
||||||
|
def set_configuration(self, configuration, no_reply=False):
|
||||||
|
if self.online and self.protocol >= 2.0:
|
||||||
|
_hidpp20.config_change(self, configuration, no_reply=no_reply)
|
||||||
|
|
||||||
|
def reset(self, no_reply=False):
|
||||||
|
self.set_configuration(0, no_reply)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def persister(self):
|
||||||
|
if not self._persister:
|
||||||
|
with self._persister_lock:
|
||||||
|
if not self._persister:
|
||||||
|
self._persister = _configuration.persister(self)
|
||||||
|
return self._persister
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def settings(self):
|
def settings(self):
|
||||||
if not self._settings:
|
if not self._settings:
|
||||||
|
@ -328,21 +343,6 @@ class Device:
|
||||||
self._feature_settings_checked = _check_feature_settings(self, self._settings)
|
self._feature_settings_checked = _check_feature_settings(self, self._settings)
|
||||||
return self._settings
|
return self._settings
|
||||||
|
|
||||||
def set_configuration(self, configuration, no_reply=False):
|
|
||||||
if self.online and self.protocol >= 2.0:
|
|
||||||
_hidpp20.config_change(self, configuration, no_reply=no_reply)
|
|
||||||
|
|
||||||
def reset(self, no_reply=False):
|
|
||||||
self.set_configuration(0, no_reply)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def persister(self):
|
|
||||||
if not self._persister:
|
|
||||||
with self._persister_lock:
|
|
||||||
if not self._persister:
|
|
||||||
self._persister = _configuration.persister(self)
|
|
||||||
return self._persister
|
|
||||||
|
|
||||||
def battery(self): # None or level, next, status, voltage
|
def battery(self): # None or level, next, status, voltage
|
||||||
if self.protocol < 2.0:
|
if self.protocol < 2.0:
|
||||||
return _hidpp10.get_battery(self)
|
return _hidpp10.get_battery(self)
|
||||||
|
@ -368,6 +368,8 @@ class Device:
|
||||||
|
|
||||||
changed = self.battery_info != info
|
changed = self.battery_info != info
|
||||||
self.battery_info, old_info = info, self.battery_info
|
self.battery_info, old_info = info, self.battery_info
|
||||||
|
if old_info is None:
|
||||||
|
old_info = Battery(None, None, None, None)
|
||||||
|
|
||||||
alert, reason = ALERT.NONE, None
|
alert, reason = ALERT.NONE, None
|
||||||
if not info.ok():
|
if not info.ok():
|
||||||
|
@ -387,30 +389,6 @@ class Device:
|
||||||
battery = self.battery()
|
battery = self.battery()
|
||||||
self.set_battery_info(battery if battery is not None else Battery(None, None, None, None))
|
self.set_battery_info(battery if battery is not None else Battery(None, None, None, None))
|
||||||
|
|
||||||
def enable_connection_notifications(self, enable=True):
|
|
||||||
"""Enable or disable device (dis)connection notifications on this
|
|
||||||
receiver."""
|
|
||||||
if not bool(self.receiver) or self.protocol >= 2.0:
|
|
||||||
return False
|
|
||||||
|
|
||||||
if enable:
|
|
||||||
set_flag_bits = (
|
|
||||||
hidpp10_constants.NOTIFICATION_FLAG.battery_status
|
|
||||||
| hidpp10_constants.NOTIFICATION_FLAG.ui
|
|
||||||
| hidpp10_constants.NOTIFICATION_FLAG.configuration_complete
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
set_flag_bits = 0
|
|
||||||
ok = _hidpp10.set_notification_flags(self, set_flag_bits)
|
|
||||||
if not ok:
|
|
||||||
logger.warning("%s: failed to %s device notifications", self, "enable" if enable else "disable")
|
|
||||||
|
|
||||||
flag_bits = _hidpp10.get_notification_flags(self)
|
|
||||||
if logger.isEnabledFor(logging.INFO):
|
|
||||||
flag_names = None if flag_bits is None else tuple(hidpp10_constants.NOTIFICATION_FLAG.flag_names(flag_bits))
|
|
||||||
logger.info("%s: device notifications %s %s", self, "enabled" if enable else "disabled", flag_names)
|
|
||||||
return flag_bits if ok else None
|
|
||||||
|
|
||||||
def changed(self, active=None, alert=ALERT.NONE, reason=None, push=False):
|
def changed(self, active=None, alert=ALERT.NONE, reason=None, push=False):
|
||||||
"""The status of the device had changed, so invoke the status callback.
|
"""The status of the device had changed, so invoke the status callback.
|
||||||
Also push notifications and settings to the device when necessary."""
|
Also push notifications and settings to the device when necessary."""
|
||||||
|
@ -442,6 +420,30 @@ class Device:
|
||||||
if self.status_callback is not None:
|
if self.status_callback is not None:
|
||||||
self.status_callback(self, alert, reason)
|
self.status_callback(self, alert, reason)
|
||||||
|
|
||||||
|
def enable_connection_notifications(self, enable=True):
|
||||||
|
"""Enable or disable device (dis)connection notifications on this
|
||||||
|
receiver."""
|
||||||
|
if not bool(self.receiver) or self.protocol >= 2.0:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if enable:
|
||||||
|
set_flag_bits = (
|
||||||
|
hidpp10_constants.NOTIFICATION_FLAG.battery_status
|
||||||
|
| hidpp10_constants.NOTIFICATION_FLAG.ui
|
||||||
|
| hidpp10_constants.NOTIFICATION_FLAG.configuration_complete
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
set_flag_bits = 0
|
||||||
|
ok = _hidpp10.set_notification_flags(self, set_flag_bits)
|
||||||
|
if not ok:
|
||||||
|
logger.warning("%s: failed to %s device notifications", self, "enable" if enable else "disable")
|
||||||
|
|
||||||
|
flag_bits = _hidpp10.get_notification_flags(self)
|
||||||
|
if logger.isEnabledFor(logging.INFO):
|
||||||
|
flag_names = None if flag_bits is None else tuple(hidpp10_constants.NOTIFICATION_FLAG.flag_names(flag_bits))
|
||||||
|
logger.info("%s: device notifications %s %s", self, "enabled" if enable else "disabled", flag_names)
|
||||||
|
return flag_bits if ok else None
|
||||||
|
|
||||||
def add_notification_handler(self, id: str, fn):
|
def add_notification_handler(self, id: str, fn):
|
||||||
"""Adds the notification handling callback `fn` to this device under name `id`.
|
"""Adds the notification handling callback `fn` to this device under name `id`.
|
||||||
If a callback has already been registered under this name, it's replaced with
|
If a callback has already been registered under this name, it's replaced with
|
||||||
|
|
Loading…
Reference in New Issue