fix the logger add add func of vip check and take over

This commit is contained in:
zhongchao
2022-09-19 19:01:13 +08:00
parent e3e7ba5050
commit 5303103646
23 changed files with 482 additions and 427 deletions

View File

@@ -403,7 +403,7 @@ public class BusOrderModel {
startLon, startLat,
location.getLongitude(), location.getLatitude() );
Logger.i(TAG, "judgeStartStation() distance = " + distance);
CallerLogger.INSTANCE.d(M_BUS + TAG,"judgeStartStation() distance = " + distance);
if ( distance > BusConst.ARRIVE_AT_END_STATION_DISTANCE ) {
distance = CoordinateUtils.calculateLineDistance(startLon, startLat,

View File

@@ -28,7 +28,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
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.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
@@ -1312,7 +1311,7 @@ public class TaxiModel {
public void updateOrderRouteInfo(List<MessagePad.Location> models) {
if (null == models || models.size() == 0) return;
if (mCurrentOCHOrder == null) return;
Logger.d(M_TAXI + TAG, "--------计算出sumLength开始---------- ");
CallerLogger.INSTANCE.d(M_TAXI + TAG, "--------计算出sumLength开始---------- ");
//转换成高德坐标系
if (mRoutePoints.size() > 0){
@@ -1323,12 +1322,12 @@ public class TaxiModel {
}
public void startDynamicCalculateRouteInfo() {
Logger.d(M_TAXI + TAG, "--------mCurrentOCHOrder---------- " + mCurrentOCHOrder);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "--------mCurrentOCHOrder---------- " + mCurrentOCHOrder);
if (mCurrentOCHOrder != null && mRoutePoints.size() == 0) {//根据orderNo去查询
queryOrderRouteList(mCurrentOCHOrder.orderNo);
}
Logger.d(M_TAXI + TAG, "--------mRoutePoints.size---------- " + mRoutePoints.size());
CallerLogger.INSTANCE.d(M_TAXI + TAG, "--------mRoutePoints.size---------- " + mRoutePoints.size());
if (mRoutePoints.size() > 0){
reportTotalDisAndTime();
@@ -1368,7 +1367,7 @@ public class TaxiModel {
}
double lastTime = lastSumLength / TaxiConst.TAXI_AVERAGE_SPEED * 3.6; //秒
Logger.d(M_TAXI + "dynamicCalculateRouteInfo"
CallerLogger.INSTANCE.d(M_TAXI + "dynamicCalculateRouteInfo"
, "---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime
+ " thread = "+ Thread.currentThread().getName());

View File

@@ -6,7 +6,6 @@ import android.os.Environment;
import android.util.Log;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.eagle.core.utilcode.util.FileUtils;
import com.zhjt.mogo_core_function_devatools.badcase.record.fft.FftFactory;
import com.zhjt.mogo_core_function_devatools.badcase.record.listener.RecordListener;
@@ -177,14 +176,14 @@ public class RecordHelper {
AudioRecordThread() {
bufferSize = AudioRecord.getMinBufferSize(currentConfig.getSampleRate(),
currentConfig.getChannelConfig(), currentConfig.getEncodingConfig()) * RECORD_AUDIO_BUFFER_TIMES;
Logger.d(TAG, "record buffer size = %s", bufferSize);
CallerLogger.INSTANCE.d("$M_DEVA$TAG", "record buffer size = %s", bufferSize);
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, currentConfig.getSampleRate(),
currentConfig.getChannelConfig(), currentConfig.getEncodingConfig(), bufferSize);
if (currentConfig.getFormat() == RecordConfig.RecordFormat.MP3) {
if (mp3EncodeThread == null) {
initMp3EncoderThread(bufferSize);
} else {
Logger.e(TAG, "mp3EncodeThread != null, 请检查代码");
CallerLogger.INSTANCE.e("$M_DEVA$TAG", "mp3EncodeThread != null, 请检查代码");
}
}
}
@@ -206,7 +205,7 @@ public class RecordHelper {
private void startPcmRecorder() {
state = RecordState.RECORDING;
notifyState();
Logger.d(TAG, "开始录制 Pcm");
CallerLogger.INSTANCE.d("$M_DEVA$TAG", "开始录制 Pcm");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(tmpFile);
@@ -224,7 +223,7 @@ public class RecordHelper {
if (state == RecordState.STOP) {
makeFile();
} else {
Logger.i(TAG, "暂停!");
CallerLogger.INSTANCE.i("$M_DEVA$TAG", "暂停!");
}
} catch (Exception e) {
notifyError("录音失败");
@@ -240,7 +239,7 @@ public class RecordHelper {
if (state != RecordState.PAUSE) {
state = RecordState.IDLE;
notifyState();
Logger.d(TAG, "录音结束");
CallerLogger.INSTANCE.d("$M_DEVA$TAG", "录音结束");
}
}
@@ -268,7 +267,7 @@ public class RecordHelper {
notifyState();
stopMp3Encoded();
} else {
Logger.d(TAG, "暂停");
CallerLogger.INSTANCE.d("$M_DEVA$TAG", "暂停");
}
}
}
@@ -283,7 +282,7 @@ public class RecordHelper {
}
});
} else {
Logger.e(TAG, "mp3EncodeThread is null, 代码业务流程有误,请检查!! ");
CallerLogger.INSTANCE.e("$M_DEVA$TAG", "mp3EncodeThread is null, 代码业务流程有误,请检查!! ");
}
}
@@ -302,7 +301,7 @@ public class RecordHelper {
break;
}
notifyFinish();
Logger.i(TAG, "录音完成! path: %s 大小:%s", resultFile.getAbsoluteFile(), resultFile.length());
CallerLogger.INSTANCE.i("$M_DEVA$TAG", "录音完成! path: %s 大小:%s", resultFile.getAbsoluteFile(), resultFile.length());
}
/**
@@ -377,7 +376,7 @@ public class RecordHelper {
private String getFilePath(String fileName) {
if (!FileUtils.createOrExistsDir(ROOT_PATH)) {
Logger.w(TAG, "文件夹创建失败:%s", ROOT_PATH);
CallerLogger.INSTANCE.w("$M_DEVA$TAG", "文件夹创建失败:%s", ROOT_PATH);
return null;
}
@@ -388,7 +387,7 @@ public class RecordHelper {
private String getTempFilePath() {
if (!FileUtils.createOrExistsDir(TEMP_PATH)) {
Logger.e(TAG, "文件夹创建失败:%s", TEMP_PATH);
CallerLogger.INSTANCE.e("$M_DEVA$TAG", "文件夹创建失败:%s", TEMP_PATH);
}
String fileName = String.format(Locale.getDefault(), "tmp_%s", FileUtils.getNowString(new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.SIMPLIFIED_CHINESE)));
return String.format(Locale.getDefault(), "%s%s.pcm", TEMP_PATH, fileName);

View File

@@ -36,19 +36,14 @@ class FuncConfigCenter : IMogoOnMessageListener<FuncConfig> {
.registerOnMessageListener(FUNC_CONFIG_TYPE, this)
UiThreadHandler.postDelayed({
funcConfigNetWorkModel.requestFuncConfig({
// SPUtils.getInstance("biz_config").put("config", GsonUtils.toJson(it))
// refreshConfig(it)
//todo test
val bizJson = SPUtils.getInstance("biz_config")
.getString("config", GsonUtils.toJson(defaultFuncConfig()))
refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java))
SPUtils.getInstance("biz_config").put("config", GsonUtils.toJson(it))
refreshConfig(it)
}, {
val bizJson = SPUtils.getInstance("biz_config")
.getString("config", GsonUtils.toJson(defaultFuncConfig()))
refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java))
})
}, 1000L * 30)
}, 1000L * 5)
}

View File

@@ -4,6 +4,7 @@ import android.util.Log
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.request
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigConst
@@ -25,6 +26,7 @@ class FuncConfigNetWorkModel {
onError: ((String) -> Unit)? = null
) {
request<BaseResponse<FuncConfig>> {
val map = mutableMapOf<String, Any>()
start {
if (success == null) {
success = onSuccess
@@ -32,16 +34,18 @@ class FuncConfigNetWorkModel {
if (error == null) {
error = onError
}
}
loader {
val map = mutableMapOf<String, Any>()
//todo test
// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["sn"] = "X20202203105S688HZ"
// map["mac"] = DeviceUtils.getMacAddress()
map["mac"] = "48:b0:2d:3a:bc:78"
// map["channelVersion"] = FuncConfigConst.getChannelCode()
map["channelVersion"] = 1
getNetWorkApi().funcConfig(map)
}
loader {
apiCall {
getNetWorkApi().funcConfig(map)
}
}
onSuccess {
if (it.result != null) {

View File

@@ -5,7 +5,6 @@ import com.mogo.eagle.core.data.deva.scene.SceneModule
import com.mogo.eagle.core.data.deva.scene.SceneModuleTAG
import com.mogo.eagle.core.data.deva.scene.SceneTAG
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.Scene.Companion.scene
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
@@ -71,7 +70,6 @@ class SceneManager {
//默认未创建的符合scene tag首次初始化logger=true
scene.addChangeListener { change ->
Logger.i("emArrow","scene change : $change")
sceneModuleTAG.map.iterator().forEach { map ->
val sceneModule = map.value
sceneModule.name?.let {

View File

@@ -12,6 +12,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.*
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.util.*
import com.zhjt.mogo_core_function_devatools.status.entity.CanStatus
import com.zhjt.mogo_core_function_devatools.status.entity.GpsStatus
@@ -50,10 +51,10 @@ object StatusManager {
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
super.onAutopilotGuardian(guardianInfo)
guardianInfo?.code?.takeIf {
Logger.d(TAG, "-- onAutopilotGuardian ---: code: $it")
CallerLogger.d("$M_DEVA$TAG", "-- onAutopilotGuardian ---: code: $it")
it.contains("RTK_STATUS", true) || it.contains("CAN", true) || it == "ILCT_RTK_OR_SLAM_CHANGE"
}?.run {
Logger.d(TAG, "-- onAutopilotGuardian trigger req ---: code: $this")
CallerLogger.d("$M_DEVA$TAG", "-- onAutopilotGuardian trigger req ---: code: $this")
req()
}
}

View File

@@ -4,7 +4,8 @@ import android.content.*
import android.util.*
import com.mogo.eagle.core.function.api.autopilot.*
import com.mogo.eagle.core.function.call.autopilot.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.zhjt.mogo_core_function_devatools.status.entity.RTKStatus
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
import kotlinx.coroutines.*
@@ -31,7 +32,7 @@ internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatu
override fun onCreate() {
send(RTKStatus(getDesc(), getCode()))
Logger.d(TAG, "-- onCreate --")
CallerLogger.d("$M_DEVA$TAG", "-- onCreate --")
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerAutopilotCarStatusListenerManager.addListener(TAG, this)
if (CallerAutoPilotManager.isConnected()) {
@@ -67,7 +68,7 @@ internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatu
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
super.onAutopilotIpcConnectStatusChanged(status, reason)
if (!CallerAutoPilotManager.isConnected()) {
Logger.d(TAG, "工控机断开了....")
CallerLogger.d("$M_DEVA$TAG", "工控机断开了....")
healthInfo.set(null)
send(RTKStatus("", -1))
}
@@ -114,7 +115,7 @@ internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatu
override fun onDestroy() {
super.onDestroy()
isOldVersion.set(false)
Logger.d(TAG, "-- onDestroy --")
CallerLogger.d("$M_DEVA$TAG", "-- onDestroy --")
CallerAutoPilotStatusListenerManager.removeListener(TAG)
CallerAutopilotCarStatusListenerManager.removeListener(TAG)
}

View File

@@ -7,8 +7,8 @@ import androidx.core.content.*
import androidx.recyclerview.widget.*
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.util.*
import com.zhjt.mogo_core_function_devatools.*
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.R.drawable
import com.zhjt.mogo_core_function_devatools.status.entity.*
@@ -16,7 +16,6 @@ import com.zhjt.mogo_core_function_devatools.status.entity.IpcStatus
import com.zhjt.mogo_core_function_devatools.status.entity.Status
import com.zhjt.mogo_core_function_devatools.status.entity.TracingStatus.Tracing.*
import com.zhjt.mogo_core_function_devatools.status.ui.adapter.StatusAdapter.StatusViewHolder
import kotlinx.coroutines.*
internal class StatusAdapter(val ctx: Context, var data: ArrayList<Status>): RecyclerView.Adapter<StatusViewHolder>() {
@@ -124,7 +123,7 @@ internal class StatusAdapter(val ctx: Context, var data: ArrayList<Status>): Rec
is TracingStatus -> {
val extra = status.state.extra
val extraDesc = if (extra != null && extra.isNotEmpty()) extra.values.joinToString(",") else ""
Logger.d(TAG, "traceing_state: $status -> extra: $extraDesc :: extra: $extra")
CallerLogger.d("$M_DEVA$TAG", "traceing_state: $status -> extra: $extraDesc :: extra: $extra")
when(status.state) {
//"轨迹类型:${ if (status.state == TRACK_LOADED) "循迹" else if (status.state == ROUTE_LOADED) "自主算路" else "暂无轨迹" }"
MAP_TRA_TYPE -> {

View File

@@ -139,6 +139,7 @@ dependencies {
api project(':core:mogo-core-function-call')
api project(':core:mogo-core-function-api')
api project(':libraries:mogo-adas')
api project(':libraries:map-usbcamera')
api project(':libraries:mogo-adas-other')
}

View File

@@ -33,7 +33,6 @@ import com.mogo.eagle.core.data.camera.CameraEntity
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RTS
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2I
import com.mogo.eagle.core.data.enums.SidePattern
@@ -94,6 +93,10 @@ import com.mogo.eagle.core.utilcode.util.*
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
import com.mogo.map.MogoMap
import com.mogo.module.common.enums.*
import com.zhidao.support.adas.high.common.MogoReport.Code.Error.EAGENT.FATAL
import com.zhidao.support.adas.high.common.MogoReport.Code.Error.EMAP.*
import com.zhidao.support.adas.high.common.MogoReport.Code.Error.ESYS.TOPIC_FREQ_DROPED
import com.zhidao.support.adas.high.common.MogoReport.Code.Error.ETELEMATICS.AICLOUD_AUTH_ERROR
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
import com.zhjt.service_biz.BizConfig
import kotlinx.android.synthetic.main.fragment_hmi.*
@@ -112,12 +115,12 @@ import java.util.*
* 预警图层
*/
@Route(path = MoGoFragmentPaths.PATH_FRAGMENT_HMI)
class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
IMoGoWaringProvider,
IMoGoHmiViewProxy,
MoGoHmiContract.View,
IMoGoAutopilotRecordListener,
IMoGoAutopilotStatusListener, IViewNotificationProvider {
class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
IMoGoWaringProvider,
IMoGoHmiViewProxy,
MoGoHmiContract.View,
IMoGoAutopilotRecordListener,
IMoGoAutopilotStatusListener, IViewNotificationProvider {
private val TAG = "MoGoHmiFragment"
// DebugSettingView
@@ -153,11 +156,12 @@ import java.util.*
//工控机节点上报列表
private var reportList = arrayListOf<ReportEntity>()
//工控机上报列表悬浮窗
private var reportListFloatWindow: ReportListFloatWindow?=null
private var ipcReportWindow: IPCReportWindow?=null
private var adUpgradeDialog: AdUpgradeDialog?=null
//工控机上报列表悬浮窗
private var reportListFloatWindow: ReportListFloatWindow? = null
private var ipcReportWindow: IPCReportWindow? = null
private var adUpgradeDialog: AdUpgradeDialog? = null
private var lastSpeakJob: Job? = null
@@ -191,8 +195,8 @@ import java.util.*
}
/**ivCameraIcon?.setOnLongClickListener {
activity?.let { it1 -> CarcorderPreviewView.show(it1) }
true
activity?.let { it1 -> CarcorderPreviewView.show(it1) }
true
}*/
ivToolsIcon?.setOnClickListener {
@@ -272,45 +276,62 @@ import java.util.*
}
}
override fun getNotificationView(): IViewNotification? = context?.let { V2XNotificationView(it) }
override fun getNotificationView(): IViewNotification? =
context?.let { V2XNotificationView(it) }
override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) {
CallerLogger.d("$M_HMI$TAG", "recordKey=${recordPanel.key},stat=${recordPanel.stat}")
if(BadCaseConfig.recordKeyList.contains(recordPanel.key)){
if(recordPanel.stat == 100 || recordPanel.stat == 101){
if (BadCaseConfig.recordKeyList.contains(recordPanel.key)) {
if (recordPanel.stat == 100 || recordPanel.stat == 101) {
//成功结束录制
TipToast.shortTip("${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())} bag录制成功")
TipToast.shortTip(
"${
millis2String(
System.currentTimeMillis(),
TimeUtils.getHourMinSecondFormat()
)
} bag录制成功"
)
}
if(recordPanel.stat == 200){
if (recordPanel.stat == 200) {
//录制失败
TipToast.shortTip("${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())} bag录制失败")
TipToast.shortTip(
"${
millis2String(
System.currentTimeMillis(),
TimeUtils.getHourMinSecondFormat()
)
} bag录制失败"
)
}
return
}
//在工控机taxi2.3.0版本和Bus2.4.0版本上不支持被动录包,不进行被动录包的弹窗
BadCaseConfig.dockerVersion?.let {
if(it.contains("taxi") && it.contains("2.3.0")){
if (it.contains("taxi") && it.contains("2.3.0")) {
return
}
if(it.contains("bus") && it.contains("2.4.0")){
if (it.contains("bus") && it.contains("2.4.0")) {
return
}
}
//处于非美化模式下弹窗是地图数据采集任务时即type=2时不弹窗
if (!FunctionBuildConfig.isDemoMode && (recordPanel.stat == 100 || recordPanel.stat == 101) && recordPanel.type!=2) {
if (!FunctionBuildConfig.isDemoMode && (recordPanel.stat == 100 || recordPanel.stat == 101) && recordPanel.type != 2) {
//只在司机屏生效,乘客屏不生效
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
activity?.let { CallerDevaToolsManager.onReceiveBadCaseRecord(recordPanel, it) }
}
}
if (!FunctionBuildConfig.isDemoMode && recordPanel.type == 2 && (
recordPanel.stat == 101 || //工控机采集完成-被动完成
recordPanel.stat == 100 || //工控机采集完成-主动完成
recordPanel.stat == 102 || //工控机达到最大采集时长
recordPanel.stat == 103) //工控机磁盘满了
recordPanel.stat == 101 || //工控机采集完成-被动完成
recordPanel.stat == 100 || //工控机采集完成-主动完成
recordPanel.stat == 102 || //工控机达到最大采集时长
recordPanel.stat == 103) //工控机磁盘满了
) {
CallerMapDataCollectorManager.finish(recordPanel.id, recordPanel.stat, "", recordPanel.filename
?: "", recordPanel.note ?: "")
CallerMapDataCollectorManager.finish(
recordPanel.id, recordPanel.stat, "", recordPanel.filename
?: "", recordPanel.note ?: ""
)
}
}
@@ -354,15 +375,19 @@ import java.util.*
* @param warningReportList 提醒级别上报数据列表
* @param reportLevel 1:error级别 2:warning级别
*/
override fun showIPCReportWindow(errorReportList: ArrayList<ReportEntity>,warningReportList: ArrayList<ReportEntity>,reportLevel: Int) {
ThreadUtils.runOnUiThread{
if(reportLevel == 1){
if(ipcReportWindow==null){
ipcReportWindow= activity?.let { IPCReportWindow(it) }
ipcReportWindow?.setClickListener(object: IPCReportWindow.ClickListener{
override fun showIPCReportWindow(
errorReportList: ArrayList<ReportEntity>,
warningReportList: ArrayList<ReportEntity>,
reportLevel: Int
) {
ThreadUtils.runOnUiThread {
if (reportLevel == 1) {
if (ipcReportWindow == null) {
ipcReportWindow = activity?.let { IPCReportWindow(it) }
ipcReportWindow?.setClickListener(object : IPCReportWindow.ClickListener {
override fun closeWindow() {
ipcReportWindow?.hideFloatWindow()
ipcReportWindow =null
ipcReportWindow = null
}
})
ipcReportWindow?.let {
@@ -371,7 +396,7 @@ import java.util.*
}
ipcReportWindow?.showFloatWindow()
}
ipcReportWindow?.refreshData(errorReportList,warningReportList,reportLevel)
ipcReportWindow?.refreshData(errorReportList, warningReportList, reportLevel)
}
}
@@ -430,41 +455,41 @@ import java.util.*
})
}
toolsViewFloat = WarningFloat.with(it)
.setTag("ToolsViewFloat")
.setLayout(toolsView!!)
.setSidePattern(SidePattern.LEFT)
.setGravity(Gravity.LEFT)
.setImmersionStatusBar(true)
.setWindowHeight(LayoutParams.MATCH_PARENT)
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
.setTag("ToolsViewFloat")
.setLayout(toolsView!!)
.setSidePattern(SidePattern.LEFT)
.setGravity(Gravity.LEFT)
.setImmersionStatusBar(true)
.setWindowHeight(LayoutParams.MATCH_PARENT)
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.addWarningStatusListener(object : IMoGoWarningStatusListener {
override fun onDismiss() {
toolsViewFloat = null
toolsView = null
// TODO:("")
}
})
.show()
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.addWarningStatusListener(object : IMoGoWarningStatusListener {
override fun onDismiss() {
toolsViewFloat = null
toolsView = null
// TODO:("")
}
})
.show()
} else {
toolsViewFloat?.show()
}
@@ -509,7 +534,7 @@ import java.util.*
ivAiCollectTools.visibility = View.VISIBLE
CallerDevaToolsManager.initBadCase(ivBadCaseTools)
CallerDevaToolsManager.initAiCollect(ivAiCollectTools)
}else{
} else {
ivBadCaseTools.visibility = View.GONE
ivAiCollectTools.visibility = View.GONE
}
@@ -586,20 +611,20 @@ import java.util.*
mDebugSettingView = DebugSettingView(it)
Log.i("DebugViewSwitchLog", "new DebugSettingView")
mDebugSettingView?.reportInit(reportList)
mDebugSettingView?.setClickListener(object: DebugSettingView.ClickListener{
mDebugSettingView?.setClickListener(object : DebugSettingView.ClickListener {
override fun showReportListWindow(show: Boolean) {
if(show){
if (show) {
//打开工控机上报列表
reportListFloatWindow = ReportListFloatWindow(it)
reportListFloatWindow?.showFloatWindow()
reportListFloatWindow?.refreshData(reportList)
}else{
} else {
//关闭工控机上报列表
reportListFloatWindow?.hideFloatWindow()
}
}
})
if(mDebugSettingView!=null){
if (mDebugSettingView != null) {
Log.i("DebugViewSwitchLog", "new DebugSettingView success")
}
}
@@ -607,38 +632,39 @@ import java.util.*
var gravity = Gravity.RIGHT
//调试窗默认靠右显示Bus的乘客端右端有视图覆盖调试窗靠左显示
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) &&
AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
) {
side = SidePattern.LEFT
gravity = Gravity.LEFT
}
mDebugSettingViewFloat = WarningFloat.with(it)
.setTag("DebugSettingView")
.setLayout(mDebugSettingView!!)
.setSidePattern(side)
.setGravity(gravity, offsetY = 70)
.setImmersionStatusBar(true)
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
.setTag("DebugSettingView")
.setLayout(mDebugSettingView!!)
.setSidePattern(side)
.setGravity(gravity, offsetY = 70)
.setImmersionStatusBar(true)
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.show()
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.show()
}
}
}
@@ -653,15 +679,16 @@ import java.util.*
*/
@Synchronized
override fun showWarningV2X(
v2xType: String,
alertContent: CharSequence?,
ttsContent: String?,
tag: String?,
listener: IMoGoWarningStatusListener?,
playTts: Boolean,
expireTime: Long
v2xType: String,
alertContent: CharSequence?,
ttsContent: String?,
tag: String?,
listener: IMoGoWarningStatusListener?,
playTts: Boolean,
expireTime: Long
) {
val playTTS = playTts && !AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)
val playTTS =
playTts && !AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)
activity?.let {
val warningContent = alertContent
?: EventTypeEnum.getWarningContent(v2xType)
@@ -672,70 +699,87 @@ import java.util.*
val content = mViewNotificationProvider?.getNotificationView() ?: return
content.setWarningIcon(EventTypeEnum.getWarningIcon(v2xType))
content.setWarningContent(warningContent)
Log.d("$M_HMI$TAG", "--- show v2x dialog 1 ---: info -> v2x-type: $v2xType : expireTime: $expireTime")
Reminder.enqueue(this@MoGoHmiFragment, object : PopupWindowReminder(PopupWindow(content, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).also { itx ->
itx.isTouchable = false
itx.isFocusable = false
itx.isClippingEnabled = false
itx.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
val transition = Slide(when(content.sidePattern) {
LEFT, RESULT_LEFT-> Gravity.LEFT
RIGHT, RESULT_RIGHT -> Gravity.RIGHT
TOP, RESULT_TOP -> Gravity.TOP
BOTTOM, RESULT_BOTTOM -> Gravity.BOTTOM
else -> Gravity.TOP
}).also { t ->
t.interpolator = AccelerateDecelerateInterpolator()
t.duration = 200
}
if (VERSION.SDK_INT >= VERSION_CODES.M) {
itx.enterTransition = transition
itx.exitTransition = transition
}
}) {
override fun show() {
val parent = it.window.decorView
parent.doOnAttach {
Log.d("$M_HMI$TAG", "--- show v2x dialog 2 ---: info -> v2x-type: $v2xType : expireTime: $expireTime")
popupWindow.showAtLocation(parent, content.layoutGravity, 0, 0)
}
}
override fun isOverride(): Boolean {
return true
}
override fun key(): String {
return v2xType
}
}, object : IStateChangeListener {
override fun onShow(reminder: IReminder) {
listener?.onShow()
lastShowV2XJob?.safeCancel()
lastSpeakJob?.safeCancel()
showingV2XTip = reminder
lifecycleScope.launch {
delay(expireTime)
}.also { itx ->
lastShowV2XJob = itx
}.invokeOnCompletion { _ ->
reminder.hide()
}
if (ttsContent != null && !TextUtils.isEmpty(ttsContent) && playTTS) {
lifecycleScope.launch {
speak(it, ttsContent)
}.also { itx ->
lastSpeakJob = itx
Log.d(
"$M_HMI$TAG",
"--- show v2x dialog 1 ---: info -> v2x-type: $v2xType : expireTime: $expireTime"
)
Reminder.enqueue(
this@MoGoHmiFragment,
object : PopupWindowReminder(
PopupWindow(
content,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
).also { itx ->
itx.isTouchable = false
itx.isFocusable = false
itx.isClippingEnabled = false
itx.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
val transition = Slide(
when (content.sidePattern) {
LEFT, RESULT_LEFT -> Gravity.LEFT
RIGHT, RESULT_RIGHT -> Gravity.RIGHT
TOP, RESULT_TOP -> Gravity.TOP
BOTTOM, RESULT_BOTTOM -> Gravity.BOTTOM
else -> Gravity.TOP
}
).also { t ->
t.interpolator = AccelerateDecelerateInterpolator()
t.duration = 200
}
if (VERSION.SDK_INT >= VERSION_CODES.M) {
itx.enterTransition = transition
itx.exitTransition = transition
}
}) {
override fun show() {
val parent = it.window.decorView
parent.doOnAttach {
Log.d(
"$M_HMI$TAG",
"--- show v2x dialog 2 ---: info -> v2x-type: $v2xType : expireTime: $expireTime"
)
popupWindow.showAtLocation(parent, content.layoutGravity, 0, 0)
}
}
}
override fun onHide(reminder: IReminder) {
listener?.onDismiss()
showingV2XTip = null
showWarning(WarningDirectionEnum.ALERT_WARNING_NON)
}
})
override fun isOverride(): Boolean {
return true
}
override fun key(): String {
return v2xType
}
},
object : IStateChangeListener {
override fun onShow(reminder: IReminder) {
listener?.onShow()
lastShowV2XJob?.safeCancel()
lastSpeakJob?.safeCancel()
showingV2XTip = reminder
lifecycleScope.launch {
delay(expireTime)
}.also { itx ->
lastShowV2XJob = itx
}.invokeOnCompletion { _ ->
reminder.hide()
}
if (ttsContent != null && !TextUtils.isEmpty(ttsContent) && playTTS) {
lifecycleScope.launch {
speak(it, ttsContent)
}.also { itx ->
lastSpeakJob = itx
}
}
}
override fun onHide(reminder: IReminder) {
listener?.onDismiss()
showingV2XTip = null
showWarning(WarningDirectionEnum.ALERT_WARNING_NON)
}
})
}
}
@@ -782,8 +826,8 @@ import java.util.*
* @param checkLightId 0-都是默认不亮起1-红2-黄3-绿
* @param lightSource 1:云端下发2:自车感知
*/
override fun showWarningTrafficLight(checkLightId: Int,lightSource: Int) {
mViewTrafficLight?.showWarningTrafficLight(checkLightId,lightSource)
override fun showWarningTrafficLight(checkLightId: Int, lightSource: Int) {
mViewTrafficLight?.showWarningTrafficLight(checkLightId, lightSource)
}
override fun isWarningTrafficLightShow(): Boolean {
@@ -857,7 +901,7 @@ import java.util.*
* @see WarningDirectionEnum
*/
override fun showWarning(direction: WarningDirectionEnum) {
Log.d(TAG,"showWarning====")
Log.d(TAG, "showWarning====")
flV2XWarningView?.showWarning(direction)
flicker(flV2XWarningView)
}
@@ -906,42 +950,42 @@ import java.util.*
mNoticeFloat = it?.let { it1 ->
noticeBannerView?.let { it2 ->
WarningFloat.with(it1)
.setTag(WaringConst.NOTICE_FOR_TRAFFIC_KEY)
.setLayout(it2)
.setSidePattern(SidePattern.TOP)
.setCountDownTime(60 * 1000 * 3)
.setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110)
.setImmersionStatusBar(true)
.addWarningStatusListener(object : IMoGoWarningStatusListener {
override fun onShow() {
// 创建弹窗成功才进行TTS播报
.setTag(WaringConst.NOTICE_FOR_TRAFFIC_KEY)
.setLayout(it2)
.setSidePattern(SidePattern.TOP)
.setCountDownTime(60 * 1000 * 3)
.setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110)
.setImmersionStatusBar(true)
.addWarningStatusListener(object : IMoGoWarningStatusListener {
override fun onShow() {
// 创建弹窗成功才进行TTS播报
// AIAssist.getInstance(activity)
// .speakTTSVoice("")
}
}
})
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
})
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.show()
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.show()
}
}
}
@@ -956,41 +1000,41 @@ import java.util.*
mNoticeFloat = it.let { it1 ->
noticeBannerView?.let { it2 ->
WarningFloat.with(it1)
.setTag(WaringConst.NOTICE_FOR_NORMAL_KEY)
.setLayout(it2)
.setSidePattern(SidePattern.TOP)
.setCountDownTime(10000)
.setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110)
.setImmersionStatusBar(true)
.addWarningStatusListener(object : IMoGoWarningStatusListener {
override fun onShow() {
// 创建弹窗成功才进行TTS播报
// AIAssist.getInstance(activity)
// .speakTTSVoice("")
}
})
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
.setTag(WaringConst.NOTICE_FOR_NORMAL_KEY)
.setLayout(it2)
.setSidePattern(SidePattern.TOP)
.setCountDownTime(10000)
.setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110)
.setImmersionStatusBar(true)
.addWarningStatusListener(object : IMoGoWarningStatusListener {
override fun onShow() {
// 创建弹窗成功才进行TTS播报
// AIAssist.getInstance(activity)
// .speakTTSVoice("")
}
})
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.show()
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.show()
}
}
}
@@ -1077,7 +1121,7 @@ import java.util.*
dismissToolsFloatView()
}
@BizConfig(V2I,"",BIZ_RTS)
@BizConfig(V2I, "", BIZ_RTS)
override fun showVideoDialog(infList: List<Infrastructure>) {
context?.let {
if (roadVideoDialog == null) {
@@ -1087,7 +1131,7 @@ import java.util.*
}
}
@BizConfig(V2I,"", BIZ_RTS)
@BizConfig(V2I, "", BIZ_RTS)
private fun showCameraList(cameraList: List<CameraEntity>?) {
context?.let {
if (cameraViewFloat == null) {
@@ -1116,40 +1160,40 @@ import java.util.*
}
})
cameraViewFloat = WarningFloat.with(it)
.setTag("CameraListFloat")
.setLayout(cameraListView!!)
.setSidePattern(SidePattern.RIGHT)
.setGravity(Gravity.RIGHT, -40, 255)
.setImmersionStatusBar(true)
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
.setTag("CameraListFloat")
.setLayout(cameraListView!!)
.setSidePattern(SidePattern.RIGHT)
.setGravity(Gravity.RIGHT, -40, 255)
.setImmersionStatusBar(true)
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.enterAnim(view, params, windowManager, sidePattern)
?.apply {
interpolator = OvershootInterpolator()
}
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.addWarningStatusListener(object : IMoGoWarningStatusListener {
override fun onDismiss() {
cameraViewFloat = null
cameraListView = null
ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_nor)
}
})
.show()
override fun exitAnim(
view: View,
params: LayoutParams,
windowManager: WindowManager,
sidePattern: SidePattern
): Animator? =
super.exitAnim(view, params, windowManager, sidePattern)
?.setDuration(200)
})
.addWarningStatusListener(object : IMoGoWarningStatusListener {
override fun onDismiss() {
cameraViewFloat = null
cameraListView = null
ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_nor)
}
})
.show()
} else {
cameraViewFloat?.show()
}
@@ -1180,9 +1224,9 @@ import java.util.*
}
}
private var isLeftLight :Boolean = false
private var isRightLight :Boolean = false
private var isDisappare :Boolean = false
private var isLeftLight: Boolean = false
private var isRightLight: Boolean = false
private var isDisappare: Boolean = false
/**
* 显示转向灯效果 if (HmiBuildConfig.isShowBadCaseView) {
@@ -1287,13 +1331,14 @@ import java.util.*
padSn: String,
releaseId: String
) {
ThreadUtils.runOnUiThread{
if(adUpgradeDialog == null){
adUpgradeDialog = AdUpgradeDialog(requireContext(),images, padSn, releaseId)
adUpgradeDialog?.setClickListener(object: AdUpgradeDialog.ClickListener{
ThreadUtils.runOnUiThread {
if (adUpgradeDialog == null) {
adUpgradeDialog = AdUpgradeDialog(requireContext(), images, padSn, releaseId)
adUpgradeDialog?.setClickListener(object : AdUpgradeDialog.ClickListener {
override fun confirm() {
//确认升级
CallerBindingcarManager.getBindingcarProvider().upgradeConfirm(images, padSn, releaseId)
CallerBindingcarManager.getBindingcarProvider()
.upgradeConfirm(images, padSn, releaseId)
AdUpgradeStateHelper.setConfirmUpgrade(true)
ToastUtils.showLong("最新版本下载中...")
adUpgradeDialog?.dismiss()
@@ -1312,10 +1357,10 @@ import java.util.*
}
override fun showAdUpgradeStatus(ipcUpgradeStateInfo: IPCUpgradeStateInfo) {
ThreadUtils.runOnUiThread{
ThreadUtils.runOnUiThread {
toolsView?.showAdUpgradeStatus(ipcUpgradeStateInfo)
ipcUpgradeStateInfo.status.let {
if(AdUpgradeStateHelper.isUpgradeSuccess(it)){
if (AdUpgradeStateHelper.isUpgradeSuccess(it)) {
ToastUtils.showLong("升级成功")
AdUpgradeStateHelper.setConfirmUpgrade(false)
}
@@ -1342,17 +1387,37 @@ import java.util.*
*/
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
guardianInfo?.let {
if(reportList.size>49){
if (reportList.size > 49) {
reportList.removeLast()
}
reportList.add(0,
ReportEntity(TimeUtils.millis2String(System.currentTimeMillis()),
it.src,it.level,it.msg,it.code,it.resultList,it.actionsList))
reportList.add(
0,
ReportEntity(
TimeUtils.millis2String(System.currentTimeMillis()),
it.src, it.level, it.msg, it.code, it.resultList, it.actionsList
)
)
}
reportListFloatWindow?.let {
ThreadUtils.runOnUiThread{
ThreadUtils.runOnUiThread {
reportListFloatWindow?.let {
it.refreshData(reportList)
}
guardianInfo?.let {
when (it.code) {
NODE, NODE_DEAD,
EXIT_AUTOPILOT_FOR_PLANNING,
EXIT_AUTOPILOT_FOR_LOCATION,
EXIT_AUTOPILOT_FOR_CHASSIS,
EXIT_AUTOPILOT_FOR_DISTANCE,
AICLOUD_AUTH_ERROR,
TOPIC_FREQ_DROPED,
FATAL -> {
}
}
}
}
}
@@ -1362,12 +1427,16 @@ import java.util.*
.navigation() as BaseFragment
activity?.supportFragmentManager?.beginTransaction()
?.setCustomAnimations(R.anim.slide_in, R.anim.fade_out)?.apply {
if (!fragmentOverview.isAdded) {
add(R.id.module_main_id_smp_fragment, fragmentOverview, fragmentOverview.tagName)
} else {
if (!fragmentOverview.isAdded) {
add(
R.id.module_main_id_smp_fragment,
fragmentOverview,
fragmentOverview.tagName
)
} else {
show(fragmentOverview)
}.commitAllowingStateLoss()
}
}.commitAllowingStateLoss()
}
CallerDevaToolsManager.hideStatusBar()
}

