Merge branch 'test_robotaxi-d-app-module_2110_220915_2.11.0.1' into dev_robotaxi-d-app-module_2120_221017_2.12.0

# Conflicts:
#	OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java
This commit is contained in:
wangmingjun
2022-10-25 14:51:01 +08:00
19 changed files with 219 additions and 111 deletions

View File

@@ -197,6 +197,8 @@ class MoGoAutopilotProvider :
.build()
AdasManager.getInstance()
.create(options, MoGoAdasMsgConnectStatusListenerImpl())
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
// 接收司机屏发过来的感知、定位等数据
listenDeviceData()
}

View File

@@ -1,6 +1,5 @@
package com.mogo.eagle.core.function.autopilot.telematic
import android.util.Log
import androidx.lifecycle.ProcessLifecycleOwner
import androidx.lifecycle.lifecycleScope
import com.google.protobuf.TextFormat
@@ -118,10 +117,6 @@ class TeleMsgHandler : IMsgHandler {
"1" -> true
else -> false
}
Logger.d(
"Route",
"TeleMsgHandler -> handleMsgFromServer ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore:" + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData
)
timestamp = currTime
invokeNettyConnResult("乘客屏收到的美化模式isIgnore为${FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData}")
} else {

View File

@@ -9,7 +9,6 @@ import android.os.Build.VERSION_CODES
import android.os.Bundle
import android.text.TextUtils
import android.transition.*
import android.util.Log
import android.view.Gravity
import android.view.View
import android.view.WindowManager
@@ -866,7 +865,7 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
AIAssist.getInstance(ctx).speakTTSVoice(text, voiceCallback)
} catch (t: Throwable) {
it.resumeWith(Result.success(Unit))
Logger.e(TAG, t.message)
CallerLogger.d("$M_HMI$TAG", t.message)
}
}
@@ -1458,7 +1457,6 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
* 工控机监控节点上报
*/
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
Log.d("EmArrow-1013", "onAutopilotGuardian : $guardianInfo , takeOver : $takeOver")
ThreadUtils.runOnUiThread {
guardianInfo?.let {
if (reportList.size > 49) {
@@ -1484,10 +1482,6 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
EXIT_AUTOPILOT_FOR_LOCATION,
EXIT_AUTOPILOT_FOR_CHASSIS,
EXIT_AUTOPILOT_FOR_DISTANCE -> {
Log.d(
"EmArrow-1013",
"it code : ${it.code} , state : ${getAutoPilotStatusInfo().state}"
)
showWarningV2X(
EventTypeEnum.TAKE_OVER_EVENT.poiType,
EventTypeEnum.TAKE_OVER_EVENT.content,
@@ -1495,13 +1489,11 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
EventTypeEnum.TAKE_OVER_EVENT.poiType,
object : IMoGoWarningStatusListener {
override fun onShow() {
Log.d("EmArrow-1013", "onShow")
takeOver = true
clTakeOverView.visibility = View.VISIBLE
}
override fun onDismiss() {
Log.d("EmArrow-1013", "onDismiss")
takeOver = false
clTakeOverView.visibility = View.GONE
}

View File

@@ -623,7 +623,6 @@ class DebugSettingView @JvmOverloads constructor(
// 强制绘制引导线
tbIsDrawAutopilotTrajectoryData.setOnCheckedChangeListener { _, isChecked ->
Logger.d("Route", "DebugSettingView -> initView2 ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore: $isChecked")
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = isChecked
}

View File

@@ -1,17 +1,17 @@
package com.mogo.eagle.core.function.hmi.ui.widget
import android.content.Context
import android.graphics.Color
import android.graphics.*
import android.location.Location
import android.util.AttributeSet
import android.util.*
import android.view.Gravity
import android.widget.FrameLayout
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.map.MogoMapUIController
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.map.*
import com.mogo.map.navi.IMogoCarLocationChangedListener2
import com.mogo.service.IMogoServiceApis
import java.util.*
@@ -38,6 +38,11 @@ class SpeedPanelView @JvmOverloads constructor(
var mSpeedLimmit = 60;
private val timer by lazy {
Timer()
}
init {
initEvent(context)
@@ -61,29 +66,30 @@ class SpeedPanelView @JvmOverloads constructor(
}
}
private val timerTask = object : TimerTask() {
override fun run() {
if (mLatLng != null) {
mSpeedLimmit = MogoMapUIController.getInstance()
.getLimitSpeed(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing)
UiThreadHandler.post {
val speed = (mLatLng!!.speed * 3.6f).toInt()
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6"))
mSpeedChartView.setValues(speed)
setBackgroundResource(if (speed > mSpeedLimmit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor)
private var timerTask : TimerTask? = null
override fun onAttachedToWindow() {
super.onAttachedToWindow() // 注册位置回调
mMogoServiceApis.registerCenterApi.registerCarLocationChangedListener(TAG, this)
// 开启定时查询速度
timerTask?.cancel()
val task = object : TimerTask() {
override fun run() {
if (mLatLng != null) {
mSpeedLimmit = MogoMapUIController.getInstance()
.getLimitSpeed(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing)
UiThreadHandler.post {
val speed = (mLatLng!!.speed * 3.6f).toInt()
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6"))
mSpeedChartView.setValues(speed)
setBackgroundResource(if (speed > mSpeedLimmit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor)
}
}
}
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
// 注册位置回调
mMogoServiceApis.registerCenterApi
.registerCarLocationChangedListener(TAG, this)
// 开启定时查询速度
Timer().schedule(timerTask, Date(), 100)
this.timerTask = task
timer.schedule(task, Date(), 100)
}
override fun onDetachedFromWindow() {
@@ -92,7 +98,7 @@ class SpeedPanelView @JvmOverloads constructor(
mMogoServiceApis.registerCenterApi
.unregisterMogoLocationListener(TAG)
try {
timerTask.cancel()
timerTask?.cancel()
} catch (e: Exception) {
e.printStackTrace()
}

View File

@@ -16,7 +16,6 @@ import com.mogo.eagle.core.function.call.bindingcar.CallerBindingCarListenerMana
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils

View File

@@ -63,7 +63,6 @@ public class V2XScenarioManager implements IV2XScenarioManager {
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent);
AiRoadMarker.INSTANCE.clear();
// 如果没有拿到之前的,根据类型分发
switch (v2XMessageEntity.getType()) {
case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING:

View File

@@ -13,8 +13,10 @@ import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import com.mogo.eagle.core.data.map.*
import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine
import com.mogo.eagle.core.function.api.map.listener.*
import com.mogo.eagle.core.function.api.v2x.*
import com.mogo.eagle.core.function.call.map.*
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.OnRoadListener
import com.mogo.eagle.core.function.call.v2x.*
import com.mogo.eagle.core.function.v2x.events.scenario.scene.road.*
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
@@ -62,6 +64,27 @@ object AiRoadMarker {
}
}
private val onClearAllMarker = object : OnClearAllMarker {
override fun onClearAllMarkers() {
Logger.d(TAG, "--- onClearAllMarkers ----")
val marker = this@AiRoadMarker.marker.get()
if (marker != null) {
Logger.d(TAG, "--- onClearAllMarkers ----2")
unMarker(marker)
}
}
override fun onClearAllMarkers(tag: String) {
Logger.d(TAG, "--- onClearAllMarkers ----: tag: $tag")
val marker = this@AiRoadMarker.marker.get()
if (marker != null) {
Logger.d(TAG, "--- onClearAllMarkers ----: tag: -- 1: $tag")
unMarker(marker)
}
}
}
private val markers = ConcurrentSet<Marker>()
private val options by lazy {
@@ -160,12 +183,12 @@ object AiRoadMarker {
try {
val loc = arrayOf(location.longitude, location.latitude)
carLocation.set(Triple(loc[0], loc[1], location.bearing.toDouble()))
val marker = marker.get() ?: return
val isOutOfRange = isOutOfRange(marker.poi_lon, marker.poi_lat, carLocation.get().first, carLocation.get().second, carLocation.get().third)
if (isOutOfRange) {
Logger.d(TAG, "--- onLocationChanged: isOutOfRange --- ")
unMarker(marker)
}
// val marker = marker.get() ?: return
// val isOutOfRange = isOutOfRange(marker.poi_lon, marker.poi_lat, carLocation.get().first, carLocation.get().second, carLocation.get().third)
// if (isOutOfRange) {
// Logger.d(TAG, "--- onLocationChanged: isOutOfRange --- ")
// unMarker(marker)
// }
} catch (t: Throwable) {
Logger.e(TAG, "error: ${t.message}")
}
@@ -174,11 +197,13 @@ object AiRoadMarker {
private fun onCreate() {
CallerMapRoadListenerManager.registerRoadListener(TAG, onRoadListener)
CallMarkersClearManager.addAllMarkersClearListener(TAG, onClearAllMarker)
CallerMapLocationListenerManager.addListener(TAG, onLocationListener, true)
}
private fun onDestroy() {
CallerMapRoadListenerManager.unRegisterRoadListener(TAG)
CallMarkersClearManager.removeAllMarkersClearListener(TAG)
CallerMapLocationListenerManager.removeListener(TAG, true)
pool.shutdownNow()
removeLine()
@@ -201,7 +226,15 @@ object AiRoadMarker {
}
fun marker(marker: Marker, drawMarker: Boolean) {
handler.removeCallbacks(checkExpiredTask)
val location = carLocation.get() ?: return
if (markers.contains(marker)) {
Logger.d(TAG, "--- enqueue --- cache hit ---")
return
}
synchronized(markers) {
markers += marker
}
this.marker.set(marker)
//施工中心点前方的自车行驶方向上300米距离
val l1 = MogoMap.getInstance().mogoMap.getCenterLineRangeInfo(marker.poi_lon, marker.poi_lat, location.third.toFloat(), 300f)
@@ -295,33 +328,7 @@ object AiRoadMarker {
markers -= marker
removeLine()
V2XAiRoadEventMarker.removeMarkers(null)
}
fun clear() {
hideLine()
V2XAiRoadEventMarker.removeMarkers(null)
}
fun restore() {
showLine()
val marker = marker.get()
if (marker != null) {
marker(marker, false)
}
}
private fun hideLine() {
val old = line.get()
if (old != null && !old.isDestroyed) {
old.isVisible = false
}
}
private fun showLine() {
val old = line.get()
if (old != null && !old.isDestroyed) {
old.isVisible = true
}
handler.removeCallbacks(checkExpiredTask)
}
private fun isOutOfRange(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean {
@@ -335,13 +342,18 @@ object AiRoadMarker {
fun receive(marker: Marker) {
val cur = this.marker.get()
Logger.d(TAG, "receive --- 1 ---")
if (cur == marker) {
Logger.d(TAG, "receive --- 2 ---")
val poi = this.marker.get()
val car = this.carLocation.get()
if (poi != null && car != null) {
val distance = DrivingDirectionUtils.distance(car.first, car.second, marker.poi_lon, marker.poi_lat)
if (distance < 300) {
val distance = DrivingDirectionUtils.distance(car.first, car.second, marker.poi_lon, marker.poi_lat) * 10000
Logger.d(TAG, "receive --- 3 ---:car:[${car.first}, ${car.second}] -> poi:[${marker.poi_lon}, ${marker.poi_lat}] --> distance:$distance")
if (distance < 200) {
checkExpired()
} else {
handler.removeCallbacks(checkExpiredTask)
}
}
}
@@ -349,7 +361,7 @@ object AiRoadMarker {
private fun checkExpired() {
handler.removeCallbacks(checkExpiredTask)
handler.postDelayed(checkExpiredTask, 5000)
handler.postDelayed(checkExpiredTask, 60_000)
}
data class Marker(