Merge branch 'dev_arch_opt_3.0' of gitlab.zhidaoauto.com:zhjt/AndroidApp/MoGoEagleEye into dev_arch_opt_3.0

This commit is contained in:
lixiaopeng
2023-03-01 19:26:59 +08:00
2 changed files with 337 additions and 8 deletions

View File

@@ -0,0 +1,326 @@
package com.zhidao.adas.client;
import android.util.Log;
import com.google.protobuf.TextFormat;
import com.mogo.support.obu.MogoObuManager;
import com.mogo.support.obu.ObuScene;
import com.mogo.support.obu.constants.MogoObuConstants;
import com.mogo.support.obu.constants.MogoObuTopicId;
import com.mogo.support.obu.model.MogoObuHvBasicsData;
import com.mogo.support.obu.model.MogoObuMapMathData;
import com.mogo.support.obu.model.MogoObuRsiWarningData;
import com.mogo.support.obu.model.MogoObuRsmWarningData;
import com.mogo.support.obu.model.MogoObuRvWarningData;
import com.mogo.support.obu.model.MogoObuSpatWarningData;
import com.mogo.support.obu.model.advance.AccFourAxes;
import com.mogo.support.obu.model.advance.DateTime;
import com.mogo.support.obu.model.advance.NodeId;
import com.mogo.support.obu.model.advance.Participant;
import com.mogo.support.obu.model.advance.PositionLLV;
import com.mogo.support.obu.model.advance.RsiWarning;
import com.mogo.support.obu.model.advance.SpatLight;
import com.mogo.support.obu.model.advance.V2xWarning;
import com.mogo.support.obu.model.advance.VehBasics;
import com.mogo.support.obu.model.advance.VehControl;
import com.mogo.support.obu.model.advance.VehSize;
import com.mogo.support.obu.model.advance.VerticalLLV;
import com.mogo.support.obu.model.advance.WarningData;
import com.zhidao.support.adas.high.common.ThreadPoolManager;
import com.zhidao.support.obu.ObuManager;
import com.zhidao.support.obu.OnObuListener;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import mogo.telematics.pad.MessagePad;
/**
* OBU SDK Java对象转PB对象测试
*/
public class ObuTest {
public static void start() {
Runnable runnable = new Runnable() {
@Override
public void run() {
ObuManager.getInstance().registerObuListener(listener);
Class clazz = MogoObuManager.class;
MogoObuManager mogoObuManager = MogoObuManager.getInstance();
Method[] methods = clazz.getDeclaredMethods();
for (Method m : methods) {
String name = m.getName();
if ("onObuCallback".equals(name)) {
m.setAccessible(true);
try {
m.invoke(mogoObuManager, MogoObuTopicId.HV_BASIC.id, buildMogoObuHvBasicsData());
m.invoke(mogoObuManager, MogoObuTopicId.RV_WARNING.id, buildMogoObuRvWarningData());
m.invoke(mogoObuManager, MogoObuTopicId.SPAT_WARNING.id, buildMogoObuSpatWarningData());
m.invoke(mogoObuManager, MogoObuTopicId.RSI_WARNING.id, buildMogoObuRsiWarningData());
m.invoke(mogoObuManager, MogoObuTopicId.RSM_WARNING.id, buildMogoObuRsmWarningData());
m.invoke(mogoObuManager, MogoObuTopicId.MAP_MATCH.id, buildMogoObuMapMathData());
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
break;
}
}
}
};
ThreadPoolManager.getsInstance().execute(runnable);
}
private static int have(int unitMask, int mask) {
unitMask += mask;
return unitMask;
}
private static MogoObuHvBasicsData buildMogoObuHvBasicsData() {
int vehBasicsUnitMask = 0;
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ID);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.SEC_MARK);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.LATITUDE);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.LONGITUDE);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ELEVATION);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.SPEED);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.HEADING);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ACC_FOUR_AXES);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_SIZE);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_CLASS);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_CONTROL_MSG);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.TARGET_POSITION);
VehBasics vehBasics = new VehBasics(vehBasicsUnitMask);
vehBasics.setId("aaa");
vehBasics.setLatitude(10000000);
vehBasics.setLongitude(20000000);
vehBasics.setElevation(2000);
vehBasics.setSpeed(3000);
vehBasics.setHeading(4000);
vehBasics.setAccFourAxes(new AccFourAxes(200, 201, 202, 203));
vehBasics.setVehSize(new VehSize(300, 301, 302));
vehBasics.setVehClass(303);
int vehControlUnitMask = 0;
vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.BRAKE_PEDAL_STATUS);
vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.TRANSMISSION_STATUS);
vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.EXTERIOR_LIGHTS);
VehControl vehControl = new VehControl(vehControlUnitMask);
vehControl.setBrakePedalStatus(401);
vehControl.setTransmissionStatus(402);
vehControl.setExteriorLights(403);
vehBasics.setVehControlMsg(vehControl);
vehBasics.setTargetPosition(8);
MogoObuHvBasicsData data = new MogoObuHvBasicsData(1, vehBasics);
return data;
}
private static MogoObuRvWarningData buildMogoObuRvWarningData() {
int vehBasicsUnitMask = 0;
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ID);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.SEC_MARK);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.LATITUDE);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.LONGITUDE);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ELEVATION);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.SPEED);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.HEADING);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ACC_FOUR_AXES);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_SIZE);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_CLASS);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_CONTROL_MSG);
vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.TARGET_POSITION);
VehBasics vehBasics = new VehBasics(vehBasicsUnitMask);
vehBasics.setId("aaa");
vehBasics.setLatitude(20000000);
vehBasics.setLongitude(30000000);
vehBasics.setElevation(4000);
vehBasics.setSpeed(5000);
vehBasics.setHeading(6000);
vehBasics.setAccFourAxes(new AccFourAxes(700, 801, 902, 1003));
vehBasics.setVehSize(new VehSize(1100, 1201, 1302));
vehBasics.setVehClass(1403);
int vehControlUnitMask = 0;
vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.BRAKE_PEDAL_STATUS);
vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.TRANSMISSION_STATUS);
vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.EXTERIOR_LIGHTS);
VehControl vehControl = new VehControl(vehControlUnitMask);
vehControl.setBrakePedalStatus(1501);
vehControl.setTransmissionStatus(1602);
vehControl.setExteriorLights(1703);
vehBasics.setVehControlMsg(vehControl);
vehBasics.setTargetPosition(18);
int v2xWarningUnitMask = 0;
v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_NUM);
v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_DATA);
v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_TIME);
v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.DISTANCE);
V2xWarning v2xWarning = new V2xWarning(v2xWarningUnitMask);
DateTime dateTime = new DateTime(19, 20, 21, 22, 23, 24, 25);
List<WarningData> warningDatas = new ArrayList<>();
int warningDataMask = 0;
warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.STATUS);
warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_TYPE);
warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_LEVEL);
warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_PRIORITY);
WarningData warningData1 = new WarningData(warningDataMask, 3);
warningData1.setWarningType(26);
warningData1.setWarningLevel(27);
warningData1.setWarningPriority(28);
warningDatas.add(warningData1);
WarningData warningData2 = new WarningData(warningDataMask, 4);
warningData2.setWarningType(29);
warningData2.setWarningLevel(30);
warningData2.setWarningPriority(31);
warningDatas.add(warningData2);
v2xWarning.setWarningNum(2);
v2xWarning.setWarningData(warningDatas);
v2xWarning.setWarningTime(dateTime);
v2xWarning.setDistance(32);
MogoObuRvWarningData data = new MogoObuRvWarningData(2, vehBasics, v2xWarning);
return data;
}
private static MogoObuSpatWarningData buildMogoObuSpatWarningData() {
List<SpatLight> lights = new ArrayList<>();
lights.add(new SpatLight(35, 36, 37, 38, 39, 40));
lights.add(new SpatLight(41, 42, 43, 44, 45, 46));
lights.add(new SpatLight(47, 48, 49, 50, 51, 52));
MogoObuSpatWarningData data = new MogoObuSpatWarningData(33, 34, 3, lights);
return data;
}
private static MogoObuRsiWarningData buildMogoObuRsiWarningData() {
List<RsiWarning> list = new ArrayList<>();
int rsiWarningUnitMask = 0;
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.SCENE_TYPE);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.POSITION);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.SIGN_SERIAL_NUM);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.EVENT_SERIAL_NUM);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.SPEED_MAX_LIMIT);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.SPEED_MIN_LIMIT);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.EVENT_RADIUS);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.WARNING_LEVEL);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.TARGET_POSITION);
rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.DISTANCE);
RsiWarning rsiWarning1 = new RsiWarning(rsiWarningUnitMask);
rsiWarning1.setSceneType(53);
rsiWarning1.setPosition(new PositionLLV(7, 54, 55, new VerticalLLV(7, 56)));
rsiWarning1.setSignSerialNum(57);
rsiWarning1.setEventSerialNum(58);
rsiWarning1.setSpeedMinLimit(59);
rsiWarning1.setSpeedMaxLimit(60);
rsiWarning1.setEventRadius(61);
rsiWarning1.setWarningLevel(62);
rsiWarning1.setTargetPosition(63);
rsiWarning1.setDistance(64);
list.add(rsiWarning1);
RsiWarning rsiWarning2 = new RsiWarning(rsiWarningUnitMask);
rsiWarning2.setSceneType(65);
rsiWarning2.setPosition(new PositionLLV(7, 66, 67, new VerticalLLV(7, 68)));
rsiWarning2.setSignSerialNum(69);
rsiWarning2.setEventSerialNum(70);
rsiWarning2.setSpeedMinLimit(71);
rsiWarning2.setSpeedMaxLimit(72);
rsiWarning2.setEventRadius(73);
rsiWarning2.setWarningLevel(74);
rsiWarning2.setTargetPosition(75);
rsiWarning2.setDistance(76);
list.add(rsiWarning2);
MogoObuRsiWarningData data = new MogoObuRsiWarningData(53, 2, list);
return data;
}
private static MogoObuRsmWarningData buildMogoObuRsmWarningData() {
Participant participant = new Participant(78, 79, 80, 81, 82, 83, 84, 85, 86, new AccFourAxes(87, 88, 89, 90), new VehSize(91, 92, 93), 94, 95);
int v2xWarningUnitMask = 0;
v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_NUM);
v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_DATA);
v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_TIME);
v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.DISTANCE);
V2xWarning v2xWarning = new V2xWarning(v2xWarningUnitMask);
DateTime dateTime = new DateTime(96, 97, 98, 99, 100, 101, 102);
List<WarningData> warningDatas = new ArrayList<>();
int warningDataMask = 0;
warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.STATUS);
warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_TYPE);
warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_LEVEL);
warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_PRIORITY);
WarningData warningData1 = new WarningData(warningDataMask, 3);
warningData1.setWarningType(103);
warningData1.setWarningLevel(104);
warningData1.setWarningPriority(105);
warningDatas.add(warningData1);
WarningData warningData2 = new WarningData(warningDataMask, 4);
warningData2.setWarningType(106);
warningData2.setWarningLevel(107);
warningData2.setWarningPriority(108);
warningDatas.add(warningData2);
v2xWarning.setWarningNum(2);
v2xWarning.setWarningData(warningDatas);
v2xWarning.setWarningTime(dateTime);
v2xWarning.setDistance(109);
MogoObuRsmWarningData data = new MogoObuRsmWarningData(77, participant, v2xWarning);
return data;
}
private static MogoObuMapMathData buildMogoObuMapMathData() {
int mogoObuMapMathDataUnitMask = 0;
mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.CURRENT_NODE_ID);
mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.UPSTREAM_NODE_ID);
mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.MATCHING_LANE_ID);
mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.SPEED_MAX_LIMIT);
mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.SPEED_MIN_LIMIT);
MogoObuMapMathData data = new MogoObuMapMathData(mogoObuMapMathDataUnitMask, 110);
data.setCurrentNodeId(new NodeId(111,112));
data.setUpstreamNodeId(new NodeId(113,114));
data.setMatchingLaneId(115);
data.setSpeedMaxLimit(116);
data.setSpeedMinLimit(117);
return data;
}
private static OnObuListener listener = new OnObuListener() {
@Override
public void onConnectStatus(int connectStatus) {
}
@Override
public void onGnssInfo(MessagePad.GnssInfo gnssInfo) {
Log.i("ddddd", "onGnssInfo=\n" + TextFormat.printer().escapingNonAscii(false).printToString(gnssInfo));
}
@Override
public void onObuRvWarning(ObuScene.RvWarningData rvWarningData) {
Log.i("ddddd", "onObuRvWarning=\n" + TextFormat.printer().escapingNonAscii(false).printToString(rvWarningData));
}
@Override
public void onObuSpatWarning(ObuScene.SpatWarningData spatWarningData) {
Log.i("ddddd", "onObuSpatWarning=\n" + TextFormat.printer().escapingNonAscii(false).printToString(spatWarningData));
}
@Override
public void onObuRsiWarning(ObuScene.RsiWarningData rsiWarningData) {
Log.i("ddddd", "onObuRsiWarning=\n" + TextFormat.printer().escapingNonAscii(false).printToString(rsiWarningData));
}
@Override
public void onObuRsmWarning(ObuScene.RsmWarningData rsmWarningData) {
Log.i("ddddd", "onObuRsmWarning=\n" + TextFormat.printer().escapingNonAscii(false).printToString(rsmWarningData));
}
@Override
public void onObuMapMath(ObuScene.MapMatchData mapMatchData) {
Log.i("ddddd", "onObuMapMath=\n" + TextFormat.printer().escapingNonAscii(false).printToString(mapMatchData));
}
};
}

View File

@@ -352,14 +352,17 @@ class OverMapView @JvmOverloads constructor(
.icon(BitmapDescriptorFactory.fromResource(if (compassDrawable != -1) compassDrawable else R.drawable.amap_custom_corner))
.anchor(0.5f, 0.5f)
)
mStartMarker = mAMap!!.addMarker(
MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(if (startPointDrawable != -1) startPointDrawable else R.drawable.module_small_map_view_dir_start))
)
mEndMarker = mAMap!!.addMarker(
MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(if (endPointDrawable != -1) endPointDrawable else R.drawable.module_small_map_view_dir_end))
)
if (startPointDrawable != -1) {
mStartMarker = mAMap!!.addMarker(
MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(startPointDrawable)))
}
if (endPointDrawable != -1) {
mEndMarker = mAMap!!.addMarker(
MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(endPointDrawable))
)
}
}
fun handlePlanningData(locationList: List<MessagePad.Location>?) {