some extra asserts on hid++ 1.0 register r/w

This commit is contained in:
Daniel Pavel 2013-06-23 18:16:13 +02:00
parent cec892ce88
commit 422cd26b92
1 changed files with 20 additions and 0 deletions

View File

@ -86,18 +86,25 @@ PAIRING_ERRORS = _NamedInts(
# #
def read_register(device, register_number, *params): def read_register(device, register_number, *params):
assert device
# support long registers by adding a 2 in front of the number # support long registers by adding a 2 in front of the number
request_id = 0x8100 | (int(register_number) & 0x2FF) request_id = 0x8100 | (int(register_number) & 0x2FF)
return device.request(request_id, *params) return device.request(request_id, *params)
def write_register(device, register_number, *value): def write_register(device, register_number, *value):
assert device
# support long registers by adding a 2 in front of the number # support long registers by adding a 2 in front of the number
request_id = 0x8000 | (int(register_number) & 0x2FF) request_id = 0x8000 | (int(register_number) & 0x2FF)
return device.request(request_id, *value) return device.request(request_id, *value)
def get_register(device, name, default_number=-1): def get_register(device, name, default_number=-1):
assert device
assert device.kind is not None
if not device.online:
return
known_register = device.registers.get(name) known_register = device.registers.get(name)
register = known_register or default_number register = known_register or default_number
if register > 0: if register > 0:
@ -112,6 +119,11 @@ def get_register(device, name, default_number=-1):
def get_battery(device): def get_battery(device):
assert device
assert device.kind is not None
if not device.online:
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 >= 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
@ -152,6 +164,8 @@ def parse_battery_reply_07(level, battery_status):
def get_serial(device): def get_serial(device):
assert device
if device.kind is None: if device.kind is None:
dev_id = 0x03 dev_id = 0x03
receiver = device receiver = device
@ -166,6 +180,8 @@ def get_serial(device):
def get_firmware(device): def get_firmware(device):
assert device
firmware = [None, None] firmware = [None, None]
reply = read_register(device, 0xF1, 0x01) reply = read_register(device, 0xF1, 0x01)
@ -193,6 +209,8 @@ def get_firmware(device):
def get_notification_flags(device): def get_notification_flags(device):
assert device
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 p = device.protocol
@ -206,6 +224,8 @@ def get_notification_flags(device):
def set_notification_flags(device, *flag_bits): def set_notification_flags(device, *flag_bits):
assert device
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 p = device.protocol