001package jmri.jmrix.lenz.messageformatters; 002 003import jmri.jmrix.Message; 004import jmri.jmrix.lenz.XNetMessage; 005import jmri.jmrix.lenz.LenzCommandStation; 006import jmri.jmrix.lenz.XNetConstants; 007import jmri.jmrix.lenz.XPressNetMessageFormatter; 008 009/** 010 * Message Formatter for XPressNet Locomotive information request messages 011 * @author Paul Bender Copyright (C) 2024 012 */ 013 014public class XNetLocoStatusRequestMessageFormatter implements XPressNetMessageFormatter { 015 016 @Override 017 public boolean handlesMessage(Message m) { 018 return m instanceof XNetMessage && 019 m.getElement(0) == XNetConstants.LOCO_STATUS_REQ ; 020 } 021 022 @Override 023 public String formatMessage(Message m) { 024 switch (m.getElement(1)) { 025 case XNetConstants.LOCO_INFO_REQ_FUNC: 026 return Bundle.getMessage("XNetMessageRequestLocoFunctionMomStatus", LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3))); 027 case XNetConstants.LOCO_INFO_REQ_FUNC_HI_ON: 028 return Bundle.getMessage("XNetMessageRequestLocoFunctionHighStatus", LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3))); 029 case XNetConstants.LOCO_INFO_REQ_FUNC_HI_MOM: 030 return Bundle.getMessage("XNetMessageRequestLocoFunctionHighMomStatus", LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3))); 031 case XNetConstants.LOCO_INFO_REQ_V3: 032 return Bundle.getMessage("XNetMessageRequestLocoInfo", LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3))); 033 case XNetConstants.LOCO_STACK_SEARCH_FWD: 034 return Bundle.getMessage("XNetMessageSearchCSStackForward", LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3))); 035 case XNetConstants.LOCO_STACK_SEARCH_BKWD: 036 return Bundle.getMessage("XNetMessageSearchCSStackBackward", LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3))); 037 case XNetConstants.LOCO_STACK_DELETE: 038 return Bundle.getMessage("XNetMessageDeleteAddressOnStack", LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3))); 039 default: 040 throw new IllegalArgumentException("Unknown Locomotive Status Request Message"); 041 } 042 } 043 044}