From 74b11c7eaf6f423ae283c2c4eeb4b84a6f863926 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 28 Feb 2023 20:39:55 +0800 Subject: [PATCH] =?UTF-8?q?[m1]=20[1.1.2]=20[=E6=8E=A5=E5=8F=97=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=BC=80=E5=85=B3=E9=97=A8=E6=8E=A8=E9=80=81?= =?UTF-8?q?=20=20=20=E5=B0=8F=E7=A8=8B=E5=BA=8F->=20=E6=9C=8D=E5=8A=A1=20-?= =?UTF-8?q?>=20=E5=8F=B8=E6=9C=BA=E7=AB=AF=20->=20=E4=B9=98=E5=AE=A2?= =?UTF-8?q?=E7=AB=AF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presenter/BusPassengerPresenter.kt | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt index d69d03974a..8b839e2769 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt @@ -2,24 +2,38 @@ package com.mogo.och.bus.passenger.presenter import androidx.lifecycle.LifecycleOwner import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.data.telematic.TelematicConstant +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback import com.mogo.och.bus.passenger.callback.IDistanceTimeCallback import com.mogo.och.bus.passenger.model.CharterPassengerModel import com.mogo.och.bus.passenger.ui.MainFragment +import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg +import com.mogo.och.common.module.bean.dpmsg.DPMsgType +import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.NumberFormatUtil +import io.reactivex.disposables.Disposable import java.util.* class BusPassengerPresenter(view: MainFragment?) : BusBasePassengerFunctionDevicePresenter(view), IBusPassengerControllerStatusCallback, IDistanceTimeCallback { + + private var subscribe: Disposable? = null + private var gnssSpeed = 0.0f override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) CharterPassengerModel.init() // 定位监听 CharterPassengerModel.setControllerStatusCallback(TAG,this) CharterPassengerModel.setiDistanceTimeCallback(this) + CallerTelematicListenerManager.addListener(TAG, msgReceived) //BusPassengerModel.setMoGoAutopilotPlanningListener(this) } @@ -28,6 +42,7 @@ class BusPassengerPresenter(view: MainFragment?) : super.onDestroy(owner) CharterPassengerModel.setControllerStatusCallback(TAG,null) CharterPassengerModel.setiDistanceTimeCallback(null) + CallerTelematicListenerManager.removeListener(TAG) } private fun setSpeed(speed:Float){ UiThreadHandler.post { @@ -44,6 +59,62 @@ class BusPassengerPresenter(view: MainFragment?) : override fun onCarLocationChanged(location: MogoLocation?) { location?.let { setSpeed(it.gnssSpeed) + gnssSpeed = it.gnssSpeed + } + } + + val msgReceived = object : IReceivedMsgListener { + override fun onReceivedMsg(type: Int, byteArray: ByteArray) { + UiThreadHandler.post { + if (type == TelematicConstant.BUSINESS_STRING) { + val msg = GsonUtils.fromJson( + String(byteArray), + ChangeDestMsg::class.java + ) as ChangeDestMsg + if (msg.type == DPMsgType.TYPE_OPEN_CLOSE_DOOR.type) { + val doorStatus = OCHM1LightAirconditionDoorStatusManager.doorStatus + if(doorStatus.isOpen){ + closeDoor() + }else{ + openDoor() + } + } + } + } + } + } + + fun openDoor() { + val canOpenOrCloseDoor = canOpenOrCloseDoor() + if(!canOpenOrCloseDoor.isNullOrEmpty()){ + ToastUtils.showShort(canOpenOrCloseDoor) + return + } + disposeSubscribe(subscribe) + subscribe = createSubscribe(1000) { + CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) + } + CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1) + } + + fun closeDoor() { + val canOpenOrCloseDoor = canOpenOrCloseDoor() + if(!canOpenOrCloseDoor.isNullOrBlank()){ + ToastUtils.showShort(canOpenOrCloseDoor) + return + } + disposeSubscribe(subscribe) + subscribe = createSubscribe(1000) { + CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) + } + CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2) + } + + private fun canOpenOrCloseDoor():String?{ + if(gnssSpeed<0.01){ + return null + }else{ + return "车辆正在运行、请稍后再试" } }