diff --git a/libraries/mogo-adas-data/build.gradle b/libraries/mogo-adas-data/build.gradle index daf8d9190c..b03422f9de 100644 --- a/libraries/mogo-adas-data/build.gradle +++ b/libraries/mogo-adas-data/build.gradle @@ -67,6 +67,7 @@ android { } dependencies { + implementation rootProject.ext.dependencies.androidxappcompat api rootProject.ext.dependencies.protobuf_java api rootProject.ext.dependencies.protobuf_java_util } diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/IpcConnectionStatusDescription.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/IpcConnectionStatusDescription.java new file mode 100644 index 0000000000..7472ac399a --- /dev/null +++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/IpcConnectionStatusDescription.java @@ -0,0 +1,90 @@ +package com.zhjt.mogo.adas.common; + + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.zhjt.mogo.adas.data.AdasConstants; + +/** + * 连接状态描述信息 + * 文案消息根据产品文档定义,详情见地址中的“工控机相关异常完善提示内容”模块:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=126243915 + */ +public enum IpcConnectionStatusDescription { + DISCONNECTED(AdasConstants.IpcConnectionStatus.DISCONNECTED, "未连接或主动断开连接", "连接异常", "域控未连接或主动断开连接", "域控未连接或主动断开连接", "未连接:首次启动时未调用连接函数;主动断开连接:主动调用断开连接函数;"), + CONNECTED(AdasConstants.IpcConnectionStatus.CONNECTED, "已连接", "域控已连接", null, "域控已连接", null), + CONNECTING(AdasConstants.IpcConnectionStatus.CONNECTING, "连接中", "域控连接中", null, "域控连接中", null), + RECONNECTING_TIMER(AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER, "重连中(定时器)", "域控重连中", null, "域控重连中", null), + RECONNECTING_NETWORK(AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK, "重连中(网络监听)", "域控重连中", null, "域控重连中", null), + CONNECT_EXCEPTION(AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION, "连接异常", "连接异常", "域控连接异常", "域控连接异常", "与域控连接失败、无法连接、非正常断开等"), + ILLEGAL_ADDRESS(AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS, "非法地址", "非法域控地址", null, "非法域控地址", "连接模式为指定地址时:表示当前调用连接时传入的域控地址错误或不符合规则【不修改默认配置不会出现此问题】;连接模式为PING模式时:表示传入的PING地址列表存在问题【不修改默认配置不会出现此问题】"), + SEARCH_ADDRESS(AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS, "搜索中", "正在搜索域控地址", null, "正在搜索域控地址", "连接模式为PING模式时,正在查找是否有可用的域控地址"), + NOT_FOUND_ADDRESS(AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS, "未找到", "找不到可用的域控地址", null, "找不到可用的域控地址", "连接模式为PING模式时,配置的域控地址列表中的全部地址均无法PING通【不修改默认配置的情况下需要排查PAD是否连接车载路由器、工控机是否连接车载路由器、工控机是否开机等】"), + CERTIFICATION_FAILED(AdasConstants.IpcConnectionStatus.CERTIFICATION_FAILED, "认证异常", "证书校验出现异常", null, "证书校验出现异常", "鹰眼端或鹰眼端和域控端启用认证后,认证出现异常"), + HEARTBEAT_TIMEOUT(AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT, "心跳超时", "域控心跳超时", null, "域控心跳超时", "连接域控成功后在一段时间内未收到域控任何数据,默认4秒【可以配置】"), + PROTOCOL_MISMATCH(AdasConstants.IpcConnectionStatus.PROTOCOL_MISMATCH, "协议不匹配", "协议不匹配", "WebSocket协议不匹配", "协议不匹配", "被连接的域控端非WebSocket协议【可能性非常低】"), + SERVER_DISCONNECTED(AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED, "域控断开", "域控主动断开连接", null, "域控主动断开连接", "域控主动发起断开WebSocket连接,目前主要原因有:1.证书认证失败;2.老版本MAP不支持多连接的情况下会踢掉客户端;"); + + + @NonNull + public final AdasConstants.IpcConnectionStatus status; + @NonNull + public final String name;//消息类型准确定义名称 + @NonNull + public final String title;//对应产品文档的标题/toast + @Nullable + public final String content;//对应产品文档的正文 + @NonNull + public final String expand;//对应产品文档的小拓展栏 + @Nullable + public final String desc;//描述或简单的解决办法或出现此状态的原因 + + public String msg;//自定义消息数据 + + IpcConnectionStatusDescription(@NonNull AdasConstants.IpcConnectionStatus status, @NonNull String name, @NonNull String title, @Nullable String content, @NonNull String expand, @Nullable String desc) { + this.status = status; + this.name = name; + this.title = title; + this.content = content; + this.expand = expand; + this.desc = desc; + } + + @NonNull + public static IpcConnectionStatusDescription getDescription(@Nullable AdasConstants.IpcConnectionStatus status) { + if (status == AdasConstants.IpcConnectionStatus.CONNECTED) { + return CONNECTED; + } else if (status == AdasConstants.IpcConnectionStatus.CONNECTING) { + return CONNECTING; + } else if (status == AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER) { + return RECONNECTING_TIMER; + } else if (status == AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK) { + return RECONNECTING_NETWORK; + } else if (status == AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION) { + return CONNECT_EXCEPTION; + } else if (status == AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS) { + return ILLEGAL_ADDRESS; + } else if (status == AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS) { + return SEARCH_ADDRESS; + } else if (status == AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS) { + return NOT_FOUND_ADDRESS; + } else if (status == AdasConstants.IpcConnectionStatus.CERTIFICATION_FAILED) { + return CERTIFICATION_FAILED; + } else if (status == AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT) { + return HEARTBEAT_TIMEOUT; + } else if (status == AdasConstants.IpcConnectionStatus.PROTOCOL_MISMATCH) { + return PROTOCOL_MISMATCH; + } else if (status == AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED) { + return SERVER_DISCONNECTED; + } else { +// status==AdasConstants.IpcConnectionStatus.DISCONNECTED + return DISCONNECTED; + } + } + + @NonNull + @Override + public String toString() { + return name; + } +}