forked from BrewPi/brewpi-script
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbrewpiVersion.py
74 lines (57 loc) · 1.54 KB
/
brewpiVersion.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
__author__ = 'mat'
import simplejson as json
class AvrInfo:
""" Parses and stores the version and other compile-time details reported by the Arduino """
version = "v"
build = "n"
simulator = "y"
board = "b"
shield = "s"
log = "l"
shield_revA = "revA"
shield_revC = "revC"
shields = { 1:shield_revA, 2: shield_revC }
board_leonardo = "leonardo"
board_standard = "standard"
board_mega = "mega"
boards = {'l':board_leonardo, 's':board_standard, 'm':board_mega }
def __init__(self, s = None):
self.major = 0
self.minor = 0
self.revision = 0
self.version = None
self.build = 0
self.simulator = False
self.board = None
self.shield = None
self.log = 0
self.parse(s)
def parse(self, s):
if s is None or len(s) == 0:
pass
else:
s = s.strip()
if s[0] == '{':
self.parseJsonVersion(s)
else:
self.parseStringVersion(s)
def parseJsonVersion(self, s):
j = json.loads(s)
if AvrInfo.version in j:
self.parseStringVersion(j[AvrInfo.version])
if AvrInfo.simulator in j:
self.simulator = j[AvrInfo.simulator] == 1
if AvrInfo.board in j:
self.board = AvrInfo.boards.get(j[AvrInfo.board])
if AvrInfo.shield in j:
self.shield = AvrInfo.shields.get(j[AvrInfo.shield])
if AvrInfo.log in j:
self.log = j[AvrInfo.log]
if AvrInfo.build in j:
self.build = j[AvrInfo.build]
def parseStringVersion(self, s):
s = s.strip()
parts = [int(x) for x in s.split('.')]
parts += [0]*(3-len(parts)) # pad to 3
self.major, self.minor, self.revision = parts[0],parts[1],parts[2]
self.version = s