package org.ts.ddcs.enums;

/**
 * 水资源规约报文类型定义
 */
public enum SzyDatagramTypeCodeEnum {

    /**
     * 链路检测
     */
    DATAGRAM_CODE_02(0x02, "02"),
    /**
     * 设置遥测终端、中继站地址
     */
    DATAGRAM_CODE_10(0x10, "10"),
    /**
     * 设置遥测终端、中继站时钟
     */
    DATAGRAM_CODE_11(0x11, "11"),
    /**
     * 设置遥测终端工作模式
     */
    DATAGRAM_CODE_12(0x12, "12"),
    /**
     * 设置遥测终端本次充值量
     */
    DATAGRAM_CODE_15(0x15, "15"),
    /**
     * 设置遥测终端剩余水量报警值
     */
    DATAGRAM_CODE_16(0x16, "16"),
    /**
     * 设置遥测终端的水位基值、水位上下限
     */
    DATAGRAM_CODE_17(0x17, "17"),
    /**
     * 设置遥测终端水压上、下限
     */
    DATAGRAM_CODE_18(0x18, "18"),
    /**
     * 设置遥测终端水质参数种类、上限值
     */
    DATAGRAM_CODE_19(0x19, "19"),
    /**
     * 设置遥测终端水质参数种类、下限值
     */
    DATAGRAM_CODE_1A(0x1A, "1A"),
    /**
     * 设置终端站水量的表底（初始）值
     */
    DATAGRAM_CODE_1B(0x1B, "1B"),
    /**
     * 设置遥测终端转发中继引导码长
     */
    DATAGRAM_CODE_1C(0x1C, "1C"),
    /**
     * 设置中继站转发终端地址
     */
    DATAGRAM_CODE_1D(0x1D, "1D"),
    /**
     * 设置中继站工作机自动切换，自报状态
     */
    DATAGRAM_CODE_1E(0x1E, "1E"),
    /**
     * 设置遥测终端流量参数上限值
     */
    DATAGRAM_CODE_1F(0x1F, "1F"),
    /**
     * 设置遥测终端检测参数启报阈值及固态存储时
     * 间段间隔
     */
    DATAGRAM_CODE_20(0x20, "20"),
    /**
     * 置遥测终端 IC 卡功能有效
     */
    DATAGRAM_CODE_30(0x30, "30"),
    /**
     * 取消遥测终端 IC 卡功能
     */
    DATAGRAM_CODE_31(0x31, "31"),
    /**
     * 定值控制投入
     */
    DATAGRAM_CODE_32(0x32, "32"),
    /**
     * 定值控制退出
     */
    DATAGRAM_CODE_33(0x33, "33"),
    /**
     * 定值量设定
     */
    DATAGRAM_CODE_34(0x34, "34"),

