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.
43 lines
867 B
43 lines
867 B
#!/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()
|
|
|