pass over config in json format
[pinmux.git] / src / ifacebase.py
index e5e7e974d17335c925b020367e39e565c9e60687..cdbfc4d63d23e279bca6a988b0f7df533c2d1cf5 100644 (file)
@@ -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
@@ -12,15 +38,26 @@ class InterfacesBase(UserDict):
 
     def __init__(self, ifacekls, pth=None, ifaceklsdict=None):
         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()