Merge remote-tracking branch 'origin/dev_robotaxi-d-app-module_290_220715_2.9.0' into test_robotaxi-d-app-module_290_220715_2.9.0.1

This commit is contained in:
renwj
2022-08-11 20:35:49 +08:00
2 changed files with 61 additions and 4 deletions

View File

@@ -7,11 +7,13 @@ import com.mogo.eagle.core.function.call.autopilot.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.zhjt.mogo_core_function_devatools.status.entity.RTKStatus
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
import kotlinx.coroutines.*
import mogo.telematics.pad.MessagePad.GnssInfo
import system_master.SystemStatusInfo.HealthInfo
import system_master.SystemStatusInfo.StatusInfo
import java.util.concurrent.atomic.*
internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatusListener {
internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatusListener, IMoGoAutopilotCarStateListener {
companion object {
const val TAG = "RTKImpl"
}
@@ -20,13 +22,39 @@ internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatu
AtomicReference<HealthInfo>(null)
}
private val isOldVersion = AtomicBoolean(false)
private var check: Job? = null
private var timeOutCheck: Job? = null
override fun onCreate() {
send(RTKStatus(getDesc(), getCode()))
Logger.d(TAG, "-- onCreate --")
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerAutopilotCarStatusListenerManager.addListener(TAG, this)
if (CallerAutoPilotManager.isConnected()) {
check()
}
}
private fun check() {
if (isOldVersion.get()) {
return
}
check?.takeIf { it.isActive }?.cancel()
launch {
CallerAutoPilotManager.sendStatusQueryReq()
delay(5000)
isOldVersion.set(true)
}.also {
check = it
}
}
override fun onAutopilotStatusRespByQuery(status: StatusInfo) {
check?.takeIf { it.isActive }?.cancel()
val info = status.healthInfoList?.find { "localization".equals(it.name, true) }
Log.d(TAG, "info: $info")
if (info != null) {
@@ -42,6 +70,36 @@ internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatu
healthInfo.set(null)
send(RTKStatus("", -1))
}
if (CallerAutoPilotManager.isConnected() && check == null && !isOldVersion.get()) {
check()
}
}
override fun onAutopilotCarStateData(gnssInfo: GnssInfo?) {
if (isOldVersion.get()) {
if (isRTKEnabled()) {
send(RTKStatus("RTK", 0))
timeOutCheck?.takeIf { it.isActive }?.cancel()
launch {
delay(4000)
send(RTKStatus("", -1))
}.also {
timeOutCheck = it
}
}
}
}
private fun isRTKEnabled(): Boolean {
val code = CallerAutoPilotStatusListenerManager.getAutoPilotReportMessageCode()
val gnssInfo = CallerAutopilotCarStatusListenerManager.getCurrentGnssInfo()
return CallerAutoPilotManager.isConnected() && (
code != "EHW_RTK" &&
code != "EHW_GNSS" &&
code != "ESYS_RTK_STATUS_FAULT" &&
code != "ELCT_RTK_STATUS_FAULT" &&
code != "ELCT_RTK_STATUS_UNKNOWN") && gnssInfo != null
}
private fun getDesc(): String {
@@ -54,7 +112,9 @@ internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatu
override fun onDestroy() {
super.onDestroy()
isOldVersion.set(false)
Logger.d(TAG, "-- onDestroy --")
CallerAutoPilotStatusListenerManager.removeListener(TAG)
CallerAutopilotCarStatusListenerManager.removeListener(TAG)
}
}

View File

@@ -93,11 +93,9 @@ class CommonDividerItemDecoration internal constructor(builder: Builder) : ItemD
if (state.didStructureChange()) {
mRightCache[position] = outRect.right
}
Log.d("UUUU", "step::1::$averageDistance: outRect.right: ${outRect.right} ::outRect.left: ${outRect.left}:: position: $position :: state: $state" )
} else if (spanIndex == spanCount - 1) {
outRect.right = mHorizontalExternalSpace + deltaHR
outRect.left = averageDistance - outRect.right
Log.d("UUUU", "step::2::$averageDistance: outRect.right: ${outRect.right} ::outRect.left: ${outRect.left} :: position: $position :: state: $state" )
} else {
if (state.didStructureChange()) {
outRect.left = mHorizontalInnerSpace - (mRightCache[position - 1] ?: 0)
@@ -108,7 +106,6 @@ class CommonDividerItemDecoration internal constructor(builder: Builder) : ItemD
outRect.left = mLeftCache[position]!!
outRect.right = mRightCache[position]!!
}
Log.d("UUUU", "step::2::$averageDistance: outRect.right: ${outRect.right} ::outRect.left: ${outRect.left} :: position: $position :: state: $state" )
}
} //所在的行数
if (lookUp.getSpanGroupIndex(childPosition, spanCount) == lookUp.getSpanGroupIndex(mFromPosition, spanCount)) {