Merge branch 'dev_robotaxi-d-app-module_2110_220915_2.11.0' into dev_robotaxi-d-app-module_2110_yangyakun_2.11.0

This commit is contained in:
yangyakun
2022-09-19 11:14:18 +08:00
20 changed files with 265 additions and 99 deletions

View File

@@ -683,6 +683,7 @@ public class BusOrderModel {
private void closeBeautificationMode() {
if (FunctionBuildConfig.isDemoMode) {//收车结束美化
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore置为false收车");
}
@@ -802,6 +803,7 @@ public class BusOrderModel {
&& backgroundCurrentStationIndex <= stationList.size()-1)
&& stationList.get(backgroundCurrentStationIndex).isLeaving()){//行驶过程中设置美化
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true);
CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore置为true每次滑动出发");
}
@@ -948,6 +950,7 @@ public class BusOrderModel {
if (FunctionBuildConfig.isDemoMode && backgroundCurrentStationIndex <= stationList.size() - 1) {//到达一站结束美化
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore置为false到最后一站");
}

View File

@@ -859,6 +859,7 @@ public class TaxiModel {
&& mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) {
// 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后置true
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为true更新本地order信息");
}
@@ -874,6 +875,7 @@ public class TaxiModel {
if (FunctionBuildConfig.isDemoMode) {
// 当美化模式(演示模式)开启时: 取消或订单已完成时置false
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为false已完成or清除当前订单");
}
@@ -1163,6 +1165,7 @@ public class TaxiModel {
if (FunctionBuildConfig.isDemoMode) {
// 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后置true
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为true到达出发点且已开启自动驾驶");
}
@@ -1231,6 +1234,7 @@ public class TaxiModel {
if (FunctionBuildConfig.isDemoMode) {
// 当美化模式(演示模式)开启时: 到达目的地置false
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为false到达目的地");
}

View File

@@ -470,6 +470,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement
showOrHideNavi(false);
setOrRemoveMapMaker(false, TaxiConst.TAXI_START_MAP_MAKER,order.startSitePoint,R.raw.star_marker);
setOrRemoveMapMaker(false, TaxiConst.TAXI_END_MAP_MAKER,order.endSitePoint,R.raw.end_marker);
clearSmallMapRouteLine();
break;
case JourneyCompleted:
mCurrentOrder = null;
@@ -497,6 +498,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement
mNoDataView.setVisibility(View.GONE);
mBeingOrderLayout.setVisibility(View.VISIBLE);
mTaxiFragment.changeOperationViewVisible(View.GONE);
clearSmallMapRouteLine();
} else {
mNoDataView.setVisibility(View.VISIBLE);
mNoDatasTv.setText("暂无进行中订单");

View File

@@ -109,11 +109,7 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
}
tvOperationStatus.setVisibility(View.VISIBLE);
if (DebugConfig.isDebug()) {
initOrderTestBar();
}
initOrderTestBar();
}
private void initFragment() {

View File

@@ -65,7 +65,7 @@ public class TaxiPersonalDialogFragment extends DialogFragment implements View.O
private List<OrderQueryRespBean.Result> orders = new ArrayList<>();
private String[] mTabTitles = {"在线时长","订单完成数"};
private List<TaxiOperationDatasFragment> fragments = new ArrayList<>();
private int mNextPage = 0;
private int mNextPage = 1;//订单列表分页从1开始
private int mPerPageSize = 10;
private static TaxiFragment mTaxiFragment;
private static boolean serverHadNoData = false;

View File

@@ -62,7 +62,6 @@
android:id="@+id/test_bar_to_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="testToStart"
android:text="到达上车点"
android:textSize="12sp" />
<Button
@@ -70,7 +69,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:onClick="testWayToEnd"
android:text="开启服务"/>
<Button
@@ -78,14 +76,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:onClick="testWayToEnd"
android:text="开启自动驾驶"/>
<Button
android:id="@+id/test_bar_to_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="testToEnd"
android:text="到达目的地"
android:textSize="12sp" />

View File

@@ -33,19 +33,19 @@ if (!isAndroidTestBuild()) {
apply plugin: 'apm-plugin'
}
if (!isAndroidTestBuild()) {
apply plugin: 'bytex.threadOpt'
thread_opt {
enable true
enableInDebug true
logLevel "DEBUG"
//白名单中的类不进行替换
white_list = [
'leakcanary.*',
'com.loc.*'
]
}
}
//if (!isAndroidTestBuild()) {
// apply plugin: 'bytex.threadOpt'
// thread_opt {
// enable true
// enableInDebug true
// logLevel "DEBUG"
// //白名单中的类不进行替换
// white_list = [
// 'leakcanary.*',
// 'com.loc.*'
// ]
// }
//}
//if (!isAndroidTestBuild()) {
// /**

View File

@@ -3,14 +3,14 @@ package com.mogo.launcher;
import com.mogo.eagle.core.function.main.MainMoGoApplication;
import android.content.Context;
import androidx.annotation.NonNull;
//import androidx.annotation.NonNull;
import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.launcher.crash.CrashSystem;
import com.mogo.thread.ext.core.ThreadManager;
import com.mogo.thread.ext.core.config.ThreadConfig;
import java.util.concurrent.ThreadPoolExecutor;
//import com.mogo.thread.ext.core.ThreadManager;
//import com.mogo.thread.ext.core.config.ThreadConfig;
//
//import java.util.concurrent.ThreadPoolExecutor;
/**
* @author congtaowang
@@ -23,36 +23,36 @@ public class MogoApplication extends MainMoGoApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
ThreadConfig.Builder builder = new ThreadConfig.Builder().listener(new ThreadConfig.TaskExecuteListener() {
@Override
public boolean isEnabled() {
return true; // 如果返回true会有后续的回调如果返回false, 不会有后续的回调
}
@Override
public void onExecutorBefore(@NonNull Runnable runnable) {
//每个任务执行前回调
}
@Override
public void onExecutorAfter(@NonNull Runnable runnable) {
//每个任务执行后回调
}
/**
* @param core 线程池的核心数
* @param max 线程池的最大线程数
* @param active 线程池正在活跃的任务数
* @param completed 线程池已完成的任务数
*/
@Override
public void onExecutorStateChanged(@NonNull ThreadPoolExecutor pool, int core, int max, int active, long completed) {
//线程池在执行过程,状态变化回调
//Log.d("POOL", "core:" + core + ";max:" + max + ";active:" + active + ";completed:" + completed);
}
});
builder.loggable(false);
ThreadManager.INSTANCE.init(builder);
// ThreadConfig.Builder builder = new ThreadConfig.Builder().listener(new ThreadConfig.TaskExecuteListener() {
// @Override
// public boolean isEnabled() {
// return true; // 如果返回true会有后续的回调如果返回false, 不会有后续的回调
// }
//
// @Override
// public void onExecutorBefore(@NonNull Runnable runnable) {
// //每个任务执行前回调
// }
//
// @Override
// public void onExecutorAfter(@NonNull Runnable runnable) {
// //每个任务执行后回调
// }
//
// /**
// * @param core 线程池的核心数
// * @param max 线程池的最大线程数
// * @param active 线程池正在活跃的任务数
// * @param completed 线程池已完成的任务数
// */
// @Override
// public void onExecutorStateChanged(@NonNull ThreadPoolExecutor pool, int core, int max, int active, long completed) {
// //线程池在执行过程,状态变化回调
// //Log.d("POOL", "core:" + core + ";max:" + max + ";active:" + active + ";completed:" + completed);
// }
// });
// builder.loggable(false);
// ThreadManager.INSTANCE.init(builder);
}
@Override

