[660][data-center] 添加查询节点状态以及主动推送节点状态接口
This commit is contained in:
@@ -65,6 +65,7 @@ import com.zhidao.support.adas.high.chain.AdasChain
|
||||
import com.zhidao.support.adas.high.common.Constants
|
||||
import com.zhidao.support.adas.high.common.CupidLogUtils
|
||||
import com.zhjt.mogo.adas.common.MessageType
|
||||
import com.zhjt.mogo.adas.data.Adas
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.bean.MogoReport
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
@@ -1375,4 +1376,8 @@ class MoGoAutopilotControlProvider :
|
||||
return AdasManager.getInstance().sendSeatPressure(driver, copilot, backRow) > -1
|
||||
}
|
||||
|
||||
override fun getNodeStateInfo(name: AdasConstants.NodeName): Adas.NodeStateInfo {
|
||||
return AdasManager.getInstance().getNodeStateInfo(name)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,7 +14,6 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_AD
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_GUARDIAN
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_MAP_PARAM
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_PARALLEL
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_P_ACTIONS
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_P_OBJECTS
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_RECORD
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_ROUTE
|
||||
@@ -73,6 +72,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerRoboBusJinlvM1StitchedV
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerStartAutopilotFailedListenerManager.invokeStartAutopilotFailed
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCleanSystemListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCloudTaskListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerNodeStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuMapMathListenerManager
|
||||
@@ -88,6 +88,8 @@ import com.zhidao.support.adas.high.chain.AdasChain
|
||||
import com.zhjt.mogo.adas.data.bean.AdasParam
|
||||
import com.zhidao.support.adas.high.common.ProtocolStatus
|
||||
import com.zhjt.mogo.adas.common.MessageType
|
||||
import com.zhjt.mogo.adas.data.Adas
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics
|
||||
import com.zhjt.mogo.adas.data.bean.LaunchConditionData
|
||||
@@ -1022,6 +1024,19 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
CallerV2nNioEventListenerManager.invokeV2nNioCongestionEvent(congestion)
|
||||
}
|
||||
|
||||
/**
|
||||
* 所连接的域控的节点状态信息
|
||||
* 目前包含状态 节点是否存在;节点是否超时;
|
||||
* SSM 只判断超时状态
|
||||
* FSM 是否存在;是否超时;
|
||||
*
|
||||
* @param name 节点名称
|
||||
* @param stateInfo 节点状态信息 包含:未知;存在;不存在; 以及存在的一些状态
|
||||
*/
|
||||
override fun onNodeStateInfo(name: AdasConstants.NodeName, stateInfo: Adas.NodeStateInfo) {
|
||||
CallerNodeStateListenerManager.invokeNodeState(name, stateInfo)
|
||||
}
|
||||
|
||||
/**
|
||||
* 域控SSM接口接收超时
|
||||
* 状态变动时才会回调,默认SSM状态正常
|
||||
|
||||
@@ -5,14 +5,15 @@ import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
||||
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult
|
||||
import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity
|
||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
|
||||
import com.zhjt.mogo.adas.data.Adas
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.GetTaskReq
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.StartTaskResp
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume.SuspendResumeTaskReq
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirmResp
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.BigTaskActionResp
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirmResp
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume.SuspendResumeTaskReq
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest
|
||||
|
||||
@@ -604,4 +605,13 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
|
||||
* @param backRow 后排是否有人
|
||||
*/
|
||||
fun sendSeatPressure(driver: Boolean,copilot: Boolean,backRow: Boolean): Boolean
|
||||
|
||||
/**
|
||||
* 查询节点状态
|
||||
*
|
||||
* @param name 节点名称 目前只有SSM和FSM2024
|
||||
* @return 状态 SSM只能查询到超时状态;FSM2024可以查询到节点是否存在状态以及超时状态;
|
||||
*/
|
||||
fun getNodeStateInfo(name: AdasConstants.NodeName): Adas.NodeStateInfo
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.mogo.eagle.core.function.api.autopilot
|
||||
|
||||
import com.zhjt.mogo.adas.data.Adas
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
|
||||
/**
|
||||
*节点状态
|
||||
*/
|
||||
interface IMoGoNodeStateListener {
|
||||
|
||||
/**
|
||||
* 所连接的域控的节点状态信息
|
||||
* 目前包含状态 节点是否存在;节点是否超时;
|
||||
* SSM 只判断超时状态
|
||||
* FSM 是否存在;是否超时;
|
||||
*
|
||||
* @param name 节点名称
|
||||
* @param stateInfo 节点状态信息 包含:未知;存在;不存在; 以及存在的一些状态
|
||||
*/
|
||||
fun onNodeStateInfo(name: AdasConstants.NodeName, stateInfo: Adas.NodeStateInfo)
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -22,6 +22,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.util.AppStateManager
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.zhjt.mogo.adas.data.Adas
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.GetTaskReq
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.StartTaskResp
|
||||
@@ -919,4 +920,14 @@ object CallerAutoPilotControlManager {
|
||||
fun sendSeatPressure(driver: Boolean,copilot: Boolean,backRow: Boolean): Boolean?{
|
||||
return providerApi?.sendSeatPressure(driver, copilot, backRow)
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询节点状态
|
||||
*
|
||||
* @param name 节点名称 目前只有SSM和FSM2024
|
||||
* @return 状态 SSM只能查询到超时状态;FSM2024可以查询到节点是否存在状态以及超时状态;
|
||||
*/
|
||||
fun getNodeStateInfo(name: AdasConstants.NodeName): Adas.NodeStateInfo? {
|
||||
return providerApi?.getNodeStateInfo(name)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.mogo.eagle.core.function.call.autopilot
|
||||
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoNodeStateListener
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import com.zhjt.mogo.adas.data.Adas
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
|
||||
/**
|
||||
*节点状态
|
||||
*/
|
||||
object CallerNodeStateListenerManager : CallerBase<IMoGoNodeStateListener>() {
|
||||
private val mutableMap = mutableMapOf<String, Set<AdasConstants.NodeName>>()
|
||||
|
||||
fun addNodeStateListener(
|
||||
tag: String,
|
||||
nodeName: Set<AdasConstants.NodeName>?,
|
||||
listener: IMoGoNodeStateListener
|
||||
) {
|
||||
if (!nodeName.isNullOrEmpty()) {
|
||||
mutableMap[tag] = nodeName
|
||||
}
|
||||
super.addListener(tag, listener)
|
||||
}
|
||||
|
||||
fun removeNodeStateListener(tag: String) {
|
||||
if (mutableMap.containsKey(tag)) {
|
||||
mutableMap.remove(tag)
|
||||
}
|
||||
super.removeListener(tag)
|
||||
}
|
||||
|
||||
fun invokeNodeState(name: AdasConstants.NodeName, stateInfo: Adas.NodeStateInfo) {
|
||||
M_LISTENERS.forEach {
|
||||
val names = mutableMap[it.key]
|
||||
val listener = it.value
|
||||
if (names.isNullOrEmpty()) {
|
||||
listener.onNodeStateInfo(name, stateInfo)
|
||||
} else {
|
||||
if (names.contains(name)) {
|
||||
listener.onNodeStateInfo(name, stateInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun doSomeAfterAddListener(tag: String, listener: IMoGoNodeStateListener) {
|
||||
super.doSomeAfterAddListener(tag, listener)
|
||||
mutableMap.forEach { it ->
|
||||
if (it.key == tag) {
|
||||
val value = it.value
|
||||
value.forEach { name ->
|
||||
val state = CallerAutoPilotControlManager.getNodeStateInfo(name)
|
||||
state?.let {
|
||||
listener.onNodeStateInfo(name, state)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package mogo.telematics.pad;
|
||||
option java_package = "com.zhjt.mogo.adas.data";
|
||||
|
||||
import "message_pad.proto";
|
||||
import "personal/adas_constants.proto";
|
||||
|
||||
//发送的数据ID持久化,只保留最后一条的消息id,每天重新累计
|
||||
message LastMessage{
|
||||
@@ -15,3 +16,10 @@ message LastMessage{
|
||||
message MessageIdInfo{
|
||||
map<uint64, LastMessage> lastMessages = 1;// key:data(日期) value:数据
|
||||
}
|
||||
|
||||
//节点状态信息
|
||||
message NodeStateInfo{
|
||||
com.zhjt.mogo.adas.data.NodeName nodeName = 1;//节点名称
|
||||
com.zhjt.mogo.adas.data.NodeState nodeState = 2;//节点主状态 包含:未知;存在;不存在;
|
||||
com.zhjt.mogo.adas.data.NodeExistState existState = 3;//节点存在时的状态
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ enum MapSystemParamType{
|
||||
SEAT_STATE = 15;//15: 座椅状态(int) 0:表示仅主驾位有人,1:表示仅副驾位有人,2:表示主驾和副驾同时有人,3:表示仅后排有人,4:表示主驾有人+后排有人,5:表示副驾有人+后排有人,6:表示主驾和副驾同时有人+后排有人,7: 所有座位都无人, 255:缺省
|
||||
OVERTAKE_MAX_SPEED = 16;//16: 超车的最大速度阈值(double, m/s, 范围[3, 12.5])
|
||||
FAULT_SIMULATION_CMD = 17;//17: 故障模拟指令(int) default:0(do nothing), 1:线控失效
|
||||
COLLISION_REPORTING = 18;//18: 碰撞上报(null)
|
||||
COLLISION_REPORTING = 18;//18: 碰撞上报(null) TODO 废弃,使用:message CollisionReport
|
||||
PARK_VEH_CROSS = 19;//19: 会车开关(bool) 0: off 1:on 默认0
|
||||
PARK_VEH_OVERTAKE = 20;//20: 超车开关(bool) 0: off 1:on 默认0
|
||||
}
|
||||
@@ -106,3 +106,28 @@ enum SubscribeType {
|
||||
UNSUBSCRIBE = 2;//取消订阅
|
||||
}
|
||||
|
||||
/**
|
||||
* 节点名称
|
||||
*/
|
||||
enum NodeName{
|
||||
DEFAULT_NAME = 0;//无用
|
||||
SSM = 1;//SSM默认存在
|
||||
FSM2024 = 2;//FSM 2024版本的Topic名称
|
||||
}
|
||||
|
||||
/**
|
||||
* 节点状态
|
||||
*/
|
||||
enum NodeState{
|
||||
NODE_UNKNOWN = 0;//未知,未连接或SSM超时
|
||||
NODE_NOT_EXIST = 1;//节点不存在
|
||||
NODE_EXIST = 2;//节点存在
|
||||
}
|
||||
|
||||
/**
|
||||
* 节点存在时的状态
|
||||
*/
|
||||
enum NodeExistState{
|
||||
NODE_EXIST_NORMAL = 0;//节点正常 仅表示数据接收正常
|
||||
NODE_EXIST_TIMEOUT = 1;//节点数据接收超时
|
||||
}
|
||||
@@ -1715,6 +1715,16 @@ public class AdasManager implements IAdasNetCommApi {
|
||||
return mChannel == null ? -1L : mChannel.sendParallelDrivingReq(reqNo, parallelRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询节点状态
|
||||
*
|
||||
* @param name 节点名称 目前只有SSM和FSM2024
|
||||
* @return 状态 SSM只能查询到超时状态;FSM2024可以查询到节点是否存在状态以及超时状态;
|
||||
*/
|
||||
public Adas.NodeStateInfo getNodeStateInfo(AdasConstants.NodeName name) {
|
||||
return AutopilotAbilityManager.getInstance().getNodeStateInfo(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取域控PING 地址列表
|
||||
*
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.google.protobuf.ByteString;
|
||||
import com.mogo.support.obu.ObuScene;
|
||||
import com.zhidao.support.adas.high.common.ProtocolStatus;
|
||||
import com.zhjt.mogo.adas.common.MessageType;
|
||||
import com.zhjt.mogo.adas.data.Adas;
|
||||
import com.zhjt.mogo.adas.data.AdasConstants;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.bean.AdasParam;
|
||||
@@ -532,6 +533,17 @@ public interface OnAdasListener {
|
||||
*/
|
||||
void onV2nNioCongestionEvent(@NonNull MessagePad.Header header, @NonNull MessagePad.V2nCongestion congestion);
|
||||
|
||||
/**
|
||||
* 所连接的域控的节点状态信息
|
||||
* 目前包含状态 节点是否存在;节点是否超时;
|
||||
* SSM 只判断超时状态
|
||||
* FSM 是否存在;是否超时;
|
||||
*
|
||||
* @param name 节点名称
|
||||
* @param stateInfo 节点状态信息 包含:未知;存在;不存在; 以及存在的一些状态
|
||||
*/
|
||||
void onNodeStateInfo(@NonNull AdasConstants.NodeName name, @NonNull Adas.NodeStateInfo stateInfo);
|
||||
|
||||
/**
|
||||
* 域控SSM接口接收超时
|
||||
* 状态变动时才会回调,默认SSM状态正常
|
||||
|
||||
@@ -9,11 +9,14 @@ import com.zhidao.support.adas.high.AdasOptions;
|
||||
import com.zhidao.support.adas.high.BuildConfig;
|
||||
import com.zhidao.support.adas.high.OnAdasListener;
|
||||
import com.zhidao.support.adas.high.common.CupidLogUtils;
|
||||
import com.zhjt.mogo.adas.data.Adas;
|
||||
import com.zhjt.mogo.adas.data.AdasConstants;
|
||||
import com.zhjt.mogo.adas.data.bean.LaunchConditionData;
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
@@ -65,6 +68,7 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener {
|
||||
private final AtomicBoolean isOldSsmTimeout = new AtomicBoolean(false);//SSM是否超时 老状态
|
||||
private final AtomicBoolean isOldFsmTimeout = new AtomicBoolean(false);//FSM是否超时 老状态
|
||||
private final AtomicBoolean isInitCarConfig = new AtomicBoolean(false);//车辆信息是否初始化
|
||||
private final Map<AdasConstants.NodeName, Adas.NodeStateInfo> nodeStateInfos = new HashMap<>();
|
||||
private boolean isSupportFSM2024 = false;
|
||||
|
||||
private AutopilotAbilityManager() {
|
||||
@@ -209,6 +213,25 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询节点状态
|
||||
*
|
||||
* @param name 节点名称 目前只有SSM和FSM2024
|
||||
* @return 状态 SSM只能查询到超时状态;FSM2024可以查询到节点是否存在状态以及超时状态;
|
||||
*/
|
||||
public Adas.NodeStateInfo getNodeStateInfo(AdasConstants.NodeName name) {
|
||||
Adas.NodeStateInfo state = nodeStateInfos.get(name);
|
||||
if (state == null) {
|
||||
state = Adas.NodeStateInfo.newBuilder().setNodeState(AdasConstants.NodeState.NODE_UNKNOWN).build();
|
||||
nodeStateInfos.put(name, state);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
//检测节点是否存在
|
||||
private void detectionTopicExistence() {
|
||||
|
||||
}
|
||||
|
||||
private void initAutopilotAbility() {
|
||||
stopAllTimer();
|
||||
|
||||
Reference in New Issue
Block a user