package com.tsi.navi.dto.enums;

import java.util.HashMap;
import java.util.Map;

public enum eOpCode {

    TSI_CPU_SIGNAL_NOTIFY  (0x13, "TSI_CPU_SIGNAL_NOTIFY"),     // 신호상태정보 전송 (BIN)
    TSI_CPU_PVD_NOTIFY     (0x14, "TSI_CPU_PVD_NOTIFY"),        // 차량운행정보(PVD) 전송 (BIN)
    TSI_CPU_PVD_ASN_NOTIFY (0x15, "TSI_CPU_PVD_ASN_NOTIFY"),    // 차량운행정보(PVD) 전송 (ASN.1)
    TSI_CPU_SIGNAL_ADD     (0xFE, "TSI_CPU_SIGNAL_ADD"),        // 신호상태정보 연등지
    TSI_CPU_DISCONNECTED   (0xFF, "TSI_CPU_DISCONNECTED");      // 신호제어기 연결 종료(내부사용)

    private final int value;
    private final String string;

    private static final Map<Integer, eOpCode> map;
    static {
        map = new HashMap<>();
        for (eOpCode e : values()) {
            map.put(Integer.valueOf(e.value), e);
        }
    }
    public static eOpCode getByValue(int value) {
        return map.get(Integer.valueOf(value));
    }
    public static eOpCode getByValue(byte value) {
        int intValue = (int)(value & 0x0F);
        return getByValue(intValue);
    }

    eOpCode(int value, String string) {
        this.value  = value;
        this.string = string;
    }

    public int getValue() {
        return this.value;
    }
    public String toString() {
        return this.string;
    }
}
