From 3d23a1fd59383729bd666be94080923fcd2a8629 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Tue, 9 May 2023 14:59:00 +0800 Subject: [PATCH 1/5] =?UTF-8?q?[dev=5Fsweeper=5F3.1.0]=20WebSocket?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/adas/high/socket/FpgaSocket.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java index 5655f47219..c1ee801deb 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java @@ -188,6 +188,7 @@ public class FpgaSocket implements IWebSocket { void onWebSocketConnectFailed(String t); void onMessage(String message); + //TODO 计算耗时 临时测试 void onMessage(long receiveTime, ByteString bytes) throws InvalidProtocolBufferException; } @@ -366,14 +367,16 @@ public class FpgaSocket implements IWebSocket { */ private void close(boolean isInitiative, int code) { isConnected.set(false); - String closeReason = null; - if (isInitiative) { - closeReason = "用户主动关闭"; - } - boolean isClose = mWebSocket.close(code, closeReason); - CupidLogUtils.i(TAG, "WebSocket " + (isInitiative ? "主动" : "被动") + "断开连接是否成功= " + isClose); - if (!isInitiative) { - mWebSocket.cancel(); + if (mWebSocket != null) { + String closeReason = null; + if (isInitiative) { + closeReason = "用户主动关闭"; + } + boolean isClose = mWebSocket.close(code, closeReason); + CupidLogUtils.i(TAG, "WebSocket " + (isInitiative ? "主动" : "被动") + "断开连接是否成功= " + isClose); + if (!isInitiative) { + mWebSocket.cancel(); + } } mWebSocket = null; } From 9f47d1ed6b2e078be8821ec9976c7eabfb768609 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Tue, 9 May 2023 15:20:18 +0800 Subject: [PATCH 2/5] =?UTF-8?q?[adas]=20=E6=B7=BB=E5=8A=A0M1=E6=8B=BC?= =?UTF-8?q?=E6=8E=A5=E8=A7=86=E9=A2=91=E6=8E=A5=E6=94=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/proto/message_pad.proto | 4 +++ .../support/adas/high/OnAdasListener.java | 13 ++++++++ .../support/adas/high/common/MessageType.java | 1 + .../adas/high/msg/BackCameraVideoMessage.java | 2 +- .../adas/high/msg/M1StitchedVideoMessage.java | 33 +++++++++++++++++++ .../adas/high/msg/MyMessageFactory.java | 9 ++++- 6 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/M1StitchedVideoMessage.java 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 675d7b66ce..631aee93b6 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -31,6 +31,7 @@ enum MessageType MsgTypeChassisStates = 0x1000b; //重构后的底盘状态, 透传 MsgTypeFunctionStates = 0x1000c; //重构后的功能状态, 透传 MsgTypeBackCameraVideo = 0x1000d; //清扫车后部摄像头视频 10hz + MsgTypeM1StitchedVideo = 0x1000e; //m1拼接视频 10hz MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求 MsgTypeBasicInfoResp = 0x10101; //自动驾驶设备基础信息应答 @@ -646,6 +647,9 @@ message PlanningCmd //message definition for MsgTypeBackCameraVideo //payload:jpeg data +//message definition for MsgTypeM1StitchedVideo +//payload:jpeg data + //message definition for MsgTypeV2nCongestionEvent //refer to RSI_PB in mogo_v2x.proto for details diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index 77c63a0bfe..6e0e3d6460 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -4,6 +4,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.mogo.support.obu.ObuScene; +import com.zhidao.support.adas.high.common.MessageType; import com.zhidao.support.adas.high.common.ProtocolStatus; import com.zhjt.mogo.adas.data.bean.AutopilotStatistics; import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask; @@ -357,6 +358,18 @@ public interface OnAdasListener { */ void onBagManagerCmd(MessagePad.Header header, BagManagerOuterClass.BagManager bagManager); + /** + * M1拼接视频 10Hz + * 此接口需要订阅,默认不发送数据 + * 订阅调用:{@link AdasManager#subscribeInterface(int, int, MessageType)} + * 订阅参数:AdasManager.getInstance().subscribeInterface(Constants.TERMINAL_ROLE.DRIVER, Constants.SUBSCRIBE_TYPE.SUBSCRIBE, MessageType。TYPE_RECEIVE_M1_STITCHED_VIDEO); + * 取消订阅参数:AdasManager.getInstance().subscribeInterface(Constants.TERMINAL_ROLE.DRIVER, Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE, MessageType。TYPE_RECEIVE_M1_STITCHED_VIDEO); + * + * @param header 头 + * @param data 数据 + */ + void onM1StitchedVideo(@NonNull MessagePad.Header header, @NonNull byte[] data); + /** * 是否有能力启动自动驾驶 * 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 962a36e698..784c9f22a0 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 @@ -26,6 +26,7 @@ public enum MessageType { TYPE_RECEIVE_CHASSIS_STATES(MessagePad.MessageType.MsgTypeChassisStates, "底盘状态"), TYPE_RECEIVE_FUNCTION_STATES(MessagePad.MessageType.MsgTypeFunctionStates, "重构后功能状态"), TYPE_RECEIVE_BACK_CAMERA_VIDEO(MessagePad.MessageType.MsgTypeBackCameraVideo, "清扫车后摄像头"), + TYPE_RECEIVE_M1_STITCHED_VIDEO(MessagePad.MessageType.MsgTypeM1StitchedVideo, "M1拼接视频"), TYPE_RECEIVE_BASIC_INFO_REQ(MessagePad.MessageType.MsgTypeBasicInfoReq, "自动驾驶设备基础信息请求"), TYPE_SEND_BASIC_INFO_RESP(MessagePad.MessageType.MsgTypeBasicInfoResp, "自动驾驶设备基础信息应答"), diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BackCameraVideoMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BackCameraVideoMessage.java index 835597daff..e14eaf9671 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BackCameraVideoMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BackCameraVideoMessage.java @@ -9,7 +9,7 @@ import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; /** - * 清扫车后摄像头 + * 清扫车后摄像头 10Hz */ public class BackCameraVideoMessage extends MyAbstractMessageHandler { diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/M1StitchedVideoMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/M1StitchedVideoMessage.java new file mode 100644 index 0000000000..32908a8593 --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/M1StitchedVideoMessage.java @@ -0,0 +1,33 @@ +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; + +/** + * M1拼接视频 10Hz + */ +public class M1StitchedVideoMessage extends MyAbstractMessageHandler { + + public M1StitchedVideoMessage() { + } + + @Override + public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { + int len = raw.getPackageLengthValue() - raw.getOffsetValue(); + byte[] data = new byte[len]; + System.arraycopy(raw.originalData.toByteArray(), raw.getOffsetValue(), data, 0, len); + AdasChannel.calculateTimeConsumingOnDispatchRaw("M1StitchedVideoMessage", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); + if (adasListener != null) { + adasListener.onM1StitchedVideo(raw.getHeader(), data); + } + AdasChannel.calculateTimeConsumingBusiness("M1StitchedVideoMessage", nowTime); + } +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java index 1cc9cb3744..1cb5b0dc9c 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java @@ -39,6 +39,7 @@ public class MyMessageFactory implements IMyMessageFactory { private IMsg backCameraVideoMessage;//清扫车后摄像头 private IMsg pointCloudMessage;//3D点云 private IMsg sweeperCloudTaskMessage;//云控下发清扫车任务指令 + private IMsg m1StitchedVideoMessage;//M1拼接视频 private final AutopilotReview autopilotReview; @@ -204,7 +205,13 @@ public class MyMessageFactory implements IMyMessageFactory { sweeperCloudTaskMessage = new SweeperCloudTaskMessage(); } return sweeperCloudTaskMessage; - } else { + } else if (messageType == MessageType.TYPE_RECEIVE_M1_STITCHED_VIDEO.typeCode) { + //清扫车后摄像头 + if (m1StitchedVideoMessage == null) { + m1StitchedVideoMessage = new M1StitchedVideoMessage(); + } + return m1StitchedVideoMessage; + } else { //MessageType.TYPE_DEFAULT.typeCode return null; } From bb22ec10d5be1d2a8e2023d68a0f1828082986c0 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Tue, 9 May 2023 15:33:08 +0800 Subject: [PATCH 3/5] =?UTF-8?q?[m1]=20=E6=B7=BB=E5=8A=A0M1=E6=8B=BC?= =?UTF-8?q?=E6=8E=A5=E8=A7=86=E9=A2=91=E6=95=B0=E6=8D=AE=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=81=E6=B8=85=E6=89=AB=E8=BD=A6=E6=91=84?= =?UTF-8?q?=E5=83=8F=E5=A4=B4View=E5=92=8CM1=E6=91=84=E5=83=8F=E5=A4=B4Vie?= =?UTF-8?q?w=E5=85=B1=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/sweeper_base_fragment.xml | 2 +- .../autopilot/MoGoAutopilotControlProvider.kt | 16 ++++++++ .../autopilot/adapter/MoGoAdasListenerImpl.kt | 14 +++++++ ...eeperVideoView.java => MogoVideoView.java} | 37 +++++++++++++------ .../IMoGoAutopilotControlProvider.kt | 6 +++ ...MoGoRoboBusJinlvM1StitchedVideoListener.kt | 11 ++++++ .../CallerAutoPilotControlManager.kt | 8 ++++ ...oBusJinlvM1StitchedVideoListenerManager.kt | 20 ++++++++++ ...perFutianBackCameraVideoListenerManager.kt | 3 -- 9 files changed, 102 insertions(+), 15 deletions(-) rename core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/{SweeperVideoView.java => MogoVideoView.java} (65%) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoRoboBusJinlvM1StitchedVideoListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerRoboBusJinlvM1StitchedVideoListenerManager.kt diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml index d9833a54ed..548ae4505e 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml @@ -100,7 +100,7 @@ android:layout_marginTop="@dimen/dp_27" app:roundLayoutRadius="@dimen/dp_16" > - target = new CustomTarget() { @@ -60,7 +65,7 @@ public class SweeperVideoView extends AppCompatImageView implements IMoGoSweeper public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { //回调内容 if (!resource.isRecycled()) { - SweeperVideoView.this.setImageBitmap(resource); + MogoVideoView.this.setImageBitmap(resource); } } @@ -70,18 +75,28 @@ public class SweeperVideoView extends AppCompatImageView implements IMoGoSweeper } }; - @Override - public void onSweeperFutianBackCameraVideo(@NonNull byte[] data) { + private void draw(@NonNull byte[] data) { ThreadUtils.runOnUiThread(new Runnable() { @Override public void run() { - GlideApp.with(SweeperVideoView.this) + GlideApp.with(MogoVideoView.this) .asBitmap() .load(data) - .placeholder(SweeperVideoView.this.getDrawable()) + .placeholder(MogoVideoView.this.getDrawable()) .apply(requestOptions) .into(target); } }); } + + @Override + public void onSweeperFutianBackCameraVideo(@NonNull byte[] data) { + draw(data); + } + + @Override + public void onRoboBusJinlvM1StitchedVideo(@NonNull byte[] data) { + draw(data); + } + } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt index 03509c9813..6292b53abc 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt @@ -367,6 +367,12 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { */ fun setIsDrawPointCloud(isDrawPointCloud: Boolean) + /** + * 设置M1拼接视频接口订阅 + * @param isSubscribe 是否订阅 + */ + fun setIsSubscribeM1StitchedVideo(isSubscribe: Boolean) + fun sendRoboBusJinlvM1FrontDoorCmd(switchCmd: Int): Boolean fun sendRoboBusJinlvM1AirConditionerCmd( diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoRoboBusJinlvM1StitchedVideoListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoRoboBusJinlvM1StitchedVideoListener.kt new file mode 100644 index 0000000000..701b364821 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoRoboBusJinlvM1StitchedVideoListener.kt @@ -0,0 +1,11 @@ +package com.mogo.eagle.core.function.api.autopilot + +/** + * M1拼接视频 10Hz + */ +interface IMoGoRoboBusJinlvM1StitchedVideoListener { + /** + * 金旅M1拼接视频数据 10Hz 每一帧为一张图片 + */ + fun onRoboBusJinlvM1StitchedVideo(data: ByteArray) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 02d52f2a61..ac9d0f4e5d 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -511,6 +511,14 @@ object CallerAutoPilotControlManager { providerApi?.setIsDrawPointCloud(isDrawPointCloud) } + /** + * 设置M1拼接视频接口订阅 + * @param isSubscribe 是否订阅 + */ + fun setIsSubscribeM1StitchedVideo(isSubscribe: Boolean) { + providerApi?.setIsSubscribeM1StitchedVideo(isSubscribe) + } + fun sendRoboBusJinlvM1FrontDoorCmd(switchCmd: Int): Boolean { return providerApi?.sendRoboBusJinlvM1FrontDoorCmd(switchCmd) ?: false } diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerRoboBusJinlvM1StitchedVideoListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerRoboBusJinlvM1StitchedVideoListenerManager.kt new file mode 100644 index 0000000000..7b40b6ffb5 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerRoboBusJinlvM1StitchedVideoListenerManager.kt @@ -0,0 +1,20 @@ +package com.mogo.eagle.core.function.call.autopilot + +import com.mogo.eagle.core.function.api.autopilot.IMoGoRoboBusJinlvM1StitchedVideoListener +import com.mogo.eagle.core.function.call.base.CallerBase + +/** + * 清扫车(福田)后摄像头视频数据 + */ +object CallerRoboBusJinlvM1StitchedVideoListenerManager : CallerBase() { + + /** + * 后摄像头视频数据 + */ + fun invokeRoboBusJinlvM1StitchedVideo(data: ByteArray) { + M_LISTENERS.forEach { + val listener = it.value + listener.onRoboBusJinlvM1StitchedVideo(data) + } + } +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerSweeperFutianBackCameraVideoListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerSweeperFutianBackCameraVideoListenerManager.kt index 95d2dde9e8..ecf3d4dbff 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerSweeperFutianBackCameraVideoListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerSweeperFutianBackCameraVideoListenerManager.kt @@ -1,9 +1,6 @@ package com.mogo.eagle.core.function.call.autopilot -import chassis.ChassisStatesOuterClass -import chassis.VehicleStateOuterClass import com.mogo.eagle.core.function.api.autopilot.IMoGoSweeperFutianBackCameraVideoListener -import com.mogo.eagle.core.function.api.autopilot.IMoGoSweeperFutianCleanSystemListener import com.mogo.eagle.core.function.call.base.CallerBase /** From f0467b6f15f0701974d2c0440a09851715528cde Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Tue, 9 May 2023 18:09:51 +0800 Subject: [PATCH 4/5] =?UTF-8?q?[m1]=20M1=E6=8B=BC=E6=8E=A5=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3=E5=92=8C=E6=B8=85?= =?UTF-8?q?=E6=89=AB=E8=BD=A6=E6=91=84=E5=83=8F=E5=A4=B4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=81=97=E6=BC=8F=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/hmi/ui/widget/MogoVideoView.java | 2 +- .../function/call/autopilot/CallerAutoPilotControlManager.kt | 2 +- .../main/java/com/zhidao/support/adas/high/AdasChannel.java | 2 ++ .../com/zhidao/support/adas/high/common/MessageType.java | 5 ++++- .../support/adas/high/subscribe/SubscribeInterface.java | 3 ++- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/MogoVideoView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/MogoVideoView.java index 6c8b01a1e0..492a90e6a7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/MogoVideoView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/MogoVideoView.java @@ -24,7 +24,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils; /** * 清扫车摄像头展示View 10Hz - * M1拼接视频展示View 10Hz 需要订阅此数据:CallerAutoPilotControlManager.setIsSubscribeM1StitchedVideo(isSubscribe) + * M1拼接视频展示View 10Hz 需要订阅(连接成功后订阅才生效):CallerAutoPilotControlManager.setIsSubscribeM1StitchedVideo(isSubscribe) */ public class MogoVideoView extends AppCompatImageView implements IMoGoSweeperFutianBackCameraVideoListener, IMoGoRoboBusJinlvM1StitchedVideoListener { private static final String TAG = MogoVideoView.class.getSimpleName(); diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index ac9d0f4e5d..c2e55dd28e 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -512,7 +512,7 @@ object CallerAutoPilotControlManager { } /** - * 设置M1拼接视频接口订阅 + * 设置M1拼接视频接口订阅(连接成功后订阅才生效) * @param isSubscribe 是否订阅 */ fun setIsSubscribeM1StitchedVideo(isSubscribe: Boolean) { 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 554c2e6774..a3311dccab 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 @@ -259,6 +259,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec // dispatchHandlers.put(MessagePad.MessageType.MsgTypePlanningDecisionState, new DispatchHandler(MessagePad.MessageType.MsgTypePlanningDecisionState, this)); //清扫车后摄像头数据 dispatchHandlers.put(MessagePad.MessageType.MsgTypeBackCameraVideo, new DispatchHandler(MessagePad.MessageType.MsgTypeBackCameraVideo, this)); + //M1拼接视频 + dispatchHandlers.put(MessagePad.MessageType.MsgTypeM1StitchedVideo, new DispatchHandler(MessagePad.MessageType.MsgTypeM1StitchedVideo, this)); } /** 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 784c9f22a0..4d8477a1e4 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 @@ -4,7 +4,10 @@ import mogo.telematics.pad.MessagePad; /** * 工控机发送或接收的类型 - * 工控机接收接口必须包含TYPE_RECEIVE + * 工控机接收接口必须包含:TYPE_RECEIVE + * 目前收发相同的Type: + * * MessagePad.MessageType.MsgTypeBagManagerCmd + * * MessagePad.MessageType.MsgTypeTaskCmd * * @author nie yunlong * @description 请求值 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterface.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterface.java index 5ad742be4f..37d22f46a4 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterface.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterface.java @@ -138,7 +138,8 @@ public class SubscribeInterface { MessageType[] types = MessageType.values(); if (types.length > 0) { for (MessageType messageType : types) { - if (messageType.name().toLowerCase().contains("type_receive")) { + //连接成功后只有M1拼接视频接收接口默认不进行订阅,其他接收接口默认自动订阅 + if (messageType != MessageType.TYPE_RECEIVE_M1_STITCHED_VIDEO && messageType.name().toLowerCase().contains("type_receive")) { subscribedInterface.put(messageType, messageType.typeCode.getNumber()); } } From 22eba9793dafa2357041af2444a806b90a72d8e2 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 10 May 2023 10:51:32 +0800 Subject: [PATCH 5/5] =?UTF-8?q?[adas]=20=E5=A2=9E=E5=BC=BA=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=81=A5=E5=A3=AE=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zhidao/support/adas/high/socket/FpgaSocket.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java index c1ee801deb..c88cc87547 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java @@ -365,7 +365,7 @@ public class FpgaSocket implements IWebSocket { * @param isInitiative 是否是主动断开 * @param code code */ - private void close(boolean isInitiative, int code) { + private synchronized void close(boolean isInitiative, int code) { isConnected.set(false); if (mWebSocket != null) { String closeReason = null;