[6.2.0][蘑方] 蘑方命令下发后,添加工控机相关回执埋点

This commit is contained in:
renwj
2023-11-10 12:00:53 +08:00
parent a1ad8478a1
commit b2cb355c5a
2 changed files with 243 additions and 10 deletions

View File

@@ -45,17 +45,29 @@ internal class MoFangAnalyticUtils {
const val EVENT_EXECUTE_PARAMS_LINE_ID = "line_id" // 执行时的路线id
// 魔方按键指令回执
const val EVENT_EXECUTE_FEEDBACK = "event_mofang_feedback"
const val EVENT_EXECUTE_FEEDBACK_PARAMS_CODE = "code"
const val EVENT_EXECUTE_FEEDBACK_PARAMS_MSG = "msg"
const val EVENT_EXECUTE_FEEDBACK_PARAMS_LON = "lon" // 执行时自车经度
const val EVENT_EXECUTE_FEEDBACK_PARAMS_LAT = "lat" // 执行时自车
const val EVENT_EXECUTE_FEEDBACK_PARAMS_SPEED = "speed" // 执行时自车
const val EVENT_EXECUTE_FEEDBACK_PARAMS_ACC = "acc" // 执行时自车速度
const val EVENT_EXECUTE_FEEDBACK_PARAMS_HEADING = "head" // 执行时自车航向角
const val EVENT_EXECUTE_FEEDBACK_PARAMS_LINE_ID = "line_id" // 执行时的路线id
// 魔方按键指令回执-工控机收到
const val EVENT_EXECUTE_FEEDBACK_RECEIVE = "event_mofang_fb_receive"
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_NODE = "node"
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_CODE = "code"
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_MSG = "msg"
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LON = "lon" // 时自车
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LAT = "lat" // 执行时自车
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_SPEED = "speed" // 执行时自车速度
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_ACC = "acc" // 执行时自车加速度
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_HEADING = "head" // 执行时自车航向角
const val EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LINE_ID = "line_id" // 执行时的路线id
// 魔方按键指令回执-工控机执行
const val EVENT_EXECUTE_FEEDBACK_EXECUTE = "event_mofang_fb_execute"
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_NODE = "node"
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_CODE = "code"
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_MSG = "msg"
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LON = "lon" // 执行时自车经度
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LAT = "lat" // 执行时自车纬度
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_SPEED = "speed" // 执行时自车速度
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_ACC = "acc" // 执行时自车加速度
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_HEADING = "head" // 执行时自车航向角
const val EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LINE_ID = "line_id" // 执行时的路线id
private val handler by lazy { HandlerThread("mofang-analytic-worker", Process.THREAD_PRIORITY_BACKGROUND).let { it.start(); Handler(it.looper) } }

View File

@@ -3,11 +3,34 @@ package com.zhjt.mogo_core_function_devatools.mofang
import android.os.*
import android.util.*
import android.view.KeyEvent
import com.mogo.commons.utils.MogoAnalyticUtils
import com.mogo.eagle.core.data.config.*
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.*
import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.eagle.core.utilcode.mogo.*
import com.zhjt.mogo.adas.data.bean.MogoReport.Code.Info.IMF
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_ACC
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_CODE
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_HEADING
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LAT
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LINE_ID
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LON
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_MSG
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_NODE
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_SPEED
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_ACC
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_CODE
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_HEADING
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LAT
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LINE_ID
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LON
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_MSG
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_NODE
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_SPEED
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_PARAMS_ACC
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_PARAMS_HEADING
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_PARAMS_KEYCODE
@@ -16,6 +39,8 @@ import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companio
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_PARAMS_LON
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_PARAMS_SPEED
import com.zhjt.mogo_core_function_devatools.mofang.MoFangAnalyticUtils.Companion.EVENT_EXECUTE_PARAMS_TYPE
import mogo_msg.MogoReportMsg
import java.util.concurrent.atomic.AtomicBoolean
internal class MoFangCommandExecutor {
@@ -38,7 +63,48 @@ internal class MoFangCommandExecutor {
this.linkedLog = log
}
private val isRegister by lazy { AtomicBoolean(false) }
private val listener = object : IMoGoAutopilotStatusListener {
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
super.onAutopilotGuardian(guardianInfo)
guardianInfo?.also {
when (it.code) {
IMF.SPEED_CHANGE_RECEIVE -> {
reportIPCReceive(it.src, it.code, it.msg)
}
IMF.SPEED_CHANGE_EXECUTE -> {
reportIPCExecute(it.src, it.code, it.msg)
}
IMF.SPEED_RESET_RECEIVE -> {
reportIPCReceive(it.src, it.code, it.msg)
}
IMF.SPEED_RESET_EXECUTE -> {
reportIPCExecute(it.src, it.code, it.msg)
}
IMF.LAN_CHANG_RECEIVE -> {
reportIPCReceive(it.src, it.code, it.msg)
}
IMF.LAN_CHANG_EXECUTE -> {
reportIPCExecute(it.src, it.code, it.msg)
}
IMF.HORN_RECEIVE -> {
reportIPCReceive(it.src, it.code, it.msg)
}
IMF.HORN_EXECUTE -> {
reportIPCExecute(it.src, it.code, it.msg)
}
}
}
}
}
private val handlerCallback = Handler.Callback { msg ->
if (isRegister.compareAndSet(false, true)) {
CallerAutoPilotStatusListenerManager.addListener(TAG, listener)
}
val message = whatToString(msg.what, ", msg_info:[obj:${msg.obj}, arg1: ${msg.arg1}, arg2: ${msg.arg2}]")
linkedLog?.record(mapOf("收到:${System.currentTimeMillis()}" to "$message"))
val location = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
@@ -343,4 +409,159 @@ internal class MoFangCommandExecutor {
}
return false
}
private fun reportIPCReceive(node: String?, code: String, message: String?) {
try {
val location = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
when (code) {
IMF.HORN_RECEIVE -> {
MogoAnalyticUtils.track(EVENT_EXECUTE_FEEDBACK_RECEIVE, mutableMapOf<String, Any>().also {
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_NODE] = node ?: ""
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_CODE] = "E2"
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_MSG] = message ?: ""
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LON] = location.longitude
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LAT] = location.latitude
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_ACC] = location.acceleration
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_SPEED] = location.gnssSpeed
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_HEADING] = location.heading
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LINE_ID] = CallerAutoPilotStatusListenerManager.getLineId()
})
}
IMF.LAN_CHANG_RECEIVE -> {
if (message != null && message.contains("$$")) {
val isLeft = message.substringBefore("$$") == "-1"
MogoAnalyticUtils.track(EVENT_EXECUTE_FEEDBACK_RECEIVE, mutableMapOf<String, Any>().also {
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_NODE] = node ?: ""
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_CODE] = if (isLeft) "C1" else "D1"
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_MSG] = message
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LON] = location.longitude
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LAT] = location.latitude
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_ACC] = location.acceleration
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_SPEED] = location.gnssSpeed
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_HEADING] = location.heading
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LINE_ID] = CallerAutoPilotStatusListenerManager.getLineId()
})
}
}
IMF.SPEED_RESET_RECEIVE -> {
MogoAnalyticUtils.track(EVENT_EXECUTE_FEEDBACK_RECEIVE, mutableMapOf<String, Any>().also {
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_NODE] = node ?: ""
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_CODE] = "B1"
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_MSG] = message ?: ""
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LON] = location.longitude
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LAT] = location.latitude
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_ACC] = location.acceleration
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_SPEED] = location.gnssSpeed
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_HEADING] = location.heading
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LINE_ID] = CallerAutoPilotStatusListenerManager.getLineId()
})
}
IMF.SPEED_CHANGE_RECEIVE -> {
if (message != null && message.contains("$$")) {
val isSpeedUp = try {
message.substringBefore("$$").toFloat() > 0f
} catch (ignore: Throwable) {
null
}
if (isSpeedUp != null) {
MogoAnalyticUtils.track(EVENT_EXECUTE_FEEDBACK_RECEIVE, mutableMapOf<String, Any>().also {
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_NODE] = node ?: ""
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_CODE] = if (isSpeedUp) "AB" else "A1"
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_MSG] = message
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LON] = location.longitude
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LAT] = location.latitude
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_ACC] = location.acceleration
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_SPEED] = location.gnssSpeed
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_HEADING] = location.heading
it[EVENT_EXECUTE_FEEDBACK_RECEIVE_PARAMS_LINE_ID] = CallerAutoPilotStatusListenerManager.getLineId()
})
}
}
}
}
} catch (t: Throwable) {
t.printStackTrace()
}
}
private fun reportIPCExecute(node:String?, code: String, message: String?) {
try {
val location = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
when (code) {
IMF.HORN_EXECUTE -> {
MogoAnalyticUtils.track(EVENT_EXECUTE_FEEDBACK_EXECUTE, mutableMapOf<String, Any>().also {
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_NODE] = node ?: ""
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_CODE] = "E2"
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_MSG] = message ?: ""
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LON] = location.longitude
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LAT] = location.latitude
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_ACC] = location.acceleration
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_SPEED] = location.gnssSpeed
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_HEADING] = location.heading
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LINE_ID] = CallerAutoPilotStatusListenerManager.getLineId()
})
}
IMF.LAN_CHANG_EXECUTE -> {
if (message != null && message.contains("$$")) {
val isLeft = message.substringBefore("$$") == "-1"
MogoAnalyticUtils.track(EVENT_EXECUTE_FEEDBACK_EXECUTE, mutableMapOf<String, Any>().also {
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_NODE] = node ?: ""
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_CODE] = if (isLeft) "C1" else "D1"
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_MSG] = message
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LON] = location.longitude
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LAT] = location.latitude
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_ACC] = location.acceleration
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_SPEED] = location.gnssSpeed
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_HEADING] = location.heading
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LINE_ID] = CallerAutoPilotStatusListenerManager.getLineId()
})
}
}
IMF.SPEED_RESET_EXECUTE -> {
MogoAnalyticUtils.track(EVENT_EXECUTE_FEEDBACK_EXECUTE, mutableMapOf<String, Any>().also {
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_NODE] = node ?: ""
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_CODE] = "B1"
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_MSG] = message ?: ""
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LON] = location.longitude
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LAT] = location.latitude
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_ACC] = location.acceleration
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_SPEED] = location.gnssSpeed
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_HEADING] = location.heading
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LINE_ID] = CallerAutoPilotStatusListenerManager.getLineId()
})
}
IMF.SPEED_CHANGE_EXECUTE -> {
if (message != null && message.contains("$$")) {
val isSpeedUp = try {
message.substringBefore("$$").toFloat() > 0f
} catch (ignore: Throwable) {
null
}
if (isSpeedUp != null) {
MogoAnalyticUtils.track(EVENT_EXECUTE_FEEDBACK_EXECUTE, mutableMapOf<String, Any>().also {
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_NODE] = node ?: ""
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_CODE] = if (isSpeedUp) "AB" else "A1"
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_MSG] = message
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LON] = location.longitude
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LAT] = location.latitude
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_ACC] = location.acceleration
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_SPEED] = location.gnssSpeed
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_HEADING] = location.heading
it[EVENT_EXECUTE_FEEDBACK_EXECUTE_PARAMS_LINE_ID] = CallerAutoPilotStatusListenerManager.getLineId()
})
}
}
}
}
} catch (t: Throwable) {
t.printStackTrace()
}
}
}