diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt index be0509fefd..3f705b6cc8 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt @@ -20,5 +20,6 @@ data class UnmannedLogoutReqBean(var sn: String, var loc: GcjLatLon?) data class StartServiceReqBean(var sn: String, var gcjLat: Double, var gcjLon: Double) data class StartServiceRespBean(var data: Result?): BaseData(){ - data class Result(var siteId: Long,var siteName: String,var gcjLat: Double, var gcjLon: Double) + data class Result(var siteId: Long,var siteName: String,var gcjLat: Double, var gcjLon: Double, + var wgs84Lon: Double, var wgs84Lat: Double ) } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt index 5cbdab749e..79fa8bc52f 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt @@ -24,6 +24,7 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.map.ICommonNaviChangedCallback +import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.wigets.OCHCommitDialog import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail @@ -207,6 +208,14 @@ class TaxiCurrentTaskFragment : BaseFragment(), endStationName.text = driveToNearestStationTask.siteName updateStartAndEndStationPointByStatus(true) + setOrRemoveMapMaker( + true, + TAXI_END_MAP_MAKER, + driveToNearestStationTask.wgs84Lat, + driveToNearestStationTask.wgs84Lon, + R.raw.end_marker + ) + // 使用高德获取导航数据 startNaviToStation( false, @@ -325,6 +334,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), TaskTypeEnum.VirtualTask.code -> {// 演练任务 if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) { updateOrderUI(order) + VoiceNotice.showNotice("已为您接到订单") return } if (startSite == null || endSite == null) return @@ -344,8 +354,9 @@ class TaxiCurrentTaskFragment : BaseFragment(), } TaskTypeEnum.None.code -> { - if (order != null) { + if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) { updateOrderUI(order) + VoiceNotice.showNotice("已为您接到订单") } } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index 5d417685ce..4268a3eb43 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -218,7 +218,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } override fun onOrderCancel() { - VoiceNotice.showNotice("订单已经取消") + VoiceNotice.showNotice("已取消行程") // updateTaskAndOrderUi(null) } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index f00befbff5..db2017cf12 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -53,6 +53,7 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.setStationPoint import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations +import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.bean.PrepareTaskRespBean import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean @@ -528,7 +529,7 @@ object TaxiTaskModel { ) if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { // 15米内到站 DebugView.printInfoMsg("[高德定位围栏] 触发围栏,任务类型:DriveToNearestStationTask,围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米") - submitArriveSite(virtualTask.siteId, true) + submitArriveSite(virtualTask.siteId, true, isArrivedNearestStation = true) } } @@ -565,7 +566,8 @@ object TaxiTaskModel { * @siteId : 站点id * @isArriveAtEndSite: true 终点, false 起点 */ - fun submitArriveSite(siteId: Long, isArriveAtEndSite: Boolean) { + fun submitArriveSite(siteId: Long, isArriveAtEndSite: Boolean, + isArrivedNearestStation : Boolean = false) { DebugView.printInfoMsg("[上报ArriveSite] siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") i(TAG, message = "submitArriveSite: siteId=$siteId isArriveAtEndSite=$isArriveAtEndSite") TaxiTaskWithOrderServiceManager.arriveSite( @@ -577,6 +579,10 @@ object TaxiTaskModel { DebugView.printInfoMsg("[上报ArriveSite] success siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") d(TAG, "submitArriveSite-onSuccess data=" + GsonUtil.jsonFromObject(data)) mDriveToNearestStationTask = null + if (isArrivedNearestStation){// 播报提醒 + VoiceNotice.showNotice("已到达出车点") + } + if (isArriveAtEndSite) { updateLocalCalculateStation() //到站后不再调用取消自驾. 原因是取消自驾,D档位会溜车 diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_no_data_common_view.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_no_data_common_view.xml index 908b36193b..b5ec8cbb9d 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_no_data_common_view.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_no_data_common_view.xml @@ -25,4 +25,16 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/no_order_data_iv" android:text="暂无服务订单"/> + + \ No newline at end of file diff --git a/config.gradle b/config.gradle index 605fd0bba3..407002414d 100644 --- a/config.gradle +++ b/config.gradle @@ -215,7 +215,7 @@ ext { btrace : "com.bytedance.btrace:rhea-core:2.0.0", mofang_runtime : "com.mogo.eagle.core.mofang:runtime:2.0.6", - log_runtime : "com.mogo.eagle.core.log.record:runtime:1.0.12", + log_runtime : "com.mogo.eagle.core.log.record:runtime:1.0.15", // 安全证书 passport_secret : "com.zhidaoauto:sdk-java:1.0.5-SNAPSHOT", diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index cc0a7dabf4..c7e3d6b130 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -7,6 +7,7 @@ import bag_manager.BagManagerOuterClass import chassis.SpecialVehicleTaskCmdOuterClass import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.debug.DebugConfig import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.toAutoPilotLine import com.mogo.eagle.core.data.autopilot.toRouteInfo @@ -96,14 +97,15 @@ class MoGoAutopilotControlProvider : override fun init(context: Context) { CallerLogger.i("$M_D_C$TAG", "初始化工控机连接……") mContext = context - // 初始化ADAS 域控制器 - CupidLogUtils.setEnableLog(false) - msgHandler = TeleMsgHandler() - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {// 司机 - // 注册地图采集功能 - CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this) + runCatching { + // 初始化ADAS 域控制器 + CupidLogUtils.setEnableLog(false) + msgHandler = TeleMsgHandler() + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {// 司机 + // 注册地图采集功能 + CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this) - // 配置默认关闭的连接topic + // 配置默认关闭的连接topic // val messageTypes: MutableSet = HashSet() // messageTypes.add(MessageType.TYPE_RECEIVE_POINT_CLOUD) // val subscribeInterfaceOptions = SubscribeInterfaceOptions.newBuilder() @@ -111,125 +113,131 @@ class MoGoAutopilotControlProvider : // .setType(Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE) // .setMessageTypes(messageTypes).build() - // "192.168.1.102" - val options = AdasOptions.Builder() - .setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION) - .setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext)) - .setClient(false) - .setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear) + // "192.168.1.102" + val options = AdasOptions.Builder() + .setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION) + .setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext)) + .setClient(false) + .setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear) // .setSubscribeInterfaceOptions(subscribeInterfaceOptions)// - .build() + .build() - AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl()) - //////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// - // 监听ADAS-SDK获取到的工控机数据 - AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) - NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object : - NettyServerListener { - override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) { - msgHandler.handleMsgFromClient(msg, channel) - } - - override fun onStartServer() { - ToastUtils.showShort("司机端服务启动成功!") - if (timer == null) { - timer = Timer() + AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl()) + //////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// + // 监听ADAS-SDK获取到的工控机数据 + AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) + NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object : + NettyServerListener { + override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) { + msgHandler.handleMsgFromClient(msg, channel) } - // 10s同步一次数据到乘客屏 - timer!!.schedule(object : TimerTask() { - override fun run() { - // 同步是否开启美化模式 - setDemoMode(FunctionBuildConfig.isDemoMode) - setIgnoreConditionDraw(FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) - msgHandler.synMsgToAllClients() + + override fun onStartServer() { + ToastUtils.showShort("司机端服务启动成功!") + if (timer == null) { + timer = Timer() } - }, 1000, 10000) - invokeNettyConnResult("司机端服务启动成功!") - CallerTelematicStatusListenerManager.invokeServerStatusChanged(true) - } - - override fun onStopServer() { - ToastUtils.showLong("司机端服务停止!") - timer?.cancel() - timer = null - invokeNettyConnResult("司机端服务停止!") - CallerTelematicStatusListenerManager.invokeServerStatusChanged(false) - } - - override fun onChannelConnect(channel: Channel?) { - msgHandler.handleClientConn2Server(channel) - } - - override fun onChannelDisConnect(channel: Channel?) { - CallerLogger.d("$M_D_C$TAG", "onChannelDisConnect") - } - - override fun onReceiveClientSign(channel: Channel?, sn: String?) { - sn?.let { - invokeNettyConnResult("连接成功的乘客屏sn为:$it") + // 10s同步一次数据到乘客屏 + timer!!.schedule(object : TimerTask() { + override fun run() { + // 同步是否开启美化模式 + setDemoMode(FunctionBuildConfig.isDemoMode) + setIgnoreConditionDraw(FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) + msgHandler.synMsgToAllClients() + } + }, 1000, 10000) + invokeNettyConnResult("司机端服务启动成功!") + CallerTelematicStatusListenerManager.invokeServerStatusChanged(true) } - } - }, MoGoAiCloudClientConfig.getInstance().sn) - } else { - NSDNettyManager.getInstance() - .searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, - AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode), - object : NettyClientListener { - override fun onMessageResponseClient( - msg: MogoProtocolMsg?, - sign: String?, - channel: Channel - ) { - // 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端 - msgHandler.handleMsgFromServer(msg, channel) - } - override fun onClientStatusConnectChanged( - statusCode: Int, - sign: String?, - channel: Channel - ) { - msgHandler.handleClientConnStatus(statusCode, sign, channel) - } - }) - } - msgHandler.setListener(object : EventListener { - override fun connectDevice(isSupportMulti: Boolean) { - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - if (!isInit) { - isInit = true - // 转发工控机数据给乘客屏 - listenDeviceData() + override fun onStopServer() { + ToastUtils.showLong("司机端服务停止!") + timer?.cancel() + timer = null + invokeNettyConnResult("司机端服务停止!") + CallerTelematicStatusListenerManager.invokeServerStatusChanged(false) } - } else { - if (!isInit) { - isInit = true - UiThreadHandler.post { - if (isSupportMulti) { - // 直连工控机 - directConnect() - } else { - val options = AdasOptions - .Builder() - .setClient(true) - .setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear) - .build() - AdasManager.getInstance() - .create(options, MoGoAdasMsgConnectStatusListenerImpl()) - // 监听ADAS-SDK获取到的工控机数据 - AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) - // 接收司机屏发过来的感知、定位等数据 - listenDeviceData() + + override fun onChannelConnect(channel: Channel?) { + msgHandler.handleClientConn2Server(channel) + } + + override fun onChannelDisConnect(channel: Channel?) { + CallerLogger.d("$M_D_C$TAG", "onChannelDisConnect") + } + + override fun onReceiveClientSign(channel: Channel?, sn: String?) { + sn?.let { + invokeNettyConnResult("连接成功的乘客屏sn为:$it") + } + } + }, MoGoAiCloudClientConfig.getInstance().sn) + } else { + NSDNettyManager.getInstance() + .searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, + AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode), + object : NettyClientListener { + override fun onMessageResponseClient( + msg: MogoProtocolMsg?, + sign: String?, + channel: Channel + ) { + // 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端 + msgHandler.handleMsgFromServer(msg, channel) + } + + override fun onClientStatusConnectChanged( + statusCode: Int, + sign: String?, + channel: Channel + ) { + msgHandler.handleClientConnStatus(statusCode, sign, channel) + } + }) + } + msgHandler.setListener(object : EventListener { + override fun connectDevice(isSupportMulti: Boolean) { + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + if (!isInit) { + isInit = true + // 转发工控机数据给乘客屏 + listenDeviceData() + } + } else { + if (!isInit) { + isInit = true + UiThreadHandler.post { + if (isSupportMulti) { + // 直连工控机 + directConnect() + } else { + val options = AdasOptions + .Builder() + .setClient(true) + .setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear) + .build() + AdasManager.getInstance() + .create(options, MoGoAdasMsgConnectStatusListenerImpl()) + // 监听ADAS-SDK获取到的工控机数据 + AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) + // 接收司机屏发过来的感知、定位等数据 + listenDeviceData() + } } } } } + }) + CallerAutopilotCarConfigListenerManager.addListener(TAG, this) + CallerLogger.i("$M_D_C$TAG", "initServer……") + // 同步数据给工控机的服务 + AsyncDataToAutopilotServer.INSTANCE.initServer() + }.onFailure { throwable -> + if (DebugConfig.isDebug()) { + ToastUtils.showLong("AutoPilot出现异常,请立即处理!") } - }) - CallerAutopilotCarConfigListenerManager.addListener(TAG, this) - CallerLogger.i("$M_D_C$TAG", "initServer……") - // 同步数据给工控机的服务 - AsyncDataToAutopilotServer.INSTANCE.initServer() + throwable.printStackTrace() + } } private fun directConnect() { diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt index ceff1aad76..d788e040e9 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt @@ -43,10 +43,6 @@ class MoGoAdasMsgConnectStatusListenerImpl : override fun onConnectionIPCStatus(ipcConnectionStatus: Int, reason: String?) { CallerAutopilotActionsListenerManager.setConnected(ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) - CallerAutoPilotStatusListenerManager.invokeAutoPilotIPCStatusChanged( - ipcConnectionStatus, - reason - ) AppConfigInfo.connectStatusDescribe = reason when (ipcConnectionStatus) { Constants.IPC_CONNECTION_STATUS.CONNECTED -> { @@ -103,6 +99,7 @@ class MoGoAdasMsgConnectStatusListenerImpl : CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().ipcConnStatus = ipcConnectionStatus CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatusDescribe = reason CallerAutoPilotStatusListenerManager.invokeAutoPilotStatus() + CallerAutoPilotStatusListenerManager.invokeAutoPilotIPCStatusChanged(ipcConnectionStatus, reason) } override fun onCompatibility(versionCompatibility: VersionCompatibility?) {