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