Commit 4e2d0641 authored by 黄谋临's avatar 黄谋临
Browse files

添加DTO对象

parent a4a03037
......@@ -2,6 +2,8 @@ package com.cusc.adas.v2x.assist.vo;
import java.util.List;
import com.cusc.adas.v2x.utils.DependencyDef;
import com.cusc.adas.v2x.utils.DynamicsClassDef;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.Order;
......@@ -26,6 +28,8 @@ public class AssistMessageBody<T> {
//命令数据
@Order(5)
private List<T> infoData;
@DynamicsClassDef(classtype="assist")
@DependencyDef(value="astFuncType")
private T infoData;
}
......@@ -24,7 +24,7 @@ public class TrafficLight {
//车辆所在车道 对应信号灯相 位数量
@Order(4)
private int numOfLanePhase;
private short numOfLanePhase;
//车辆所在车道 对应信号灯相 位 ID 列表
@Order(5)
@RefNumFlag(value="numOfLanePhase")
......
......@@ -14,6 +14,7 @@ import com.cusc.adas.v2x.utils.RefNumFlag;
import com.cusc.adas.v2x.vo.Position;
import com.cusc.adas.v2x.vo.SpeedLimit;
public class AutoSpeedLimit {
//事件唯一标识
@Order(1)
......@@ -41,7 +42,7 @@ public class AutoSpeedLimit {
@Order(7)
private short laneNum;
//限速数据
@Order(1)
@Order(8)
@RefNumFlag(value="laneNum")
private List<SpeedLimit> speedLmt;
......
......@@ -2,9 +2,12 @@ package com.cusc.adas.v2x.clouddecision.vo;
import java.util.List;
import com.cusc.adas.v2x.utils.DependencyDef;
import com.cusc.adas.v2x.utils.DynamicsClassDef;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.OffsetDef;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.utils.RefNumFlag;
/**
* 云端决策建议信息报文体
......@@ -32,12 +35,12 @@ public class CloudDecisionMessageBody<T> {
//车速建议 单位:0.01m/s
@Order(5)
@OffsetDef(value=36,type=2)
@OffsetDef(value=0.036,type=2)
private int spdExp;
//加速度建议 单位:0.01 m/s2,数据偏移量 100,表示-100.00m/s2~100.00m/s2
@Order(6)
@OffsetDef(value=36,type=2)
@OffsetDef(value=0.036,type=2)
private int accExp;
//控车变道建 议转向状态 0:沿车道行驶;1:第一出口;2:第二出口;
......@@ -50,5 +53,8 @@ public class CloudDecisionMessageBody<T> {
private int dataLen;
//命令数据 长度为 N 个字节,其中 N 为命令长度
@Order(9)
private List<T> adviceData;
@DynamicsClassDef(classtype="CloudDecision")
@DependencyDef(value="adviceType")
private T adviceData;
}
package com.cusc.adas.v2x.clouddecision.vo;
public enum CloundDecisionEnum {
}
......@@ -25,7 +25,7 @@ public class FawWarnning {
//告警类型 固定值为 6518
@Order(3)
private int alertType;
private int alertType=6518;
//告警半径 单位:dm
@Order(4)
@OffsetDef(value=10)
......
......@@ -12,19 +12,19 @@ public class LaneAdviceSpeed {
//车速上限 单位:0.01 m/s
@Order(1)
@OffsetDef(value=36,type=2)
@OffsetDef(value=0.036,type=2)
private int spdMax;
//车速下限 单位:0.01 m/s
@Order(2)
@OffsetDef(value=36,type=2)
@OffsetDef(value=0.036,type=2)
private int spdMin;
//建议车速 单位:0.01 m/s
@Order(3)
@OffsetDef(value=36,type=2)
@OffsetDef(value=0.036,type=2)
private int spdExp;
//通行行为 单位:0.01 m/s
@Order(4)
@OffsetDef(value=36,type=2)
@OffsetDef(value=0.036,type=2)
private short maneuver;
//绿灯通过前方 路口数量 车辆绿灯通过前方路口数量,其中 0 表示无法绿灯通过前 方路口
@Order(5)
......
package com.cusc.adas.v2x.clouddecision.vo;
import java.util.List;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.utils.RefNumFlag;
/**
* 关联路段
......@@ -23,6 +26,7 @@ public class RelSetp {
//受影响车道
@Order(4)
private short referenceLanes;
@RefNumFlag(value="referenceLanesNum")
private List<Short> referenceLanes;
}
package com.cusc.adas.v2x.clouddecision.vo;
import java.util.List;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.utils.RefNumFlag;
/**
* 信号灯路口车速引导
* @author huangml
*
*/
public class TrafficLightInfo {
//事件唯一标识
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=36)
private String uuid;
//事件生成时间 戳
@Order(2)
@FieldDef(type="TIMESTAMP",isArray=false,length=8)
private long timestamp;
//告警类型 固定值为 6523
@Order(3)
private int alertType=6523;
//有效标识 0:失效;1:有效
@Order(4)
private short valid;
//命令标识 0:失效;1:引导;2:停车指令;3:启动指令
@Order(5)
private short type;
//车辆所在位置 到停止线距离 单位:0.01m
@Order(6)
private int d2StopLine;
//车道方向建议 速度组数 0 表示无效,不发送车道方向建议车速数据
@Order(7)
private short spdExpNum;
//车道方向建议 速度
@Order(8)
@RefNumFlag(value="spdExpNum")
private List<LaneAdviceSpeed> spdExps;
//车速上限
@Order(9)
private int spdMax;
//车速下限
@Order(10)
private int spdMin;
//建议车速
@Order(11)
private int spdExp;
//通行行为
private short maneuver;
//绿灯通过前方路口数量
private short numIntersection;
}
package com.cusc.adas.v2x.dto;
import java.util.List;
import com.cusc.adas.v2x.utils.NumFlag;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.utils.RefNumFlag;
/**
* 车辆自动驾驶信息
* @author huangml
*
*/
public class AutomaticDriveInfoDto {
//执行云端控制命令编号
@Order(1)
private long cloudMessageId;
//自动驾驶需求加速度
@Order(2)
private int accelCmd;
//自动驾驶需求扭矩
@Order(3)
private long torqueCmd;
//自动驾驶需求速度
@Order(4)
private int velocityCmd;
//规划-位置点轨 迹数量
@Order(5)
@NumFlag
private int planningLocNum;
//规划-位置点轨 迹列表
@Order(6)
@RefNumFlag(value="planningLocNum")
private List<TracePointDto> planningLocs;
//决策-换道
@Order(7)
private short decisionLaneChange;
//加减速
@Order(8)
private short decisionAccel;
//决策-转向
@Order(9)
private short decisionTurnSignal;
//决策-车辆状态
@Order(10)
private short decisionVehicleStatus;
//感知目标个数
@Order(11)
@NumFlag
private short detectionLen;
//感知目标数据
@RefNumFlag(value="detectionLen")
@Order(12)
private List<TrajectoryInfoDto> detectionData;
//自动驾驶系统故障
@Order(13)
private int autoDrivingSysFault;
//电子手刹状态
@Order(14)
private short epbFlag;
//自定义字段长度
@Order(15)
private short userdefinedDataLength;
//自定义字段内容
@Order(16)
private byte[] userdefinedData;
}
package com.cusc.adas.v2x.dto;
import com.cusc.adas.v2x.utils.Order;
/**
*
* @author huangml
*
*/
public class TrajectoryInfoDto {
//位置
@Order(1)
private Position2DDto position ;
//位置精度等级
@Order(2)
private short posConfidence;
//速度
@Order(3)
private int speed;
//速度精度等级
@Order(4)
private short speedConfidence;
//航向角
@Order(5)
private long heading;
//航向精度等级
@Order(6)
private short headConfidence;
}
package com.cusc.adas.v2x.dto;
import com.cusc.adas.v2x.vo.AutomaticDriveInfo;
import com.cusc.adas.v2x.vo.VehicleStatusInfo;
public class VehicleBodyDto {
private VehicleInfoDto vehicleInfo;
private VehicleStatusInfo vehicleStatusInfo;
private AutomaticDriveInfo automaticDriveInfo;
public VehicleInfoDto getVehicleInfo() {
return vehicleInfo;
}
}
package com.cusc.adas.v2x.dto;
import java.util.List;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.NumFlag;
import com.cusc.adas.v2x.utils.OffsetDef;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.utils.RefNumFlag;
/**
* 车辆辅助驾驶信息及状态信息
* @author huangml
*
*/
public class VehicleStatusInfoDto {
@Order(1)
//ABS 状态
private short absFlag;
//TCS 状态
@Order(2)
private short tcsFlag;
//ESP 状态
@Order(3)
private short espFlag;
//LKA 状态
@Order(4)
private short lkaFlag;
//ACC 工作模式
@Order(5)
private short accMode;
//FCW 状态
@Order(6)
private short fcwFlag;
//LDW 状态
@Order(7)
private short ldwFlag;
//AEB 状态
@Order(8)
private short aebFlag;
//LCA 状态
@Order(9)
private short lcaFlag;
//DMS 状态
@Order(10)
private short dmsFlag;
//里程
@Order(11)
private long mileage;
//sweeping状态
@Order(12)
private short sweepingFlag;
//watering状态
@Order(13)
private short wateringFlag;
// 车辆运行状态数据 2-车辆辅助驾驶系统信息及其他状态信息数据结构(续)
//油量 对应车辆油量表读数,单位:0.1 L,
@Order(14)
private int fuelGauge;
//电池剩余电量 0.01%,
@Order(15)
private int soc;
//电池温度 [0..200],单位:摄氏度(℃),
//数据偏移量 100,表示-100℃~100℃ ,0xFF 表示缺省
@Order(16)
private short temperature;
//预计续航里程 单位:千米(km),
@Order(17)
private long endurance;
//车辆故障状态
@Order(18)
private int vehFault;
//电机转速
@Order(19)
private int motorspeed;
//电机转矩
@Order(20)
private long motortorque;
//运行模式 车辆运行模式,1:纯电驱动模式;2:混合驱动 模式;3:行车充电模式;4:能量回收模式;5:停车充电模式;6: 能量混合回充模式;
@Order(21)
private short vehMode;
//充电状态 1:未充电;2:充电准备;3:正在充电;4:充电故障;5:充电结束; 0xFF 表示缺省
@Order(22)
private short chargeState;
//动力电池实时电压
@Order(23)
private int battVol;
//动力电池实时电流
@Order(24)
private int battCur;
//喇叭状态
@Order(25)
private short hornState;
//车轮数
@Order(26)
@NumFlag
private short wheelNum;
//轮速 表示车轮线速度,单位:0.01 m/s,
//数据偏移量 200,表示-200.00 m/s~200.00 m/s,
@Order(27)
private List<Integer> wheelVelocity;
//胎压
@Order(28)
private List<Integer> tirePressure;
//车灯状态 BIT2 = 左转灯 BIT3 = 右转灯
@Order(30)
private int lights;
//车门状态
@Order(31)
private int doors;
//自定义字段长度
@Order(32)
@NumFlag
private short userdefinedDataLength;
//自定义字段内容
@Order(33)
private String userdefinedData;
}
package com.cusc.adas.v2x.selfdefine.dto;
import com.cusc.adas.v2x.vo.Position2D;
import com.cusc.adas.v2x.dto.PositionDto;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.vo.Position;
/**
*
......@@ -8,18 +11,45 @@ import com.cusc.adas.v2x.vo.Position2D;
*
*/
public class SelfDefineDetailDto {
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=8)
private String rvVehicleId;
//预警类型
@Order(2)
private short type;
//RV经纬度
private Position2D rvLocation;
//GNSS时间戳
@Order(3)
@FieldDef(type = "TIMESTAMP", isArray = false, length = 8)
private long timestampGNSS;
//主车经纬度
@Order(4)
private PositionDto location;
//主车速度
@Order(5)
private int speed;
//主车航向角
@Order(6)
private int heading;
//RV远车经纬度
@Order(7)
private PositionDto rvLocation;
//RV方向
private long rvDirection;
@Order(8)
private int rvHeading;
//预警级别
private long level;
@Order(9)
private short level;
//预警距离
private long distance;
@Order(10)
private int distance;
}
package com.cusc.adas.v2x.selfdefine.vo;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.vo.Position2D;
import com.cusc.adas.v2x.vo.Position;
/**
*
......@@ -9,23 +10,45 @@ import com.cusc.adas.v2x.vo.Position2D;
*
*/
public class SelfDefineDetail {
//预警类型
@Order(1)
private short type;
@FieldDef(type="BYTE",isArray=true,length=8)
private String rvVehicleId;
//RV经纬度
//预警类型
@Order(2)
private Position2D rvLocation;
private short type;
//RV方向
//GNSS时间戳
@Order(3)
private long rvDirection;
@FieldDef(type = "TIMESTAMP", isArray = false, length = 8)
private long timestampGNSS;
//预警级别
//主车经纬度
@Order(4)
private long level;
private Position location;
//预警距离
//主车速度
@Order(5)
private long distance;
private int speed;
//主车航向角
@Order(6)
private long heading;
//RV远车经纬度
@Order(7)
private Position rvLocation;
//RV方向
@Order(8)
private long rvHeading;
//预警级别
@Order(9)
private short level;
//预警距离
@Order(10)
private int distance;
}
......@@ -22,7 +22,7 @@ public class SelfDefineMessageBody<T> {
//数据内容
@Order(4)
private List<T> data;
private SelfDefineDetail data;
}
......@@ -4,9 +4,12 @@ package com.cusc.adas.v2x.server;
import com.cusc.adas.v2x.assist.vo.AssistMessage;
import com.cusc.adas.v2x.clouddecision.vo.CloudDecisionMessage;
import com.cusc.adas.v2x.dto.VehicleBodyDto;
import com.cusc.adas.v2x.selfdefine.vo.SelfDefineMessage;
import com.cusc.adas.v2x.utils.Parse;
import com.cusc.adas.v2x.vehiclesubscribe.vo.VehicleSubscribeMessage;
import com.cusc.adas.v2x.vo.VehicleMessage;
import io.netty.buffer.ByteBuf;
......@@ -50,15 +53,27 @@ public class UdpServerHandler extends SimpleChannelInboundHandler<DatagramPacket
System.out.println("Received message: " + vehicleBodyDto);
}else if(hexString.substring(10,12).equals("15")) {
}else if(hexString.substring(10,12).equals("36")) {
ByteBuf byteBuf = Unpooled.wrappedBuffer(req);
VehicleSubscribeMessage vehicleSubscribeMessage = Parse.parse(byteBuf,new VehicleSubscribeMessage());
System.out.println("Received message: " + vehicleSubscribeMessage);
}else if(hexString.substring(10,12).toUpperCase().equals("3C")) {
ByteBuf byteBuf = Unpooled.wrappedBuffer(req);
CloudDecisionMessage cloudDecisionMessage = Parse.parse(byteBuf,new CloudDecisionMessage());
System.out.println("Received message: " + cloudDecisionMessage);
// VehicleBodyDto vehicleBodyDto = new VehicleBodyDto();
// Parse.convoterBean(vehicleMessage.getVehicleMessageBody(), vehicleBodyDto);
// Parse.convoterBean(vehicleMessage.getVehicleMessageBody(), vehicleBodyDto);
// System.out.println("Received message: " + vehicleBodyDto);
}
}else if(hexString.substring(10,12).toUpperCase().equals("3E")) {
ByteBuf byteBuf = Unpooled.wrappedBuffer(req);
AssistMessage assistMessage = Parse.parse(byteBuf,new AssistMessage());
System.out.println("Received message: " + assistMessage);
}else if(hexString.substring(10,12).toUpperCase().equals("5E")) {
ByteBuf byteBuf = Unpooled.wrappedBuffer(req);
SelfDefineMessage selfDefineMessage = Parse.parse(byteBuf,new SelfDefineMessage());
System.out.println("Received message: " + selfDefineMessage);
}
......
package com.cusc.adas.v2x.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时可用
@Target(ElementType.FIELD) // 注解只能用于字段(属性)
public @interface DependencyDef {
String value() ;
}
package com.cusc.adas.v2x.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时可用
@Target(ElementType.FIELD) // 注解只能用于字段(属性)
public @interface DynamicsClassDef {
String classtype();
}
......@@ -8,7 +8,7 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时可用
@Target(ElementType.FIELD) // 注解只能用于字段(属性)
public @interface OffsetDef {
double value() default 1;//偏移量
int type() default 2; //1:除法 2:乘法;
int minValidLength() default 0;//数据最小位数,不够补0
double value() default 1;
int type() default 1; //1:除法 2:乘法;
int minValidLength() default 0;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment