001package jmri.jmrix.roco.z21.messageformatters;
002
003import jmri.jmrix.lenz.XPressNetMessageFormatter;
004import jmri.jmrix.roco.z21.Z21Constants;
005
006/**
007 * Format Z21XNetReply CV Programming results for display in the XpressNet monitor.
008 *
009 * @author Paul Bender Copyright (C) 2025
010 */
011public class Z21XNetCVReplyFormatter implements XPressNetMessageFormatter {
012
013    public boolean handlesMessage(jmri.jmrix.Message m) {
014        return m instanceof jmri.jmrix.roco.z21.Z21XNetReply &&
015                m.getElement(0) == Z21Constants.LAN_X_CV_RESULT_XHEADER &&
016                m.getElement(1) == Z21Constants.LAN_X_CV_RESULT_DB0;
017    }
018
019    public String formatMessage(jmri.jmrix.Message m) {
020        if (!handlesMessage(m)) {
021            throw new IllegalArgumentException("Message is not a Z21XNetReply");
022        }
023        int value = m.getElement(4) & 0xFF;
024        int cv = ( (m.getElement(2)&0xFF) << 8) +
025                        ( m.getElement(3)& 0xFF ) + 1;
026        return Bundle.getMessage("Z21LAN_X_CV_RESULT",cv,value);
027    }
028}