001package jmri.jmrix.lenz.messageformatters; 002 003import jmri.jmrix.Message; 004import jmri.jmrix.lenz.XNetConstants; 005import jmri.jmrix.lenz.XNetReply; 006import jmri.jmrix.lenz.XPressNetMessageFormatter; 007 008/** 009 * Formatter for XPressNet XNet Double Header and Multiple Unit Error replies. 010 * 011 * @author Paul Bender Copyright (C) 2025 012 */ 013 014public class XNetDHandMUErrorMessageFormatter implements XPressNetMessageFormatter { 015 016 @Override 017 public boolean handlesMessage(Message m) { 018 return m instanceof XNetReply && ((XNetReply) m).getElement(0) == XNetConstants.LOCO_MU_DH_ERROR; 019 } 020 021 @Override 022 public String formatMessage(Message m) { 023 if (!handlesMessage(m)) { 024 throw new IllegalArgumentException("Message is not supported"); 025 } 026 switch (m.getElement(1)) { 027 case 0x81: 028 return Bundle.getMessage("XNetReplyDHErrorNotOperated"); 029 case 0x82: 030 return Bundle.getMessage("XNetReplyDHErrorInUse"); 031 case 0x83: 032 return Bundle.getMessage("XNetReplyDHErrorAlreadyDH"); 033 case 0x84: 034 return Bundle.getMessage("XNetReplyDHErrorNonZeroSpeed"); 035 case 0x85: 036 return Bundle.getMessage("XNetReplyDHErrorLocoNotMU"); 037 case 0x86: 038 return Bundle.getMessage("XNetReplyDHErrorLocoNotMUBase"); 039 case 0x87: 040 return Bundle.getMessage("XNetReplyDHErrorCanNotDelete"); 041 case 0x88: 042 return Bundle.getMessage("XNetReplyDHErrorStackFull"); 043 default: 044 return Bundle.getMessage("XNetReplyDHErrorOther", (m.getElement(1) - 0x80)); 045 } 046 } 047 048}