X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=vis%2Fconfig.py;h=5e5ce4ae731fc44c196983d885a668212d4b8e78;hb=a546c1294b2b97982aa6e4c7153a0f22780c91fe;hp=b40d09bef7256c9e923e082c5c2f00f00c2825bb;hpb=fb5dee2166956630f9846355427cb6653775d798;p=~andy%2Fcsm213a-hw diff --git a/vis/config.py b/vis/config.py index b40d09b..5e5ce4a 100644 --- a/vis/config.py +++ b/vis/config.py @@ -1,36 +1,94 @@ -from ConfigParser import ConfigParser +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 = { - 'baudrate': '9600', - 'stopbits': '1', - 'databits': '8', - 'username': '', - 'password': '', - 'apikey': '', + '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): - self.parser = ConfigParser(defaults=self.defaults) + 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.baudrate = self.parser.getint('serial', 'baudrate') - self.stopbits = self.parser.getint('serial', 'stopbits') - self.databits = self.parser.getint('serial', 'databits') + 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')) - self.username = self.parser.get('xively', 'username') - self.password = self.parser.get('xively', 'password') - self.apikey = self.parser.get('xively', 'apikey') + 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.write(self.filename) + 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)