001package jmri.jmrix.powerline.insteon2412s;
002
003/**
004 * Constants and functions specific to the Insteon 2412S interface
005 *
006 * @author Bob Jacobsen Copyright (C) 2008, 2009
007 * @author Ken Cameron Copyright (C) 2010
008 */
009public class Constants {
010
011    private Constants() {} // class only supplies static methods
012
013    public static final int HEAD_STX = 0x02;
014
015    public static final int POLL_REQ_STD = 0x50;
016    public static final int POLL_REQ_EXT = 0x51;
017    public static final int POLL_REQ_X10 = 0x52;
018    public static final int POLL_REQ_BUTTON = 0x54;
019    public static final int POLL_REQ_BUTTON_RESET = 0x55;
020    public static final int FUNCTION_REQ_STD = 0x62;
021    public static final int FUNCTION_REQ_X10 = 0x63;
022
023    public static final int CMD_LIGHT_ON_RAMP = 0x11;
024    public static final int CMD_LIGHT_ON_FAST = 0x12;
025    public static final int CMD_LIGHT_OFF_RAMP = 0x13;
026    public static final int CMD_LIGHT_OFF_FAST = 0x14;
027    public static final int CMD_LIGHT_CHG = 0x21;
028
029    public static final int BUTTON_TAP = 0x02;
030    public static final int BUTTON_HELD = 0x03;
031    public static final int BUTTON_REL = 0x04;
032    public static final int BUTTON_BITS_ID = 0xF0;
033    public static final int BUTTON_BITS_OP = 0x0F;
034
035    public static final int REPLY_ACK = 0x06;
036    public static final int REPLY_NAK = 0x15;
037
038    // flag values
039    public static final int FLAG_BIT_STDEXT = 0x10;
040    public static final int FLAG_STD = 0x00;
041    public static final int FLAG_EXT = 0x10;
042    public static final int FLAG_TYPE_P2P = 0x00;
043    public static final int FLAG_TYPE_ACK = 0x20;
044    public static final int FLAG_TYPE_NAK = 0xA0;
045    public static final int FLAG_TYPE_GBCAST = 0xC0;
046    public static final int FLAG_TYPE_GBCLEANUP = 0x40;
047    public static final int FLAG_TYPE_GBCLEANACK = 0x60;
048    public static final int FLAG_TYPE_GBCLEANNAK = 0xE0;
049
050    public static final int FLAG_BIT_X10_CMDUNIT = 0x80;
051    public static final int FLAG_X10_RECV_CMD = 0x80;
052    public static final int FLAG_X10_RECV_UNIT = 0x00;
053
054    public static final int FLAG_MASK_HOPSLEFT = 0x0C;
055    public static final int FLAG_SHIFT_HOPSLEFT = 2;
056    public static final int FLAG_MASK_MAXHOPS = 0x03;
057    public static final int FLAG_MAXHOPS_DEFAULT = 0x01;
058    public static final int FLAG_MASK_MSGTYPE = 0xE0;
059
060    /**
061     * Pretty-print a header code.
062     * @param b header value
063     * @return  formatted translation of header value
064     */
065    public static String formatHeaderByte(int b) {
066        return "Dim: " + ((b >> 3) & 0x1F)
067                + ((b & 0x02) != 0 ? " function" : " address ")
068                + ((b & 0x01) != 0 ? " extended" : " ");
069    }
070
071}