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 Loco Function Status High Reply messages.
010 *
011 * @author Paul Bender Copyright (C) 2025
012 */
013public class XNetLocoFunctionStatusHighReplyFormatter implements XPressNetMessageFormatter {
014
015    private static final String RS_TYPE = "rsType";
016
017    @Override
018    public boolean handlesMessage(Message m) {
019        return m instanceof XNetReply &&
020                m.getElement(0) == XNetConstants.LOCO_INFO_RESPONSE &&
021                m.getElement(1) == XNetConstants.LOCO_FUNCTION_STATUS_HIGH;
022    }
023
024    @Override
025    public String formatMessage(Message m) {
026        if(!handlesMessage(m)) {
027            throw new IllegalArgumentException("Message is not supported");
028        }
029        return Bundle.getMessage("XNetReplyLocoLabel") + " " +
030                Bundle.getMessage(RS_TYPE) + " " +
031               Bundle.getMessage("XNetReplyF13StatusLabel") + " "+
032               XNetLocoInfoReplyUtilities.parseFunctionHighStatus(m.getElement(2), m.getElement(3));
033    }
034
035}