[690][adas]启动自驾新增自驾启动位置参数

This commit is contained in:
xinfengkun
2025-01-03 17:47:52 +08:00
parent a117727ef7
commit 8bd17a70b6
5 changed files with 37 additions and 23 deletions

View File

@@ -397,12 +397,12 @@ class MoGoAutopilotControlProvider :
private fun startAutoPilotWithNoParameter(source: Int) {
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
val invokeResult = AdasManager.getInstance()
.sendAutoPilotModeReq(1, source, null, null)
.sendAutoPilotModeReq(1, source, null, null, null)
invokeAutoPilotResult(if (invokeResult > -1) "无参自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
} else {
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
val invokeResult = AdasManager.getInstance()
.sendAutoPilotModeReq(1, source, null, null)
.sendAutoPilotModeReq(1, source, null, null, null)
invokeAutoPilotResult(if (invokeResult > -1) "无参自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
} else {
invokeAutoPilotResult("车机与工控机链接失败,无法开启自动驾驶 无参")
@@ -413,13 +413,13 @@ class MoGoAutopilotControlProvider :
private fun startAutoPilot(controlParameters: AutopilotControlParameters, source: Int): Long {
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
val invokeResult = AdasManager.getInstance()
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo())
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo(), null)
invokeAutoPilotResult(if (invokeResult > -1) "自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
return invokeResult
} else {
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
val invokeResult = AdasManager.getInstance()
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo())
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo(), null)
invokeAutoPilotResult(if (invokeResult > -1) "自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
return invokeResult
} else {
@@ -481,7 +481,7 @@ class MoGoAutopilotControlProvider :
override fun cancelAutoPilot() {
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
val invokeResult = AdasManager.getInstance().sendAutoPilotModeReq(0, 1, null, null)
val invokeResult = AdasManager.getInstance().sendAutoPilotModeReq(0, 1, null, null, null)
invokeAutoPilotResult(if (invokeResult > -1) "取消自动驾驶调用成功:${invokeResult}" else "取消自动驾驶调用失败, socket 或者 rawPack 可能为空")
} else {
invokeAutoPilotResult("车机与工控机链接失败,无法取消自动驾驶")
@@ -1078,11 +1078,11 @@ class MoGoAutopilotControlProvider :
*/
override fun setControlAutopilotCarAuto(isEnable: Boolean) {
if (isEnable) {
AdasManager.getInstance().sendAutoPilotModeReq(1, 0, null, null)
AdasManager.getInstance().sendAutoPilotModeReq(1, 0, null, null, null)
} else {
// 司机屏才可关闭自动驾驶
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
AdasManager.getInstance().sendAutoPilotModeReq(0, 0, null, null)
AdasManager.getInstance().sendAutoPilotModeReq(0, 0, null, null, null)
}
}
}

View File

@@ -491,6 +491,13 @@ message CmdInfo {
string order_id = 2; // 订单号
}
enum StartPosType
{
FIRST_STATION = 0; //首站点触发
MIDDLE = 1; //中间站点触发
OTHER = 2; // 非(首站点/中间站点)触发
}
message SetAutopilotModeReq
{
uint32 mode = 1; //1: enter autopilot mode, 0: quit autopilot mode
@@ -498,6 +505,7 @@ message SetAutopilotModeReq
RouteInfo routeInfo = 3; //自动驾驶路径信息
uint64 sessionId = 4; //autopilot cmd session ID
CmdInfo cmd_info = 5; //自驾命令信息
StartPosType start_pos_type = 6; // 自驾启动位置
}
// message definition for MsgTypeSetDemoModeReq

View File

@@ -1181,17 +1181,18 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
* 设置自动驾驶模式 启动自动驾驶
* 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL}详情参见CheckSystemView中的onReceiveReceivedAck
*
* @param mode 1: enter autopilot mode, 0: quit autopilot mode
* @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350其他车型目前未上线)
* @param routeInfo 自动驾驶路径信息
* @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等)
* @param mode 1: enter autopilot mode, 0: quit autopilot mode
* @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350其他车型目前未上线)
* @param routeInfo 自动驾驶路径信息
* @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等)
* @param startPosType 自驾启动位置
* @return 消息是否添加到WS消息发送队列返回值为非0的正整数时表示下发消息的消息ID和SessionID
* * >=0表示添加到WS发送消息队列
* * =0表示乘客屏模式添加到WS发送消息队列
* * -1L添加到WS发送消息队列失败
*/
@Override
public long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo) {
public long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo, @Nullable MessagePad.StartPosType startPosType) {
MessageId messageId = MessageId.build(MessageType.TYPE_SEND_SET_AUTOPILOT_MODE_REQ);
MessagePad.SetAutopilotModeReq.Builder builder = MessagePad.SetAutopilotModeReq.newBuilder();
builder.setMode(mode);
@@ -1202,6 +1203,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
if (cmdInfo != null) {
builder.setCmdInfo(cmdInfo);
}
if (startPosType != null) {
builder.setStartPosType(startPosType);
}
MessagePad.SetAutopilotModeReq req = builder.build();
if (autopilotReview != null) autopilotReview.onAutopilotCommandTrigger(req);
return sendPBMessage(MessageType.TYPE_SEND_SET_AUTOPILOT_MODE_REQ, req.toByteArray(), messageId);

View File

@@ -396,18 +396,19 @@ public class AdasManager implements IAdasNetCommApi {
* 设置自动驾驶模式 启动自动驾驶
* 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL}详情参见CheckSystemView中的onReceiveReceivedAck
*
* @param mode 1: enter autopilot mode, 0: quit autopilot mode
* @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350其他车型目前未上线)
* @param routeInfo 自动驾驶路径信息
* @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等)
* @param mode 1: enter autopilot mode, 0: quit autopilot mode
* @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350其他车型目前未上线)
* @param routeInfo 自动驾驶路径信息
* @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等)
* @param startPosType 自驾启动位置
* @return 消息是否添加到WS消息发送队列返回值为非0的正整数时表示下发消息的消息ID和SessionID
* * >=0表示添加到WS发送消息队列
* * =0表示乘客屏模式添加到WS发送消息队列
* * -1L添加到WS发送消息队列失败
*/
@Override
public long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo) {
return mChannel == null ? -1L : mChannel.sendAutoPilotModeReq(mode, source, routeInfo, cmdInfo);
public long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo, @Nullable MessagePad.StartPosType startPosType) {
return mChannel == null ? -1L : mChannel.sendAutoPilotModeReq(mode, source, routeInfo, cmdInfo, startPosType);
}
/**

View File

@@ -167,16 +167,17 @@ public interface IAdasNetCommApi {
* 设置自动驾驶模式 启动自动驾驶
* 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL}详情参见CheckSystemView中的onReceiveReceivedAck
*
* @param mode 1: enter autopilot mode, 0: quit autopilot mode
* @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350其他车型目前未上线)
* @param routeInfo 自动驾驶路径信息
* @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等)
* @param mode 1: enter autopilot mode, 0: quit autopilot mode
* @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350其他车型目前未上线)
* @param routeInfo 自动驾驶路径信息
* @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等)
* @param startPosType 自驾启动位置
* @return 消息是否添加到WS消息发送队列返回值为非0的正整数时表示下发消息的消息ID和SessionID
* * >=0表示添加到WS发送消息队列
* * =0表示乘客屏模式添加到WS发送消息队列
* * -1L添加到WS发送消息队列失败
*/
long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo);
long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo, @Nullable MessagePad.StartPosType startPosType);
/**