[unmanned]
[轮训修改]
This commit is contained in:
yangyakun
2024-08-29 17:29:23 +08:00
parent 9f12d87022
commit a66c8b9cf5
5 changed files with 113 additions and 68 deletions

View File

@@ -326,7 +326,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
}
}else{ //演练任务拉取 6.2.0使用配置的时间拉取, 默认45s
TaxiTaskModel.startPrepareTaskDelay(
CallerUnmannedListenerManager.getVirtualTaskPullTaskInterval() * 1000L, result?.endSite!!.siteId)
CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF() * 1000L, result?.endSite!!.siteId)
}
clearDemoModeAndACParameters()
@@ -361,7 +361,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
//获取新的任务
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.endSite?.also {//使用配置的时间拉取, 默认是45s
TaxiTaskModel.startPrepareTaskDelay(CallerUnmannedListenerManager.getVirtualTaskPullTaskInterval() * 1000L,
TaxiTaskModel.startPrepareTaskDelay(CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF() * 1000L,
it.siteId)
}
// 设置task执行相关状态切换模式时判断使用

View File

@@ -270,6 +270,17 @@ object TaxiTaskModel {
override fun onVirtualTaskPullTaskIntervalUpdate(time: Int) {
DebugView.printInfoMsg("[演练任务拉取时间间隔变化] afterValue=${time}")
}
override fun onSwitch(isLoop: Boolean) {
if(isLoop){ //由非轮训改为轮训 重新启动轮训
if (LoginStatusManager.isOpenOrderType()) {
endService(true)
}
}else{// 由轮训改为非轮训
startPrepareTaskDelay(CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF() * 1000L,
0)
}
}
}
private val mMogoAutopilotStatusListener: IOchAutopilotStatusListener =
@@ -1029,10 +1040,10 @@ object TaxiTaskModel {
* ⑥ 拉取任务失败后5s后重试
*/
fun startPrepareTaskDelay(delayTime: Long, siteId: Long) {
removePrepareTaskDelay()
if(delayTime<0){
return
}
removePrepareTaskDelay()
mPrepareTaskDelayRunnable = Runnable {
prepareNextTask(siteId)
@@ -1111,74 +1122,85 @@ object TaxiTaskModel {
return
}
if (LoginStatusManager.isOpenOrderType()) {//接单状态下,去结束
DebugView.printInfoMsg("[暂停接单] 准备发送请求")
TaxiTaskWithOrderServiceManager.endService(
mContext,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
DebugView.printInfoMsg("[暂停接单] 请求success")
LoginStatusManager.queryLoginStatusByNet()
//需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的
mDriveToNearestStationTask = null
mTaxiCarServiceCallback?.onCarEndServiceSuccess(
mDriveToNearestStationTask,
mCurrentTaskWithOrder
)
}
override fun onError() {
mTaxiCarServiceCallback?.onCarEndServiceError()
DebugView.printErrorMsg("[暂停接单] 请求error")
}
override fun onFail(code: Int, msg: String) {
DebugView.printErrorMsg("[暂停接单] 请求fail, code=$code, msg=$msg")
mTaxiCarServiceCallback?.onCarEndServiceFailed(code, msg)
}
})
endService(false)
} else {
//暂停接单状态下,去接单
DebugView.printInfoMsg("[开始接单] 准备发送请求")
val gcJ02Location = OchLocationManager.getGCJ02Location()
TaxiTaskWithOrderServiceManager.startService(mContext,
gcJ02Location.latitude, gcJ02Location.longitude,
object : OchCommonServiceCallback<StartServiceRespBean> {
override fun onSuccess(data: StartServiceRespBean?) {
if (data == null) return
DebugView.printInfoMsg("[开始接单] 请求success")
d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data))
LoginStatusManager.queryLoginStatusByNet()
mCurrentTaskWithOrder?.apply {
if (endSite != null) {
when {
currentStatus == TaskStatusEnum.CompleteTask.code && order != null -> return
currentStatus < TaskStatusEnum.CompleteTask.code -> return
}
}
if (currentStatus == TaskStatusEnum.None.code && order != null){
//订单送驾到站, 但是还没点服务完成的情况, 此时endSite == null currentStatus == 0
return
startService()
}
}
private fun endService(needStart: Boolean) {
DebugView.printInfoMsg("[暂停接单] 准备发送请求")
TaxiTaskWithOrderServiceManager.endService(
mContext,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
DebugView.printInfoMsg("[暂停接单] 请求success")
LoginStatusManager.queryLoginStatusByNet()
//需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的
mDriveToNearestStationTask = null
mTaxiCarServiceCallback?.onCarEndServiceSuccess(
mDriveToNearestStationTask,
mCurrentTaskWithOrder
)
if(needStart){
startService()
}
}
override fun onError() {
mTaxiCarServiceCallback?.onCarEndServiceError()
DebugView.printErrorMsg("[暂停接单] 请求error")
}
override fun onFail(code: Int, msg: String) {
DebugView.printErrorMsg("[暂停接单] 请求fail, code=$code, msg=$msg")
mTaxiCarServiceCallback?.onCarEndServiceFailed(code, msg)
}
})
}
private fun startService(){
//暂停接单状态下,去接单
DebugView.printInfoMsg("[开始接单] 准备发送请求")
val gcJ02Location = OchLocationManager.getGCJ02Location()
TaxiTaskWithOrderServiceManager.startService(mContext,
gcJ02Location.latitude, gcJ02Location.longitude,
object : OchCommonServiceCallback<StartServiceRespBean> {
override fun onSuccess(data: StartServiceRespBean?) {
if (data == null) return
DebugView.printInfoMsg("[开始接单] 请求success")
d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data))
LoginStatusManager.queryLoginStatusByNet()
mCurrentTaskWithOrder?.apply {
if (endSite != null) {
when {
currentStatus == TaskStatusEnum.CompleteTask.code && order != null -> return
currentStatus < TaskStatusEnum.CompleteTask.code -> return
}
}
mDriveToNearestStationTask = data.data
mLastArrivedSiteId = -1L //开始标定站点任务时, 到达站点标志位需复位
mTaxiCarServiceCallback?.onCarStartServiceSuccess(
mDriveToNearestStationTask,
mCurrentTaskWithOrder
)
if (currentStatus == TaskStatusEnum.None.code && order != null){
//订单送驾到站, 但是还没点服务完成的情况, 此时endSite == null currentStatus == 0
return
}
}
mDriveToNearestStationTask = data.data
mLastArrivedSiteId = -1L //开始标定站点任务时, 到达站点标志位需复位
mTaxiCarServiceCallback?.onCarStartServiceSuccess(
mDriveToNearestStationTask,
mCurrentTaskWithOrder
)
}
override fun onFail(code: Int, msg: String) {
DebugView.printErrorMsg("[开始接单] 请求fail, code=$code, msg=$msg")
mTaxiCarServiceCallback?.onCarStartServiceFailed(code, msg)
}
override fun onFail(code: Int, msg: String) {
DebugView.printErrorMsg("[开始接单] 请求fail, code=$code, msg=$msg")
mTaxiCarServiceCallback?.onCarStartServiceFailed(code, msg)
}
override fun onError() {
DebugView.printErrorMsg("[开始接单] 请求error")
mTaxiCarServiceCallback?.onCarStartServiceError()
}
})
}
override fun onError() {
DebugView.printErrorMsg("[开始接单] 请求error")
mTaxiCarServiceCallback?.onCarStartServiceError()
}
})
}
/**

View File

@@ -894,7 +894,7 @@ internal class SOPSettingView @JvmOverloads constructor(
}
}
val virtualTaskPullTaskInterval = CallerUnmannedListenerManager.getVirtualTaskPullTaskInterval()
val virtualTaskPullTaskInterval = CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF()
rbFive.isChecked = virtualTaskPullTaskInterval == 5
rbFifteen.isChecked = virtualTaskPullTaskInterval == 15
rbThirty.isChecked = virtualTaskPullTaskInterval == 30

View File

@@ -5,4 +5,5 @@ interface IUnmannedListener {
* 单位: 秒(s)
*/
fun onVirtualTaskPullTaskIntervalUpdate(time: Int)
fun onSwitch(isLoop:Boolean){}
}

