001package jmri.jmrix.lenz.messageformatters;
002
003import jmri.jmrix.Message;
004import jmri.jmrix.lenz.LenzCommandStation;
005import jmri.jmrix.lenz.XNetConstants;
006import jmri.jmrix.lenz.XNetMessage;
007import jmri.jmrix.lenz.XPressNetMessageFormatter;
008
009/**
010 * Format Double Header Request Messages.
011 */
012
013public class XNetDoubleHeaderRequestMessageFormatter implements XPressNetMessageFormatter {
014
015    @Override
016    public boolean handlesMessage(Message m) {
017        return m instanceof XNetMessage &&
018                (m.getElement(0) == XNetConstants.LOCO_DOUBLEHEAD
019                && m.getElement(1) == XNetConstants.LOCO_DOUBLEHEAD_BYTE2);
020    }
021
022    @Override
023    public String formatMessage(Message m) {
024        if(!handlesMessage(m))
025            throw new IllegalArgumentException("Unknown Double Header Request: " + m.toString());
026        int loco1 = LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3));
027        int loco2 = LenzCommandStation.calcLocoAddress(m.getElement(4), m.getElement(5));
028        if (loco2 == 0) {
029            return Bundle.getMessage("XNetMessageDisolveDoubleHeaderRequest",loco1);
030        } else {
031            return Bundle.getMessage("XNetMessageBuildDoubleHeaderRequest",loco1,loco2);
032        }
033    }
034
035}