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 XNet CS Info Response messages. 010 * 011 * @author Paul Bender Copyright (C) 2025 012 */ 013public class XNetCommandStationInfoResponseFormatter implements XPressNetMessageFormatter { 014 015 @Override 016 public boolean handlesMessage(Message m) { 017 return m instanceof XNetReply && ((XNetReply) m).getElement(0) == XNetConstants.CS_INFO; 018 } 019 020 @Override 021 public String formatMessage(Message m) { 022 if(!handlesMessage(m)){ 023 throw new IllegalArgumentException("Message is not a XNetReply or is not a CS Info message"); 024 } 025 //XNetReply r = (XNetReply) m; 026 switch (m.getElement(1)) { 027 case XNetConstants.BC_NORMAL_OPERATIONS: 028 return Bundle.getMessage("XNetReplyBCNormalOpsResumed"); 029 case XNetConstants.BC_EVERYTHING_OFF: 030 return Bundle.getMessage("XNetReplyBCEverythingOff"); 031 case XNetConstants.BC_SERVICE_MODE_ENTRY: 032 return Bundle.getMessage("XNetReplyBCServiceEntry"); 033 case XNetConstants.PROG_SHORT_CIRCUIT: 034 return Bundle.getMessage("XNetReplyServiceModeShort"); 035 case XNetConstants.PROG_BYTE_NOT_FOUND: 036 return Bundle.getMessage("XNetReplyServiceModeDataByteNotFound"); 037 case XNetConstants.PROG_CS_BUSY: 038 return Bundle.getMessage("XNetReplyServiceModeCSBusy"); 039 case XNetConstants.PROG_CS_READY: 040 return Bundle.getMessage("XNetReplyServiceModeCSReady"); 041 case XNetConstants.CS_BUSY: 042 return Bundle.getMessage("XNetReplyCSBusy"); 043 case XNetConstants.CS_NOT_SUPPORTED: 044 return Bundle.getMessage("XNetReplyCSNotSupported"); 045 case XNetConstants.CS_TRANSFER_ERROR: 046 return Bundle.getMessage("XNetReplyCSTransferError"); 047 /* The remaining cases are for a Double Header or MU Error */ 048 case XNetConstants.CS_DH_ERROR_NON_OP: 049 return Bundle.getMessage("XNetReplyV1DHErrorNotOperated"); 050 case XNetConstants.CS_DH_ERROR_IN_USE: 051 return Bundle.getMessage("XNetReplyV1DHErrorInUse"); 052 case XNetConstants.CS_DH_ERROR_ALREADY_DH: 053 return Bundle.getMessage("XNetReplyV1DHErrorAlreadyDH"); 054 case XNetConstants.CS_DH_ERROR_NONZERO_SPD: 055 return Bundle.getMessage("XNetReplyV1DHErrorNonZeroSpeed"); 056 default: 057 return m.toString(); 058 } 059 } 060 061}