Commit ca37a52c authored by 黄谋临's avatar 黄谋临
Browse files

添加 云端决策建议信息数据结构 、云端辅助功能信息数据结构 、下行自定义功能信息数据结构

parent dcb9ce75
Pipeline #3093 failed with stages
in 0 seconds
package com.cusc.adas.v2x.clouddecision.vo;
import java.util.List;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.OffsetDef;
import com.cusc.adas.v2x.utils.Order;
/**
* 云端决策建议信息报文体
* @author huangml
*
*/
public class CloudDecisionMessageBody<T> {
//车辆编号
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=8)
private String vehicleId;
//消息标识
@Order(2)
@FieldDef(type="BYTE",isArray=true,length=8)
private long seq;
//建议类型 若为多功能决策时,取值为 254
@Order(3)
private short adviceType;
//事件分类
@Order(4)
private short eventType;
//车速建议 单位:0.01m/s
@Order(5)
@OffsetDef(value=36,type=2)
private int spdExp;
//加速度建议 单位:0.01 m/s2,数据偏移量 100,表示-100.00m/s2~100.00m/s2
@Order(6)
@OffsetDef(value=36,type=2)
private int accExp;
//控车变道建 议转向状态 0:沿车道行驶;1:第一出口;2:第二出口;
//3:第三出口;4:第四出口;5:第五出口;6:第六出口;7:第七 出口;8:第八出口;9:左变道;10:右变道
@Order(7)
private short instructDirection;
//命令长度 0 表示命令失效,此时该条消息全部无效
@Order(8)
private int dataLen;
//命令数据 长度为 N 个字节,其中 N 为命令长度
@Order(9)
private List<T> adviceData;
}
package com.cusc.adas.v2x.clouddecision.vo;
import java.util.List;
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;
import com.cusc.adas.v2x.vo.Position;
/**
* 紧急车辆预警
* @author huangml
*
*/
public class EmergencyVehicle {
//事件唯一标识
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=36)
private String uuid;
//事件生成时间 戳
@Order(2)
@FieldDef(type="TIMESTAMP",isArray=false,length=8)
private long timestamp;
//告警类型
@Order(3)
private int alertType;
//告警半径
@Order(4)
@OffsetDef(value=10,type=1)
private int alertRadius;
//路径点数量
@Order(5)
private short pointNum;
//告警路径
@Order(6)
@RefNumFlag(value="pointNum")
private List<Position> alertPath;
//车辆类型 0:失效;1:救护车;2:警车;3:消防车;4-10: 预留
@Order(7)
private short type;
//车速
@Order(8)
@OffsetDef(value=36,type=2)
private int velocity;
//航向角
@Order(9)
@OffsetDef(value=10000)
private long heading;
}
package com.cusc.adas.v2x.clouddecision.vo;
import java.util.List;
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;
import com.cusc.adas.v2x.vo.Position;
/**
* 前向碰撞预警
* @author huangml
*
*/
public class FawWarnning {
//事件唯一标识
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=36)
private String uuid;
//事件生成时间 戳
@Order(2)
@FieldDef(type="TIMESTAMP",isArray=false,length=8)
private long timestamp;
//告警类型 固定值为 6518
@Order(3)
private int alertType;
//告警半径 单位:dm
@Order(4)
@OffsetDef(value=10)
private int alertRadius;
//路径点数量
@Order(5)
private short pointNum;
//告警路径
@Order(6)
@RefNumFlag(value="pointNum")
private List<Position> alertPath;
//碰撞预警目标 类型
@Order(7)
private short objType;
//碰撞告警类型
@Order(8)
private short fcwLevel;
//碰撞距离 单位:cm
@Order(9)
@OffsetDef(value=100)
private int fcwDistance;
//碰撞预警目标 所在车道
@Order(10)
private short fcwLaneId;
}
package com.cusc.adas.v2x.clouddecision.vo;
import com.cusc.adas.v2x.utils.OffsetDef;
import com.cusc.adas.v2x.utils.Order;
/**
* 车道方向建议车速
* @author huangml
*
*/
public class LaneAdviceSpeed {
//车速上限 单位:0.01 m/s
@Order(1)
@OffsetDef(value=36,type=2)
private int spdMax;
//车速下限 单位:0.01 m/s
@Order(2)
@OffsetDef(value=36,type=2)
private int spdMin;
//建议车速 单位:0.01 m/s
@Order(3)
@OffsetDef(value=36,type=2)
private int spdExp;
//通行行为 单位:0.01 m/s
@Order(4)
@OffsetDef(value=36,type=2)
private short maneuver;
//绿灯通过前方 路口数量 车辆绿灯通过前方路口数量,其中 0 表示无法绿灯通过前 方路口
@Order(5)
private short numIntersection;
}
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;
import com.cusc.adas.v2x.vo.Position;
/**
* 通用 RSI 预警中交通事件和交通标志信息
* @author huangml
*
*/
public class RSISDetail {
//事件唯一标识
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=36)
private String uuid;
//事件生成时间 戳
@Order(2)
@FieldDef(type="TIMESTAMP",isArray=false,length=8)
private long timestamp;
//交通事件位置 点
@Order(3)
private Position eventPosition;
//道路交通事件 信息类型
@Order(4)
private int eventType;
//事件来源
@Order(5)
private short eventSource;
//事件(影响) 半径
@Order(6)
private int eventRadius;
//关联路段数量
@Order(7)
private int referenceLinksNum;
//关联路段数量
@Order(8)
private RelSetp referenceLinks;
//优先级
@Order(9)
private short priority;
//交通事件/标 志作用中心线 坐标点
@Order(10)
private Position alertPath;
//交通标志/事 件作用中心线 范围半径
@Order(11)
private int pathRadius;
//事件状态
@Order(12)
private short status;
//自定义内容长度
@Order(13)
private int userdefinedDataLength;
@Order(14)
//自定义内容
@RefNumFlag(value="userdefinedDataLength")
private String userdefinedData;
}
package com.cusc.adas.v2x.clouddecision.vo;
import com.cusc.adas.v2x.utils.Order;
/**
* 通用 RSI 预警
* @author huangml
*
*/
public class RSIWarnning {
//交通事件和交 通标志信息数 量
@Order(1)
private short rsisNum;
@Order(2)
private RSISDetail rsis;
}
package com.cusc.adas.v2x.clouddecision.vo;
import com.cusc.adas.v2x.utils.Order;
/**
* 关联路段
* @author huangml
*
*/
public class RelSetp {
//上游节点编号
@Order(1)
private long upstreamNodeId;
//下游节点编号
@Order(2)
private long downstreamNodeId;
//受影响车道数量
@Order(3)
private short referenceLanesNum;
//受影响车道
@Order(4)
private short referenceLanes;
}
package com.cusc.adas.v2x.clouddecision.vo;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.Order;
/**
* 信号灯路口车速引导
* @author huangml
*
*/
public class TrafficLight {
//事件唯一标识
@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;
//有效标识 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)
private byte[] 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.selfdefine.dto;
import com.cusc.adas.v2x.vo.Position2D;
/**
*
* @author huangml
*
*/
public class SelfDefineDetailDto {
//预警类型
private short type;
//RV经纬度
private Position2D rvLocation;
//RV方向
private long rvDirection;
//预警级别
private long level;
//预警距离
private long distance;
}
package com.cusc.adas.v2x.selfdefine.dto;
import java.util.List;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.Order;
public class SelfDefineMessageBodyDto<T> {
//车辆编号
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=8)
private String vehicleId;
//消息标识
@Order(2)
@FieldDef(type="BYTE",isArray=true,length=8)
private long seq;
//数据长度
private int dataLen;
//数据内容
private List<T> data;
}
package com.cusc.adas.v2x.selfdefine.vo;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.vo.Position2D;
/**
*
* @author huangml
*
*/
public class SelfDefineDetail {
//预警类型
@Order(1)
private short type;
//RV经纬度
@Order(2)
private Position2D rvLocation;
//RV方向
@Order(3)
private long rvDirection;
//预警级别
@Order(4)
private long level;
//预警距离
@Order(5)
private long distance;
}
package com.cusc.adas.v2x.selfdefine.vo;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.vo.MessageHeadInfo;
/**
* 自定义功能信息
* @author huangml
*
*/
public class SelfDefineMessage {
//报文头
@Order(1)
private MessageHeadInfo messageHeadInfo;
@Order(2)
private SelfDefineMessageBody selfDefineMessageBody;
}
package com.cusc.adas.v2x.selfdefine.vo;
import java.util.List;
import com.cusc.adas.v2x.utils.FieldDef;
import com.cusc.adas.v2x.utils.Order;
public class SelfDefineMessageBody<T> {
//车辆编号
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=8)
private String vehicleId;
//消息标识
@Order(2)
@FieldDef(type="BYTE",isArray=true,length=8)
private long seq;
//数据长度
@Order(3)
private int dataLen;
//数据内容
@Order(4)
private List<T> data;
}
......@@ -4,6 +4,7 @@ package com.cusc.adas.v2x.server;
import com.cusc.adas.v2x.clouddecision.vo.CloudDecisionMessage;
import com.cusc.adas.v2x.dto.VehicleBodyDto;
import com.cusc.adas.v2x.utils.Parse;
import com.cusc.adas.v2x.vo.VehicleMessage;
......@@ -43,14 +44,20 @@ public class UdpServerHandler extends SimpleChannelInboundHandler<DatagramPacket
if(hexString.substring(10,12).equals("15")) {
ByteBuf byteBuf = Unpooled.wrappedBuffer(req);
VehicleMessage vehicleMessage = Parse.parse(byteBuf,new VehicleMessage());
System.out.println("Received message: " + vehicleMessage);
VehicleBodyDto vehicleBodyDto = new VehicleBodyDto();
Parse.convoterBean(vehicleMessage.getVehicleMessageBody(), vehicleBodyDto);
System.out.println("Received message: " + vehicleBodyDto);
}else if(hexString.substring(10,12).equals("15")) {
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);
// System.out.println("Received message: " + vehicleBodyDto);
}
......
......@@ -20,9 +20,9 @@ public class SM4Utils {
}
/**
* ???? SM4 ???
* @return ????? Base64 ?????????
* @throws Exception ??
* 生成 SM4 密钥
* @return 密钥的 Base64 编码字符串
* @throws Exception 异常
*/
public static String generateKey() throws Exception {
KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM_NAME, "BC");
......@@ -32,11 +32,11 @@ public class SM4Utils {
}
/**
* SM4 ????
* @param plainText ????
* @param key ????? Base64 ?????????
* @return ????? Base64 ?????????
* @throws Exception ??
* SM4 加密
* @param plainText 明文
* @param key 密钥的 Base64 编码字符串
* @return 密文的 Base64 编码字符串
* @throws Exception 异常
*/
public static String encrypt(String plainText, String key) throws Exception {
byte[] keyBytes = Base64.getDecoder().decode(key);
......@@ -48,11 +48,11 @@ public class SM4Utils {
}
/**
* SM4 ????
* @param cipherText ????? Base64 ?????????
* @param key ????? Base64 ?????????
* @return ????
* @throws Exception ??
* SM4 解密
* @param cipherText 密文的 Base64 编码字符串
* @param key 密钥的 Base64 编码字符串
* @return 明文
* @throws Exception 异常
*/
public static String decrypt(String cipherText, String key) throws Exception {
byte[] keyBytes = Base64.getDecoder().decode(key);
......
package com.cusc.adas.v2x.vehiclesubscribe.vo;
import com.cusc.adas.v2x.utils.Order;
import com.cusc.adas.v2x.vo.MessageHeadInfo;
/**
*
* @author huangml
*
*/
public class VehicleSubscribeMessage {
//报文头
@Order(1)
private MessageHeadInfo messageHeadInfo;
@Order(2)
private VehicleSubscribeMessageBody vehicleSubscribeMessageBody;
}
package com.cusc.adas.v2x.vehiclesubscribe.vo;
public class VehicleSubscribeMessageBody {
private String vehicleId;
private byte subsLen;
private Byte[] funcSubscribe;
}
package com.cusc.adas.v2x.vo;
/**
* 限速 信息
* @author huangml
*
*/
public class SpeedLimit {
//车道编 号
private short laneId;
//限速值
private short speedLimit;
}
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