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 XPressNet messages for Service Mode Response for display. 010 * 011 * @author Paul Bender Copyright (C) 2024 012 */ 013 014public class XNetServiceModeResponseFormatter implements XPressNetMessageFormatter { 015 @Override 016 public boolean handlesMessage(Message m) { 017 return m instanceof XNetReply && 018 ((XNetReply) m).isServiceModeResponse() && 019 ((XNetReply) m).getElement(1) != XNetConstants.CS_SOFTWARE_VERSION; 020 } 021 022 @Override 023 public String formatMessage(Message m) { 024 if(!(m instanceof XNetReply) && ((XNetReply) m).isServiceModeResponse()) { 025 throw new IllegalArgumentException("Message is not a Service Mode Response"); 026 } 027 XNetReply r = (XNetReply) m; 028 if (r.isDirectModeResponse()) { 029 return Bundle.getMessage("XNetReplyServiceModeDirectResponse", r.getServiceModeCVNumber(), r.getServiceModeCVValue()); 030 } else if (r.isPagedModeResponse()) { 031 return Bundle.getMessage("XNetReplyServiceModePagedResponse", r.getServiceModeCVNumber(), r.getServiceModeCVValue()); 032 } else { 033 return r.toString(); 034 } 035 } 036 037}