diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index 1900721c51..58ecdb6353 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -1594,4 +1594,11 @@ class MoGoAutopilotControlProvider : return AdasManager.getInstance().sendCopyBagAbortCopy() > -1 } + /** + * 云端配置查询 + */ + override fun sendCloudConfigRequest(): Boolean { + return AdasManager.getInstance().sendCloudConfigRequest() > -1 + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 501c7ae58d..a65aa0ce1b 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -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 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt index a3a0df7821..7969b3d5b3 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt @@ -758,4 +758,9 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { */ fun sendCopyBagAbortCopy(): Boolean + /** + * 云端配置查询 + */ + fun sendCloudConfigRequest(): Boolean + } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoCloudConfigListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoCloudConfigListener.kt new file mode 100644 index 0000000000..5567767121 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoCloudConfigListener.kt @@ -0,0 +1,13 @@ +package com.mogo.eagle.core.function.api.autopilot + +import mogo.telematics.pad.MessagePad + +/** + *云端配置 + */ +interface IMoGoCloudConfigListener { + + + fun onCloudConfig(config: MessagePad.CloudConfig) {} +} + diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 502e90e67e..8e432ec209 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -1132,5 +1132,10 @@ object CallerAutoPilotControlManager { fun sendCopyBagAbortCopy(): Boolean{ return providerApi?.sendCopyBagAbortCopy()?:false } - + /** + * 云端配置查询 + */ + fun sendCloudConfigRequest(): Boolean{ + return providerApi?.sendCloudConfigRequest()?:false + } } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerCloudConfigListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerCloudConfigListenerManager.kt new file mode 100644 index 0000000000..a9537f1c3f --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerCloudConfigListenerManager.kt @@ -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() { + + + fun invokeCloudConfig(config: MessagePad.CloudConfig) { + M_LISTENERS.forEach { + val listener = it.value + listener.onCloudConfig(config) + } + } + + +} \ No newline at end of file diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java index 68443bec96..a16ca16261 100644 --- a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java +++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java @@ -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决策状态"), diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 4479f68212..a6af6b5c95 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -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; } \ No newline at end of file diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 8dcdfd175a..50d37041b9 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -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); + } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index f66441766d..d183c40f60 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -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(); + } + /** * 查询节点状态 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index fc8ba34401..c886aff6da 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -1404,6 +1404,16 @@ public interface IAdasNetCommApi { long sendCopyBagAbortCopy(); + /** + * 云端配置查询 + * + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + long sendCloudConfigRequest(); + // TODO 需求暂停 待讨论 // boolean getRoutes(); diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index 578e3bc47c..35899b00f2 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -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); + /** * 是否有能力启动自动驾驶 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CloudConfigMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CloudConfigMessage.java new file mode 100644 index 0000000000..eaf81b1c23 --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CloudConfigMessage.java @@ -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); + } +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java index af9620525a..15f5f635ce 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java @@ -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;