package wei.yigulu.modbus.domain;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 功能码 copy from modbus4j
*
* @author: xiuwei
* @version:
*/
@AllArgsConstructor
public enum FunctionCode {
/**
* Constant READ_COILS 1
*/
READ_COILS(1),
READ_COILS_ERROR(0x81),
/**
* Constant READ_DISCRETE_INPUTS 2
*/
READ_DISCRETE_INPUTS(2),
READ_DISCRETE_INPUTS_ERROR(0x82),
/**
* Constant READ_HOLDING_REGISTERS 3
*/
READ_HOLDING_REGISTERS(3),
READ_HOLDING_REGISTERS_ERROR(0x83),
/**
* Constant READ_INPUT_REGISTERS 4
*/
READ_INPUT_REGISTERS(4),
READ_INPUT_REGISTERS_ERROR(0x84),
/**
* Constant WRITE_COIL 5
*/
WRITE_COIL(5),
WRITE_COIL_ERROR(0x85),
/**
* Constant WRITE_REGISTER 6
*/
WRITE_REGISTER(6),
WRITE_REGISTER_ERROR(0x86),
/**
* Constant READ_EXCEPTION_STATUS 7
*/
READ_EXCEPTION_STATUS(7),
/**
* Constant WRITE_COILS 15
*/
WRITE_COILS(15),
WRITE_COILS_ERROR(0x8F),
/**
* Constant WRITE_REGISTERS 16
*/
WRITE_REGISTERS(16),
WRITE_REGISTERS_ERROR(0x90),
/**
* Constant REPORT_SLAVE_ID 17
*/
REPORT_SLAVE_ID(17),
/**
* Constant WRITE_MASK_REGISTER 22
*/
WRITE_MASK_REGISTER(22),
/**
* Constant READ_WRITE_REGISTERS 23
*/
READ_WRITE_REGISTERS(23);
@Getter
private Integer code;
public static FunctionCode valueOf(int code) {
switch (code) {
case 1:
return READ_COILS;
case 2:
return READ_DISCRETE_INPUTS;
case 3:
return READ_HOLDING_REGISTERS;
case 4:
return READ_INPUT_REGISTERS;
case 0x81:
return READ_COILS_ERROR;
case 0x82:
return READ_DISCRETE_INPUTS_ERROR;
case 0x83:
return READ_HOLDING_REGISTERS_ERROR;
case 0x84:
return READ_INPUT_REGISTERS_ERROR;
case 5:
return WRITE_COIL;
case 6:
return WRITE_REGISTER;
case 7:
return READ_EXCEPTION_STATUS;
case 15:
return WRITE_COILS;
case 16:
return WRITE_REGISTERS;
case 17:
return REPORT_SLAVE_ID;
case 22:
return WRITE_MASK_REGISTER;
case 23:
return READ_WRITE_REGISTERS;
case 0x85:
return WRITE_COIL_ERROR;
case 0x86:
return WRITE_REGISTER_ERROR;
case 0x8F:
return WRITE_COILS_ERROR;
case 0x90:
return WRITE_REGISTERS_ERROR;
default:
throw new IllegalArgumentException();
}
}
}