001package jmri.jmrix.roco.z21.messageformatters;
002
003import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
004import jmri.jmrix.Message;
005import jmri.jmrix.roco.z21.Z21Message;
006import jmri.jmrix.roco.z21.Z21MessageFormatter;
007import jmri.jmrix.roco.z21.Z21XNetMessage;
008
009/**
010 * Formatter for Z21 XPressNet Tunnel Requests.
011 *
012 * @author Paul Bender Copyright (C) 2025
013 */
014public class Z21XPressNetTunnelRequestFormatter implements Z21MessageFormatter {
015
016    @Override
017    public boolean handlesMessage(Message m) {
018        return m instanceof Z21Message && ((Z21Message)m).getOpCode() == 0x0040;
019    }
020
021    @SuppressFBWarnings(value = "BC_UNCONFIRMED_CAST", justification = "cast is checked in handlesMessage")
022    @Override
023    public String formatMessage(Message m) {
024        if(!handlesMessage(m)){
025            throw new IllegalArgumentException("Message m is not a Z21XNetMessage Tunnel Request");
026        }
027        return Bundle.getMessage("Z21MessageXpressNetTunnelRequest",new Z21XNetMessage((Z21Message)m).toMonitorString());
028    }
029
030}