[pb12][清扫车指标数据]添加清扫车指标数据,以及移除老底盘回调,添加int字段用于判断新老底盘来源

This commit is contained in:
xinfengkun
2023-01-10 14:44:35 +08:00
parent 084efad76a
commit c4876e612f
16 changed files with 168 additions and 56 deletions

View File

@@ -81,7 +81,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
private final Map<MessagePad.MessageType, DispatchHandler> dispatchHandlers = new HashMap<>();//其他分发线程
private Timer checkCompatibilityTimer;//检查版本兼容性定时器 连接成功后5秒内等待工控机发送配置信息
private int seqSpecialVehicle = 0;//特种车辆命令发送次数
private int usedChassisType = Constants.CHASSIS_TYPE.UNKNOWN;//使用的底盘类型 新老
/**
* 与工控机链接状态
*/
@@ -288,6 +288,11 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
return ipcConnectedPort;
}
@Override
public int getUsedChassisType() {
return usedChassisType;
}
/**
* 发送ws消息
*
@@ -362,13 +367,21 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
if (!adasOptions.isClient())
ReceiveTimeoutManager.getInstance().refreshLast(header.getTimestamp());
// CupidLogUtils.w("--->websocket byte read header = " + messageType.toString());
DispatchHandler handler = dispatchHandlers.get(header.getMsgType());
MessagePad.MessageType messageType = header.getMsgType();
DispatchHandler handler = dispatchHandlers.get(messageType);
if (handler != null) {
handler.sendRawMessage(raw);
} else {
if (defaultDispatchHandler != null)
defaultDispatchHandler.sendRawMessage(raw);
}
if (messageType == MessagePad.MessageType.MsgTypeVehicleState) {
//老底盘接口
usedChassisType = Constants.CHASSIS_TYPE.OLD_CHASSIS;
} else if (messageType == MessagePad.MessageType.MsgTypeChassisStates) {
//新底盘接口
usedChassisType = Constants.CHASSIS_TYPE.NEW_CHASSIS;
}
} else {
callError(raw.getProtocolStatus(), byteString.toByteArray());
}
@@ -514,6 +527,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
ipcConnectedIp = null;
ipcConnectedPort = Constants.DEFAULT_PORT;
subscribeInterface = null;
usedChassisType = Constants.CHASSIS_TYPE.UNKNOWN;
updateConnectStatus(Constants.IPC_CONNECTION_STATUS.DISCONNECTED, t);
}

View File

@@ -257,6 +257,16 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel == null ? Constants.DEFAULT_PORT : mChannel.getIpcConnectedPort();
}
/**
* 获取使用底盘的类型
*
* @return {@link Constants.CHASSIS_TYPE}
*/
@Override
public int getUsedChassisType() {
return mChannel == null ? Constants.CHASSIS_TYPE.UNKNOWN : mChannel.getUsedChassisType();
}
/**
* 自动驾驶设备基础信息应答
*

View File

@@ -59,6 +59,13 @@ public interface IAdasNetCommApi {
*/
int getIpcConnectedPort();
/**
* 获取使用底盘的类型
*
* @return {@link Constants.CHASSIS_TYPE}
*/
int getUsedChassisType();
/**
* 自动驾驶设备基础信息应答
*

View File

@@ -5,11 +5,11 @@ import com.zhidao.support.adas.high.bean.AutopilotStatistics;
import com.zhidao.support.adas.high.common.ProtocolStatus;
import chassis.ChassisStatesOuterClass;
import chassis.VehicleStateOuterClass;
import function_state_management.FunctionStates;
import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg;
import perception.TrafficLightOuterClass;
import planning.RoboSweeperTaskIndexOuterClass;
import prediction.Prediction;
import record_cache.RecordPanelOuterClass;
import system_master.SystemStatusInfo;
@@ -52,16 +52,6 @@ public interface OnAdasListener {
*/
void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo);
/**
* 老底盘信息,透传底盘状态pb参考底盘
* TODO 老地盘数据会转发到新地盘
* TODO 鹰眼不要用此接口展示页面相关,可以用来记录链路日志
* TODO 后期可能会优化掉
*
* @param header 头
* @param vehicleState 数据
*/
void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState);
/**
* 底盘状态
@@ -201,6 +191,14 @@ public interface OnAdasListener {
*/
void onFunctionStates(MessagePad.Header header, FunctionStates.FSMFunctionStates functionStates);
/**
* 清扫车指标数据
*
* @param header 头
* @param roboSweeperTaskIndex 数据
*/
void onSweeperTaskIndexData(MessagePad.Header header, RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex);
/**
* 是否有能力启动自动驾驶
*

View File

@@ -132,4 +132,13 @@ public class Constants {
int TIMEOUT = 3;
}
/**
* 使用底盘数据类型
*/
public interface CHASSIS_TYPE {
int UNKNOWN = -1;//未知
int NEW_CHASSIS = 0;//新底盘
int OLD_CHASSIS = 1;//老底盘
}
}

