[opt2.15.0][adas-lib]增加lanning控制命令(目前用于襄阳驾照考试),增加控制V2N数据给车端PnC接口

This commit is contained in:
xinfengkun
2023-03-08 16:19:21 +08:00
parent ea6f95ea20
commit a4370eb06e
13 changed files with 481 additions and 62 deletions

View File

@@ -1,2 +1,2 @@
#Thu Mar 02 14:18:22 CST 2023
VERSION_CODE=2
#Wed Mar 08 16:14:51 CST 2023
VERSION_CODE=3

View File

@@ -0,0 +1,68 @@
package com.zhidao.adas.client.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.zhidao.adas.client.R;
import com.zhidao.adas.client.bean.SendCmdOption;
import java.util.List;
/**
* @author song kenan
* @des
* @date 2021/8/13
*/
public class SendCmdAdapter extends RecyclerView.Adapter<SendCmdAdapter.ViewHolder> {
private final List<? extends SendCmdOption<?>> data;
private final OnItemClickListener listener;
public interface OnItemClickListener {
void onItemClick(SendCmdOption<?> data);
}
public SendCmdAdapter(List<? extends SendCmdOption<?>> data, OnItemClickListener listener) {
this.data = data;
this.listener = listener;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_info, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
SendCmdOption<?> option = data.get(position);
holder.title.setText(option.name);
}
@Override
public int getItemCount() {
return data == null ? 0 : data.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView title;
public ViewHolder(View itemView) {
super(itemView);
title = itemView.findViewById(R.id.tv_info_title);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClick(data.get(getBindingAdapterPosition()));
}
});
}
}
}

View File

@@ -0,0 +1,68 @@
package com.zhidao.adas.client.bean;
import com.zhidao.adas.client.utils.Constants;
import java.util.ArrayList;
import java.util.List;
public class SendCmd<T> {
public final String name;
public final List<SendCmdOption<T>> value;
public SendCmd(String name, List<SendCmdOption<T>> value) {
this.name = name;
this.value = value;
}
//Planning命令
public static SendCmd<Integer> getSendToPlanning() {
List<SendCmdOption<Integer>> cmds = new ArrayList<>();
cmds.add(new SendCmdOption<Integer>("靠边停车", SendCmdOption.TAG.PULL_OVER, 1));
cmds.add(new SendCmdOption<Integer>("重新起步", SendCmdOption.TAG.PULL_OVER, 2));
cmds.add(new SendCmdOption<Integer>("紧急停车", SendCmdOption.TAG.PULL_OVER, 3));
cmds.add(new SendCmdOption<Integer>("左变道", SendCmdOption.TAG.LANE_CHANGE, 1));
cmds.add(new SendCmdOption<Integer>("右变道", SendCmdOption.TAG.LANE_CHANGE, 2));
cmds.add(new SendCmdOption<Integer>("超车", SendCmdOption.TAG.LANE_CHANGE, 3));
cmds.add(new SendCmdOption<Integer>("恢复自动决策", SendCmdOption.TAG.LANE_CHANGE, 4));
return new SendCmd<Integer>(Constants.TITLE.SEND_PLANNING_CMD, cmds);
}
//演示模式开关
public static SendCmd<Integer> getSendDemoMode() {
List<SendCmdOption<Integer>> cmds = new ArrayList<>();
cmds.add(new SendCmdOption<Integer>("打开", SendCmdOption.TAG.DEMO_MODE, 1));
cmds.add(new SendCmdOption<Integer>("关闭", SendCmdOption.TAG.DEMO_MODE, 0));
return new SendCmd<Integer>(Constants.TITLE.SEND_SET_DEMO_MODE_REQ, cmds);
}
//盲区开关
public static SendCmd<Boolean> getSendBlindArea() {
List<SendCmdOption<Boolean>> cmds = new ArrayList<>();
cmds.add(new SendCmdOption<Boolean>("开启", SendCmdOption.TAG.BLIND_AREA, true));
cmds.add(new SendCmdOption<Boolean>("关闭", SendCmdOption.TAG.BLIND_AREA, false));
return new SendCmd<Boolean>(Constants.TITLE.SEND_BLIND_AREA, cmds);
}
//V2N数据到PnC
public static SendCmd<Boolean> getSendV2nToPnc() {
List<SendCmdOption<Boolean>> cmds = new ArrayList<>();
cmds.add(new SendCmdOption<Boolean>("发送", SendCmdOption.TAG.V2N_TO_PNC, true));
cmds.add(new SendCmdOption<Boolean>("关闭", SendCmdOption.TAG.V2N_TO_PNC, false));
return new SendCmd<Boolean>(Constants.TITLE.SEND_V2N_TO_PNC, cmds);
}
//雨天模式开关
public static SendCmd<Integer> getSendRainMode() {
List<SendCmdOption<Integer>> cmds = new ArrayList<>();
cmds.add(new SendCmdOption<Integer>("打开", SendCmdOption.TAG.RAIN_MODE, 1));
cmds.add(new SendCmdOption<Integer>("关闭", SendCmdOption.TAG.RAIN_MODE, 0));
return new SendCmd<Integer>(Constants.TITLE.SEND_SET_RAIN_MODE_REQ, cmds);
}
//绕障类功能开关
public static SendCmd<Integer> getSendDetouring() {
List<SendCmdOption<Integer>> cmds = new ArrayList<>();
cmds.add(new SendCmdOption<Integer>("", SendCmdOption.TAG.DETOURING, 1));
cmds.add(new SendCmdOption<Integer>("", SendCmdOption.TAG.DETOURING, 0));
return new SendCmd<Integer>(Constants.TITLE.SEND_DETOURING, cmds);
}
}

