[6.11.0][adas] 新增云端配置查询和响应接口
This commit is contained in:
@@ -1594,4 +1594,11 @@ class MoGoAutopilotControlProvider :
|
||||
return AdasManager.getInstance().sendCopyBagAbortCopy() > -1
|
||||
}
|
||||
|
||||
/**
|
||||
* 云端配置查询
|
||||
*/
|
||||
override fun sendCloudConfigRequest(): Boolean {
|
||||
return AdasManager.getInstance().sendCloudConfigRequest() > -1
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -758,4 +758,9 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
|
||||
*/
|
||||
fun sendCopyBagAbortCopy(): Boolean
|
||||
|
||||
/**
|
||||
* 云端配置查询
|
||||
*/
|
||||
fun sendCloudConfigRequest(): Boolean
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.mogo.eagle.core.function.api.autopilot
|
||||
|
||||
import mogo.telematics.pad.MessagePad
|
||||
|
||||
/**
|
||||
*云端配置
|
||||
*/
|
||||
interface IMoGoCloudConfigListener {
|
||||
|
||||
|
||||
fun onCloudConfig(config: MessagePad.CloudConfig) {}
|
||||
}
|
||||
|
||||
@@ -1132,5 +1132,10 @@ object CallerAutoPilotControlManager {
|
||||
fun sendCopyBagAbortCopy(): Boolean{
|
||||
return providerApi?.sendCopyBagAbortCopy()?:false
|
||||
}
|
||||
|
||||
/**
|
||||
* 云端配置查询
|
||||
*/
|
||||
fun sendCloudConfigRequest(): Boolean{
|
||||
return providerApi?.sendCloudConfigRequest()?:false
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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决策状态"),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询节点状态
|
||||
*
|
||||
|
||||
@@ -1404,6 +1404,16 @@ public interface IAdasNetCommApi {
|
||||
|
||||
long sendCopyBagAbortCopy();
|
||||
|
||||
/**
|
||||
* 云端配置查询
|
||||
*
|
||||
* @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID
|
||||
* * >=0:表示添加到WS发送消息队列
|
||||
* * =0:表示乘客屏模式添加到WS发送消息队列
|
||||
* * -1L:添加到WS发送消息队列失败
|
||||
*/
|
||||
long sendCloudConfigRequest();
|
||||
|
||||
// TODO 需求暂停 待讨论
|
||||
// boolean getRoutes();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 是否有能力启动自动驾驶
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user