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    public boolean handlesMessage(jmri.jmrix.Message m) {
014        return (m instanceof jmri.jmrix.roco.z21.Z21XNetReply && (m.getElement(0) == Z21Constants.LAN_X_TURNOUT_INFO));
015    }
016
017    public String formatMessage(jmri.jmrix.Message m) {
018        if(!handlesMessage(m)) {
019            throw new IllegalArgumentException("Message not supported");
020        }
021        int address = (m.getElement(1) << 8 ) + m.getElement(2) +1;
022        String state = "";
023        switch(m.getElement(3)) {
024            case 0x03:
025                state += "inconsistent";
026                break;
027            case 0x02:
028                state += "Thrown";
029                break;
030            case 0x01:
031                state += "Closed";
032                break;
033            default:
034                state += "Unknown";
035        }
036        return Bundle.getMessage("Z21LAN_X_TURNOUT_INFO",address, state);
037    }
038}