View File

@@ -379,7 +379,7 @@ class MoGoAutopilotProvider :
override fun setDemoMode(isEnable: Boolean) {
// 同步给乘客端
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
var byteArray = if (isEnable) byteArrayOf(1) else byteArrayOf(0)
val byteArray = if (isEnable) byteArrayOf(1) else byteArrayOf(0)
if (NSDNettyManager.getInstance().isServerStart) {
NSDNettyManager.getInstance()
.sendMsgToAllClients(
@@ -395,6 +395,25 @@ class MoGoAutopilotProvider :
}
}
override fun setIgnoreConditionDraw(isIgnore: Boolean) {
// 同步给乘客端
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
val byteArray = if (isIgnore) byteArrayOf(1) else byteArrayOf(0)
if (NSDNettyManager.getInstance().isServerStart) {
NSDNettyManager.getInstance()
.sendMsgToAllClients(
MogoProtocolMsg(
11,
byteArray.size,
byteArray
)
)
} else {
CallerLogger.d("$M_ADAS_IMPL$TAG", "同步美化模式状态时司机端Server未启动")
}
}
}
/**
* 设置工控机演示模式(美化模式)开启、关闭
* isEnable = true 开启

View File

@@ -11,6 +11,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager.setDemoMode
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager.setIgnoreConditionDraw
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
@@ -60,7 +61,7 @@ class TeleMsgHandler : IMsgHandler {
1 -> true
else -> false
}
setDemoMode(FunctionBuildConfig.isDemoMode)
invokeNettyConnResult("乘客屏收到的美化模式DemoMode为:${FunctionBuildConfig.isDemoMode}")
}
MogoProtocolMsg.REQ_MAC_ADDRESS -> {
val carConfig = MessagePad.CarConfigResp.parseFrom(msg.body)
@@ -78,11 +79,20 @@ class TeleMsgHandler : IMsgHandler {
MoGoAiCloudClientConfig.getInstance().sn
)
}
// SN
10 -> {
val sn = String(it.body)
isReceiveSN = true
NettyTcpClient.sSERVER_SN = sn
}
// 美化模式是否忽略条件直接绘制
11 -> {
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = when (it.body[0].toInt()) {
1 -> true
else -> false
}
invokeNettyConnResult("乘客屏收到的美化模式isIgnore为${FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData}")
}
else -> {
}
}
@@ -140,17 +150,8 @@ class TeleMsgHandler : IMsgHandler {
override fun handleClientConn2Server(channel: Channel?) {
val socketAddress = channel?.remoteAddress().toString()
CallerLogger.d("${SceneConstant.M_ADAS_IMPL}$TAG", "Client ip is:${socketAddress}")
val byteArray =
if (FunctionBuildConfig.isDemoMode) byteArrayOf(1) else byteArrayOf(0)
NSDNettyManager.getInstance().sendMsgToSpecifiedClient(
MogoProtocolMsg(
MogoProtocolMsg.SYNC_MODE_STATUS,
byteArray.size,
byteArray
), channel
) {
CallerLogger.d("${SceneConstant.M_ADAS_IMPL}$TAG", "同步美化模式状态是否成功:${it.isSuccess}")
}
setDemoMode(FunctionBuildConfig.isDemoMode)
setIgnoreConditionDraw(FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData)
}
override fun handleClientConnStatus(statusCode: Int, content: String?, channel: Channel) {

View File

@@ -200,12 +200,10 @@ class TracingStatus(var state: Tracing = UNKNOWN): Status() {
UNKNOWN;
fun isException(): Boolean {
val c1 = when (this) {
TRACK_FINDED, TRACK_NOT_EXIST, TRACK_LOAD_FAIL, ROUTE_FAILED, UNKNOWN -> true
else -> false
if (this == TRACK_LOADED || this == ROUTE_LOADED) {
return false
}
val c2 = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
return c1 and c2
return true
}
}
@@ -230,18 +228,13 @@ class TracingStatus(var state: Tracing = UNKNOWN): Status() {
override fun isException(): Boolean = state.isException()
}
fun String.toState(): Tracing? {
val ss = split("|")
var code = ""
if (ss.isNotEmpty()) {
code = ss[0]
}
fun String.toState(msg: String?): Tracing? {
val ss = msg?.split("|")
var extra: Map<String, String>? = null
if (ss.size > 1) {
if (ss != null && ss.isNotEmpty()) {
val sb = StringBuilder()
for (i in 1 until ss.size) {
sb.append(ss[i])
for (element in ss) {
sb.append(element)
sb.append(",")
}
if (sb.isNotEmpty()) {
@@ -249,7 +242,7 @@ fun String.toState(): Tracing? {
}
extra = mutableMapOf("extra" to sb.toString())
}
return when(code) {
return when(this) {
"IMAP_TRA_EXIST" -> TRACK_FINDED.apply {
this.extra = extra
}

View File

@@ -1,7 +1,6 @@
package com.zhjt.mogo_core_function_devatools.status.flow.trace
import android.content.*
import android.util.*
import com.mogo.eagle.core.data.autopilot.*
import com.mogo.eagle.core.function.api.autopilot.*
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion.STATUS_AUTOPILOT_RUNNING
@@ -21,7 +20,8 @@ internal class TracingImpl(ctx: Context): IFlow<TracingStatus>(ctx), IMoGoAutopi
override fun onCreate() {
val code = CallerAutoPilotStatusListenerManager.getAutoPilotReportMessageCode()
val state = code.toState() ?: UNKNOWN
val msg = CallerAutoPilotStatusListenerManager.getAutoPilotReportMessageContent()
val state = code.toState(msg) ?: UNKNOWN
old = state
send(TracingStatus(state))
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
@@ -31,7 +31,7 @@ internal class TracingImpl(ctx: Context): IFlow<TracingStatus>(ctx), IMoGoAutopi
override fun onAutopilotGuardian(guardianInfo: MogoReportMessage?) {
super.onAutopilotGuardian(guardianInfo)
val current = guardianInfo?.code
val newState = current?.toState()
val newState = current?.toState(guardianInfo.msg)
if (newState != null && newState != old) {
send(TracingStatus(newState))
old = newState
@@ -41,6 +41,7 @@ internal class TracingImpl(ctx: Context): IFlow<TracingStatus>(ctx), IMoGoAutopi
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
super.onAutopilotIpcConnectStatusChanged(status, reason)
if (!CallerAutoPilotManager.isConnected()) {
old = UNKNOWN
send(TracingStatus(UNKNOWN))
}
}
@@ -48,10 +49,12 @@ internal class TracingImpl(ctx: Context): IFlow<TracingStatus>(ctx), IMoGoAutopi
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
super.onAutopilotStatusResponse(autoPilotStatusInfo)
if (autoPilotStatusInfo.state != STATUS_AUTOPILOT_RUNNING) {
old = UNKNOWN
send(TracingStatus(UNKNOWN))
return
}
if (old.isException() && autoPilotStatusInfo.state == STATUS_AUTOPILOT_RUNNING) {
if (old.isException()) {
old = TRACK_LOADED
send(TracingStatus(TRACK_LOADED))
}
}

View File

@@ -125,11 +125,18 @@ interface IMoGoAutopilotProvider : IMoGoFunctionServerProvider {
/**
* 演示模式(美化模式)该设置作用域只限定于鹰眼
* 司机屏同步给乘客屏
* isEnable = true 开启
* isEnable = false 关闭
*/
fun setDemoMode(isEnable: Boolean)
/**
* 是否忽略条件直接绘制
* 司机屏同步给乘客屏
*/
fun setIgnoreConditionDraw(isIgnore: Boolean)
/**
* 设置工控机演示模式(美化模式)开启、关闭
* isEnable = true 开启

View File

@@ -160,6 +160,14 @@ object CallerAutoPilotManager {
providerApi?.setDemoMode(isEnable)
}
/**
* 是否忽略条件直接绘制
* 司机屏同步给乘客屏
*/
fun setIgnoreConditionDraw(isIgnore: Boolean) {
providerApi?.setIgnoreConditionDraw(isIgnore)
}
/**
* 设置工控机演示模式(美化模式)开启、关闭
* isEnable = true 开启

View File

@@ -1,10 +1,12 @@
package com.mogo.eagle.core.function.call.autopilot
import android.util.*
import androidx.annotation.Nullable
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.mogo.eagle.core.utilcode.util.GsonUtils
import mogo.telematics.pad.MessagePad
import mogo_msg.MogoReportMsg
@@ -29,6 +31,10 @@ object CallerAutoPilotStatusListenerManager : CallerBase() {
@Volatile
private var autoPilotMessageCode: String = ""
@Volatile
private var autoPilotMessageContent: String = ""
/**
* 查询AutoPilot状态
*/
@@ -45,6 +51,8 @@ object CallerAutoPilotStatusListenerManager : CallerBase() {
fun getAutoPilotReportMessageCode(): String = autoPilotMessageCode
fun getAutoPilotReportMessageContent(): String = autoPilotMessageContent
/**
* 通过Gnss定位更新来同步更新自动驾驶状态
*/
@@ -171,6 +179,8 @@ object CallerAutoPilotStatusListenerManager : CallerBase() {
M_AUTOPILOT_STATUS_LISTENERS.forEach {
val listener = it.value
autoPilotMessageCode = guardianInfo?.code ?: ""
autoPilotMessageContent = guardianInfo?.msg ?: ""
Logger.d("XXXXX", "code: ${guardianInfo?.code}, msg: ${guardianInfo?.msg}")
listener.onAutopilotGuardian(guardianInfo)
}
}

View File

@@ -39,3 +39,61 @@ enum EPSSteeringMode {
ManualFromEPSFailure = 3;
TemporaryInhibited = 4;
}
enum EPBWorkStatus {
EPBSTATUS_NONE = 0;
EPBSTATUS_LOCKED = 1;
EPBSTATUS_RELEASED = 2;
EPBSTATUS_LOCKED_FAIL = 3;
EPBSTATUS_RELEASE_FAIL = 4;
EPBSTATUS_FAULT = 5;
}
enum VehicleTakeOverStatus {
None_TakeOver = 0;
Vehicle_TakeOver = 1;
Longitude_TakeOver = 2;
Latteral_TakeOver = 3;
}
enum VehicleFaultLevel {
None_Fault = 0;
General_Fault = 1;
Serious_Fault = 2;
Critical_Fault = 3;
}
enum VehicleControlMode {
VehicleControl_Manual = 0;
VehicleControl_Nonemanualdefault = 1;
VehicleControl_Autostandby = 2;
VehicleControl_Autoactive = 3;
VehicleControl_Remotestandby = 4;
VehicleControl_Remoteactive = 5;
VehicleControl_Telecontrolstandby = 6;
VehicleControl_Telecontrolactive = 7;
VehicleControl_Fault = 8;
}
enum VehicleWireControlModeRequest {
NoneWireControl = 0;
WireControl = 1;
}
enum CleanSystemControlMode {
Clean_Off_Line = 0;
Clean_Ready = 1;
Clean_Work_Standby = 2;
Clean_Sweeping_Standby = 3;
Clean_Sweeping_Both_Side_Work = 4;
Clean_Sweeping_Left_Work = 5;
Clean_Sweeping_Right_Work = 6;
Clean_WashSweep_Standby = 7;
Clean_WashSweep_Both_Side_Work = 8;
Clean_WashSweep_Left_Work = 9;
Clean_WashSweep_Right_Wrok = 10;
Clean_PureWash_Standby = 11;
Clean_PureWash_Both_Side_Work = 12;
Clean_PureWash_Left_Work = 13;
Clean_PureWash_Right_Work = 14;
}

View File

@@ -83,7 +83,7 @@ message Trajectory
// message definition for MsgTypeTrackedObjects
message SubSource
{
uint32 source = 1; //[default = 0] v2v_bsm = 1(v2x他车自车信息) v2i_rsm = 2(v2x路侧感知交通参与者信息) v2v_ssm = 3(v2x他车感知信息) v2n_cloud = 4(v2x云端感知信息)
uint32 source = 1; //[default = 0] v2v_bsm = 1 v2i_rsm = 2 v2v_ssm = 3 v2n_rsm = 4 v2n_rsi = 5
string id = 2; //HEX_string
}
@@ -97,7 +97,8 @@ message TrackedObject
{
uint32 type = 1; //物体类型, 0:Background, 1:Person, 2:Bicycle, 3:Car, 4:MotorCycle,
//5:TrafficSign, 6:Bus, 7:CellPhone, 8:Truck, 9:Bottle, 10:TrafficLight,
//11:Rider, 12:TriangleRoadblock, 13:WarningTriangle, 100:Unknown
//11:Rider, 12:TriangleRoadblock, 13:WarningTriangle, 100:Unknown,
//501:RoadWork_occupy_0501, 502:RoadWork_break_0502
double longitude = 2; //经度
double latitude = 3; //纬度
double altitude = 4; //海拔
@@ -111,6 +112,7 @@ message TrackedObject
uint32 drawLevel = 12; //危险等级 1 绿,2 黄,3 红
double driverTime = 13; //驱动感知时间, abandoned
repeated TrackedSource tracked_source = 14;
repeated Location polygon = 15;
}
message TrackedObjects

View File

@@ -1,10 +1,12 @@
syntax = "proto2";
package chassis;
import "header.proto";
message RoboSweeperFuTianCleanCmd {
optional uint32 clean_open_requirement = 1 [default = 0]; // 清扫作业开启需求 0--no req 1--Req_clean_work, 2--No_clean_work
optional uint32 clean_mode_requirement = 2 [default = 0]; // 清扫作业模式需求 0--no req, 1--Sweeping mode, 2--Wash sweeper mode, 3--Pure wash mode, 4--Pure draw mode
optional uint32 clean_direction_requirement = 3 [default = 0]; // 清扫方向需求指 0--no req, 1--both side work, 2--left side work, 3--right side work
optional uint32 clean_mode_requirement = 2 [default = 0]; // 清扫作业模式需求 0--no req, 1--Sweeping mode, 2--Wash sweeper mode, 3--Pure wash mode, 4--Pure draw mode, 5--close clean mode
optional uint32 clean_direction_requirement = 3 [default = 0]; // 清扫方向需求指 0--no req, 1--both side work, 2--left side work, 3--right side work, 4--close side work
optional uint32 clean_intensity_requirement = 4 [default = 0]; // 作业强度需求 0--no req, 1--stand clean work, 2--strong clean work
optional uint32 dusk_close_requirement = 5 [default = 0]; // 降尘关闭需求 0--no req, 1--close dusk, 2--open dusk
optional uint32 suction_nozzlefle_open_requirement = 6 [default = 0]; // 吸嘴挡板需求 0--no req, 1--open, 2--close
@@ -22,6 +24,7 @@ message RoboVanSkywellTaskCmd {
}
message SpecialVehicleTaskCmd {
optional RoboSweeperFuTianTaskCmd robo_sweeper_futian_task_cmd = 1; // 福田清扫车业务指令
optional RoboVanSkywellTaskCmd robo_van_skywell_task_cmd = 2; // 开沃小巴业务指令
optional common.Header header = 1;
optional RoboSweeperFuTianTaskCmd robo_sweeper_futian_task_cmd = 2; // 福田清扫车业务指令
optional RoboVanSkywellTaskCmd robo_van_skywell_task_cmd = 3; // 开沃小巴业务指令
}

View File

@@ -4,6 +4,51 @@ package chassis;
import "header.proto";
import "chassis.proto";
message SweeperFuTianCleanSystemState {
optional bool secu_rem_ctrl_sts = 1 [default = false]; // 远程控制使能信号
optional bool secu_mot_work_sts = 2 [default = false]; // 电机启停控制状态信号
optional bool secu_dup_tail_door_open_sts = 3 [default = false]; // 垃圾箱尾门开状态信号
optional bool secu_dup_tail_door_close_sts = 4 [default = false]; // 垃圾箱尾门关状态信号
optional bool secu_auto_dup_tail_tip_sts = 5 [default = false]; // 垃圾箱倾翻状态信号
optional bool secu_dup_tail_ret_sts = 6 [default = false]; // 垃圾箱回位状态信号
optional bool secu_work_stand_sts = 7 [default = false]; // 标准作业状态信号
optional bool secu_work_strong_sts = 8 [default = false]; // 强力作业状态信号
optional bool secu_suctionnozzlebaffle_sts = 9 [default = false]; // 吸嘴挡板开状态信号
optional bool secu_dusk_close_sts = 10 [default = false]; // 降尘关闭状态信号
optional bool secu_work_left_sts = 11 [default = false]; // 左侧作业状态信号
optional bool secu_work_on_bothsides_sts = 12 [default = false]; // 两侧作业状态信号
optional bool secu_work_right_sts = 13 [default = false]; // 右侧作业状态信号
optional bool secu_work_ton_sts = 14 [default = false]; // 纯吸作业状态信号
optional bool secu_work_spray_gun_sts = 15 [default = false]; // 喷雾喷枪作业状态信号
optional bool secu_work_enc_des_sts = 16 [default = false]; // 箱体清淤作业状态信号
optional bool secu_mod_wash_sweep_sts = 17 [default = false]; // 洗扫模式状态信号
optional bool secu_mod_wash_sts = 18 [default = false]; // 纯洗模式状态信号
optional bool secu_sweepdisk_red_sts = 19 [default = false]; // 扫盘减速开关状态信号
optional bool secu_sweepdisk_acc_sts = 20 [default = false]; // 扫盘加速开关状态信号
optional bool secu_arrowlight_sts = 21 [default = false]; // 箭头灯开关状态信号
optional bool secu_floodlight_sts = 22 [default = false]; // 照明灯开关状态信号
optional bool secu_work_cleaning_sts = 23 [default = false]; // 保洁作业状态信号
optional bool secu_clean_music_sts = 24 [default = false]; // 音乐开关状态信号
optional bool secu_motor_oil_com_fail = 25 [default = false]; // 油泵电机通讯失败报警
optional bool secu_motor_water_com_fail = 26 [default = false]; // 水泵电机通讯失败报警
optional bool secu_motor_air_com_fail = 27 [default = false]; // 风机电机通讯失败报警
optional bool secu_fan_fault = 28 [default = false]; // 散热风扇故障报警
optional bool secu_chassis_com_fail = 29 [default = false]; // 底盘通讯失败报警
optional bool secu_panel_com_fail = 30 [default = false]; // 操作面板通讯失败报警
optional bool secu_oillevel_check = 31 [default = false]; // 液压油位低请停机检查报警信号
optional bool secu_oilstmjam_check = 32 [default = false]; // 液压油滤堵塞请停机检查报警信号
optional bool secu_water_valve_close = 33 [default = false]; // 出水阀门关闭不能清洗作业报警信号
optional bool secu_clean_water_tank_low = 34 [default = false]; // 清水箱水位低不能清洗作业报警信号
optional bool secu_sewage_water_tank_full = 35 [default = false]; // 污水箱满请停止作业报警信号
optional bool secu_coolwatertemp_high = 36 [default = false]; // 水温过高请停机检查报警信号
optional bool secu_coolwater_less = 37 [default = false]; // 冷却液位低报警信号
optional bool secu_tail_gate_open = 38 [default = false]; // 尾门打开接近开关
optional bool secu_manual_intervention_sts = 39 [default = false]; // 提示是否有人为介入
optional bool secu_ready_finish_sts = 40 [default = false]; // 上装ready完成
optional float secu_sweepdisk_speed = 41 [default = 0]; // 扫盘转速
}
message VehicleState {
optional common.Header header = 1;
optional chassis.PilotMode pilot_mode = 2 [default = MODE_MANUAL];
@@ -38,4 +83,19 @@ message VehicleState {
optional bool chassis_status_missing = 29 [default = false]; //未收到车辆底盘反馈信息
optional bool brake_light_status = 30 [default = false]; //自驾模式下制动灯状态
optional bool pilot_mode_condition_met = 31 [default = false];
optional float steeringSpd = 32 [default = 0]; // steering angle speed in degrees/s
optional float leftFrontWheelAngle = 33 [default = 0];//左前轮角度deg,左负右正
optional float rightFrontWheelAngle = 34 [default = 0]; //右前轮角度deg,左负右正
optional chassis.EPBWorkStatus epb = 35 [default = EPBSTATUS_NONE]; // EPB工作状态
optional chassis.VehicleTakeOverStatus vehicletakeoverstatus = 36 [default = None_TakeOver]; // 车辆人工接管状态
optional bool Emergency_Stop_Switch = 37 [default = false]; // 急停开关状态
optional chassis.VehicleFaultLevel vehiclefaultlevel = 38 [default = None_Fault]; // 整车故障状态
reserved 39 to 199;
optional SweeperFuTianCleanSystemState sweeper_futian_clean_system_state = 200; // 福田清扫车上装状态信息
}

View File

@@ -12,6 +12,7 @@ import com.bytedance.apm.insight.ApmInsight;
import com.bytedance.apm.insight.ApmInsightAgent;
import com.bytedance.apm.insight.ApmInsightInitConfig;
import com.mogo.commons.constants.SharedPrefsConstants;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.bindingcar.CarInfo;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
@@ -35,6 +36,7 @@ import java.util.Map;
@Route(path = CrashReportConstants.PATH)
public class ApmCrashReportProvider implements ITestCrashReportProvider {
private static final String BYTEAMP_APPID = "302368";
private static final String BYTEAMP_APPID_DEV = "379950";
private static final String TAG = "ApmCrashReportProvider";
private static final String MAP_SDK_VERSION = "MAP_SDK_VERSION";
@@ -50,8 +52,7 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider {
}
private void initCrash(final Context context) {
MonitorCrash crash = MonitorCrash.init(context, BYTEAMP_APPID, CommonUtils.getVersionCode(context), CommonUtils.getVersionName(context))
MonitorCrash crash = MonitorCrash.init(context, DebugConfig.isDebug() ? BYTEAMP_APPID_DEV : BYTEAMP_APPID, CommonUtils.getVersionCode(context), CommonUtils.getVersionName(context))
.setCustomDataCallback(new AttachUserData() {
@Override
public Map<? extends String, ? extends String> getUserData(CrashType type) {