001package jmri.jmrix.lenz.messageformatters;
002
003import jmri.jmrix.lenz.XNetConstants;
004import jmri.jmrix.lenz.XPressNetMessageFormatter;
005
006/**
007 * Formatter for XPressNet messages targeted at the Interface device.
008 * @author Paul Bender copyright (C) 2024
009 */
010public class XNetLI101RequestMessageFormatter implements XPressNetMessageFormatter {
011
012    private static final String X_NET_MESSAGE_REQUEST_LI_BAUD = "XNetMessageRequestLIBaud";
013
014    public boolean handlesMessage(jmri.jmrix.Message m) {
015        return m instanceof jmri.jmrix.lenz.XNetMessage && ((jmri.jmrix.lenz.XNetMessage) m).getElement(0) == XNetConstants.LI101_REQUEST;
016    }
017
018    public String formatMessage(jmri.jmrix.Message m) {
019        if(m.getElement(1) == XNetConstants.LI101_REQUEST_ADDRESS) {
020            return Bundle.getMessage("XNetMessageRequestLIAddress", m.getElement(2));
021        } else if(m.getElement(1) == XNetConstants.LI101_REQUEST_BAUD) {
022            switch (m.getElement(2)) {
023                case 1:
024                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("LIBaud19200"));
025                case 2:
026                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("Baud38400"));
027                case 3:
028                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("Baud57600"));
029                case 4:
030                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("Baud115200"));
031                default:
032                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("BaudOther"));
033            }
034        }
035        throw new IllegalArgumentException("Unknown LI101 Request Type");
036    }
037}