001package jmri.jmrix.lenz.messageformatters; 002 003import jmri.jmrix.Message; 004import jmri.jmrix.lenz.LenzCommandStation; 005import jmri.jmrix.lenz.XNetConstants; 006import jmri.jmrix.lenz.XNetMessage; 007import jmri.jmrix.lenz.XPressNetMessageFormatter; 008 009/** 010 * Format requests to add a locomotive to a MulitUnit consist 011 * 012 * @author Paul Bender Copyright (C) 2024 013 */ 014public class XNetRequestMultiUnitAddLocoMessageFormatter implements XPressNetMessageFormatter { 015 @Override 016 public boolean handlesMessage(Message m) { 017 return m instanceof XNetMessage && 018 m.getElement(0) == XNetConstants.LOCO_OPER_REQ && 019 (m.getElement(1) == XNetConstants.LOCO_ADD_MULTI_UNIT_REQ || 020 m.getElement(1) == (XNetConstants.LOCO_ADD_MULTI_UNIT_REQ | 0x01) ); 021 } 022 023 @Override 024 public String formatMessage(Message m) { 025 if(!handlesMessage(m)) { 026 throw new IllegalArgumentException( "XNetRequestMultiUnitAddLocoMessageFormatter: message type not supported"); 027 } 028 return Bundle.getMessage(m.getElement(1) == XNetConstants.LOCO_ADD_MULTI_UNIT_REQ ? "XNetMessageAddToConsistDirNormalRequest":"XNetMessageAddToConsistDirReverseRequest", 029 LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3)), 030 m.getElement(4)); 031 } 032}