View File

@@ -0,0 +1,23 @@
package com.zhidao.adas.client.bean;
public class SendCmdOption<T> {
public interface TAG {
int PULL_OVER = 0;//Planning指令 靠边停车
int LANE_CHANGE = 1;//Planning指令 变道
int DEMO_MODE = 2;//演示模式
int BLIND_AREA = 3;//盲区数据开关
int RAIN_MODE = 4;//雨天模式
int DETOURING = 5;//绕障类功能
int V2N_TO_PNC = 5;//V2N数据到PnC
}
public final String name;
public final int tag;
public final T value;
public SendCmdOption(String name, int tag, T value) {
this.name = name;
this.tag = tag;
this.value = value;
}
}

View File

@@ -60,6 +60,7 @@ import com.zhidao.adas.client.bean.ObuSpat;
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
import com.zhidao.adas.client.bean.ReceiveBytesData;
import com.zhidao.adas.client.bean.ReceiveData;
import com.zhidao.adas.client.bean.SendCmd;
import com.zhidao.adas.client.bean.SpecialVehicleBean;
import com.zhidao.adas.client.log.ConnectStatusSave;
import com.zhidao.adas.client.log.LogSave;
@@ -661,18 +662,15 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
titleBtnData.add(Constants.TITLE.SEND_TRAFFIC_LIGHT_DATA);
titleBtnData.add(Constants.TITLE.SEND_SET_AUTOPILOT_SPEED_REQ);
titleBtnData.add(Constants.TITLE.SEND_RECORD_CAUSE);
titleBtnData.add(Constants.TITLE.SEND_SET_DEMO_MODE_REQ_OPEN);
titleBtnData.add(Constants.TITLE.SEND_SET_DEMO_MODE_REQ_CLOSE);
titleBtnData.add(Constants.TITLE.SEND_SET_RAIN_MODE_REQ_OPEN);
titleBtnData.add(Constants.TITLE.SEND_SET_RAIN_MODE_REQ_CLOSE);
titleBtnData.add(Constants.TITLE.SEND_DETOURING_OPEN);
titleBtnData.add(Constants.TITLE.SEND_DETOURING_CLOSE);
titleBtnData.add(Constants.TITLE.SEND_SET_DEMO_MODE_REQ);
titleBtnData.add(Constants.TITLE.SEND_SET_RAIN_MODE_REQ);
titleBtnData.add(Constants.TITLE.SEND_DETOURING);
titleBtnData.add(Constants.TITLE.SEND_SYSTEM_CMD_REQ_REBOOT);
titleBtnData.add(Constants.TITLE.SEND_DETOURING_SPEED);
titleBtnData.add(Constants.TITLE.SEND_TRIP_INFO);
titleBtnData.add(Constants.TITLE.SEND_PLANNING_CMD);
titleBtnData.add(Constants.TITLE.SEND_BLIND_AREA_OPEN);
titleBtnData.add(Constants.TITLE.SEND_BLIND_AREA_CLOSE);
titleBtnData.add(Constants.TITLE.SEND_BLIND_AREA);
titleBtnData.add(Constants.TITLE.SEND_V2N_TO_PNC);
}
private void initBtnRecyclerView() {
@@ -1449,33 +1447,21 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
//采集类型
AdasManager.getInstance().sendRecordCause(recordKey, recordFileName, "1", "变道有干扰");
break;
case Constants.TITLE.SEND_SET_DEMO_MODE_REQ_OPEN:
//打开演示模式
AdasManager.getInstance().sendDemoModeReq(1);
case Constants.TITLE.SEND_SET_DEMO_MODE_REQ:
//演示模式
new SendCmdDialog(this, SendCmd.getSendDemoMode()).show();
break;
case Constants.TITLE.SEND_SET_DEMO_MODE_REQ_CLOSE:
//关闭演示模式
AdasManager.getInstance().sendDemoModeReq(0);
break;
case Constants.TITLE.SEND_SET_RAIN_MODE_REQ_OPEN:
//打开雨天模式
AdasManager.getInstance().sendRainModeReq(1);
break;
case Constants.TITLE.SEND_SET_RAIN_MODE_REQ_CLOSE:
//关闭雨天模式
AdasManager.getInstance().sendRainModeReq(0);
case Constants.TITLE.SEND_SET_RAIN_MODE_REQ:
//雨天模式
new SendCmdDialog(this, SendCmd.getSendRainMode()).show();
break;
case Constants.TITLE.SEND_RECORD_DATA_CONFIG_RESP:
//数据采集配置
showRecordDataConfigRespDialog();
break;
case Constants.TITLE.SEND_DETOURING_OPEN:
//绕障类功能
AdasManager.getInstance().sendDetouring(1);
break;
case Constants.TITLE.SEND_DETOURING_CLOSE:
//绕障类功能关
AdasManager.getInstance().sendDetouring(0);
case Constants.TITLE.SEND_DETOURING:
//绕障类功能
new SendCmdDialog(this, SendCmd.getSendDetouring()).show();
break;
case Constants.TITLE.SEND_DETOURING_SPEED:
//绕障速度设置
@@ -1490,14 +1476,16 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
AdasManager.getInstance().sendTripInfoReq(5, "x22", "x23", "x24", false);
break;
case Constants.TITLE.SEND_PLANNING_CMD:
AdasManager.getInstance().sendPlanningCmd(1);
AdasManager.getInstance().sendPlanningCmd(2);
//Planning指令
new SendCmdDialog(this, SendCmd.getSendToPlanning()).show();
break;
case Constants.TITLE.SEND_BLIND_AREA_OPEN:
AdasManager.getInstance().sendBlindAreaCmd(true);
case Constants.TITLE.SEND_BLIND_AREA:
//盲区数据开关
new SendCmdDialog(this, SendCmd.getSendBlindArea()).show();
break;
case Constants.TITLE.SEND_BLIND_AREA_CLOSE:
AdasManager.getInstance().sendBlindAreaCmd(false);
case Constants.TITLE.SEND_V2N_TO_PNC:
//V2N数据到PnC
new SendCmdDialog(this, SendCmd.getSendV2nToPnc()).show();
break;
}
}
@@ -1602,7 +1590,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
break;
case WHAT_RECEIVE_ERROR_DATA_SHOW:
title.setText(R.string.have_error_data);
title.setTextColor(getColor(android.R.color.holo_red_light));
title.setTextColor(getResources().getColor(android.R.color.holo_red_light));
title.setVisibility(View.VISIBLE);
getHandler().sendEmptyMessageDelayed(WHAT_RECEIVE_ERROR_DATA_HINT, 500);
break;
@@ -1611,7 +1599,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
break;
case WHAT_RECEIVE_ERROR_DATA_STOP:
title.setText(R.string.app_name);
title.setTextColor(getColor(R.color.colorWhile));
title.setTextColor(getResources().getColor(R.color.colorWhile));
title.setVisibility(View.VISIBLE);
errorDataUpdateTime = 0;
break;

