001package jmri.jmrix.lenz.messageformatters;
002
003import jmri.jmrix.Message;
004import jmri.jmrix.lenz.XNetReply;
005import jmri.jmrix.lenz.XPressNetMessageFormatter;
006
007/**
008 * Formatter for XPressNet Broadcast Model Time messages.
009 *
010 * @author Paul Bender Copyright (C) 2025
011 */
012public class XNetBCModelTimeFormatter implements XPressNetMessageFormatter {
013
014    @Override
015    public boolean handlesMessage(Message m) {
016        return m instanceof XNetReply &&  m.getElement(0) == 0x63 && m.getElement(1) == 0x03;
017    }
018
019    @Override
020    public String formatMessage(Message m) {
021        if (!handlesMessage(m)) {
022            throw new IllegalArgumentException("Message is not supported");
023        }
024        int day = ((m.getElement(2) & 0xE0) >>5);
025        int hour = ((m.getElement(2) & 0x1F));
026        int minute = m.getElement(3) & 0x3F;
027        boolean stopped = (m.getElement(3) & 0x10000000) != 0;
028        return Bundle.getMessage("XNetBCTimeFormat", day,hour,minute, Bundle.getMessage(stopped ? "ClockStopped" : "ClockRunning"));
029    }
030
031}