001package jmri.jmrix.roco.z21.messageformatters;
002
003import jmri.jmrix.lenz.XPressNetMessageFormatter;
004import jmri.jmrix.roco.z21.Z21Constants;
005import jmri.jmrix.roco.z21.Z21XNetMessage;
006
007public class Z21XNetTurnoutMessageFormatter implements XPressNetMessageFormatter {
008
009    @Override
010    public String formatMessage(jmri.jmrix.Message m) {
011        if(m.getElement(0) == Z21Constants.LAN_X_SET_TURNOUT) {
012            int address = (m.getElement(1) << 8) + m.getElement(2) + 1;
013            int element = m.getElement(3);
014            boolean queue = (element & 0x20) == 0x20;
015            String active = ((element & 0x08) == 0x08)? "activate":"deactivate";
016            return Bundle.getMessage("Z21LAN_X_SET_TURNOUT", address, active, element & 0x01, queue);
017        }
018        if(m.getElement(0) == Z21Constants.LAN_X_GET_TURNOUT_INFO) {
019            int address = (m.getElement(1) << 8) + m.getElement(2) + 1;
020            return Bundle.getMessage("Z21LAN_X_GET_TURNOUT_INFO", address);
021        }
022        throw new IllegalArgumentException("Unknown message type");
023    }
024
025    @Override
026    public boolean handlesMessage(jmri.jmrix.Message m) {
027        return (m instanceof Z21XNetMessage &&
028                (m.getElement(0) == Z21Constants.LAN_X_SET_TURNOUT || m.getElement(0) == Z21Constants.LAN_X_GET_TURNOUT_INFO));
029    }
030
031}