[6.11.0][adas] 新增云端配置查询和响应接口

This commit is contained in:
xinfengkun
2025-03-12 18:26:37 +08:00
parent 67ead188c2
commit cb7a487052
14 changed files with 162 additions and 1 deletions

View File

@@ -1594,4 +1594,11 @@ class MoGoAutopilotControlProvider :
return AdasManager.getInstance().sendCopyBagAbortCopy() > -1
}
/**
* 云端配置查询
*/
override fun sendCloudConfigRequest(): Boolean {
return AdasManager.getInstance().sendCloudConfigRequest() > -1
}
}

View File

@@ -66,6 +66,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerBackCameraVideoListener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisDoorStateListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisGnssListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisStatesListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerCloudConfigListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerColdStartStateListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerFaultManagementStateListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerFsm2024ListenerManager
@@ -1473,6 +1474,10 @@ class MoGoAdasListenerImpl : OnAdasListener {
CallerDiskCopyManager.invokeCopyBag(diskCopy)
}
override fun onCloudConfig(header: MessagePad.Header, config: MessagePad.CloudConfig) {
CallerCloudConfigListenerManager.invokeCloudConfig(config)
}
/**
* 是否可以启动自动驾驶
* 使用方法查看app_ipc_monitoring/uiMainActivity/onAutopilotAbility

View File

@@ -758,4 +758,9 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
*/
fun sendCopyBagAbortCopy(): Boolean
/**
* 云端配置查询
*/
fun sendCloudConfigRequest(): Boolean
}

View File

@@ -0,0 +1,13 @@
package com.mogo.eagle.core.function.api.autopilot
import mogo.telematics.pad.MessagePad
/**
*云端配置
*/
interface IMoGoCloudConfigListener {
fun onCloudConfig(config: MessagePad.CloudConfig) {}
}

View File

@@ -1132,5 +1132,10 @@ object CallerAutoPilotControlManager {
fun sendCopyBagAbortCopy(): Boolean{
return providerApi?.sendCopyBagAbortCopy()?:false
}
/**
* 云端配置查询
*/
fun sendCloudConfigRequest(): Boolean{
return providerApi?.sendCloudConfigRequest()?:false
}
}

View File

@@ -0,0 +1,21 @@
package com.mogo.eagle.core.function.call.autopilot
import com.mogo.eagle.core.function.api.autopilot.IMoGoCloudConfigListener
import com.mogo.eagle.core.function.call.base.CallerBase
import mogo.telematics.pad.MessagePad
/**
*云端配置
*/
object CallerCloudConfigListenerManager : CallerBase<IMoGoCloudConfigListener>() {
fun invokeCloudConfig(config: MessagePad.CloudConfig) {
M_LISTENERS.forEach {
val listener = it.value
listener.onCloudConfig(config)
}
}
}

View File

@@ -99,6 +99,8 @@ public enum MessageType {
TYPE_SEND_CAPTURE_IMG_REQ_ON_TAKE_OVER(MessagePad.MessageType.MsgTypeCaptureImgReqOnTakeOver, "接管时摄像头数据请求"),
TYPE_SEND_COPY_BAG(MessagePad.MessageType.MsgTypeCopyBag, "数据落盘控制"),
TYPE_RECEIVE_COPY_BAG(MessagePad.MessageType.MsgTypeCopyBag, "数据落盘响应"),
TYPE_SEND_CLOUD_CONFIG(MessagePad.MessageType.MsgTypeCloudConfig, "云端配置查询"),
TYPE_RECEIVE_CLOUD_CONFIG(MessagePad.MessageType.MsgTypeCloudConfig, "云端配置响应"),
//TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"),

View File

@@ -101,7 +101,9 @@ enum MessageType
MsgTypeSSMFuncMsg = 0x1012f;//SSM功能(上下行)
MsgTypeSSMFuncStatusQuery = 0x10130;//SSM功能状态查询及返回(上下行)
MsgTypeCaptureImgReqOnTakeOver = 0x10132;//人工接管时PAD请求前后摄像头数据
MsgTypeEzhouCloud = 0x10133;//NED pad通信不仅限于鄂州 bus ros1 MAP500版本支持 bus ros2 MAP480版本支持taxi 还没有上
MsgTypeCopyBag = 0x10134;//数据落盘(上下行)
MsgTypeCloudConfig = 0x10135;//云端配置查询和返回(上下行)
}
message Header
@@ -984,4 +986,21 @@ message CaptureImgOnTakeOver
{
uint64 uuid = 1;
bytes data = 2;
}
//message definition for MsgTypeCloudConfig
//云连接地址
message CloudLinkAddr
{
uint32 type = 1;//0:蘑菇云 1:NDE云 2:基础平台云
uint32 direction = 2;//0:上行和下行 1:上行 2:下行
string domain = 3;//域名
uint32 port = 4;//端口 0xFFFFFFFF 无效值
bool enable = 5;//连接使能开关, true:开 false:关闭
}
//域控连接的云端配置
message CloudConfig
{
repeated CloudLinkAddr addrs = 1;
}

