aboutsummaryrefslogtreecommitdiff
path: root/embassy-usb/gen_config.py
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-02-07 20:49:10 +0100
committerDario Nieuwenhuis <[email protected]>2023-02-08 00:16:04 +0100
commit1d841cc8ac74feacc4d231958ce2c46419ae3bda (patch)
tree44dbe827369eceb661c287d2c47ea17f00878c11 /embassy-usb/gen_config.py
parent4a224efe75c7986f5b3d8c5d6083fa17cb774f12 (diff)
usb: make max interface count configurable at compile time.
Diffstat (limited to 'embassy-usb/gen_config.py')
-rw-r--r--embassy-usb/gen_config.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/embassy-usb/gen_config.py b/embassy-usb/gen_config.py
new file mode 100644
index 000000000..55a7fa3c0
--- /dev/null
+++ b/embassy-usb/gen_config.py
@@ -0,0 +1,73 @@
1import os
2
3abspath = os.path.abspath(__file__)
4dname = os.path.dirname(abspath)
5os.chdir(dname)
6
7features = []
8
9
10def feature(name, default, min, max, pow2=None):
11 vals = set()
12 val = min
13 while val <= max:
14 vals.add(val)
15 if pow2 == True or (isinstance(pow2, int) and val >= pow2):
16 val *= 2
17 else:
18 val += 1
19 vals.add(default)
20
21 features.append(
22 {
23 "name": name,
24 "default": default,
25 "vals": sorted(list(vals)),
26 }
27 )
28
29
30feature("max_interface_count", default=4, min=1, max=8)
31
32# ========= Update Cargo.toml
33
34things = ""
35for f in features:
36 name = f["name"].replace("_", "-")
37 for val in f["vals"]:
38 things += f"{name}-{val} = []"
39 if val == f["default"]:
40 things += " # Default"
41 things += "\n"
42 things += "\n"
43
44SEPARATOR_START = "# BEGIN AUTOGENERATED CONFIG FEATURES\n"
45SEPARATOR_END = "# END AUTOGENERATED CONFIG FEATURES\n"
46HELP = "# Generated by gen_config.py. DO NOT EDIT.\n"
47with open("Cargo.toml", "r") as f:
48 data = f.read()
49before, data = data.split(SEPARATOR_START, maxsplit=1)
50_, after = data.split(SEPARATOR_END, maxsplit=1)
51data = before + SEPARATOR_START + HELP + things + SEPARATOR_END + after
52with open("Cargo.toml", "w") as f:
53 f.write(data)
54
55
56# ========= Update build.rs
57
58things = ""
59for f in features:
60 name = f["name"].upper()
61 things += f' ("{name}", {f["default"]}),\n'
62
63SEPARATOR_START = "// BEGIN AUTOGENERATED CONFIG FEATURES\n"
64SEPARATOR_END = "// END AUTOGENERATED CONFIG FEATURES\n"
65HELP = " // Generated by gen_config.py. DO NOT EDIT.\n"
66with open("build.rs", "r") as f:
67 data = f.read()
68before, data = data.split(SEPARATOR_START, maxsplit=1)
69_, after = data.split(SEPARATOR_END, maxsplit=1)
70data = before + SEPARATOR_START + HELP + \
71 things + " " + SEPARATOR_END + after
72with open("build.rs", "w") as f:
73 f.write(data)