View File

@@ -5,7 +5,8 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPointCloudListener
import com.mogo.eagle.core.function.api.base.IMoGoSubscriber
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPointCloudListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
import com.zhidaoauto.map.sdk.open.business.PointCloudHelper
import java.math.BigDecimal
@@ -44,7 +45,7 @@ class MapPointCloudSubscriber private constructor()
try {// 根据配置动态控制点云是否绘制
if (FunctionBuildConfig.isDrawPointCloudData && isDrawCloudPointDockerVersion()) {
if (!isDrawPointCloud) {
Logger.d(TAG, "====开启点云渲染====")
CallerLogger.d(M_MAP + TAG, "====开启点云渲染====")
isDrawPointCloud = true
PointCloudHelper.setIsDrawPointCloud(true)//打开点云绘制
}
@@ -58,12 +59,12 @@ class MapPointCloudSubscriber private constructor()
* @param isStrong 是否加粗显示
* @return 是否执行
*/
Logger.d(TAG, "====开始传入地图点云数据====")
CallerLogger.d(M_MAP + TAG, "====开始传入地图点云数据====")
val result = PointCloudHelper.updatePointCloudDataByPb(pointCloud, true, false, false)
Logger.d(TAG, "====结束传入地图点云数据=====$result")
CallerLogger.d(M_MAP + TAG, "====结束传入地图点云数据=====$result")
} else {
if (isDrawPointCloud) {
Logger.d(TAG, "====停止点云绘制====")
CallerLogger.d(M_MAP + TAG, "====停止点云绘制====")
isDrawPointCloud = false
PointCloudHelper.setIsDrawPointCloud(false)//停止点云绘制
}

View File

@@ -12,7 +12,7 @@ import com.mogo.eagle.core.function.v2x.events.manager.V2XStatusManager;
import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario;
import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
@@ -41,7 +41,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario<V2XRoadEventEntity> imp
@Override
public void init(V2XMessageEntity<V2XRoadEventEntity> v2XMessageEntity) {
try {
Logger.d(M_V2X + TAG, "v2XMessageEntity:" + GsonUtil.jsonFromObject(v2XMessageEntity));
CallerLogger.INSTANCE.d(M_V2X + TAG, "v2XMessageEntity:" + GsonUtil.jsonFromObject(v2XMessageEntity));
V2XRoadEventEntity v2XRoadEventEntity = v2XMessageEntity.getContent();
if (v2XRoadEventEntity != null) {
if (v2XMessageEntity.isShowState()) {

View File

@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.v2x.trafficlight
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.trafficlight.TrafficLightControl
import com.mogo.eagle.core.data.trafficlight.TrafficLightDetail
import com.mogo.eagle.core.function.api.trafficlight.ITrafficLightProvider
import com.mogo.eagle.core.function.v2x.trafficlight.TrafficLightConst.Companion.MODULE_NAME
@@ -31,7 +32,7 @@ class TrafficLightProvider : ITrafficLightProvider {
crossingNo: String,
heading: Double,
controlTime: Int,
onSuccess: (() -> Unit),
onSuccess: ((TrafficLightControl) -> Unit),
onError: ((String) -> Unit)
) {
return MogoTrafficLightManager.INSTANCE.turnLightToGreen(

View File

@@ -4,11 +4,8 @@ import android.content.Context
import android.location.Location
import android.os.Handler
import android.os.Looper
import com.mogo.eagle.core.data.trafficlight.*
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
import com.mogo.eagle.core.data.trafficlight.RoadIDResult
import com.mogo.eagle.core.data.trafficlight.TrafficLightDetail
import com.mogo.eagle.core.data.trafficlight.TrafficLightResult
import com.mogo.eagle.core.data.trafficlight.isInRange
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager
@@ -159,7 +156,7 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 {
crossingNo: String,
heading: Double,
controlTime: Int,
onSuccess: (() -> Unit),
onSuccess: ((TrafficLightControl) -> Unit),
onError: ((String) -> Unit)
) {
trafficLightNetWorkModel.turnLightToGreen(

View File

@@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.v2x.trafficlight.network
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.trafficlight.RoadIDResult
import com.mogo.eagle.core.data.trafficlight.TrafficLightControl
import com.mogo.eagle.core.data.trafficlight.TrafficLightResult
import retrofit2.http.FieldMap
import retrofit2.http.FormUrlEncoded
@@ -22,6 +23,6 @@ interface TrafficLightApiService {
//变灯
@FormUrlEncoded
@POST("mec-etl-server/light/bdg/newTask")
suspend fun changeLight(@FieldMap turnLight: Map<String, String>): BaseResponse<Any>
suspend fun changeLight(@FieldMap turnLight: Map<String, String>): BaseResponse<TrafficLightControl>
}

View File

@@ -107,10 +107,10 @@ class TrafficLightNetWorkModel {
crossingNo: String,
heading: Double,
controlTime: Int,
onSuccess: (() -> Unit),
onSuccess: ((TrafficLightControl) -> Unit),
onError: ((String) -> Unit)
) {
request<BaseResponse<Any>> {
request<BaseResponse<TrafficLightControl>> {
val map = hashMapOf<String, String>()
start {
val trafficLightRequestData =
@@ -124,7 +124,7 @@ class TrafficLightNetWorkModel {
}
}
onSuccess {
onSuccess.invoke()
onSuccess.invoke(it.result)
}
onError {
if (it.message != null) {

View File

@@ -1,16 +1,17 @@
package com.mogo.eagle.core.function.v2x.vip
import android.content.Context
import android.location.Location
import android.os.Handler
import android.os.Looper
import android.os.Message
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.cloud.commons.utils.CoordinateUtils
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_VIP
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2N
import com.mogo.eagle.core.data.trafficlight.*
import com.mogo.eagle.core.data.trafficlight.TrafficLightResult
import com.mogo.eagle.core.data.trafficlight.currentRoadTrafficLight
import com.mogo.eagle.core.data.trafficlight.isGreen
import com.mogo.eagle.core.data.v2x.VipMessage
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener
@@ -22,10 +23,10 @@ import com.mogo.eagle.core.function.v2x.trafficlight.core.MogoTrafficLightManage
import com.mogo.eagle.core.function.v2x.vip.network.VipNetWorkModel
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.module.common.enums.EventTypeEnum
import com.zhjt.service_biz.BizConfig
import kotlin.math.abs
class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListener,
Handler.Callback {
@@ -42,7 +43,6 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
}
private var mContext: Context? = null
private var mLocation: Location? = null
private var turnLightFirst = false
private var turnLightEnd = true
private var vip: Boolean = false
@@ -51,7 +51,6 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
private var exit: Boolean = false
private var result: TrafficLightResult? = null
private var lastResult: TrafficLightStatus? = null
private val vipNetWorkModel = VipNetWorkModel()
private val handler = Handler(Looper.getMainLooper(), this)
@@ -101,9 +100,9 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
}
override fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) {
if (!vip) {
return
}
// if (!vip) {
// return
// }
if (exit) {
CallerLogger.d("$M_V2X$TAG", "驶离路口,返回 , then resetConditions")
@@ -115,14 +114,14 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
if (trafficLightResult.currentRoadTrafficLight() == null) {
CallerLogger.d(
"$M_V2X$TAG",
"vip 获取到灯态,但没找到对应车道数据 result : $trafficLightResult , then resetConditions"
"vip 获取到灯态,但没找到对应车道数据 trafficLightResult : $trafficLightResult , then resetConditions"
)
resetConditions()
return
}
val currentResult = trafficLightResult.currentRoadTrafficLight()
lastResult = result?.currentRoadTrafficLight()
val lastResult = result?.currentRoadTrafficLight()
CallerLogger.d(
"$M_V2X$TAG",
"检查是否变灯 last.remain : ${lastResult?.remain} , color : ${lastResult?.color} , current.remain : ${currentResult?.remain} , color : ${currentResult?.color}, turnLightFirst : $turnLightFirst"
@@ -130,32 +129,6 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
this.result = trafficLightResult
lastResult?.let {
//如果上次结果和本次灯态结果变化比较大则已变灯控制HMI展示弹窗
if (abs(currentResult!!.remain - it.remain) > 5 && currentResult.isGreen()) {
CallerLogger.d("$M_V2X$TAG", "调用showWarningV2X to show")
CallerHmiManager.showWarningV2X(
EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType,
EventTypeEnum.TYPE_VIP_IDENTIFICATION.content,
EventTypeEnum.TYPE_VIP_IDENTIFICATION.tts,
EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType,
object : IMoGoWarningStatusListener {
override fun onShow() {}
override fun onDismiss() {
CallerLogger.d(
"$M_V2X$TAG",
"showWarningV2X vip dismiss , resetConditions"
)
resetConditions()
}
},
true,
5000L
)
}
}
if (!turnLightFirst) {
// 首次判断,变灯
turnLightFirst = true
@@ -164,19 +137,12 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
turnLight(controlTime)
}
//可作为补偿措施,暂不启用
// mLocation?.let {
// if (canGetThroughCross(it, trafficLightResult)) {
// turnLight()
// }
// }
}
private fun resetConditions() {
turnLightFirst = false
turnLightEnd = true
result = null
lastResult = null
}
private fun setVip(cancelDelayTime: Long) {
@@ -196,32 +162,13 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
if (handler.hasMessages(MSG_WHAT_VIP_CANCEL)) {
handler.removeMessages(MSG_WHAT_VIP_CANCEL)
}
resetConditions()
CallerHmiManager.vipIdentification(false)
CallVipSetListenerManager.invokeVipSetStatus(false)
CallerTrafficLightListenerManager.unRegisterTrafficLightListener(TAG)
CallerTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG)
}
private fun canGetThroughCross(
it: Location,
trafficLightResult: TrafficLightResult
): Boolean {
return if (CoordinateUtils.calculateLineDistance(
it.longitude,
it.latitude,
trafficLightResult.lon,
trafficLightResult.lat
) < 20
&& turnLightEnd
&& trafficLightResult.laneList.mid.turnRedAtOnce()
) {
turnLightEnd = false
false
} else {
true
}
}
private fun requestVip() {
vipNetWorkModel.requestVip({
if (handler.hasMessages(MSG_WHAT_VIP_SEARCH)) {
@@ -249,20 +196,60 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
if (result == null || mContext == null) return
val locationClient = CallerMapUIServiceManager.getSingletonLocationClient(mContext!!)
if (locationClient != null) {
var bearing =
val bearing =
locationClient.lastKnowLocation.bearing.toDouble()
CallerLogger.d("$M_V2X$TAG", "turnLight -- bearing : $bearing")
MogoTrafficLightManager.INSTANCE.turnLightToGreen(
result!!.lightId, result!!.crossId, bearing, controlTime,
{
CallerLogger.d("$M_V2X$TAG", "变灯请求成功")
if (it.sn == MoGoAiCloudClientConfig.getInstance().sn && it.code == 0) {
CallerLogger.d("$M_V2X$TAG", "变灯请求成功")
showWarning(
EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType,
EventTypeEnum.TYPE_VIP_IDENTIFICATION.content,
EventTypeEnum.TYPE_VIP_IDENTIFICATION.tts,
EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType
)
} else {
val time = if (it.countDown / 60 > 1) {
"${it.countDown / 60}${it.countDown % 60}秒后重试"
} else {
"${it.countDown}秒后重试"
}
showWarning(
EventTypeEnum.TYPE_VIP_ERROR_IDENTIFICATION.poiType,
EventTypeEnum.TYPE_VIP_ERROR_IDENTIFICATION.content + time,
EventTypeEnum.TYPE_VIP_ERROR_IDENTIFICATION.tts,
EventTypeEnum.TYPE_VIP_ERROR_IDENTIFICATION.poiType
)
}
},
{ errorMsg ->
CallerLogger.e("$M_V2X$TAG", "变灯请求失败 msg : $errorMsg")
ToastUtils.showLong("服务异常,请稍后重试")
})
}
}
private fun showWarning(
v2xType: String,
alertContent: CharSequence,
ttsContent: String,
tag: String
) {
CallerHmiManager.showWarningV2X(
v2xType, alertContent, ttsContent, tag,
object : IMoGoWarningStatusListener {
override fun onShow() {}
override fun onDismiss() {
resetConditions()
}
},
true,
5000L
)
}
fun destroy() {
MogoAiCloudSocketManager.getInstance(mContext)
.unregisterLifecycleListener(401025)

View File

@@ -0,0 +1,6 @@
package com.mogo.eagle.core.data.trafficlight
/**
* 控灯实体
*/
data class TrafficLightControl(val sn:String,val data:String,val next:String,val countDown:Int,val code:Int)

View File

@@ -1,6 +1,7 @@
package com.mogo.eagle.core.function.api.trafficlight
import android.content.Context
import com.mogo.eagle.core.data.trafficlight.TrafficLightControl
import com.mogo.eagle.core.data.trafficlight.TrafficLightDetail
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
@@ -21,7 +22,7 @@ interface ITrafficLightProvider : IMoGoFunctionServerProvider {
crossingNo: String,
heading: Double,
controlTime:Int,
onSuccess: (() -> Unit),
onSuccess: ((TrafficLightControl) -> Unit),
onError: ((String) -> Unit)
)
}

View File

@@ -1,12 +1,9 @@
package com.mogo.eagle.core.function.call.autopilot
import android.util.*
import androidx.annotation.Nullable
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.mogo.eagle.core.utilcode.util.GsonUtils
import mogo.telematics.pad.MessagePad
import mogo_msg.MogoReportMsg
@@ -180,7 +177,6 @@ object CallerAutoPilotStatusListenerManager : CallerBase() {
val listener = it.value
autoPilotMessageCode = guardianInfo?.code ?: ""
autoPilotMessageContent = guardianInfo?.msg ?: ""
Logger.d("XXXXX", "code: ${guardianInfo?.code}, msg: ${guardianInfo?.msg}")
listener.onAutopilotGuardian(guardianInfo)
}
}

View File

@@ -1,7 +1,6 @@
package com.mogo.eagle.core.utilcode.mogo.logger.scene
import android.util.ArrayMap
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_CHAT
@@ -120,7 +119,6 @@ class Scene {
//此处存在用户自定义方式,可根据过滤找到对应不符合标准的模块
var logCache = sceneCache["$moduleName-"]
if (logCache == null) {
Logger.i("emArrow","tag : $tag , module : $moduleName , sceneCache : $sceneCache")
logCache = SceneLogCache(mutableMapOf(), true)
businessName?.let {
logCache.tagMap!![it] = true

View File

@@ -358,6 +358,7 @@ enum class EventTypeEnum(
),
TYPE_VIP_IDENTIFICATION("10022", "", "", R.drawable.icon_warning_v2x_vip_turn_light, "VIP车辆优先通行", "已为您变灯,请优先通行"),
TYPE_VIP_ERROR_IDENTIFICATION("10023", "", "", R.drawable.icon_warning_v2x_vip_turn_light, "请求失败,", "请求失败,请稍后重试"),
TYPE_OPTIMAL_ROUTE_RECOMMEND("2000", "", "", R.drawable.icon_warning_v2x_optimal_route, "为您推荐最优路线", "已为您选择最优路线");