Commit cdfc3702 authored by p x's avatar p x
Browse files

删除16jinzhi 几西裤

parent 99964718
package com.sixteen.parse.cloud2veh_advice_85.vo
import com.sixteen.parse.annotates.FieldDef
import com.sixteen.parse.annotates.OffsetDef
import com.sixteen.parse.annotates.Order
import com.sixteen.parse.annotates.RefNumFlag
import com.sixteen.parse.normal.Position
/**
* 通用 RSI 预警中交通事件和交通标志信息
*/
class RSISDetail {
//事件唯一标识
@Order(1)
@FieldDef(type = "BYTE", isArray = true, length = 36)
var uuid: String? = null
//事件生成时间 戳
@Order(2)
@FieldDef(type = "TIMESTAMP", isArray = false, length = 8)
var timestamp: Long = 0
//交通事件位置 点 用来给地图画
@Order(3)
var eventPosition: Position? = null
//道路交通事件 信息类型
@Order(4)
var eventType: Int = 0
//事件来源
@Order(5)
var eventSource: Short = 0
//事件(影响) 半径
@Order(6)
@OffsetDef(value = 0.1)
var eventRadius = 0
//关联路段数量
@Order(7)
var referenceLinksNum = 0
//关联路段数量 没数据
// @Order(8)
// private RelSetp referenceLinks;
//优先级
@Order(8)
var priority: Short = 0
//交通事件/标 志作用中心线 坐标点
@Order(9)
var alertPath: Position? = null
//交通标志/事 件作用中心线 范围半径
@Order(10)
@OffsetDef(value = 0.1)
var pathRadius = 0
//事件状态
@Order(11)
var status: Short = 0
//自定义内容长度
@Order(12)
var userdefinedDataLength = 0
//这里用来拿到人的感知物id
@Order(13) //自定义内容 此处代表人的ptcid
@RefNumFlag(value = "userdefinedDataLength")
var userdefinedData: String? = null
}
package com.sixteen.parse.cloud2veh_advice_85.vo
import com.sixteen.parse.annotates.Order
/**
* 通用 RSI 预警
* @author huangml
*/
class RSIWarnning {
//交通事件和交 通标志信息数 量
@Order(1)
var rsisNum: Short = 0
@Order(2)
var rsis: RSISDetail? = null
}
package com.sixteen.parse.cloud2veh_advice_85.vo;
import com.sixteen.parse.annotates.FieldDef;
import com.sixteen.parse.annotates.NumFlag;
import com.sixteen.parse.annotates.OffsetDef;
import com.sixteen.parse.annotates.Order;
import com.sixteen.parse.annotates.RefNumFlag;
import com.sixteen.parse.normal.Position2D;
import java.util.List;
/**
* 8.5 CLOUD2VEH_ADVICE_GUIDANCE = 19
* 路线规划指令
***/
public class RoutePlan {
// 事件唯一标识
@Order(1)
@FieldDef(type="BYTE",isArray=true,length=36)
private String uuid;
//事件生成时间戳
@Order(2)
@FieldDef(type="TIMESTAMP",isArray=false,length=8)
private long timestamp;
//告警类型 固定值为 6601,用于匹配 RSI
@Order(3)
private int alertType;
//路线长度
@Order(4)
private long totalLen;
//目的地位置
@Order(5)
private Position2D destLocation;
//目的地停车航向角
@Order(6)
@OffsetDef(value=0.0001)
private long destHeading;
// 路线分段个数
@Order(7)
private int pathNum;
//路线规划数据 长度
@Order(8)
@NumFlag
private int dataLen;
//长度为 N 个字节,其中 N 为路线规划数据长度,路线规划数据结构内 包含多种颜色的集合
@Order(9)
@RefNumFlag(value="dataLen")
private List<PathPath> pathList;
}
package com.sixteen.parse.cloud2veh_advice_85.vo;
import com.sixteen.parse.annotates.Order;
/**
* 限速 信息
* @author huangml
*
*/
public class SpeedLimit {
//车道编 号
@Order(1)
private short laneId;
//限速值
@Order(2)
private short speedLimit;
}
package com.sixteen.parse.cloud2veh_advice_85.vo
import com.sixteen.parse.annotates.DependencyDef
import com.sixteen.parse.annotates.DynamicsClassDef
import com.sixteen.parse.annotates.FieldDef
import com.sixteen.parse.annotates.OffsetDef
import com.sixteen.parse.annotates.Order
//8.5 云端决策建议信息数据结构
class VehAdviceInfo {
//车辆编号
@Order(1)
@FieldDef(type = "BYTE", isArray = true, length = 8)
var vehicleId: String? = null
//消息标识
@Order(2)
@FieldDef(type = "BYTE", isArray = true, length = 8)
var seq: Long = 0
//建议类型
@Order(3)
var adviceType: Short = 0
// 事件分类
@Order(4)
var eventType: Short = 0
// 车速建议
@Order(5)
@OffsetDef(value = 0.01)
var spdExp = 0
// 加速度建议
@Order(6)
var accExp = 0
// 控车变道建 议转向状态
@Order(7)
var instructDirection: Short = 0
// 命令长度
@Order(8)
var dataLen = 0
//各项功能对应的 adviceType
@Order(9)
@DynamicsClassDef(classtype = "CloudDecision")
@DependencyDef(value = "adviceType")
var adviceData: Any? = null
}
package com.sixteen.parse.cloud2veh_advice_85.vo
import com.sixteen.parse.annotates.Order
import com.sixteen.parse.normal.MessageHeadInfo
/**
* 云端决策建议信息
*/
class VehAdviceMessage {
//报文头
@Order(1)
var messageHeadInfo: MessageHeadInfo? = null
@Order(2)
var vehAdviceInfo: VehAdviceInfo? = null
}
package com.sixteen.parse.events
import com.sixteen.parse.assist_88.dto.AssistMessageBodyDto
class AssistMsgEvent {
var assistMessageBodyDto: AssistMessageBodyDto<Any>? = null
}
\ No newline at end of file
package com.sixteen.parse.events
import com.sixteen.parse.selfdefine_810.dto.SelfDefineDetailDto
class SelfDefineEvent {
var selfDefineDetailDto: SelfDefineDetailDto?=null
}
\ No newline at end of file
package com.sixteen.parse.events
import com.sixteen.parse.cloud2veh_advice_85.dto.VehAdviceDto
/***云端决策建议信息8.5 事件**/
class VehAdviceEvent {
var vehAdviceDto: VehAdviceDto<Any>? = null
}
\ No newline at end of file
package com.sixteen.parse.events
import com.sixteen.parse.vehcloud_state_82.dto.VehicleInfoDto
import com.sixteen.parse.vehcloud_state_82.dto.VehicleStatusInfoDto
/**车辆运行状态**/
class VehicleBodyEvent {
var vehicleInfo: VehicleInfoDto? = null
var vehicleStatusInfo: VehicleStatusInfoDto? = null
}
\ No newline at end of file
package com.sixteen.parse.genHex
import com.sixteen.parse.annotates.FieldDef
import com.sixteen.parse.annotates.Order
//公共报文头信息
class MsgHeadInfo {
//标识位 0xF2
@Order(1)
var flag: Byte = 0
//数据段长度
@Order(2)
var bodyLenth: Int = 0
//数据类别
@Order(3)
var dataType: Byte = 0
//版本号
@Order(4)
var version: Byte = 0
//时间戳
@Order(5)
@FieldDef(type = "TIMESTAMP", isArray = false, length = 8)
var timestamp: Long = 0
//控制内容
@Order(6)
var controlContent: Byte = 0
}
package com.sixteen.parse.genHex
import com.sixteen.parse.annotates.FieldDef
import com.sixteen.parse.annotates.OffsetDef
import com.sixteen.parse.annotates.Order
class Position2DT {
//经度
@Order(1)
@OffsetDef(value = 0.0000001, minValidLength = 10)
@FieldDef(type = "Position")
var longitude: Double = 0.0
//纬度
@Order(2)
@OffsetDef(value = 0.0000001, minValidLength = 10)
@FieldDef(type = "Position")
var latitude: Double = 0.0
}
package com.sixteen.parse.genHex
import com.sixteen.parse.annotates.FieldDef
import com.sixteen.parse.annotates.OffsetDef
import com.sixteen.parse.annotates.Order
/**
*加了@FieldDef(type = "Position")注解表示用 iNt 存入字节数组
*/
class PositionT {
//经度[0..3600000000],经度,单位:1e-7 °
@Order(1)
@OffsetDef(value = 0.0000001, minValidLength = 10)
@FieldDef(type = "Position")
var longitude: Double = 0.0
//纬度 [0..1800000000],纬度,单位:1e-7 °
@Order(2)
@OffsetDef(value = 0.0000001, minValidLength = 10)
@FieldDef(type = "Position")
var latitude: Double = 0.0
//高程 单位分米 0xFFFFFFFF 表示缺省
@Order(3)
@OffsetDef(value = 0.1)
@FieldDef(type = "Position")
var elevation: Double = 0.0
}
package com.sixteen.parse.genHex;
import com.sixteen.parse.annotates.FieldDef;
import com.sixteen.parse.annotates.NumFlag;
import com.sixteen.parse.annotates.OffsetDef;
import com.sixteen.parse.annotates.Order;
import com.sixteen.parse.annotates.RefNumFlag;
import com.sixteen.parse.normal.Position;
import com.sixteen.parse.normal.Position2D;
import java.util.List;
/**
* 车辆基础信息
*/
public class VehInfo {
// 1. 私有化静态实例(volatile保证多线程下可见性,防止指令重排)
// private static volatile VehInfo INSTANCE;
// 2. 私有化构造方法(防止外部new实例)
/* private VehInfo() {
// 私有化构造,避免外部创建
}*/
// 3. 提供公共的静态获取方法(双重校验锁)
/* public static VehInfo getInstance() {
// 第一次校验(无锁,提升性能)
if (INSTANCE == null) {
// 加锁,保证线程安全
synchronized (VehInfo.class) {
// 第二次校验(防止多线程下重复创建)
if (INSTANCE == null) {
INSTANCE = new VehInfo();
}
}
}
return INSTANCE;
}*/
//车辆编号
@Order(1)
@FieldDef(type = "BYTE", isArray = true, length = 8)
private String vehicleId = "";
//消息编号
@Order(2)
@FieldDef(type = "BYTE", isArray = true, length = 8)
private long messageId = 0;
//GNSS 时间戳
@Order(3)
@FieldDef(type = "TIMESTAMP", isArray = false, length = 8)
private long timestampGNSS;
//GNSS 速度 单位:0.01 m/s
@Order(4)
@OffsetDef(value = 0.036, type = 2)
private short velocityGNSS;
//位置
@Order(5)
private PositionT position;
//航向角
/****[0..3600000],正北方向顺时针旋转至与车辆当前运动方向重合所转 过的角度,单位为 1e-4 ° , 不可缺省,0xFFFFFFFF 表示异常**/
@Order(6)
// @OffsetDef(value=0.0001,minValidLength=7)
// @FieldDef(type = "Position")
private int heading;
/**
* 档位 枚举类型:[0..50],0:数据失效;1-20:表示手动档车辆前进档对 应档位,1 表示 1 档,2 表示 2 档,以此类推;21-30:表示手动挡车 辆倒档对应档位,
* 21 表示 R1 档,22 表示 R2 档,以此类推;31:D 档 (前进档);32:R 档(倒档);33:P 档(驻车档);34:N 档(空 档);
* 35:S 档(运动模式);36:L 档(低速档);37:H 档;38; HL 档;39-50:预留,不可缺省,0xFF 表示异常
*/
@Order(7)
private byte tapPos = 31;
//方向盘转角 单位为 1e-4 °
@Order(8)
// @OffsetDef(value = 0.0001)
private int steeringAngle = 0xFFFFFFFF;
/**
* [0..20000],CAN 总线数据中的行驶速度,单位:0.01m/s,0xFFFF 表 示缺省
***/
@Order(9)
@OffsetDef(value = 0.036, type = 2)
private short velocity;
//纵向加速度 单位:0.01m/s
@Order(10)
@OffsetDef(value = 0.036, type = 2)
private short accelerationLon;
//横向加速度 单位:0.01m/s
@Order(11)
@OffsetDef(value = 0.036, type = 2)
private short accelerationLat;
//垂向加速度 单位:0.01m/s
@Order(12)
@OffsetDef(value = 0.036, type = 2)
private short accelerationVer;
//横摆角速度 单位:0.01m/s
@Order(13)
@OffsetDef(value = 0.036, type = 2)
private short yawRate;
//油门开度 单位:0.1%
@Order(14)
private short accelPos = (short) (0xFFFF);
//发动机输出转速 单位:r/min
@Order(15)
private short engineSpeed = (short) 0xFFFF;
//发动机扭矩 单位:0.01Nm
@Order(16)
private int engineTorque = 0xFFFFFFFF;
//制动踏板开关
@Order(17)
private byte brakeFlag = (byte) 0xFF;
//制动踏板开度 单位:0.1%
@Order(18)
private short brakePos = (short) 0xFFFF;
//制动主缸压力 单位 0.01MPa
@Order(19)
private short brakePressure = (short) 0xFFFF;
//油耗 单位 0.01L/100km
@Order(20)
private short fuelConsumption = (short) 0xFFFF;
//车辆驾驶模式
@Order(21)
private byte driveMode = (byte) 0xFF;
//车辆当前驾驶任务的终点位置 (得给个占位)
@Order(22)
private Position2DT destLocation;
//途经点数量
@Order(23)
@NumFlag
private byte passPointsNum = 0;
//途经点
@Order(24)
@RefNumFlag(value = "passPointsNum")
private List<Position2DT> passPoints;
public void setVehicleId(String vehicleId) {
this.vehicleId = vehicleId;
}
public void setTimestampGNSS(long timestampGNSS) {
this.timestampGNSS = timestampGNSS;
}
public void setVelocityGNSS(short velocityGNSS) {
this.velocityGNSS = velocityGNSS;
}
public void setPosition(PositionT position) {
this.position = position;
}
public void setHeading(int heading) {
this.heading = heading;
}
public void setVelocity(short velocity) {
this.velocity = velocity;
}
public void setDestLocation(Position2DT destLocation) {
this.destLocation = destLocation;
}
}
package com.sixteen.parse.genHex;
import com.sixteen.parse.annotates.Order;
import com.sixteen.parse.normal.MessageHeadInfo;
import com.sixteen.parse.vehcloud_state_82.vo.VehicleMessageBody;
/**
*8.2 车辆运行状态
*/
public class VehMsg {
//报文头
@Order(1)
private MsgHeadInfo msgHeadInfo;
//报文体
@Order(2)
private VehMsgBody vehMsgBody;
public MsgHeadInfo getMsgHeadInfo() {
return msgHeadInfo;
}
public void setMsgHeadInfo(MsgHeadInfo msgHeadInfo) {
this.msgHeadInfo = msgHeadInfo;
}
public VehMsgBody getVehMsgBody() {
return vehMsgBody;
}
public void setVehMsgBody(VehMsgBody vehMsgBody) {
this.vehMsgBody = vehMsgBody;
}
}
package com.sixteen.parse.genHex;
import com.sixteen.parse.annotates.Order;
import com.sixteen.parse.vehcloud_state_82.vo.VehicleInfo;
/**车辆运行状态报文体
* 8.2
* **/
public class VehMsgBody {
//车辆基础信息
@Order(1)
private VehInfo vehInfo;
/****车辆辅助驾驶信息及状态信息*/
// @Order(2)
// private VehicleStatusInfo vehicleStatusInfo;
// //车辆自动驾驶信息
// @Order(3)
// private AutomaticDriveInfo automaticDriveInfo;
public void setVehInfo(VehInfo vehInfo) {
this.vehInfo = vehInfo;
}
}
package com.sixteen.parse.normal;
import com.sixteen.parse.assist_88.dto.TrafficLightDto;
import com.sixteen.parse.assist_88.vo.TrafficLight;
import com.sixteen.parse.cloud2veh_advice_85.dto.AutoSpeedLimitDto;
import com.sixteen.parse.cloud2veh_advice_85.dto.RSIWarnningDto;
import com.sixteen.parse.cloud2veh_advice_85.dto.RoutePlanDto;
import com.sixteen.parse.cloud2veh_advice_85.vo.AutoSpeedLimit;
import com.sixteen.parse.cloud2veh_advice_85.vo.RSIWarnning;
import com.sixteen.parse.cloud2veh_advice_85.vo.RoutePlan;
import java.util.HashMap;
import java.util.Map;
public class DynamicsClassMap {
private static Map<String, Map<Short, Class>> map = new HashMap<>();
private static Map<String, Map<Short, Class>> mapDto = new HashMap<>();
static {
Map<Short, Class> cloundDecisionsubMap = new HashMap<>();
// 参考 adviceType 列表定义 8.5 云端决策建议信息及返回
// cloundDecisionsubMap.put((short) 1, TrafficLightInfo.class);//信号灯路口车速引导功能指令
cloundDecisionsubMap.put((short) 5, AutoSpeedLimit.class);//动态车道级限速指令
// cloundDecisionsubMap.put((short) 9, FawWarnning.class);//前向碰撞预警
// cloundDecisionsubMap.put((short) 11, AbnormalVehicle.class);//异常车辆预警
// cloundDecisionsubMap.put((short) 13, EmergencyVehicle.class);//紧急车辆预警
cloundDecisionsubMap.put((short) 17, RSIWarnning.class);//通用 RSI 预警
cloundDecisionsubMap.put((short) 19, RoutePlan.class);//路线规划指令,用于局部路径一半红,一半蓝
map.put("CloudDecision", cloundDecisionsubMap);
// 8.8 云端辅助功能信息及返回
Map<Short, Class> assistSubMap = new HashMap<>();
assistSubMap.put((short) 7, TrafficLight.class);//云端下发信号灯信息数据
// assistSubMap.put((short) 11, PerceptualInfo.class);//云端下发实时感知信息(CLOUD2VEH_ASTFUNC_RSM)
map.put("assist", assistSubMap);
//Android Dto 参考 adviceType 列表定义
Map<Short, Class> cloundDecisionsubMapDto = new HashMap<>();
// cloundDecisionsubMapDto.put((short) 1, TrafficLightInfoDto.class);//信号灯路口车速引导功能指令
cloundDecisionsubMapDto.put((short) 5, AutoSpeedLimitDto.class);//动态车道级限速指令
// cloundDecisionsubMapDto.put((short) 9, FawWarnningDto.class);//前向碰撞预警
// cloundDecisionsubMapDto.put((short) 11, AbnormalVehicleDto.class);//异常车辆预警
// cloundDecisionsubMapDto.put((short) 13, EmergencyVehicleDto.class);//紧急车辆预警
cloundDecisionsubMapDto.put((short) 17, RSIWarnningDto.class);//通用 RSI 预警
cloundDecisionsubMapDto.put((short) 19, RoutePlanDto.class);//路线规划指令,用于局部路径一半红,一半蓝
mapDto.put("CloudDecision", cloundDecisionsubMapDto);
Map<Short, Class> assistSubMapDto = new HashMap<>();
assistSubMapDto.put((short) 7, TrafficLightDto.class);//云端下发信号灯信息数据
// assistSubMapDto.put((short) 11, PerceptualInfoDto.class);//云端下发实时感知信息(CLOUD2VEH_ASTFUNC_RSM)
mapDto.put("assist", assistSubMapDto);
}
public static Class get(String classtype, Short classkey) {
Map<Short, Class> subMap = map.get(classtype);
return subMap.get(classkey);
}
public static Class getDto(String classtype, Short classkey) {
Map<Short, Class> subMap = mapDto.get(classtype);
return subMap.get(classkey);
}
}
package com.sixteen.parse.normal
import com.sixteen.parse.annotates.FieldDef
import com.sixteen.parse.annotates.Order
//公共报文头信息
class MessageHeadInfo {
//标识位 0xF2
@Order(1)
var flag: Short = 0
//数据段长度
@Order(2)
var bodyLenth: Long = 0
//数据类别
@Order(3)
var dataType: Short = 0
//版本号
@Order(4)
var version: Short = 0
//时间戳
@Order(5)
@FieldDef(type = "TIMESTAMP", isArray = false, length = 8)
var timestamp: Long = 0
//控制内容
@Order(6)
var controlContent: Short = 0
}
package com.sixteen.parse.normal
import com.sixteen.parse.annotates.OffsetDef
import com.sixteen.parse.annotates.Order
class Position {
//经度[0..3600000000],经度,单位:1e-7 °
@Order(1)
@OffsetDef(value = 0.0000001, minValidLength = 10, minusValue = 180)
var longitude: Long = 0
//纬度 [0..1800000000],纬度,单位:1e-7 °
@Order(2)
@OffsetDef(value = 0.00000001, minValidLength = 10, minusValue = 90)
var latitude: Long = 0
//高程 单位分米 0xFFFFFFFF 表示缺省
@Order(3)
@OffsetDef(value = 0.1, minusValue = 5000)
var elevation: Long = 0
}
package com.sixteen.parse.normal
import com.sixteen.parse.annotates.OffsetDef
import com.sixteen.parse.annotates.Order
class Position2D {
//经度
@Order(1)
@OffsetDef(value = 0.0000001, minValidLength = 10)
var longitude: Long = 0
//纬度
@Order(2)
@OffsetDef(value = 0.00000001, minValidLength = 10)
var latitude: Long = 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