View File

@@ -55,7 +55,9 @@ public enum MessageType {
TYPE_SEND_TRIP_INFO_REQ(MessagePad.MessageType.MsgTypeTripInfoEvent, "行程信息"),
TYPE_SEND_SPECIAL_VEHICLE_TASK_CMD(MessagePad.MessageType.MsgTypeSpecialVehicleTaskCmd, "特种车辆命令"),
//TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态");
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"),
TYPE_RECEIVE_SWEEPER_TASK_INDEX_DATA(MessagePad.MessageType.MsgTypeSweeperTaskIndexData, "清扫车指标数据"),
;
/**

View File

@@ -33,6 +33,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg recordDataConfigRespMessage;//数据采集配置应答
private IMsg planningDecisionStateMessage;//planning决策状态
private IMsg functionStatesMessage;//重构后的功能状态
private IMsg sweeperTaskIndexDataMessage;//清扫车指标数据
private final AutopilotReview autopilotReview;
@@ -156,6 +157,12 @@ public class MyMessageFactory implements IMyMessageFactory {
planningDecisionStateMessage = new PlanningDecisionStateMessage();
}
return planningDecisionStateMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_SWEEPER_TASK_INDEX_DATA.typeCode) {
//清扫车指标数据
if (sweeperTaskIndexDataMessage == null) {
sweeperTaskIndexDataMessage = new SweeperTaskIndexDataMessage();
}
return sweeperTaskIndexDataMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_FUNCTION_STATES.typeCode) {
//重构后的功能状态
if (functionStatesMessage == null) {

View File

@@ -0,0 +1,31 @@
package com.zhidao.support.adas.high.msg;
import android.os.SystemClock;
import com.google.protobuf.InvalidProtocolBufferException;
import com.zhidao.support.adas.high.AdasChannel;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.protocol.RawData;
import planning.RoboSweeperTaskIndexOuterClass;
/**
* 清扫车指标数据
*/
public class SweeperTaskIndexDataMessage extends MyAbstractMessageHandler {
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex = RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
AdasChannel.calculateTimeConsumingOnDispatchRaw("清扫车指标数据", raw.receiveTime);
long nowTime = 0;
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
adasListener.onSweeperTaskIndexData(raw.getHeader(), roboSweeperTaskIndex);
}
AdasChannel.calculateTimeConsumingBusiness("清扫车指标数据", nowTime);
}
}

View File

@@ -29,7 +29,6 @@ public class VehicleStateMessage extends MyAbstractMessageHandler {
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
compatibility(adasListener, raw, vehicleState);
adasListener.onVehicleState(raw.getHeader(), vehicleState);
}
AdasChannel.calculateTimeConsumingBusiness("底盘信息", nowTime);
// CupidLogUtils.e("底盘信息--->" + vehicleState.toString());