diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt index 84bfc41564..740bb3c03d 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt @@ -43,6 +43,11 @@ class BusConst { const val LOOP_PERIOD_1S = 1 * 1000L const val LOOP_DELAY = 100L + // 下发给MEC轨迹信息间隔时间 10秒 + const val LOOP_PERIOD_10S = 10 * 1000L + // 尝试下发给MEC轨迹最多10次 + const val LOOP_SEND_TRAJ_TIMES = 10 + //起点UUID const val BUS_START_MAP_MAKER = "bus_start_map_maker"; //终点UUID diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index c75245dd8a..e6131730d5 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -43,7 +43,9 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.DataTypes; import com.mogo.module.common.view.OnPreventFastClickListener; import com.mogo.och.bus.R; +import com.mogo.och.bus.bean.BusRoutesResult; import com.mogo.och.bus.constant.BusConst; +import com.mogo.och.bus.model.BusOrderModel; import com.mogo.och.bus.util.BDRouteDataTestUtils; import com.mogo.och.bus.view.BusArcView; import com.mogo.och.bus.view.SlidePanelView; @@ -71,6 +73,7 @@ public abstract class BaseBusTabFragment public boolean isOperationStatus;//false-收车,true-出车 private FrameLayout flStationPanelContainer; private Group groupTestPanel; + private View busTestBar; private FrameLayout flSpeed; private BusArcView mouduleArc; private ImageView mUpgradeTipIv; @@ -106,6 +109,7 @@ public abstract class BaseBusTabFragment @Override protected void initViews() { groupTestPanel = findViewById(R.id.groupTestPanel); + busTestBar = findViewById(R.id.module_mogo_och_bus_test_bar); slidePanelView = findViewById(R.id.module_mogo_och_slide_panel); ctvAutopilotStatus = findViewById(R.id.module_mogo_och_autopilot_status); ctvAutopilotStatusIv = findViewById(R.id.bus_autopilot_btn_iv); @@ -510,4 +514,24 @@ public abstract class BaseBusTabFragment groupTestPanel.setVisibility(View.VISIBLE); } } + + /** + * bus testBar开关 + */ + public void showHideTestBar() { + if (busTestBar.getVisibility() == View.VISIBLE) { + busTestBar.setVisibility(View.GONE); + } else { + BusRoutesResult routesResult = BusOrderModel.getInstance().getBusRoutesResult(); + if (routesResult != null) { + TextView lineIdTV = findViewById(R.id.bus_test_bar_current_line_id); + TextView trajMd5TV = findViewById(R.id.bus_test_bar_current_traj_md5); + TextView stopMd5TV = findViewById(R.id.bus_test_bar_current_stop_md5); + lineIdTV.setText("lineId:" + (routesResult == null ? "" : String.valueOf(routesResult.getLineId()))); + trajMd5TV.setText("TMd5:" + (routesResult == null ? "" : routesResult.csvFileMd5)); + stopMd5TV.setText("SMd5:" + (routesResult == null ? "" : routesResult.txtFileMd5)); + } + busTestBar.setVisibility(View.VISIBLE); + } + } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index d9c488eb18..3e5997bd6d 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -84,6 +84,7 @@ public class BusFragment extends BaseBusTabFragment //debug下调用测试面板 mCurrentStationName.setOnLongClickListener(v -> { debugTestBar(); + showHideTestBar(); return true; }); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index f82ab6af69..dfefe1f3bf 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -23,12 +23,9 @@ import com.mogo.eagle.core.data.BaseData; import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener; -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -51,6 +48,7 @@ import com.mogo.och.bus.net.BusServiceManager; import com.mogo.och.bus.net.IBusServiceCallback; import com.mogo.och.bus.presenter.BusModelLoopManager; import com.mogo.och.bus.util.BusAnalyticsManager; +import com.mogo.och.bus.util.BusTrajectoryManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.service.statusmanager.IMogoStatusChangedListener; @@ -612,6 +610,7 @@ public class BusOrderModel { mIsWorking = !mIsWorking; carOperationStatusCallback.changeOperationStatus(isWorking()); startOrStopOrderLoop(mIsWorking); + BusTrajectoryManager.getInstance().stopTrajReqLoop(); } @Override public void onFail(String failMsg) { @@ -745,6 +744,9 @@ public class BusOrderModel { if ( currentStation.isLeaving() && slidePannelHideCallback != null) { slidePannelHideCallback.hideSlidePanel(); } + + //需放在currentStationIndex赋值之后 + BusTrajectoryManager.getInstance().syncTrajectoryInfo(); } /** @@ -922,4 +924,12 @@ public class BusOrderModel { BusAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestart, send, currentStation.getName(), nextStation.getName(), currentLineId); } + + public BusRoutesResult getBusRoutesResult() { + return busRoutesResult; + } + + public int getCurrentStationIndex() { + return currentStationIndex; + } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index b3bbe5a29c..50d19341f9 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -23,6 +23,7 @@ import com.mogo.och.bus.callback.IRefreshBusStationsCallback; import com.mogo.och.bus.callback.ISlidePannelHideCallback; import com.mogo.och.bus.fragment.BusFragment; import com.mogo.och.bus.model.BusOrderModel; +import com.mogo.och.bus.util.BusTrajectoryManager; import org.jetbrains.annotations.NotNull; @@ -276,7 +277,7 @@ public class BusPresenter extends Presenter @Override public void onAutopilotGuardian(MogoReportMsg.MogoReportMessage guardianInfo) { - + BusTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo); } @Override diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusTrajectoryManager.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusTrajectoryManager.java new file mode 100644 index 0000000000..c10ebca345 --- /dev/null +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusTrajectoryManager.java @@ -0,0 +1,186 @@ +package com.mogo.och.bus.util; + +import androidx.annotation.Nullable; + +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.util.GsonUtils; +import com.mogo.och.bus.bean.BusRoutesResult; +import com.mogo.och.bus.constant.BusConst; +import com.mogo.och.bus.model.BusOrderModel; + +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; +import mogo_msg.MogoReportMsg; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; + +/** + * Bus轨迹管理:给MEC下发用于轨迹下载的信息 + * Created on 2022/6/23 + */ +public class BusTrajectoryManager { + private static final String TAG = BusTrajectoryManager.class.getSimpleName(); + + private static final class SingletonHolder { + private static final BusTrajectoryManager INSTANCE = new BusTrajectoryManager(); + } + + public static BusTrajectoryManager getInstance() { + return BusTrajectoryManager.SingletonHolder.INSTANCE; + } + + private AutopilotControlParameters.AutoPilotLine mAutoPilotLine = null; + private Disposable mSendReqDisposable = null; + + public BusTrajectoryManager() { + mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine( + -1, "", "", "", "", + 0, ""); + } + + /** + * 同步Bus路线信息 + */ + public void syncTrajectoryInfo() { + BusRoutesResult routesResult = BusOrderModel.getInstance().getBusRoutesResult(); + if (routesResult != null + && BusOrderModel.getInstance().getCurrentStationIndex() == 0 + && !BusOrderModel.getInstance().isGoingToNextStation()) { + CallerLogger.INSTANCE.d(M_BUS + TAG, "syncTrajectoryInfo() start."); + startTrajReqLoop(); + } else { + // 无路线信息or当前未在始发站 + CallerLogger.INSTANCE.d(M_BUS + TAG, "syncTrajectoryInfo() stop."); + stopTrajReqLoop(); + } + } + + /** + * 接口MEC反馈的常规信息(MAP v2.5.0新增轨迹相关信息) + * @param guardianInfo + */ + public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) { + if (guardianInfo == null || !guardianInfo.hasCode()) return; + if ("ISYS_INIT_TRAJECTORY_START".equals(guardianInfo.getCode())) { + // 1. 轨迹管理_轨迹开始下载(本地已有对应轨迹也触发) + CallerLogger.INSTANCE.d(M_BUS + TAG, "onAutopilotGuardian() 轨迹开始下载"); + stopTrajReqLoop(); + } else if ("ISYS_INIT_TRAJECTORY_SUCCESS".equals(guardianInfo.getCode())) { + // 2. 轨迹管理_轨迹下载成功(本地已有对应轨迹也触发) + CallerLogger.INSTANCE.d(M_BUS + TAG, "onAutopilotGuardian() 轨迹下载成功"); + stopTrajReqLoop(); + } else if ("ISYS_INIT_TRAJECTORY_FAILURE".equals(guardianInfo.getCode())) { + // 3. 轨迹管理_轨迹下载失败,本地无对应轨迹 + CallerLogger.INSTANCE.d(M_BUS + TAG, "onAutopilotGuardian() " + + "轨迹下载失败,本地无对应轨迹"); + } else if ("ISYS_INIT_TRAJECTORY_WARNING".equals(guardianInfo.getCode())) { + // 4. 轨迹管理_轨迹下载失败,本地有对应轨迹,认为成功 + CallerLogger.INSTANCE.d(M_BUS + TAG, "onAutopilotGuardian() " + + "轨迹下载失败,本地有对应轨迹,认为成功"); + } else if ("ISYS_INIT_TRAJECTORY_TIMEOUT".equals(guardianInfo.getCode())) { + // 5. 轨迹管理_轨迹下载超时 + CallerLogger.INSTANCE.d(M_BUS + TAG, "onAutopilotGuardian() 轨迹下载超时"); + } + } + + private void setupAutoPilotLine() { + BusRoutesResult routesResult = BusOrderModel.getInstance().getBusRoutesResult(); + if (routesResult == null) { + CallerLogger.INSTANCE.e(M_BUS + TAG, + "setupAutoPilotLine(): routesResult is null."); + return; + } else { + if (mAutoPilotLine == null) { + mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(routesResult.getLineId(), + routesResult.csvFileUrl, routesResult.csvFileMd5, + routesResult.txtFileUrl, routesResult.txtFileMd5, + routesResult.contrailSaveTime, routesResult.carModel); + } else { + mAutoPilotLine.setLineId(routesResult.getLineId()); + mAutoPilotLine.setTrajUrl(routesResult.csvFileUrl); + mAutoPilotLine.setTrajMd5(routesResult.csvFileMd5); + mAutoPilotLine.setStopUrl(routesResult.txtFileUrl); + mAutoPilotLine.setStopMd5(routesResult.txtFileMd5); + mAutoPilotLine.setTimestamp(routesResult.contrailSaveTime); + mAutoPilotLine.setVehicleModel(routesResult.carModel); + } + } + } + + private void clearAutoPilotLine() { + if (mAutoPilotLine == null) return; + mAutoPilotLine.setLineId(-1); + mAutoPilotLine.setTrajUrl(""); + mAutoPilotLine.setTrajMd5(""); + mAutoPilotLine.setStopUrl(""); + mAutoPilotLine.setStopMd5(""); + mAutoPilotLine.setTimestamp(0); + mAutoPilotLine.setVehicleModel(""); + } + + private void startTrajReqLoop() { + if (mSendReqDisposable != null && !mSendReqDisposable.isDisposed()) { + return; + } + CallerLogger.INSTANCE.d(M_BUS + TAG, "startTrajReqLoop()"); + setupAutoPilotLine(); + mSendReqDisposable = Observable.interval(BusConst.LOOP_DELAY, + BusConst.LOOP_PERIOD_10S, TimeUnit.MILLISECONDS) + .map((aLong -> aLong + 1)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(aLong -> { + if (aLong > BusConst.LOOP_SEND_TRAJ_TIMES) { + stopTrajReqLoop(); + return; + } + CallerLogger.INSTANCE.d(M_BUS + TAG, "loop sendTrajectoryReq: " + aLong); + sendTrajectoryReq(); + }); + } + + public void stopTrajReqLoop() { + if (mSendReqDisposable != null) { + CallerLogger.INSTANCE.d(M_BUS + TAG, "stopTrajReqLoop()"); + mSendReqDisposable.dispose(); + mSendReqDisposable = null; + clearAutoPilotLine(); + } + } + + private void sendTrajectoryReq() { + if (mAutoPilotLine == null) { + CallerLogger.INSTANCE.e(M_BUS + TAG, "sendTrajectoryReq(): mAutoPilotLine is null!!!"); + return; + } + + // TODO: 2022/6/24 + // test1 +// mAutoPilotLine.setLineId(148); +// mAutoPilotLine.setTrajUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/e27c20c2da32481021d934c3ef084536/traj_148.csv"); +// mAutoPilotLine.setTrajMd5("e27c20c2da32481021d934c3ef084536"); +// mAutoPilotLine.setStopUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/6224c9dd2c0e2bd990c6482c0464de45/stop_148.txt"); +// mAutoPilotLine.setStopMd5("6224c9dd2c0e2bd990c6482c0464de45"); +// mAutoPilotLine.setTimestamp(1654596000000L); //20220607 18:00 +// mAutoPilotLine.setVehicleModel("红旗H9"); + + // test2 +// mAutoPilotLine.setLineId(148); +// mAutoPilotLine.setTrajUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/8654497cf918be461a59c7ad8e22920d/traj_148.csv"); +// mAutoPilotLine.setTrajMd5("8654497cf918be461a59c7ad8e22920d"); +// mAutoPilotLine.setStopUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/1bb098b244922649bf3e7bada0d3950f/stop_148.txt"); +// mAutoPilotLine.setStopMd5("1bb098b244922649bf3e7bada0d3950f"); +// mAutoPilotLine.setTimestamp(1654761600000L); //20220609 16:00 +// mAutoPilotLine.setVehicleModel("红旗H9"); + + CallerAutoPilotManager.INSTANCE.sendTrajectoryDownloadReq(mAutoPilotLine); + CallerLogger.INSTANCE.d(M_BUS + TAG, "sendTrajectoryReq(): " + + GsonUtils.toJson(mAutoPilotLine)); + } +} diff --git a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml index 6e5d9df0c7..461842718e 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml @@ -70,6 +70,16 @@ app:layout_goneMarginTop="@dimen/module_mogo_och_station_panel_container_margin_top_no_call" tools:visibility="visible" /> + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/sfv/FrameSurfaceView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/sfv/FrameSurfaceView.java index 1503e13f07..08b77de55c 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/sfv/FrameSurfaceView.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/sfv/FrameSurfaceView.java @@ -394,7 +394,7 @@ public class FrameSurfaceView extends BaseSurfaceView { public void run() { decodedBitmapByReuse(bitmapIds.get(index), options); index++; - if (index < bitmapIds.size()) { + if (index < bitmapIds.size() && null != handler) { handler.post(this); } else { index = 0; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java index c26eec8f05..0ea164e3bf 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java @@ -50,6 +50,13 @@ public class TaxiPassengerOrderQueryRespBean extends BaseData { //订单多少乘客 public String passengerNum; + public long lineId = -1; //路线id,默认-1 + public String csvFileUrl = ""; //轨迹文件下载的cos url,默认“” + public String csvFileMd5 = ""; //轨迹文件md5,默认“” + public String txtFileUrl = ""; //打点文件下载的cos url,默认“” + public String txtFileMd5 = ""; //轨迹文件md5,默认“” + public long contrailSaveTime; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 + public String carModel = ""; //[optional] 车型号(如红旗H9),默认“”,暂不加入校验逻辑、用于人工排查问题 // !!!接口中暂无此字段,仅用于本地实现逻辑使用:起始站目的站距离km public double travelDistance; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 038e27f978..120bf0fae9 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -869,6 +869,15 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback parameters.endName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.endSiteAddr); // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM) parameters.startLatLon = new AutopilotControlParameters.AutoPilotLonLat(startWgsLat, startWgsLon); parameters.endLatLon = new AutopilotControlParameters.AutoPilotLonLat(endWgsLat, endWgsLon); + + if (parameters.autoPilotLine == null) { + parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine( + mCurrentOCHOrder.lineId, + mCurrentOCHOrder.csvFileUrl, mCurrentOCHOrder.csvFileMd5, + mCurrentOCHOrder.txtFileUrl, mCurrentOCHOrder.txtFileMd5, + mCurrentOCHOrder.contrailSaveTime, mCurrentOCHOrder.carModel); + } + CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "start autopilot with parameter: %s" , GsonUtil.jsonFromObject(parameters) diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java index 3fdf208e86..f052794c40 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java @@ -190,7 +190,7 @@ public class TaxiPassengerServiceManager { ,TaxiPassengerServiceCallback callback){ mOCHTaxiServiceApi.startServicePilotDone(MoGoAiCloudClientConfig.getInstance().getServiceAppId() ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerStartReqBean(MoGoAiCloudClientConfig.getInstance().getSn() + ,new TaxiPassengerStartReqBean(getDriverAppSn() ,orderNo,loc)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index ced41770c1..7522010791 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -188,8 +188,8 @@ public class BaseTaxiPassengerPresenter extends Presenter{ - mView.showOrHideServingOrderFragment(true); mView.showOrHideStartAutopilotView(false,false); + mView.showOrHideServingOrderFragment(true); }); TaxiPassengerModel.getInstance().startOrStopReadyToAutopilotoop(false); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index 9627660c52..82b623e706 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -1,10 +1,10 @@ package com.mogo.och.taxi.passenger.ui; -import android.animation.ObjectAnimator; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; + import android.os.Handler; import android.os.Looper; import android.view.View; -import android.view.animation.LinearInterpolator; import android.widget.FrameLayout; import android.widget.ImageView; @@ -17,6 +17,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerSmpManager; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.OverlayViewUtils; import com.mogo.map.MogoMapUIController; import com.mogo.map.MogoMarkerManager; @@ -184,9 +185,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment - + android:background="@drawable/taxi_p_passenger_start_panel_bg" + tools:ignore="MissingDefaultResource"> + android:id="@+id/taxi_p_autopilot_starting" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - + + - + app:layout_constraintRight_toRightOf="parent" /> + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values-sw320dp/dimens.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values-sw320dp/dimens.xml index 5b26b8687b..e7c921b084 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values-sw320dp/dimens.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values-sw320dp/dimens.xml @@ -63,6 +63,6 @@ 28px 52px - 1000px - 500px + 520px + 150px \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values-xhdpi-2560x1440/dimens.xml index b1e2c1dd14..5b3282e466 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -126,7 +126,7 @@ 28px 52px - 1000px - 500px + 520px + 150px \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/dimens.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/dimens.xml index a453e6d3b3..8218eb8018 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/dimens.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/dimens.xml @@ -121,6 +121,6 @@ 28px 52px - 1000px - 500px + 520px + 150px \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt index cb619918eb..845e5bb961 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt @@ -38,6 +38,11 @@ class TaxiConst { const val LOOP_PERIOD_1S = 1 * 1000L const val LOOP_DELAY = 100L + // 下发给MEC轨迹信息间隔时间 10秒 + const val LOOP_PERIOD_10S = 10 * 1000L + // 尝试下发给MEC轨迹最多10次 + const val LOOP_SEND_TRAJ_TIMES = 10 + // 订单信息 const val SP_KEY_OCH_TAXI_ORDER = "SP_KEY_OCH_TAXI_ORDER" diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index ef85f1b00f..f267c8125d 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -63,6 +63,7 @@ import com.mogo.och.taxi.network.TaxiServiceManager; import com.mogo.och.taxi.utils.TaxiAnalyticsManager; import com.mogo.och.taxi.utils.OrderUtil; import com.mogo.aicloud.services.socket.IMogoLifecycleListener; +import com.mogo.och.taxi.utils.TaxiTrajectoryManager; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; @@ -262,7 +263,6 @@ public class TaxiModel { //更新view CallerLogger.INSTANCE.d(M_TAXI + TAG, "changeCarStatus:" + mOCHCarStatus); startOrStopOrderLoop(mOCHCarStatus == 1); - queryAutopilotStatus(mOCHCarStatus == 1); String role = ""; if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) { role = TaxiConst.DEMO_USER; @@ -822,6 +822,7 @@ public class TaxiModel { return; } mCurrentOCHOrder = data; + TaxiTrajectoryManager.getInstance().syncTrajectoryInfo(); SharedPrefsMgr.getInstance(mContext).putString(TaxiConst.SP_KEY_OCH_TAXI_ORDER, GsonUtil.jsonFromObject(data)); if (FunctionBuildConfig.isDemoMode @@ -835,6 +836,7 @@ public class TaxiModel { //清除订单信息 public void clearCurrentOCHOrder() { mCurrentOCHOrder = null; + TaxiTrajectoryManager.getInstance().syncTrajectoryInfo(); SharedPrefsMgr.getInstance(mContext).remove(TaxiConst.SP_KEY_OCH_TAXI_ORDER); if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 取消或订单已完成时,置false @@ -1064,7 +1066,7 @@ public class TaxiModel { @Override public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) { - + TaxiTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo); } @Override diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index 58b2927aef..58d80c572c 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -205,9 +205,14 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onCurrentOrderStatusChanged(OrderQueryRespBean.Result order) { CallerLogger.INSTANCE.d(M_TAXI + TAG,"order = "+order.toString()); + if (TaxiOrderStatusEnum.UserArriveAtStart.getCode() == order.orderStatus){ + TaxiModel.getInstance().queryAutopilotStatus(true); + } + if (TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus){ TaxiModel.getInstance().startDynamicCalculateRouteInfo(); } + if (TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus || TaxiOrderStatusEnum.Cancel.getCode() == order.orderStatus || TaxiOrderStatusEnum.JourneyCompleted.getCode() == order.orderStatus){ diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java index 47de505c5e..093b10cccf 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java @@ -379,13 +379,15 @@ public class TaxiFragment extends BaseTaxiTabFragment= TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) { + CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() stop."); + stopTrajReqLoop(); + } else { + CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() start."); + startTrajReqLoop(); + } + } + + /** + * 接口MEC反馈的常规信息(MAP v2.5.0新增轨迹相关信息) + * @param guardianInfo + */ + public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) { + if (guardianInfo == null || !guardianInfo.hasCode()) return; + if ("ISYS_INIT_TRAJECTORY_START".equals(guardianInfo.getCode())) { + // 1. 轨迹管理_轨迹开始下载(本地已有对应轨迹也触发) + CallerLogger.INSTANCE.d(M_TAXI + TAG, "onAutopilotGuardian() 轨迹开始下载"); + stopTrajReqLoop(); + } else if ("ISYS_INIT_TRAJECTORY_SUCCESS".equals(guardianInfo.getCode())) { + // 2. 轨迹管理_轨迹下载成功(本地已有对应轨迹也触发) + CallerLogger.INSTANCE.d(M_TAXI + TAG, "onAutopilotGuardian() 轨迹下载成功"); + stopTrajReqLoop(); + } else if ("ISYS_INIT_TRAJECTORY_FAILURE".equals(guardianInfo.getCode())) { + // 3. 轨迹管理_轨迹下载失败,本地无对应轨迹 + CallerLogger.INSTANCE.d(M_TAXI + TAG, "onAutopilotGuardian() " + + "轨迹下载失败,本地无对应轨迹"); + } else if ("ISYS_INIT_TRAJECTORY_WARNING".equals(guardianInfo.getCode())) { + // 4. 轨迹管理_轨迹下载失败,本地有对应轨迹,认为成功 + CallerLogger.INSTANCE.d(M_TAXI + TAG, "onAutopilotGuardian() " + + "轨迹下载失败,本地有对应轨迹,认为成功"); + } else if ("ISYS_INIT_TRAJECTORY_TIMEOUT".equals(guardianInfo.getCode())) { + // 5. 轨迹管理_轨迹下载超时 + CallerLogger.INSTANCE.d(M_TAXI + TAG, "onAutopilotGuardian() 轨迹下载超时"); + } + } + + private void setupAutoPilotLine() { + OrderQueryRespBean.Result order = TaxiModel.getInstance().getCurrentOCHOrder(); + if (order == null) { + CallerLogger.INSTANCE.e(M_TAXI + TAG, + "setupAutoPilotLine(): orderInfo is null."); + return; + } else { + if (mAutoPilotLine == null) { + mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(order.lineId, + order.csvFileUrl, order.csvFileMd5, order.txtFileUrl, order.txtFileMd5, + order.contrailSaveTime, order.carModel); + } else { + mAutoPilotLine.setLineId(order.lineId); + mAutoPilotLine.setTrajUrl(order.csvFileUrl); + mAutoPilotLine.setTrajMd5(order.csvFileMd5); + mAutoPilotLine.setStopUrl(order.txtFileUrl); + mAutoPilotLine.setStopMd5(order.txtFileMd5); + mAutoPilotLine.setTimestamp(order.contrailSaveTime); + mAutoPilotLine.setVehicleModel(order.carModel); + } + } + } + + private void clearAutoPilotLine() { + if (mAutoPilotLine == null) return; + mAutoPilotLine.setLineId(-1); + mAutoPilotLine.setTrajUrl(""); + mAutoPilotLine.setTrajMd5(""); + mAutoPilotLine.setStopUrl(""); + mAutoPilotLine.setStopMd5(""); + mAutoPilotLine.setTimestamp(0); + mAutoPilotLine.setVehicleModel(""); + } + + private void startTrajReqLoop() { + if (mSendReqDisposable != null && !mSendReqDisposable.isDisposed()) { + return; + } + CallerLogger.INSTANCE.d(M_TAXI + TAG, "startTrajReqLoop()"); + setupAutoPilotLine(); + mSendReqDisposable = Observable.interval(TaxiConst.LOOP_DELAY, + TaxiConst.LOOP_PERIOD_10S, TimeUnit.MILLISECONDS) + .map((aLong -> aLong + 1)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(aLong -> { + if (aLong > TaxiConst.LOOP_SEND_TRAJ_TIMES) { + stopTrajReqLoop(); + return; + } + CallerLogger.INSTANCE.d(M_TAXI + TAG, "loop sendTrajectoryReq: " + aLong); + sendTrajectoryReq(); + }); + } + + private void stopTrajReqLoop() { + if (mSendReqDisposable != null) { + CallerLogger.INSTANCE.d(M_TAXI + TAG, "stopTrajReqLoop()"); + mSendReqDisposable.dispose(); + mSendReqDisposable = null; + clearAutoPilotLine(); + } + } + + private void sendTrajectoryReq() { + if (mAutoPilotLine == null) { + CallerLogger.INSTANCE.e(M_TAXI + TAG, "sendTrajectoryReq(): mAutoPilotLine is null!!!"); + return; + } + + // TODO: 2022/6/24 + // test1 +// mAutoPilotLine.setLineId(148); +// mAutoPilotLine.setTrajUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/e27c20c2da32481021d934c3ef084536/traj_148.csv"); +// mAutoPilotLine.setTrajMd5("e27c20c2da32481021d934c3ef084536"); +// mAutoPilotLine.setStopUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/6224c9dd2c0e2bd990c6482c0464de45/stop_148.txt"); +// mAutoPilotLine.setStopMd5("6224c9dd2c0e2bd990c6482c0464de45"); +// mAutoPilotLine.setTimestamp(1654596000000L); //20220607 18:00 +// mAutoPilotLine.setVehicleModel("红旗H9"); + + // test2 +// mAutoPilotLine.setLineId(148); +// mAutoPilotLine.setTrajUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/8654497cf918be461a59c7ad8e22920d/traj_148.csv"); +// mAutoPilotLine.setTrajMd5("8654497cf918be461a59c7ad8e22920d"); +// mAutoPilotLine.setStopUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/1bb098b244922649bf3e7bada0d3950f/stop_148.txt"); +// mAutoPilotLine.setStopMd5("1bb098b244922649bf3e7bada0d3950f"); +// mAutoPilotLine.setTimestamp(1654761600000L); //20220609 16:00 +// mAutoPilotLine.setVehicleModel("红旗H9"); + + CallerAutoPilotManager.INSTANCE.sendTrajectoryDownloadReq(mAutoPilotLine); + CallerLogger.INSTANCE.d(M_TAXI + TAG, "sendTrajectoryReq(): " + + GsonUtils.toJson(mAutoPilotLine)); + } +} diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml index 8b5031b651..7e797f8f4d 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml @@ -29,13 +29,19 @@ android:textColor="@android:color/white"/> + + diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 42b4d0f7fc..22966ce87b 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -43,6 +43,8 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.TextFormat; import com.mogo.telematic.MogoProtocolMsg; import com.mogo.telematic.NSDNettyManager; import com.mogo.telematic.client.listener.NettyClientListener; @@ -854,6 +856,12 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas @Override public void onPointCloud(byte[] pointCloud) { +// try { +// MogoPointCloudOuterClass.MogoPointCloud bean = MogoPointCloudOuterClass.MogoPointCloud.parseFrom(pointCloud); +// Log.i("ddd","MogoPointCloud="+ TextFormat.printer().escapingNonAscii(false).printToString(bean)); +// } catch (InvalidProtocolBufferException e) { +// e.printStackTrace(); +// } OriginalPointCloudData base = new OriginalPointCloudData(pointCloud); DataDistribution.getInstance().addData(base); } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapPointCloudSubscriber.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapPointCloudSubscriber.kt index 60561f01d9..fc2546fd69 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapPointCloudSubscriber.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapPointCloudSubscriber.kt @@ -46,7 +46,6 @@ class MapPointCloudSubscriber private constructor() : IMoGoSubscriber, IMoGoAuto isDrawPointCloud = true PointCloudHelper.setIsDrawPointCloud(true)//打开点云绘制 } - PointCloudHelper.setIsDrawPointCloud(true)//打开点云绘制 /** diff --git a/gradle.properties b/gradle.properties index 5f4228fc7f..26b0016f00 100644 --- a/gradle.properties +++ b/gradle.properties @@ -82,7 +82,7 @@ MOGO_LOCATION_VERSION=1.4.3.6 MOGO_TELEMATIC_VERSION=1.4.3.6 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.3.0.2 +MAP_SDK_VERSION=2.3.0.3 MAP_SDK_OPERATION_VERSION=1.0.13 # websocket WEBSOCKET_VERSION=1.1.7 @@ -164,7 +164,7 @@ MOGO_V2X_SDK_VERSION=1.4.3.6 # ADAS LIB Maven配置(用于地图部门测试使用,鹰眼项目中使用本地依赖) # ADAS_LIB_GROUP=com.zhidao.support.adas ADAS_LIB_POM_ARTIFACT_ID=high -ADAS_LIB_CHILD_VERSION=.0 +ADAS_LIB_CHILD_VERSION=.1 ADAS_DATA_LIB_GROUP=com.zhjt.mogo.adas.data ADAS_DATA_LIB_POM_ARTIFACT_ID=adas-data diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 5f12e90f58..9ef634f638 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -308,11 +308,14 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec */ @Override public void onDispatchRaw(String threadName, RawData raw) { - //分发点云原始数据 - if (THREAD_NAME_DISPATCH_POINT_CLOUD.equals(threadName)) { - mAdasListener.onPointCloud(raw.originalData.toByteArray()); - } else { - try { + try { + //分发点云原始数据 + if (THREAD_NAME_DISPATCH_POINT_CLOUD.equals(threadName)) { + int len = raw.getPackageLengthValue() - raw.getOffsetValue(); + byte[] bytes = new byte[len]; + System.arraycopy(raw.originalData.toByteArray(), raw.getOffsetValue(), bytes, 0, len); + mAdasListener.onPointCloud(bytes); + } else { if (rawUnpack != null) { if (raw.getProtocolStatus() == ProtocolStatus.SUCCEED) { MessagePad.Header header = raw.getHeader(); @@ -327,10 +330,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec callError(raw.getProtocolStatus(), raw.originalData.toByteArray()); } } - } catch (Exception e) { - callError(ProtocolStatus.BUSINESS_DATA_PARSE_FAILED, raw.originalData.toByteArray()); - CupidLogUtils.e(TAG, "原始数据:" + ByteUtil.byteArrToHex(raw.originalData.toByteArray()), e); } + } catch (Exception e) { + callError(ProtocolStatus.BUSINESS_DATA_PARSE_FAILED, raw.originalData.toByteArray()); + CupidLogUtils.e(TAG, "原始数据:" + ByteUtil.byteArrToHex(raw.originalData.toByteArray()), e); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index 15e4327228..078ee82b9f 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -100,7 +100,7 @@ public interface OnAdasListener { /** * 透传的点云数据 * - * @param pointCloud 原始数据 包括Header+pointCloud + * @param pointCloud 原始数据 只包含PointCloud数据 */ void onPointCloud(byte[] pointCloud);