    /**
     * 水资源查询测站编码
     */
    DATAGRAM_CODE_50(0x50, "50"),
    /**
     * 查询遥测终端、中继站时钟
     */
    DATAGRAM_CODE_51(0x51, "51"),
    /**
     * 查询遥测终端工作模式
     */
    DATAGRAM_CODE_52(0x52, "52"),
    /**
     * 查询自报种类及时间间隔
     */
    DATAGRAM_CODE_53(0x53, "53"),
    /**
     * 查询遥测终端需查询的实时数据种类 中心站 遥测终端
     */
    DATAGRAM_CODE_54(0x54, "54"),
    /**
     * 查询遥测终端最近成功充值量和现有剩余水量
     */
    DATAGRAM_CODE_55(0x55, "55"),
    /**
     * 查询遥测终端剩余水量和报警值
     */
    DATAGRAM_CODE_56(0x56, "56"),
    /**
     * 查询遥测终端水位基值、水位上下限
     */
    DATAGRAM_CODE_57(0x57, "57"),
    /**
     * 查询遥测终端水压上、下限
     */
    DATAGRAM_CODE_58(0x58, "58"),
    /**
     * 查询遥测终端水质参数种类、上限值
     */
    DATAGRAM_CODE_59(0x59, "59"),
    /**
     * 查询遥测终端水质参数种类、下限值
     */
    DATAGRAM_CODE_5A(0x5A, "5A"),
    /**
     * 查询遥测终端的事件记录
     */
    DATAGRAM_CODE_5D(0x5D, "5D"),
    /**
     * 查询遥测终端状态和报警状态
     */
    DATAGRAM_CODE_5E(0x5E, "5E"),
    /**
     * 查询水泵电机实时工作数据
     */
    DATAGRAM_CODE_5F(0x5F, "5F"),
    /**
     * 查询遥测终端转发中继引导码长
     */
    DATAGRAM_CODE_60(0x60, "60"),
    /**
     * 查询遥测终端图像记录
     */
    DATAGRAM_CODE_61(0x61, "61"),
    /**
     * 查询中继站转发终端地址
     */
    DATAGRAM_CODE_62(0x62, "62"),
    /**
     * 查询中继站工作机状态和切换记录
     */
    DATAGRAM_CODE_63(0x53, "63"),
    /**
     * 查询遥测终端流量参数上限值
     */
    DATAGRAM_CODE_64(0x64, "64"),
    /**
     * 自报预警
     */
    DATAGRAM_CODE_81(0x81, "81"),
    /**
     * 人工置数
     */
    DATAGRAM_CODE_82(0x82, "82"),
    /**
     * 查询基本配置信息
     */
    DATAGRAM_CODE_87(0x87, "87"),
    /**
     * 配置基本配置信息
     */
    DATAGRAM_CODE_88(0x88, "88"),
    /**
     * 重启,复位遥测终端参数和状态
     */
    DATAGRAM_CODE_90(0x90, "90"),
    /**
     * 清空遥测终端历史数据单元
     */
    DATAGRAM_CODE_91(0x91, "91"),
    /**
     * 遥控启动水泵或阀门/闸门
     */
    DATAGRAM_CODE_92(0x92, "92"),
    /**
     * 遥控关闭水泵或阀门/闸门
     */
    DATAGRAM_CODE_93(0x93, "93"),
    /**
     * 遥控终端或中继站通信机切换
     */
    DATAGRAM_CODE_94(0x94, "94"),
    /**
     * 遥控中继站工作机切换
     */
    DATAGRAM_CODE_95(0x95, "95"),
    /**
     * 修改遥测终端密码
     */
    DATAGRAM_CODE_96(0x96, "96"),
    /**
     * 设置遥测站需查询的实时数据种类
     */
    DATAGRAM_CODE_A0(0xA0, "A0"),
    /**
     * 设置遥测终端的数据自报种类及时间间隔
     */
    DATAGRAM_CODE_A1(0xA1, "A1"),
    /**
     * 查询遥测终端实时值
     */
    DATAGRAM_CODE_B0(0xB0, "B0"),
    /**
     * 查询遥测终端固态存储数据
     */
    DATAGRAM_CODE_B1(0xB1, "B1"),
    /**
     * 查询遥测终端内存自报数据
     */
    DATAGRAM_CODE_B2(0xB2, "B2"),
    /**
     * 定时报
     */
    DATAGRAM_CODE_C0(0xC0, "C0"),
    /**
     * 扩展链路报
     */
    DATAGRAM_CODE_E1(0xE1, "E1"),
    /**
     * 中心站设置遥测站IP和端口
     */
    DATAGRAM_CODE_E7(0xE7, "E7"),
    /**
     * 中心站查询遥测站IP和端口
     */
    DATAGRAM_CODE_E8(0xE8, "E8"),
    /**
     * 下行文件
     */
    DATAGRAM_CODE_F1(0xF1, "F1"),
    /**
     * 重启
     */
    DATAGRAM_CODE_F3(0xF3, "F3"),
    /**
     * 发送升级配置文件
     */
    DATAGRAM_CODE_F4(0xF4, "F4"),
    /**
     * RTU自身状态上报
     */
    DATAGRAM_CODE_F5(0xF5, "F5");

    private int code;

    private String name;

    private SzyDatagramTypeCodeEnum(int code, String name) {
        this.code = code;
        this.name = name;
    }

    /**
     * Function:根据code来获取对应的name
     * Author: Admin
     * Date:2021/6/26
     *
     * @param code
     * @return java.lang.String
     * @throws Exception
     */
    public static String getName(int code) {
        for (SzyDatagramTypeCodeEnum type : SzyDatagramTypeCodeEnum.values()) {
            if (type.code == code) {
                return type.name;
            }
        }
        return "";
    }

    /**
     * Function:根据code来获取对应的枚举常量
     * Author: Admin
     * Date:2021/6/26
     *
     * @param code
     * @return com.zhgzjg.web.enums.DeleteFlag
     * @throws Exception
     */
    public static SzyDatagramTypeCodeEnum getEnumByCode(int code) {
        for (SzyDatagramTypeCodeEnum type : SzyDatagramTypeCodeEnum.values()) {
            if (type.code == code) {
                return type;
            }
        }
        return null;
    }


    /**
     * Function:根据name来获取对应的枚举常量
     * Author: Admin
     * Date:2021/6/26
     *
     * @param name
     * @return com.zhgzjg.web.enums.DeleteFlag
     * @throws Exception
     */
    public static SzyDatagramTypeCodeEnum getEnumByName(String name) {
        for (SzyDatagramTypeCodeEnum type : SzyDatagramTypeCodeEnum.values()) {
            if (type.name.equals(name)) {
                return type;
            }
        }
        return null;
    }


    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
