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 Multi Unit Info Reply messages.
010 *
011 * @author Paul Bender Copyright (C) 2025
012 */
013public class XNetMultiUnitInfoReplyFormatter implements XPressNetMessageFormatter{
014    @Override
015    public boolean handlesMessage(Message m) {
016        return m instanceof XNetReply &&
017                ((XNetReply) m).getElement(0) == XNetConstants.LOCO_INFO_MUED_UNIT &&
018                ((XNetReply) m).getElement(1) != 0xF8 &&  // Exclude the two Hornby Elite specific messages
019                ((XNetReply) m).getElement(1) != 0xF9;
020    }
021
022    @Override
023    public String formatMessage(Message m) {
024        if (handlesMessage(m)) {
025
026            return Bundle.getMessage("XNetReplyLocoMULabel") + "," +
027                   XNetLocoInfoReplyUtilities.parseSpeedAndDirection(m.getElement(1), m.getElement(2)) +
028                   XNetLocoInfoReplyUtilities.parseFunctionStatus(m.getElement(3), m.getElement(4));
029        }
030        else throw new IllegalArgumentException("Message is not supported");
031    }
032
033}