X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=vis%2Fconfig.py;h=5e5ce4ae731fc44c196983d885a668212d4b8e78;hb=a546c1294b2b97982aa6e4c7153a0f22780c91fe;hp=652ad648c02a068a7959acbd2a19c6f4fe17c463;hpb=2cd0c0e6b9c2f65254909c807199d61ba63a1667;p=~andy%2Fcsm213a-hw diff --git a/vis/config.py b/vis/config.py index 652ad64..5e5ce4a 100644 --- a/vis/config.py +++ b/vis/config.py @@ -1,3 +1,94 @@ +import sys + +if sys.version_info<(3,0,0): + from ConfigParser import ConfigParser +else: + from configparser import ConfigParser + class Config: + # Attributes + filename = "settings.cfg" + + defaults = { + 'serial': { + 'device': '/dev/ttyACM0', + 'baudrate': '921600', + 'parity': 'N', + 'databits': '8', + 'stopbits': '1', + }, + 'xively': { + 'feedid': '', + 'apikey': '', + 'maxrate': '10', + }, + 'enable': { + 'acc': True, + 'mag': True, + 'lgt': True, + 'tch': True, + 'a2d': True, + }, + 'rate': { + 'acc': 1, + 'mag': 1, + 'lgh': 1, + 'tch': 1, + 'a2d': 1, + }, + } + + # Constructor def __init__(self): - pass + self.enable = {} + self.rate = {} + self.parser = ConfigParser() + self.parser.add_section('serial') + self.parser.add_section('xively') + self.parser.add_section('enable') + self.parser.add_section('rate') + self.load() + + # Methods + def load(self): + def get(sect, name): + if self.parser.has_option(sect, name): + return self.parser.get(sect, name) + else: + return self.defaults[sect][name] + def bin(val): + return val == True or val == 'True' + + self.parser.read(self.filename) + + self.device = get('serial', 'device') + self.baudrate = int(get('serial', 'baudrate')) + self.parity = get('serial', 'parity') + self.databits = int(get('serial', 'databits')) + self.stopbits = int(get('serial', 'stopbits')) + + self.feedid = get('xively', 'feedid') + self.apikey = get('xively', 'apikey') + self.maxrate = int(get('xively', 'maxrate')) + + for key in list(self.defaults['enable'].keys()): + self.enable[key] = bin(get('enable', key)) + self.rate[key] = float(get('rate', key)) + + def save(self): + self.parser.set('serial', 'device', self.device) + self.parser.set('serial', 'baudrate', str(int(self.baudrate))) + self.parser.set('serial', 'parity', self.parity) + self.parser.set('serial', 'databits', str(int(self.databits))) + self.parser.set('serial', 'stopbits', str(int(self.stopbits))) + + self.parser.set('xively', 'feedid', self.feedid) + self.parser.set('xively', 'apikey', self.apikey) + self.parser.set('xively', 'maxrate', str(int(self.maxrate))) + + for key in self.defaults['enable'].keys(): + self.parser.set('enable', key, str( bool(self.enable[key]))) + self.parser.set('rate', key, str(float(self.rate[key]))) + + with open(self.filename, 'w') as fd: + self.parser.write(fd)