forked from BrewPi/brewpi-script
-
Notifications
You must be signed in to change notification settings - Fork 0
/
expandLogMessage.py
108 lines (94 loc) · 3.25 KB
/
expandLogMessage.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Copyright 2012 BrewPi
# This file is part of BrewPi.
# BrewPi is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# BrewPi is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with BrewPi. If not, see <http://www.gnu.org/licenses/>.
import brewpiJson
import simplejson as json
import parseEnum
import os
logMessagesFile = os.path.dirname(__file__) + '/LogMessages.h'
errorDict = parseEnum.parseEnumInFile(logMessagesFile, 'errorMessages')
infoDict = parseEnum.parseEnumInFile(logMessagesFile, 'infoMessages')
warningDict = parseEnum.parseEnumInFile(logMessagesFile, 'warningMessages')
def valToFunction(val):
functions = ['None', # 0
'Chamber Door', # 1
'Chamber Heater', # 2
'Chamber Cooler', # 3
'Chamber Light', # 4
'Chamber Temp', # 5
'Room Temp', # 6
'Chamber Fan', # 7
'Chamber Reserved 1', # 8
'Beer Temp', # 9
'Beer Temperature 2', # 10
'Beer Heater', # 11
'Beer Cooler', # 12
'Beer S.G.', # 13
'Beer Reserved 1', #14
'Beer Reserved 2'] #15
if val < len(functions):
return functions[val]
else:
return 'Unknown Device Function'
def getVersion():
hFile = open(logMessagesFile)
for line in hFile:
if 'BREWPI_LOG_MESSAGES_VERSION ' in line:
splitLine = line.split('BREWPI_LOG_MESSAGES_VERSION')
return int(splitLine[1]) # return version number
print "ERROR: could not find version number in log messages header file"
return 0
def expandLogMessage(logMessageJsonString):
expanded = ""
logMessageJson = json.loads(logMessageJsonString)
logId = int(logMessageJson['logID'])
logType = logMessageJson['logType']
values = logMessageJson['V']
dict = 0
logTypeString = "**UNKNOWN MESSAGE TYPE**"
if logType == "E":
dict = errorDict
logTypeString = "ERROR"
elif logType == "W":
dict = warningDict
logTypeString = "WARNING"
elif logType == "I":
dict = infoDict
logTypeString = "INFO MESSAGE"
if logId in dict:
expanded += logTypeString + " "
expanded += str(logId) + ": "
count = 0
for v in values:
try:
if dict[logId]['paramNames'][count] == "config.deviceFunction":
values[count] = valToFunction(v)
elif dict[logId]['paramNames'][count] == "character":
if values[count] == -1:
# No character received
values[count] = 'END OF INPUT'
else:
values[count] = chr(values[count])
except IndexError:
pass
count += 1
printString = dict[logId]['logString'].replace("%d", "%s").replace("%c", "%s")
numVars = printString.count("%s")
numReceived = len(values)
if numVars == numReceived:
expanded += printString % tuple(values)
else:
expanded += printString + " | Number of arguments mismatch!, expected " + str(numVars) + "arguments, received " + str(values)
else:
expanded += logTypeString + " with unknown ID " + str(logId)
return expanded
getVersion()