package com.jiayue.ipfcst.common.data.entity;

import lombok.AllArgsConstructor;
import lombok.Getter;
import wei.yigulu.modbus.domain.datatype.ModbusDataTypeEnum;

/**
 * 协议中的集中数据类型
 *
 * @author xiuwei
 */
@AllArgsConstructor
@Getter
public enum ProtocolDataType {

	/**
	 * 列举几种数据类型
	 * 开关量  遥信值
	 */
	A(0, "A", 2, "开关量", ModbusDataTypeEnum.A16),


	/**
	 * 无符号整型仅正数
	 */
	P_AB(1, "+AB", 2, "无符号整型仅正数 0到65535", ModbusDataTypeEnum.P_AB),
	/**
	 * 有符号整型可正负
	 */
	PM_AB(2, "±AB", 2, "有符号整型可正负 -32768到32765", ModbusDataTypeEnum.PM_AB),
	/**
	 * 无符号高低转换整型仅正数
	 */
	P_BA(3, "+BA", 2, "无符号高低转换整型仅正数 0到65535", ModbusDataTypeEnum.P_BA),
	/**
	 * 有符号高低转换整型可正负
	 */
	PM_BA(4, "±BA", 2, "有符号高低转换整型可正负 -32768到32765", ModbusDataTypeEnum.PM_BA),
	/**
	 * 无符号四字节整型仅正数
	 */
	P_AABB(5, "+AABB", 4, "无符号四字节整型仅正数 0到4294967295", ModbusDataTypeEnum.P_ABCD),
	/**
	 * 有符号四字节整型可正负
	 */
	PM_AABB(6, "±AABB", 4, "有符号四字节整型可正负 -2147483648到2147483647", ModbusDataTypeEnum.PM_ABCD),
	/**
	 * 无符号高低转换四字节整型仅正数
	 */
	P_BBAA(7, "+BBAA", 4, "无符号高低转换四字节整型仅正数 0到4294967295", ModbusDataTypeEnum.P_CDAB),
	/**
	 * 有符号高低转换四字节整型可正负
	 */
	PM_BBAA(8, "±BBAA", 4, "有符号高低转换四字节整型可正负 -2147483648到2147483647", ModbusDataTypeEnum.PM_CDAB),
	/**
	 * 四字节短浮点
	 */
	ABCD(9, "ABCD", 4, "四字节短浮点", ModbusDataTypeEnum.ABCD),

	/**
	 * 四字节高低位转换浮点
	 */
	CDAB(10, "CDAB", 4, "四字节高低位转换浮点", ModbusDataTypeEnum.CDAB),
	/**
	 * 四字节高低位转换反转浮点
	 */
	DCBA(11, "DCBA", 4, "四字节高低位转换反转浮点", ModbusDataTypeEnum.DCBA),


	/**
	 * 遥测值 是下面 这些遥测类型的总称 用于不区分遥测类型的情况
	 */
	YC(12, "YC", 0, "开关量", ModbusDataTypeEnum.A16),
	/**
	 * 四字节短浮点
	 */
	BADC(13, "BADC", 4, "四字节短浮点", ModbusDataTypeEnum.BADC);


	/**
	 * 数据类型代号
	 */
	private Integer code;

	/**
	 * 数据类型的表达式
	 */
	private String describe;


	/**
	 * 占用点位
	 */
	private Integer occupiedBytes;

	/**
	 * 数据类型描述
	 */
	private String cnDescribe;

	/**
	 * 对应modbus中的数据类型
	 */
	private ModbusDataTypeEnum modbusDataType;


}
