[contrib] Add a utility to convert an IE page to an enum
This script is parsing the values, converting the bits into a number and replacing the text... This should help to go from spec to code more quickly... next thing would be this for the structs used...
This commit is contained in:
parent
b9b8c6dbb6
commit
adb8bcea5f
|
@ -0,0 +1,37 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
#
|
||||||
|
# Convert ETSI documents to an enum
|
||||||
|
#
|
||||||
|
|
||||||
|
import re, sys
|
||||||
|
|
||||||
|
def convert(string):
|
||||||
|
string = string.strip().replace(" ", "").rjust(8, "0")
|
||||||
|
var = 0
|
||||||
|
offset = 7
|
||||||
|
for char in string:
|
||||||
|
assert offset >= 0
|
||||||
|
var = var | (int(char) << offset)
|
||||||
|
offset = offset - 1
|
||||||
|
|
||||||
|
return var
|
||||||
|
|
||||||
|
def string(name):
|
||||||
|
name = name.replace(" ", "_")
|
||||||
|
name = name.replace('"', "")
|
||||||
|
name = name.replace('/', '_')
|
||||||
|
name = name.replace('(', '_')
|
||||||
|
name = name.replace(')', '_')
|
||||||
|
return "%s_%s" % (sys.argv[2], name.upper())
|
||||||
|
|
||||||
|
file = open(sys.argv[1])
|
||||||
|
|
||||||
|
|
||||||
|
for line in file:
|
||||||
|
m = re.match(r"[ \t]*(?P<value>[01 ]+)[ ]+(?P<name>[a-zA-Z /0-9()]+)", line[:-1])
|
||||||
|
|
||||||
|
if m:
|
||||||
|
print "\t%s\t\t= %d," % (string(m.groupdict()["name"]), convert(m.groupdict()["value"]))
|
||||||
|
else:
|
||||||
|
print line[:-1]
|
Loading…
Reference in New Issue