[6.5.1_exam]合并Taxi考试到主分支

This commit is contained in:
xuxinchao
2024-07-30 18:44:38 +08:00
parent 2c8e80eca8
commit cca38246cc
21 changed files with 965 additions and 25 deletions

View File

@@ -22,6 +22,7 @@ import com.mogo.eagle.core.data.deva.report.WorkOrderReportInfo
import com.mogo.eagle.core.data.deva.scene.SceneModule
import com.mogo.eagle.core.data.deva.scene.SceneTAG
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.takeover.TakeOverAnnotation
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.mogo.eagle.core.function.api.devatools.block.IMoGoBlockProvider
import com.mogo.eagle.core.function.api.devatools.download.DownloadType
@@ -73,6 +74,7 @@ import com.zhjt.mogo_core_function_devatools.status.entity.RouteDownloadStatus
import com.zhjt.mogo_core_function_devatools.status.entity.Status
import com.zhjt.mogo_core_function_devatools.status.ui.AutoPilotLaunchBeforeView
import com.zhjt.mogo_core_function_devatools.strict.StrictModeProviderImpl
import com.zhjt.mogo_core_function_devatools.takeover.TakeOverManager
import com.zhjt.mogo_core_function_devatools.trace.TraceManager.Companion.traceManager
import com.zhjt.mogo_core_function_devatools.tts.TtsManager.Companion.ttsManager
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.upgradeManager
@@ -647,4 +649,8 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener {
override fun setRouteDynamicColorEnable(enable: Boolean) {
mapRouteProvider?.setRouteDynamicColorEnable(enable)
}
override fun takeOver(@TakeOverAnnotation takeOverAnnotation: Int) {
TakeOverManager.takeOverManager.takeOver(takeOverAnnotation)
}
}

View File

@@ -0,0 +1,19 @@
package com.zhjt.mogo_core_function_devatools.takeover
import com.mogo.eagle.core.data.takeover.TakeOverAnnotation
import com.zhjt.mogo_core_function_devatools.takeover.network.TakeOverNetWorkModel
class TakeOverManager {
companion object {
val takeOverManager: TakeOverManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
TakeOverManager()
}
}
private val takeOverNetWorkModel = TakeOverNetWorkModel()
fun takeOver(@TakeOverAnnotation takeOverAnnotation: Int) {
}
}

View File

@@ -0,0 +1,13 @@
package com.zhjt.mogo_core_function_devatools.takeover.network
import com.mogo.eagle.core.data.BaseResponse
import retrofit2.http.*
interface TakeOverApiService {
//云端接管
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("/paralleldriving-service/autocars")
suspend fun takeOver(@Body map: MutableMap<String, Any>): BaseResponse<Any>
}

View File

@@ -0,0 +1,22 @@
package com.zhjt.mogo_core_function_devatools.takeover.network
import com.mogo.commons.debug.DebugConfig
class TakeOverHost {
companion object{
private const val HOST_DEV = "http://dzt-test.zhidaozhixing.com/"
private const val HOST_RELEASE = "http://dzt.zhidaozhixing.com/"
fun get(): String{
return when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV -> HOST_DEV
DebugConfig.NET_MODE_QA -> HOST_DEV
DebugConfig.NET_MODE_DEMO -> HOST_RELEASE
DebugConfig.NET_MODE_RELEASE -> HOST_RELEASE
else -> HOST_RELEASE
}
}
}
}

View File

