001package jmri.jmrix.lenz.messageformatters;
002
003import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
004import jmri.jmrix.Message;
005import jmri.jmrix.lenz.XNetConstants;
006import jmri.jmrix.lenz.XNetReply;
007import jmri.jmrix.lenz.XPressNetMessageFormatter;
008
009/**
010 * Formatter for XPressNet V1 software version replies.
011 *
012 * @author Paul Bender Copyright (C) 2025
013 */
014public class XNetV1SoftwareVersionReplyFormatter implements XPressNetMessageFormatter {
015
016    @Override
017    public boolean handlesMessage(Message m) {
018        return m instanceof XNetReply &&
019                ((XNetReply) m).getElement(0) == XNetConstants.CS_REQUEST_RESPONSE &&
020                ((XNetReply) m).getElement(1) == XNetConstants.CS_SOFTWARE_VERSION;
021    }
022
023    @SuppressFBWarnings(value = "BC_UNCONFIRMED_CAST", justification = "cast is checked in handlesMessage")
024    @Override
025    public String formatMessage(Message m) {
026        if (!handlesMessage(m)) {
027            throw new IllegalArgumentException("Message is not supported");
028        }
029        XNetReply r = (XNetReply) m;
030        return Bundle.getMessage("XNetReplyCSVersionV1", (r.getElementBCD(2).floatValue()) / 10);
031    }
032
033}