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    @Override
015    public boolean handlesMessage(jmri.jmrix.Message m) {
016        return m instanceof jmri.jmrix.lenz.XNetMessage && ((jmri.jmrix.lenz.XNetMessage) m).getElement(0) == XNetConstants.LI101_REQUEST;
017    }
018
019    @Override
020    public String formatMessage(jmri.jmrix.Message m) {
021        if(m.getElement(1) == XNetConstants.LI101_REQUEST_ADDRESS) {
022            return Bundle.getMessage("XNetMessageRequestLIAddress", m.getElement(2));
023        } else if(m.getElement(1) == XNetConstants.LI101_REQUEST_BAUD) {
024            switch (m.getElement(2)) {
025                case 1:
026                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("LIBaud19200"));
027                case 2:
028                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("Baud38400"));
029                case 3:
030                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("Baud57600"));
031                case 4:
032                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("Baud115200"));
033                default:
034                    return Bundle.getMessage(X_NET_MESSAGE_REQUEST_LI_BAUD, Bundle.getMessage("BaudOther"));
035            }
036        }
037        throw new IllegalArgumentException("Unknown LI101 Request Type");
038    }
039}