View File

@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.call.unmanned
import android.util.Log
import com.mogo.eagle.core.function.api.unmanned.IUnmannedListener
import com.mogo.eagle.core.function.call.base.CallerBase
import kotlin.properties.Delegates
/**
* 无人化功能状态监听、回调管理者
@@ -10,7 +11,28 @@ import com.mogo.eagle.core.function.call.base.CallerBase
object CallerUnmannedListenerManager : CallerBase<IUnmannedListener>() {
private const val TAG = "CallerUnmannedListenerManager"
private var virtualTaskPullTaskInterval: Int = 45 //单位:秒
//单位:秒
private var virtualTaskPullTaskInterval: Int by Delegates.observable(45) { _, oldValue, newValue ->
if(oldValue<0&&newValue>0){
M_LISTENERS.forEach {
val listener = it.value
try {
listener.onSwitch(true)// 由非轮训改为轮训
} catch (e: Exception) {
Log.e(TAG, "转发消息出现异常:${e.message}")
}
}
}else if(oldValue>0&&newValue<0){
M_LISTENERS.forEach {
val listener = it.value
try {
listener.onSwitch(false)// 由轮训改为非轮训
} catch (e: Exception) {
Log.e(TAG, "转发消息出现异常:${e.message}")
}
}
}
}
override fun doSomeAfterAddListener(tag: String, listener: IUnmannedListener) {
super.doSomeAfterAddListener(tag, listener)
@@ -32,7 +54,7 @@ object CallerUnmannedListenerManager : CallerBase<IUnmannedListener>() {
/**
* 获取无人化演练拉取的时间间隔(单位: 秒)
*/
fun getVirtualTaskPullTaskInterval(): Int {
fun getVirtualTaskPullTaskIntervalF(): Int {
return virtualTaskPullTaskInterval
}
}