完成新架构的域控制器的监听及数据改造

Signed-off-by: 董宏宇 <martindhy@gmail.com>
This commit is contained in:
董宏宇
2021-10-18 19:16:41 +08:00
parent a4650ca514
commit 8a3e122518
76 changed files with 1895 additions and 1516 deletions

View File

@@ -1,90 +0,0 @@
package com.mogo.service.impl.adas;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.utils.MortonCode;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.adas.entity.ADASWarnMessage;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/*
* @author congtaowang
* @since 2020/10/25
*
* 对象转换类
*/
public class AdasObjectUtils {
public static ADASWarnMessage fromAdasObject(WarnMessageInfo info) {
if (info == null) {
return null;
}
ADASWarnMessage warnMessage = new ADASWarnMessage();
warnMessage.content = info.getContent();
warnMessage.level = info.getLevel();
try {
warnMessage.type = Integer.parseInt(info.getType());
} catch (NumberFormatException e) {
return null;
}
warnMessage.value = info.getValue();
return warnMessage;
}
public static List<ADASRecognizedResult> regroupData(List<RectInfo.RectBean> datums) {
if (datums == null || datums.isEmpty()) {
return null;
}
List<ADASRecognizedResult> recognizedListResults = new ArrayList<>();
for (RectInfo.RectBean model : datums) {
if (model == null) {
continue;
}
ADASRecognizedResult recognizedListResult = fromAdasObject(model);
if (recognizedListResult != null) {
recognizedListResults.add(recognizedListResult);
}
}
return recognizedListResults;
}
public static ADASRecognizedResult fromAdasObject(RectInfo.RectBean model) {
if (model == null) {
return null;
}
long start = System.nanoTime();
ADASRecognizedResult result = new ADASRecognizedResult();
result.uuid = model.getUuid();
result.lat = model.getLat();
result.lon = model.getLon();
result.type = Integer.parseInt(model.getType());
result.heading = model.getHeading();
result.systemTime = Long.parseLong(model.getSystemTime());
result.satelliteTime = Long.parseLong(model.getSatelliteTime());
result.alt = model.getAlt();
result.color = model.getColor();
result.speed = model.getSpeed();
result.carId = model.getCarId();
result.dataAccuracy = model.dataAccuracy;
result.distance = model.distance;
result.drawlevel = model.getDrawlevel();
// result.mortonCode = MortonCode.wrapEncodeMorton(result.lon, result.lat);
Log.d("ADAS数据延时","fromAdasObject cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)));
// IMogoMapUIController mogoMapUIController = ARouter.getInstance().navigation(IMogoServiceApis.class).getMapServiceApi().getMapUIController();
// if (mogoMapUIController != null) {
// long start = System.currentTimeMillis();
// result.tileId = String.valueOf(mogoMapUIController.getTileId(result.lon, result.lat));
// Log.d("ADAS数据延时", "getTileId 耗时 : " + (System.currentTimeMillis() - start) + "ms");
// }
return result;
}
}

View File

@@ -5,18 +5,22 @@ import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.autopilot.AutoPilotControlCmdParameter;
import com.mogo.eagle.core.data.autopilot.AutoPilotControlParameters;
import com.mogo.eagle.core.data.autopilot.AutoPilotStationInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotControlCmdParameter;
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.traffic.TrafficData;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.adas.AdasProvider;
import com.mogo.module.adas.IAdasDataListener;
@@ -28,9 +32,6 @@ import com.mogo.service.adas.IMogoAdasOCHCallback;
import com.mogo.service.adas.IMogoAdasRecognizedDataCallback;
import com.mogo.service.adas.IMogoAdasRouteCallBack;
import com.mogo.service.adas.IMogoAdasWarnMessageCallback;
import com.mogo.service.adas.entity.ADASCarStateInfo;
import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.adas.entity.ADASWarnMessage;
import com.mogo.service.impl.singleton.SingletonsHolder;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.UiThreadHandler;
@@ -41,11 +42,6 @@ import com.zhidao.adasconfig.api.AdasConfigApiController;
import com.zhidao.adasconfig.common.config.EnumCarHeading;
import com.zhidao.adasconfig.common.config.EnumSkinStyle;
import com.zhidao.autopilot.support.api.AutopilotServiceManage;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
import com.zhidao.support.adas.high.bean.AutopilotRoute;
import com.zhidao.support.adas.high.bean.AutopilotStatus;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import org.json.JSONObject;
@@ -71,8 +67,6 @@ public class MogoADASController implements IMogoADASController {
private final IMogoStatusManager mStatusManager = SingletonsHolder.get(IMogoStatusManager.class);
private boolean mIsReleased = true;
private AdasProvider adasProvider;
/**
@@ -131,7 +125,7 @@ public class MogoADASController implements IMogoADASController {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.obj instanceof List) {
handleAdasRecognizedData((List<RectInfo.RectBean>) msg.obj);
handleAdasRecognizedData((List<TrafficData>) msg.obj);
} else if (msg.obj == null) {
handleAdasRecognizedData(null);
}
@@ -147,7 +141,7 @@ public class MogoADASController implements IMogoADASController {
super.handleMessage(msg);
final long start = System.currentTimeMillis();
ADASCarStateInfo stateInfo = GsonUtil.objectFromJson(((String) msg.obj), ADASCarStateInfo.class);
AutopilotCarStateInfo stateInfo = GsonUtil.objectFromJson(((String) msg.obj), AutopilotCarStateInfo.class);
if (stateInfo == null || stateInfo.getValues() == null) {
// Logger.d(TAG, "ADAS-LOC-timer", "upd 到 aidl 传输数据 stateInfo or stateInfo.getValues() is null");
return;
@@ -174,7 +168,7 @@ public class MogoADASController implements IMogoADASController {
*
* @param models
*/
private void handleAdasRecognizedData(List<RectInfo.RectBean> models) {
private void handleAdasRecognizedData(List<TrafficData> models) {
if (models == null
|| models.isEmpty()) {
invokeCallbackPerSecond(null);
@@ -183,14 +177,13 @@ public class MogoADASController implements IMogoADASController {
invokeCallbackPerSecond(models);
}
private void invokeCallbackPerSecond(List<RectInfo.RectBean> models) {
List<ADASRecognizedResult> recognizedListResults = AdasObjectUtils.regroupData(models);
private void invokeCallbackPerSecond(List<TrafficData> models) {
if (!mMogoAdasRecognizedDataCallbacks.isEmpty()) {
for (IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks) {
if (callback == null) {
continue;
}
callback.onAdasDataCallback(recognizedListResults);
callback.onAdasDataCallback(models);
}
}
}
@@ -243,7 +236,7 @@ public class MogoADASController implements IMogoADASController {
}
@Override
public void onRectData(RectInfo rectInfo) {
public void onRectData(List<TrafficData> trafficData) {
// 仅在 vr 模式下显示 adas 识别车辆
if (!SingletonsHolder.get(IMogoStatusManager.class).isVrMode()) {
return;
@@ -251,50 +244,43 @@ public class MogoADASController implements IMogoADASController {
if (!SingletonsHolder.get(IMogoStatusManager.class).isMainPageLaunched()) {
return;
}
if (rectInfo == null || TextUtils.isEmpty(rectInfo.getAction())) {
if (trafficData == null) {
Logger.w(TAG, "--->action is null");
return;
}
final long start = System.nanoTime();
if (rectInfo.getModels() != null && !rectInfo.getModels().isEmpty()) {
List<RectInfo.RectBean> beans = rectInfo.getModels();
try {
Message message = mAdasRecognizedRecHandler.obtainMessage();
message.obj = beans;
message.sendToTarget();
Log.i("ADAS数据延时", "接收数据 -> 发出 cost :" + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)) + "ms");
} catch (Exception e) {
e.printStackTrace();
}
try {
Message message = mAdasRecognizedRecHandler.obtainMessage();
message.obj = trafficData;
message.sendToTarget();
Log.i("ADAS数据延时", "接收数据 -> 发出 cost :" + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)) + "ms");
} catch (Exception e) {
e.printStackTrace();
}
DebugConfig.setStatus(DebugConfig.sAdasRecognized, true);
}
@Override
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
if (warnMessageInfo == null) {
public void onWarnMessage(AutopilotWarnMessage autopilotWarnMessage) {
if (autopilotWarnMessage == null) {
return;
}
// 警告消息
Logger.d(TAG, "onWarnMessage = %s", warnMessageInfo.toString());
Logger.d(TAG, "onWarnMessage = %s", autopilotWarnMessage.toString());
if (mMogoAdasWarnMessageCallbackList.isEmpty()) {
return;
}
final ADASWarnMessage warnMessage = AdasObjectUtils.fromAdasObject(warnMessageInfo);
if (warnMessage == null) {
return;
}
UiThreadHandler.post(() -> {
for (IMogoAdasWarnMessageCallback callback : mMogoAdasWarnMessageCallbackList) {
if (callback != null) {
callback.onReceiveData(warnMessage);
callback.onReceiveData(autopilotWarnMessage);
}
}
});
}
@Override
public void autopilotArrive(AdasAIDLAutopilotArriveModel autopilotArriveModel) {
public void autopilotArrive(AutopilotStationInfo autopilotArriveModel) {
Logger.d(TAG, "autopilotArriveModel " + autopilotArriveModel);
if (autopilotArriveModel == null) {
Logger.d(TAG, "autopilotArrive autopilotArriveModel is null");
@@ -303,8 +289,8 @@ public class MogoADASController implements IMogoADASController {
Logger.d(TAG, "autopilotArrive : " + autopilotArriveModel.toString());
if (!mAdasOCHCallback.isEmpty()) {
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onArriveAt(new AutoPilotStationInfo(
autopilotArriveModel.getCarType(),
cb.onArriveAt(new AutopilotStationInfo(
autopilotArriveModel.getType(),
autopilotArriveModel.getLon(),
autopilotArriveModel.getLat())
);
@@ -313,12 +299,12 @@ public class MogoADASController implements IMogoADASController {
}
@Override
public void autopilotRoute(AutopilotRoute autopilotRoute) {
public void autopilotRoute(AutopilotRouteInfo autopilotRoute) {
if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
return;
}
List<MogoLatLng> latLngList = new ArrayList<>();
for (AutopilotRoute.RouteModels routeModel : autopilotRoute.getModels()) {
for (AutopilotRouteInfo.RouteModels routeModel : autopilotRoute.getModels()) {
latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon()));
}
for (IMogoAdasRouteCallBack callback : mMogoAdasRouteCallBacks) {
@@ -338,13 +324,13 @@ public class MogoADASController implements IMogoADASController {
}
@Override
public void notifyAutopilotState(AutopilotStatus autopilotStatus) {
public void notifyAutopilotState(AutopilotStatusInfo autopilotStatus) {
Logger.d(TAG, "notifyAutopilotState: " + GsonUtil.jsonFromObject(autopilotStatus));
DebugConfig.setAutoPilotStatus(autopilotStatus.getValues().getState() + "");
DebugConfig.setAutoPilotStatus(autopilotStatus.getState() + "");
if (!mAdasOCHCallback.isEmpty()) {
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onStateChanged(autopilotStatus.getValues().getState(), autopilotStatus.getValues().getReason());
cb.onStateChanged(autopilotStatus.getState(), autopilotStatus.getReason());
}
}
}
@@ -422,7 +408,6 @@ public class MogoADASController implements IMogoADASController {
@Override
public void init(Context context) {
mIsReleased = false;
adasProvider = ARouter.getInstance().navigation(AdasProvider.class);
}
@@ -464,7 +449,7 @@ public class MogoADASController implements IMogoADASController {
}
@Override
public void aiCloudToAdasData(AutoPilotControlParameters result) {
public void aiCloudToAdasData(AutopilotControlParameters result) {
try {
syncControlCmdToADAS("aiCloudToStartAutopilot", result);
} catch (Exception e) {
@@ -477,7 +462,7 @@ public class MogoADASController implements IMogoADASController {
* @param result
*/
private void syncControlCmdToADAS(String action, Object result) {
AutoPilotControlCmdParameter parameter = new AutoPilotControlCmdParameter(action, result);
AutopilotControlCmdParameter parameter = new AutopilotControlCmdParameter(action, result);
//位置信息 action是aiCloudToStartAutopilot
try {
adasProvider.sendWsMessage(GsonUtil.jsonFromObject(parameter));
@@ -488,7 +473,6 @@ public class MogoADASController implements IMogoADASController {
@Override
public void release() {
mIsReleased = true;
adasProvider.removeAdasEventListener(mAdasDataListener);
adasProvider.removeAdasStatusListener();
AutopilotServiceManage.getInstance().release();
@@ -593,7 +577,7 @@ public class MogoADASController implements IMogoADASController {
public void onAutopilotArriveLike(int carType) {
if (!mAdasOCHCallback.isEmpty()) {
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onArriveAt(new AutoPilotStationInfo(
cb.onArriveAt(new AutopilotStationInfo(
carType,
116.09888888,
39.999999)
@@ -623,7 +607,7 @@ public class MogoADASController implements IMogoADASController {
if (state == -1) {
if (!mAdasOCHCallback.isEmpty()) {
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onArriveAt(new AutoPilotStationInfo(1, 1d, 1d));
cb.onArriveAt(new AutopilotStationInfo(1, 1d, 1d));
}
}
} else {
@@ -642,7 +626,7 @@ public class MogoADASController implements IMogoADASController {
}
@Override
public void mockAdasRecognized(List<ADASRecognizedResult> recognizedResults) {
public void mockAdasRecognized(List<TrafficData> recognizedResults) {
if (!mMogoAdasRecognizedDataCallbacks.isEmpty()) {
for (IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks) {
if (callback == null) {

View File

@@ -1,66 +0,0 @@
package com.mogo.service.impl.adas;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.bean.AutopilotStatus;
import com.zhidao.support.adas.high.bean.AutopilotWayArrive;
import com.zhidao.support.adas.high.bean.CarLaneInfo;
import com.zhidao.support.adas.high.bean.CarStateInfo;
import com.zhidao.support.adas.high.bean.LightStatueInfo;
import com.zhidao.support.adas.high.bean.ObstaclesInfo;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
public
/**
* @author congtaowang
* @since 2020/10/22
*
* 适配ADAS 回调监听分发
*/
abstract class OnAdasListenerAdapter implements OnAdasListener {
@Override
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
}
@Override
public void onVideoSize(int width, int height) {
}
@Override
public void onRectData(RectInfo rectInfo) {
}
@Override
public void onCarStateData(CarStateInfo carStateInfo) {
}
@Override
public void onLightStateData(LightStatueInfo lightStatueInfo) {
}
@Override
public void onObstaclesInfo(ObstaclesInfo obstaclesInfo) {
}
@Override
public void onCarLaneInfo(CarLaneInfo carLaneInfo) {
}
@Override
public void autopilotStatus(AutopilotStatus autopilotStatus) {
}
@Override
public void autopilotArrive(AutopilotWayArrive autopilotWayArrive) {
}
}