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 * Formatter for XNet Search Loco in MU Request Messages 011 * 012 * @author Paul Bender Copyright (C) 2024 013 */ 014public class XNetSearchMURequestMessageFormatter implements XPressNetMessageFormatter { 015 @Override 016 public boolean handlesMessage(Message m) { 017 return m instanceof XNetMessage && 018 m.getElement(0) == XNetConstants.LOCO_IN_MULTI_UNIT_SEARCH_REQ && 019 (m.getElement(1) == XNetConstants.LOCO_IN_MULTI_UNIT_REQ_FORWARD || 020 m.getElement(1) == XNetConstants.LOCO_IN_MULTI_UNIT_REQ_BACKWARD); 021 022 } 023 024 @Override 025 public String formatMessage(Message m) { 026 if(!handlesMessage(m)) 027 throw new IllegalArgumentException("Message is not supported"); 028 String key = "XNetMessageSearchCSStackForwardNextMULoco"; 029 if(m.getElement(1) == XNetConstants.LOCO_IN_MULTI_UNIT_REQ_BACKWARD) { 030 key = "XNetMessageSearchCSStackBackwardNextMULoco"; 031 } 032 return Bundle.getMessage(key, 033 m.getElement(2), 034 LenzCommandStation.calcLocoAddress(m.getElement(3), m.getElement(4))); 035 } 036}