魔方APP接口升级

This commit is contained in:
xinfengkun
2024-07-29 15:15:25 +08:00
parent 5a28be1cde
commit 88f15034f0
6 changed files with 288 additions and 115 deletions

View File

@@ -9,8 +9,8 @@ android {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
multiDexEnabled true
versionCode 1
versionName "1.0"
versionCode 2
versionName "2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -20,10 +20,34 @@ android {
}
}
buildTypes {
signingConfigs {
release {
keyAlias = 'CarLauncher'
storeFile file('../keystore/car_launcher.jks')
storePassword 'ZDauto123456'
keyPassword 'ZDauto123456'
}
releaseEB5 {
keyAlias = 'android_platform'
storeFile file('../keystore/EB5/car_launcher.jks')
storePassword 'ZDauto123456'
keyPassword 'ZDauto123456'
}
}
buildTypes {
debug {
debuggable true
minifyEnabled false
zipAlignEnabled false
shrinkResources false
signingConfig signingConfigs.release
}
release {
debuggable false
minifyEnabled false
zipAlignEnabled false
shrinkResources false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

View File

@@ -3,11 +3,13 @@ package com.zhidao.adas.magic;
import android.app.Application;
import com.zhidao.adas.magic.utils.CrashHandler;
import com.zhidao.support.adas.high.AdasManager;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
CrashHandler.getInstance().init(this);
AdasManager.getInstance().init(this);
}
}

View File

@@ -48,18 +48,21 @@ import com.zhidao.support.adas.high.AdasOptions;
import com.zhidao.support.adas.high.OnAdasConnectStatusListener;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.bean.VersionCompatibility;
import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.common.ProtocolStatus;
import com.zhjt.mogo.adas.data.AdasConstants;
import com.zhjt.mogo.adas.data.AiCloudTask;
import com.zhjt.mogo.adas.data.bean.AdasParam;
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason;
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
import com.zhjt.mogo.adas.data.bean.LaunchConditionData;
import com.zhjt.mogo.adas.data.bean.ReceivedAck;
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume;
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus;
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume;
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume;
import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus;
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
@@ -77,17 +80,24 @@ import java.util.Timer;
import java.util.TimerTask;
import bag_manager.BagManagerOuterClass;
import chassis.Chassis;
import chassis.ChassisStatesOuterClass;
import chassis.VehicleStateOuterClass;
import fault_management.FmInfo;
import fsm.Fsm2024;
import function_state_management.FunctionStates;
import localization.LocState;
import mogo.telematics.pad.MessagePad;
import mogo.v2x.MogoV2X;
import mogo.v2x.RoadOverviewEvents;
import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass;
import mogo_msg.MogoReportMsg;
import perception.TrafficLightOuterClass;
import perception.FusionTrafficLightOuterClass;
import perception.LaneMarkOuterClass;
import planning.RoboSweeperTaskIndexOuterClass;
import prediction.Prediction;
import record_cache.RecordPanelOuterClass;
import system_master.SsmInfo;
import system_master.SystemStatusInfo;
public class MainActivity extends BaseActivity implements OnAdasListener, OnAdasConnectStatusListener, BaseAdapter.OnItemClickListener<TitleBean> {
@@ -106,8 +116,8 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
private RadioGroup connectionType;
private AppCompatButton connect;
private AppCompatButton disconnect;
private RadioButton fixation;
private RadioButton assign;
private RadioButton specified;
private RadioButton ping;
private RecyclerView infoBtn;
private TextView tvConnectState;
private TextView gnss_hint;
@@ -116,7 +126,8 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
private Timer timerAcc;
private final List<TitleBean> titleBtnData = new ArrayList<>();
private final List<IPCConnectState> connectStatusList = new ArrayList<>();
private int connectStatus;
private AdasConstants.IpcConnectionStatus connectStatus;
private String certificationResult = "未开启认证";
private ListPopupWindow listPopupWindow;
private FloatWindow floatWindow;
private View include_title;
@@ -130,7 +141,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
initView();
initAdas();
connectStatus = AdasManager.getInstance().getIpcConnectionStatus();
onUpdateConnectStateView();
onUpdateConnectStateView("未连接");
showIPCIP();
AdasManager.getInstance().setEnableLog(false);
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
@@ -168,21 +179,29 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
private void connect(boolean isConnect) {
AdasOptions options = AdasManager.getInstance().getAdasOptions();
AdasOptions.Builder builder;
if (options == null) {
builder = AdasOptions.newBuilder().setPassenger(false);
} else {
builder = options.toBuilder();
}
if (isConnect) {
switch (Constants.getIpcConnectionMode(this)) {
case AdasOptions.IPC_CONNECTION_MODE.FIXATION:
AdasManager.getInstance().getAdasOptions().setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(this));
case AdasOptions.IPC_CONNECTION_MODE.PING:
builder.setPingAddressList(AdasManager.getInstance().getPingAddressList());
break;
case AdasOptions.IPC_CONNECTION_MODE.ASSIGN:
case AdasOptions.IPC_CONNECTION_MODE.SPECIFIED:
String ip = etIp.getText().toString().trim();
if (TextUtils.isEmpty(ip)) {
Toast.makeText(this, "请输入指定IP", Toast.LENGTH_SHORT).show();
return;
}
AdasManager.getInstance().getAdasOptions().setIpcAssignIP(ip);
builder.setSpecifiedAddress(ip);
break;
}
AdasManager.getInstance().getAdasOptions().setIpcConnectionMode(Constants.getIpcConnectionMode(this));
builder.setConnectionMode(Constants.getIpcConnectionMode(this));
AdasManager.getInstance().setAdasOptions(builder.build());
AdasManager.getInstance().connect();
} else
AdasManager.getInstance().disconnect();
@@ -197,8 +216,8 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
tvIp = findViewById(R.id.tv_ip);
connect = findViewById(R.id.connect);
disconnect = findViewById(R.id.disconnect);
fixation = findViewById(R.id.fixation);
assign = findViewById(R.id.assign);
specified = findViewById(R.id.specified);
ping = findViewById(R.id.ping);
title = findViewById(R.id.title);
infoBtn = findViewById(R.id.info_btn);
@@ -221,11 +240,11 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
initListData();
initBtnRecyclerView();
switch (Constants.getIpcConnectionMode(this)) {
case 0:
fixation.setChecked(true);
break;
case 1:
assign.setChecked(true);
specified.setChecked(true);
break;
case 0:
ping.setChecked(true);
break;
}
@@ -241,14 +260,10 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
public void onCheckedChanged(RadioGroup group, int checkedId) {
AdasManager.getInstance().disconnect();
int type;
switch (checkedId) {
default:
case R.id.assign:
type = AdasOptions.IPC_CONNECTION_MODE.ASSIGN;
break;
case R.id.fixation:
type = AdasOptions.IPC_CONNECTION_MODE.FIXATION;
break;
if (checkedId == R.id.specified) {
type = AdasOptions.IPC_CONNECTION_MODE.SPECIFIED;
} else {
type = AdasOptions.IPC_CONNECTION_MODE.PING;
}
Constants.setIpcConnectionMode(MainActivity.this, type);
}
@@ -407,56 +422,6 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
private int getStatusColor(int connectStatus) {
int color;
switch (connectStatus) {
case IPC_CONNECTION_STATUS.CONNECTED:
color = R.color.connect_status_connected;
break;
default:
case IPC_CONNECTION_STATUS.DISCONNECTED:
color = R.color.connect_status_disconnected;
break;
case IPC_CONNECTION_STATUS.CONNECTING:
color = R.color.connect_status_connecting;
break;
case IPC_CONNECTION_STATUS.SEARCH_ADDRESS:
color = R.color.connect_status_search_address;
break;
case IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS:
color = R.color.connect_status_disconnecting;
break;
}
return color;
}
private String onUpdateConnectStateView() {
String status;
switch (connectStatus) {
case IPC_CONNECTION_STATUS.CONNECTED:
status = "已连接";
break;
default:
case IPC_CONNECTION_STATUS.DISCONNECTED:
status = "未连接";
break;
case IPC_CONNECTION_STATUS.CONNECTING:
status = "连接中";
break;
case IPC_CONNECTION_STATUS.SEARCH_ADDRESS:
status = "搜索IP";
break;
case IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS:
status = "未找到";
break;
}
Message msg = Message.obtain();
msg.obj = new IPCConnectState(status, getStatusColor(connectStatus));
msg.what = WHAT_IPC_CONNECT_STATE;
getHandler().sendMessage(msg);
return status;
}
@Override
public void onError(ProtocolStatus status, byte[] bytes) {
@@ -491,6 +456,11 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
@Override
public void onLightSwitch(@NonNull Chassis.LightSwitch light) {
}
@Override
public void onAutopilotState(MessagePad.Header header, MessagePad.AutopilotState autopilotState) {
}
@@ -500,7 +470,8 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
@Override
public void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights) {
public void onPerceptionTrafficLight(MessagePad.Header header, FusionTrafficLightOuterClass.FusionTrafficLights trafficLights) {
}
@Override
@@ -546,6 +517,26 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
public void onStatusQueryResp(MessagePad.Header header, SystemStatusInfo.StatusInfo statusInfo) {
}
@Override
public void onSystemStatus(MessagePad.Header header, SsmInfo.SsmStatusInf statusInf) {
}
@Override
public void onFaultManagementState(MessagePad.Header header, @NonNull FmInfo.FaultResultMsg fmInfo) {
}
@Override
public void onFSM2024State(@NonNull MessagePad.Header header, @NonNull Fsm2024.FSMStateMsg fsmState) {
}
@Override
public void onLocalizationState(MessagePad.Header header, @NonNull LocState.loc_state locState) {
}
@Override
public void onRecordDataConfigResp(MessagePad.Header header, MessagePad.RecordDataConfig config) {
@@ -593,45 +584,57 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
@Override
public void onSweeperFutianCloudTask(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTask.TaskInfo taskInfo) {
public void onSweeperFutianCloudTask(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTask.TaskInfo taskInfo) {
}
@Override
public void onSweeperFutianCloudTaskConfirm(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskConfirm.TaskConfirm taskConfirm) {
public void onSweeperFutianCloudTaskConfirm(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskConfirm.TaskConfirm taskConfirm) {
}
@Override
public void onSweeperFutianCloudTaskStatus(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskStatus.TaskStatusPush taskStatusPush) {
public void onSweeperFutianCloudTaskStatus(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskStatus.TaskStatusPush taskStatusPush) {
}
@Override
public void onSweeperFutianCloudTaskStop(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskStop.StopTaskReq stopTaskReq) {
public void onSweeperFutianCloudTaskStop(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskStop.StopTaskReq stopTaskReq) {
}
@Override
public void onSweeperFutianCloudTaskSuspendResume(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp) {
public void onSweeperFutianCloudTaskSuspendResume(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp) {
}
@Override
public void onSweeperFutianCloudBootable(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperBootable.IsBootableResp isBootableResp) {
public void onSweeperFutianCloudBootable(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperBootable.IsBootableResp isBootableResp) {
}
@Override
public void onSweeperFutianCloudBigTaskStatus(@NonNull MessagePad.Header header, @NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush) {
public void onSweeperFutianCloudBigTaskStatus(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush) {
}
@Override
public void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush) {
}
@Override
public void onSweeperFutianCloudTaskUnknown(@NonNull MessagePad.Header header, @NonNull byte[] bytes) {
public void onParallelDrivingResp(@NonNull MessagePad.Header header, @NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable ParallelTaskProcessNoticeOuterClass.ParallelTaskProcessNotice parallelTaskProcessNotice) {
}
@Override
public void onAiCloudTaskUnknown(@NonNull MessagePad.Header header, @NonNull byte[] bytes) {
}
@Override
public void onBagManagerCmd(MessagePad.Header header, BagManagerOuterClass.BagManager bagManager) {
@@ -658,7 +661,52 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
@Override
public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable List<UnableAutopilotReason> unableAutopilotReasons) {
public void onV2nNioGreenWavePassageEvent(@NonNull MessagePad.Header header, @NonNull MessagePad.V2nCrossSpeed crossSpeed) {
}
@Override
public void onV2nNioCrossoverEvent(@NonNull MessagePad.Header header, @NonNull MessagePad.Event event) {
}
@Override
public void onV2nNioOtherRetrogradeEvent(@NonNull MessagePad.Header header, @NonNull MessagePad.Event event) {
}
@Override
public void onV2nNioCongestionEvent(@NonNull MessagePad.Header header, @NonNull MessagePad.V2nCongestion congestion) {
}
@Override
public void onLaneMarksTran(@NonNull MessagePad.Header header, @NonNull LaneMarkOuterClass.LaneMarks laneMarks) {
}
@Override
public void onSsmReceiveTimeout(boolean isTimeout) {
}
@Override
public void onFsm2024ReceiveTimeout(boolean isTimeout) {
}
@Override
public void onAutopilotAbility(boolean isAutopilotAbility, @NonNull LaunchConditionData launchConditionData, @Nullable ArrayList<UnableLaunchReason> unableAutopilotReasons) {
}
@Override
public void onParallelDrivingAbility(boolean isParallelDrivingAbility) {
}
@Override
public void onReceiveReceivedAck(@NonNull ReceivedAck receivedAck) {
}
@@ -670,41 +718,133 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
int mode = Constants.getIpcConnectionMode(this);
switch (mode) {
default:
case AdasOptions.IPC_CONNECTION_MODE.FIXATION:
options = new AdasOptions.Builder().setClient(false).setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(this)).setIpcConnectionMode(mode).build();
case AdasOptions.IPC_CONNECTION_MODE.PING:
options = AdasOptions.newBuilder().setPassenger(false).setPingAddressList(AdasManager.getInstance().getPingAddressList()).setConnectionMode(mode).build();
break;
case AdasOptions.IPC_CONNECTION_MODE.ASSIGN:
options = new AdasOptions.Builder().setClient(false).setIpcAssignIP(Constants.getIPCIp(this)).setIpcConnectionMode(mode).build();
case AdasOptions.IPC_CONNECTION_MODE.SPECIFIED:
options = AdasOptions.newBuilder().setPassenger(false).setSpecifiedAddress(Constants.getIPCIp(this)).setConnectionMode(mode).build();
break;
}
AdasManager.getInstance().create(options, this);
AdasManager.getInstance().create(this, options, this);
AdasManager.getInstance().setOnAdasListener(this);
}
private int getStatusColor(AdasConstants.IpcConnectionStatus connectStatus) {
int color;
if (connectStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
color = R.color.connect_status_connected;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.CONNECTING) {
color = R.color.connect_status_connecting;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER) {
color = R.color.connect_status_reconnecting_timer;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK) {
color = R.color.connect_status_reconnecting_network;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION) {
color = R.color.connect_status_connect_failed;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS) {
color = R.color.connect_status_illegal_address;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS) {
color = R.color.connect_status_search_address;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS) {
color = R.color.connect_status_not_found_address;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.CERTIFICATION_FAILED) {
color = R.color.connect_status_certification_failed;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT) {
color = R.color.connect_status_heartbeat_timeout;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.PROTOCOL_MISMATCH) {
color = R.color.connect_status_protocol_mismatch;
} else if (connectStatus == AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED) {
color = R.color.connect_status_server_disconnect;
} else {
color = R.color.connect_status_disconnected;
}
return color;
}
private void onUpdateConnectStateView(String status) {
Message msg = Message.obtain();
msg.obj = new IPCConnectState(status, getStatusColor(connectStatus));
msg.what = WHAT_IPC_CONNECT_STATE;
getHandler().sendMessage(msg);
}
@Override
public void onConnectionIPCStatus(int ipcConnectionStatus, String reason) {
String time = sdf.format(new Date());
connectStatusList.add(0, new IPCConnectState(reason == null ? "主动断开连接" : reason, getStatusColor(ipcConnectionStatus)));
public void onConnectionIPCStatus(AdasConstants.IpcConnectionStatus ipcConnectionStatus, @Nullable String reason) {
String connectStatusDescribe = "未连接";
if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.DISCONNECTED) {
connectStatusDescribe = "主动断开连接\n未连接或主动断开连接未连接鹰眼首次启动时未调用连接函数【目前鹰眼默认启动就会调用连接函数】主动断开连接主动调用断开连接函数";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
connectStatusDescribe = "已连接";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTING) {
connectStatusDescribe = "连接中";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER) {
connectStatusDescribe = "重连中\n类型定时器";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK) {
connectStatusDescribe = "重连中\n类型网络监听";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION) {
connectStatusDescribe = "连接异常\n鹰眼与域控连接失败、无法连接、非正常断开等原因" + reason;
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS) {
connectStatusDescribe = "非法地址\n连接模式为指定地址时表示当前鹰眼调用连接时传入的域控地址错误或不符合规则【不修改默认配置不会出现此问题】连接模式为PING模式时表示传入的PING地址列表存在问题";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS) {
connectStatusDescribe = "正在搜索域控地址";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS) {
connectStatusDescribe = "找不到可用地址\n域控地址列表中的全部地址均无法连通【不修改默认配置的情况下需要排查PAD是否连接车载路由器、工控机是否连接车载路由器、工控机是否开机等】";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CERTIFICATION_FAILED) {
connectStatusDescribe = "域控证书认证异常\n鹰眼端或鹰眼端和域控端启用认证后出现异常原因" + certificationResult;
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT) {
connectStatusDescribe = "心跳超时\n连接域控成功后在一段时间内未收到域控任何数据超时时间" + reason + "";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.PROTOCOL_MISMATCH) {
connectStatusDescribe = "協議不匹配\n被连接的域控端非WebSocket协议【可能性非常低】";
} else if (ipcConnectionStatus == AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED) {
connectStatusDescribe = "域控主动断开连接\n域控主动发起断开WebSocket连接目前主要原因有1.证书认证失败2.老版本MAP不支持多连接的情况下会踢掉客户端域控断开发送的消息" + reason;
}
connectStatusList.add(0, new IPCConnectState(connectStatusDescribe, getStatusColor(ipcConnectionStatus)));
if (connectStatusList.size() > 100) {
connectStatusList.remove(connectStatusList.size() - 1);
}
connectStatus = ipcConnectionStatus;
String status = onUpdateConnectStateView();
if (connectStatus == IPC_CONNECTION_STATUS.CONNECTED) {
if (connectStatusDescribe.contains("\n")) {
connectStatusDescribe = connectStatusDescribe.substring(0, connectStatusDescribe.indexOf("\n"));
}
onUpdateConnectStateView(connectStatusDescribe);
if (connectStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
getHandler().sendEmptyMessage(WHAT_IPC_IP);
String tem = getIPCIP();
if (!TextUtils.isEmpty(tem)) {
List<String> ips = Constants.getIpcUsedIps(this);
Constants.addIpcUsedIps(this, ips, tem);
}
} else if (connectStatus == IPC_CONNECTION_STATUS.DISCONNECTED) {
} else if (connectStatus == AdasConstants.IpcConnectionStatus.DISCONNECTED) {
getHandler().sendEmptyMessage(WHAT_IPC_IP);
}
// LogSave.getInstance().saveLog("连接状态", status);
// CupidLogUtils.i(TAG, "connectStatus=" + status);
}
@Override
public void onCertification(@NonNull AdasConstants.CertificationStatus status) {
if (status == AdasConstants.CertificationStatus.TIMEOUT) {
certificationResult = "证书认证超时表示域控未发送BasicInfoReq接口的数据【这种情况可能是连接出现了问题】";
} else {
if (status != AdasConstants.CertificationStatus.NOT_ENABLED) {
if (status == AdasConstants.CertificationStatus.CERTIFICATE_CHAIN_SUCCESS) {
certificationResult = "成功校验域控证书";
} else if (status == AdasConstants.CertificationStatus.ROOT_CRT_ERROR) {
certificationResult = "获取ROOT证书异常表示未传递证书没有拿到ROOT证书";
} else if (status == AdasConstants.CertificationStatus.IPC_CRT_ERROR) {
certificationResult = "获取域控证书异常表示域控发送了BasicInfoReq接口的数据但是未传递证书或证书解码失败【失败的可能性很低】";
} else if (status == AdasConstants.CertificationStatus.CERTIFICATE_CHAIN_FAILED) {
certificationResult = "域控证书校验失败(表示证书链未验证通过。证书不匹配、证书格式不正确)";
}
}
}
}
@Override
public void onCompatibility(VersionCompatibility versionCompatibility) {
showToastCenter("所连工控机:\n" + (versionCompatibility == null ? "未连接" : versionCompatibility.toString()), Toast.LENGTH_LONG);
@@ -746,7 +886,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
}
if (connectStatus != IPC_CONNECTION_STATUS.CONNECTED) {
if (connectStatus != AdasConstants.IpcConnectionStatus.CONNECTED) {
String msg = "未连接工控机";
showToastCenter(msg);
return;

View File

@@ -23,7 +23,7 @@ public class Constants {
/***********************是否使用固定IP******************/
// 0:固定IP 1:指定 2UDP
// 0:Ping 1:指定
private static final String IPC_CONNECTION_MODE = "ipc_connection_mode";
public static void setIpcConnectionMode(Context context, int type) {

View File

@@ -36,8 +36,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:gravity="center"
android:layoutDirection="ltr"
android:gravity="center|start"
android:text="未连接"
android:textColor="@color/colorWhile"
android:textSize="16dp"
@@ -128,17 +127,17 @@
android:orientation="horizontal">
<RadioButton
android:id="@+id/assign"
android:id="@+id/specified"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="指定"
android:textColor="#ffffff" />
<RadioButton
android:id="@+id/fixation"
android:id="@+id/ping"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="固定"
android:text="PING"
android:textColor="#ffffff" />
</RadioGroup>

View File

@@ -12,9 +12,17 @@
<color name="colorCrimson">#DC143C</color>
<color name="colorLimeGreen">#32CD32</color>
<color name="colorSlateGray">#708090</color>
<color name="connect_status_connected">#32CD32</color>
<color name="connect_status_disconnected">#DC143C</color>
<color name="connect_status_connecting">#FF00FF</color>
<color name="connect_status_disconnecting">#DAA520</color>
<color name="connect_status_search_address">#1E90FF</color>
<color name="connect_status_disconnected">#FF0000</color>
<color name="connect_status_connected">#00FF00</color>
<color name="connect_status_connecting">#800080</color>
<color name="connect_status_reconnecting_timer">#BF9548</color>
<color name="connect_status_reconnecting_network">#FFA500</color>
<color name="connect_status_connect_failed">#FF6347</color>
<color name="connect_status_illegal_address">#b408aa</color>
<color name="connect_status_search_address">#00FFFF</color>
<color name="connect_status_not_found_address">#FFC0CB</color>
<color name="connect_status_certification_failed">#800000</color>
<color name="connect_status_heartbeat_timeout">#FFD700</color>
<color name="connect_status_protocol_mismatch">#01014F</color>
<color name="connect_status_server_disconnect">#4d0303</color>
</resources>