forked from platypush/platypush
88 lines
2.2 KiB
Python
88 lines
2.2 KiB
Python
from marshmallow import fields, Schema, INCLUDE
|
|
|
|
|
|
class HidDeviceSchema(Schema):
|
|
class Meta:
|
|
unknown = INCLUDE
|
|
|
|
path = fields.String(
|
|
metadata={
|
|
'description': 'Path to the raw HID device',
|
|
'example': '/dev/hidraw0',
|
|
},
|
|
)
|
|
|
|
serial_number = fields.String(
|
|
metadata={
|
|
'description': 'Serial number',
|
|
'example': '00:11:22:33:44:55',
|
|
},
|
|
)
|
|
|
|
vendor_id = fields.Integer(
|
|
metadata={
|
|
'description': 'Vendor ID',
|
|
'example': 1234,
|
|
},
|
|
)
|
|
|
|
product_id = fields.Integer(
|
|
metadata={
|
|
'description': 'Product ID',
|
|
'example': 4321,
|
|
},
|
|
)
|
|
|
|
manufacturer_string = fields.String(
|
|
metadata={
|
|
'description': 'Manufacturer custom string',
|
|
'example': 'foo',
|
|
},
|
|
)
|
|
|
|
product_string = fields.String(
|
|
metadata={
|
|
'description': 'Main name of the product',
|
|
'example': 'My Device',
|
|
},
|
|
)
|
|
|
|
|
|
class HidMonitoredDeviceSchema(HidDeviceSchema):
|
|
notify_only_if_changed = fields.Boolean(
|
|
missing=True,
|
|
metadata={
|
|
'description': 'If set to true (default), only changes in the '
|
|
'values of the device will trigger events. So if you are e.g. '
|
|
'monitoring the state of a joystick, only changes in the pressed '
|
|
'buttons will trigger events.',
|
|
},
|
|
)
|
|
|
|
data_size = fields.Integer(
|
|
missing=64,
|
|
metadata={
|
|
'description': 'How many bytes should be read from the device on '
|
|
'each iteration (default: 64)',
|
|
},
|
|
)
|
|
|
|
poll_seconds = fields.Float(
|
|
missing=0,
|
|
metadata={
|
|
'description': 'How often we should wait before data reads '
|
|
'(default: no wait)'
|
|
},
|
|
)
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
for attr in (
|
|
'path',
|
|
'serial_number',
|
|
'vendor_id',
|
|
'product_id',
|
|
'manufacturer_string',
|
|
'product_string',
|
|
):
|
|
self._declared_fields[attr].metadata['description'] += ' (optional)'
|