[650][adas] 新增定位状态新接口

This commit is contained in:
xinfengkun
2024-06-13 16:19:31 +08:00
parent efe3eb1eed
commit 824a7c9312
9 changed files with 127 additions and 1 deletions

View File

@@ -75,6 +75,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
import com.zhjt.service.chain.ChainLog
import fault_management.FmInfo
import function_state_management.FunctionStates
import localization.LocState
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.v2x.MogoV2X
@@ -491,6 +492,18 @@ class MoGoAdasListenerImpl : OnAdasListener {
CallerFaultManagementStateListenerManager.invokeFaultManagementState(fmInfo)
}
/**
* 定位状态
* 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持
* 详细解释http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484
*
* @param header 头
* @param locState 数据
*/
override fun onLocalizationState(header: MessagePad.Header?, locState: LocState.loc_state) {
CallerLocalizationStateListenerManager.invokeLocalizationState(locState)
}
/**
* 数据采集配置应答
*/

View File

@@ -0,0 +1,19 @@
package com.mogo.eagle.core.function.api.autopilot
import localization.LocState
/**
*定位状态新接口
* 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持
* 详细解释http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484
*/
interface IMoGoLocalizationStateListener {
/**
* 定位状态
* @param locState 数据
*/
fun onLocalizationState(locState: LocState.loc_state)
}

View File

@@ -0,0 +1,23 @@
package com.mogo.eagle.core.function.call.autopilot
import com.mogo.eagle.core.function.api.autopilot.IMoGoLocalizationStateListener
import com.mogo.eagle.core.function.call.base.CallerBase
import localization.LocState
/**
*定位状态新接口
* 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持
* 详细解释http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484
*/
object CallerLocalizationStateListenerManager : CallerBase<IMoGoLocalizationStateListener>() {
fun invokeLocalizationState(locState: LocState.loc_state) {
M_LISTENERS.forEach {
val listener = it.value
listener.onLocalizationState(locState)
}
}
}

View File

@@ -30,6 +30,7 @@ public enum MessageType {
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_LOC_STATE(MessagePad.MessageType.MsgTypeLocState, "定位状态"),
TYPE_RECEIVE_BASIC_INFO_REQ(MessagePad.MessageType.MsgTypeBasicInfoReq, "自动驾驶设备基础信息请求"),
TYPE_SEND_BASIC_INFO_RESP(MessagePad.MessageType.MsgTypeBasicInfoResp, "自动驾驶设备基础信息应答"),

View File

@@ -0,0 +1,15 @@
syntax = "proto2";
package localization;
import "header.proto";
message loc_state {
optional common.Header header = 1;
optional double rtk_time = 2;//rtk 时间戳
optional int32 autopilot_state = 3;//0非自驾1自驾状态
optional int32 loc_status = 4;//loc 定位状态 0 正常 1 DR模式 2异常对应430统计异常值(对应鹰眼端显示0 蓝色、1 黄色、2异常红色)
optional string loc_sensors_state= 5;//子模块异常状态
optional string loc_current_sensor=6;//当前定位使用的主要定位消息源
optional string reserved = 7;
}

View File

@@ -35,6 +35,7 @@ enum MessageType
MsgTypeM1StitchedVideo = 0x1000e; //m1拼接视频 定频10hz
MsgTypeSSMState = 0x1000f; //ssm 系统状态 定频1hz hq m1 MAP350开始支持其他车型MAP360开始支持
MsgTypeFMState = 0x10010; //FM状态 定频1hz bus和清扫车是MAP370开始支持其他车型MAP360开始支持
MsgTypeLocState = 0x10012; //定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持
//### 以下消息全部不定频 ###
MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求
@@ -257,7 +258,7 @@ enum AdditionalAttribute
message SubSource
{
uint32 source = 1; // TrackedSource=1:1-lidar 2-camera 3-radar 4-vidar 5-falcon
// TrackedSource=2:1-v2v_bsm 2-v2i_rsm 3-v2v_ssm 4-v2n_rsm 5-v2n_rsi 6-v2i_ssm 7-v2i_rsi
// TrackedSource=2:1-v2v_bsm 2-v2i_rsm 3-v2v_ssm 4-v2n_rsm 5-v2n_rsi 6-v2i_ssm 7-v2i_rsi 8-v2n_rsm_2
string id = 2; //HEX_string -bsm_id
}
@@ -877,3 +878,6 @@ message SessionInfo
//message definition for MsgTypeFMState
//refer to fm_info.proto for details
//message definition for MsgTypeLocState
//refer to loc_state.proto

View File

@@ -31,6 +31,7 @@ import chassis.ChassisStatesOuterClass;
import chassis.VehicleStateOuterClass;
import fault_management.FmInfo;
import function_state_management.FunctionStates;
import localization.LocState;
import mogo.telematics.pad.MessagePad;
import mogo.v2x.MogoV2X;
import mogo.v2x.RoadOverviewEvents;
@@ -237,6 +238,16 @@ public interface OnAdasListener {
*/
void onFaultManagementState(MessagePad.Header header, @NonNull FmInfo.FaultResultMsg fmInfo);
/**
* 定位状态
* 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持
* 详细解释http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484
*
* @param header 头
* @param locState 数据
*/
void onLocalizationState(MessagePad.Header header, @NonNull LocState.loc_state locState);
/**
* 数据采集配置应答
*

View File

@@ -0,0 +1,33 @@
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 localization.LocState;
/**
* 定位状态
* 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持
* 详细解释http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484
*/
public class LocalizationStateMessage extends MyAbstractMessageHandler {
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
LocState.loc_state locState = LocState.loc_state.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
AdasChannel.calculateTimeConsumingOnDispatchRaw("定位状态", raw.receiveTime);
long nowTime = 0;
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
adasListener.onLocalizationState(raw.getHeader(), locState);
}
AdasChannel.calculateTimeConsumingBusiness("定位状态", nowTime);
}
}

View File

@@ -32,6 +32,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg statusQueryRespMessage;//状态查询应答
private IMsg systemStatusMessage;//定频SSM
private IMsg faultManagementMessage;//FM状态
private IMsg localizationStateMessage;//定位状态
private IMsg recordDataConfigRespMessage;//数据采集配置应答
private IMsg planningDecisionStateMessage;//planning决策状态
private IMsg obuWarningDataMessage;//工控机透传OBU V2I数据
@@ -180,6 +181,12 @@ public class MyMessageFactory implements IMyMessageFactory {
faultManagementMessage = new FaultManagementMessage();
}
return faultManagementMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_LOC_STATE.typeCode) {
//定位状态
if (localizationStateMessage == null) {
localizationStateMessage = new LocalizationStateMessage();
}
return localizationStateMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP.typeCode) {
//数据采集配置应答
if (recordDataConfigRespMessage == null) {