From 42104bc48d2dc7815cdcaf5a437d8a73e64e816b Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Mon, 17 Oct 2022 16:50:48 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=95=E6=A1=A9?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E5=92=8C=E7=BB=95=E6=A1=A9=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/proto/message_pad.proto | 21 +++++++++++++++---- .../zhidao/support/adas/high/AdasChannel.java | 19 +++++++++++++++++ .../zhidao/support/adas/high/AdasManager.java | 9 ++++++++ .../support/adas/high/IAdasNetCommApi.java | 5 +++++ .../support/adas/high/common/MessageType.java | 1 + 5 files changed, 51 insertions(+), 4 deletions(-) diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 3c16b7d91f..b6ac7f2a10 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -4,7 +4,7 @@ package mogo.telematics.pad; enum ProtocolVersion { Defaultver = 0; - CurrentVersion = 7; //每次修改proto文件增加1 + CurrentVersion = 8; //每次修改proto文件增加1 } enum MessageType @@ -50,6 +50,7 @@ enum MessageType MsgTypeOperatorCmdReq = 0x10116; //操控指令 MsgTypeSubscribeDataReq = 0x10117; //数据订阅、取消订阅请求 MsgTypeSpecialVehicleTaskCmd = 0x10118; //特种车辆命令 + MsgTypeSetParamReq = 0x10119; //设置参数命令 } message Header @@ -141,11 +142,11 @@ message GnssInfo // message definition for MessageType: MsgTypeAutopilotState message AutopilotState { - uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中,3:平行驾驶 + uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中 uint32 camera = 2; //camera节点状态 1:开启,0:关闭 uint32 radar = 3; //雷达节点状态 1:开启,0:关闭 uint32 rtk = 4; //RTK节点状态 1:开启,0:关闭 - uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶,2平行驾驶 + uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶 double speed = 6; //惯导车速 m/s string reason = 7; //不可用原因(abandoned) } @@ -166,7 +167,7 @@ message AutopilotState message PlanningObject { uint32 uuid = 1; - uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 0是leading障碍物,1是避障和择机的障碍物 + uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 } message PlanningObjects @@ -466,3 +467,15 @@ message PlanningActionMsg //message definition for MsgTypeSpecialVehicleTaskCmd //refer to special_vehicle_task_cmd.proto for details +//message definition for MsgTypeSetParamReq +message SetOneParam +{ + uint32 type = 1; // 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) + string value = 2; // 转成字符串的值 +} + +message SetParamReq +{ + repeated SetOneParam reqs = 1; +} + diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index daa4366e6e..62f257b274 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -14,6 +14,7 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_WEB_SO import android.os.SystemClock; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -300,6 +301,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec if (mSocket == null || bytes == null || bytes.length <= 0) { return false; } + Log.d("liyz", "sendWsMessag bytes = " + bytes); //TODO ByteString byteString = ByteString.of(bytes); if (!byteString.startsWith(Constants.RAW_MG)) { CupidLogUtils.e(TAG, "协议不匹配,命令下发失败 bytes=" + ByteUtil.byteArrToHex(bytes)); @@ -1194,5 +1196,22 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec public boolean sendOperatorCmdStopHonking() { return sendOperatorCmdSetHorn(2); } + + /** + * 绕障开关和速度控制 + * @param type + * @param value + */ + @Override + public boolean setDetouring(int type, String value) { + MessagePad.SetOneParam oneParam = MessagePad.SetOneParam + .newBuilder().setType(type).setValue(value).build(); + MessagePad.SetParamReq req = MessagePad.SetParamReq + .newBuilder() + .addReqs(oneParam) + .build(); + return sendPBMessage(MessageType.TYPE_SEND_DETOURING_DATA_REQ.typeCode, req.toByteArray()); + } + } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 35b0554b2e..a682ee6249 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -570,6 +570,15 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.sendOperatorCmdStopHonking(); } + /** + * 绕障开关和速度控制 + * @param type + * @param value + */ + @Override + public boolean setDetouring(int type, String value) { + return mChannel != null && mChannel.setDetouring(type, value); + } /** * 获取工控机固定IP列表 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 6fc73c2beb..62f9a2fb14 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -349,6 +349,11 @@ public interface IAdasNetCommApi { */ void setEnableLog(boolean isEnableLog); + /** + * 绕障开关和速度相关 + */ + boolean setDetouring(int type, String value); + /** * 获取与当前连接工控机兼容性 * 连接状态=已连接 时正常返回,其他状态全部为null diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java index 7fada1ae8e..625b824321 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java @@ -49,6 +49,7 @@ public enum MessageType { TYPE_SEND_RECORD_DATA_CONFIG_REQ(MessagePad.MessageType.MsgTypeRecordDataConfigReq, "数据采集配置查询"), TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP(MessagePad.MessageType.MsgTypeRecordDataConfigResp, "数据采集配置"), TYPE_SEND_SUBSCRIBE_DATA_REQ(MessagePad.MessageType.MsgTypeSubscribeDataReq, "数据订阅、取消订阅请求"), + TYPE_SEND_DETOURING_DATA_REQ(MessagePad.MessageType.MsgTypeSetParamReq, "绕障开关和阈值"), //透传 原始pb文件中不存在以下type。由于Java中无法强转所以在mogo-adas-data message_pad.proto中放开注释 TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"); From e4310caab899b66a9cd3944c2b96fde261ed3c19 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 18 Oct 2022 18:20:37 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E7=9A=84pb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/mogo-adas-data/src/main/proto/message_pad.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index b6ac7f2a10..0dc400ce96 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -287,6 +287,7 @@ message RecordData bool isRecord = 4; //采集指令, true: 采集, false: 停止采集 bool sustain = 5; //是否持续采集 uint32 bduration = 6; //前溯时长 + repeated string topics = 7; //topic列表 } // message definition for MsgTypeRecordResult @@ -386,7 +387,9 @@ message SetRainModeReq // message definition for MsgTypeRecordDataConfigReq message RecordDataConfigReq { - uint32 reqType = 1; // 0: all, 其他保留 + uint32 reqType = 1; // 0: all, 1:获取当前所有topic列表, 2:配置需要预加载的topic组合 + uint32 recordType = 2; // 0:不需要修改内置类型的topic组合, 1:需要修改内置类型的topic组合 + repeated string topicsNeedToCache = 3; } // message definition for MsgTypeRecordDataConfigResp @@ -394,11 +397,13 @@ message RecordDataType { uint32 id = 1; //采集类型id string desc = 2; //采集类型描述 + repeated string topics = 3; //采集类型必须采集的topic列表 } message RecordDataConfig { repeated RecordDataType recordTypes = 1; + repeated string allTopics = 2; //当前所有topic列表 } // message definition for MsgTypeSubscribeDataReq From 0c956bd16ea1bd5aa4d2d031513ea2b97df230c6 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 18 Oct 2022 19:27:21 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E5=AF=B9=E7=89=B9=E5=AE=9Atopic=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=BD=95=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/support/adas/high/AdasChannel.java | 35 +++++++++++++++++++ .../zhidao/support/adas/high/AdasManager.java | 6 ++++ .../support/adas/high/IAdasNetCommApi.java | 12 +++++++ 3 files changed, 53 insertions(+) diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 62f257b274..5b4af674c5 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -47,6 +47,7 @@ import com.zhjt.service.chain.TracingConstants; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.Timer; @@ -364,6 +365,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec CupidLogUtils.i("TimeConsuming", who + " 从接收到解析耗时=" + time + "毫秒"); } } + //TODO 计算耗时 临时测试 public static void calculateTimeConsumingBusiness(String who, long receiveTime) { if (CupidLogUtils.isEnableLog()) { @@ -371,6 +373,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec CupidLogUtils.i("TimeConsuming", who + " 业务处理耗时=" + time + "毫秒"); } } + /** * 分发和解析 * @@ -837,6 +840,37 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendRecordData(id, 0, type, false, -1); } + /** + * 选择具体topics进行录制 + * @param id + * @param duration + * @param type + * @param bduration + * @param topics + * @return + */ + @Override + public boolean startRecordPackage(int id, int duration, int type, int bduration, List topics) { + boolean sustain = false; + if (duration <= 0) { + duration = 0; + sustain = true; + } + + MessagePad.RecordData.Builder builder = MessagePad.RecordData + .newBuilder() + .setId(id) + .setDuration(duration) + .setType(type) + .setIsRecord(true) + .setSustain(sustain) + .addAllTopics(topics); + if (bduration > -1) { + builder.setBduration(bduration); + } + MessagePad.RecordData req = builder.build(); + return sendPBMessage(MessageType.TYPE_SEND_RECORD_DATA.typeCode, req.toByteArray()); + } /** * 数据采集请求 主动录制Bag包 @@ -1199,6 +1233,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec /** * 绕障开关和速度控制 + * * @param type * @param value */ diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index a682ee6249..3099a30f14 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -12,6 +12,7 @@ import com.zhidao.support.adas.high.common.MessageType; import com.zhidao.support.adas.high.common.ReceiveTimeoutManager; import java.util.HashSet; +import java.util.List; import java.util.Set; import mogo.telematics.pad.MessagePad; @@ -352,6 +353,11 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.startRecordPackage(id, duration, type, bduration); } + @Override + public boolean startRecordPackage(int id, int duration, int type, int bduration, List topics) { + return mChannel != null && mChannel.startRecordPackage(id, duration, type, bduration, topics); + } + /** * 同下 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 62f9a2fb14..1921831a6e 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -7,6 +7,7 @@ import com.zhidao.support.adas.high.common.Constants; import com.zhidao.support.adas.high.common.Define; import com.zhidao.support.adas.high.common.MessageType; +import java.util.List; import java.util.Set; import mogo.telematics.pad.MessagePad; @@ -132,6 +133,17 @@ public interface IAdasNetCommApi { */ boolean startRecordPackage(int id, int duration, int type, int bduration); + /** + * 同下 + * + * @param id + * @param duration + * @param type + * @param bduration + * @return 加入WS发送消息队列是否成功 + */ + boolean startRecordPackage(int id, int duration, int type, int bduration, List topics); + /** * 同下 * From 9aa751bfdac5fdc5d01c10eb09ee8931c4021ae5 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Tue, 18 Oct 2022 20:30:48 +0800 Subject: [PATCH 04/12] =?UTF-8?q?[change]=20=E6=9B=B4=E6=96=B0=E4=B8=BB?= =?UTF-8?q?=E5=8A=A8=E5=BD=95=E5=88=B6bag=E5=8C=85=E9=87=8D=E8=BD=BD?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/proto/message_pad.proto | 6 +- .../zhidao/support/adas/high/AdasChannel.java | 61 ++++++++----------- .../zhidao/support/adas/high/AdasManager.java | 45 +++++++++++++- .../support/adas/high/IAdasNetCommApi.java | 23 ++++++- 4 files changed, 92 insertions(+), 43 deletions(-) diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 0dc400ce96..95144e2943 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -142,11 +142,11 @@ message GnssInfo // message definition for MessageType: MsgTypeAutopilotState message AutopilotState { - uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中 + uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中,3:平行驾驶 uint32 camera = 2; //camera节点状态 1:开启,0:关闭 uint32 radar = 3; //雷达节点状态 1:开启,0:关闭 uint32 rtk = 4; //RTK节点状态 1:开启,0:关闭 - uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶 + uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶,2平行驾驶 double speed = 6; //惯导车速 m/s string reason = 7; //不可用原因(abandoned) } @@ -167,7 +167,7 @@ message AutopilotState message PlanningObject { uint32 uuid = 1; - uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 + uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 0是leading障碍物,1是避障和择机的障碍物 } message PlanningObjects diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 5b4af674c5..d514fd243d 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -822,54 +822,37 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec @Override public boolean startRecordPackage(int id, int type) { - return sendRecordData(id, 0, type, true, -1); + return sendRecordData(id, 0, type, true, -1, null); } @Override public boolean startRecordPackage(int id, int duration, int type) { - return sendRecordData(id, duration, type, true, -1); + return sendRecordData(id, duration, type, true, -1, null); } @Override public boolean startRecordPackage(int id, int duration, int type, int bduration) { - return sendRecordData(id, duration, type, true, bduration); + return sendRecordData(id, duration, type, true, bduration, null); + } + + @Override + public boolean startRecordPackage(int id, int type, List topics) { + return sendRecordData(id, 0, type, true, -1, topics); + } + + @Override + public boolean startRecordPackage(int id, int duration, int type, List topics) { + return sendRecordData(id, duration, type, true, -1, topics); + } + + @Override + public boolean startRecordPackage(int id, int duration, int type, int bduration, List topics) { + return sendRecordData(id, duration, type, true, bduration, topics); } @Override public boolean stopRecordPackage(int id, int type) { - return sendRecordData(id, 0, type, false, -1); - } - - /** - * 选择具体topics进行录制 - * @param id - * @param duration - * @param type - * @param bduration - * @param topics - * @return - */ - @Override - public boolean startRecordPackage(int id, int duration, int type, int bduration, List topics) { - boolean sustain = false; - if (duration <= 0) { - duration = 0; - sustain = true; - } - - MessagePad.RecordData.Builder builder = MessagePad.RecordData - .newBuilder() - .setId(id) - .setDuration(duration) - .setType(type) - .setIsRecord(true) - .setSustain(sustain) - .addAllTopics(topics); - if (bduration > -1) { - builder.setBduration(bduration); - } - MessagePad.RecordData req = builder.build(); - return sendPBMessage(MessageType.TYPE_SEND_RECORD_DATA.typeCode, req.toByteArray()); + return sendRecordData(id, 0, type, false, -1, null); } /** @@ -882,10 +865,11 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * @param isRecord 采集指令, true: 采集, false: 停止采集 * @param bduration 前溯时长 * @param sustain 是否持续采集 + * @param topics 要录制的Topic列表 * @return boolean */ @Override - public boolean sendRecordData(int id, int duration, int type, boolean isRecord, int bduration) { + public boolean sendRecordData(int id, int duration, int type, boolean isRecord, int bduration, List topics) { boolean sustain = false; if (isRecord) { if (duration <= 0) { @@ -903,6 +887,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec if (bduration > -1) { builder.setBduration(bduration); } + if (topics != null && !topics.isEmpty()) { + builder.addAllTopics(topics); + } MessagePad.RecordData req = builder.build(); return sendPBMessage(MessageType.TYPE_SEND_RECORD_DATA.typeCode, req.toByteArray()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 3099a30f14..5250674d7d 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -333,6 +333,7 @@ public class AdasManager implements IAdasNetCommApi { * 同下 * * @param id + * @param duration * @param type * @return */ @@ -345,7 +346,9 @@ public class AdasManager implements IAdasNetCommApi { * 同下 * * @param id + * @param duration * @param type + * @param bduration * @return */ @Override @@ -353,6 +356,43 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.startRecordPackage(id, duration, type, bduration); } + /** + * 同下 + * + * @param id + * @param type + * @param topics + * @return + */ + @Override + public boolean startRecordPackage(int id, int type, List topics) { + return mChannel != null && mChannel.startRecordPackage(id, type, topics); + } + + /** + * 同下 + * + * @param id + * @param duration + * @param type + * @param topics + * @return + */ + @Override + public boolean startRecordPackage(int id, int duration, int type, List topics) { + return mChannel != null && mChannel.startRecordPackage(id, duration, type, topics); + } + + /** + * 同下 + * + * @param id + * @param duration + * @param type + * @param bduration + * @param topics + * @return + */ @Override public boolean startRecordPackage(int id, int duration, int type, int bduration, List topics) { return mChannel != null && mChannel.startRecordPackage(id, duration, type, bduration, topics); @@ -381,8 +421,8 @@ public class AdasManager implements IAdasNetCommApi { * @return boolean */ @Override - public boolean sendRecordData(int id, int duration, int type, boolean isRecord, int bduration) { - return mChannel != null && mChannel.sendRecordData(id, duration, type, isRecord, bduration); + public boolean sendRecordData(int id, int duration, int type, boolean isRecord, int bduration, List topics) { + return mChannel != null && mChannel.sendRecordData(id, duration, type, isRecord, bduration, topics); } /** @@ -578,6 +618,7 @@ public class AdasManager implements IAdasNetCommApi { /** * 绕障开关和速度控制 + * * @param type * @param value */ diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 1921831a6e..43125d6093 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -133,6 +133,26 @@ public interface IAdasNetCommApi { */ boolean startRecordPackage(int id, int duration, int type, int bduration); + /** + * 同下 + * + * @param id + * @param type + * @param topics + * @return 加入WS发送消息队列是否成功 + */ + boolean startRecordPackage(int id, int type, List topics); + + /** + * 同下 + * + * @param id + * @param type + * @param topics + * @return 加入WS发送消息队列是否成功 + */ + boolean startRecordPackage(int id, int duration, int type, List topics); + /** * 同下 * @@ -140,6 +160,7 @@ public interface IAdasNetCommApi { * @param duration * @param type * @param bduration + * @param topics * @return 加入WS发送消息队列是否成功 */ boolean startRecordPackage(int id, int duration, int type, int bduration, List topics); @@ -163,7 +184,7 @@ public interface IAdasNetCommApi { * @param bduration 前溯时长 * @return 加入WS发送消息队列是否成功 */ - boolean sendRecordData(int id, int duration, int type, boolean isRecord, int bduration); + boolean sendRecordData(int id, int duration, int type, boolean isRecord, int bduration, List topics); /** * 设置自动驾驶最大速度 From ded5a700e13a5faaa8d1a54808f34b2459e3fe1d Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Tue, 18 Oct 2022 21:42:53 +0800 Subject: [PATCH 05/12] =?UTF-8?q?[change]=20=E6=9B=B4=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=87=87=E9=9B=86=E9=85=8D=E7=BD=AE=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/adas/client/ui/MainActivity.java | 48 +++++++++- .../layout/dialog_record_data_config_resp.xml | 93 +++++++++++++++++++ .../autopilot/MoGoAutopilotProvider.kt | 2 +- .../zhidao/support/adas/high/AdasChannel.java | 14 ++- .../zhidao/support/adas/high/AdasManager.java | 7 +- .../support/adas/high/IAdasNetCommApi.java | 6 +- 6 files changed, 159 insertions(+), 11 deletions(-) create mode 100644 app_ipc_monitoring/src/main/res/layout/dialog_record_data_config_resp.xml diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index eb77663d3c..12ac54c427 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -101,6 +101,7 @@ import java.net.NetworkInterface; import java.net.SocketException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.Enumeration; import java.util.List; @@ -1345,12 +1346,55 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas AdasManager.getInstance().sendRainModeReq(0); break; case Constants.TITLE.SEND_RECORD_DATA_CONFIG_RESP: - //关闭雨天模式 - AdasManager.getInstance().sendRecordDataConfigReq(); + showRecordDataConfigRespDialog(); break; } } + private void showRecordDataConfigRespDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(Constants.TITLE.SEND_RECORD_DATA_CONFIG_RESP); + View view = getLayoutInflater().inflate(R.layout.dialog_record_data_config_resp, null); + final EditText reqTypeView = view.findViewById(R.id.reqType); + final EditText recordTypeView = view.findViewById(R.id.recordType); + final EditText topicsNeedToCacheView = view.findViewById(R.id.topicsNeedToCache); + builder.setView(view);// + builder.setCancelable(false);// + builder.setPositiveButton("发送", null); + //设置反面按钮,并做事件处理 + builder.setNegativeButton("取消", null); + AlertDialog alertDialog = builder.show();//显示Dialog对话框 + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Editable editable = reqTypeView.getText(); + if (TextUtils.isEmpty(editable)) { + // 条件不成立不能关闭 AlertDialog 窗口 + Toast.makeText(MainActivity.this, "请输入ReqType", Toast.LENGTH_SHORT).show(); + return; + } + int reqType = Integer.parseInt(editable.toString().trim()); + editable = recordTypeView.getText(); + if (TextUtils.isEmpty(editable)) { + Toast.makeText(MainActivity.this, "请输入RecordType", Toast.LENGTH_SHORT).show(); + return; + } + int recordType = Integer.parseInt(editable.toString().trim()); + List topicsNeedToCache = null; + editable = topicsNeedToCacheView.getText(); + if (!TextUtils.isEmpty(editable)) { + String cache = editable.toString().trim(); + cache = cache.replace(",", " ").replace(",", " "); + String[] caches = cache.split(" "); + topicsNeedToCache = Arrays.asList(caches); + } + AdasManager.getInstance().sendRecordDataConfigReq(reqType, recordType, topicsNeedToCache); + alertDialog.dismiss(); + } + }); + + } + @Override protected void handleMessage(Message msg) { diff --git a/app_ipc_monitoring/src/main/res/layout/dialog_record_data_config_resp.xml b/app_ipc_monitoring/src/main/res/layout/dialog_record_data_config_resp.xml new file mode 100644 index 0000000000..c71fb1bec7 --- /dev/null +++ b/app_ipc_monitoring/src/main/res/layout/dialog_record_data_config_resp.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index dec5498cd8..1368eae5ec 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -500,7 +500,7 @@ class MoGoAutopilotProvider : * 获取数据采集录制模式配置列表 */ override fun getBadCaseConfig() { - AdasManager.getInstance().sendRecordDataConfigReq() +// AdasManager.getInstance().sendRecordDataConfigReq() TODO 需要传参 } /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index d514fd243d..2e660ed49e 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -1054,14 +1054,20 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec /** * 数据采集配置查询 * + * @param reqType 0: all, 1:获取当前所有topic列表, 2:配置需要预加载的topic组合 + * @param recordType 0:不需要修改内置类型的topic组合, 1:需要修改内置类型的topic组合 + * @param topicsNeedToCache * @return boolean */ @Override - public boolean sendRecordDataConfigReq() { - MessagePad.RecordDataConfigReq req = MessagePad.RecordDataConfigReq + public boolean sendRecordDataConfigReq(int reqType, int recordType, List topicsNeedToCache) { + MessagePad.RecordDataConfigReq.Builder builder = MessagePad.RecordDataConfigReq .newBuilder() - .setReqType(0) - .build(); + .setReqType(reqType) + .setRecordType(recordType); + if (topicsNeedToCache != null && !topicsNeedToCache.isEmpty()) + builder.addAllTopicsNeedToCache(topicsNeedToCache); + MessagePad.RecordDataConfigReq req = builder.build(); return sendPBMessage(MessageType.TYPE_SEND_RECORD_DATA_CONFIG_REQ.typeCode, req.toByteArray()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 5250674d7d..4d7de6c654 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -515,11 +515,14 @@ public class AdasManager implements IAdasNetCommApi { /** * 数据采集配置查询 * + * @param reqType 0: all, 1:获取当前所有topic列表, 2:配置需要预加载的topic组合 + * @param recordType 0:不需要修改内置类型的topic组合, 1:需要修改内置类型的topic组合 + * @param topicsNeedToCache * @return boolean */ @Override - public boolean sendRecordDataConfigReq() { - return mChannel != null && mChannel.sendRecordDataConfigReq(); + public boolean sendRecordDataConfigReq(int reqType, int recordType, List topicsNeedToCache) { + return mChannel != null && mChannel.sendRecordDataConfigReq(reqType, recordType, topicsNeedToCache); } /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 43125d6093..f2bed1cec8 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -256,11 +256,13 @@ public interface IAdasNetCommApi { /** * 数据采集配置查询 - * 0: all, 其他保留 * + * @param reqType 0: all, 1:获取当前所有topic列表, 2:配置需要预加载的topic组合 + * @param recordType 0:不需要修改内置类型的topic组合, 1:需要修改内置类型的topic组合 + * @param topicsNeedToCache * @return 加入WS发送消息队列是否成功 */ - boolean sendRecordDataConfigReq(); + boolean sendRecordDataConfigReq(int reqType, int recordType, List topicsNeedToCache); /** * 获取已注册接口 From 2ead50a9283ccddaffce770404fd2270f2f6f19d Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 19 Oct 2022 10:42:13 +0800 Subject: [PATCH 06/12] =?UTF-8?q?[change]=20=E6=9B=B4=E6=96=B0=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=8F=82=E6=95=B0=E5=91=BD=E4=BB=A4=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E6=B7=BB=E5=8A=A0=E7=BB=95=E9=9A=9C=E7=B1=BB?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=85=B3=20=E5=8F=98=E9=81=93?= =?UTF-8?q?=E7=BB=95=E9=9A=9C=E7=9A=84=E7=9B=AE=E6=A0=87=E9=9A=9C=E7=A2=8D?= =?UTF-8?q?=E7=89=A9=E9=80=9F=E5=BA=A6=E9=98=88=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/adas/client/ui/MainActivity.java | 46 ++++++++++++++++++- .../zhidao/adas/client/utils/Constants.java | 3 ++ .../res/layout/dialog_detouring_speed.xml | 30 ++++++++++++ .../zhidao/support/adas/high/AdasChannel.java | 31 +++++++++++-- .../zhidao/support/adas/high/AdasManager.java | 33 +++++++++++-- .../support/adas/high/IAdasNetCommApi.java | 29 ++++++++++-- .../support/adas/high/common/MessageType.java | 2 +- 7 files changed, 159 insertions(+), 15 deletions(-) create mode 100644 app_ipc_monitoring/src/main/res/layout/dialog_detouring_speed.xml diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 12ac54c427..92d69df229 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -648,6 +648,9 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas 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_DETOURING_SPEED); } private void initBtnRecyclerView() { @@ -1187,7 +1190,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas msg = "未连接司机端"; } showToastCenter(msg); - return; +// return; } switch (data) { case Constants.TITLE.SEND_SET_AUTOPILOT_MODE_REQ: @@ -1346,11 +1349,52 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas AdasManager.getInstance().sendRainModeReq(0); 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); + break; + case Constants.TITLE.SEND_DETOURING_SPEED: + //绕障速度设置 + showDetouringSpeedDialog(); + break; } } + private void showDetouringSpeedDialog() { + AlertDialog.Builder builder1 = new AlertDialog.Builder(this); + builder1.setTitle("绕障速度"); + View view1 = getLayoutInflater().inflate(R.layout.dialog_detouring_speed, null); + final EditText et1 = (EditText) view1.findViewById(R.id.et); + builder1.setView(view1);// + builder1.setCancelable(false);// + builder1.setPositiveButton("设置", null); + //设置反面按钮,并做事件处理 + builder1.setNegativeButton("取消", null); + AlertDialog alertDialog1 = builder1.show();//显示Dialog对话框 + alertDialog1.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Editable editable = et1.getText(); + if (TextUtils.isEmpty(editable)) { + // 条件不成立不能关闭 AlertDialog 窗口 + Toast.makeText(MainActivity.this, "请输入速度", Toast.LENGTH_SHORT).show(); + return; + } + String temp = et1.getText().toString().trim(); + double speed = Double.parseDouble(temp); + AdasManager.getInstance().sendDetouringSpeed(speed); + alertDialog1.dismiss(); + } + }); + } + private void showRecordDataConfigRespDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(Constants.TITLE.SEND_RECORD_DATA_CONFIG_RESP); diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java index 520893fde8..95052dc6b3 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java @@ -187,6 +187,9 @@ public class Constants { String SEND_SET_RAIN_MODE_REQ_OPEN = "打开雨天模式"; String SEND_SET_RAIN_MODE_REQ_CLOSE = "关闭雨天模式"; String SEND_RECORD_DATA_CONFIG_RESP = "数据采集配置"; + String SEND_DETOURING_OPEN = "绕障类功能开"; + String SEND_DETOURING_CLOSE = "绕障类功能关"; + String SEND_DETOURING_SPEED = "绕障速度阈值"; } diff --git a/app_ipc_monitoring/src/main/res/layout/dialog_detouring_speed.xml b/app_ipc_monitoring/src/main/res/layout/dialog_detouring_speed.xml new file mode 100644 index 0000000000..717530d7f6 --- /dev/null +++ b/app_ipc_monitoring/src/main/res/layout/dialog_detouring_speed.xml @@ -0,0 +1,30 @@ + + + + + + + \ No newline at end of file diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 2e660ed49e..b0881d57ca 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -1225,13 +1225,14 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec } /** - * 绕障开关和速度控制 + * 设置参数命令 * - * @param type - * @param value + * @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) + * @param value 转成字符串的值 + * @return boolean */ @Override - public boolean setDetouring(int type, String value) { + public boolean sendSetParamReq(int type, String value) { MessagePad.SetOneParam oneParam = MessagePad.SetOneParam .newBuilder().setType(type).setValue(value).build(); MessagePad.SetParamReq req = MessagePad.SetParamReq @@ -1241,5 +1242,27 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendPBMessage(MessageType.TYPE_SEND_DETOURING_DATA_REQ.typeCode, req.toByteArray()); } + /** + * 绕障类功能开关 + * + * @param enable 0:关闭,1:开启 + * @return boolean + */ + @Override + public boolean sendDetouring(int enable) { + return sendSetParamReq(1, String.valueOf(enable)); + } + + /** + * 变道绕障的目标障碍物速度阈值 + * + * @param speed 速度阈值 m/s + * @return boolean + */ + @Override + public boolean sendDetouringSpeed(double speed) { + return sendSetParamReq(2, String.valueOf(speed)); + } + } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 4d7de6c654..22eb4ec033 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -620,14 +620,37 @@ public class AdasManager implements IAdasNetCommApi { } /** - * 绕障开关和速度控制 + * 设置参数命令 * - * @param type - * @param value + * @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) + * @param value 转成字符串的值 + * @return boolean */ @Override - public boolean setDetouring(int type, String value) { - return mChannel != null && mChannel.setDetouring(type, value); + public boolean sendSetParamReq(int type, String value) { + return mChannel != null && mChannel.sendSetParamReq(type, value); + } + + /** + * 绕障类功能开关 + * + * @param enable 0:关闭,1:开启 + * @return boolean + */ + @Override + public boolean sendDetouring(int enable) { + return mChannel != null && mChannel.sendDetouring(enable); + } + + /** + * 变道绕障的目标障碍物速度阈值 + * + * @param speed 速度阈值 m/s + * @return boolean + */ + @Override + public boolean sendDetouringSpeed(double speed) { + return mChannel != null && mChannel.sendDetouringSpeed(speed); } /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index f2bed1cec8..ec5a0c170d 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -354,6 +354,31 @@ public interface IAdasNetCommApi { * @return boolean */ boolean sendOperatorCmdStopHonking(); + + /** + * 设置参数命令 + * + * @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) + * @param value 转成字符串的值 + * @return boolean + */ + boolean sendSetParamReq(int type, String value); + + /** + * 绕障类功能开关 + * + * @param enable 0:关闭,1:开启 + * @return boolean + */ + boolean sendDetouring(int enable); + + /** + * 变道绕障的目标障碍物速度阈值 + * + * @param speed 速度阈值 m/s + * @return boolean + */ + boolean sendDetouringSpeed(double speed); // TODO 需求暂停 待讨论 // boolean getRoutes(); @@ -384,10 +409,6 @@ public interface IAdasNetCommApi { */ void setEnableLog(boolean isEnableLog); - /** - * 绕障开关和速度相关 - */ - boolean setDetouring(int type, String value); /** * 获取与当前连接工控机兼容性 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java index 625b824321..815e0897dd 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java @@ -49,7 +49,7 @@ public enum MessageType { TYPE_SEND_RECORD_DATA_CONFIG_REQ(MessagePad.MessageType.MsgTypeRecordDataConfigReq, "数据采集配置查询"), TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP(MessagePad.MessageType.MsgTypeRecordDataConfigResp, "数据采集配置"), TYPE_SEND_SUBSCRIBE_DATA_REQ(MessagePad.MessageType.MsgTypeSubscribeDataReq, "数据订阅、取消订阅请求"), - TYPE_SEND_DETOURING_DATA_REQ(MessagePad.MessageType.MsgTypeSetParamReq, "绕障开关和阈值"), + TYPE_SEND_DETOURING_DATA_REQ(MessagePad.MessageType.MsgTypeSetParamReq, "设置参数命令"), //透传 原始pb文件中不存在以下type。由于Java中无法强转所以在mogo-adas-data message_pad.proto中放开注释 TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"); From 4ba9d30d6cce156184ace7c6667b4a1ef3591361 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 19 Oct 2022 10:46:40 +0800 Subject: [PATCH 07/12] =?UTF-8?q?[change]=20=E4=BF=AE=E6=94=B9type?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zhidao/support/adas/high/AdasChannel.java | 2 +- .../java/com/zhidao/support/adas/high/common/MessageType.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index b0881d57ca..7cc6b39a61 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -1239,7 +1239,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec .newBuilder() .addReqs(oneParam) .build(); - return sendPBMessage(MessageType.TYPE_SEND_DETOURING_DATA_REQ.typeCode, req.toByteArray()); + return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ.typeCode, req.toByteArray()); } /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java index 815e0897dd..98e5343365 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java @@ -49,7 +49,7 @@ public enum MessageType { TYPE_SEND_RECORD_DATA_CONFIG_REQ(MessagePad.MessageType.MsgTypeRecordDataConfigReq, "数据采集配置查询"), TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP(MessagePad.MessageType.MsgTypeRecordDataConfigResp, "数据采集配置"), TYPE_SEND_SUBSCRIBE_DATA_REQ(MessagePad.MessageType.MsgTypeSubscribeDataReq, "数据订阅、取消订阅请求"), - TYPE_SEND_DETOURING_DATA_REQ(MessagePad.MessageType.MsgTypeSetParamReq, "设置参数命令"), + TYPE_SEND_SET_PARAM_REQ(MessagePad.MessageType.MsgTypeSetParamReq, "设置参数命令"), //透传 原始pb文件中不存在以下type。由于Java中无法强转所以在mogo-adas-data message_pad.proto中放开注释 TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"); From 27bf4fe7be48987f5ad5995a1fb8d874a085c80c Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Thu, 20 Oct 2022 11:43:22 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=96=E5=B1=8F?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=9A=84pb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo-adas-data/src/main/proto/message_pad.proto | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 95144e2943..f6a2111885 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -51,6 +51,7 @@ enum MessageType MsgTypeSubscribeDataReq = 0x10117; //数据订阅、取消订阅请求 MsgTypeSpecialVehicleTaskCmd = 0x10118; //特种车辆命令 MsgTypeSetParamReq = 0x10119; //设置参数命令 + MsgTypeTripInfoEvent = 0x1011a; //行程信息 } message Header @@ -484,3 +485,14 @@ message SetParamReq repeated SetOneParam reqs = 1; } +//message definition for MsgTypeTripInfoEvent +message TripInfoEvent +{ + uint32 type = 1; //事件类型, 1:行程开始, 2:出站, 3:进站, 4:城市占道施工预警 + string lineName = 2; //路线名, for type 1 + string stopName = 3; //站点名, for type 2, 3 + bool isLastStop = 4; //是否最终站, for type 2, 3 +} + + + From db18f6947141db929dd8cc6df705e4700b64acc7 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 20 Oct 2022 18:00:28 +0800 Subject: [PATCH 09/12] =?UTF-8?q?SOP=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotProvider.kt | 23 ++ .../function/hmi/ui/setting/SOPSettingView.kt | 159 ++++++++++++++ .../src/main/res/drawable-xxhdpi/icon_add.png | Bin 0 -> 387 bytes .../main/res/drawable-xxhdpi/icon_reduce.png | Bin 0 -> 302 bytes .../src/main/res/layout/view_sop_setting.xml | 196 ++++++++++++++++++ .../core/function/obu/mogo/MoGoObuProvider.kt | 7 + .../obu/mogo/MogoPrivateObuManager.kt | 8 + .../core/data/config/FunctionBuildConfig.kt | 16 ++ .../api/autopilot/IMoGoAutopilotProvider.kt | 15 ++ .../core/function/api/obu/IMoGoObuProvider.kt | 3 + .../call/autopilot/CallerAutoPilotManager.kt | 19 ++ .../function/call/obu/CallerOBUManager.kt | 15 ++ 12 files changed, 461 insertions(+) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_add.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_reduce.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index 1368eae5ec..02e192cb3c 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -496,6 +496,29 @@ class MoGoAutopilotProvider : } } + /** + * 绕障类功能开关 + * isEnable = true 开启 + * isEnable = false 关闭 + * @return boolean + */ + override fun sendDetouring(isEnable: Boolean): Boolean { + return if(isEnable){ + AdasManager.getInstance().sendDetouring(1) + }else{ + AdasManager.getInstance().sendDetouring(0) + } + } + + /** + * 变道绕障的目标障碍物速度阈值 + * @param speed 速度阈值 m/s + * @return boolean + */ + override fun sendDetouringSpeed(speed: Double): Boolean { + return AdasManager.getInstance().sendDetouringSpeed(speed) + } + /** * 获取数据采集录制模式配置列表 */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt new file mode 100644 index 0000000000..a9cb80c07c --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -0,0 +1,159 @@ +package com.mogo.eagle.core.function.hmi.ui.setting + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.config.HmiBuildConfig +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.call.obu.CallerOBUManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.module.service.routeoverlay.RouteStrategy +import kotlinx.android.synthetic.main.view_sop_setting.view.* + +/** + * SOP设置窗口 + */ +class SOPSettingView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr){ + + init { + LayoutInflater.from(context).inflate(R.layout.view_sop_setting, this, true) + initView() + } + + private fun initView() { + //绕障类功能开关 + tbObstacleAvoidance.isChecked = FunctionBuildConfig.isDetouring + tbObstacleAvoidance.setOnCheckedChangeListener { _, isChecked -> + CallerAutoPilotManager.sendDetouring(isChecked) + FunctionBuildConfig.isDetouring = isChecked + } + + //危险障碍物颜色标记开关 + tbMarkingObstacles.setOnCheckedChangeListener { _, isChecked -> + + } + + //引导线动态效果 + tbRouteDynamicEffect.isChecked = + AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) && !AppIdentityModeUtils.isBus( + FunctionBuildConfig.appIdentityMode + ) + tbRouteDynamicEffect.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + RouteStrategy.enable(true) + } else { + RouteStrategy.enable(false) + } + } + + //红绿灯标识 + tbTrafficLight.isChecked = HmiBuildConfig.isShowTrafficLightView + tbTrafficLight.setOnCheckedChangeListener { _, isChecked -> + if(!isChecked){ + HmiBuildConfig.isShowTrafficLightView = false + }else{ + HmiBuildConfig.isShowTrafficLightView = true + CallerHmiManager.disableWarningTrafficLight() + } + } + + //限速标识 + tbSpeedLimit.isChecked = HmiBuildConfig.isShowLimitingVelocityView + tbSpeedLimit.setOnCheckedChangeListener { _, isChecked -> + if(isChecked){ + HmiBuildConfig.isShowLimitingVelocityView = true + }else{ + HmiBuildConfig.isShowLimitingVelocityView = false + CallerHmiManager.disableLimitingVelocity() + } + } + + //自车感知到的他车碰撞预警 + tbCollisionWarning.setOnCheckedChangeListener { buttonView, isChecked -> + + } + + // 演示模式,上一次勾选的数据 + tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode + // 演示模式 + tbDemoMode.setOnCheckedChangeListener { _, isChecked -> + CallerAutoPilotManager.setDemoMode(isChecked) + if (!isChecked) { + //关闭美化模式时,通知工控机 + CallerAutoPilotManager.setIPCDemoMode(isChecked) + } + FunctionBuildConfig.isDemoMode = isChecked + } + //只在司机端设置美化模式开关功能 + if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { + tbDemoMode.visibility = View.GONE + } + + + // 雨天模式,上一次勾选的数据 + tbRainMode.isChecked = FunctionBuildConfig.isRainMode + //雨天模式 + tbRainMode.setOnCheckedChangeListener { _, isChecked -> + CallerAutoPilotManager.setRainMode(isChecked) + FunctionBuildConfig.isRainMode = isChecked + } + //雨天模式按钮只在司机屏生效,乘客屏不显示 + if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { + tbRainMode.visibility = View.GONE + } + + //OBU控制总开关 + tbObu.isChecked = CallerOBUManager.isConnected() + tbObu.setOnCheckedChangeListener { _, isChecked -> + if(!isChecked){ + if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){ + CallerOBUManager.resetObuIpAddress("192.168.1.199") + }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + CallerOBUManager.resetObuIpAddress("192.168.8.199") + } + }else{ + //断开链接 + CallerOBUManager.disConnectObu() + } + } + + //变道绕障的目标障碍物速度阈值 + tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" + ivSpeedReduce.setOnClickListener { + if(FunctionBuildConfig.detouringSpeed<=0){ + ToastUtils.showShort("阈值小可为0 m/s") + }else{ + FunctionBuildConfig.detouringSpeed-- + tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" + } + } + ivSpeedAdd.setOnClickListener { + if(FunctionBuildConfig.detouringSpeed>=7){ + ToastUtils.showShort("阈值最大可为7 m/s") + }else{ + FunctionBuildConfig.detouringSpeed++ + tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" + } + } + btnSpeedSet.setOnClickListener { + val isSuccess = CallerAutoPilotManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) + if(isSuccess == true){ + ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功") + }else{ + ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败") + } + } + + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_add.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_add.png new file mode 100644 index 0000000000000000000000000000000000000000..429d1196be1f24b7497827644df0ac5cf0b6ed9e GIT binary patch literal 387 zcmV-}0et?6P)Nkl19vEUu_z5wPGoI~$0!Ya@a#E@wqyRIXxdSJ6zQp%s^pq&G{P(Zq zeR5IbqcmQ>5C8`>t^ix0aRYD&rfq?UI2(rHu9WiCb=^nb_pcdl%oN~R((ShBjqR(} z1Q@0T+fHdl%A#Z85rF_WV4?t9fHQzYFy%l_S(L8;pFwf}L5L(s6ov(WAz%m?`cnWJ zga#|6!HBq&bT4U~*EEj0Xq~0Oh zqwR6tJ7xt~s%T&c7y^cXAz%m?0)~DSfCiz#N@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +