From ecbfa762425b81031357c68158fb5939f6d24675 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Wed, 9 Jun 2021 15:02:56 -0400 Subject: mcu: Raise config_error (not protocol error) on pin enumeration errors Signed-off-by: Kevin O'Connor --- klippy/msgproto.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'klippy/msgproto.py') 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 = [] -- cgit v1.2.3-70-g09d2