-from ConfigParser import ConfigParser
+from configparser import ConfigParser
class Config:
# Attributes
filename = "settings.cfg"
defaults = {
- 'baudrate': '/dev/ttyACM0',
- 'baudrate': '9600',
- 'parity': 'N',
- 'databits': '8',
- 'stopbits': '1',
- 'username': '<username>',
- 'password': '<password>',
- 'apikey': '<apikey>',
+ 'serial': {
+ 'device': '/dev/ttyACM0',
+ 'baudrate': '9600',
+ 'parity': 'N',
+ 'databits': '8',
+ 'stopbits': '1',
+ },
+ 'xively': {
+ 'feedid': '<feedid>',
+ 'apikey': '<apikey>',
+ 'maxrate': '10',
+ },
+ 'enable': {
+ 'acc': True,
+ 'mag': True,
+ 'touch': True,
+ 'light': True,
+ 'a2d': True,
+ },
+ 'rate': {
+ 'acc': 1,
+ 'mag': 1,
+ 'touch': 1,
+ 'light': 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.device = self.parser.get('serial', 'device')
- self.baudrate = self.parser.getint('serial', 'baudrate')
- self.parity = self.parser.get('serial', 'parity')
- self.databits = self.parser.getint('serial', 'databits')
- self.stopbits = self.parser.getint('serial', 'stopbits')
+ 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] = int(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( int(self.rate[key])))
+
+ with open(self.filename, 'w') as fd:
+ self.parser.write(fd)