[opt2.15.0][adas-lib]增加lanning控制命令(目前用于襄阳驾照考试),增加控制V2N数据给车端PnC接口
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
38
app_ipc_monitoring/src/main/res/layout/dialog_send_cmd.xml
Normal file
38
app_ipc_monitoring/src/main/res/layout/dialog_send_cmd.xml
Normal 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>
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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为发给PnC,false为不发给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();
|
||||
|
||||
@@ -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为发给PnC,false为不发给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);
|
||||
|
||||
@@ -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为发给PnC,false为不发给PnC
|
||||
* @return boolean
|
||||
*/
|
||||
boolean sendV2nToPncCmd(boolean switchCmd);
|
||||
|
||||
/**
|
||||
* 盲区数据开关
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user