@@ -0,0 +1,288 @@
package com.zhjt.mogo_core_function_devatools.takeover.network
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.takeover.*
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.request
import java.util.concurrent.ConcurrentHashMap
class TakeOverNetWorkModel {
private fun getNetWorkApi(baseUrl: String = TakeOverHost.get()): TakeOverApiService {
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(TakeOverApiService::class.java)
}
private val retryMap: ConcurrentHashMap<Int, Int> = ConcurrentHashMap<Int, Int>()
fun manualControl(onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
request<BaseResponse<Any>> {
start {
retryMap[MANUAL_CONTROL] = retryMap[MANUAL_CONTROL] ?: 0 + 1
}
loader {
apiCall {
val map = mutableMapOf<String, Any>()
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["type"] = MANUAL_CONTROL
map["plateNumber"] = AppConfigInfo.plateNumber ?: ""
getNetWorkApi().takeOver(map)
}
}
onSuccess {
if (it.result != null) {
retryMap.remove(MANUAL_CONTROL)
onSuccess.invoke()
} else {
if (retryMap[MANUAL_CONTROL]!! <= 3) {
retryMap[MANUAL_CONTROL] = retryMap[MANUAL_CONTROL]!! + 1
manualControl(onSuccess, onError)
} else {
onError.invoke("manualControl result is null")
}
}
}
onError {
if (retryMap[MANUAL_CONTROL]!! <= 3) {
retryMap[MANUAL_CONTROL] = retryMap[MANUAL_CONTROL]!! + 1
manualControl(onSuccess, onError)
} else if (it.message != null) {
onError.invoke(it.message!!)
}
}
}
}
fun overTake(onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
request<BaseResponse<Any>> {
start {
retryMap[OVER_TAKE] = retryMap[OVER_TAKE] ?: 0 + 1
}
loader {
apiCall {
val map = mutableMapOf<String, Any>()
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["type"] = OVER_TAKE
map["plateNumber"] = AppConfigInfo.plateNumber ?: ""
getNetWorkApi().takeOver(map)
}
}
onSuccess {
if (it.result != null) {
retryMap.remove(OVER_TAKE)
onSuccess.invoke()
} else {
if (retryMap[OVER_TAKE]!! <= 3) {
retryMap[OVER_TAKE] = retryMap[OVER_TAKE]!! + 1
manualControl(onSuccess, onError)
} else {
onError.invoke("overTake result is null")
}
}
}
onError {
if (retryMap[OVER_TAKE]!! <= 3) {
retryMap[OVER_TAKE] = retryMap[OVER_TAKE]!! + 1
manualControl(onSuccess, onError)
} else if (it.message != null) {
onError.invoke(it.message!!)
}
}
}
}
fun lineToLeft(onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
request<BaseResponse<Any>> {
start {
retryMap[LINE_TO_LEFT] = retryMap[LINE_TO_LEFT] ?: 0 + 1
}
loader {
apiCall {
val map = mutableMapOf<String, Any>()
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["type"] = LINE_TO_LEFT
map["plateNumber"] = AppConfigInfo.plateNumber ?: ""
getNetWorkApi().takeOver(map)
}
}
onSuccess {
if (it.result != null) {
retryMap.remove(LINE_TO_LEFT)
onSuccess.invoke()
} else {
if (retryMap[LINE_TO_LEFT]!! <= 3) {
retryMap[LINE_TO_LEFT] = retryMap[LINE_TO_LEFT]!! + 1
manualControl(onSuccess, onError)
} else {
onError.invoke("lineToLeft result is null")
}
}
}
onError {
if (retryMap[LINE_TO_LEFT]!! <= 3) {
retryMap[LINE_TO_LEFT] = retryMap[LINE_TO_LEFT]!! + 1
manualControl(onSuccess, onError)
} else if (it.message != null) {
onError.invoke(it.message!!)
}
}
}
}
fun lineToRight(onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
request<BaseResponse<Any>> {
start {
retryMap[LINE_TO_RIGHT] = retryMap[LINE_TO_RIGHT] ?: 0 + 1
}
loader {
apiCall {
val map = mutableMapOf<String, Any>()
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["type"] = LINE_TO_RIGHT
map["plateNumber"] = AppConfigInfo.plateNumber ?: ""
getNetWorkApi().takeOver(map)
}
}
onSuccess {
if (it.result != null) {
retryMap.remove(LINE_TO_RIGHT)
onSuccess.invoke()
} else {
if (retryMap[LINE_TO_RIGHT]!! <= 3) {
retryMap[LINE_TO_RIGHT] = retryMap[LINE_TO_RIGHT]!! + 1
manualControl(onSuccess, onError)
} else {
onError.invoke("lineToRight result is null")
}
}
}
onError {
if (retryMap[LINE_TO_RIGHT]!! <= 3) {
retryMap[LINE_TO_RIGHT] = retryMap[LINE_TO_RIGHT]!! + 1
manualControl(onSuccess, onError)
} else if (it.message != null) {
onError.invoke(it.message!!)
}
}
}
}
fun pullOver(onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
request<BaseResponse<Any>> {
start {
retryMap[PULL_OVER] = retryMap[PULL_OVER] ?: 0 + 1
}
loader {
apiCall {
val map = mutableMapOf<String, Any>()
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["type"] = PULL_OVER
map["plateNumber"] = AppConfigInfo.plateNumber ?: ""
getNetWorkApi().takeOver(map)
}
}
onSuccess {
if (it.result != null) {
retryMap.remove(PULL_OVER)
onSuccess.invoke()
} else {
if (retryMap[PULL_OVER]!! <= 3) {
retryMap[PULL_OVER] = retryMap[PULL_OVER]!! + 1
manualControl(onSuccess, onError)
} else {
onError.invoke("pullOver result is null")
}
}
}
onError {
if (retryMap[PULL_OVER]!! <= 3) {
retryMap[PULL_OVER] = retryMap[PULL_OVER]!! + 1
manualControl(onSuccess, onError)
} else if (it.message != null) {
onError.invoke(it.message!!)
}
}
}
}
fun emergencyStop(onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
request<BaseResponse<Any>> {
start {
retryMap[EMERGENCY_STOP] = retryMap[EMERGENCY_STOP] ?: 0 + 1
}
loader {
apiCall {
val map = mutableMapOf<String, Any>()
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["type"] = EMERGENCY_STOP
map["plateNumber"] = AppConfigInfo.plateNumber ?: ""
getNetWorkApi().takeOver(map)
}
}
onSuccess {
if (it.result != null) {
retryMap.remove(EMERGENCY_STOP)
onSuccess.invoke()
} else {
if (retryMap[EMERGENCY_STOP]!! <= 3) {
retryMap[EMERGENCY_STOP] = retryMap[EMERGENCY_STOP]!! + 1
manualControl(onSuccess, onError)
} else {
onError.invoke("emergencyStop result is null")
}
}
}
onError {
if (retryMap[EMERGENCY_STOP]!! <= 3) {
retryMap[EMERGENCY_STOP] = retryMap[EMERGENCY_STOP]!! + 1
manualControl(onSuccess, onError)
} else if (it.message != null) {
onError.invoke(it.message!!)
}
}
}
}
fun takeOverRequest(onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
request<BaseResponse<Any>> {
start {
retryMap[TAKE_OVER_REQUEST] = retryMap[TAKE_OVER_REQUEST] ?: 0 + 1
}
loader {
apiCall {
val map = mutableMapOf<String, Any>()
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["type"] = TAKE_OVER_REQUEST
map["plateNumber"] = AppConfigInfo.plateNumber ?: ""
getNetWorkApi().takeOver(map)
}
}
onSuccess {
if (it.result != null) {
retryMap.remove(TAKE_OVER_REQUEST)
onSuccess.invoke()
} else {
if (retryMap[TAKE_OVER_REQUEST]!! <= 3) {
retryMap[TAKE_OVER_REQUEST] = retryMap[TAKE_OVER_REQUEST]!! + 1
manualControl(onSuccess, onError)
} else {
onError.invoke("takeOverRequest result is null")
}
}
}
onError {
if (retryMap[TAKE_OVER_REQUEST]!! <= 3) {
retryMap[TAKE_OVER_REQUEST] = retryMap[TAKE_OVER_REQUEST]!! + 1
manualControl(onSuccess, onError)
} else if (it.message != null) {
onError.invoke(it.message!!)
}
}
}
}
}