aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/msgproto.py
diff options
context:
space:
mode:
Diffstat (limited to 'klippy/msgproto.py')
-rw-r--r--klippy/msgproto.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/klippy/msgproto.py b/klippy/msgproto.py
index cdecd8e7..7391a6f4 100644
--- a/klippy/msgproto.py
+++ b/klippy/msgproto.py
@@ -86,12 +86,14 @@ class PT_progmem_buffer(PT_string):
class PT_buffer(PT_string):
pass
-MessageTypes = {
- '%u': PT_uint32(), '%i': PT_int32(),
- '%hu': PT_uint16(), '%hi': PT_int16(),
- '%c': PT_byte(),
- '%s': PT_string(), '%.*s': PT_progmem_buffer(), '%*s': PT_buffer(),
-}
+class enumeration_error(error):
+ def __init__(self, enum_name, value):
+ self.enum_name = enum_name
+ self.value = value
+ error.__init__(self, "Unknown value '%s' in enumeration '%s'"
+ % (value, enum_name))
+ def get_enum_params(self):
+ return self.enum_name, self.value
class Enumeration:
is_int = False
@@ -105,8 +107,7 @@ class Enumeration:
def encode(self, out, v):
tv = self.enums.get(v)
if tv is None:
- raise error("Unknown value '%s' in enumeration '%s'"
- % (v, self.enum_name))
+ raise enumeration_error(self.enum_name, v)
self.pt.encode(out, tv)
def parse(self, s, pos):
v, pos = self.pt.parse(s, pos)
@@ -115,6 +116,13 @@ class Enumeration:
tv = "?%d" % (v,)
return tv, pos
+MessageTypes = {
+ '%u': PT_uint32(), '%i': PT_int32(),
+ '%hu': PT_uint16(), '%hi': PT_int16(),
+ '%c': PT_byte(),
+ '%s': PT_string(), '%.*s': PT_progmem_buffer(), '%*s': PT_buffer(),
+}
+
# Lookup the message types for a format string
def lookup_params(msgformat, enumerations={}):
out = []