View File

@@ -0,0 +1,111 @@
package com.zhidao.adas.client.ui;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
import com.zhidao.adas.client.R;
import com.zhidao.adas.client.adapter.SendCmdAdapter;
import com.zhidao.adas.client.bean.SendCmd;
import com.zhidao.adas.client.bean.SendCmdOption;
import com.zhidao.adas.client.utils.Constants;
import com.zhidao.support.adas.high.AdasManager;
public class SendCmdDialog extends Dialog {
private RecyclerView recyclerView;
private final SendCmd<?> sendCmd;
public SendCmdDialog(@NonNull Context context, SendCmd<?> sendCmd) {
super(context, R.style.CustomDialog);
this.sendCmd = sendCmd;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_send_cmd);
//初始化界面控件
initView();
initRecyclerView();
//初始化界面控件的事件
setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
}
@Override
public void show() {
super.show();
}
private void initRecyclerView() {
//创建默认的线性LayoutManager 横向的GridLayoutManager
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
//如果可以确定每个item的高度是固定的设置这个选项可以提高性能
recyclerView.setHasFixedSize(true);
//解决局部刷新闪屏问题
SimpleItemAnimator animator = (SimpleItemAnimator) recyclerView.getItemAnimator();
if (animator != null)
animator.setSupportsChangeAnimations(false);
//创建并设置Adapter
SendCmdAdapter adapter = new SendCmdAdapter(sendCmd.value, new SendCmdAdapter.OnItemClickListener() {
@Override
public void onItemClick(SendCmdOption<?> data) {
String name = sendCmd.name;
if (Constants.TITLE.SEND_PLANNING_CMD.equals(name)) {
if (data.tag == SendCmdOption.TAG.PULL_OVER) {
AdasManager.getInstance().sendPlanningPullOverCmd((int) data.value);
} else if (data.tag == SendCmdOption.TAG.LANE_CHANGE) {
AdasManager.getInstance().sendPlanningLaneChangeCmd((int) data.value);
}
} else if (Constants.TITLE.SEND_SET_DEMO_MODE_REQ.equals(name)) {
if (data.tag == SendCmdOption.TAG.DEMO_MODE) {
AdasManager.getInstance().sendDemoModeReq((int) data.value);
}
} else if (Constants.TITLE.SEND_BLIND_AREA.equals(name)) {
if (data.tag == SendCmdOption.TAG.BLIND_AREA) {
AdasManager.getInstance().sendBlindAreaCmd((boolean) data.value);
}
} else if (Constants.TITLE.SEND_V2N_TO_PNC.equals(name)) {
if (data.tag == SendCmdOption.TAG.V2N_TO_PNC) {
AdasManager.getInstance().sendV2nToPncCmd((boolean) data.value);
}
} else if (Constants.TITLE.SEND_SET_RAIN_MODE_REQ.equals(name)) {
if (data.tag == SendCmdOption.TAG.RAIN_MODE) {
AdasManager.getInstance().sendRainModeReq((int) data.value);
}
} else if (Constants.TITLE.SEND_DETOURING.equals(name)) {
if (data.tag == SendCmdOption.TAG.DETOURING) {
AdasManager.getInstance().sendDetouring((int) data.value);
}
}
}
});
recyclerView.setAdapter(adapter);
}
/**
* 初始化界面控件
*/
private void initView() {
recyclerView = findViewById(R.id.recyclerView);
TextView title = findViewById(R.id.title);
title.setText(sendCmd.name);
}
}

