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}