View File

@@ -3149,5 +3149,18 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
public long sendCopyBagAbortCopy() {
return sendCopyBagRequest(CopyBag.PadRequest.newBuilder().setAbortCopy(true));
}
/**
* 云端配置查询
*
* @return 消息是否添加到WS消息发送队列返回值为非0的正整数时表示下发消息的消息ID
* * >=0表示添加到WS发送消息队列
* * =0表示乘客屏模式添加到WS发送消息队列
* * -1L添加到WS发送消息队列失败
*/
@Override
public long sendCloudConfigRequest() {
return sendPBMessage(MessageType.TYPE_SEND_CLOUD_CONFIG, null);
}
}

View File

@@ -1928,6 +1928,19 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel == null ? -1L : mChannel.sendCopyBagAbortCopy();
}
/**
* 云端配置查询
*
* @return 消息是否添加到WS消息发送队列返回值为非0的正整数时表示下发消息的消息ID
* * >=0表示添加到WS发送消息队列
* * =0表示乘客屏模式添加到WS发送消息队列
* * -1L添加到WS发送消息队列失败
*/
@Override
public long sendCloudConfigRequest() {
return mChannel == null ? -1L : mChannel.sendCloudConfigRequest();
}
/**
* 查询节点状态
*

View File

@@ -1404,6 +1404,16 @@ public interface IAdasNetCommApi {
long sendCopyBagAbortCopy();
/**
* 云端配置查询
*
* @return 消息是否添加到WS消息发送队列返回值为非0的正整数时表示下发消息的消息ID
* * >=0表示添加到WS发送消息队列
* * =0表示乘客屏模式添加到WS发送消息队列
* * -1L添加到WS发送消息队列失败
*/
long sendCloudConfigRequest();
// TODO 需求暂停 待讨论
// boolean getRoutes();

View File

@@ -656,6 +656,14 @@ public interface OnAdasListener {
*/
void onCopyBag(@NonNull MessagePad.Header header, @NonNull CopyBag.DiskCopy diskCopy);
/**
* 云端配置
*
* @param header 头
* @param config 数据
*/
void onCloudConfig(@NonNull MessagePad.Header header, @NonNull MessagePad.CloudConfig config);
/**
* 是否有能力启动自动驾驶
*

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 mogo.telematics.pad.MessagePad;
/**
* 云端配置
*/
public class CloudConfigMessage extends MyAbstractMessageHandler {
public CloudConfigMessage() {
}
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
MessagePad.CloudConfig config = MessagePad.CloudConfig.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.onCloudConfig(raw.getHeader(), config);
}
AdasChannel.calculateTimeConsumingBusiness("云端配置", nowTime);
}
}

View File

@@ -57,6 +57,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg padSsmFuncMsgMessage;//SSM功能
private IMsg captureImgOnTakeOverMessage;//接管时前方和后方摄像头数据请求的响应
private IMsg copyBagMessage;//数据落盘
private IMsg cloudConfigMessage;//云端配置
private final AutopilotReview autopilotReview;
private final TurnLightState lightLeft = new TurnLightState();
@@ -331,6 +332,12 @@ public class MyMessageFactory implements IMyMessageFactory {
copyBagMessage = new CopyBagMessage();
}
return copyBagMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_CLOUD_CONFIG.typeCode) {
//云端配置
if (cloudConfigMessage == null) {
cloudConfigMessage = new CloudConfigMessage();
}
return cloudConfigMessage;
} else {
//MessageType.TYPE_DEFAULT.typeCode
return null;