[charter]
[3.2.0] [车门操作统一到一个地方]
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage
|
||||
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
|
||||
|
||||
interface LightAirconditionDoorCallback {
|
||||
|
||||
fun onAirconditionStatusCallback(heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus,
|
||||
isFirst: Boolean) {
|
||||
}
|
||||
|
||||
fun onHeaterStatusCallback(airconditionIsOpen: Boolean, heaterStatue: HeaterStatue,
|
||||
isFirst: Boolean) {
|
||||
}
|
||||
|
||||
fun onDoorStatusCallback(isOpen: Boolean, isFirst: Boolean) {}
|
||||
|
||||
fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) {
|
||||
}
|
||||
|
||||
fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) {}
|
||||
|
||||
fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) {}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage
|
||||
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.disposables.Disposable
|
||||
|
||||
object LightAirconditionDoorManager {
|
||||
private const val TAG = "LightAirconditionDoorManager"
|
||||
|
||||
private var dooorSubscribe: Disposable? = null
|
||||
private var doorStatusSubscribe: Disposable? = null
|
||||
|
||||
fun go2OpenDoor(isOpen:Boolean){
|
||||
val canOpenOrCloseDoor = canOpenOrCloseDoor()
|
||||
if(!canOpenOrCloseDoor.isNullOrBlank()){
|
||||
ToastUtils.showShort(canOpenOrCloseDoor)
|
||||
return
|
||||
}
|
||||
RxUtils.disposeSubscribe(dooorSubscribe)
|
||||
dooorSubscribe = RxUtils.createSubscribe(1000) {
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0)
|
||||
}
|
||||
if(isOpen) {
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1)
|
||||
}else{
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2)
|
||||
}
|
||||
RxUtils.disposeSubscribe(doorStatusSubscribe)
|
||||
doorStatusSubscribe = RxUtils.createSubscribe(6000) {
|
||||
if (LightAirconditionDoorStatusManager.doorStatus.isOpen) {
|
||||
ToastUtils.showShort("车门无法关闭,请使用车内物理按钮")
|
||||
}else{
|
||||
ToastUtils.showShort("车门无法开启,请使用车内物理按钮")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun canOpenOrCloseDoor(): String? {
|
||||
val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
|
||||
return if(location.gnssSpeed<0.01){
|
||||
null
|
||||
}else{
|
||||
"车辆正在运行、请稍后再试"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,15 @@
|
||||
package com.mogo.och.common.module.manager
|
||||
package com.mogo.och.common.module.manager.devicemanage
|
||||
|
||||
import chassis.VehicleStateOuterClass
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoRoboBusJinlvM1StatesListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerRoboBusJinlvM1StatesListenerManager
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.DoorStatus
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListener {
|
||||
object LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListener {
|
||||
private const val TAG = "OCHM1LightAirconditionDoorStatusManager"
|
||||
|
||||
init {
|
||||
@@ -13,7 +17,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen
|
||||
CallerRoboBusJinlvM1StatesListenerManager.setListenerHz(TAG,5)
|
||||
}
|
||||
|
||||
val M_LISTENERS: ConcurrentHashMap<String, OCHM1LightAirconditionDoorCallback> =
|
||||
val M_LISTENERS: ConcurrentHashMap<String, LightAirconditionDoorCallback> =
|
||||
ConcurrentHashMap()
|
||||
|
||||
val airconditionStatus = AirconditionStatus(false, 0, 26, 2)
|
||||
@@ -23,7 +27,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen
|
||||
|
||||
fun addListener(
|
||||
tag: String,
|
||||
listener: OCHM1LightAirconditionDoorCallback
|
||||
listener: LightAirconditionDoorCallback
|
||||
) {
|
||||
if (M_LISTENERS.containsKey(tag)) {
|
||||
return
|
||||
@@ -47,7 +51,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen
|
||||
* 删除监听
|
||||
* @param listener 要删除的监听对象
|
||||
*/
|
||||
fun removeListener(listener: OCHM1LightAirconditionDoorCallback) {
|
||||
fun removeListener(listener: LightAirconditionDoorCallback) {
|
||||
if (!M_LISTENERS.containsValue(listener)) {
|
||||
return
|
||||
}
|
||||
@@ -58,36 +62,6 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
interface OCHM1LightAirconditionDoorCallback {
|
||||
|
||||
fun onAirconditionStatusCallback(heaterIsOpen:Boolean,airconditionStatus: AirconditionStatus,isFirst: Boolean){}
|
||||
|
||||
fun onHeaterStatusCallback(airconditionIsOpen: Boolean,heaterStatue: HeaterStatue,isFirst: Boolean){}
|
||||
|
||||
fun onDoorStatusCallback(isOpen: Boolean,isFirst: Boolean){}
|
||||
|
||||
fun onLightTop1Callback(lightStatus: LightStatus,isFirst: Boolean){}
|
||||
fun onLightTop2Callback(lightStatus: LightStatus,isFirst: Boolean){}
|
||||
fun onLightAtmosphereCallback(lightStatus: LightStatus,isFirst: Boolean){}
|
||||
|
||||
}
|
||||
|
||||
data class AirconditionStatus(
|
||||
var isOpen: Boolean,
|
||||
var pattert: Int,
|
||||
var temperature: Int,
|
||||
var windSpeed: Int
|
||||
)
|
||||
|
||||
data class HeaterStatue(var isOpen: Boolean, var windSpeed: Int)
|
||||
data class DoorStatus(var isOpen: Boolean)
|
||||
data class LightStatus(
|
||||
var isOpenLight1: Boolean,
|
||||
var isOpenLight2: Boolean,
|
||||
var isOpenatmosphere: Boolean
|
||||
)
|
||||
|
||||
override fun onRoboBusJinlvM1States(states: VehicleStateOuterClass.RoboBusJinlvM1State) {
|
||||
val airConditionerState = states.airConditionerState
|
||||
val heaterState = states.heaterState
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage.data
|
||||
|
||||
data class AirconditionStatus(
|
||||
var isOpen: Boolean,
|
||||
var pattert: Int,
|
||||
var temperature: Int,
|
||||
var windSpeed: Int
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage.data
|
||||
|
||||
data class DoorStatus(var isOpen: Boolean)
|
||||
@@ -0,0 +1,3 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage.data
|
||||
|
||||
data class HeaterStatue(var isOpen: Boolean, var windSpeed: Int)
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.mogo.och.common.module.manager.devicemanage.data
|
||||
|
||||
data class LightStatus(
|
||||
var isOpenLight1: Boolean,
|
||||
var isOpenLight2: Boolean,
|
||||
var isOpenatmosphere: Boolean
|
||||
)
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.mogo.och.common.module.utils
|
||||
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
object RxUtils {
|
||||
fun disposeSubscribe(subscribe: Disposable?) {
|
||||
subscribe?.let {
|
||||
if (!it.isDisposed) {
|
||||
it.dispose()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun createSubscribe(delay: Long=2000, function: () -> Unit): Disposable? {
|
||||
return Observable.timer(delay, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
function.invoke()
|
||||
}
|
||||
}
|
||||
|
||||
fun isDisposed(disposable: Disposable?):Boolean{
|
||||
if(disposable!=null){
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user