[610][adas]新增故障管理(FM)接口;修改底盘数据来源字段;新增SSM来源字段

This commit is contained in:
xinfengkun
2023-09-14 18:18:50 +08:00
parent ee89b6ecd0
commit 10d00adf4c
14 changed files with 200 additions and 27 deletions

View File

@@ -96,7 +96,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
private final Map<MessagePad.MessageType, DispatchHandler> dispatchHandlers = new HashMap<>();//其他分发线程
private Timer checkCompatibilityTimer;//检查版本兼容性定时器 连接成功后5秒内等待工控机发送配置信息
private int seqSpecialVehicle = 0;//特种车辆命令发送次数
private int usedChassisType = Constants.CHASSIS_TYPE.UNKNOWN;//使用的底盘类型 新老
private AdasConstants.ChassisSource usedChassisSource = AdasConstants.ChassisSource.CHASSIS_UNKNOWN;//使用的底盘类型 新老
private AdasConstants.SsmSource usedSsmSource = AdasConstants.SsmSource.SSM_UNKNOWN;//使用的SSM类型
/**
* 与工控机链接状态
*/
@@ -317,8 +319,13 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
}
@Override
public int getUsedChassisType() {
return usedChassisType;
public AdasConstants.ChassisSource getUsedChassisSource() {
return usedChassisSource;
}
@Override
public AdasConstants.SsmSource getUsedSsmSource() {
return usedSsmSource;
}
/**
@@ -403,12 +410,23 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
if (defaultDispatchHandler != null)
defaultDispatchHandler.sendRawMessage(raw);
}
if (messageType == MessagePad.MessageType.MsgTypeVehicleState) {
//老底盘接口
usedChassisType = Constants.CHASSIS_TYPE.OLD_CHASSIS;
} else if (messageType == MessagePad.MessageType.MsgTypeChassisStates) {
//新底盘接口
usedChassisType = Constants.CHASSIS_TYPE.NEW_CHASSIS;
if (usedChassisSource == AdasConstants.ChassisSource.CHASSIS_UNKNOWN) {
if (messageType == MessagePad.MessageType.MsgTypeVehicleState) {
//老底盘接口
usedChassisSource = AdasConstants.ChassisSource.CHASSIS_VER1;
} else if (messageType == MessagePad.MessageType.MsgTypeChassisStates) {
//新底盘接口
usedChassisSource = AdasConstants.ChassisSource.CHASSIS_VER2;
}
}
if (usedSsmSource == AdasConstants.SsmSource.SSM_UNKNOWN) {
if (messageType == MessagePad.MessageType.MsgTypeStatusQueryResp) {
//老SSM(查询方式)
usedSsmSource = AdasConstants.SsmSource.SSM_VER1;
} else if (messageType == MessagePad.MessageType.MsgTypeSSMState) {
//新SSM(定频回调)
usedSsmSource = AdasConstants.SsmSource.SSM_VER2;
}
}
} else {
callError(raw.getProtocolStatus(), byteString.toByteArray());
@@ -554,7 +572,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
ipcConnectedIp = null;
ipcConnectedPort = Constants.DEFAULT_PORT;
subscribeInterface = null;
usedChassisType = Constants.CHASSIS_TYPE.UNKNOWN;
usedChassisSource = AdasConstants.ChassisSource.CHASSIS_UNKNOWN;
usedSsmSource = AdasConstants.SsmSource.SSM_UNKNOWN;
updateConnectStatus(Constants.IPC_CONNECTION_STATUS.DISCONNECTED, t == null ? "" : t);
}

View File

@@ -276,13 +276,23 @@ public class AdasManager implements IAdasNetCommApi {
}
/**
* 获取使用底盘的类型
* 获取使用底盘的来源
*
* @return {@link Constants.CHASSIS_TYPE}
* @return {@link AdasConstants.ChassisSource}
*/
@Override
public int getUsedChassisType() {
return mChannel == null ? Constants.CHASSIS_TYPE.UNKNOWN : mChannel.getUsedChassisType();
public AdasConstants.ChassisSource getUsedChassisSource() {
return mChannel == null ? AdasConstants.ChassisSource.CHASSIS_UNKNOWN : mChannel.getUsedChassisSource();
}
/**
* 获取使用SSM的来源
*
* @return {@link AdasConstants.SsmSource}
*/
@Override
public AdasConstants.SsmSource getUsedSsmSource() {
return mChannel == null ? AdasConstants.SsmSource.SSM_UNKNOWN : mChannel.getUsedSsmSource();
}
/**

View File

@@ -70,11 +70,18 @@ public interface IAdasNetCommApi {
int getIpcConnectedPort();
/**
* 获取使用底盘的类型
* 获取使用底盘的来源
*
* @return {@link Constants.CHASSIS_TYPE}
* @return {@link AdasConstants.ChassisSource}
*/
int getUsedChassisType();
AdasConstants.ChassisSource getUsedChassisSource();
/**
* 获取使用SSM的来源
*
* @return {@link AdasConstants.SsmSource}
*/
AdasConstants.SsmSource getUsedSsmSource();
/**
* 自动驾驶设备基础信息应答

View File

@@ -25,6 +25,7 @@ import java.util.ArrayList;
import bag_manager.BagManagerOuterClass;
import chassis.ChassisStatesOuterClass;
import chassis.VehicleStateOuterClass;
import fault_management.FmInfo;
import function_state_management.FunctionStates;
import mogo.telematics.pad.MessagePad;
import mogo.v2x.MogoV2X;
@@ -212,6 +213,14 @@ public interface OnAdasListener {
*/
void onSystemStatus(MessagePad.Header header, SsmInfo.SsmStatusInf statusInf);
/**
* 故障管理FM接口
*
* @param header 头
* @param fmInfo 数据
*/
void onFaultManagementState(MessagePad.Header header, @NonNull FmInfo.FaultResultMsg fmInfo);
/**
* 数据采集配置应答
*

View File

@@ -111,16 +111,6 @@ public class Constants {
}
/**
* 使用底盘数据类型
*/
public interface CHASSIS_TYPE {
int UNKNOWN = -1;//未知
int NEW_CHASSIS = 0;//新底盘
int OLD_CHASSIS = 1;//老底盘
}
/**
* 启动自动驾驶-Source类型
*/

View File

@@ -31,6 +31,7 @@ public enum MessageType {
TYPE_RECEIVE_BACK_CAMERA_VIDEO(MessagePad.MessageType.MsgTypeBackCameraVideo, "后摄像头"),
TYPE_RECEIVE_M1_STITCHED_VIDEO(MessagePad.MessageType.MsgTypeM1StitchedVideo, "M1拼接视频"),
TYPE_RECEIVE_SSM(MessagePad.MessageType.MsgTypeSSMState, "SSM系统状态"),
TYPE_RECEIVE_FM_STATE(MessagePad.MessageType.MsgTypeFMState, "FM状态"),
TYPE_RECEIVE_BASIC_INFO_REQ(MessagePad.MessageType.MsgTypeBasicInfoReq, "自动驾驶设备基础信息请求"),
TYPE_SEND_BASIC_INFO_RESP(MessagePad.MessageType.MsgTypeBasicInfoResp, "自动驾驶设备基础信息应答"),

View File

@@ -0,0 +1,31 @@
package com.zhidao.support.adas.high.msg;
import android.os.SystemClock;
import com.google.protobuf.InvalidProtocolBufferException;
import com.zhidao.support.adas.high.AdasChannel;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.protocol.RawData;
import fault_management.FmInfo;
/**
* 故障管理FM接口
*/
public class FaultManagementMessage extends MyAbstractMessageHandler {
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
FmInfo.FaultResultMsg fmInfo = FmInfo.FaultResultMsg.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
AdasChannel.calculateTimeConsumingOnDispatchRaw("FM状态", raw.receiveTime);
long nowTime = 0;
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
adasListener.onFaultManagementState(raw.getHeader(), fmInfo);
}
AdasChannel.calculateTimeConsumingBusiness("FM状态", nowTime);
}
}

View File

@@ -31,6 +31,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg arrivalNotificationMessage;//到站提醒
private IMsg statusQueryRespMessage;//状态查询应答
private IMsg systemStatusMessage;//定频SSM
private IMsg faultManagementMessage;//FM状态
private IMsg recordDataConfigRespMessage;//数据采集配置应答
private IMsg planningDecisionStateMessage;//planning决策状态
private IMsg obuWarningDataMessage;//工控机透传OBU V2I数据
@@ -168,6 +169,12 @@ public class MyMessageFactory implements IMyMessageFactory {
systemStatusMessage = new SystemStatusMessage();
}
return systemStatusMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_FM_STATE.typeCode) {
//FM状态
if (faultManagementMessage == null) {
faultManagementMessage = new FaultManagementMessage();
}
return faultManagementMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP.typeCode) {
//数据采集配置应答
if (recordDataConfigRespMessage == null) {