Merge branch 'dev_arch_opt_3.0' into dev_robobus-m1-p-app-module_1.0.0_230112_1.0.0

This commit is contained in:
yangyakun
2023-02-13 15:23:43 +08:00
15 changed files with 631 additions and 102 deletions

View File

@@ -1,5 +1,5 @@
# 工控机PB文件 用于生成Java Bean
# ***鹰眼自用PB文件放在单独文件夹personal目的是为了区分工控机PB还是自用PB***
## 1. studio中*.proto文件中如果出现“Cannot resolve symbol 'xxxx'”提示
**不影响正常编译只影响美观以及无法在proto文件中跳转**
~~~
@@ -15,7 +15,6 @@
~~~
# 工控机透传OBU V2I PB转换
***鹰眼自用PB文件放在单独文件夹personal目的是为了区分工控机PB还是自用PB***
|工控机原始PB文件|转换后鹰眼所用PB|
|:-|:-|
|obu_warning_event.proto|personal/obu_penetrate.proto、personal/obu_scene.proto|

View File

@@ -201,7 +201,7 @@ public interface OnAdasListener {
* @param header 头
* @param spatWarningData 数据
*/
void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData);
void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData);
/**
* OBU RSI预警信息
@@ -209,7 +209,7 @@ public interface OnAdasListener {
* @param header 头
* @param rsiWarningData 数据
*/
void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData);
void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData);
/**
* OBU RSM预警信息
@@ -217,7 +217,7 @@ public interface OnAdasListener {
* @param header 头
* @param rsmWarningData 数据
*/
void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData);
void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData);
/**
* OBU 地图匹配结果
@@ -225,7 +225,7 @@ public interface OnAdasListener {
* @param header 头
* @param mapMatchData 数据
*/
void onoObuObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData);
void onObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData);
/**
* 重构后的功能状态

View File

@@ -1,15 +1,19 @@
package com.zhidao.support.adas.high.msg;
import android.os.SystemClock;
import android.util.Log;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.UnknownFieldSet;
import com.mogo.support.obu.ObuBase;
import com.mogo.support.obu.ObuPenetrate;
import com.mogo.support.obu.ObuScene;
import com.zhidao.support.adas.high.AdasChannel;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.protocol.RawData;
import java.util.List;
import mogo.v2x.ObuWarningEvent;
@@ -20,39 +24,358 @@ public class ObuWarningDataMessage extends MyAbstractMessageHandler {
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
ObuWarningEvent.ObuWarningData obuWarningData = ObuWarningEvent.ObuWarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
AdasChannel.calculateTimeConsumingOnDispatchRaw("OBU预警事件", raw.receiveTime);
long nowTime = 0;
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
// adasListener.onObuWarningData(raw.getHeader(), obuWarningData);
}
AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime);
// ObuPenetrate.WarningData warningData = ObuPenetrate.WarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
// UnknownFieldSet set = warningData.getMapMatchData().getUnknownFields();
//
// Log.i("ddd", "set.getField(7).getVarintList()=" + set.getField(7).getVarintList());
// Long a = set.getField(7).getVarintList().get(0);
//
// ObuScene.MapMatchData.Builder MapMatchDataBuilder = warningData.getMapMatchData().toBuilder().setSpeedMinLimit(a * 0.02D);
// MapMatchDataBuilder.setUnknownFields(UnknownFieldSet.getDefaultInstance());
// ObuPenetrate.WarningData.Builder builder = warningData.toBuilder();
// builder.setMapMatchData(MapMatchDataBuilder);
// warningData = builder.build();
//// Log.i("ddd","a="+a);
//
//
// ObuWarningEvent.ObuWarningData obuWarningData = ObuWarningEvent.ObuWarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
// AdasChannel.calculateTimeConsumingOnDispatchRaw("OBU预警事件", raw.receiveTime);
// long nowTime = 0;
// if (CupidLogUtils.isEnableLog())
// nowTime = SystemClock.elapsedRealtime();
// if (adasListener != null) {
// adasListener.onObuWarningData(raw.getHeader(), warningData);
// adasListener.onObuWarningData(raw.getHeader(), obuWarningData);
// }
// AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime);
ObuPenetrate.PenetrateWarningData warningData = ObuPenetrate.PenetrateWarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
AdasChannel.calculateTimeConsumingOnDispatchRaw("OBU预警事件", raw.receiveTime);
long nowTime = 0;
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
if (warningData.getMsgDataType() == 1) {//rsiEvent
if (warningData.hasRsiEvent()) {
ObuScene.RsiWarningData rsiWarningData = warningData.getRsiEvent();
ObuScene.RsiWarningData.Builder rsiWarningDataBuilder = rsiWarningData.toBuilder();
int size = rsiWarningData.getWarningMsgCount();
for (int i = 0; i < size; i++) {
ObuBase.RsiWarning warning = rsiWarningData.getWarningMsg(i);
ObuBase.RsiWarning.Builder warningBuilder = warning.toBuilder();
if (warning.hasPosition()) {
ObuBase.PositionLLV positionLLV = warning.getPosition();
ObuBase.PositionLLV.Builder positionLLVBuilder = positionLLV.toBuilder();
if (positionLLV.hasPosition()) {
ObuBase.PositionOffset positionOffset = positionLLV.getPosition();
ObuBase.PositionOffset.Builder positionOffsetBuilder = positionOffset.toBuilder();
if (positionOffset.hasPositionLL1()) {
ObuBase.PositionLL1 positionLL1 = positionOffset.getPositionLL1();
ObuBase.PositionLL1.Builder positionLL1Builder = positionLL1.toBuilder();
UnknownFieldSet set = positionLL1.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL1Builder.setLongitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL1Builder.setLatitude(value);
}
positionLL1Builder.setUnknownFields(unknownFieldSetBuilder.build());
positionOffsetBuilder.setPositionLL1(positionLL1Builder);
positionLLVBuilder.setPosition(positionOffsetBuilder);
}
if (positionOffset.hasPositionLL2()) {
ObuBase.PositionLL2 positionLL2 = positionOffset.getPositionLL2();
ObuBase.PositionLL2.Builder positionLL2Builder = positionLL2.toBuilder();
UnknownFieldSet set = positionLL2.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL2Builder.setLongitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL2Builder.setLatitude(value);
}
positionLL2Builder.setUnknownFields(unknownFieldSetBuilder.build());
positionOffsetBuilder.setPositionLL2(positionLL2Builder);
positionLLVBuilder.setPosition(positionOffsetBuilder);
}
if (positionOffset.hasPositionLL3()) {
ObuBase.PositionLL3 positionLL3 = positionOffset.getPositionLL3();
ObuBase.PositionLL3.Builder positionLL3Builder = positionLL3.toBuilder();
UnknownFieldSet set = positionLL3.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL3Builder.setLongitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL3Builder.setLatitude(value);
}
positionLL3Builder.setUnknownFields(unknownFieldSetBuilder.build());
positionOffsetBuilder.setPositionLL3(positionLL3Builder);
positionLLVBuilder.setPosition(positionOffsetBuilder);
}
if (positionOffset.hasPositionLL4()) {
ObuBase.PositionLL4 positionLL4 = positionOffset.getPositionLL4();
ObuBase.PositionLL4.Builder positionLL4Builder = positionLL4.toBuilder();
UnknownFieldSet set = positionLL4.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL4Builder.setLongitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL4Builder.setLatitude(value);
}
positionLL4Builder.setUnknownFields(unknownFieldSetBuilder.build());
positionOffsetBuilder.setPositionLL4(positionLL4Builder);
positionLLVBuilder.setPosition(positionOffsetBuilder);
}
if (positionOffset.hasPositionLL5()) {
ObuBase.PositionLL5 positionLL5 = positionOffset.getPositionLL5();
ObuBase.PositionLL5.Builder positionLL5Builder = positionLL5.toBuilder();
UnknownFieldSet set = positionLL5.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL5Builder.setLongitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL5Builder.setLatitude(value);
}
positionLL5Builder.setUnknownFields(unknownFieldSetBuilder.build());
positionOffsetBuilder.setPositionLL5(positionLL5Builder);
positionLLVBuilder.setPosition(positionOffsetBuilder);
}
if (positionOffset.hasPositionLL6()) {
ObuBase.PositionLL6 positionLL6 = positionOffset.getPositionLL6();
ObuBase.PositionLL6.Builder positionLL6Builder = positionLL6.toBuilder();
UnknownFieldSet set = positionLL6.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL6Builder.setLongitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLL6Builder.setLatitude(value);
}
positionLL6Builder.setUnknownFields(unknownFieldSetBuilder.build());
positionOffsetBuilder.setPositionLL6(positionLL6Builder);
positionLLVBuilder.setPosition(positionOffsetBuilder);
}
if (positionOffset.hasPositionLatLon()) {
ObuBase.PositionLatLon positionLatLon = positionOffset.getPositionLatLon();
ObuBase.PositionLatLon.Builder positionLatLonBuilder = positionLatLon.toBuilder();
UnknownFieldSet set = positionLatLon.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLatLonBuilder.setLongitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D);
if (value != Double.MIN_VALUE) {
positionLatLonBuilder.setLatitude(value);
}
positionLatLonBuilder.setUnknownFields(unknownFieldSetBuilder.build());
positionOffsetBuilder.setPositionLatLon(positionLatLonBuilder);
positionLLVBuilder.setPosition(positionOffsetBuilder);
}
}
if (positionLLV.hasVertical()) {
ObuBase.VerticalLLV verticalLLV = positionLLV.getVertical();
ObuBase.VerticalLLV.Builder verticalLLVBuilder = verticalLLV.toBuilder();
UnknownFieldSet set = verticalLLV.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 1, 10.0D);
if (value != Double.MIN_VALUE) {
verticalLLVBuilder.setOffset1(value);
}
value = getVarint(set, unknownFieldSetBuilder, 2, 10.0D);
if (value != Double.MIN_VALUE) {
verticalLLVBuilder.setOffset2(value);
}
value = getVarint(set, unknownFieldSetBuilder, 3, 10.0D);
if (value != Double.MIN_VALUE) {
verticalLLVBuilder.setOffset3(value);
}
value = getVarint(set, unknownFieldSetBuilder, 4, 10.0D);
if (value != Double.MIN_VALUE) {
verticalLLVBuilder.setOffset4(value);
}
value = getVarint(set, unknownFieldSetBuilder, 5, 10.0D);
if (value != Double.MIN_VALUE) {
verticalLLVBuilder.setOffset5(value);
}
value = getVarint(set, unknownFieldSetBuilder, 6, 10.0D);
if (value != Double.MIN_VALUE) {
verticalLLVBuilder.setOffset6(value);
}
value = getVarint(set, unknownFieldSetBuilder, 7, 10.0D);
if (value != Double.MIN_VALUE) {
verticalLLVBuilder.setElevation(value);
}
verticalLLVBuilder.setUnknownFields(unknownFieldSetBuilder.build());
positionLLVBuilder.setVertical(verticalLLVBuilder);
}
warningBuilder.setPosition(positionLLVBuilder);
}
UnknownFieldSet set = warning.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 6, 50.0D);
if (value != Double.MIN_VALUE) {
warningBuilder.setSpeedMaxLimit(value);
}
value = getVarint(set, unknownFieldSetBuilder, 7, 50.0D);
if (value != Double.MIN_VALUE) {
warningBuilder.setSpeedMinLimit(value);
}
value = getVarint(set, unknownFieldSetBuilder, 8, 10.0D);
if (value != Double.MIN_VALUE) {
warningBuilder.setEventRadius(value);
}
value = getVarint(set, unknownFieldSetBuilder, 11, 100.0D);
if (value != Double.MIN_VALUE) {
warningBuilder.setDistance(value);
}
warningBuilder.setUnknownFields(unknownFieldSetBuilder.build());
rsiWarningDataBuilder.setWarningMsg(i, warningBuilder);
}
rsiWarningData = rsiWarningDataBuilder.build();
adasListener.onObuRsiWarning(raw.getHeader(), rsiWarningData);
}
} else if (warningData.getMsgDataType() == 2) {//rsmEvent
if (warningData.hasRsmEvent()) {
ObuScene.RsmWarningData rsmWarningData = warningData.getRsmEvent();
ObuScene.RsmWarningData.Builder rsmWarningDataBuilder = rsmWarningData.toBuilder();
if (rsmWarningData.hasParticipant()) {
ObuBase.Participant participant = rsmWarningData.getParticipant();
ObuBase.Participant.Builder participantBuilder = participant.toBuilder();
UnknownFieldSet set = participant.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 5, 10000000.0D);
if (value != Double.MIN_VALUE) {
participantBuilder.setLatitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 6, 10000000.0D);
if (value != Double.MIN_VALUE) {
participantBuilder.setLongitude(value);
}
value = getVarint(set, unknownFieldSetBuilder, 7, 10.0D);
if (value != Double.MIN_VALUE) {
participantBuilder.setElevation(value);
}
value = getVarint(set, unknownFieldSetBuilder, 8, 50.0D);
if (value != Double.MIN_VALUE) {
participantBuilder.setSpeed(value);
}
value = getVarint(set, unknownFieldSetBuilder, 9, 80.0D);
if (value != Double.MIN_VALUE) {
participantBuilder.setHeading(value);
}
participantBuilder.setUnknownFields(unknownFieldSetBuilder.build());
if (participant.hasAccFourAxes()) {
ObuBase.AccFourAxes accFourAxes = participant.getAccFourAxes();
ObuBase.AccFourAxes.Builder accFourAxesBuilder = accFourAxes.toBuilder();
UnknownFieldSet accFourAxesSet = accFourAxes.getUnknownFields();
UnknownFieldSet.Builder accFourAxesSetBuilder = accFourAxesSet.toBuilder();
value = getVarint(accFourAxesSet, accFourAxesSetBuilder, 1, 100.0D);
if (value != Double.MIN_VALUE) {
accFourAxesBuilder.setAccLng(value);
}
value = getVarint(accFourAxesSet, accFourAxesSetBuilder, 2, 100.0D);
if (value != Double.MIN_VALUE) {
accFourAxesBuilder.setAccLat(value);
}
value = getVarint(accFourAxesSet, accFourAxesSetBuilder, 3, 50.0D);
if (value != Double.MIN_VALUE) {
accFourAxesBuilder.setAccVert(value);
}
value = getVarint(accFourAxesSet, accFourAxesSetBuilder, 4, 100.0D);
if (value != Double.MIN_VALUE) {
accFourAxesBuilder.setAccYaw(value);
}
accFourAxesBuilder.setUnknownFields(accFourAxesSetBuilder.build());
participantBuilder.setAccFourAxes(accFourAxesBuilder);
}
if (participant.hasPtcSize()) {
ObuBase.VehicleSize vehicleSize = participant.getPtcSize();
ObuBase.VehicleSize.Builder vehicleSizeBuilder = vehicleSize.toBuilder();
vehicleSizeBuilder.setHeight(vehicleSize.getHeight() * 5);
participantBuilder.setPtcSize(vehicleSizeBuilder);
}
rsmWarningDataBuilder.setParticipant(participantBuilder);
}
if (rsmWarningData.hasWarningMsg()) {
ObuBase.V2xWarning warning = rsmWarningData.getWarningMsg();
ObuBase.V2xWarning.Builder warningBuilder = warning.toBuilder();
UnknownFieldSet warningSet = warning.getUnknownFields();
UnknownFieldSet.Builder warningSetBuilder = warningSet.toBuilder();
double value = getVarint(warningSet, warningSetBuilder, 4, 100.0D);
if (value != Double.MIN_VALUE) {
warningBuilder.setDistance(value);
}
warningBuilder.setUnknownFields(warningSetBuilder.build());
rsmWarningDataBuilder.setWarningMsg(warningBuilder);
}
rsmWarningData = rsmWarningDataBuilder.build();
adasListener.onObuRsmWarning(raw.getHeader(), rsmWarningData);
}
} else if (warningData.getMsgDataType() == 3) {//spatEvent
if (warningData.hasSpatEvent()) {
ObuScene.SpatWarningData spatWarningData = warningData.getSpatEvent();
ObuScene.SpatWarningData.Builder spatWarningDataBuilder = spatWarningData.toBuilder();
int size = spatWarningData.getLightsCount();
for (int i = 0; i < size; i++) {
ObuBase.SpatLight spatLight = spatWarningData.getLights(i);
ObuBase.SpatLight.Builder spatLightBuilder = spatLight.toBuilder();
UnknownFieldSet set = spatLight.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 4, 10.0D);
if (value != Double.MIN_VALUE) {
spatLightBuilder.setCountDown(value);
}
value = getVarint(set, unknownFieldSetBuilder, 5, 50.0D);
if (value != Double.MIN_VALUE) {
spatLightBuilder.setSuggestMaxSpeed(value);
}
value = getVarint(set, unknownFieldSetBuilder, 6, 50.0D);
if (value != Double.MIN_VALUE) {
spatLightBuilder.setSuggestMinSpeed(value);
}
spatLightBuilder.setUnknownFields(unknownFieldSetBuilder.build());
spatWarningDataBuilder.setLights(i, spatLightBuilder);
}
spatWarningData = spatWarningDataBuilder.build();
adasListener.onObuSpatWarning(raw.getHeader(), spatWarningData);
}
} else if (warningData.getMsgDataType() == 4) {//mapMatchData
if (warningData.hasMapMatchData()) {
ObuScene.MapMatchData mapMatchData = warningData.getMapMatchData();
ObuScene.MapMatchData.Builder mapMatchDataBuilder = mapMatchData.toBuilder();
UnknownFieldSet set = mapMatchData.getUnknownFields();
UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder();
double value = getVarint(set, unknownFieldSetBuilder, 6, 50.0D);
if (value != Double.MIN_VALUE) {
mapMatchDataBuilder.setSpeedMaxLimit(value);
}
value = getVarint(set, unknownFieldSetBuilder, 7, 50.0D);
if (value != Double.MIN_VALUE) {
mapMatchDataBuilder.setSpeedMinLimit(value);
}
mapMatchDataBuilder.setUnknownFields(unknownFieldSetBuilder.build());
mapMatchData = mapMatchDataBuilder.build();
adasListener.onObuMapMath(raw.getHeader(), mapMatchData);
}
}
}
AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime);
}
private double getVarint(final UnknownFieldSet set, final UnknownFieldSet.Builder builder, final int number, final double precision) {
if (set.hasField(number)) {
List<Long> list = set.getField(number).getVarintList();
if (list != null && !list.isEmpty()) {
Long value = list.get(0);
if (value != null) {
builder.clearField(number);
return value / precision;
}
}
}
return Double.MIN_VALUE;
}
}