]> Pileus Git - ~andy/csm213a-hw/blob - vis/config.py
928ae7da85ce7030f1f0f0eb503a96be2eaa9a07
[~andy/csm213a-hw] / vis / config.py
1 from configparser import ConfigParser
2
3 class Config:
4         # Attributes
5         filename = "settings.cfg"
6
7         defaults = {
8                 'serial': {
9                         'device':   '/dev/ttyACM0',
10                         'baudrate': '9600',
11                         'parity':   'N',
12                         'databits': '8',
13                         'stopbits': '1',
14                 },
15                 'xively': {
16                         'feedid':   '<feedid>',
17                         'apikey':   '<apikey>',
18                         'maxrate':  '10',
19                 }
20         }
21
22         # Constructor
23         def __init__(self):
24                 self.parser = ConfigParser()
25                 self.parser.add_section('serial')
26                 self.parser.add_section('xively')
27                 self.load()
28
29         # Methods
30         def load(self):
31                 def get(sect, name):
32                         if self.parser.has_option(sect, name):
33                                 return self.parser.get(sect, name)
34                         else:
35                                 return self.defaults[sect][name]
36
37                 self.parser.read(self.filename)
38
39                 self.device   =     get('serial', 'device')
40                 self.baudrate = int(get('serial', 'baudrate'))
41                 self.parity   =     get('serial', 'parity')
42                 self.databits = int(get('serial', 'databits'))
43                 self.stopbits = int(get('serial', 'stopbits'))
44                                                                 
45                 self.feedid   =     get('xively', 'feedid')
46                 self.apikey   =     get('xively', 'apikey')
47                 self.maxrate  = int(get('xively', 'maxrate'))
48
49         def save(self):
50                 self.parser.set('serial', 'device',           self.device)
51                 self.parser.set('serial', 'baudrate', str(int(self.baudrate)))
52                 self.parser.set('serial', 'parity',           self.parity)
53                 self.parser.set('serial', 'databits', str(int(self.databits)))
54                 self.parser.set('serial', 'stopbits', str(int(self.stopbits)))
55
56                 self.parser.set('xively', 'feedid',           self.feedid)
57                 self.parser.set('xively', 'apikey',           self.apikey)
58                 self.parser.set('xively', 'maxrate',  str(int(self.maxrate)))
59
60                 with open(self.filename, 'w') as fd:
61                         self.parser.write(fd)