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 Double Header Request Messages. 011 */ 012 013public class XNetDoubleHeaderRequestMessageFormatter implements XPressNetMessageFormatter { 014 015 @Override 016 public boolean handlesMessage(Message m) { 017 return m instanceof XNetMessage && 018 (m.getElement(0) == XNetConstants.LOCO_DOUBLEHEAD 019 && m.getElement(1) == XNetConstants.LOCO_DOUBLEHEAD_BYTE2); 020 } 021 022 @Override 023 public String formatMessage(Message m) { 024 if(!handlesMessage(m)) 025 throw new IllegalArgumentException("Unknown Double Header Request: " + m.toString()); 026 int loco1 = LenzCommandStation.calcLocoAddress(m.getElement(2), m.getElement(3)); 027 int loco2 = LenzCommandStation.calcLocoAddress(m.getElement(4), m.getElement(5)); 028 if (loco2 == 0) { 029 return Bundle.getMessage("XNetMessageDisolveDoubleHeaderRequest",loco1); 030 } else { 031 return Bundle.getMessage("XNetMessageBuildDoubleHeaderRequest",loco1,loco2); 032 } 033 } 034 035}