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

Dev robotaxi d app module 2110 220915 2.11.0

See merge request zhjt/AndroidApp/MoGoEagleEye!244
This commit is contained in:
wangmingjun
2022-10-10 11:41:11 +00:00
14 changed files with 218 additions and 123 deletions

View File

@@ -372,6 +372,7 @@ public class BusOrderModel {
if (refreshBusStationsCallback != null){
refreshBusStationsCallback.updateEmptyUi();
}
clearAutopilotControlParameters();
return;
}
CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据: " + data );
@@ -429,11 +430,13 @@ public class BusOrderModel {
refreshBusStationsCallback.updateBusTaskStatus(busRoutesResult.getName(),lineTime,
stationList,arrivingOrArrivedStationIndex,true);
}
clearAutopilotControlParameters();
}else {
if (refreshBusStationsCallback != null){
refreshBusStationsCallback.updateBusTaskStatus(busRoutesResult.getName(),lineTime,
stationList,arrivingOrArrivedStationIndex,false);
}
updateAutopilotControlParameters();
}
}
@@ -490,6 +493,7 @@ public class BusOrderModel {
private void startAutopilot(boolean isRestart) {
if (backgroundCurrentStationIndex +1 > stationList.size() - 1 || !isGoingToNextStation){
CallerLogger.INSTANCE.e(M_BUS + TAG, "mismatch condition.");
return;
}
@@ -498,30 +502,16 @@ public class BusOrderModel {
BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex);
BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex + 1);
AutopilotControlParameters parameters = new AutopilotControlParameters();
parameters.isSpeakVoice = !isRestart;
parameters.routeID = busRoutesResult.getLineId();
parameters.routeName = busRoutesResult.getName();
parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName());
parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.getName());
parameters.startLatLon = new AutopilotControlParameters
.AutoPilotLonLat( currentStation.getLat(), currentStation.getLon() );
parameters.endLatLon = new AutopilotControlParameters
.AutoPilotLonLat( nextStation.getLat(), nextStation.getLon() );
parameters.vehicleType = VEHICLE_TYPE;
if (parameters.autoPilotLine == null) {
parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine(
busRoutesResult.getLineId(),
busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5,
busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5,
busRoutesResult.contrailSaveTime, busRoutesResult.carModel,
busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP,
busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP,
busRoutesResult.contrailSaveTimeDPQP);
AutopilotControlParameters parameters = initAutopilotControlParameters();
if (null == parameters) {
CallerLogger.INSTANCE.e(M_BUS + TAG, "AutopilotControlParameters is empty.");
return;
}
CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters);
CallerLogger.INSTANCE.d( M_BUS + TAG, "开启自动驾驶====" + GsonUtil.jsonFromObject(parameters)
+" startLatLon="+currentStation.getName()+"endLatLon="+nextStation.getName());
CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters);
if (mControllerStatusCallback != null) {
mControllerStatusCallback.startOpenAutopilot();
@@ -905,4 +895,55 @@ public class BusOrderModel {
public int getCurrentStationIndex() {
return backgroundCurrentStationIndex;
}
/**
* 将业务订单信息保存,鹰眼可取用
*/
private void updateAutopilotControlParameters() {
AutopilotControlParameters parameters = initAutopilotControlParameters();
if (null == parameters){
CallerLogger.INSTANCE.e(M_BUS + TAG, "AutopilotControlParameters is empty.");
return;
}
CallerLogger.INSTANCE.d(M_BUS + TAG, "AutopilotControlParameters is update.");
CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters);
}
private void clearAutopilotControlParameters(){
CallerLogger.INSTANCE.d(M_BUS + TAG, "AutopilotControlParameters is clear.");
CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null);
}
private AutopilotControlParameters initAutopilotControlParameters() {
if (backgroundCurrentStationIndex +1 > stationList.size() - 1 || !isGoingToNextStation){
CallerLogger.INSTANCE.e(M_BUS + TAG, "mismatch condition.");
return null;
}
BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex);
BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex + 1);
AutopilotControlParameters parameters = new AutopilotControlParameters();
parameters.routeID = busRoutesResult.getLineId();
parameters.routeName = busRoutesResult.getName();
parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName());
parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.getName());
parameters.startLatLon = new AutopilotControlParameters
.AutoPilotLonLat( currentStation.getLat(), currentStation.getLon() );
parameters.endLatLon = new AutopilotControlParameters
.AutoPilotLonLat( nextStation.getLat(), nextStation.getLon() );
parameters.vehicleType = VEHICLE_TYPE;
if (parameters.autoPilotLine == null) {
parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine(
busRoutesResult.getLineId(),
busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5,
busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5,
busRoutesResult.contrailSaveTime, busRoutesResult.carModel,
busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP,
busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP,
busRoutesResult.contrailSaveTimeDPQP);
}
return parameters;
}
}

