diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginServiceManager.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginServiceManager.kt index f09172c41d..e3ade95a9e 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginServiceManager.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginServiceManager.kt @@ -474,8 +474,8 @@ object LoginServiceManager : IOchLanPassengerStatusListener { FunctionBuildConfig.appIdentityMode = "${product}_${identity}_${vehicle.code}" OchSPManager.putString(OCHVEHICLE,vehicle.code) ScreenHelper.setScreenConfig(AbsMogoApplication.getApp()) - - if (vehicle == Vehicle.B2 && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { + //TODO 乘客屏竖屏未生效 + if ((vehicle == Vehicle.B2 || vehicle == Vehicle.B4) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { BizLoopManager.runInMainThread{ val orientation = ActivityUtils.getTopActivity().resources.configuration.orientation if(orientation!=Configuration.ORIENTATION_PORTRAIT){ diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/callback/ITaxiLoginCallback.java b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/callback/ITaxiLoginCallback.java index 092fd56d54..70bcccb8ce 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/callback/ITaxiLoginCallback.java +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/callback/ITaxiLoginCallback.java @@ -9,4 +9,5 @@ public interface ITaxiLoginCallback { default void getPhoneCodeSuccess(){} default void netErrorCallback(){} + default void stopAutoLogin(){} } diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt index c70e22bc38..4cfd171cfc 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt @@ -137,7 +137,7 @@ object LoginModel { } - fun gotoLogin(phone: String, code: String) { + fun gotoLogin(phone: String, code: String, isAutoLoginMode: Boolean) { mContext?.let { val location = OchLocationManager.getGCJ02Location() val location4Login = TaxiLoginReqBean.Location4Login(location.latitude, location.longitude) @@ -146,7 +146,11 @@ object LoginModel { override fun onSuccess(data: TaxiLoginRespBean?) { if (null != data && 0 == data.code) { // 获取验证码成功 - ToastCharterUtils.showToastShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) + if (isAutoLoginMode){ + iTaxiLoginCallback?.stopAutoLogin() + }else{ + ToastCharterUtils.showToastShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) + } // 登录成功需要新的值 queryCarStatus(false) } else { @@ -160,7 +164,12 @@ object LoginModel { if (!NetworkUtils.isConnected(mContext)) { ToastCharterUtils.showToastShort(mContext?.getString(R.string.network_error_tip)) } else { - ToastCharterUtils.showToastShort(mContext?.getString(R.string.request_error_tip)) + if (isAutoLoginMode){ + ToastCharterUtils.showToastShort(mContext?.getString(R.string.request_error_tip_unmanned)) + }else{ + ToastCharterUtils.showToastShort(mContext?.getString(R.string.request_error_tip)) + } + } iTaxiLoginCallback?.netErrorCallback() } diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt index 7c62df9168..fb57dfd0fd 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt @@ -25,6 +25,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import java.util.concurrent.TimeUnit +import java.util.concurrent.atomic.AtomicBoolean /** * @author congtaowang @@ -39,9 +40,11 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT private val TAG = M_OCHCOMMON+LoginPresenter::class.java.simpleName + private var autoLoginDisposable: Disposable? = null + private var isAutoLoginMode = AtomicBoolean(false) // 标记是否处于自动登录模式 init { initListeners() - CallerLogger.d(TAG, "网约车-Init") + CallerLogger.d(TAG, "登录-Init") } private fun initListeners() { @@ -74,7 +77,7 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) - CallerLogger.d(TAG, "网约车-出租车登陆") + CallerLogger.d(TAG, "登录-初始化") } @@ -87,6 +90,7 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT it.dispose() } } + stopAutoLogin() } override fun getPhoneCodeSuccess() { @@ -108,6 +112,35 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT }) } + fun autoLogin() { + if (!isAutoLoginMode.compareAndSet(false, true)) return + OchChainLogManager.writeChainLog(TAG, "启动自动登录循环") + // 每隔 5 秒尝试一次登录 + autoLoginDisposable = Observable.interval(0, 12, TimeUnit.SECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + CallerLogger.d(TAG, "正在执行自动登录尝试...") + if(!LoginModel.hasInit()){ + initListeners() + } + LoginModel.gotoLogin("13288888888", "8888",true) + mView?.closeSoftInput() + }, { + CallerLogger.e(TAG, "自动登录循环异常: ${it.message}") + }) + } + + override fun stopAutoLogin() { + isAutoLoginMode.set(false) + autoLoginDisposable?.let { + if (!it.isDisposed) { + it.dispose() + } + } + autoLoginDisposable = null + OchChainLogManager.writeChainLog(TAG, "登录成功,停止自动登录循环") + } + fun gotoLogin(phone: String, code: String) { if(!LoginModel.hasInit()){ initListeners() @@ -125,12 +158,14 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT gotoOfflineMode() return } - LoginModel.gotoLogin(phone, code) + LoginModel.gotoLogin(phone, code, false) mView?.closeSoftInput() } override fun netErrorCallback() { - mView?.showLoginOffLineModel() + if (!isAutoLoginMode.get()) { + mView?.showLoginOffLineModel() + } } fun gotoOfflineMode() { diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt index 8805ad9bb4..7c3d920355 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt @@ -22,6 +22,7 @@ import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView import com.mogo.eagle.core.function.hmi.ui.widget.ColdStartView import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.CockpitType import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.ActivityUtils @@ -265,17 +266,31 @@ class LoginFragment : MvpFragment(), ILoginView biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_taxi_start) videoUrl = SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_taxi_bg) } else { - //aciv_login_bg.setImageResource(R.drawable.biz_login_bg_bus_start) - biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_bus_start) - videoUrl = SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_bus_bg) + if (AppIdentityModeUtils.isB4(FunctionBuildConfig.appIdentityMode)) { + //aciv_login_bg.setImageResource(R.drawable.biz_login_bg_taxi_start) + biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_bus_b4_start) + videoUrl = SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_bus_b4_bg) + } else { + //aciv_login_bg.setImageResource(R.drawable.biz_login_bg_bus_start) + biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_bus_start) + videoUrl = SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_bus_bg) + } } if(viewColdStart.getColdStartStatus()){ if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) { biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_taxi_end) }else{ - biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end) + if (AppIdentityModeUtils.isB4(FunctionBuildConfig.appIdentityMode)) { + biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_b4_end) + } else { + biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end) + } + } + if (AppIdentityModeUtils.getCockpitType() == CockpitType.UNMANNED) { + mPresenter?.autoLogin() + } else { + cl_login_info?.visibility = View.VISIBLE } - cl_login_info?.visibility = View.VISIBLE }else{ viewColdStart.setColdStartResultListener(object: ColdStartView.ColdStartResultListener{ override fun coldStartSuccess() { @@ -290,7 +305,11 @@ class LoginFragment : MvpFragment(), ILoginView if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) { biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_taxi_end) }else{ - biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end) + if (AppIdentityModeUtils.isB4(FunctionBuildConfig.appIdentityMode)) { + biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_b4_end) + } else { + biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end) + } } } @@ -311,7 +330,11 @@ class LoginFragment : MvpFragment(), ILoginView animatorSet.duration = 500 animatorSet.addListener(object :AnimatorListener{ override fun onAnimationStart(animation: Animator) { - cl_login_info?.visibility = View.VISIBLE + if (AppIdentityModeUtils.getCockpitType() == CockpitType.UNMANNED) { + mPresenter?.autoLogin() + } else { + cl_login_info?.visibility = View.VISIBLE + } } override fun onAnimationEnd(animation: Animator) { diff --git a/OCH/common/biz/src/main/res/values-en/strings.xml b/OCH/common/biz/src/main/res/values-en/strings.xml index ce91a35c00..3aa2ea5abb 100644 --- a/OCH/common/biz/src/main/res/values-en/strings.xml +++ b/OCH/common/biz/src/main/res/values-en/strings.xml @@ -14,6 +14,7 @@ Network exception, please try again later Request exception occurred, please try again later + Connection error between vehicle and server. Please wait. I see Guest Login diff --git a/OCH/common/biz/src/main/res/values/strings.xml b/OCH/common/biz/src/main/res/values/strings.xml index 21a9a8453a..9ba351906d 100644 --- a/OCH/common/biz/src/main/res/values/strings.xml +++ b/OCH/common/biz/src/main/res/values/strings.xml @@ -14,6 +14,7 @@ 网络异常,请稍后重试 请求出现异常,请稍后重试 + 车辆与服务端连接异常,请稍等 我知道了 访客登录 diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java index b12020c693..f3beba1629 100644 --- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java +++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java @@ -735,6 +735,9 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene public void onSystemStatus(@NonNull SsmInfo.SsmStatusInf statusInf) { } + @Override + public void onCockpitTypeChange() { + } @Override public void onAutopilotRouteLineId(long lineId) { diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java index 4976fca87a..19b6bb494f 100644 --- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java +++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java @@ -235,6 +235,10 @@ public class SweeperOperatePresenter extends Presenter public void onSystemStatus(@NonNull SsmInfo.SsmStatusInf statusInf) { } + @Override + public void onCockpitTypeChange() { + } + @Override public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) { SweeperOperateTaskModel.getInstance().onArriveTaskEnd(arrivalNotification); diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt index 54f8745281..76a17d0285 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt @@ -46,9 +46,14 @@ class ColdStartAgainWindow constructor(activity: Activity){ val videoUrl:String = if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) { svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_taxi_start) SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_taxi_bg) - }else{ - svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_start) - SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_bus_bg) + } else { + if (AppIdentityModeUtils.isB4(FunctionBuildConfig.appIdentityMode)) { + svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_b4_start) + SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_bus_b4_bg) + } else { + svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_start) + SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_bus_bg) + } } svpColdStart.setIsTouchWiget(false) svpColdStart.setIsTouchWigetFull(false) @@ -67,7 +72,11 @@ class ColdStartAgainWindow constructor(activity: Activity){ if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) { svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_taxi_end) }else{ - svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_end) + if (AppIdentityModeUtils.isB4(FunctionBuildConfig.appIdentityMode)) { + svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_b4_end) + } else { + svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_end) + } } this@ColdStartAgainWindow.hideFloatWindow() } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt index d9c06d75c0..bade34a762 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt @@ -24,6 +24,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerColdStartStateListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.CockpitType import com.mogo.eagle.core.utilcode.util.ResourceUtils import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils @@ -35,6 +37,7 @@ import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartFaultAdapter import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartNodeAdapter import com.zhjt.mogo_core_function_devatools.ota.OTAUpgradeConfig import kotlinx.android.synthetic.main.view_cold_start.view.ivColdStartNow +import kotlinx.android.synthetic.main.view_cold_start.view.tvColdStartTip import kotlinx.android.synthetic.main.view_cold_start.view.ivColdStartStatus import kotlinx.android.synthetic.main.view_cold_start.view.ivFaultIcon import kotlinx.android.synthetic.main.view_cold_start.view.ivIpcConnectStatus @@ -140,6 +143,30 @@ class ColdStartView @JvmOverloads constructor( //保存点击时间 ColdStartConfig.setColdStartNowState(System.currentTimeMillis()) } + initUseNowBtnView() + } + private fun initUseNowBtnView() { + val cockpitType = AppIdentityModeUtils.getCockpitType() + if (cockpitType != CockpitType.NONE) { + ThreadUtils.runOnUiThread { + if (cockpitType == CockpitType.UNMANNED) { + tvColdStartTip.setText(R.string.cold_start_now_tip_unmanned) + tvColdStartNow.visibility = View.GONE + ivColdStartNow.visibility = View.GONE + tvColdStartTip.visibility = View.GONE + } else { + tvColdStartTip.setText(R.string.cold_start_now_tip) + tvColdStartNow.visibility = View.VISIBLE + ivColdStartNow.visibility = View.VISIBLE + tvColdStartTip.visibility = View.VISIBLE + } + } + } + } + + override fun onCockpitTypeChange() { + super.onCockpitTypeChange() + initUseNowBtnView() } override fun onAttachedToWindow() { @@ -879,6 +906,11 @@ class ColdStartView @JvmOverloads constructor( tvColdStartContent.text = resources.getString(R.string.cold_start_fail_content) tvColdStartContent.setTextColor(ContextCompat.getColor(context, R.color.cold_start_fail)) coldStartResultListener?.coldStartFail() + ThreadUtils.runOnUiThread { + tvColdStartNow.visibility = View.VISIBLE + ivColdStartNow.visibility = View.VISIBLE + tvColdStartTip.visibility = View.VISIBLE + } } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml index 5a92068a0b..68c1370e27 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml @@ -215,6 +215,7 @@ android:textSize="@dimen/sp_28" android:textColor="#82FFFFFF" android:layout_marginBottom="@dimen/dp_124" + android:visibility="gone" /> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values-en/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values-en/strings.xml index 92d8ce10e8..133231f414 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values-en/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values-en/strings.xml @@ -256,6 +256,7 @@ Cold Start HW Fault Icon Use Now Skipping may disable autonomous mode + Startup failed. Features like Automated Driving will be unavailable. Cold Start Progress diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index a5e3a1c48d..c021b0a3bd 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -257,6 +257,7 @@ 冷启动软件硬件故障图标 立即用车 跳过流程或启动失败,均可能会导致自动驾驶等功能无法使用 + 启动失败,会导致自动驾驶等功能无法使用 冷启动进度条 diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/Carmodel.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/Carmodel.kt index 52388576c7..cccddb73b7 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/Carmodel.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/Carmodel.kt @@ -10,6 +10,7 @@ enum class Carmodel(val serverName:String,@RawRes val rawValue: Int, val resId: CommonB2("B2", R.raw.m2, R.drawable.icon_car_b2), DeQingB2("B2", R.raw.deqing_m2, R.drawable.icon_car_b2), YiXinB2("B2", R.raw.yixin_m2, R.drawable.icon_car_b2), + B4("B4", R.raw.b4, R.drawable.icon_car_b2), M1("M1", R.raw.m1, R.drawable.icon_car_m1), C1("C1", R.raw.huanwei, R.drawable.icon_car_c1),; @@ -46,6 +47,9 @@ enum class Carmodel(val serverName:String,@RawRes val rawValue: Int, val resId: } } } + "B4" -> { + B4 + } "M1" -> { M1 } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt index 24c51c006d..f6f1f074fe 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt @@ -93,6 +93,12 @@ interface IMoGoAutopilotStatusListener { */ fun onSystemStatus(statusInf: SsmInfo.SsmStatusInf) {} + /** + * 驾舱类型变更 只接入了定频SSM接口 + * + */ + fun onCockpitTypeChange() {} + /** * 自动驾驶路线ID回调 */ diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index 6fb2c47f9e..cfe8cfc95c 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -7,7 +7,10 @@ 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.function.call.trace.CallerTrace +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.eagle.core.utilcode.util.ParseVersionUtils import com.zhjt.mogo.adas.data.AdasConstants import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg @@ -62,6 +65,17 @@ object CallerAutoPilotStatusListenerManager : CallerBase + if (!oldValue.contentEquals(newValue)) { + CallerLogger.i("CallerAutoPilotStatusListenerManager", "_ssmVersion=$_ssmVersion") + AppIdentityModeUtils.setCockpitType(ParseVersionUtils.parseVersion(false, newValue)) + M_LISTENERS.forEach { + val listener = it.value + listener.onCockpitTypeChange() + } + } + } + @Volatile private var autoPilotMessageCode: String = "" @@ -331,6 +345,7 @@ object CallerAutoPilotStatusListenerManager : CallerBase { val split = appIdentityMode.split("_") @@ -281,6 +285,14 @@ object AppIdentityModeUtils { return false } + @JvmStatic + fun isB4(appIdentityMode: String): Boolean { + val (_, _, model) = getInfo(appIdentityMode) + if (model.isNotEmpty()) { + return model == B4 + } + return false + } @JvmStatic fun isM1(appIdentityMode: String): Boolean { val (_, _, model) = getInfo(appIdentityMode) @@ -325,6 +337,7 @@ object AppIdentityModeUtils { return when (carType) { B1 -> CarType.B1 B2 -> CarType.B2 + B4 -> CarType.B4 C1 -> CarType.C1 M1 -> CarType.M1 T1T2 -> CarType.T1T2 @@ -337,9 +350,24 @@ object AppIdentityModeUtils { } enum class CarType { - NONE, B1, B2, C1, M1, T1T2, + NONE, B1, B2, C1, M1, T1T2, B4, } + @JvmStatic + fun setCockpitType(ssmVersion: Int) { + val code = if (ssmVersion >= 6) { + CockpitType.UNMANNED.code + } else { + CockpitType.LEGACY.code + } + SPUtils.getInstance().put(COCKPIT_TYPE, code) + } + + //获取驾舱类型 + @JvmStatic + fun getCockpitType(): CockpitType { + return CockpitType.getCockpitType(SPUtils.getInstance().getString(COCKPIT_TYPE, CockpitType.NONE.code)) + } } enum class Product(val code: Int) { @@ -396,6 +424,7 @@ enum class Vehicle(val code: String) { B1("B1"), B2("B2"), C1("C1"), + B4("B4"), M1("M1"); companion object { @@ -425,6 +454,9 @@ enum class Vehicle(val code: String) { M1 } + B4.code -> { + B4 + } else -> { NONE } @@ -466,6 +498,10 @@ enum class Vehicle(val code: String) { C1 } + "B4" -> { + B4 + } + else -> { T1T2 } @@ -474,3 +510,24 @@ enum class Vehicle(val code: String) { } } +//驾舱类型 连接成功后会保存 +enum class CockpitType(val code: String) { + NONE("UNKNOWN"),// 未知,从未连接过域控 + LEGACY("LEGACY"),// 老版本:主驾必须有人 + UNMANNED("UNMANNED");// 无人版本,并非完全无人,需要主驾有人操作线路任务流转 +// PURE_UNMANNED("PURE_UNMANNED");// 纯无人版本,可能用不到 + + companion object { + fun getCockpitType(code: String): CockpitType { + return when (code) { + LEGACY.code -> LEGACY + UNMANNED.code -> UNMANNED +// PURE_UNMANNED.code -> PURE_UNMANNED + else -> { + NONE + } + } + } + } +} +