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}