View File

@@ -192,18 +192,15 @@ public class Constants {
String SEND_SET_AUTOPILOT_SPEED_REQ = "自动驾驶限速";
String SEND_SYSTEM_CMD_REQ_REBOOT = "重启所有节点";
String SEND_RECORD_CAUSE = "采集类型";
String SEND_SET_DEMO_MODE_REQ_OPEN = "打开演示模式";
String SEND_SET_DEMO_MODE_REQ_CLOSE = "关闭演示模式";
String SEND_SET_RAIN_MODE_REQ_OPEN = "打开雨天模式";
String SEND_SET_RAIN_MODE_REQ_CLOSE = "关闭雨天模式";
String SEND_SET_DEMO_MODE_REQ = "演示模式";
String SEND_SET_RAIN_MODE_REQ = "雨天模式";
String SEND_RECORD_DATA_CONFIG_RESP = "数据采集配置";
String SEND_DETOURING_OPEN = "绕障类功能";
String SEND_DETOURING_CLOSE = "绕障类功能关";
String SEND_DETOURING = "绕障类功能";
String SEND_DETOURING_SPEED = "绕障速度阈值";
String SEND_TRIP_INFO = "行程信息";
String SEND_PLANNING_CMD = "Planning指令";
String SEND_BLIND_AREA_OPEN = "盲区数据开";
String SEND_BLIND_AREA_CLOSE = "盲区数据关";
String SEND_PLANNING_CMD = "Planning指令";
String SEND_BLIND_AREA = "盲区数据开";
String SEND_V2N_TO_PNC = "V2N数据到PnC";
}
}

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_adas_dialog">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginStart="160dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="160dp"
android:gravity="center"
android:text="选择自动驾驶线路"
android:textColor="#333333"
android:textSize="18sp"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_margin="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -599,12 +599,18 @@ message TripInfoEvent
//message definition for MsgTypePlanningCmd
message PullOverCmd
{
uint32 cmd = 1; //0: default 1: 靠边停车 2:重新起步
uint32 cmd = 1; //0: default 1: 靠边停车 2:重新起步 3:紧急停车
}
message LaneChangeCmd
{
uint32 cmd = 1; //0: default 1: 左变道 2:右变道 3:超车 4:恢复自动决策
}
message PlanningCmd
{
PullOverCmd pullOverCmd = 1;
LaneChangeCmd laneChangeCmd = 2;
}
//message definition for MsgTypeSetParamReqV2

