001package jmri.jmrix.roco.z21.messageformatters;
002
003import jmri.jmrix.lenz.XPressNetMessageFormatter;
004import jmri.jmrix.roco.z21.Z21Constants;
005
006/**
007 * Format Z21XNet Turnout Replies for display.
008 *
009 * @author Paul Bender Copyright (C) 2025
010 */
011public class Z21XNetTurnoutReplyFormatter implements XPressNetMessageFormatter {
012
013    @Override
014    public boolean handlesMessage(jmri.jmrix.Message m) {
015        return (m instanceof jmri.jmrix.roco.z21.Z21XNetReply && (m.getElement(0) == Z21Constants.LAN_X_TURNOUT_INFO));
016    }
017
018    @Override
019    public String formatMessage(jmri.jmrix.Message m) {
020        if(!handlesMessage(m)) {
021            throw new IllegalArgumentException("Message not supported");
022        }
023        int address = (m.getElement(1) << 8 ) + m.getElement(2) +1;
024        String state = "";
025        switch(m.getElement(3)) {
026            case 0x03:
027                state += "inconsistent";
028                break;
029            case 0x02:
030                state += "Thrown";
031                break;
032            case 0x01:
033                state += "Closed";
034                break;
035            default:
036                state += "Unknown";
037        }
038        return Bundle.getMessage("Z21LAN_X_TURNOUT_INFO",address, state);
039    }
040}