001package jmri.jmrix.roco.z21.messageformatters; 002 003import jmri.jmrix.lenz.XPressNetMessageFormatter; 004import jmri.jmrix.roco.z21.Z21Constants; 005import jmri.jmrix.roco.z21.Z21XNetMessage; 006 007public class Z21XNetTurnoutMessageFormatter implements XPressNetMessageFormatter { 008 009 @Override 010 public String formatMessage(jmri.jmrix.Message m) { 011 if(m.getElement(0) == Z21Constants.LAN_X_SET_TURNOUT) { 012 int address = (m.getElement(1) << 8) + m.getElement(2) + 1; 013 int element = m.getElement(3); 014 boolean queue = (element & 0x20) == 0x20; 015 String active = ((element & 0x08) == 0x08)? "activate":"deactivate"; 016 return Bundle.getMessage("Z21LAN_X_SET_TURNOUT", address, active, element & 0x01, queue); 017 } 018 if(m.getElement(0) == Z21Constants.LAN_X_GET_TURNOUT_INFO) { 019 int address = (m.getElement(1) << 8) + m.getElement(2) + 1; 020 return Bundle.getMessage("Z21LAN_X_GET_TURNOUT_INFO", address); 021 } 022 throw new IllegalArgumentException("Unknown message type"); 023 } 024 025 @Override 026 public boolean handlesMessage(jmri.jmrix.Message m) { 027 return (m instanceof Z21XNetMessage && 028 (m.getElement(0) == Z21Constants.LAN_X_SET_TURNOUT || m.getElement(0) == Z21Constants.LAN_X_GET_TURNOUT_INFO)); 029 } 030 031}