[670][adas][data-center] 新增冷启动状态查询以及响应接口;新增环形路线功能:启动自驾新增字段、新增启动自驾新字段查询以及响应接口、新增到站查询和响应接口;新增电源盒协议接口相关接口:
This commit is contained in:
@@ -88,6 +88,13 @@ public enum MessageType {
|
||||
TYPE_RECEIVE_V2N_NIO_OTHER_RETROGRADE_EVENT(MessagePad.MessageType.MsgTypeV2nNioOtherRetrogradeEvent, "V2N NIO他车逆行(路侧)"),
|
||||
TYPE_RECEIVE_V2N_NIO_CONGESTION_EVENT(MessagePad.MessageType.MsgTypeV2nNioCongestionEvent, "V2N NIO拥堵事件"),
|
||||
TYPE_RECEIVE_LANE_MARKS_TRAN(MessagePad.MessageType.MsgTypeLaneMarksTran, "车道线"),
|
||||
TYPE_SEND_COLLISION_REPORT(MessagePad.MessageType.MsgTypeCollisionReport, "碰撞上报"),
|
||||
TYPE_SEND_POWER_UNIT(MessagePad.MessageType.MsgTypePowerUnit, "电源模块请求"),
|
||||
TYPE_RECEIVE_POWER_UNIT(MessagePad.MessageType.MsgTypePowerUnit, "电源模块响应"),
|
||||
TYPE_SEND_SSM_FUNC_MSG(MessagePad.MessageType.MsgTypeSSMFuncMsg, "SSM功能控制"),
|
||||
TYPE_RECEIVE_SSM_FUNC_MSG(MessagePad.MessageType.MsgTypeSSMFuncMsg, "SSM功能响应"),
|
||||
TYPE_SEND_SSM_FUNC_STATUS_QUERY(MessagePad.MessageType.MsgTypeSSMFuncStatusQuery, "SSM功能状态查询"),
|
||||
TYPE_RECEIVE_SSM_FUNC_STATUS_QUERY(MessagePad.MessageType.MsgTypeSSMFuncStatusQuery, "SSM功能状态响应"),
|
||||
//TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释
|
||||
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"),
|
||||
TYPE_RECEIVE_SWEEPER_TASK_INDEX_DATA(MessagePad.MessageType.MsgTypeSweeperTaskIndexData, "清扫车指标数据"),
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.zhjt.mogo.adas.common.power;
|
||||
|
||||
/**
|
||||
* 电源控制类型
|
||||
*/
|
||||
public enum PowerControlType {
|
||||
UNKNOWN(-1),//未知
|
||||
SINGLE_CHANNEL_CONTROL(0x0011),//单通道控制
|
||||
SINGLE_CHANNEL_CONTROL_RESPONSE(0x0811),//单通道控制响应
|
||||
MULTI_CHANNEL_CONTROL(0x00FF),//多通道控制
|
||||
MULTI_CHANNEL_CONTROL_RESPONSE(0x08FF),//多通道控制响应
|
||||
RESET_CONTROL(0x0044),//复位控制
|
||||
RESET_CONTROL_RESPONSE(0x0844),//复位控制响应
|
||||
;
|
||||
|
||||
|
||||
public final int value;
|
||||
|
||||
PowerControlType(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
|
||||
public static PowerControlType getPowerControlType(int value) {
|
||||
PowerControlType[] data = PowerControlType.values();
|
||||
for (PowerControlType type : data) {
|
||||
if (type.value == value) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.zhjt.mogo.adas.common.power;
|
||||
|
||||
public enum PowerError {
|
||||
|
||||
UNKNOWN(-1, "未知"),
|
||||
ERR0(0x00, "其它未识别异常"),
|
||||
ERR1(0x01, "帧校验值验证失败或帧类型不支持"),
|
||||
ERR2(0x02, "STS帧长度“不是12”异常"),
|
||||
ERR3(0x03, "帧长度“小于16”异常"),
|
||||
ERR4(0x04, "帧类型不支持(合并处理)"),
|
||||
ERR5(0x05, "底层控制“CAN”中断异常"),
|
||||
ERR6(0x06, "底层控制“未就绪”异常"),
|
||||
ERR7(0x07, "CMD帧的“控制方式”不支持或未定义"),
|
||||
ERR8(0x08, "CMD帧、单通道控制、通道索引号未注册使用"),
|
||||
ERR9(0x09, "CMD帧、单通道控制、通道索引号超出范围"),
|
||||
;
|
||||
public final int value;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
public final String desc;
|
||||
|
||||
PowerError(int value, String desc) {
|
||||
this.value = value;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public static PowerError getPowerError(int value) {
|
||||
if (value == ERR0.value) {
|
||||
return ERR0;
|
||||
} else if (value == ERR1.value) {
|
||||
return ERR1;
|
||||
} else if (value == ERR2.value) {
|
||||
return ERR2;
|
||||
} else if (value == ERR3.value) {
|
||||
return ERR3;
|
||||
} else if (value == ERR4.value) {
|
||||
return ERR4;
|
||||
} else if (value == ERR5.value) {
|
||||
return ERR5;
|
||||
} else if (value == ERR6.value) {
|
||||
return ERR6;
|
||||
} else if (value == ERR7.value) {
|
||||
return ERR7;
|
||||
} else {
|
||||
return UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.zhjt.mogo.adas.common.power;
|
||||
|
||||
public enum PowerFrameType {
|
||||
|
||||
UNKNOWN(-1, "未知"),
|
||||
STS_REQUEST(0x0040, "STS请求"),
|
||||
STS_RESPONSE(0x0840, "STS响应"),
|
||||
CMD_REQUEST(0x0044, "CMD请求"),
|
||||
CMD_RESPONSE(0x0844, "CMD响应"),
|
||||
ERROR_RESPONSE(0x0800, "服务器异常响应"),//客户端发送的数据服务端检测到异常
|
||||
;
|
||||
public final int type;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
public final String desc;
|
||||
|
||||
PowerFrameType(int type, String desc) {
|
||||
this.type = type;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public static PowerFrameType getPowerFrameType(int type) {
|
||||
if (type == STS_REQUEST.type) {
|
||||
return STS_REQUEST;
|
||||
} else if (type == STS_RESPONSE.type) {
|
||||
return STS_RESPONSE;
|
||||
} else if (type == CMD_REQUEST.type) {
|
||||
return CMD_REQUEST;
|
||||
} else if (type == CMD_RESPONSE.type) {
|
||||
return CMD_RESPONSE;
|
||||
} else if (type == ERROR_RESPONSE.type) {
|
||||
return ERROR_RESPONSE;
|
||||
} else {
|
||||
return UNKNOWN;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.zhjt.mogo.adas.common.power;
|
||||
|
||||
/**
|
||||
* 数据协议解析状态
|
||||
*/
|
||||
public enum PowerProtocolStatus {
|
||||
|
||||
|
||||
SUCCEED(0x00, "数据解析成功"),
|
||||
CHECK_FAILED_PACKAGE_LENGTH(0x01, "数据包长度校验失败"),
|
||||
DATA_LENGTH_NOT_NOTE_OF4(0x02, "数据长度非4的倍数"),
|
||||
XOR_CHECK_FAILED(0x03, "异域校验失败"),
|
||||
DATA_PARSE_FAILED(0x04, "数据解析失败"),
|
||||
CHECK_FAILED_FRAME_HEADER(0x05, "数据头校验失败"),
|
||||
POWER_FRAME_TYPE_UNKNOWN(0x06, "帧类型未知"),
|
||||
PAYLOAD_DATA_PARSE_FAILED(0x07, "负载数据解析失败"),
|
||||
|
||||
;
|
||||
public final int code;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
public final String desc;
|
||||
|
||||
PowerProtocolStatus(int code, String desc) {
|
||||
this.code = code;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package com.zhjt.mogo.adas.common.power;
|
||||
|
||||
/**
|
||||
* 单元通道
|
||||
*/
|
||||
public enum PowerUnitChannel {
|
||||
|
||||
UNKNOWN(-1, null, -1, null),
|
||||
AIO_PASSENGER_SCREEN(1, "OUT1", 15, "乘客屏一体机(含主控)"),
|
||||
EB5_DEVICE(2, "OUT2", 15, "EB5主机(工程样车)"),
|
||||
VERIFICATION_DEVICE(3, "OUT3", 5, "核销设备"),
|
||||
DASHCAM(4, "OUT4", 5, "行车记录仪"),
|
||||
VOICE_MODULE(5, "OUT5", 10, "语音模块"),
|
||||
CALL_KEY(6, "OUT6", 10, "呼叫按键"),
|
||||
FRONT_LED_SCREEN(7, "OUT7", 10, "前LED屏"),
|
||||
BACK_LED_SCREEN(8, "OUT8", 10, "后LED屏"),
|
||||
POWER_AMPLIFIER(9, "OUT9", 10, "功放"),
|
||||
AIO_DRIVER_SCREEN(10, "OUT10", 10, "司机屏一体机"),
|
||||
RTK(27, "OUT27", 5, "RTK定位设备"),
|
||||
VTBOX(28, "OUT28", 5, "VTBOX"),
|
||||
FRONT_MILLIMETER_WAVE_RADAR(29, "OUT29", 10, "前毫米波雷达"),
|
||||
BACK_MILLIMETER_WAVE_RADAR(30, "OUT30", 10, "后毫米波雷达"),
|
||||
LEFT_FRONT_MILLIMETER_WAVE_RADAR(31, "OUT31", 10, "左前毫米波雷达"),
|
||||
RIGHT_FRONT_MILLIMETER_WAVE_RADAR(32, "OUT32", 10, "右前毫米波雷达"),
|
||||
LEFT_BACK_MILLIMETER_WAVE_RADAR(33, "OUT33", 10, "左后毫米波雷达"),
|
||||
RIGHT_BACK_MILLIMETER_WAVE_RADAR(34, "OUT34", 10, "右后毫米波雷达"),
|
||||
FRONT_BLIND_LASER_RADAR(35, "OUT35", 5, "前补盲激光雷达"),
|
||||
LEFT_BLIND_LASER_RADAR(36, "OUT36", 5, "左补盲激光雷达"),
|
||||
RIGHT_BLIND_LASER_RADAR(37, "OUT37", 5, "右补盲激光雷达"),
|
||||
BACK_BLIND_LASER_RADAR(38, "OUT38", 5, "后补盲激光雷达"),
|
||||
FRONT_LASER_RADAR(39, "OUT39", 5, "前激光雷达"),
|
||||
LEFT_LASER_RADAR(40, "OUT40", 5, "左激光雷达"),
|
||||
RIGHT_LASER_RADAR(41, "OUT41", 5, "右激光雷达"),
|
||||
BACK_LASER_RADAR(42, "OUT42", 5, "后激光雷达"),
|
||||
SWITCH(43, "OUT43", 5, "交换机"),
|
||||
ROUTER_5G(44, "OUT44", 5, "5G路由器"),
|
||||
OBU(45, "OUT45", 5, "OBU"),
|
||||
FRONT_RIGHT_CAMERA_120(52, "M-Video1", 0.6F, "120°前右摄像头(2M)"),
|
||||
FRONT_CENTRE_CAMERA_60(53, "M-Video2", 0.6F, "60°前中摄像头(8M)"),
|
||||
LEFT_FRONT_CAMERA_120(54, "M-Video3", 0.6F, "120°左前摄像头(2M)"),
|
||||
LEFT_BACK_CAMERA_120(55, "M-Video4", 0.6F, "120°左后摄像头(2M)"),
|
||||
RIGHT_FRONT_CAMERA_120(56, "M-Video5", 0.6F, "120°右前摄像头(2M)"),
|
||||
RIGHT_BACK_CAMERA_120(57, "M-Video6", 0.6F, "120°右后摄像头(2M)"),
|
||||
BACK_CAMERA_60(58, "M-Video7", 0.6F, "120°后摄像头(2M)"),
|
||||
FRONT_SURROUND_VIEW_CAMERA(63, "S-Video4", 0.6F, "前环视摄像头(2M)"),
|
||||
LEFT_SURROUND_VIEW_CAMERA(64, "S-Video5", 0.6F, "左环视摄像头(2M)"),
|
||||
RIGHT_SURROUND_VIEW_CAMERA(65, "S-Video6", 0.6F, "右环视摄像头(2M)"),
|
||||
BACK_SURROUND_VIEW_CAMERA(66, "S-Video7", 0.6F, "后环视摄像头(2M)"),
|
||||
;
|
||||
|
||||
/**
|
||||
* 通道编号
|
||||
*/
|
||||
public final int index;
|
||||
|
||||
/**
|
||||
* 物理连接通道
|
||||
*/
|
||||
|
||||
public final String physicalChannel;
|
||||
/**
|
||||
* 电流保护阈值 单位:A
|
||||
*/
|
||||
public final float currentProtectionThreshold;
|
||||
|
||||
/**
|
||||
* 驱动单元
|
||||
*/
|
||||
public final String driverElement;
|
||||
|
||||
|
||||
PowerUnitChannel(int index, String physicalChannel, float currentProtectionThreshold, String driverElement) {
|
||||
this.index = index;
|
||||
this.physicalChannel = physicalChannel;
|
||||
this.currentProtectionThreshold = currentProtectionThreshold;
|
||||
this.driverElement = driverElement;
|
||||
}
|
||||
|
||||
public static PowerUnitChannel getPowerUnitChannel(int index) {
|
||||
PowerUnitChannel[] data = PowerUnitChannel.values();
|
||||
for (PowerUnitChannel channel : data) {
|
||||
if (channel.index == index) {
|
||||
return channel;
|
||||
}
|
||||
}
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PowerUnitChannel{" +
|
||||
"index=" + index +
|
||||
", driverElement='" + driverElement + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.zhjt.mogo.adas.data.bean.power;
|
||||
|
||||
import com.zhjt.mogo.adas.common.power.PowerControlType;
|
||||
import com.zhjt.mogo.adas.common.power.PowerUnitChannel;
|
||||
|
||||
/**
|
||||
* 命令执行状态 包括:单通道控制;多通道控制;复位控制;
|
||||
*/
|
||||
public class PowerCommandExecuteState {
|
||||
/**
|
||||
* 控制方式
|
||||
*/
|
||||
public final PowerControlType controlType;
|
||||
|
||||
/**
|
||||
* 命令是否执行成功
|
||||
*/
|
||||
public final boolean isSucceed;
|
||||
/**
|
||||
* 单元索引
|
||||
* 单通道控制存在此字段
|
||||
*/
|
||||
public final PowerUnitChannel channel;
|
||||
|
||||
/**
|
||||
* 下发命令的开关状态
|
||||
* 单通道控制存在此字段
|
||||
* 索引1~46表示通电状态 0:关闭;1:打开;
|
||||
*/
|
||||
public final int sendPowerState;
|
||||
|
||||
/**
|
||||
* 实际开关状态
|
||||
* 单通道控制存在此字段
|
||||
* 索引1~46表示通电状态 0:关闭;1:打开;
|
||||
*/
|
||||
public final int actualPowerState;
|
||||
|
||||
/**
|
||||
* 故障状态
|
||||
* 单通道控制存在此字段
|
||||
* 索引1~46表示故障状态 0:无故障;1:对地短路;2:过流;3:故障;
|
||||
* 索引51~66表示故障状态 0:无故障;8:过温;4:过流;2:过压;1:欠压;可能出现多故障
|
||||
* <p>
|
||||
* 整体判断是否有无故障使用{@link PowerUnitState#isNoneFault()}}
|
||||
* <p>
|
||||
* 索引为51~66时调用 以下方法判断存在哪些故障
|
||||
* {@link PowerUnitState#isTS()}}
|
||||
* {@link PowerUnitState#isOC()}}
|
||||
* {@link PowerUnitState#isOV()}}
|
||||
* {@link PowerUnitState#isUV()}}
|
||||
* 详情参见{@link PowerUnitState#getFaultState()}}
|
||||
*/
|
||||
public final int faultState;
|
||||
|
||||
public PowerCommandExecuteState(PowerControlType controlType, boolean isSucceed) {
|
||||
this(controlType, isSucceed, null, -1, -1, -1);
|
||||
}
|
||||
|
||||
public PowerCommandExecuteState(PowerControlType controlType, boolean isSucceed, PowerUnitChannel channel, int sendPowerState, int actualPowerState, int faultState) {
|
||||
this.controlType = controlType;
|
||||
this.isSucceed = isSucceed;
|
||||
this.channel = channel;
|
||||
this.sendPowerState = sendPowerState;
|
||||
this.actualPowerState = actualPowerState;
|
||||
this.faultState = faultState;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package com.zhjt.mogo.adas.data.bean.power;
|
||||
|
||||
import com.zhjt.mogo.adas.common.power.PowerFrameType;
|
||||
import com.zhjt.mogo.adas.common.power.PowerProtocolStatus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 电源原始数据协议
|
||||
*/
|
||||
public class PowerData {
|
||||
/**
|
||||
* 原始数据
|
||||
*/
|
||||
public final byte[] originalData;
|
||||
/**
|
||||
* 数据拆包状态
|
||||
*/
|
||||
public final PowerProtocolStatus protocolStatus;
|
||||
|
||||
/**
|
||||
* 帧头 用于检查数据是否为正确数据
|
||||
* mg=0xAA55
|
||||
*/
|
||||
public final int frameHead;
|
||||
/**
|
||||
* 帧总长度
|
||||
*/
|
||||
public final int totalLength;
|
||||
/**
|
||||
* 帧类型
|
||||
*/
|
||||
public final PowerFrameType frameType;
|
||||
/**
|
||||
* 保留字节
|
||||
*/
|
||||
public final int reserved;
|
||||
/**
|
||||
* 负载数据
|
||||
*/
|
||||
public final byte[] dataBlocks;
|
||||
/**
|
||||
* 帧校验值
|
||||
*/
|
||||
public final int checkValue;
|
||||
|
||||
|
||||
private List<PowerUnitState> powerUnitStates;
|
||||
private PowerErrorData powerErrorData;
|
||||
private PowerCommandExecuteState executeState;
|
||||
|
||||
/**
|
||||
* 拆包失败的构造
|
||||
*/
|
||||
public static PowerData createError(byte[] originalData, PowerProtocolStatus protocolStatus) {
|
||||
return new PowerData(originalData, protocolStatus, 0, 0, null, 0, null, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拆包成功的构造
|
||||
*/
|
||||
public static PowerData create(byte[] originalData, int frameHead, int totalLength, PowerFrameType frameType, int reserved, byte[] dataBlocks, int checkValue) {
|
||||
return new PowerData(originalData, PowerProtocolStatus.SUCCEED, frameHead, totalLength, frameType, reserved, dataBlocks, checkValue);
|
||||
}
|
||||
|
||||
private PowerData(byte[] originalData, PowerProtocolStatus protocolStatus, int frameHead, int totalLength, PowerFrameType frameType, int reserved, byte[] dataBlocks, int checkValue) {
|
||||
this.originalData = originalData;
|
||||
this.protocolStatus = protocolStatus;
|
||||
this.frameHead = frameHead;
|
||||
this.totalLength = totalLength;
|
||||
this.frameType = frameType;
|
||||
this.reserved = reserved;
|
||||
this.dataBlocks = dataBlocks;
|
||||
this.checkValue = checkValue;
|
||||
}
|
||||
|
||||
public List<PowerUnitState> getPowerUnitStates() {
|
||||
return powerUnitStates;
|
||||
}
|
||||
|
||||
public void setPowerUnitStates(List<PowerUnitState> powerUnitStates) {
|
||||
this.powerUnitStates = powerUnitStates;
|
||||
}
|
||||
|
||||
public PowerErrorData getPowerErrorData() {
|
||||
return powerErrorData;
|
||||
}
|
||||
|
||||
public void setPowerErrorData(PowerErrorData powerErrorData) {
|
||||
this.powerErrorData = powerErrorData;
|
||||
}
|
||||
|
||||
public PowerCommandExecuteState getExecuteState() {
|
||||
return executeState;
|
||||
}
|
||||
|
||||
public void setExecuteState(PowerCommandExecuteState executeState) {
|
||||
this.executeState = executeState;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.zhjt.mogo.adas.data.bean.power;
|
||||
|
||||
import com.zhjt.mogo.adas.common.power.PowerError;
|
||||
import com.zhjt.mogo.adas.common.power.PowerFrameType;
|
||||
|
||||
/**
|
||||
* 服务端输出的异常信息 对应帧类型{@link PowerFrameType#ERROR_RESPONSE}
|
||||
*/
|
||||
public class PowerErrorData {
|
||||
|
||||
/**
|
||||
* 客户端请求类型
|
||||
*/
|
||||
public final PowerFrameType frameType;
|
||||
/**
|
||||
* 异常信息
|
||||
*/
|
||||
public final PowerError error;
|
||||
|
||||
public PowerErrorData(PowerFrameType frameType, PowerError error) {
|
||||
this.frameType = frameType;
|
||||
this.error = error;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "异常响应,帧类型:" + frameType + " 错误代码:" + error;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
package com.zhjt.mogo.adas.data.bean.power;
|
||||
|
||||
import com.zhjt.mogo.adas.common.power.PowerUnitChannel;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 个单元电源状态
|
||||
*/
|
||||
public class PowerUnitState {
|
||||
/**
|
||||
* 单元索引
|
||||
*/
|
||||
private final PowerUnitChannel channel;
|
||||
|
||||
/**
|
||||
* 单元状态
|
||||
* 索引1~46表示通电状态 0:关闭;1:打开;2:底边打开;
|
||||
* 索引51~66表示连接状态 0:未连接;1:已连接;
|
||||
*/
|
||||
private int powerState;
|
||||
|
||||
/**
|
||||
* 故障状态
|
||||
* 索引1~46表示故障状态 0:无故障;1:对地短路;2:过流;3:故障;
|
||||
* 索引51~66表示故障状态 0:无故障;8:过温;4:过流;2:过压;1:欠压;可能出现多故障
|
||||
* <p>
|
||||
* 整体判断是否有无故障使用{@link PowerUnitState#isNoneFault()}}
|
||||
* <p>
|
||||
* 索引为51~66时调用 以下方法判断存在哪些故障
|
||||
* {@link PowerUnitState#isTS()}}
|
||||
* {@link PowerUnitState#isOC()}}
|
||||
* {@link PowerUnitState#isOV()}}
|
||||
* {@link PowerUnitState#isUV()}}
|
||||
*/
|
||||
private int faultState;
|
||||
|
||||
/**
|
||||
* 索引1~46电流保护状态 null表示没有此参数
|
||||
* ture:电流保护;false:为保护;
|
||||
*/
|
||||
private Boolean currentProtectionState;
|
||||
|
||||
/**
|
||||
* 索引1~46电流值 null表示没有此参数
|
||||
* 单位:A
|
||||
*/
|
||||
private Float currentValue;
|
||||
|
||||
public PowerUnitState(PowerUnitChannel channel) {
|
||||
this.channel = channel;
|
||||
}
|
||||
|
||||
public PowerUnitChannel getChannel() {
|
||||
return channel;
|
||||
}
|
||||
|
||||
public int getPowerState() {
|
||||
return powerState;
|
||||
}
|
||||
|
||||
public void setPowerState(int powerState) {
|
||||
this.powerState = powerState;
|
||||
}
|
||||
|
||||
public int getFaultState() {
|
||||
return faultState;
|
||||
}
|
||||
|
||||
public void setFaultState(int faultState) {
|
||||
this.faultState = faultState;
|
||||
}
|
||||
|
||||
public Boolean getCurrentProtectionState() {
|
||||
return currentProtectionState;
|
||||
}
|
||||
|
||||
public void setCurrentProtectionState(Boolean currentProtectionState) {
|
||||
this.currentProtectionState = currentProtectionState;
|
||||
}
|
||||
|
||||
public Float getCurrentValue() {
|
||||
return currentValue;
|
||||
}
|
||||
|
||||
public void setCurrentValue(Float currentValue) {
|
||||
this.currentValue = currentValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否打开
|
||||
* 索引1~46表示通电状态 false:关闭;ture:打开或底边打开
|
||||
* 索引51~66表示连接状态 false:未连接;ture:已连接;
|
||||
*
|
||||
* @return 状态
|
||||
*/
|
||||
public boolean isPowerOpen() {
|
||||
return powerState != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否无故障
|
||||
* 索引1~46表示通电状态 true:无故障;false:对地短路或过流或故障;
|
||||
* 索引51~66表示连接状态 true:无故障;false:过温或过流或过压或欠压;
|
||||
*
|
||||
* @return 有无故障
|
||||
*/
|
||||
public boolean isNoneFault() {
|
||||
return faultState == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 索引51~66是否过温故障
|
||||
*
|
||||
* @return 是否过温故障
|
||||
*/
|
||||
public boolean isTS() {
|
||||
return (faultState & 8) == 8;
|
||||
}
|
||||
|
||||
/**
|
||||
* 索引51~66是否过流故障
|
||||
*
|
||||
* @return 是否过流故障
|
||||
*/
|
||||
public boolean isOC() {
|
||||
return (faultState & 4) == 4;
|
||||
}
|
||||
|
||||
/**
|
||||
* 索引51~66是否过压故障
|
||||
*
|
||||
* @return 是否过压故障
|
||||
*/
|
||||
public boolean isOV() {
|
||||
return (faultState & 2) == 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 索引51~66是否欠压故障
|
||||
*
|
||||
* @return 是否欠压故障
|
||||
*/
|
||||
public boolean isUV() {
|
||||
return (faultState & 1) == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
PowerUnitState that = (PowerUnitState) o;
|
||||
return channel == that.channel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(channel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PowerUnitState{" +
|
||||
"channel=" + channel +
|
||||
", powerState=" + powerState +
|
||||
", faultState=" + faultState +
|
||||
", currentProtectionState=" + currentProtectionState +
|
||||
", currentValue=" + currentValue +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,13 @@ public class ByteUtil {
|
||||
return bytes;
|
||||
}
|
||||
|
||||
public static byte[] set16bitUnsignedValueLittleEndian(int num) {
|
||||
byte[] bytes = new byte[2];
|
||||
bytes[1] = (byte) (num >> 8);
|
||||
bytes[0] = (byte) num;
|
||||
return bytes;
|
||||
}
|
||||
|
||||
public static byte[] set32bitUnsignedValue(long num) {
|
||||
byte[] bytes = new byte[4];
|
||||
bytes[0] = (byte) (num >> 24);
|
||||
@@ -27,6 +34,15 @@ public class ByteUtil {
|
||||
return bytes;
|
||||
}
|
||||
|
||||
public static byte[] set32bitUnsignedValueValueLittleEndian(long num) {
|
||||
byte[] bytes = new byte[4];
|
||||
bytes[0] = (byte) num;
|
||||
bytes[1] = (byte) (num >> 8);
|
||||
bytes[2] = (byte) (num >> 16);
|
||||
bytes[3] = (byte) (num >> 24);
|
||||
return bytes;
|
||||
}
|
||||
|
||||
public static byte[] set64bitUnsignedValue(long num) {
|
||||
byte[] bytes = new byte[8];
|
||||
bytes[0] = (byte) (num >> 56);
|
||||
@@ -81,6 +97,25 @@ public class ByteUtil {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 无符号
|
||||
* 合并 2 byte
|
||||
* 使用后将 Index中的index移动到下一个数据的开始位
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
|
||||
public static int get16bitUnsignedValueLittleEndian(byte[] data) {
|
||||
int value = 0;
|
||||
if (data.length > 1) {
|
||||
value = data[1] & 0xFF;
|
||||
value = value << 8;
|
||||
value = value | (data[0] & 0xFF);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 无符号
|
||||
* 合并 4 byte
|
||||
@@ -106,6 +141,30 @@ public class ByteUtil {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 无符号
|
||||
* 合并 4 byte
|
||||
* 使用后将 Index中的index移动到下一个数据的开始位
|
||||
* *
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
|
||||
public static int get32bitUnsignedValueLittleEndian(byte[] data) {
|
||||
int value = 0;
|
||||
if (data.length > 3) {
|
||||
value = data[3] & 0xFF;
|
||||
value = value << 8;
|
||||
value = value | (data[2] & 0xFF);
|
||||
value = value << 8;
|
||||
value = value | (data[1] & 0xFF);
|
||||
value = value << 8;
|
||||
value = value | (data[0] & 0xFF);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 无符号
|
||||
* 合并 8 byte
|
||||
@@ -374,4 +433,11 @@ public class ByteUtil {
|
||||
(byte) ((b >> 6) & 0x1) +
|
||||
(byte) ((b >> 7) & 0x1);
|
||||
}
|
||||
|
||||
|
||||
//b为传入的字节,i为第几位(范围0-7),如要获取bit0,则i=0
|
||||
public static int getBit(byte b, int i) {
|
||||
return (b >> i) & 0x1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user