View File

@@ -18,7 +18,6 @@ import com.amap.api.maps.model.LatLng;
import com.elegant.network.utils.GsonUtil;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
@@ -29,6 +28,7 @@ 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;
@@ -318,6 +318,8 @@ public class TaxiModel {
//1.1.2. 当本地有currentOrder
//orderId不一致时通过currentOrder.orderId查询订单状态并通知ui更新
//orderId一致且orderStatus不一致时则更新currentOrder并通知ui更新
Logger.d(TAG,"AutopilotControl-mCurrentOCHOrder = "+mCurrentOCHOrder.orderStatus
+ ", orderStatus = " +data.data.servicing.get(0).orderStatus);
if (!mCurrentOCHOrder.orderNo.equals(data.data.servicing.get(0).orderNo)) {
queryCurOrderStatus();
} else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) {
@@ -787,24 +789,52 @@ public class TaxiModel {
TaxiTrajectoryManager.getInstance().syncTrajectoryInfo();
SharedPrefsMgr.getInstance(mContext).putString(TaxiConst.SP_KEY_OCH_TAXI_ORDER,
GsonUtil.jsonFromObject(data));
if (FunctionBuildConfig.isDemoMode) {
if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()){
if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()){
if (FunctionBuildConfig.isDemoMode) {
// 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后置true
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为true更新本地order信息");
}
if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.getCode()){
updateAutopilotControlParameters();
}
if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.getCode()){
if (FunctionBuildConfig.isDemoMode) {
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
}
clearAutopilotControlParameters();
}
}
/**
* 将业务订单信息保存,鹰眼可取用
*/
private void updateAutopilotControlParameters() {
AutopilotControlParameters parameters = initAutopilotControlParameters();
if (null == parameters){
CallerLogger.INSTANCE.e(M_TAXI + TAG, "AutopilotControlParameters is empty.");
return;
}
CallerLogger.INSTANCE.d(M_TAXI + TAG, "AutopilotControlParameters is update.");
CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters);
}
private void clearAutopilotControlParameters(){
CallerLogger.INSTANCE.d(M_TAXI + TAG, "AutopilotControlParameters is clear.");
CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null);
}
//清除订单信息
public void clearCurrentOCHOrder() {
startOrStopCalculateRouteInfo(false);
mCurrentOCHOrder = null;
clearAutopilotControlParameters();
TaxiTrajectoryManager.getInstance().syncTrajectoryInfo();
SharedPrefsMgr.getInstance(mContext).remove(TaxiConst.SP_KEY_OCH_TAXI_ORDER);
isRestartAutopilot = false;
@@ -859,12 +889,38 @@ public class TaxiModel {
isRestartAutopilot = true;
}
AutopilotControlParameters parameters = initAutopilotControlParameters();
if (null == parameters) {
CallerLogger.INSTANCE.e(M_TAXI + TAG, "AutopilotControlParameters is empty.");
return;
}
CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters)
+ " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr);
TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, false,
mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo);
// TODO: 2021/8/20 无工控机环境, 手动调起自动驾驶开启返回结果,有工控机环境要删除
// OCHTaxiUiController.getInstance().onAutoPilotStatusChanged( IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING, "开启自动驾驶" );
}
private AutopilotControlParameters initAutopilotControlParameters() {
if (!checkCurrentOCHOrder()) {
CallerLogger.INSTANCE.e(M_TAXI + TAG, "no order or order is empty.");
return null;
}
AutopilotControlParameters parameters = new AutopilotControlParameters();
double startWgsLon = mCurrentOCHOrder.startSitePoint.get(0);
double startWgsLat = mCurrentOCHOrder.startSitePoint.get(1);
double endWgsLon = mCurrentOCHOrder.endSitePoint.get(0);
double endWgsLat = mCurrentOCHOrder.endSitePoint.get(1);
AutopilotControlParameters parameters = new AutopilotControlParameters();
parameters.vehicleType = mCurrentOCHOrder.businessType;
parameters.startName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.startSiteAddr); // 起点名称拼音首字母大写科学城B区2号门KXCBQ2HM
parameters.endName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.endSiteAddr); // 终点名称拼音首字母大写科学城C区三号门KXCCQSHM
@@ -880,15 +936,7 @@ public class TaxiModel {
mCurrentOCHOrder.txtFileUrlDPQP, mCurrentOCHOrder.txtFileMd5DPQP,
mCurrentOCHOrder.contrailSaveTimeDPQP);
}
CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters)
+ " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr);
TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, false,
mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo);
// TODO: 2021/8/20 无工控机环境, 手动调起自动驾驶开启返回结果,有工控机环境要删除
// OCHTaxiUiController.getInstance().onAutoPilotStatusChanged( IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING, "开启自动驾驶" );
return parameters;
}
//结束自动驾驶
@@ -913,18 +961,8 @@ public class TaxiModel {
startLon, startLat,
location.getLongitude(), location.getLatitude());
// if (DebugConfig.isDebug() && mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToStart.getCode()) {
// // ToastUtils.showShort("距离上车点:" + Double.valueOf(distance).intValue());
// }
CallerLogger.INSTANCE.i(M_TAXI + TAG, "judgeStartStation() distance = " + distance);
// if (distance > TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) {
// distance = CoordinateUtils.calculateLineDistance(startLon, startLat,
// CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(),
// CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat());
// }
if (distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) {
arrivedStartPoint();
return;
@@ -1011,12 +1049,6 @@ public class TaxiModel {
CallerLogger.INSTANCE.i(M_TAXI + TAG, "judgeEndStation() distance = " + distance);
// if (distance > TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) {
// distance = CoordinateUtils.calculateLineDistance(startLon, startLat,
// CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(),
// CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat());
// }
if (distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) {
if (!checkCurrentOCHOrder()
|| (getCurOrderStatus() == TaxiOrderStatusEnum.ArriveAtEnd)) {
@@ -1277,9 +1309,7 @@ public class TaxiModel {
private void reportTotalDisAndTime() {
float lastSumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength(mRoutePoints);
double lastTime = lastSumLength / TaxiConst.TAXI_AVERAGE_SPEED * 3.6; //秒
// if (mOrderStatusCallback != null) {
// mOrderStatusCallback.onCurrentOrderDistToEndChanged((long) lastSumLength, (long) lastTime);
// }
reportOrderRemain((long) lastSumLength, (long) lastTime);
}
@@ -1401,9 +1431,7 @@ public class TaxiModel {
, new TaxiServiceCallback<TaxiDataBaseRespBean>() {
@Override
public void onSuccess(TaxiDataBaseRespBean data) {
if (null != data && 0 == data.code){
updateOrderStatus(TaxiOrderStatusEnum.UserArriveAtStart);
}
}
@Override
@@ -1425,9 +1453,7 @@ public class TaxiModel {
, new TaxiServiceCallback<TaxiDataBaseRespBean>() {
@Override
public void onSuccess(TaxiDataBaseRespBean data) {
if (null != data && 0 == data.code){
updateOrderStatus(TaxiOrderStatusEnum.OnTheWayToEnd);
}
}
@Override
@@ -1447,9 +1473,7 @@ public class TaxiModel {
, new TaxiServiceCallback<TaxiDataBaseRespBean>() {
@Override
public void onSuccess(TaxiDataBaseRespBean data) {
if (null != data && 0 == data.code){
updateOrderStatus(TaxiOrderStatusEnum.ArriveAtStart);
}
}
@Override
@@ -1470,9 +1494,7 @@ public class TaxiModel {
, new TaxiServiceCallback<TaxiDataBaseRespBean>() {
@Override
public void onSuccess(TaxiDataBaseRespBean data) {
if (null != data && 0 == data.code){
updateOrderStatus(TaxiOrderStatusEnum.ArriveAtEnd);
}
}
@Override
@@ -1493,9 +1515,9 @@ public class TaxiModel {
, new TaxiServiceCallback<TaxiDataBaseRespBean>() {
@Override
public void onSuccess(TaxiDataBaseRespBean data) {
if (null != data && 0 == data.code){
updateOrderStatus(TaxiOrderStatusEnum.JourneyCompleted);
}
// if (null != data && 0 == data.code){
// updateOrderStatus(TaxiOrderStatusEnum.JourneyCompleted);
// }
}
@Override
@@ -1504,16 +1526,6 @@ public class TaxiModel {
}
});
}
//更新当前订单状态
public void updateOrderStatus(final TaxiOrderStatusEnum orderStatus) {
if (mCurrentOCHOrder == null) {
return;
}
mCurrentOCHOrder.orderStatus = orderStatus.getCode();
if (mOrderStatusCallback != null) {
mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder);
}
}
// 登出
public void logout() {

View File

@@ -37,6 +37,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.telematic.MogoProtocolMsg
import com.mogo.telematic.MogoProtocolMsg.NORMAL_DATA
import com.mogo.telematic.MogoProtocolMsg.SYNC_MODE_STATUS
@@ -53,7 +54,6 @@ import com.zhidao.support.adas.high.common.CupidLogUtils
import com.zhidao.support.adas.high.common.MogoReport
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants
import com.zhjt.service_biz.BizConfig
import io.netty.channel.Channel
import mogo.telematics.pad.MessagePad
import java.util.*
@@ -73,6 +73,7 @@ class MoGoAutopilotProvider :
private var mContext: Context? = null
private lateinit var msgHandler: IMsgHandler
private var timer: Timer? = null
@Volatile
private var isInit = false
@@ -107,6 +108,9 @@ class MoGoAutopilotProvider :
.build()
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object :
NettyServerListener<MogoProtocolMsg> {
override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) {
@@ -153,16 +157,19 @@ class MoGoAutopilotProvider :
override fun connectDevice(isSupportMulti: Boolean) {
if (!isInit) {
isInit = true
if (isSupportMulti) {
// 直连工控机
directConnect()
} else {
val options = AdasOptions
.Builder()
.setClient(true)
.build()
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
listenDeviceData()
UiThreadHandler.post {
if (isSupportMulti) {
// 直连工控机
directConnect()
} else {
val options = AdasOptions
.Builder()
.setClient(true)
.build()
AdasManager.getInstance()
.create(options, MoGoAdasMsgConnectStatusListenerImpl())
listenDeviceData()
}
}
}
}
@@ -189,10 +196,6 @@ class MoGoAutopilotProvider :
}
})
}
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据(乘客也需注册)
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
CallerLogger.i("$M_ADAS_IMPL$TAG", "initServer……")
// 同步数据给工控机的服务
@@ -209,6 +212,9 @@ class MoGoAutopilotProvider :
.setClient(false)// 乘客端直连工控机改为false
.build()
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
}
/**

View File

@@ -0,0 +1,26 @@
package com.mogo.eagle.core.function
import com.mogo.commons.debug.DebugConfig
/**
* cmdb 域名
*/
class BindHostConst {
companion object {
private const val UPGRADE_APP_HOST_DEV = "https://eagle-qa.zhidaozhixing.com/"
private const val UPGRADE_APP_HOST = "http://eagle-mis.zhidaozhixing.com/"
@JvmStatic
fun getBaseUrl(): String {
return when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV -> UPGRADE_APP_HOST_DEV
DebugConfig.NET_MODE_QA -> UPGRADE_APP_HOST_DEV
DebugConfig.NET_MODE_DEMO -> UPGRADE_APP_HOST
DebugConfig.NET_MODE_RELEASE -> UPGRADE_APP_HOST
else -> UPGRADE_APP_HOST
}
}
}
}

View File

@@ -21,7 +21,7 @@ public interface UpgradeApiService {
* @return {@link UpgradeAppInfo}
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("/eagleEye-mis/config/versionInfo")
@POST("eagleEye-mis/config/versionInfo")
// Observable<UpgradeAppInfo> getUpgradeInfo(@Query("resources") String res, @Body RequestBody requestBody);
Observable<UpgradeAppInfo> getUpgradeInfo(@Body RequestBody requestBody);

View File

@@ -4,20 +4,13 @@ import android.content.Context;
import android.util.Log;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.constants.SharedPrefsConstants;
import com.mogo.eagle.core.data.bindingcar.BindingcarInfo;
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo;
import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack;
import com.mogo.eagle.core.function.BindHostConst;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
import com.mogo.eagle.core.utilcode.util.AppUtils;
import com.mogo.eagle.core.utilcode.util.GsonUtils;
import com.mogo.module.common.constants.HostConst;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -39,7 +32,7 @@ public class UpgradeAppNetWorkManager {
private UpgradeAppNetWorkManager() {
mUpgradeApiService = MoGoRetrofitFactory.getInstance(HostConst.UPGRADE_APP_HOST)
mUpgradeApiService = MoGoRetrofitFactory.getInstance(BindHostConst.getBaseUrl())
.create(UpgradeApiService.class);
}
@@ -64,7 +57,7 @@ public class UpgradeAppNetWorkManager {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
int versionCode = AppUtils.getAppVersionCode();
CallerLogger.INSTANCE.d(TAG, "getAppUpgradeInfo mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode);
Log.d("Upgrade", "mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode);
Log.d(TAG, "mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode);
UpgradeAppRequest request = new UpgradeAppRequest(sn, mac, screenType);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mUpgradeApiService.getUpgradeInfo(requestBody)

View File

@@ -26,6 +26,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener;
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.setting.CallerSkinModeListenerManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.function.main.moujie.BluetoothMonitorReceiver;
@@ -218,7 +219,9 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
if (currentTime - oldTime > 6) {
SharedPrefsMgr.getInstance(getContext()).putLong("old_time_up", System.currentTimeMillis() / 1000);
// ToastUtils.showShort("长按 ↑↑↑ 开启自动驾驶");
CallerAutoPilotManager.INSTANCE.setControlAutopilotCarAuto(true);
// CallerAutoPilotManager.INSTANCE.setControlAutopilotCarAuto(true);
CallerAutoPilotManager.INSTANCE.startAutoPilot(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getAutopilotControlParameters());
}
return true;
@@ -337,7 +340,8 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
} else if (event.getAction() == KeyEvent.ACTION_UP) {
if (numberE == 1) {
// ToastUtils.showShort("方块 单击E 开启自动驾驶 ");
CallerAutoPilotManager.INSTANCE.setControlAutopilotCarAuto(true);
// CallerAutoPilotManager.INSTANCE.setControlAutopilotCarAuto(true);
CallerAutoPilotManager.INSTANCE.startAutoPilot(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getAutopilotControlParameters());
}
numberE = 0;
isLongPressE = false;

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.map.identify;
import android.annotation.SuppressLint;
import android.os.Build;
import android.text.TextUtils;
import androidx.annotation.RequiresApi;
@@ -10,8 +9,6 @@ import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.traffic.TrafficData;
import com.mogo.eagle.core.data.traffic.TrafficDataKt;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.utilcode.geometry.S2CellId;
import com.mogo.eagle.core.utilcode.geometry.S2LatLng;
import com.mogo.map.MogoMarkerManager;

View File

@@ -85,12 +85,17 @@ open class AutopilotStatusInfo : Serializable, Cloneable {
// 默认未连接
var ipcConnStatus = 0x01
/**
* 记录最后一次启动自动驾驶需要的参数结束自动驾驶后设置为null
*/
var autopilotControlParameters: AutopilotControlParameters? = null
override fun toString(): String {
return "connectIP=$connectIP, connectPort=$connectPort, " +
"connectStatus=$connectStatus, connectDescribe=$connectStatusDescribe, version=$version, dockVersion=$dockVersion," +
" locationStatus=$locationStatus), locationLat=$locationLat, locationLon=$locationLon," +
" satelliteTime=$satelliteTime, speed=$speed, state=$state, reason=$reason, camera=$camera," +
" radar=$radar, rtk=$rtk, pilotmode=$pilotmode, ipcConnStatus=$ipcConnStatus"
" radar=$radar, rtk=$rtk, pilotmode=$pilotmode, ipcConnStatus=$ipcConnStatus, autopilotControlParameters=$autopilotControlParameters"
}
public override fun clone(): AutopilotStatusInfo {

View File

@@ -67,6 +67,8 @@ object CallerAutoPilotManager {
return
}
providerApi?.startAutoPilot(controlParameters)
// 更新记录在全局的控制参数
CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(controlParameters)
}
/**
@@ -94,6 +96,8 @@ object CallerAutoPilotManager {
// 司机屏才能取消自动驾驶
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
providerApi?.cancelAutoPilot()
// 更新记录在全局的控制参数
CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null)
}
}

View File

@@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.call.autopilot
import android.util.*
import androidx.annotation.Nullable
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
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
@@ -24,7 +25,7 @@ object CallerAutoPilotStatusListenerManager : CallerBase() {
// 存储所有注册了监听的对象invokeXXXX进行遍历回调将信息同步
private val M_AUTOPILOT_STATUS_LISTENERS: ConcurrentHashMap<String, IMoGoAutopilotStatusListener> =
ConcurrentHashMap()
ConcurrentHashMap()
@Volatile
private var autoPilotMessageCode: String = ""
@@ -93,8 +94,8 @@ object CallerAutoPilotStatusListenerManager : CallerBase() {
* @param listener 监听回调
*/
fun addListener(
@Nullable tag: String,
@Nullable listener: IMoGoAutopilotStatusListener
@Nullable tag: String,
@Nullable listener: IMoGoAutopilotStatusListener
) {
if (M_AUTOPILOT_STATUS_LISTENERS.containsKey(tag)) {
return
@@ -201,10 +202,18 @@ object CallerAutoPilotStatusListenerManager : CallerBase() {
*/
fun invokeAutopilotStatusRespByQuery(statusInfo: SystemStatusInfo.StatusInfo?) {
statusInfo?.also {
M_AUTOPILOT_STATUS_LISTENERS.forEach{ itx ->
M_AUTOPILOT_STATUS_LISTENERS.forEach { itx ->
val listener = itx.value
listener.onAutopilotStatusRespByQuery(it)
}
}
}
/**
* 更新自动驾驶控制参数结束自动驾驶时候需要更新为null且更新时候同时触发onAutopilotStatusResponse回调
*/
fun updateAutopilotControlParameters(autopilotControlParameters: AutopilotControlParameters? = null) {
mAutopilotStatusInfo.autopilotControlParameters = autopilotControlParameters
invokeAutoPilotStatus(mAutopilotStatusInfo)
}
}

View File

@@ -0,0 +1,6 @@
#### CallerAutoPilotStatusListenerManager 管理自动驾驶中的状态及参数信息
AutopilotStatusInfo
连接信息
实时经纬度、速度、车辆硬件状态
最后一次启动自动驾驶时候的启动参数 AutopilotControlParameters

View File

@@ -366,22 +366,17 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void changeMapVisualAngle(VisualAngleMode angelMode, MogoLatLng mogoLatLng) {
Log.d("XXXX", "--- 2 -----");
MapAutoViewHelper mapAutoViewHelper = mMapView.getMapAutoViewHelper();
if (mapAutoViewHelper != null) {
Log.d("XXXX", "--- 3 -----");
mVisualAngleMode = angelMode;
if (angelMode == MODE_CLOSE_SIGHT) {
Log.d("XXXX", "--- 4 -----");
if (mogoLatLng == null) {
Log.d("XXXX", "--- 5 -----");
CallerLogger.INSTANCE.e(M_MAP + TAG, "切换地图近景需要传入要移动的经纬度数据");
return;
}
// 近景传入经纬度为点击地图上静态marker经纬度数据为GPS坐标点。
mapAutoViewHelper.setNearViewAnglePosition(new LonLatPoint(mogoLatLng.lon, mogoLatLng.lat), true);
} else {
Log.d("XXXX", "--- 6 -----");
mapAutoViewHelper.setMapViewVisualAngle(angelMode.getCode());
}
}

View File

@@ -22,7 +22,4 @@ public class HostConst {
public static final String BINDING_SN_HOST = "https://mygateway.zhidaozhixing.com/cmdbapi/"; //中台提供的接口服务
public static final String BINDING_SN_HOST_TEST = "https://mygateway.zhidaozhixing.com/cmdbapitest/"; //中台提供的接口服务测试
// public static final String UPGRADE_APP_HOST = "http://10.0.200.12:32423?/";
public static final String UPGRADE_APP_HOST = "https://eagle-qa.zhidaozhixing.com/";
}