[660][data-center] 添加查询节点状态以及主动推送节点状态接口

This commit is contained in:
xinfengkun
2024-08-20 10:17:39 +08:00
parent b4ed1f8585
commit 3e51b85e8b
11 changed files with 211 additions and 6 deletions

View File

@@ -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;// keydata日期 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;//节点存在时的状态
}

View File

@@ -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;//节点数据接收超时
}

View File

@@ -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 地址列表
*

View File

@@ -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状态正常

View File

@@ -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();