You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
867 B
44 lines
867 B
6 years ago
|
#!/usr/bin/env python3
|
||
|
|
||
|
import config_pb2
|
||
|
import yaml
|
||
|
|
||
|
|
||
|
def dict2pb(d, pb):
|
||
|
for key in d:
|
||
|
val = d[key]
|
||
|
if isinstance(val, dict):
|
||
|
dict2pb(val, getattr(pb, key))
|
||
|
else:
|
||
|
setattr(pb, key, val)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
with open('./tools/config.yml', 'r') as configfile:
|
||
|
config = yaml.load(configfile)
|
||
|
|
||
|
if 'REVISION' in config:
|
||
|
config_rev = config['REVISION']
|
||
|
del config['REVISION']
|
||
|
else:
|
||
|
config_rev = 1
|
||
|
|
||
|
confpb = config_pb2.Config()
|
||
|
dict2pb(config, confpb)
|
||
|
|
||
|
pbdata = confpb.SerializeToString()
|
||
|
|
||
|
pbdataarry = ','.join([str(int(b)) for b in pbdata])
|
||
|
|
||
|
cfile = """#include <stdint.h>
|
||
|
|
||
|
uint8_t CONFIG_DATA[] = {%s};
|
||
|
size_t CONFIG_DATA_LEN = %s;
|
||
|
int CONFIG_REV = %s;""" % (pbdataarry, len(pbdata), int(config_rev))
|
||
|
|
||
|
print(cfile)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|