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    @Override
014    public boolean handlesMessage(jmri.jmrix.Message m) {
015        return m instanceof jmri.jmrix.roco.z21.Z21XNetReply &&
016                m.getElement(0) == Z21Constants.LAN_X_CV_RESULT_XHEADER &&
017                m.getElement(1) == Z21Constants.LAN_X_CV_RESULT_DB0;
018    }
019
020    @Override
021    public String formatMessage(jmri.jmrix.Message m) {
022        if (!handlesMessage(m)) {
023            throw new IllegalArgumentException("Message is not a Z21XNetReply");
024        }
025        int value = m.getElement(4) & 0xFF;
026        int cv = ( (m.getElement(2)&0xFF) << 8) +
027                        ( m.getElement(3)& 0xFF ) + 1;
028        return Bundle.getMessage("Z21LAN_X_CV_RESULT",cv,value);
029    }
030}