fixed handling of protocol version when the device is offline

This commit is contained in:
Daniel Pavel 2013-07-12 22:23:03 +02:00
parent 141a5c3dee
commit a966bbff6f
4 changed files with 7 additions and 9 deletions

View File

@ -140,7 +140,7 @@ def get_battery(device):
return return
"""Reads a device's battery level, if provided by the HID++ 1.0 protocol.""" """Reads a device's battery level, if provided by the HID++ 1.0 protocol."""
if device.protocol >= 2.0: if device.protocol and device.protocol >= 2.0:
# let's just assume HID++ 2.0 devices do not provide the battery info in a register # let's just assume HID++ 2.0 devices do not provide the battery info in a register
return return
@ -288,8 +288,7 @@ def get_notification_flags(device):
# or the device does not support registers. # or the device does not support registers.
if device.kind is not None: if device.kind is not None:
# peripherals with protocol >= 2.0 don't support registers # peripherals with protocol >= 2.0 don't support registers
p = device.protocol if device.protocol and device.protocol >= 2.0:
if p is not None and p >= 2.0:
return return
flags = read_register(device, REGISTERS.notifications) flags = read_register(device, REGISTERS.notifications)
@ -305,8 +304,7 @@ def set_notification_flags(device, *flag_bits):
# or the device does not support registers. # or the device does not support registers.
if device.kind is not None: if device.kind is not None:
# peripherals with protocol >= 2.0 don't support registers # peripherals with protocol >= 2.0 don't support registers
p = device.protocol if device.protocol and device.protocol >= 2.0:
if p is not None and p >= 2.0:
return return
flag_bits = sum(int(b) for b in flag_bits) flag_bits = sum(int(b) for b in flag_bits)

View File

@ -146,7 +146,7 @@ class FeaturesArray(object):
return False return False
# I _think_ this is universally true # I _think_ this is universally true
if self.device.protocol is not None and self.device.protocol < 2.0: if self.device.protocol and self.device.protocol < 2.0:
self.supported = False self.supported = False
self.device.features = None self.device.features = None
self.device = None self.device = None

View File

@ -143,7 +143,7 @@ class PairedDevice(object):
@property @property
def name(self): def name(self):
if self._name is None: if self._name is None:
if self.protocol >= 2.0 and self.online: if self.online and self.protocol >= 2.0:
self._name = _hidpp20.get_name(self) self._name = _hidpp20.get_name(self)
return self._name or self.codename or ('Unknown device %s' % self.wpid) return self._name or self.codename or ('Unknown device %s' % self.wpid)
@ -155,7 +155,7 @@ class PairedDevice(object):
kind = ord(pair_info[7:8]) & 0x0F kind = ord(pair_info[7:8]) & 0x0F
self._kind = _hidpp10.DEVICE_KIND[kind] self._kind = _hidpp10.DEVICE_KIND[kind]
self._polling_rate = ord(pair_info[2:3]) self._polling_rate = ord(pair_info[2:3])
elif self.protocol >= 2.0: elif self.online and self.protocol >= 2.0:
self._kind = _hidpp20.get_kind(self) self._kind = _hidpp20.get_kind(self)
return self._kind or '?' return self._kind or '?'

View File

@ -130,7 +130,7 @@ def check_feature_settings(device, already_known):
"""Try to auto-detect device settings by the HID++ 2.0 features they have.""" """Try to auto-detect device settings by the HID++ 2.0 features they have."""
if device.features is None: if device.features is None:
return return
if device.protocol is not None and device.protocol < 2.0: if device.protocol and device.protocol < 2.0:
return return
if not any(s.name == _FN_SWAP[0] for s in already_known) and _F.FN_INVERSION in device.features: if not any(s.name == _FN_SWAP[0] for s in already_known) and _F.FN_INVERSION in device.features:
fn_swap = FeatureSettings.fn_swap() fn_swap = FeatureSettings.fn_swap()