From dd3e273fa8ce644533ac6e79a7139780d8c53a9e Mon Sep 17 00:00:00 2001 From: rusefillc Date: Thu, 20 Jul 2023 00:23:28 -0400 Subject: [PATCH] only: proteus_f7 more reliable error approach --- .../com/rusefi/ui/config/BaseConfigField.java | 2 +- .../com/rusefi/ui/config/EnumConfigField.java | 17 ++++++++++++++--- .../config/UnexpectedEnumOridnalException.java | 7 +++++++ 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 java_console/ui/src/main/java/com/rusefi/ui/config/UnexpectedEnumOridnalException.java diff --git a/java_console/ui/src/main/java/com/rusefi/ui/config/BaseConfigField.java b/java_console/ui/src/main/java/com/rusefi/ui/config/BaseConfigField.java index 47e9ed8ea8..7876c44538 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/config/BaseConfigField.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/config/BaseConfigField.java @@ -19,7 +19,7 @@ import java.nio.ByteBuffer; import static com.devexperts.logging.Logging.getLogging; public abstract class BaseConfigField { - private static final Logging log = getLogging(BaseConfigField.class); + protected static final Logging log = getLogging(BaseConfigField.class); protected final JLabel status = new JLabel("P"); private final JPanel panel = new JPanel(new BorderLayout()); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/config/EnumConfigField.java b/java_console/ui/src/main/java/com/rusefi/ui/config/EnumConfigField.java index dbd25ce346..7f1cf85145 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/config/EnumConfigField.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/config/EnumConfigField.java @@ -11,6 +11,7 @@ import com.rusefi.ui.UIContext; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.rmi.UnexpectedException; import java.util.HashMap; import java.util.Map; @@ -43,7 +44,11 @@ public class EnumConfigField extends BaseConfigField { Pair p = FieldCommandResponse.parseResponse(message); if (p != null && p.first == field.getOffset()) { int ordinal = (Integer) p.second; - setValue(ordinal); + try { + setValue(ordinal); + } catch (UnexpectedEnumOridnalException e) { + System.out.println("ERROR " + e); + } } } } @@ -63,12 +68,14 @@ public class EnumConfigField extends BaseConfigField { }); } - private void setValue(int ordinal) { + private void setValue(int ordinal) throws UnexpectedEnumOridnalException { String item; if (ordinal >= options.length) { item = "unexpected_" + ordinal; view.addItem(item); } else { + if (ordinal >= options.length) + throw new UnexpectedEnumOridnalException(ordinal + " unexpected on " + field); item = options[ordinal]; } @@ -89,6 +96,10 @@ public class EnumConfigField extends BaseConfigField { } else { ordinal = getByteBuffer(ci).getInt(); } - setValue(ordinal); + try { + setValue(ordinal); + } catch (UnexpectedEnumOridnalException e) { + log.error("Error loading value " + e); + } } } \ No newline at end of file diff --git a/java_console/ui/src/main/java/com/rusefi/ui/config/UnexpectedEnumOridnalException.java b/java_console/ui/src/main/java/com/rusefi/ui/config/UnexpectedEnumOridnalException.java new file mode 100644 index 0000000000..11cae1b51f --- /dev/null +++ b/java_console/ui/src/main/java/com/rusefi/ui/config/UnexpectedEnumOridnalException.java @@ -0,0 +1,7 @@ +package com.rusefi.ui.config; + +public class UnexpectedEnumOridnalException extends Throwable { + public UnexpectedEnumOridnalException(String s) { + super(s); + } +}