View File

@@ -4,7 +4,8 @@ package mogo.telematics;
enum ParamSetType
{
ParamSetTypeNone = 0;
ParamSetTypeBlindArea = 1;
ParamSetTypeBlindArea = 1; //bool, :off 1:on
ParamSetTypeV2N = 2; //bool, 0:不发给PnC 1:发给Pnc
}
message ParamSetCmd

View File

@@ -1231,17 +1231,47 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
return subscribeInterface != null && subscribeInterface.subscribeInterface(role, type, messageType);
}
/**
* 给Planning发送靠边停车指令
*
* @param pullOverCmd 命令 0: default 1: 靠边停车 2:重新起步 3:紧急停车 TODO 值3 目前仅襄阳牌照考试支持
* @return boolean 是否加入发送队列
*/
@Override
public boolean sendPlanningPullOverCmd(int pullOverCmd) {
return sendPlanningCmd(pullOverCmd, -1);
}
/**
* 给Planning发送变道指令
* TODO 目前此功能仅襄阳牌照考试支持
*
* @param laneChangeCmd 命令 0: default 1: 左变道 2:右变道 3:超车 4:恢复自动决策
* @return boolean 是否加入发送队列
*/
@Override
public boolean sendPlanningLaneChangeCmd(int laneChangeCmd) {
return sendPlanningCmd(-1, laneChangeCmd);
}
/**
* 给Planning发送指令
*
* @param cmd 命令 0: default 1: 靠边停车 2:重新起步
* @return boolean
* @param pullOverCmd 命令 0: default 1: 靠边停车 2:重新起步 3:紧急停车 TODO 值3 仅襄阳牌照考试支持
* @param laneChangeCmd 命令 0: default 1: 左变道 2:右变道 3:超车 4:恢复自动决策 TODO laneChangeCmd 仅襄阳牌照考试支持
* @return boolean 是否加入发送队列
*/
@Override
public boolean sendPlanningCmd(int cmd) {
MessagePad.PlanningCmd planningCmd = MessagePad.PlanningCmd.newBuilder()
.setPullOverCmd(MessagePad.PullOverCmd.newBuilder().setCmd(cmd))
.build();
public boolean sendPlanningCmd(int pullOverCmd, int laneChangeCmd) {
MessagePad.PlanningCmd.Builder build = MessagePad.PlanningCmd.newBuilder();
if (pullOverCmd > -1) {
build.setPullOverCmd(MessagePad.PullOverCmd.newBuilder().setCmd(pullOverCmd));
}
if (laneChangeCmd > -1) {
build.setLaneChangeCmd(MessagePad.LaneChangeCmd.newBuilder().setCmd(laneChangeCmd));
}
MessagePad.PlanningCmd planningCmd = build.build();
return sendPBMessage(MessageType.TYPE_SEND_PLANNING_CMD.typeCode, planningCmd.toByteArray());
}
@@ -1567,6 +1597,16 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
return sendPBMessage(MessageType.TYPE_SEND_BAG_MANAGER_CMD.typeCode, bagManager.toByteArray());
}
/**
* 控制V2N数据给车端PnC
*
* @param switchCmd true为发给PnCfalse为不发给PnC
* @return boolean
*/
@Override
public boolean sendV2nToPncCmd(boolean switchCmd) {
return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N, switchCmd);
}
/**
* 盲区数据开关
@@ -1587,7 +1627,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
ParamSetCmdOuterClass.ParamSetCmd.Builder builder = ParamSetCmdOuterClass.ParamSetCmd.newBuilder()
.setSrc(1)
.setType(paramSetType);
if (paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea) {
if (paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea || paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N) {
builder.setBoolValue((Boolean) value);
}
ParamSetCmdOuterClass.ParamSetCmd req = builder.build();

View File

@@ -603,15 +603,51 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel != null && mChannel.subscribeInterface(role, type, messageType);
}
/**
* 给Planning发送靠边停车指令
*
* @param pullOverCmd 命令 0: default 1: 靠边停车 2:重新起步 3:紧急停车 TODO 值3 目前仅襄阳牌照考试支持
* @return boolean 是否加入发送队列
*/
@Override
public boolean sendPlanningPullOverCmd(int pullOverCmd) {
return mChannel != null && mChannel.sendPlanningPullOverCmd(pullOverCmd);
}
/**
* 给Planning发送变道指令
* TODO 目前此功能仅襄阳牌照考试支持
*
* @param laneChangeCmd 命令 0: default 1: 左变道 2:右变道 3:超车 4:恢复自动决策
* @return boolean 是否加入发送队列
*/
@Override
public boolean sendPlanningLaneChangeCmd(int laneChangeCmd) {
return mChannel != null && mChannel.sendPlanningLaneChangeCmd(laneChangeCmd);
}
/**
* 给Planning发送指令
*
* @param pullOverCmd 命令 0: default 1: 靠边停车 2:重新起步 3:紧急停车 TODO 值3 仅襄阳牌照考试支持
* @param laneChangeCmd 命令 0: default 1: 左变道 2:右变道 3:超车 4:恢复自动决策 TODO laneChangeCmd 仅襄阳牌照考试支持
* @return boolean 是否加入发送队列
*/
@Override
public boolean sendPlanningCmd(int pullOverCmd, int laneChangeCmd) {
return mChannel != null && mChannel.sendPlanningCmd(pullOverCmd, laneChangeCmd);
}
/**
* 给Planning发送 靠边停车 指令
* TODO 已废弃 新接口{@link AdasManager#sendPlanningPullOverCmd(int)}
*
* @param cmd 命令 0: default 1: 靠边停车 2:重新起步
* @return boolean
*/
@Override
@Deprecated
public boolean sendPlanningCmd(int cmd) {
return mChannel != null && mChannel.sendPlanningCmd(cmd);
return mChannel != null && mChannel.sendPlanningPullOverCmd(cmd);
}
/**
@@ -822,6 +858,23 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel != null && mChannel.sendBagManagerCmd(bagManager);
}
/**
* 控制V2N数据给车端PnC
*
* @param switchCmd true为发给PnCfalse为不发给PnC
* @return boolean
*/
@Override
public boolean sendV2nToPncCmd(boolean switchCmd) {
return mChannel != null && mChannel.sendV2nToPncCmd(switchCmd);
}
/**
* 盲区数据开关
*
* @param switchCmd 数据开关
* @return boolean
*/
@Override
public boolean sendBlindAreaCmd(boolean switchCmd) {
return mChannel != null && mChannel.sendBlindAreaCmd(switchCmd);

View File

@@ -321,13 +321,31 @@ public interface IAdasNetCommApi {
*/
boolean subscribeInterface(@Define.TerminalRole int role, @Define.SubscribeType int type, @NonNull MessageType messageType);
/**
* 给Planning发送靠边停车指令
*
* @param pullOverCmd 命令 0: default 1: 靠边停车 2:重新起步 3:紧急停车 TODO 值3 目前仅襄阳牌照考试支持
* @return boolean 是否加入发送队列
*/
boolean sendPlanningPullOverCmd(int pullOverCmd);
/**
* 给Planning发送变道指令
* TODO 目前此功能仅襄阳牌照考试支持
*
* @param laneChangeCmd 命令 0: default 1: 左变道 2:右变道 3:超车 4:恢复自动决策
* @return boolean 是否加入发送队列
*/
boolean sendPlanningLaneChangeCmd(int laneChangeCmd);
/**
* 给Planning发送指令
*
* @param cmd 命令 0: default 1: 靠边停车 2:重新起步
* @return boolean
* @param pullOverCmd 命令 0: default 1: 靠边停车 2:重新起步 3:紧急停车 TODO 值3 目前仅襄阳牌照考试支持
* @param laneChangeCmd 命令 0: default 1: 左变道 2:右变道 3:超车 4:恢复自动决策 TODO laneChangeCmd 仅襄阳牌照考试支持
* @return boolean 是否加入发送队列
*/
boolean sendPlanningCmd(int cmd);
boolean sendPlanningCmd(int pullOverCmd, int laneChangeCmd);
/**
* 福田清扫车业务指令下发
@@ -506,6 +524,14 @@ public interface IAdasNetCommApi {
*/
boolean sendBagManagerCmd(BagManagerOuterClass.BagManager bagManager);
/**
* 控制V2N数据给车端PnC
*
* @param switchCmd true为发给PnCfalse为不发给PnC
* @return boolean
*/
boolean sendV2nToPncCmd(boolean switchCmd);
/**
* 盲区数据开关
*