hwdb: sort usb classes and vendors
No change, but let's keep the sorting in place as a safeguard for the future.
This commit is contained in:
parent
0a91fd3bd6
commit
53f4c5fa21
|
@ -124,52 +124,66 @@ def add_item(items, key, value):
|
||||||
items[key] = value
|
items[key] = value
|
||||||
|
|
||||||
def usb_vendor_model(p):
|
def usb_vendor_model(p):
|
||||||
|
items = {}
|
||||||
|
|
||||||
|
for vendor_group in p.VENDORS:
|
||||||
|
vendor = vendor_group.VENDOR.vendor.upper()
|
||||||
|
text = vendor_group.VENDOR.text.strip()
|
||||||
|
add_item(items, (vendor,), text)
|
||||||
|
|
||||||
|
for vendor_dev in vendor_group.VENDOR_DEV:
|
||||||
|
device = vendor_dev.device.upper()
|
||||||
|
text = vendor_dev.text.strip()
|
||||||
|
add_item(items, (vendor, device), text)
|
||||||
|
|
||||||
with open('20-usb-vendor-model.hwdb', 'wt') as out:
|
with open('20-usb-vendor-model.hwdb', 'wt') as out:
|
||||||
header(out, 'http://www.linux-usb.org/usb.ids')
|
header(out, 'http://www.linux-usb.org/usb.ids')
|
||||||
|
|
||||||
for vendor_group in p.VENDORS:
|
for key in sorted(items):
|
||||||
vendor = vendor_group.VENDOR.vendor.upper()
|
if len(key) == 1:
|
||||||
text = vendor_group.VENDOR.text.strip()
|
p, n = 'usb:v{}*', 'VENDOR'
|
||||||
print(f'',
|
else:
|
||||||
f'usb:v{vendor}*',
|
p, n = 'usb:v{}p{}*', 'MODEL',
|
||||||
f' ID_VENDOR_FROM_DATABASE={text}', sep='\n', file=out)
|
print('', p.format(*key),
|
||||||
|
f' ID_{n}_FROM_DATABASE={items[key]}', sep='\n', file=out)
|
||||||
|
|
||||||
for vendor_dev in vendor_group.VENDOR_DEV:
|
|
||||||
device = vendor_dev.device.upper()
|
|
||||||
text = vendor_dev.text.strip()
|
|
||||||
print(f'',
|
|
||||||
f'usb:v{vendor}p{device}*',
|
|
||||||
f' ID_MODEL_FROM_DATABASE={text}', sep='\n', file=out)
|
|
||||||
print(f'Wrote {out.name}')
|
print(f'Wrote {out.name}')
|
||||||
|
|
||||||
def usb_classes(p):
|
def usb_classes(p):
|
||||||
|
items = {}
|
||||||
|
|
||||||
|
for klass_group in p.CLASSES:
|
||||||
|
klass = klass_group.KLASS.klass.upper()
|
||||||
|
text = klass_group.KLASS.text.strip()
|
||||||
|
|
||||||
|
if klass != '00' and not re.match(r'(\?|None|Unused)\s*$', text):
|
||||||
|
add_item(items, (klass,), text)
|
||||||
|
|
||||||
|
for subclass_group in klass_group.SUBCLASSES:
|
||||||
|
subclass = subclass_group.subclass.upper()
|
||||||
|
text = subclass_group.text.strip()
|
||||||
|
if subclass != '00' and not re.match(r'(\?|None|Unused)\s*$', text):
|
||||||
|
add_item(items, (klass, subclass), text)
|
||||||
|
|
||||||
|
for protocol_group in subclass_group.PROTOCOLS:
|
||||||
|
protocol = protocol_group.protocol.upper()
|
||||||
|
text = protocol_group.name.strip()
|
||||||
|
if klass != '00' and not re.match(r'(\?|None|Unused)\s*$', text):
|
||||||
|
add_item(items, (klass, subclass, protocol), text)
|
||||||
|
|
||||||
with open('20-usb-classes.hwdb', 'wt') as out:
|
with open('20-usb-classes.hwdb', 'wt') as out:
|
||||||
header(out, 'http://www.linux-usb.org/usb.ids')
|
header(out, 'http://www.linux-usb.org/usb.ids')
|
||||||
|
|
||||||
for klass_group in p.CLASSES:
|
for key in sorted(items):
|
||||||
klass = klass_group.KLASS.klass.upper()
|
if len(key) == 1:
|
||||||
text = klass_group.KLASS.text.strip()
|
p, n = 'usb:v*p*d*dc{}*', 'CLASS'
|
||||||
|
elif len(key) == 2:
|
||||||
|
p, n = 'usb:v*p*d*dc{}dsc{}*', 'SUBCLASS'
|
||||||
|
else:
|
||||||
|
p, n = 'usb:v*p*d*dc{}dsc{}dp{}*', 'PROTOCOL'
|
||||||
|
print('', p.format(*key),
|
||||||
|
f' ID_USB_{n}_FROM_DATABASE={items[key]}', sep='\n', file=out)
|
||||||
|
|
||||||
if klass != '00' and not re.match(r'(\?|None|Unused)\s*$', text):
|
|
||||||
print(f'',
|
|
||||||
f'usb:v*p*d*dc{klass}*',
|
|
||||||
f' ID_USB_CLASS_FROM_DATABASE={text}', sep='\n', file=out)
|
|
||||||
|
|
||||||
for subclass_group in klass_group.SUBCLASSES:
|
|
||||||
subclass = subclass_group.subclass.upper()
|
|
||||||
text = subclass_group.text.strip()
|
|
||||||
if subclass != '00' and not re.match(r'(\?|None|Unused)\s*$', text):
|
|
||||||
print(f'',
|
|
||||||
f'usb:v*p*d*dc{klass}dsc{subclass}*',
|
|
||||||
f' ID_USB_SUBCLASS_FROM_DATABASE={text}', sep='\n', file=out)
|
|
||||||
|
|
||||||
for protocol_group in subclass_group.PROTOCOLS:
|
|
||||||
protocol = protocol_group.protocol.upper()
|
|
||||||
text = protocol_group.name.strip()
|
|
||||||
if klass != '00' and not re.match(r'(\?|None|Unused)\s*$', text):
|
|
||||||
print(f'',
|
|
||||||
f'usb:v*p*d*dc{klass}dsc{subclass}dp{protocol}*',
|
|
||||||
f' ID_USB_PROTOCOL_FROM_DATABASE={text}', sep='\n', file=out)
|
|
||||||
print(f'Wrote {out.name}')
|
print(f'Wrote {out.name}')
|
||||||
|
|
||||||
def pci_vendor_model(p):
|
def pci_vendor_model(p):
|
||||||
|
|
Loading…
Reference in a new issue