X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fifacebase.py;h=cdbfc4d63d23e279bca6a988b0f7df533c2d1cf5;hb=c492bfb3a86f01e770414f52c1f5884c1bc80cea;hp=81e4e9d2fcaa8da932a5bd04206744effcbd5052;hpb=343e005826e676bb85c33bb24c9c8adbf1b5af57;p=pinmux.git diff --git a/src/ifacebase.py b/src/ifacebase.py index 81e4e9d..cdbfc4d 100644 --- a/src/ifacebase.py +++ b/src/ifacebase.py @@ -1,3 +1,4 @@ +import json import os.path try: @@ -5,6 +6,31 @@ try: except ImportError: from collections import UserDict +def _decode_list(data): + rv = [] + for item in data: + if isinstance(item, unicode): + item = item.encode('utf-8') + elif isinstance(item, list): + item = _decode_list(item) + elif isinstance(item, dict): + item = _decode_dict(item) + rv.append(item) + return rv + +def _decode_dict(data): + rv = {} + for key, value in data.iteritems(): + if isinstance(key, unicode): + key = key.encode('utf-8') + if isinstance(value, unicode): + value = value.encode('utf-8') + elif isinstance(value, list): + value = _decode_list(value) + elif isinstance(value, dict): + value = _decode_dict(value) + rv[key] = value + return rv class InterfacesBase(UserDict): """ contains a list of interface definitions @@ -14,21 +40,30 @@ class InterfacesBase(UserDict): self.pth = pth self.fastbus = [] self.ifacecount = [] + self.fastbus = [] if ifaceklsdict is None: ifaceklsdict = {} UserDict.__init__(self, {}) if not pth: return ift = 'interfaces.txt' + cfg = 'configs.txt' if pth: ift = os.path.join(pth, ift) + cfg = os.path.join(pth, cfg) + + with open(cfg, 'r') as ifile: + self.configs = json.loads(ifile.read(), object_hook=_decode_dict) + + print self.configs + + exit(0) with open(ift, 'r') as ifile: for ln in ifile.readlines(): ln = ln.strip() ln = ln.split("\t") name = ln[0] # will have uart count = int(ln[1]) # will have count of uart - self.fastbus += ln[2:] # spec looks like this: """ [{'name': 'sda', 'outen': True},