package com.beanit.asn1dsrc.enums;

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

public enum eControlRequest {

    Request_BasicInfo           (0x00, "Request_BasicInfo"),            //      -- 기초정보(수집지점정보,방향판단정보,비암호화 단말정보) 요청
    Request_BasicInfo_Collect   (0x01, "Request_BasicInfo_Collect"),    //      -- 기초정보(수집지점정보) 요청
    Request_BasicInfo_Direction (0x02, "Request_BasicInfo_Direction"),  //      -- 기초정보(방향판단정보) 요청
    Request_BasicInfo_NonCrypt  (0x03, "Request_BasicInfo_NonCrypt"),   //      -- 기초정보(비암호화 단말정보) 요청
    Request_MulticastInfo       (0x04, "Request_MulticastInfo"),        //      -- Broadcast 교통정보 요청
    Request_ObuRequestInfo      (0x05, "Request_ObuRequestInfo"),       //      -- OBU 1:1 교통정보 요청
    Request_ObuPushInfo         (0x06, "Request_ObuPushInfo"),          //      -- OBU Push 방송정보 요청
    Request_TrafficInfo         (0x07, "Request_TrafficInfo"),          //주3), -- 교통수집정보 요청
    Request_ObuEndConnect       (0x08, "Request_ObuEndConnect"),        //주4), -- 단말 접속종료정보 요청
    Request_ObuEnterDirect      (0x09, "Request_ObuEnterDirect"),       //주5), -- 단말 진입방향정보 요청
    Request_BasicInfo_CryptKey  (0x0A, "Request_BasicInfo_CryptKey");   //      -- 기초정보(암호화 key 정보) 요청

    private final int value;
    private final String string;

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

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

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