[charter]

[3.2.0]
[车门操作统一到一个地方]
This commit is contained in:
yangyakun
2023-04-24 19:45:10 +08:00
parent 17f425a186
commit cb3f29336d
20 changed files with 226 additions and 286 deletions

View File

@@ -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) {}
}

View File

@@ -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{
"车辆正在运行、请稍后再试"
}
}
}

View File

@@ -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

View File

@@ -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
)

View File

@@ -0,0 +1,3 @@
package com.mogo.och.common.module.manager.devicemanage.data
data class DoorStatus(var isOpen: Boolean)

View File

@@ -0,0 +1,3 @@
package com.mogo.och.common.module.manager.devicemanage.data
data class HeaterStatue(var isOpen: Boolean, var windSpeed: Int)

View File

@@ -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
)

View File

@@ -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
}
}