(mPresenter);
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ BackCameraFloatWindow mPresenter = mObjects.get();
+ if (mPresenter != null)
+ mPresenter.handleMessage(msg);
+ }
+ }
+
+}
diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java
index 9f355337f5..254347a1db 100644
--- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java
+++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java
@@ -32,6 +32,7 @@ public class InfoFragment extends BaseFragment {
private DataShowAdapter adapter;
private TextView tvTitle;
private String subTitle;
+ private BackCameraFloatWindow backCameraFloatWindow;
public InfoFragment() {
}
@@ -65,6 +66,27 @@ public class InfoFragment extends BaseFragment {
}
}
+ @Override
+ public void onPause() {
+ super.onPause();
+ hideFloatWindow();
+ }
+
+ @Override
+ public void onHiddenChanged(boolean hidden) {
+ super.onHiddenChanged(hidden);
+ if (hidden) {
+ hideFloatWindow();
+ }
+ }
+
+ private void hideFloatWindow() {
+ if (backCameraFloatWindow != null) {
+ backCameraFloatWindow.hideFloatWindow();
+ backCameraFloatWindow = null;
+ }
+ }
+
private void initView(View view) {
tvTitle = view.findViewById(R.id.tv_title);
RecyclerView rvInfo = view.findViewById(R.id.rv_info);
@@ -76,6 +98,23 @@ public class InfoFragment extends BaseFragment {
subTitle = null;
}
tvTitle.setGravity(Gravity.CENTER);
+ if (Constants.TITLE.RECEIVE_BACK_CAMERA_VIDEO.equals(title)) {
+ Button button = view.findViewById(R.id.btn_render);
+ button.setVisibility(View.VISIBLE);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (backCameraFloatWindow == null) {
+ backCameraFloatWindow = new BackCameraFloatWindow(getActivity());
+ final int[] location = new int[2];
+ button.getLocationOnScreen(location);
+ backCameraFloatWindow.showFloatWindow(location[1]);
+ } else {
+ hideFloatWindow();
+ }
+ }
+ });
+ }
//创建默认的线性LayoutManager 横向的GridLayoutManager
MyLinearLayoutManager linearLayoutManager = new MyLinearLayoutManager(this.getContext());
// linearLayoutManager.setStackFromEnd(true);//列表再底部开始展示,反转后由上面开始展示
@@ -164,6 +203,8 @@ public class InfoFragment extends BaseFragment {
adapter.setData(DataDistribution.getInstance().listPlanningDecisionState);
} else if (Constants.TITLE.RECEIVE_FUNCTION_STATES.equals(title)) {
adapter.setData(DataDistribution.getInstance().listFSMFunctionStates);
+ } else if (Constants.TITLE.RECEIVE_BACK_CAMERA_VIDEO.equals(title)) {
+ adapter.setData(DataDistribution.getInstance().listBackCameraVideo);
} else if (Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA.equals(title)) {
adapter.setData(DataDistribution.getInstance().listRoboSweeperTaskIndex);
} else {
@@ -199,4 +240,10 @@ public class InfoFragment extends BaseFragment {
adapter.refreshView();
}
}
+
+ public void onBackCameraVideo(byte[] data) {
+ if (backCameraFloatWindow != null) {
+ backCameraFloatWindow.onBackCameraVideo(data);
+ }
+ }
}
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 6e2cd0d297..ff9b538ff3 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
@@ -57,8 +57,8 @@ import com.zhidao.adas.client.bean.ObuMap;
import com.zhidao.adas.client.bean.ObuRsi;
import com.zhidao.adas.client.bean.ObuRsm;
import com.zhidao.adas.client.bean.ObuSpat;
-import com.zhidao.adas.client.bean.OriginalPointCloudData;
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
+import com.zhidao.adas.client.bean.ReceiveBytesData;
import com.zhidao.adas.client.bean.ReceiveData;
import com.zhidao.adas.client.bean.SpecialVehicleBean;
import com.zhidao.adas.client.log.ConnectStatusSave;
@@ -80,6 +80,8 @@ import com.zhidao.support.adas.high.common.ProtocolStatus;
import com.zhidao.support.adas.high.common.ReceiveTimeoutManager;
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
+import org.jetbrains.annotations.NotNull;
+
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
@@ -642,6 +644,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_RSM);
titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_MAP);
titleFragmentData.add(Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA);
+ titleFragmentData.add(Constants.TITLE.RECEIVE_BACK_CAMERA_VIDEO);
titleFragmentData.add(Constants.TITLE.RECEIVE_WARN);
titleFragmentData.add(Constants.TITLE.RECEIVE_ERROR);
@@ -917,25 +920,31 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
//// LogSave.getInstance().saveLog("转换数据=" + data);
// }
+ // @Override
+// public void onPointCloud(byte[] pointCloud) {
+//// try {
+//// MogoPointCloudOuterClass.MogoPointCloud pointCloud1 = MogoPointCloudOuterClass.MogoPointCloud.parseFrom(pointCloud);
+//// HeaderOuterClass.Time time = pointCloud1.getHeader().getStamp();
+//// int s = time.getSec();
+//// int ns = time.getNsec();
+//// long t = (long) (s * 1000L) + (long) (ns / 1000000.d);
+//// Log.i(TAG, "PointCloud=" + sdf.format(new Date(t)));
+//// } catch (InvalidProtocolBufferException e) {
+//// e.printStackTrace();
+//// }
+//// try {
+//// MogoPointCloudOuterClass.MogoPointCloud bean = MogoPointCloudOuterClass.MogoPointCloud.parseFrom(pointCloud);
+//// Log.i("ddd","MogoPointCloud="+ TextFormat.printer().escapingNonAscii(false).printToString(bean));
+//// } catch (InvalidProtocolBufferException e) {
+//// e.printStackTrace();
+//// }
+// ReceiveBytesData base = new ReceiveBytesData(null, pointCloud, sdf);
+// DataDistribution.getInstance().addData(base);
+// }
+//
@Override
- public void onPointCloud(byte[] pointCloud) {
-// try {
-// MogoPointCloudOuterClass.MogoPointCloud pointCloud1 = MogoPointCloudOuterClass.MogoPointCloud.parseFrom(pointCloud);
-// HeaderOuterClass.Time time = pointCloud1.getHeader().getStamp();
-// int s = time.getSec();
-// int ns = time.getNsec();
-// long t = (long) (s * 1000L) + (long) (ns / 1000000.d);
-// Log.i(TAG, "PointCloud=" + sdf.format(new Date(t)));
-// } catch (InvalidProtocolBufferException e) {
-// e.printStackTrace();
-// }
-// try {
-// MogoPointCloudOuterClass.MogoPointCloud bean = MogoPointCloudOuterClass.MogoPointCloud.parseFrom(pointCloud);
-// Log.i("ddd","MogoPointCloud="+ TextFormat.printer().escapingNonAscii(false).printToString(bean));
-// } catch (InvalidProtocolBufferException e) {
-// e.printStackTrace();
-// }
- OriginalPointCloudData base = new OriginalPointCloudData(pointCloud);
+ public void onPointCloud(MessagePad.Header header, byte[] pointCloud) {
+ ReceiveBytesData base = new ReceiveBytesData(header, pointCloud, sdf);
DataDistribution.getInstance().addData(base);
}
@@ -1039,6 +1048,16 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
DataDistribution.getInstance().addData(base);
}
+ @Override
+ public void onBackCameraVideo(@NotNull MessagePad.Header header, @NotNull byte[] data) {
+ if (fromFragment instanceof InfoFragment) {
+ InfoFragment fragment = (InfoFragment) fromFragment;
+ fragment.onBackCameraVideo(data);
+ }
+ ReceiveBytesData base = new ReceiveBytesData(header, data, sdf);
+ DataDistribution.getInstance().addData(base);
+ }
+
@Override
public void onSweeperTaskIndexData(MessagePad.Header header, RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex) {
ReceiveData base = new ReceiveData(header, roboSweeperTaskIndex, sdf);
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 f13f2de4e5..29c5db7fcb 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
@@ -154,6 +154,7 @@ public class Constants {
String RECEIVE_CHASSIS_STATES = MessageType.TYPE_RECEIVE_CHASSIS_STATES.desc;
String RECEIVE_AUTOPILOT_STATE = MessageType.TYPE_RECEIVE_AUTOPILOT_STATE.desc;
String RECEIVE_FUNCTION_STATES = MessageType.TYPE_RECEIVE_FUNCTION_STATES.desc;
+ String RECEIVE_BACK_CAMERA_VIDEO = MessageType.TYPE_RECEIVE_BACK_CAMERA_VIDEO.desc;
String RECEIVE_REPORT_MESSAGE = MessageType.TYPE_RECEIVE_REPORT_MESSAGE.desc;
String RECEIVE_PERCEPTION_TRAFFIC_LIGHT = MessageType.TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT.desc;
String RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY = MessageType.TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY.desc;
diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/BlurTransformation.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/BlurTransformation.java
new file mode 100644
index 0000000000..d224c9800f
--- /dev/null
+++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/BlurTransformation.java
@@ -0,0 +1,99 @@
+package com.zhidao.adas.client.utils.image;
+
+
+/**
+ * Copyright (C) 2018 Wasabeef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
+import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
+
+import java.security.MessageDigest;
+
+/**
+ * 高斯模糊
+ */
+public class BlurTransformation extends BitmapTransformation {
+
+ private static final int VERSION = 1;
+ private static final String ID ="com.zhidao.adas.client.utils.image.BlurTransformation." + VERSION;
+ private static int MAX_RADIUS = 25;
+ private static int DEFAULT_DOWN_SAMPLING = 1;
+
+ private int radius;
+ private int sampling;
+
+ public BlurTransformation() {
+ this(MAX_RADIUS, DEFAULT_DOWN_SAMPLING);
+ }
+
+
+ public BlurTransformation(int radius) {
+ this(radius, DEFAULT_DOWN_SAMPLING);
+ }
+
+ public BlurTransformation(int radius, int sampling) {
+ this.radius = radius;
+ this.sampling = sampling;
+ }
+
+ @Override
+ public String toString() {
+ return "BlurTransformation(radius=" + radius + ", sampling=" + sampling + ")";
+ }
+
+ @Override
+ protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
+ int width = toTransform.getWidth();
+ int height = toTransform.getHeight();
+ int scaledWidth = width / sampling;
+ int scaledHeight = height / sampling;
+
+ Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_4444);
+
+ Canvas canvas = new Canvas(bitmap);
+ canvas.scale(1 / (float) sampling, 1 / (float) sampling);
+ Paint paint = new Paint();
+ paint.setFlags(Paint.FILTER_BITMAP_FLAG);
+ canvas.drawBitmap(toTransform, 0, 0, paint);
+
+ bitmap = FastBlur.blur(bitmap, radius, true);
+
+ return bitmap;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof BlurTransformation &&
+ ((BlurTransformation) o).radius == radius &&
+ ((BlurTransformation) o).sampling == sampling;
+ }
+
+ @Override
+ public int hashCode() {
+ return ID.hashCode() + radius * 1000 + sampling * 10;
+ }
+
+ @Override
+ public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
+ messageDigest.update((ID + radius + sampling).getBytes(CHARSET));
+ }
+}
\ No newline at end of file
diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/FastBlur.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/FastBlur.java
new file mode 100644
index 0000000000..66028e2ecb
--- /dev/null
+++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/FastBlur.java
@@ -0,0 +1,257 @@
+package com.zhidao.adas.client.utils.image;
+
+import android.graphics.Bitmap;
+
+/**
+ * Copyright (C) 2018 Wasabeef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class FastBlur {
+
+ public static Bitmap blur(Bitmap sentBitmap, int radius, boolean canReuseInBitmap) {
+
+ // Stack Blur v1.0 from
+ // http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html
+ //
+ // Java Author: Mario Klingemann
+ // http://incubator.quasimondo.com
+ // created Feburary 29, 2004
+ // Android port : Yahel Bouaziz
+ // http://www.kayenko.com
+ // ported april 5th, 2012
+
+ // This is a compromise between Gaussian Blur and Box blur
+ // It creates much better looking blurs than Box Blur, but is
+ // 7x faster than my Gaussian Blur implementation.
+ //
+ // I called it Stack Blur because this describes best how this
+ // filter works internally: it creates a kind of moving stack
+ // of colors whilst scanning through the image. Thereby it
+ // just has to add one new block of color to the right side
+ // of the stack and remove the leftmost color. The remaining
+ // colors on the topmost layer of the stack are either added on
+ // or reduced by one, depending on if they are on the right or
+ // on the left side of the stack.
+ //
+ // If you are using this algorithm in your code please add
+ // the following line:
+ //
+ // Stack Blur Algorithm by Mario Klingemann
+
+ Bitmap bitmap;
+ if (canReuseInBitmap) {
+ bitmap = sentBitmap;
+ } else {
+ bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);
+ }
+
+ if (radius < 1) {
+ return (null);
+ }
+
+ int w = bitmap.getWidth();
+ int h = bitmap.getHeight();
+
+ int[] pix = new int[w * h];
+ bitmap.getPixels(pix, 0, w, 0, 0, w, h);
+
+ int wm = w - 1;
+ int hm = h - 1;
+ int wh = w * h;
+ int div = radius + radius + 1;
+
+ int r[] = new int[wh];
+ int g[] = new int[wh];
+ int b[] = new int[wh];
+ int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;
+ int vmin[] = new int[Math.max(w, h)];
+
+ int divsum = (div + 1) >> 1;
+ divsum *= divsum;
+ int dv[] = new int[256 * divsum];
+ for (i = 0; i < 256 * divsum; i++) {
+ dv[i] = (i / divsum);
+ }
+
+ yw = yi = 0;
+
+ int[][] stack = new int[div][3];
+ int stackpointer;
+ int stackstart;
+ int[] sir;
+ int rbs;
+ int r1 = radius + 1;
+ int routsum, goutsum, boutsum;
+ int rinsum, ginsum, binsum;
+
+ for (y = 0; y < h; y++) {
+ rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
+ for (i = -radius; i <= radius; i++) {
+ p = pix[yi + Math.min(wm, Math.max(i, 0))];
+ sir = stack[i + radius];
+ sir[0] = (p & 0xff0000) >> 16;
+ sir[1] = (p & 0x00ff00) >> 8;
+ sir[2] = (p & 0x0000ff);
+ rbs = r1 - Math.abs(i);
+ rsum += sir[0] * rbs;
+ gsum += sir[1] * rbs;
+ bsum += sir[2] * rbs;
+ if (i > 0) {
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ } else {
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ }
+ }
+ stackpointer = radius;
+
+ for (x = 0; x < w; x++) {
+
+ r[yi] = dv[rsum];
+ g[yi] = dv[gsum];
+ b[yi] = dv[bsum];
+
+ rsum -= routsum;
+ gsum -= goutsum;
+ bsum -= boutsum;
+
+ stackstart = stackpointer - radius + div;
+ sir = stack[stackstart % div];
+
+ routsum -= sir[0];
+ goutsum -= sir[1];
+ boutsum -= sir[2];
+
+ if (y == 0) {
+ vmin[x] = Math.min(x + radius + 1, wm);
+ }
+ p = pix[yw + vmin[x]];
+
+ sir[0] = (p & 0xff0000) >> 16;
+ sir[1] = (p & 0x00ff00) >> 8;
+ sir[2] = (p & 0x0000ff);
+
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+
+ rsum += rinsum;
+ gsum += ginsum;
+ bsum += binsum;
+
+ stackpointer = (stackpointer + 1) % div;
+ sir = stack[(stackpointer) % div];
+
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+
+ rinsum -= sir[0];
+ ginsum -= sir[1];
+ binsum -= sir[2];
+
+ yi++;
+ }
+ yw += w;
+ }
+ for (x = 0; x < w; x++) {
+ rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
+ yp = -radius * w;
+ for (i = -radius; i <= radius; i++) {
+ yi = Math.max(0, yp) + x;
+
+ sir = stack[i + radius];
+
+ sir[0] = r[yi];
+ sir[1] = g[yi];
+ sir[2] = b[yi];
+
+ rbs = r1 - Math.abs(i);
+
+ rsum += r[yi] * rbs;
+ gsum += g[yi] * rbs;
+ bsum += b[yi] * rbs;
+
+ if (i > 0) {
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ } else {
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ }
+
+ if (i < hm) {
+ yp += w;
+ }
+ }
+ yi = x;
+ stackpointer = radius;
+ for (y = 0; y < h; y++) {
+ // Preserve alpha channel: ( 0xff000000 & pix[yi] )
+ pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum];
+
+ rsum -= routsum;
+ gsum -= goutsum;
+ bsum -= boutsum;
+
+ stackstart = stackpointer - radius + div;
+ sir = stack[stackstart % div];
+
+ routsum -= sir[0];
+ goutsum -= sir[1];
+ boutsum -= sir[2];
+
+ if (x == 0) {
+ vmin[y] = Math.min(y + r1, hm) * w;
+ }
+ p = x + vmin[y];
+
+ sir[0] = r[p];
+ sir[1] = g[p];
+ sir[2] = b[p];
+
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+
+ rsum += rinsum;
+ gsum += ginsum;
+ bsum += binsum;
+
+ stackpointer = (stackpointer + 1) % div;
+ sir = stack[stackpointer];
+
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+
+ rinsum -= sir[0];
+ ginsum -= sir[1];
+ binsum -= sir[2];
+
+ yi += w;
+ }
+ }
+
+ bitmap.setPixels(pix, 0, w, 0, 0, w, h);
+
+ return (bitmap);
+ }
+}
\ No newline at end of file
diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/ImageLoaderManager.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/ImageLoaderManager.java
new file mode 100644
index 0000000000..b2a7d10cdb
--- /dev/null
+++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/ImageLoaderManager.java
@@ -0,0 +1,199 @@
+package com.zhidao.adas.client.utils.image;
+
+import android.content.Context;
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.Priority;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.CircleCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
+import com.bumptech.glide.request.RequestOptions;
+
+import java.io.File;
+
+/**
+ * create by libo
+ * create on 2018/12/26
+ * description Glide图片加载工具类
+ */
+public class ImageLoaderManager {
+
+ /**
+ * 默认加载方式
+ *
+ * @param context
+ * @param url
+ * @param imageView
+ */
+ public static void loadImage(Context context, String url, ImageView imageView) {
+ RequestOptions requestOptions = new RequestOptions()
+ .priority(Priority.HIGH)
+ .diskCacheStrategy(DiskCacheStrategy.ALL)
+ .dontAnimate();
+
+ Glide.with(context)
+ .load(url)
+ .apply(requestOptions)
+ .transition(DrawableTransitionOptions.withCrossFade())
+ .into(imageView);
+ }
+
+ /**
+ * 加载圆形图片
+ *
+ * @param context
+ * @param url
+ * @param imageView
+ */
+ public static void loadCircleImage(Context context, String url, ImageView imageView) {
+ RequestOptions requestOptions = new RequestOptions()
+ .priority(Priority.HIGH)
+ .dontAnimate()
+ .diskCacheStrategy(DiskCacheStrategy.ALL)
+ .bitmapTransform(new CircleCrop());
+
+ Glide.with(context)
+ .load(url)
+ .apply(requestOptions)
+ .transition(DrawableTransitionOptions.withCrossFade())
+ .into(imageView);
+ }
+
+ /**
+ * 加载圆角图片
+ *
+ * @param context
+ * @param url
+ * @param imageView
+ * @param radius 圆角大小
+ */
+ public static void loadRoundImage(Context context, String url, ImageView imageView, int radius) {
+ RequestOptions requestOptions = new RequestOptions()
+ .priority(Priority.HIGH)
+ .dontAnimate()
+ .diskCacheStrategy(DiskCacheStrategy.ALL)
+ .transforms(new CenterCrop(), new RoundedCorners(radius));
+
+ Glide.with(context)
+ .load(url)
+ .apply(requestOptions)
+ .transition(DrawableTransitionOptions.withCrossFade())
+ .into(imageView);
+ }
+
+ /**
+ * 加载图片指定大小
+ *
+ * @param context
+ * @param url
+ * @param imageView
+ * @param width
+ * @param height
+ */
+ public static void loadSizeImage(Context context, String url, ImageView imageView, int width, int height) {
+ RequestOptions requestOptions = new RequestOptions()
+ .priority(Priority.HIGH)
+ .override(width, height)
+ .diskCacheStrategy(DiskCacheStrategy.RESOURCE);
+
+ Glide.with(context)
+ .load(url)
+ .apply(requestOptions)
+ .transition(DrawableTransitionOptions.withCrossFade())
+ .into(imageView);
+ }
+
+ /**
+ * 加载资源文件
+ *
+ * @param context
+ * @param resId
+ * @param imageView
+ */
+ public static void loadImage(Context context, int resId, ImageView imageView) {
+ RequestOptions requestOptions = new RequestOptions()
+ .priority(Priority.HIGH)
+ .diskCacheStrategy(DiskCacheStrategy.ALL)
+ .centerCrop();
+
+ Glide.with(context)
+ .load(resId)
+ .apply(requestOptions)
+ .into(imageView);
+ }
+
+ /**
+ * 加载本地图片文件
+ *
+ * @param context
+ * @param file
+ * @param imageView
+ */
+ public static void loadFileImage(Context context, File file, ImageView imageView) {
+ RequestOptions requestOptions = new RequestOptions()
+ .priority(Priority.HIGH)
+ .diskCacheStrategy(DiskCacheStrategy.ALL)
+ .centerCrop();
+
+ Glide.with(context)
+ .load(file)
+ .apply(requestOptions)
+ .into(imageView);
+ }
+
+ /**
+ * 加载字节数组
+ *
+ * @param context
+ * @param data
+ * @param imageView
+ */
+ public static void loadByteImage(Context context, byte[] data, ImageView imageView) {
+ RequestOptions requestOptions = new RequestOptions()
+ .priority(Priority.HIGH)
+ .diskCacheStrategy(DiskCacheStrategy.ALL)
+ .centerCrop();
+
+ Glide.with(context)
+ .load(data)
+ .apply(requestOptions)
+ .placeholder(imageView.getDrawable())
+ .into(imageView);
+ }
+
+ /**
+ * 加载高斯模糊
+ *
+ * @param context
+ * @param url
+ * @param imageView
+ * @param radius 模糊级数 最大25
+ */
+ public static void loadBlurImage(Context context, String url, ImageView imageView, int radius) {
+ RequestOptions requestOptions = new RequestOptions()
+ .override(300)
+ .transforms(new BlurTransformation(radius));
+
+ Glide.with(context)
+ .load(url)
+ .apply(requestOptions)
+ .transition(DrawableTransitionOptions.withCrossFade())
+ .into(imageView);
+ }
+
+ /**
+ * 加载gif图
+ *
+ * @param context
+ * @param url
+ * @param imageView
+ */
+ public static void loadGifImage(Context context, String url, ImageView imageView) {
+ Glide.with(context)
+ .load(url)
+ .into(imageView);
+ }
+}
\ No newline at end of file
diff --git a/app_ipc_monitoring/src/main/res/layout/fragment_info.xml b/app_ipc_monitoring/src/main/res/layout/fragment_info.xml
index 2199310982..adad72cb90 100644
--- a/app_ipc_monitoring/src/main/res/layout/fragment_info.xml
+++ b/app_ipc_monitoring/src/main/res/layout/fragment_info.xml
@@ -24,6 +24,21 @@
android:textSize="16sp"
android:textStyle="bold" />
+
+
+
+
\ No newline at end of file
diff --git a/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java b/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java
index 3c1ea13ce0..2cd3783eb5 100644
--- a/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java
+++ b/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java
@@ -26,6 +26,7 @@ import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.AppCompatButton;
import androidx.recyclerview.widget.GridLayoutManager;
@@ -45,11 +46,13 @@ import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.AdasOptions;
import com.zhidao.support.adas.high.OnAdasConnectStatusListener;
import com.zhidao.support.adas.high.OnAdasListener;
-import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
import com.zhidao.support.adas.high.bean.VersionCompatibility;
import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.common.ProtocolStatus;
+import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
+
+import org.jetbrains.annotations.NotNull;
import java.net.Inet4Address;
import java.net.InetAddress;
@@ -498,7 +501,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
@Override
- public void onPointCloud(byte[] pointCloud) {
+ public void onPointCloud(MessagePad.Header header, byte[] pointCloud) {
}
@Override
@@ -571,6 +574,11 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
+ @Override
+ public void onBackCameraVideo(@NonNull MessagePad.Header header, @NonNull byte[] data) {
+
+ }
+
@Override
public void onSweeperTaskIndexData(MessagePad.Header header, RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex) {
diff --git a/config.gradle b/config.gradle
index a0654f8743..c0e098760b 100644
--- a/config.gradle
+++ b/config.gradle
@@ -226,9 +226,9 @@ ext {
commonIndependentAmapApiValue : "1c3fbc5f5e183619ffb1e7bc01e6751f",
compileSdkVersion : 29,
buildToolsVersion : "29.0.2",
- minSdkVersion : 27,
+ minSdkVersion : 23,
targetSdkVersion : 27,
- minSdkVersionPadLenovo : 27,
+ minSdkVersionPadLenovo : 23,
targetSdkVersionPadLenovo : 27,
koomxhook : "com.kuaishou.koom:xhook-static:2.2.0",
]
diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/network/IDispatchAdasApiService.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/network/IDispatchAdasApiService.kt
index dbdc2e34c7..2e1ff638f6 100644
--- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/network/IDispatchAdasApiService.kt
+++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/dispatch/network/IDispatchAdasApiService.kt
@@ -14,7 +14,7 @@ interface IDispatchAdasApiService {
* @return [BaseData]
*/
@FormUrlEncoded
- @POST("eagle-eye-dns/eagle-eye-dns/dataService/autoDriver/receiveCarPreSetPath")
+ @POST("eagle-eye-dns/dataService/autoDriver/receiveCarPreSetPath")
fun uploadAutopilotRoute(@FieldMap parameters: Map): Observable
/**
diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt
index efe9aa66bf..c97a3e6078 100644
--- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt
+++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt
@@ -10,7 +10,7 @@ import retrofit2.http.POST
interface ILineUploadApi {
@Headers("Content-type:application/json;charset=UTF-8" )
- @POST( "/yycp-data-center-service/carTrack/receiveCarTrack/" )
+ @POST( "eagle-eye-dns/yycp-data-center-service/carTrack/receiveCarTrack/" )
fun uploadLineId(@Body lineId: LineUploadData): Observable
}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt
index 790ca44ab0..27780b4702 100644
--- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt
+++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt
@@ -3,6 +3,7 @@ package com.mogo.eagle.function.biz.v2x.road
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.constants.HostConst.DATA_CENTER_HOST
+import com.mogo.commons.constants.HostConst.getEagleHost
import com.mogo.eagle.core.data.v2x.LineUploadData
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
@@ -54,7 +55,7 @@ class LineUploadManager private constructor(context: Context) : IMoGoAutopilotSt
private fun uploadLine(lineId: Long) {
val lineUploadData = LineUploadData(lineId, MoGoAiCloudClientConfig.getInstance().sn)
- disposable = MoGoRetrofitFactory.getInstance(DATA_CENTER_HOST)
+ disposable = MoGoRetrofitFactory.getInstance(getEagleHost())
.create(ILineUploadApi::class.java)
.uploadLineId(lineUploadData)
.subscribeOn(Schedulers.io())
diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt
index 32fd455865..8ac9e08005 100644
--- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt
+++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt
@@ -159,9 +159,6 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback,
handleWarningTargetEvent(event.data)
}
is V2XEvent.RoadAI -> {
- if (FunctionBuildConfig.isV2NFromCar) {
- return
- }
handleRoadMarkerEvent(event.data.toRoadMarker())
}
is V2XEvent.RoadEventX -> {
@@ -173,12 +170,16 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback,
}
}
- @SuppressLint("NewApi")
+ @ChainLog(
+ linkChainLog = CHAIN_LINK_LOG_CLOUD_V2N,
+ linkCode = CHAIN_LINK_CLOUD,
+ endpoint = TracingConstants.Endpoint.PAD,
+ nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_V2N,
+ paramIndexes = [0],
+ clientPkFileName = "sn"
+ )
override fun onAutopilotIdentifyPlanningObj(planningObjects: List?) {
super.onAutopilotIdentifyPlanningObj(planningObjects)
- if (!FunctionBuildConfig.isV2NFromCar) {
- return
- }
planningObjects?.let {
if (it.isNotEmpty()) {
val first = it.stream()
diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/aicloud/AiCloudSocketBizProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/aicloud/AiCloudSocketBizProvider.kt
index 971e7b2af2..624477723d 100644
--- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/aicloud/AiCloudSocketBizProvider.kt
+++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/aicloud/AiCloudSocketBizProvider.kt
@@ -12,6 +12,7 @@ class AiCloudSocketBizProvider : IMoGoFunctionServerProvider {
get() = "AiCloudSocketBizProvider"
override fun init(context: Context?) {
+ //todo bus加载
context?.let {
SocketManager.getInstance().init(it, 0.0, 0.0)
SocketManager.getInstance().registerOnMessageListener(401012, V2XMessageListener401012())
diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt
index e54d166cf0..85b14a2962 100644
--- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt
+++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt
@@ -134,8 +134,6 @@ class MoGoAdasListenerImpl : OnAdasListener {
if (gnssInfo != null) {
if (1 == FunctionBuildConfig.gpsProvider) {
- // 同步给MAP地图
- //CallerMapUIServiceManager.getMapUIController()?.syncLocation2Map(gnssInfo)
// 同步更新经纬度和系统时间至 AutoPilotStatusListener
CallerAutoPilotStatusListenerManager.updateAutoPilotLatLon(
gnssInfo.satelliteTime,
@@ -146,7 +144,6 @@ class MoGoAdasListenerImpl : OnAdasListener {
}
}
-
/**
* 老底盘信息,透传底盘状态,pb参考底盘
* TODO 目前由于M1车型不会在新底盘PB添加新的字段 所以临时保留
@@ -369,7 +366,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
//他车轨迹预测
}
- override fun onPointCloud(pointCloud: ByteArray?) {
+ override fun onPointCloud(header: MessagePad.Header, pointCloud: ByteArray?) {
//点云数据透传
CallerAutopilotPointCloudListenerManager.invokeAutopilotPointCloudDataUpdate(pointCloud)
}
@@ -596,6 +593,16 @@ class MoGoAdasListenerImpl : OnAdasListener {
}
+ /**
+ * 清扫车后部摄像头视频 10Hz
+ *
+ * @param header 头
+ * @param data 数据
+ */
+ override fun onBackCameraVideo(header: MessagePad.Header, data: ByteArray) {
+ CallerSweeperFutianBackCameraVideoListenerManager.invokeSweeperFutianBackCameraVideo(data)
+ }
+
/**
* 清扫车指标数据
*
diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt
index 521aa5c3a4..4112baf491 100644
--- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt
+++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt
@@ -50,9 +50,11 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
private var mContext: Context? = null
//是否有AI获取红绿灯灯态
+ @Volatile
private var hasAiLightStatus: Boolean = false
//obu数据
+ @Volatile
private var hasObuLightStatus: Boolean = false
fun initServer(context: Context) {
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt
index 9191619b4e..008fe69093 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt
@@ -86,10 +86,18 @@ class BindingCarNetWorkManager private constructor() {
SharedPrefsConstants.CAR_INFO,
GsonUtils.toJson(info.getData())
)
+ } else {
+ SharedPrefsMgr.getInstance(context).putString(
+ SharedPrefsConstants.CAR_INFO, "null")
+ e(
+ SceneConstant.M_BINDING + TAG, "getBindingCarInfo data = null "
+ )
}
}
override fun onError(e: Throwable) {
+ SharedPrefsMgr.getInstance(context).putString(
+ SharedPrefsConstants.CAR_INFO, e.message.toString())
e(
SceneConstant.M_BINDING + TAG,
"getBindingCarInfo onError e = " + e.toString() + "---e.getMessage = " + e.message
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/report/IPCReportManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/report/IPCReportManager.kt
index d9a7997639..d338f02da8 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/report/IPCReportManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/report/IPCReportManager.kt
@@ -10,6 +10,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
+import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import mogo_msg.MogoReportMsg
@@ -69,29 +70,30 @@ class IPCReportManager : IMoGoAutopilotStatusListener {
*工控机监控节点上报
*/
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
- guardianInfo?.let{
- if(it.resultList.contains(RESULT_AUTOPILOT_DISABLE)
- || it.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
- || it.resultList.contains(RESULT_REMOTEPILOT_DISABLE)
- || it.resultList.contains(RESULT_AUTOPILOT_INFERIOR)
- || it.resultList.contains(RESULT_SHOW_WARNING)
- || it.resultList.contains(RESULT_REMOTEPILOT_INFERIOR)){
- val reportEntity = ReportEntity(TimeUtils.millis2String(System.currentTimeMillis()),
- it.src,it.level,it.msg,it.code,it.resultList,it.actionsList)
- CallerMsgBoxManager.saveMsgBox(MsgBoxBean(MsgBoxType.REPORT, reportEntity))
- }
+ ThreadUtils.runOnUiThread {
+ guardianInfo?.let{
+ if(it.resultList.contains(RESULT_AUTOPILOT_DISABLE)
+ || it.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
+ || it.resultList.contains(RESULT_REMOTEPILOT_DISABLE)
+ || it.resultList.contains(RESULT_AUTOPILOT_INFERIOR)
+ || it.resultList.contains(RESULT_SHOW_WARNING)
+ || it.resultList.contains(RESULT_REMOTEPILOT_INFERIOR)){
+ val reportEntity = ReportEntity(TimeUtils.millis2String(System.currentTimeMillis()),
+ it.src,it.level,it.msg,it.code,it.resultList,it.actionsList)
+ CallerMsgBoxManager.saveMsgBox(MsgBoxBean(MsgBoxType.REPORT, reportEntity))
+ }
- if (reportList.size > 49) {
- reportList.removeLast()
- }
- reportList.add(
- 0,
- ReportEntity(
- TimeUtils.millis2String(System.currentTimeMillis()),
- it.src, it.level, it.msg, it.code, it.resultList, it.actionsList
+ if (reportList.size > 49) {
+ reportList.removeLast()
+ }
+ reportList.add(
+ 0,
+ ReportEntity(
+ TimeUtils.millis2String(System.currentTimeMillis()),
+ it.src, it.level, it.msg, it.code, it.resultList, it.actionsList
+ )
)
- )
- reportListFloatWindow?.refreshData(reportList)
+ reportListFloatWindow?.refreshData(reportList)
// //Error 弹窗并有提示音
// if(it.resultList.contains(RESULT_AUTOPILOT_DISABLE)
@@ -128,6 +130,7 @@ class IPCReportManager : IMoGoAutopilotStatusListener {
// }
// }
// }
+ }
}
}
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/scene/SceneManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/scene/SceneManager.kt
index b554611acd..31db42443e 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/scene/SceneManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/scene/SceneManager.kt
@@ -83,7 +83,7 @@ class SceneManager {
}
}
//call back
- CallerDevaToolsListenerManager.invokeDevaToolsModuleLogChanges(sceneModuleTAG.map)
+// CallerDevaToolsListenerManager.invokeDevaToolsModuleLogChanges(sceneModuleTAG.map)
}
}
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt
index e0acfc917a..c36e6f8542 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt
@@ -1,8 +1,6 @@
package com.zhjt.mogo_core_function_devatools.upgrade
-import android.app.NotificationManager
import android.content.Context
-import androidx.core.app.NotificationCompat
import com.elegant.utils.UiThreadHandler
import com.mogo.eagle.core.data.obu.MogoObuConst
import com.mogo.eagle.core.function.api.devatools.IMogoDevaToolsUpgradeListener
@@ -128,31 +126,20 @@ class UpgradeManager : IDownload {
}
/**
- * 鹰眼app下载监听 liyz
+ * 鹰眼app下载监听
*/
fun updateUpgradeProgress(context: Context) {
- val builder = NotificationCompat.Builder(context)
- // builder.setSmallIcon(R.mipmap.icon1001);//todo emArrow 更换图标,去除地图下载图标的依赖关系
- builder.setContentTitle("下载")
- builder.setContentText("正在下载")
- val manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
CallerDevaToolsUpgradeListenerManager.addListener(
TAG,
object : IMogoDevaToolsUpgradeListener {
override fun onStart(url: String?) {}
override fun onPause(url: String?) {}
override fun onProgress(url: String?, length: Int) {
- builder.setProgress(100, length, false)
- manager.notify(0x3, builder.build())
- //下载进度提示
- builder.setContentText("已下载$length%")
updateStatusBarDownloadView(true, "download", length)
}
override fun onFinished(url: String?) {
- builder.setContentText("已下载" + 100 + "%")
UiThreadHandler.postDelayed({
- manager.cancel(0x3)
updateStatusBarDownloadView(false, "download", 100)
}, 1000)
}
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/AndroidManifest.xml b/core/function-impl/mogo-core-function-hmi/src/main/AndroidManifest.xml
index 80b72654c5..05975cc293 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/AndroidManifest.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/AndroidManifest.xml
@@ -98,20 +98,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
- FunctionBuildConfig.isV2NFromCar = isChecked
- }
-
tbDrawAiCloudFusion.isChecked = FunctionBuildConfig.isDrawAiCloudFusion
//云端感知绘制
tbDrawAiCloudFusion.setOnCheckedChangeListener { _, isChecked ->
@@ -1601,6 +1602,7 @@ internal class DebugSettingView @JvmOverloads constructor(
tvAutopilotInfo.text = autopilotJson
tvIpcInfo.text = autopilotJson
tvIpcInfoKey.text = autopilotJson
+ tvCmdbCarInfoContent.text = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.CAR_INFO)
tvCarInfo.text =
"GPS时间:${(mGnssInfo?.satelliteTime?.times(1000))?.toLong()}\n" +
@@ -2058,4 +2060,5 @@ internal class DebugSettingView @JvmOverloads constructor(
override fun onObuDeviceId(obuDeviceId: String) {
mObuDeviceId = obuDeviceId
}
+
}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt
index b7f531c972..325c33de50 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt
@@ -27,6 +27,7 @@ class SpeedPanelView @JvmOverloads constructor(
var mContext: Context
var mSpeedChartView: SpeedChartView
+ @Volatile
var mLatLng: MogoLocation? = null
init {
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/VideoAdAtc.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/VideoAdAtc.kt
index 907a96144d..cc73895c23 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/VideoAdAtc.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/VideoAdAtc.kt
@@ -11,19 +11,19 @@ import com.mogo.eagle.core.widget.TextureVideoView
*/
class VideoAdAtc : AppCompatActivity() {
- private lateinit var svpFrame: TextureVideoView
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_video_ad_atc)
-
- svpFrame = findViewById(R.id.svp_frame)
-
- val url = "android.resource://" + packageName + "/" + R.raw.mogo_ad
- svpFrame.videoPath = url
- svpFrame.start()
-
- BarUtils.hideStatusBarAndSticky(this.window)
- }
+// private lateinit var svpFrame: TextureVideoView
+//
+// override fun onCreate(savedInstanceState: Bundle?) {
+// super.onCreate(savedInstanceState)
+// setContentView(R.layout.activity_video_ad_atc)
+//
+// svpFrame = findViewById(R.id.svp_frame)
+//
+// val url = "android.resource://" + packageName + "/" + R.raw.mogo_ad
+// svpFrame.videoPath = url
+// svpFrame.start()
+//
+// BarUtils.hideStatusBarAndSticky(this.window)
+// }
}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
index 0f24149d1d..a597b90f0d 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
@@ -207,6 +207,29 @@
android:layout_height="1dp"
android:background="#F0F0F0" />
+
+
+
+
+
+
+
-
-
): BaseResponse
}
\ No newline at end of file
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
index c92de25581..c02056061b 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
@@ -49,14 +49,6 @@ object FunctionBuildConfig {
@JvmField
var detouringSpeed = 3
- /**
- * 是否从车端融合过来的v2n事件
- * 默认关闭,开启后接收车端融合预警,关闭云端长链V2N
- */
- @Volatile
- @JvmField
- var isV2NFromCar = false
-
/**
* 是否是感知优化模式
* 默认开启
diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoSweeperFutianBackCameraVideoListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoSweeperFutianBackCameraVideoListener.kt
new file mode 100644
index 0000000000..225832cf39
--- /dev/null
+++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoSweeperFutianBackCameraVideoListener.kt
@@ -0,0 +1,11 @@
+package com.mogo.eagle.core.function.api.autopilot
+
+/**
+ * 清扫车(福田)后摄像头视频数据
+ */
+interface IMoGoSweeperFutianBackCameraVideoListener {
+ /**
+ * 清扫车(福田)后摄像头视频数据 10Hz 每一帧为一张图片
+ */
+ fun onSweeperFutianBackCameraVideo(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/CallerSweeperFutianBackCameraVideoListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerSweeperFutianBackCameraVideoListenerManager.kt
new file mode 100644
index 0000000000..95d2dde9e8
--- /dev/null
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerSweeperFutianBackCameraVideoListenerManager.kt
@@ -0,0 +1,23 @@
+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
+
+/**
+ * 清扫车(福田)后摄像头视频数据
+ */
+object CallerSweeperFutianBackCameraVideoListenerManager : CallerBase() {
+
+ /**
+ * 后摄像头视频数据
+ */
+ fun invokeSweeperFutianBackCameraVideo(data: ByteArray) {
+ M_LISTENERS.forEach {
+ val listener = it.value
+ listener.onSweeperFutianBackCameraVideo(data)
+ }
+ }
+}
\ No newline at end of file
diff --git a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/locationinfo/MogoLocationInfoServices.java b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/locationinfo/MogoLocationInfoServices.java
index c41290ce40..1a377a0b79 100644
--- a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/locationinfo/MogoLocationInfoServices.java
+++ b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/locationinfo/MogoLocationInfoServices.java
@@ -14,7 +14,7 @@ public class MogoLocationInfoServices {
private static final String TAG = "MogoLocationInfoServices-sdk";
private static volatile MogoLocationInfoServices sInstance;
- private MogoLocation mLocation;
+ private volatile MogoLocation mLocation;
private MogoLocationInfoServices() {
}
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 4fbde4e724..e32a91efa3 100644
--- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto
+++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto
@@ -6,7 +6,7 @@ import "geometry.proto";
enum ProtocolVersion
{
Defaultver = 0;
- CurrentVersion = 10; //每次修改proto文件增加1
+ CurrentVersion = 12; //每次修改proto文件增加1
}
enum MessageType
@@ -30,6 +30,7 @@ enum MessageType
MsgTypeOBU = 0x1000a; //OBU
MsgTypeChassisStates = 0x1000b; //重构后的底盘状态, 透传
MsgTypeFunctionStates = 0x1000c; //重构后的功能状态, 透传
+ MsgTypeBackCameraVideo = 0x1000d; //清扫车后部摄像头视频 10hz
MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求
MsgTypeBasicInfoResp = 0x10101; //自动驾驶设备基础信息应答
@@ -60,6 +61,7 @@ enum MessageType
MsgTypeTripInfoEvent = 0x1011a; //行程信息
MsgTypeBagManagerCmd = 0x1011b; //bag管理
MsgTypePlanningCmd = 0x1011c; //给planning的指令
+ MsgTypeSetParamReqV2 = 0x1011d; //设置参数命令V2
}
message Header
@@ -139,9 +141,16 @@ message TrackedObject
string strUuid = 101;//String类型车辆ID
}
+message BlindAreaData
+{
+ float angleResolution = 1;
+ repeated int32 distances = 2;
+}
+
message TrackedObjects
{
repeated TrackedObject objs = 1;
+ BlindAreaData blindAreaData = 2;
}
// message definition for MsgTypeGnssInfo
@@ -598,4 +607,8 @@ message PlanningCmd
PullOverCmd pullOverCmd = 1;
}
+//message definition for MsgTypeSetParamReqV2
+//refer to param_set_cmd.proto for details
+//message definition for MsgTypeBackCameraVideo
+//payload:jpeg data
diff --git a/libraries/mogo-adas-data/src/main/proto/param_set_cmd.proto b/libraries/mogo-adas-data/src/main/proto/param_set_cmd.proto
new file mode 100644
index 0000000000..1524e30c31
--- /dev/null
+++ b/libraries/mogo-adas-data/src/main/proto/param_set_cmd.proto
@@ -0,0 +1,20 @@
+syntax = "proto3";
+package mogo.telematics;
+
+enum ParamSetType
+{
+ ParamSetTypeNone = 0;
+ ParamSetTypeBlindArea = 1;
+}
+
+message ParamSetCmd
+{
+ uint32 src = 1; // 0: none, 1:pad, 2:aicloud
+ ParamSetType type = 2;
+ oneof Value {
+ bool boolValue = 3;
+ int64 intValue = 4;
+ double floatValue = 5;
+ string stringValue = 6;
+ }
+}
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 b174d75da2..2c78bb7471 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
@@ -21,7 +21,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.protobuf.InvalidProtocolBufferException;
-import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
import com.zhidao.support.adas.high.bean.VersionCompatibility;
import com.zhidao.support.adas.high.common.AutopilotReview;
import com.zhidao.support.adas.high.common.ByteUtil;
@@ -45,6 +44,7 @@ import com.zhidao.support.adas.high.socket.FpgaSocket;
import com.zhidao.support.adas.high.subscribe.SubscribeInterface;
import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions;
import com.zhidao.support.adas.high.thread.DispatchHandler;
+import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
import com.zhjt.service.chain.ChainLog;
import com.zhjt.service.chain.TracingConstants;
@@ -251,7 +251,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
// dispatchHandlers.put(MessagePad.MessageType.MsgTypeRecordDataConfigResp, new DispatchHandler(MessagePad.MessageType.MsgTypeRecordDataConfigResp, this));
//Planning决策状态
// dispatchHandlers.put(MessagePad.MessageType.MsgTypePlanningDecisionState, new DispatchHandler(MessagePad.MessageType.MsgTypePlanningDecisionState, this));
-
+ //清扫车后摄像头数据
+ dispatchHandlers.put(MessagePad.MessageType.MsgTypeBackCameraVideo, new DispatchHandler(MessagePad.MessageType.MsgTypeBackCameraVideo, this));
}
/**
@@ -446,32 +447,17 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
public void onDispatchRaw(MessagePad.MessageType type, RawData raw) {
// CupidLogUtils.i(TAG, "onDispatchRaw=" + Thread.currentThread().getName() + " TID=" + android.os.Process.myTid());
try {
- //分发点云原始数据
- if (type == MessagePad.MessageType.MsgTypePointCloud) {
- int len = raw.getPackageLengthValue() - raw.getOffsetValue();
- byte[] bytes = new byte[len];
- System.arraycopy(raw.originalData.toByteArray(), raw.getOffsetValue(), bytes, 0, len);
- calculateTimeConsumingOnDispatchRaw("3D点云", raw.receiveTime);
- long nowTime = 0;
- if (CupidLogUtils.isEnableLog())
- nowTime = SystemClock.elapsedRealtime();
- mAdasListener.onPointCloud(bytes);
- calculateTimeConsumingBusiness("3D点云", nowTime);
- } else {
- if (rawUnpack != null) {
- if (raw.getProtocolStatus() == ProtocolStatus.SUCCEED) {
- MessagePad.Header header = raw.getHeader();
- MessagePad.MessageType messageType = header.getMsgType();
- IMsg iMsg = myMessageFactory.createMessage(messageType);
- if (iMsg == null) {
- callError(ProtocolStatus.MESSAGE_TYPE_UNKNOWN, raw.originalData.toByteArray());
- return;
- }
- iMsg.handlerMsg(raw, mAdasListener);
- } else {
- callError(raw.getProtocolStatus(), raw.originalData.toByteArray());
- }
+ if (raw.getProtocolStatus() == ProtocolStatus.SUCCEED) {
+ MessagePad.Header header = raw.getHeader();
+ MessagePad.MessageType messageType = header.getMsgType();
+ IMsg iMsg = myMessageFactory.createMessage(messageType);
+ if (iMsg == null) {
+ callError(ProtocolStatus.MESSAGE_TYPE_UNKNOWN, raw.originalData.toByteArray());
+ return;
}
+ iMsg.handlerMsg(raw, mAdasListener);
+ } else {
+ callError(raw.getProtocolStatus(), raw.originalData.toByteArray());
}
} catch (Exception e) {
callError(ProtocolStatus.BUSINESS_DATA_PARSE_FAILED, raw.originalData.toByteArray());
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 8a5318bf1e..a979279247 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
@@ -1,15 +1,16 @@
package com.zhidao.support.adas.high;
import com.mogo.support.obu.ObuScene;
-import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
import com.zhidao.support.adas.high.common.ProtocolStatus;
+import com.zhjt.mogo.adas.data.bean.AutopilotStatistics;
+
+import org.jetbrains.annotations.NotNull;
import bag_manager.BagManagerOuterClass;
import chassis.ChassisStatesOuterClass;
import chassis.VehicleStateOuterClass;
import function_state_management.FunctionStates;
import mogo.telematics.pad.MessagePad;
-import mogo.v2x.ObuWarningEvent;
import mogo_msg.MogoReportMsg;
import perception.TrafficLightOuterClass;
import planning.RoboSweeperTaskIndexOuterClass;
@@ -108,9 +109,10 @@ public interface OnAdasListener {
/**
* 透传的点云数据
*
+ * @param header 头
* @param pointCloud 原始数据 只包含PointCloud数据
*/
- void onPointCloud(byte[] pointCloud);
+ void onPointCloud(MessagePad.Header header, byte[] pointCloud);
/**
* planning障碍物
@@ -231,10 +233,18 @@ public interface OnAdasListener {
* 重构后的功能状态
*
* @param header 头
- * @param functionStates 头
+ * @param functionStates 数据
*/
void onFunctionStates(MessagePad.Header header, FunctionStates.FSMFunctionStates functionStates);
+ /**
+ * 清扫车后部摄像头视频 10Hz
+ *
+ * @param header 头
+ * @param data 数据
+ */
+ void onBackCameraVideo(@NotNull MessagePad.Header header, @NotNull 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 92f1d31659..fdeb95356d 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
@@ -25,6 +25,7 @@ public enum MessageType {
TYPE_RECEIVE_PLANNING_OBJECTS(MessagePad.MessageType.MsgTypePlanningObjects, "Planning障碍物"),
TYPE_RECEIVE_CHASSIS_STATES(MessagePad.MessageType.MsgTypeChassisStates, "底盘状态"),
TYPE_RECEIVE_FUNCTION_STATES(MessagePad.MessageType.MsgTypeFunctionStates, "重构后功能状态"),
+ TYPE_RECEIVE_BACK_CAMERA_VIDEO(MessagePad.MessageType.MsgTypeBackCameraVideo, "清扫车后摄像头"),
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
new file mode 100644
index 0000000000..835597daff
--- /dev/null
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BackCameraVideoMessage.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;
+
+/**
+ * 清扫车后摄像头
+ */
+public class BackCameraVideoMessage extends MyAbstractMessageHandler {
+
+ public BackCameraVideoMessage() {
+ }
+
+ @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("清扫车后摄像头", raw.receiveTime);
+ long nowTime = 0;
+ if (CupidLogUtils.isEnableLog())
+ nowTime = SystemClock.elapsedRealtime();
+ if (adasListener != null) {
+ adasListener.onBackCameraVideo(raw.getHeader(), data);
+ }
+ AdasChannel.calculateTimeConsumingBusiness("清扫车后摄像头", 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 11ec50a301..1597921140 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
@@ -36,6 +36,8 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg functionStatesMessage;//重构后的功能状态
private IMsg sweeperTaskIndexDataMessage;//清扫车指标数据
private IMsg bagManagerMessage;//Bag管理应答
+ private IMsg backCameraVideoMessage;//清扫车后摄像头
+ private IMsg pointCloudMessage;//3D点云
private final AutopilotReview autopilotReview;
@@ -99,6 +101,12 @@ public class MyMessageFactory implements IMyMessageFactory {
predictionObstacleTrajectoryMessage = new PredictionObstacleTrajectoryMessage();
}
return predictionObstacleTrajectoryMessage;
+ } else if (messageType == MessageType.TYPE_RECEIVE_POINT_CLOUD.typeCode) {
+ //3D点云
+ if (pointCloudMessage == null) {
+ pointCloudMessage = new PointCloudMessage();
+ }
+ return pointCloudMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_PLANNING_OBJECTS.typeCode) {
//planning障碍物
if (planningObjectsMessage == null) {
@@ -183,6 +191,12 @@ public class MyMessageFactory implements IMyMessageFactory {
bagManagerMessage = new BagManagerMessage();
}
return bagManagerMessage;
+ } else if (messageType == MessageType.TYPE_RECEIVE_BACK_CAMERA_VIDEO.typeCode) {
+ //清扫车后摄像头
+ if (backCameraVideoMessage == null) {
+ backCameraVideoMessage = new BackCameraVideoMessage();
+ }
+ return backCameraVideoMessage;
} else {
//MessageType.TYPE_DEFAULT.typeCode
return null;
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PointCloudMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PointCloudMessage.java
new file mode 100644
index 0000000000..b2a80cf4bb
--- /dev/null
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PointCloudMessage.java
@@ -0,0 +1,34 @@
+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;
+
+/**
+ * 3D点云原始数据
+ */
+public class PointCloudMessage extends MyAbstractMessageHandler {
+
+ public PointCloudMessage() {
+ }
+
+ @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("3D点云", raw.receiveTime);
+ long nowTime = 0;
+ if (CupidLogUtils.isEnableLog())
+ nowTime = SystemClock.elapsedRealtime();
+ if (adasListener != null) {
+ adasListener.onPointCloud(raw.getHeader(), data);
+
+ }
+ AdasChannel.calculateTimeConsumingBusiness("3D点云", nowTime);
+ }
+}