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 * Format replies for XPressNet replies from the Computer Interface. 010 * 011 * @author Paul Bender Copyright (C) 2025 012 */ 013public class XNetLIReplyFormatter implements XPressNetMessageFormatter { 014 015 @Override 016 public boolean handlesMessage(Message m) { 017 return m instanceof XNetReply && m.getElement(0) == XNetConstants.LI_MESSAGE_RESPONSE_HEADER; 018 } 019 020 @Override 021 public String formatMessage(Message m) { 022 if(!handlesMessage(m)) { 023 throw new IllegalArgumentException("Message is not supported"); 024 } 025 switch(m.getElement(1)) { 026 case XNetConstants.LI_MESSAGE_RESPONSE_PC_DATA_ERROR: 027 return Bundle.getMessage("XNetReplyErrorPCtoLI"); 028 case XNetConstants.LI_MESSAGE_RESPONSE_CS_DATA_ERROR: 029 return Bundle.getMessage("XNetReplyErrorLItoCS"); 030 case XNetConstants.LI_MESSAGE_RESPONSE_UNKNOWN_DATA_ERROR: 031 return Bundle.getMessage("XNetReplyErrorUnknown"); 032 case XNetConstants.LI_MESSAGE_RESPONSE_SEND_SUCCESS: 033 return Bundle.getMessage("XNetReplyOkMessage"); 034 case XNetConstants.LI_MESSAGE_RESPONSE_TIMESLOT_ERROR: 035 return Bundle.getMessage("XNetReplyErrorNoTimeSlot"); 036 case XNetConstants.LI_MESSAGE_RESPONSE_BUFFER_OVERFLOW: 037 return Bundle.getMessage("XNetReplyErrorBufferOverflow"); 038 case XNetConstants.LIUSB_TIMESLOT_RESTORED: 039 return Bundle.getMessage("XNetReplyTimeSlotRestored"); 040 case XNetConstants.LIUSB_REQUEST_SENT_WHILE_NO_TIMESLOT: 041 return Bundle.getMessage("XNetReplyRequestSentWhileNoTimeslot"); 042 case XNetConstants.LIUSB_BAD_DATA_IN_REQUEST: 043 return Bundle.getMessage("XNetReplyBadDataInRequest"); 044 case XNetConstants.LIUSB_RETRANSMIT_REQUEST: 045 return Bundle.getMessage("XNetReplyRetransmitRequest"); 046 default: 047 return m.toString(); 048 } 049 } 050 051}