001package jmri.jmrix.lenz.messageformatters; 002 003import jmri.jmrix.Message; 004import jmri.jmrix.lenz.XNetMessage; 005import jmri.jmrix.lenz.XPressNetMessageFormatter; 006import jmri.jmrix.lenz.XNetConstants; 007 008/** 009 * Message Formatter for XPressNet programming request messages 010 * @author Paul Bender Copyright (C) 2024 011 */ 012public class XNetProgWriteMessageFormatter implements XPressNetMessageFormatter { 013 private static final String X_NET_MESSAGE_REQUEST_SERVICE_MODE_WRITE_DIRECT_V_36 = "XNetMessageRequestServiceModeWriteDirectV36"; 014 015 @Override 016 public boolean handlesMessage(Message m) { 017 return m instanceof XNetMessage && 018 m.getElement(0) == XNetConstants.PROG_WRITE_REQUEST; 019 } 020 021 @Override 022 public String formatMessage(Message m) { 023 switch (m.getElement(1)) { 024 case XNetConstants.PROG_WRITE_MODE_REGISTER: 025 return Bundle.getMessage("XNetMessageRequestServiceModeWriteRegister", m.getElement(2), m.getElement(3)); 026 case XNetConstants.PROG_WRITE_MODE_CV: 027 return Bundle.getMessage("XNetMessageRequestServiceModeWriteDirect", m.getElement(2), m.getElement(3)); 028 case XNetConstants.PROG_WRITE_MODE_PAGED: 029 return Bundle.getMessage("XNetMessageRequestServiceModeWritePaged", m.getElement(2), m.getElement(3)); 030 case XNetConstants.PROG_WRITE_MODE_CV_V36: 031 return Bundle.getMessage(X_NET_MESSAGE_REQUEST_SERVICE_MODE_WRITE_DIRECT_V_36, (m.getElement(2) == 0 ? 1024 : m.getElement(2)), m.getElement(3)); 032 case (XNetConstants.PROG_WRITE_MODE_CV_V36 + 1): 033 return Bundle.getMessage(X_NET_MESSAGE_REQUEST_SERVICE_MODE_WRITE_DIRECT_V_36, (256 + m.getElement(2)), m.getElement(3)); 034 case (XNetConstants.PROG_WRITE_MODE_CV_V36 + 2): 035 return Bundle.getMessage(X_NET_MESSAGE_REQUEST_SERVICE_MODE_WRITE_DIRECT_V_36, (512 + m.getElement(2)), m.getElement(3)); 036 case (XNetConstants.PROG_WRITE_MODE_CV_V36 + 3): 037 return Bundle.getMessage(X_NET_MESSAGE_REQUEST_SERVICE_MODE_WRITE_DIRECT_V_36, (768 + m.getElement(2)), m.getElement(3)); 038 default: 039 throw new IllegalArgumentException("Unknown Programming Write Message"); 040 } 041 } 042}