[dev2.15.0][adas]添加弱网减速停车策略开关、添加参数获取请求和添加参数获取应答回调

This commit is contained in:
xinfengkun
2023-04-19 19:23:31 +08:00
parent b23edd10b8
commit afd0ccecf9
21 changed files with 373 additions and 24 deletions

View File

@@ -52,9 +52,11 @@ public class DataDistribution {
}
return INSTANCE;
}
public void setResId(int resId) {
this.resId = resId;
}
public void registerAdasClientListener(Pair<String, OnAdasClientListener> listener) {
this.listener = listener;
}
@@ -120,6 +122,7 @@ public class DataDistribution {
public final List<DataShow> listObuMap = new ArrayList<>();
public final List<DataShow> listV2nCongestionEvent = new ArrayList<>();
public final List<DataShow> listV2nGlobalPathEvents = new ArrayList<>();
public final List<DataShow> listGetParamResp = new ArrayList<>();
private long listTrajectorySize = 0;
private long listTrackedObjectsSize = 0;
@@ -150,6 +153,7 @@ public class DataDistribution {
private long listObuMapSize = 0;
private long listV2nCongestionEventSize = 0;
private long listV2nGlobalPathEventsSize = 0;
private long listGetParamRespSize = 0;
public void clearCount() {
listTrajectorySize = 1;
@@ -181,6 +185,7 @@ public class DataDistribution {
listObuMapSize = 1;
listV2nCongestionEventSize = 1;
listV2nGlobalPathEventsSize = 1;
listGetParamRespSize = 1;
}
public String cutDown(String str) {
@@ -393,6 +398,14 @@ public class DataDistribution {
if (listener != null && Constants.TITLE.RECEIVE_V2N_GLOBAL_PATH_EVENTS.equals(listener.first)) {
listener.second.onRefresh();
}
} else if (messageType == MessagePad.MessageType.MsgTypeGetParamResp) {
listGetParamResp.add(0, new DataShow(listGetParamRespSize++, time + str));
if (listGetParamResp.size() > LIST_SIZE) {
listGetParamResp.remove(listGetParamResp.size() - 1);
}
if (listener != null && Constants.TITLE.RECEIVE_GET_PARAM_RESP.equals(listener.first)) {
listener.second.onRefresh();
}
} else if (data instanceof PerceptionTrafficLight) {
listPerceptionTrafficLight.add(0, new DataShow(listPerceptionTrafficLightSize++, time + str));
if (listPerceptionTrafficLight.size() > LIST_SIZE) {

View File

@@ -99,6 +99,7 @@ public class SendCmd<T> {
cmds.add(new SendCmdOption<Integer>("不使用地图限速功能", SendCmdOption.TAG.HADMAP_SPEED_LIMIT_VALID, 0));
return new SendCmd<Integer>(Constants.TITLE.SEND_HADMAP_SPEED_LIMIT_VALID, cmds);
}
//环岛模式开关
public static SendCmd<Integer> getSendRampThetaValid() {
List<SendCmdOption<Integer>> cmds = new ArrayList<>();
@@ -106,4 +107,19 @@ public class SendCmd<T> {
cmds.add(new SendCmdOption<Integer>("普通模式", SendCmdOption.TAG.RAMP_THETA_VALID, 0));
return new SendCmd<Integer>(Constants.TITLE.SEND_RAMP_THETA_VALID, cmds);
}
//参数获取请求
public static SendCmd<Integer> getSendGetParamReq() {
List<SendCmdOption<Integer>> cmds = new ArrayList<>();
cmds.add(new SendCmdOption<Integer>("获取全部", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.UNKNOWN, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.UNKNOWN));
cmds.add(new SendCmdOption<Integer>("绕障类功能开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.DETOURING, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.DETOURING));
cmds.add(new SendCmdOption<Integer>("变道绕障的目标障碍物速度阈值", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.DETOURING_SPEED, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.DETOURING_SPEED));
cmds.add(new SendCmdOption<Integer>("AEB开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.AEB, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.AEB));
cmds.add(new SendCmdOption<Integer>("限制绕障开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.LANE_CHANGE_RESTRAIN_VALID, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.LANE_CHANGE_RESTRAIN_VALID));
cmds.add(new SendCmdOption<Integer>("停车让行线前避让等待开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.STOP_YIELD_VALID, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.STOP_YIELD_VALID));
cmds.add(new SendCmdOption<Integer>("地图限速功能开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.HADMAP_SPEED_LIMIT_VALID, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.HADMAP_SPEED_LIMIT_VALID));
cmds.add(new SendCmdOption<Integer>("环岛模式开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.RAMP_THETA_VALID, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.RAMP_THETA_VALID));
cmds.add(new SendCmdOption<Integer>("弱网减速停车策略开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.WEAK_NET_SLOW_DOWN, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.WEAK_NET_SLOW_DOWN));
return new SendCmd<Integer>(Constants.TITLE.SEND_GET_PARAM_REQ, cmds);
}
}

View File

@@ -231,7 +231,9 @@ public class InfoFragment extends BaseFragment {
adapter.setData(DataDistribution.getInstance().listV2nCongestionEvent);
} else if (Constants.TITLE.RECEIVE_V2N_GLOBAL_PATH_EVENTS.equals(title)) {
adapter.setData(DataDistribution.getInstance().listV2nGlobalPathEvents);
} else {
}else if (Constants.TITLE.RECEIVE_GET_PARAM_RESP.equals(title)) {
adapter.setData(DataDistribution.getInstance().listGetParamResp);
} else {
adapter.setData(DataDistribution.getInstance().listErrorData);
}
}

View File

@@ -833,6 +833,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
titleFragmentData.add(Constants.TITLE.RECEIVE_BACK_CAMERA_VIDEO);
titleFragmentData.add(Constants.TITLE.RECEIVE_V2N_CONGESTION_EVENT);
titleFragmentData.add(Constants.TITLE.RECEIVE_V2N_GLOBAL_PATH_EVENTS);
titleFragmentData.add(Constants.TITLE.RECEIVE_GET_PARAM_RESP);
titleFragmentData.add(Constants.TITLE.RECEIVE_WARN);
titleFragmentData.add(Constants.TITLE.RECEIVE_ERROR);
@@ -863,6 +864,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
titleBtnData.add(Constants.TITLE.SEND_PLANNING_CMD);
titleBtnData.add(Constants.TITLE.SEND_BLIND_AREA);
titleBtnData.add(Constants.TITLE.SEND_V2N_TO_PNC);
titleBtnData.add(Constants.TITLE.SEND_GET_PARAM_REQ);
}
private void initBtnRecyclerView() {
@@ -1276,6 +1278,12 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
DataDistribution.getInstance().addData(base);
}
@Override
public void onGetParamResp(@NonNull MessagePad.Header header, @NonNull MessagePad.SetParamReq getParamResp) {
ReceiveData base = new ReceiveData(header, getParamResp, sdf);
DataDistribution.getInstance().addData(base);
}
private void initAdas() {
CupidLogUtils.e(TAG, "--->初始化");
AdasOptions options;
@@ -1690,6 +1698,10 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
//环岛模式开关
new SendCmdDialog(this, SendCmd.getSendRampThetaValid()).show();
break;
case Constants.TITLE.SEND_GET_PARAM_REQ:
//获取参数
new SendCmdDialog(this, SendCmd.getSendGetParamReq()).show();
break;
case Constants.TITLE.SEND_DETOURING_SPEED:
//绕障速度设置
showDetouringSpeedDialog();

View File

@@ -112,6 +112,12 @@ public class SendCmdDialog extends Dialog {
if (data.tag == SendCmdOption.TAG.RAMP_THETA_VALID) {
AdasManager.getInstance().sendRampThetaValid((int) data.value);
}
} else if (Constants.TITLE.SEND_GET_PARAM_REQ.equals(name)) {
if (data.tag == com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.UNKNOWN) {
AdasManager.getInstance().sendGetAllParamReq();
} else {
AdasManager.getInstance().sendGetParamReq((int) data.value);
}
}
}
});

View File

@@ -164,6 +164,7 @@ public class Constants {
String RECEIVE_SWEEPER_TASK_INDEX_DATA = MessageType.TYPE_RECEIVE_SWEEPER_TASK_INDEX_DATA.desc;
String RECEIVE_V2N_CONGESTION_EVENT = MessageType.TYPE_RECEIVE_V2N_CONGESTION_EVENT.desc;
String RECEIVE_V2N_GLOBAL_PATH_EVENTS = MessageType.TYPE_RECEIVE_V2N_GLOBAL_PATH_EVENTS.desc;
String RECEIVE_GET_PARAM_RESP = MessageType.TYPE_RECEIVE_GET_PARAM_RESP.desc;
// String RECEIVE_BASIC_INFO_REQ = "自动驾驶设备基础信息请求";
String TITLE_CAR_CONFIG_RESP = "工控机版本\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t配置";
@@ -208,6 +209,7 @@ public class Constants {
String SEND_STOP_YIELD_VALID = "停车让行线前避让等待开关";
String SEND_HADMAP_SPEED_LIMIT_VALID = "地图限速开关";
String SEND_RAMP_THETA_VALID = "环岛模式开关";
String SEND_GET_PARAM_REQ = "参数获取";
}
}

View File

@@ -536,6 +536,41 @@ class MoGoAutopilotControlProvider :
return AdasManager.getInstance().sendDetouringSpeed(speed)
}
/**
* 弱网减速停车策略开关
* isEnable = true 使用弱网减速停车策略
* isEnable = false 关闭弱网减速停车策略
* @return boolean
*/
override fun sendWeakNetSlowDown(isEnable: Boolean): Boolean {
return if(isEnable){
AdasManager.getInstance().sendWeakNetSlowDown(1)
}else{
AdasManager.getInstance().sendWeakNetSlowDown(0)
}
}
/**
* 获取全部参数
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @return boolean
*/
override fun sendGetAllParamReq(): Boolean {
return AdasManager.getInstance().sendGetAllParamReq()
}
/**
* 参数获取请求
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @param paramType 参数类型{@link com.zhidao.support.adas.high.common.Constants.PARAM_TYPE}
* @return boolean
*/
override fun sendGetParamReq(paramType: Int): Boolean {
return AdasManager.getInstance().sendGetParamReq(paramType)
}
/**
* 获取数据采集录制模式配置列表
* @param reqType 0: all, 1:获取当前所有topic列表, 2:配置需要预加载的topic组合

View File

@@ -676,6 +676,18 @@ class MoGoAdasListenerImpl : OnAdasListener {
CallerV2XListenerManager.dispatchV2nGlobalPathEvents(roadOverview.eventCount, construct, triangle, congestion, parkingViolation)
}
/**
* 参数获取应答
* <p>
* 调用{@link AdasManager#sendGetAllParamReq()}或{@link AdasManager#sendGetParamReq(int)}
* 如果对应的value是空串说明没有这个param或者get失败了。重启后值还是在redis里
*
* @param header 头
* @param getParamResp 配置参数
*/
override fun onGetParamResp(header: MessagePad.Header, getParamResp: MessagePad.SetParamReq) {
}
/**
* 是否可以启动自动驾驶
* 使用方法查看app_ipc_monitoring/uiMainActivity/onAutopilotAbility

View File

@@ -2,8 +2,8 @@ package com.mogo.eagle.core.function.api.autopilot
import chassis.SpecialVehicleTaskCmdOuterClass
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult
import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
/**
@@ -179,6 +179,31 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
*/
fun sendDetouringSpeed(speed: Double): Boolean
/**
* 弱网减速停车策略开关
* isEnable = true 使用弱网减速停车策略
* isEnable = false 关闭弱网减速停车策略
* @return boolean
*/
fun sendWeakNetSlowDown(isEnable: Boolean): Boolean
/**
* 获取全部参数
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @return boolean
*/
fun sendGetAllParamReq(): Boolean
/**
* 参数获取请求
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @param paramType 参数类型{@link com.zhidao.support.adas.high.common.Constants.PARAM_TYPE}
* @return boolean
*/
fun sendGetParamReq(paramType: Int): Boolean
/**
* 获取数据采集录制模式配置列表
* @param reqType 0: all, 1:获取当前所有topic列表, 2:配置需要预加载的topic组合

View File

@@ -254,6 +254,36 @@ object CallerAutoPilotControlManager {
return providerApi?.sendDetouringSpeed(speed)
}
/**
* 弱网减速停车策略开关
* isEnable = true 使用弱网减速停车策略
* isEnable = false 关闭弱网减速停车策略
* @return boolean
*/
fun sendWeakNetSlowDown(isEnable: Boolean): Boolean? {
return providerApi?.sendWeakNetSlowDown(isEnable)
}
/**
* 获取全部参数
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @return boolean
*/
fun sendGetAllParamReq(): Boolean? {
return providerApi?.sendGetAllParamReq()
}
/**
* 参数获取请求
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @param paramType 参数类型{@link com.zhidao.support.adas.high.common.Constants.PARAM_TYPE}
* @return boolean
*/
fun sendGetParamReq(paramType: Int): Boolean? {
return providerApi?.sendGetParamReq(paramType)
}
/**
* 获取数据采集录制模式配置列表
* @param reqType 0: all, 1:获取当前所有topic列表, 2:配置需要预加载的topic组合

View File

@@ -64,6 +64,8 @@ enum MessageType
MsgTypeSetParamReqV2 = 0x1011d; //设置参数命令V2
MsgTypeV2nCongestionEvent = 0x1011e; //主车附近拥堵事件推送, 透传
MsgTypeV2nGlobalPathEvents = 0x1011f; //主车路径全局事件推送, 透传
MsgTypeGetParamReq = 0x10120; //参数获取请求
MsgTypeGetParamResp = 0x10121; //参数获取应答
}
message Header
@@ -251,7 +253,7 @@ message BasicInfoReq
{
}
// message definition for MessageType: MsgTypeBasicInfoRsp
// message definition for MessageType: MsgTypeBasicInfoResp
message BasicInfoResp
{
string sn = 1;
@@ -312,6 +314,8 @@ message CarConfigResp
double maxSpeedLimit = 6; //最大自动驾驶限速, 单位m/s
double minAcceleration = 7; //最小加速度, 单位m/s²
double maxAcceleration = 8; //最大加速度, 单位m/s²
string carType = 9; //车辆类型
string subCarType = 10; //车辆子类型
}
// message definition for MsgTypeRecordCause
@@ -502,19 +506,19 @@ enum DrivingState
AUTO_LANE_CHANGE_RIGHT_RSI = 18; //V2N RSI主动向右变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT_RSI = 19; //V2N RSI主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT_RSI = 20; //V2N RSI主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
WAITING_RSI = 21; //V2N RSI正在等待变道避让施工场景: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶;
WAITING_RSI = 21; //V2N RSI正在等待变道避让施工场景/静止障碍物: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶;
AUTO_LANE_CHANGE_LEFT_RSM = 22; //V2N RSM主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
AUTO_LANE_CHANGE_RIGHT_RSM = 23; //V2N RSM主动向右变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT_RSM = 24; //V2N RSM主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT_RSM = 25; //V2N RSM主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
WAITING_RSM = 26; //V2N RSM正在等待变道避让静止障碍物: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶;
WAITING_RSM = 26; //V2N RSM正在等待变道避让施工场景/静止障碍物: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶;
AUTO_LANE_CHANGE_LEFT_RSI_TRIANGLE = 27; //V2N 三角牌(道路事故)主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
AUTO_LANE_CHANGE_RIGHT_RSI_TRIANGLE = 28; //V2N 三角牌(道路事故)主动向右变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT_RSI_TRIANGLE = 29; //V2N 三角牌(道路事故)主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT_RSI_TRIANGLE = 30; //V2N 三角牌(道路事故)主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
WAITING_RSI_TRIANGLE = 31; //V2N 正在等待变道避让三角牌(道路事故): driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶
AUTO_LANE_CHANGE_LEFT_RSI_TRIANGLE = 27; //V2N 三角主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
AUTO_LANE_CHANGE_RIGHT_RSI_TRIANGLE = 28; //V2N 三角主动向右变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT_RSI_TRIANGLE = 29; //V2N 三角主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT_RSI_TRIANGLE = 30; //V2N 三角主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
WAITING_RSI_TRIANGLE = 31; //V2N 三角锥正在等待变道避让施工场景/静止障碍物: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶
}
enum DrivingAction
@@ -575,12 +579,13 @@ message PlanningActionMsg
//message definition for MsgTypeSetParamReq
message SetOneParam
{
uint32 type = 1; // 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标碍物速度值(doubleDs)
// 3:AEB开关(bool) 0: 关闭自动紧急制动功能 1:启用自动紧急制动功能
// 4:限制绕障开关(bool) 0:正常绕障 1:限制绕障 默认0
// 5:停车让行线前避让等待开关(bool) 0:停车让行线前无需等待 1:停车让行线前需要等待 默认0
// 6:地图限速功能开关(bol) :不使用地图限速功能 1:使用地图限速功能 默认0
// 7:环岛模式开关(bool) //0:普通模式 1:环岛模式 默认0
uint32 type = 1; // 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标碍物速度值(double, m/s)
// 3:AEB开关(bool) 0:关闭自动紧急制动功能 1:启用自动紧急制动功能
// 4:限制绕障开关(bool) 0:正常绕障 1限制绕障 默认0
// 5:停车让行线前避让等待开关(bool) 0:停车让行线前无需等待 1:停车让行线前需要等待 默认0
// 6:地图限速功能开关(bool) 0:不使用地图限速功能 1:使用地图限速功能 默认0
// 7:环岛模式开关(bool) 0:普通模式 1:环岛模式 默认0
// 8:弱网减速停车策略开关(bool) 0:关闭弱网减速停车策略 1:使用弱网减速停车策略
string value = 2; // 转成字符串的值
}
@@ -643,3 +648,9 @@ message PlanningCmd
//message definition for MsgTypeV2nGlobalPathEvents
//refer to road_overview_events.proto for details
//message definition for MsgTypeGetParamReq
//复用 SetParamReq
//message definition for MsgTypeGetParamResp
//复用 SetParamReq

View File

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

View File

@@ -1541,7 +1541,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
@Override
public boolean sendDetouring(int enable) {
return sendSetParamReq(1, String.valueOf(enable));
return sendSetParamReq(Constants.PARAM_TYPE.DETOURING, String.valueOf(enable));
}
/**
@@ -1552,7 +1552,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
@Override
public boolean sendDetouringSpeed(double speed) {
return sendSetParamReq(2, String.valueOf(speed));
return sendSetParamReq(Constants.PARAM_TYPE.DETOURING_SPEED, String.valueOf(speed));
}
/**
@@ -1564,7 +1564,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
@Override
public boolean sendAebCmd(int enable) {
return sendSetParamReq(3, String.valueOf(enable));
return sendSetParamReq(Constants.PARAM_TYPE.AEB, String.valueOf(enable));
}
/**
@@ -1576,7 +1576,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
@Override
public boolean sendLaneChangeRestrainValid(int enable) {
return sendSetParamReq(4, String.valueOf(enable));
return sendSetParamReq(Constants.PARAM_TYPE.LANE_CHANGE_RESTRAIN_VALID, String.valueOf(enable));
}
/**
@@ -1588,7 +1588,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
@Override
public boolean sendStopYieldValid(int enable) {
return sendSetParamReq(5, String.valueOf(enable));
return sendSetParamReq(Constants.PARAM_TYPE.STOP_YIELD_VALID, String.valueOf(enable));
}
@@ -1601,7 +1601,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
@Override
public boolean sendHadmapSpeedLimitValid(int enable) {
return sendSetParamReq(6, String.valueOf(enable));
return sendSetParamReq(Constants.PARAM_TYPE.HADMAP_SPEED_LIMIT_VALID, String.valueOf(enable));
}
/**
@@ -1613,7 +1613,60 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
@Override
public boolean sendRampThetaValid(int enable) {
return sendSetParamReq(7, String.valueOf(enable));
return sendSetParamReq(Constants.PARAM_TYPE.RAMP_THETA_VALID, String.valueOf(enable));
}
/**
* 弱网减速停车策略开关
*
* @param enable 0:关闭弱网减速停车策略 1:使用弱网减速停车策略
* @return boolean
*/
@Override
public boolean sendWeakNetSlowDown(int enable) {
return sendSetParamReq(Constants.PARAM_TYPE.WEAK_NET_SLOW_DOWN, String.valueOf(enable));
}
/**
* 获取全部参数
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @return boolean
*/
@Override
public boolean sendGetAllParamReq() {
return sendGetParamReq(Constants.PARAM_TYPE.UNKNOWN);
}
/**
* 参数获取请求
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @param paramType 参数类型{@link Constants.PARAM_TYPE}
* @return boolean
*/
@Override
public boolean sendGetParamReq(@Define.ParamType int paramType) {
MessagePad.SetParamReq req;
if (paramType == Constants.PARAM_TYPE.UNKNOWN) {
req = MessagePad.SetParamReq
.newBuilder()
.addReqs(MessagePad.SetOneParam.newBuilder().setType(Constants.PARAM_TYPE.DETOURING))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(Constants.PARAM_TYPE.DETOURING_SPEED))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(Constants.PARAM_TYPE.AEB))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(Constants.PARAM_TYPE.LANE_CHANGE_RESTRAIN_VALID))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(Constants.PARAM_TYPE.STOP_YIELD_VALID))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(Constants.PARAM_TYPE.HADMAP_SPEED_LIMIT_VALID))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(Constants.PARAM_TYPE.RAMP_THETA_VALID))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(Constants.PARAM_TYPE.WEAK_NET_SLOW_DOWN))
.build();
} else {
req = MessagePad.SetParamReq
.newBuilder()
.addReqs(MessagePad.SetOneParam.newBuilder().setType(paramType))
.build();
}
return sendPBMessage(MessageType.TYPE_SEND_GET_PARAM_REQ.typeCode, req.toByteArray());
}
/**

View File

@@ -894,6 +894,40 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel != null && mChannel.sendRampThetaValid(enable);
}
/**
* 弱网减速停车策略开关
*
* @param enable 0:关闭弱网减速停车策略 1:使用弱网减速停车策略
* @return boolean
*/
@Override
public boolean sendWeakNetSlowDown(int enable) {
return mChannel != null && mChannel.sendWeakNetSlowDown(enable);
}
/**
* 获取全部参数
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @return boolean
*/
@Override
public boolean sendGetAllParamReq() {
return mChannel != null && mChannel.sendGetAllParamReq();
}
/**
* 参数获取请求
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)}
*
* @param paramType 参数类型{@link Constants.PARAM_TYPE}
* @return boolean
*/
@Override
public boolean sendGetParamReq(@Define.ParamType int paramType) {
return mChannel != null && mChannel.sendGetParamReq(paramType);
}
/**
* 发生行程相关
* type=1或2的时 需要参数 lineName

View File

@@ -548,6 +548,30 @@ public interface IAdasNetCommApi {
*/
boolean sendRampThetaValid(int enable);
/**
* 弱网减速停车策略开关
*
* @param enable 0:关闭弱网减速停车策略 1:使用弱网减速停车策略
* @return boolean
*/
boolean sendWeakNetSlowDown(int enable);
/**
* 获取全部参数
*
* @return boolean
*/
boolean sendGetAllParamReq();
/**
* 参数获取请求
*
* @param paramType
* @return boolean
*/
boolean sendGetParamReq(@Define.ParamType int paramType);
/**
* 发生行程相关
* type=1或2的时 需要参数 lineName

View File

@@ -284,6 +284,17 @@ public interface OnAdasListener {
*/
void onV2nGlobalPathEvents(@NotNull MessagePad.Header header, @NotNull RoadOverviewEvents.RoadOverviewData roadOverview, @Nullable MogoV2X.RSI_PB construct, @Nullable MogoV2X.RSI_PB triangle, @Nullable MogoV2X.RSI_PB congestion, @Nullable MogoV2X.RSM_PB parkingViolation);
/**
* 参数获取应答
* <p>
* 调用{@link AdasManager#sendGetAllParamReq()}或{@link AdasManager#sendGetParamReq(int)}
* 如果对应的value是空串说明没有这个param或者get失败了。重启后值还是在redis里
*
* @param header 头
* @param getParamResp 配置参数
*/
void onGetParamResp(@NotNull MessagePad.Header header, @NotNull MessagePad.SetParamReq getParamResp);
/**
* 是否有能力启动自动驾驶
*

View File

@@ -120,4 +120,18 @@ public class Constants {
int OLD_CHASSIS = 1;//老底盘
}
/**
* 参数类型
*/
public interface PARAM_TYPE {
int UNKNOWN = -1;
int DETOURING = 1;//绕障类功能开关
int DETOURING_SPEED = 2;//变道绕障的目标障碍物速度阈值
int AEB = 3;//AEB开关
int LANE_CHANGE_RESTRAIN_VALID = 4;//限制绕障开关
int STOP_YIELD_VALID = 5;//停车让行线前避让等待开关
int HADMAP_SPEED_LIMIT_VALID = 6;//地图限速功能开关
int RAMP_THETA_VALID = 7;//环岛模式开关
int WEAK_NET_SLOW_DOWN = 8;//弱网减速停车策略开关
}
}

View File

@@ -54,4 +54,12 @@ public final class Define {
@Retention(RetentionPolicy.SOURCE)
public @interface AutopilotStartStatus {
}
@IntDef(flag = true, value = {Constants.PARAM_TYPE.DETOURING, Constants.PARAM_TYPE.DETOURING_SPEED,
Constants.PARAM_TYPE.AEB, Constants.PARAM_TYPE.LANE_CHANGE_RESTRAIN_VALID,
Constants.PARAM_TYPE.STOP_YIELD_VALID, Constants.PARAM_TYPE.HADMAP_SPEED_LIMIT_VALID,
Constants.PARAM_TYPE.RAMP_THETA_VALID, Constants.PARAM_TYPE.WEAK_NET_SLOW_DOWN})
@Retention(RetentionPolicy.SOURCE)
public @interface ParamType {
}
}

View File

@@ -62,6 +62,8 @@ public enum MessageType {
TYPE_SEND_SET_PARAM_REQ_V2(MessagePad.MessageType.MsgTypeSetParamReqV2, "设置参数命令V2"),
TYPE_RECEIVE_V2N_CONGESTION_EVENT(MessagePad.MessageType.MsgTypeV2nCongestionEvent, "主车附近事件推送"),
TYPE_RECEIVE_V2N_GLOBAL_PATH_EVENTS(MessagePad.MessageType.MsgTypeV2nGlobalPathEvents, "主车路径全局事件推送"),
TYPE_SEND_GET_PARAM_REQ(MessagePad.MessageType.MsgTypeGetParamReq, "参数获取请求"),
TYPE_RECEIVE_GET_PARAM_RESP(MessagePad.MessageType.MsgTypeGetParamResp, "参数获取应答"),
//TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"),
TYPE_RECEIVE_SWEEPER_TASK_INDEX_DATA(MessagePad.MessageType.MsgTypeSweeperTaskIndexData, "清扫车指标数据"),

View File

@@ -0,0 +1,32 @@
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 GetParamRespMessage extends MyAbstractMessageHandler {
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
MessagePad.SetParamReq getParamResp = MessagePad.SetParamReq.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.onGetParamResp(raw.getHeader(), getParamResp);
}
AdasChannel.calculateTimeConsumingBusiness("参数获取应答", nowTime);
// CupidLogUtils.e("到站提醒--->" + arrivalNotification.toString());
}
}

View File

@@ -40,6 +40,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg pointCloudMessage;//3D点云
private IMsg v2nCongestionEventMessage;//主车附近事件推送
private IMsg v2nGlobalPathEventsMessage;//主车路径全局事件推送
private IMsg getParamRespMessage;//参数获取应答
private final AutopilotReview autopilotReview;
@@ -211,6 +212,12 @@ public class MyMessageFactory implements IMyMessageFactory {
v2nGlobalPathEventsMessage = new V2nGlobalPathEventsMessage();
}
return v2nGlobalPathEventsMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_GET_PARAM_RESP.typeCode) {
//参数获取应答
if (getParamRespMessage == null) {
getParamRespMessage = new GetParamRespMessage();
}
return getParamRespMessage;
} else {
//MessageType.TYPE_DEFAULT.typeCode
return null;