diff options
author | Andrew Scheller <github@loowis.durge.org> | 2014-04-11 00:02:10 +0100 |
---|---|---|
committer | Andrew Scheller <github@loowis.durge.org> | 2014-04-16 02:41:26 +0100 |
commit | 1452221aca8851df029702e8a71be339005bd5fd (patch) | |
tree | 1d310c209c57b3b8d2e0add4125fec5fb001b49d /tools/insert-usb-ids.py | |
parent | 2822d4e6ce9cdb29fcf4646212519447da338678 (diff) | |
download | micropython-1452221aca8851df029702e8a71be339005bd5fd.tar.gz micropython-1452221aca8851df029702e8a71be339005bd5fd.zip |
Auto-generate the stmhal/pybcdc_inf header file from static files
The USB VID&PID are automatically extracted from usbd_desc_cdc_msc.c
and inserted into pybcdc_inf.template, ensuring that the same USB
IDs get used everywhere
Diffstat (limited to 'tools/insert-usb-ids.py')
-rw-r--r-- | tools/insert-usb-ids.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/insert-usb-ids.py b/tools/insert-usb-ids.py new file mode 100644 index 0000000000..af010dad95 --- /dev/null +++ b/tools/insert-usb-ids.py @@ -0,0 +1,36 @@ +# Reads the USB VID and PID from the file specifed by sys.arg[1] and then +# inserts those values into the template file specified by sys.argv[2], +# printing the result to stdout + +from __future__ import print_function + +import sys +import re +import string + +def parse_usb_ids(filename): + rv = dict() + if filename == 'usbd_desc_cdc_msc.c': + for line in open(filename).readlines(): + line = line.rstrip('\r\n') + match = re.match('^#define\s+(\w+)\s+0x(\d+)$', line) + if match: + if match.group(1) == 'USBD_VID': + rv['USB_VID'] = match.group(2) + elif match.group(1) == 'USBD_PID': + rv['USB_PID'] = match.group(2) + if 'USB_VID' in rv and 'USB_PID' in rv: + break + else: + raise Exception("Don't (yet) know how to parse USB IDs from %s" % filename) + for k in ('USB_PID', 'USB_VID'): + if k not in rv: + raise Exception("Unable to parse %s from %s" % (k, filename)) + return rv + +if __name__ == "__main__": + usb_ids_file = sys.argv[1] + template_file = sys.argv[2] + replacements = parse_usb_ids(usb_ids_file) + for line in open(template_file, 'r').readlines(): + print(string.Template(line).safe_substitute(replacements), end='') |