[8.4.0][司机屏] 无人化,任务管理相关逻辑

This commit is contained in:
xinfengkun
2026-03-05 14:14:25 +08:00
parent 42d72654bd
commit 13c8808659
49 changed files with 2506 additions and 429 deletions

View File

@@ -83,6 +83,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendRes
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm
import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory
import com.zhjt.service.chain.ChainLog
import io.netty.channel.Channel
import mogo.telematics.pad.MessagePad
@@ -99,9 +100,9 @@ import java.util.concurrent.TimeUnit
*/
@Route(path = MogoServicePaths.PATH_AUTO_PILOT)
class MoGoAutopilotControlProvider :
IMoGoAutopilotControlProvider,
IMoGoMapDataCollectProvider.OnMapCollectCmdListener,
IMoGoAutopilotCarConfigListener {
IMoGoAutopilotControlProvider,
IMoGoMapDataCollectProvider.OnMapCollectCmdListener,
IMoGoAutopilotCarConfigListener {
private val TAG = "MoGoAutoPilotProvider"
private var mContext: Context? = null
private lateinit var msgHandler: IMsgHandler
@@ -109,6 +110,7 @@ class MoGoAutopilotControlProvider :
@Volatile
private var isInit = false
@Volatile
private var isRainModeInit = false
@@ -137,22 +139,22 @@ class MoGoAutopilotControlProvider :
// "192.168.1.102"
val options = AdasOptions.newBuilder()
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.PING)
.setPingAddressList(AdasManager.getInstance().pingAddressList)
.setPassenger(false)
.setEnableCertification(SharedPrefsMgr.getInstance().getBoolean("${MoGoConfig.AUTOPILOT_CERTIFICATION}-${DebugConfig.getNetMode()}", MoGoConfig.AUTOPILOT_CERTIFICATION_DEFAULT_VALUE))
.setRootCrt(CallerCloudCertManager.getRootCrtFDecode())
.setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode())
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.PING)
.setPingAddressList(AdasManager.getInstance().pingAddressList)
.setPassenger(false)
.setEnableCertification(SharedPrefsMgr.getInstance().getBoolean("${MoGoConfig.AUTOPILOT_CERTIFICATION}-${DebugConfig.getNetMode()}", MoGoConfig.AUTOPILOT_CERTIFICATION_DEFAULT_VALUE))
.setRootCrt(CallerCloudCertManager.getRootCrtFDecode())
.setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode())
// .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear)
// .setSubscribeInterfaceOptions(subscribeInterfaceOptions)//
.build()
.build()
AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object :
NettyServerListener<MogoProtocolMsg> {
NettyServerListener<MogoProtocolMsg> {
override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) {
msgHandler.handleMsgFromClient(msg, channel)
}
@@ -205,26 +207,26 @@ class MoGoAutopilotControlProvider :
}, SharedPrefsMgr.getInstance().sn)
} else {
NSDNettyManager.getInstance()
.searchAndConnectServer(context, SharedPrefsMgr.getInstance().sn,
DeviceUtils.isLeOrEb5Model(),
object : NettyClientListener<MogoProtocolMsg> {
override fun onMessageResponseClient(
msg: MogoProtocolMsg?,
sign: String?,
channel: Channel
) {
// 乘客端收到adas数据直接解析后续分发解析后的数据流程同司机端
msgHandler.handleMsgFromServer(msg, channel)
}
.searchAndConnectServer(context, SharedPrefsMgr.getInstance().sn,
DeviceUtils.isLeOrEb5Model(),
object : NettyClientListener<MogoProtocolMsg> {
override fun onMessageResponseClient(
msg: MogoProtocolMsg?,
sign: String?,
channel: Channel
) {
// 乘客端收到adas数据直接解析后续分发解析后的数据流程同司机端
msgHandler.handleMsgFromServer(msg, channel)
}
override fun onClientStatusConnectChanged(
statusCode: Int,
sign: String?,
channel: Channel
) {
msgHandler.handleClientConnStatus(statusCode, sign, channel)
}
})
override fun onClientStatusConnectChanged(
statusCode: Int,
sign: String?,
channel: Channel
) {
msgHandler.handleClientConnStatus(statusCode, sign, channel)
}
})
}
msgHandler.setListener(object : EventListener {
override fun connectDevice(isSupportMulti: Boolean) {
@@ -243,12 +245,12 @@ class MoGoAutopilotControlProvider :
directConnect(context)
} else {
val options = AdasOptions
.newBuilder()
.setPassenger(true)
.newBuilder()
.setPassenger(true)
// .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear)
.build()
.build()
AdasManager.getInstance()
.create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
.create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
// 接收司机屏发过来的感知、定位等数据
@@ -274,15 +276,15 @@ class MoGoAutopilotControlProvider :
private fun directConnect(context: Context) {
val options = AdasOptions
.newBuilder()
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.PING)
.setPingAddressList(AdasManager.getInstance().pingAddressList)
.setPassenger(false)// 乘客端直连工控机改为false
.setEnableCertification(SharedPrefsMgr.getInstance().getBoolean("${MoGoConfig.AUTOPILOT_CERTIFICATION}-${DebugConfig.getNetMode()}", MoGoConfig.AUTOPILOT_CERTIFICATION_DEFAULT_VALUE))
.setRootCrt(CallerCloudCertManager.getRootCrtFDecode())
.setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode())
.newBuilder()
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.PING)
.setPingAddressList(AdasManager.getInstance().pingAddressList)
.setPassenger(false)// 乘客端直连工控机改为false
.setEnableCertification(SharedPrefsMgr.getInstance().getBoolean("${MoGoConfig.AUTOPILOT_CERTIFICATION}-${DebugConfig.getNetMode()}", MoGoConfig.AUTOPILOT_CERTIFICATION_DEFAULT_VALUE))
.setRootCrt(CallerCloudCertManager.getRootCrtFDecode())
.setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode())
// .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear)
.build()
.build()
AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据
@@ -301,7 +303,7 @@ class MoGoAutopilotControlProvider :
if (NSDNettyManager.getInstance().isServerStart) {
msgHandler.synWriteTime()
NSDNettyManager.getInstance()
.sendMsgToAllClients(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes))
.sendMsgToAllClients(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes))
} else {
CallerLogger.d("$M_D_C$TAG", "司机端Server未启动")
}
@@ -311,10 +313,10 @@ class MoGoAutopilotControlProvider :
if (bytes == null)
return
NSDNettyManager.getInstance()
.sendMogoProtocolMsgToServer(
MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes),
null
)
.sendMogoProtocolMsgToServer(
MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes),
null
)
}
})
@@ -338,13 +340,13 @@ class MoGoAutopilotControlProvider :
}
// 设置IP地址
val options = AdasOptions.newBuilder()
.setPassenger(false)
.setEnableCertification(SharedPrefsMgr.getInstance().getBoolean("${MoGoConfig.AUTOPILOT_CERTIFICATION}-${DebugConfig.getNetMode()}", MoGoConfig.AUTOPILOT_CERTIFICATION_DEFAULT_VALUE))
.setRootCrt(CallerCloudCertManager.getRootCrtFDecode())
.setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode())
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.SPECIFIED)
.setSpecifiedAddress(autoPilotIp)
.build()
.setPassenger(false)
.setEnableCertification(SharedPrefsMgr.getInstance().getBoolean("${MoGoConfig.AUTOPILOT_CERTIFICATION}-${DebugConfig.getNetMode()}", MoGoConfig.AUTOPILOT_CERTIFICATION_DEFAULT_VALUE))
.setRootCrt(CallerCloudCertManager.getRootCrtFDecode())
.setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode())
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.SPECIFIED)
.setSpecifiedAddress(autoPilotIp)
.build()
AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
// AdasManager.getInstance().adasOptions.isClient = false
@@ -381,10 +383,10 @@ class MoGoAutopilotControlProvider :
@ChainLog(
linkChainLog = AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = AdasChain.CHAIN_SOURCE_ADAS,
nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_START_AUTOPILOT,
paramIndexes = [0]
linkChainLog = AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = AdasChain.CHAIN_SOURCE_ADAS,
nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_START_AUTOPILOT,
paramIndexes = [0]
)
override fun startAutoPilot(controlParameters: AutopilotControlParameters): Long {
return startAutoPilot(controlParameters, Constants.AUTOPILOT_SOURCE.PAD)
@@ -392,9 +394,9 @@ class MoGoAutopilotControlProvider :
//todo emArrow chainlog
override fun startAutoPilotByMoFang(controlParameters: AutopilotControlParameters?) {
if (controlParameters==null){
if (controlParameters == null) {
startAutoPilotWithNoParameter(Constants.AUTOPILOT_SOURCE.MO_FANG)
}else{
} else {
startAutoPilot(controlParameters, Constants.AUTOPILOT_SOURCE.MO_FANG)
}
}
@@ -406,12 +408,12 @@ class MoGoAutopilotControlProvider :
private fun startAutoPilotWithNoParameter(source: Int) {
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
val invokeResult = AdasManager.getInstance()
.sendAutoPilotModeReq(1, source, null, null, null)
.sendAutoPilotModeReq(1, source, null, null, null)
invokeAutoPilotResult(if (invokeResult > -1) "无参自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
} else {
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
val invokeResult = AdasManager.getInstance()
.sendAutoPilotModeReq(1, source, null, null, null)
.sendAutoPilotModeReq(1, source, null, null, null)
invokeAutoPilotResult(if (invokeResult > -1) "无参自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
} else {
invokeAutoPilotResult("车机与工控机链接失败,无法开启自动驾驶 无参")
@@ -420,20 +422,20 @@ class MoGoAutopilotControlProvider :
}
private fun startAutoPilot(controlParameters: AutopilotControlParameters, source: Int): Long {
val startPosType = if(controlParameters.firstStationFlag==null){
val startPosType = if (controlParameters.firstStationFlag == null) {
null
}else{
} else {
MessagePad.StartPosType.forNumber(controlParameters.firstStationFlag!!)
}
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
val invokeResult = AdasManager.getInstance()
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo(), startPosType)
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo(), startPosType)
invokeAutoPilotResult(if (invokeResult > -1) "自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
return invokeResult
} else {
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
val invokeResult = AdasManager.getInstance()
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo(), startPosType)
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo(), startPosType)
invokeAutoPilotResult(if (invokeResult > -1) "自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
return invokeResult
} else {
@@ -443,12 +445,35 @@ class MoGoAutopilotControlProvider :
}
}
override fun sendTaskManagerAutopilotStart(taskId: Long, traj: Trajectory): Long {
return if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
val invokeResult = AdasManager.getInstance().sendTaskManagerAutopilotStart(taskId, traj)
invokeAutoPilotResult(if (invokeResult > -1) "无人化 自动驾驶调用成功:${invokeResult}" else "无人化 自动驾驶调用失败, socket 或者 rawPack 可能为空")
invokeResult
} else {
invokeAutoPilotResult("无人化 车机与工控机链接失败,无法开启自动驾驶")
-1L
}
}
override fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, stationId: Long, stationName: String, stationSeq: Int, lon: Double, lat: Double): Long {
return if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
val invokeResult = AdasManager.getInstance().sendTaskManagerAutopilotContinue(trackId, taskId, stationId, stationName, stationSeq, lon, lat)
invokeAutoPilotResult(if (invokeResult > -1) "无人化 取消自动驾驶调用成功:${invokeResult}" else "无人化 取消自动驾驶调用失败, socket 或者 rawPack 可能为空")
invokeResult
} else {
invokeAutoPilotResult("无人化 车机与工控机链接失败,无法取消自动驾驶")
-1L
}
}
@ChainLog(
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
parentNodeAliasCode = ChainConstant.CHAIN_CODE_EAGLE_START_AUTOPILOT,
nodeAliasCode = ChainConstant.CHAIN_CODE_EAGLE_START_AUTOPILOT_RESULT,
paramIndexes = [0]
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
parentNodeAliasCode = ChainConstant.CHAIN_CODE_EAGLE_START_AUTOPILOT,
nodeAliasCode = ChainConstant.CHAIN_CODE_EAGLE_START_AUTOPILOT_RESULT,
paramIndexes = [0]
)
private fun invokeAutoPilotResult(status: String) {
CallerLogger.e("$M_D_C$TAG", status)
@@ -456,46 +481,50 @@ class MoGoAutopilotControlProvider :
override fun sendTrafficLightData(trafficLightResult: TrafficLightResult) {
AdasManager.getInstance().sendTrafficLightData(
trafficLightResult.crossId,
trafficLightResult.lat,
trafficLightResult.lon,
trafficLightResult.heading,
trafficLightResult.direction,
trafficLightResult.lightId,
trafficLightResult.laneNo,
trafficLightResult.arrowNo,
trafficLightResult.flashYellow,
trafficLightResult.toTrafficLightDetail(),
trafficLightResult.timeStamp
trafficLightResult.crossId,
trafficLightResult.lat,
trafficLightResult.lon,
trafficLightResult.heading,
trafficLightResult.direction,
trafficLightResult.lightId,
trafficLightResult.laneNo,
trafficLightResult.arrowNo,
trafficLightResult.flashYellow,
trafficLightResult.toTrafficLightDetail(),
trafficLightResult.timeStamp
)
}
override fun sendTrajectoryDownloadReq(
autoPilotLine: AutopilotControlParameters.AutoPilotLine,
routeInfo: MessagePad.RouteInfo?,
orderId: String?
autoPilotLine: AutopilotControlParameters.AutoPilotLine,
routeInfo: MessagePad.RouteInfo?,
orderId: String?
): Long {
return AdasManager.getInstance()
.sendTrajectoryDownloadReq(autoPilotLine.toAutoPilotLine(), routeInfo, orderId)
.sendTrajectoryDownloadReq(autoPilotLine.toAutoPilotLine(), routeInfo, orderId)
}
override fun sendTrajectoryDownloadReq(
autoPilotLine: AutopilotControlParameters.AutoPilotLine,
downloadType: Int,
routeInfo: MessagePad.RouteInfo?,
orderId: String?
autoPilotLine: AutopilotControlParameters.AutoPilotLine,
downloadType: Int,
routeInfo: MessagePad.RouteInfo?,
orderId: String?
): Long {
return AdasManager.getInstance().sendTrajectoryDownloadReq(
autoPilotLine.toAutoPilotLine(),
downloadType,
routeInfo,
orderId
autoPilotLine.toAutoPilotLine(),
downloadType,
routeInfo,
orderId
)
}
override fun cancelAutoPilot() {
override fun cancelAutoPilot(taskId: Long) {
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
val invokeResult = AdasManager.getInstance().sendAutoPilotModeReq(0, 1, null, null, null)
val invokeResult = if (taskId == (-1).toLong()) {
AdasManager.getInstance().sendAutoPilotModeReq(0, 1, null, null, null)
} else {
AdasManager.getInstance().sendTaskManagerAutopilotCancel(taskId)
}
invokeAutoPilotResult(if (invokeResult > -1) "取消自动驾驶调用成功:${invokeResult}" else "取消自动驾驶调用失败, socket 或者 rawPack 可能为空")
} else {
invokeAutoPilotResult("车机与工控机链接失败,无法取消自动驾驶")
@@ -504,7 +533,7 @@ class MoGoAutopilotControlProvider :
override fun recordPackage(): Boolean {
return AdasManager.getInstance()
.startRecordPackage((System.currentTimeMillis() / 1000).toInt(), 1) > -1
.startRecordPackage((System.currentTimeMillis() / 1000).toInt(), 1) > -1
}
override fun recordPackage(type: Int, id: Int): Boolean {
@@ -520,11 +549,11 @@ class MoGoAutopilotControlProvider :
}
override fun recordPackage(
type: Int,
id: Int,
duration: Int,
bduration: Int,
topics: List<String>
type: Int,
id: Int,
duration: Int,
bduration: Int,
topics: List<String>
): Boolean {
return AdasManager.getInstance().startRecordPackage(id, duration, type, bduration, topics) > -1
}
@@ -555,7 +584,7 @@ class MoGoAutopilotControlProvider :
override fun recordCause(key: String?, name: String?, id: String?, reason: String?) {
key?.let {
AdasManager.getInstance()
.sendRecordCause(it.toLong(), name ?: "", id ?: "", reason ?: "")
.sendRecordCause(it.toLong(), name ?: "", id ?: "", reason ?: "")
}
}
@@ -576,13 +605,13 @@ class MoGoAutopilotControlProvider :
// val byteArray = if (isEnable) byteArrayOf(1) else byteArrayOf(0)
if (NSDNettyManager.getInstance().isServerStart) {
NSDNettyManager.getInstance()
.sendMsgToAllClients(
MogoProtocolMsg(
SYNC_MODE_STATUS,
byteArray.size,
byteArray
.sendMsgToAllClients(
MogoProtocolMsg(
SYNC_MODE_STATUS,
byteArray.size,
byteArray
)
)
)
} else {
CallerLogger.d("$M_D_C$TAG", "同步美化模式状态时司机端Server未启动")
}
@@ -602,13 +631,13 @@ class MoGoAutopilotControlProvider :
}
if (NSDNettyManager.getInstance().isServerStart) {
NSDNettyManager.getInstance()
.sendMsgToAllClients(
MogoProtocolMsg(
SYNC_FUSION_COLOR_STATUS,
byteArray.size,
byteArray
.sendMsgToAllClients(
MogoProtocolMsg(
SYNC_FUSION_COLOR_STATUS,
byteArray.size,
byteArray
)
)
)
} else {
CallerLogger.d("$M_D_C$TAG", "同步感知颜色绘制时司机端Server未启动")
}
@@ -625,13 +654,13 @@ class MoGoAutopilotControlProvider :
}
if (NSDNettyManager.getInstance().isServerStart) {
NSDNettyManager.getInstance()
.sendMsgToAllClients(
MogoProtocolMsg(
11,
byteArray.size,
byteArray
.sendMsgToAllClients(
MogoProtocolMsg(
11,
byteArray.size,
byteArray
)
)
)
} else {
CallerLogger.d("$M_D_C$TAG", "同步美化模式状态时司机端Server未启动")
}
@@ -644,10 +673,10 @@ class MoGoAutopilotControlProvider :
* isEnable = false 关闭
*/
@ChainLog(
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_SEND,
paramIndexes = [0]
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_SEND,
paramIndexes = [0]
)
override fun setIPCDemoMode(isEnable: Boolean) {
if (isEnable) {
@@ -658,10 +687,10 @@ class MoGoAutopilotControlProvider :
}
@ChainLog(
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_SEND,
paramIndexes = [0]
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_SEND,
paramIndexes = [0]
)
override fun setRainMode(isEnable: Boolean) {
if (isEnable) {
@@ -678,10 +707,10 @@ class MoGoAutopilotControlProvider :
* @return boolean
*/
@ChainLog(
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_SEND,
paramIndexes = [0]
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_SEND,
paramIndexes = [0]
)
override fun sendDetouring(isEnable: Boolean): Boolean {
return if (isEnable) {
@@ -735,9 +764,9 @@ class MoGoAutopilotControlProvider :
* @return boolean
*/
override fun sendAebCmd(isEnable: Boolean): Boolean {
return if(isEnable){
return if (isEnable) {
AdasManager.getInstance().sendAebCmd(1) > -1
}else{
} else {
AdasManager.getInstance().sendAebCmd(0) > -1
}
}
@@ -749,9 +778,9 @@ class MoGoAutopilotControlProvider :
* @return boolean
*/
override fun sendLaneChangeRestrainValid(isEnable: Boolean): Boolean {
return if(isEnable){
return if (isEnable) {
AdasManager.getInstance().sendLaneChangeRestrainValid(1) > -1
}else{
} else {
AdasManager.getInstance().sendLaneChangeRestrainValid(0) > -1
}
}
@@ -763,9 +792,9 @@ class MoGoAutopilotControlProvider :
* @return boolean
*/
override fun sendStopYieldValid(isEnable: Boolean): Boolean {
return if(isEnable){
return if (isEnable) {
AdasManager.getInstance().sendStopYieldValid(1) > -1
}else{
} else {
AdasManager.getInstance().sendStopYieldValid(0) > -1
}
}
@@ -777,9 +806,9 @@ class MoGoAutopilotControlProvider :
* @return boolean
*/
override fun sendHadmapSpeedLimitValid(isEnable: Boolean): Boolean {
return if(isEnable){
return if (isEnable) {
AdasManager.getInstance().sendHadmapSpeedLimitValid(1) > -1
}else{
} else {
AdasManager.getInstance().sendHadmapSpeedLimitValid(0) > -1
}
}
@@ -791,9 +820,9 @@ class MoGoAutopilotControlProvider :
* @return boolean
*/
override fun sendRampThetaValid(isEnable: Boolean): Boolean {
return if(isEnable){
return if (isEnable) {
AdasManager.getInstance().sendRampThetaValid(1) > -1
}else{
} else {
AdasManager.getInstance().sendRampThetaValid(0) > -1
}
}
@@ -878,8 +907,8 @@ class MoGoAutopilotControlProvider :
* @param topicsNeedToCache
* @return boolean
*/
override fun getBadCaseConfig(reqType: Int,recordType: Int,topicsNeedToCache: List<String>): Boolean{
return AdasManager.getInstance().sendRecordDataConfigReq(reqType, recordType, topicsNeedToCache) > -1
override fun getBadCaseConfig(reqType: Int, recordType: Int, topicsNeedToCache: List<String>): Boolean {
return AdasManager.getInstance().sendRecordDataConfigReq(reqType, recordType, topicsNeedToCache) > -1
}
/**
@@ -887,13 +916,13 @@ class MoGoAutopilotControlProvider :
*/
override fun sendBagManagerCmd(bagManagerEntity: BagManagerEntity): Boolean {
val bagManager = BagManagerOuterClass.BagManager
.newBuilder()
.setReqType(bagManagerEntity.reqType)
.setKeyReq(bagManagerEntity.keyReq)
.newBuilder()
.setReqType(bagManagerEntity.reqType)
.setKeyReq(bagManagerEntity.keyReq)
// 更新包附加信息,发送请求且reqType=5时有效
val descReq = BagManagerOuterClass.BagDescription
.newBuilder()
.newBuilder()
bagManagerEntity.descReq?.let {
descReq.description = it.description
descReq.hasAudio = it.hasAudio
@@ -905,24 +934,24 @@ class MoGoAutopilotControlProvider :
// 空间使用信息,获取响应且reqType=1时有效
for (diskSpaceInfoEntity in bagManagerEntity.spaceInfoResp) {
val spaceInfoResp = BagManagerOuterClass.BagSpaceInfo
.newBuilder()
.newBuilder()
val diskSpaceInfo = BagManagerOuterClass.SpaceInfo
.newBuilder()
.setDirectory(diskSpaceInfoEntity.diskSpaceInfo.directory)
.setTotal(diskSpaceInfoEntity.diskSpaceInfo.total)
.setFree(diskSpaceInfoEntity.diskSpaceInfo.free)
.setUsed(diskSpaceInfoEntity.diskSpaceInfo.used)
.build()
.newBuilder()
.setDirectory(diskSpaceInfoEntity.diskSpaceInfo.directory)
.setTotal(diskSpaceInfoEntity.diskSpaceInfo.total)
.setFree(diskSpaceInfoEntity.diskSpaceInfo.free)
.setUsed(diskSpaceInfoEntity.diskSpaceInfo.used)
.build()
spaceInfoResp
.setHost(diskSpaceInfoEntity.host).diskSpaceInfo = diskSpaceInfo
.setHost(diskSpaceInfoEntity.host).diskSpaceInfo = diskSpaceInfo
for (entity in diskSpaceInfoEntity.BagDirsSpaceInfo) {
val bagDirsSpaceInfo = BagManagerOuterClass.SpaceInfo
.newBuilder()
.setDirectory(entity.directory)
.setTotal(entity.total)
.setFree(entity.free)
.setUsed(entity.used)
.build()
.newBuilder()
.setDirectory(entity.directory)
.setTotal(entity.total)
.setFree(entity.free)
.setUsed(entity.used)
.build()
spaceInfoResp.addBagDirsSpaceInfo(bagDirsSpaceInfo)
}
bagManager.addSpaceInfoResp(spaceInfoResp.build())
@@ -933,7 +962,7 @@ class MoGoAutopilotControlProvider :
if (bagsInfoRespEntity.itemType == 0) {
// 包描述信息
val bagDescription = BagManagerOuterClass.BagDescription
.newBuilder()
.newBuilder()
bagsInfoRespEntity.description?.let {
bagDescription.description = it.description
bagDescription.hasAudio = it.hasAudio
@@ -942,23 +971,23 @@ class MoGoAutopilotControlProvider :
}
val bagsInfoResp = BagManagerOuterClass.BagInfo
.newBuilder()
.setKey(bagsInfoRespEntity.key)
.setTotalSize(bagsInfoRespEntity.totalSize)
.setTimestamp(bagsInfoRespEntity.timestamp)
.setBagPath(bagsInfoRespEntity.bagPath)
.setMergeStat(bagsInfoRespEntity.mergeStat)
.setUploadStat(bagsInfoRespEntity.uploadStat)
.setDescription(bagDescription.build())
.newBuilder()
.setKey(bagsInfoRespEntity.key)
.setTotalSize(bagsInfoRespEntity.totalSize)
.setTimestamp(bagsInfoRespEntity.timestamp)
.setBagPath(bagsInfoRespEntity.bagPath)
.setMergeStat(bagsInfoRespEntity.mergeStat)
.setUploadStat(bagsInfoRespEntity.uploadStat)
.setDescription(bagDescription.build())
// 子包信息
for (subBagEntity in bagsInfoRespEntity.subBags) {
val subBag = BagManagerOuterClass.SubBag
.newBuilder()
.setKey(subBagEntity.key)
.setHost(subBagEntity.host)
.setSize(subBagEntity.size)
.build()
.newBuilder()
.setKey(subBagEntity.key)
.setHost(subBagEntity.host)
.setSize(subBagEntity.size)
.build()
bagsInfoResp.addSubBags(subBag)
}
bagManager.addBagsInfoResp(bagsInfoResp)
@@ -967,7 +996,7 @@ class MoGoAutopilotControlProvider :
//反馈上传cos桶结果,获取响应且reqType=3时有效
val uploadCosResp = BagManagerOuterClass.UploadCosStat
.newBuilder()
.newBuilder()
bagManagerEntity.uploadCosResp?.let {
uploadCosResp.key = it.key
@@ -1009,6 +1038,7 @@ class MoGoAutopilotControlProvider :
override fun sendBlindAreaCmd(switchCmd: Boolean) {
AdasManager.getInstance().sendBlindAreaCmd(switchCmd)
}
/**
* 向左变道
*/
@@ -1050,14 +1080,14 @@ class MoGoAutopilotControlProvider :
* @param isLastStop 是否最终站
* @return boolean
*/
override fun sendTripInfo(type: Int, lineName: String, departureStopName: String,arrivalStopName: String, isLastStop: Boolean) {
AdasManager.getInstance().sendTripInfoReq(type, lineName, departureStopName,arrivalStopName, isLastStop)
override fun sendTripInfo(type: Int, lineName: String, departureStopName: String, arrivalStopName: String, isLastStop: Boolean) {
AdasManager.getInstance().sendTripInfoReq(type, lineName, departureStopName, arrivalStopName, isLastStop)
LedSourceManager.updateTripInfoData(
type,
lineName,
departureStopName,
arrivalStopName,
isLastStop
type,
lineName,
departureStopName,
arrivalStopName,
isLastStop
)
}
@@ -1066,10 +1096,10 @@ class MoGoAutopilotControlProvider :
* 命令下发存在回执
*/
@ChainLog(
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_IPC_REBOOT,
paramIndexes = [-1]
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_IPC_REBOOT,
paramIndexes = [-1]
)
override fun sendIpcReboot() {
//重启所有节点
@@ -1081,10 +1111,10 @@ class MoGoAutopilotControlProvider :
* 命令下发存在回执
*/
@ChainLog(
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_POWER_OFF,
paramIndexes = [-1]
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_ADAS_POWER_OFF,
paramIndexes = [-1]
)
override fun sendIpcPowerOff(): Long {
val id = AdasManager.getInstance().sendIpcPowerOff()
@@ -1138,9 +1168,9 @@ class MoGoAutopilotControlProvider :
override fun getVIN(): String {
val carConfig = AdasManager.getInstance().carConfig
return if(carConfig != null){
return if (carConfig != null) {
carConfig.vinCode
}else{
} else {
""
}
}
@@ -1148,26 +1178,26 @@ class MoGoAutopilotControlProvider :
override fun connectSpecifiedServer(ip: String) {
ThreadUtils.getIoPool().submit {
NSDNettyManager.getInstance().connectSpecifiedServer(
ip,
NettyTcpServer.SERVER_PORT,
SharedPrefsMgr.getInstance().sn,
object : NettyClientListener<MogoProtocolMsg> {
override fun onMessageResponseClient(
msg: MogoProtocolMsg?,
sign: String?,
channel: Channel
) {
msgHandler.handleMsgFromServer(msg, channel)
}
ip,
NettyTcpServer.SERVER_PORT,
SharedPrefsMgr.getInstance().sn,
object : NettyClientListener<MogoProtocolMsg> {
override fun onMessageResponseClient(
msg: MogoProtocolMsg?,
sign: String?,
channel: Channel
) {
msgHandler.handleMsgFromServer(msg, channel)
}
override fun onClientStatusConnectChanged(
statusCode: Int,
sign: String?,
channel: Channel
) {
msgHandler.handleClientConnStatus(statusCode, sign, channel)
}
})
override fun onClientStatusConnectChanged(
statusCode: Int,
sign: String?,
channel: Channel
) {
msgHandler.handleClientConnStatus(statusCode, sign, channel)
}
})
}
}
@@ -1199,8 +1229,8 @@ class MoGoAutopilotControlProvider :
msgHandler.synMsgToAllClients()
} else {// 乘客屏
CallerDevaToolsManager.getBindingCarInfo(
carConfigResp.macAddress,
SharedPrefsMgr.getInstance().sn
carConfigResp.macAddress,
SharedPrefsMgr.getInstance().sn
)
// invokeNettyConnResult("乘客屏车牌号:${carConfigResp.plateNumber},Mac地址为${carConfigResp.macAddress}")
invokeNettyConnResult("${StringUtils.getString(R.string.module_core_passenger_plate)}${carConfigResp.plateNumber},${StringUtils.getString(R.string.module_core_mac_address)}${carConfigResp.macAddress}")
@@ -1223,10 +1253,10 @@ class MoGoAutopilotControlProvider :
}
@ChainLog(
linkChainLog = CHAIN_TYPE_STATUS,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_MULTI_CONNECT,
paramIndexes = [0]
linkChainLog = CHAIN_TYPE_STATUS,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = CHAIN_CODE_MULTI_CONNECT,
paramIndexes = [0]
)
private fun invokeNettyConnResult(status: String) {
CallerLogger.d("$M_D_C$TAG", status)
@@ -1297,7 +1327,7 @@ class MoGoAutopilotControlProvider :
* @return boolean
*/
override fun sendSweeperSuspendResumeTaskReq(isSuspend: Boolean, reqNo: String, suspendResumeTaskReq: SweeperTaskSuspendResume.SuspendResumeTaskReq): Boolean {
return AdasManager.getInstance().sendSweeperSuspendResumeTaskReq(isSuspend,reqNo, suspendResumeTaskReq) > -1
return AdasManager.getInstance().sendSweeperSuspendResumeTaskReq(isSuspend, reqNo, suspendResumeTaskReq) > -1
}
/**
@@ -1359,7 +1389,7 @@ class MoGoAutopilotControlProvider :
* * -1L添加到WS发送消息队列失败
*/
override fun sendPowerUnitSingleChannelControl(channel: PowerUnitChannel, cmd: Int): Long {
return AdasManager.getInstance().sendPowerUnitSingleChannelControl(channel,cmd)
return AdasManager.getInstance().sendPowerUnitSingleChannelControl(channel, cmd)
}
/**
@@ -1413,8 +1443,8 @@ class MoGoAutopilotControlProvider :
}
override fun sendParallelDrivingReq(
reqNo: String,
parallelRequest: ParallelDrivingRequest.ParallelRequest
reqNo: String,
parallelRequest: ParallelDrivingRequest.ParallelRequest
): Boolean {
return AdasManager.getInstance().sendParallelDrivingReq(reqNo, parallelRequest) > -1
}
@@ -1422,38 +1452,38 @@ class MoGoAutopilotControlProvider :
override fun setIsDrawPointCloud(isDrawPointCloud: Boolean) {
if (isDrawPointCloud) {
AdasManager.getInstance().subscribeInterface(
Constants.TERMINAL_ROLE.DRIVER,
Constants.SUBSCRIBE_TYPE.SUBSCRIBE,
MessageType.TYPE_RECEIVE_POINT_CLOUD)
Constants.TERMINAL_ROLE.DRIVER,
Constants.SUBSCRIBE_TYPE.SUBSCRIBE,
MessageType.TYPE_RECEIVE_POINT_CLOUD)
} else {
AdasManager.getInstance().subscribeInterface(
Constants.TERMINAL_ROLE.DRIVER,
Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE,
MessageType.TYPE_RECEIVE_POINT_CLOUD)
Constants.TERMINAL_ROLE.DRIVER,
Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE,
MessageType.TYPE_RECEIVE_POINT_CLOUD)
}
}
override fun setIsSubscribeM1StitchedVideo(isSubscribe: Boolean) {
if (isSubscribe) {
AdasManager.getInstance().subscribeInterface(
Constants.TERMINAL_ROLE.DRIVER,
Constants.SUBSCRIBE_TYPE.SUBSCRIBE,
MessageType.TYPE_RECEIVE_M1_STITCHED_VIDEO
Constants.TERMINAL_ROLE.DRIVER,
Constants.SUBSCRIBE_TYPE.SUBSCRIBE,
MessageType.TYPE_RECEIVE_M1_STITCHED_VIDEO
)
} else {
AdasManager.getInstance().subscribeInterface(
Constants.TERMINAL_ROLE.DRIVER,
Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE,
MessageType.TYPE_RECEIVE_M1_STITCHED_VIDEO
Constants.TERMINAL_ROLE.DRIVER,
Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE,
MessageType.TYPE_RECEIVE_M1_STITCHED_VIDEO
)
}
}
override fun setIsSubscribeBackCameraVideoVideo(role: Int, isSubscribe: Boolean) {
val type =
if (isSubscribe) Constants.SUBSCRIBE_TYPE.SUBSCRIBE else Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE
if (isSubscribe) Constants.SUBSCRIBE_TYPE.SUBSCRIBE else Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE
AdasManager.getInstance().subscribeInterface(
role, type, MessageType.TYPE_RECEIVE_BACK_CAMERA_VIDEO
role, type, MessageType.TYPE_RECEIVE_BACK_CAMERA_VIDEO
)
}
@@ -1462,10 +1492,10 @@ class MoGoAutopilotControlProvider :
}
override fun sendRoboBusJinlvM1AirConditionerCmd(
switchCmd: Int,
modeCmd: Int,
windSpeedCmd: Int,
temperatureCmd: Int
switchCmd: Int,
modeCmd: Int,
windSpeedCmd: Int,
temperatureCmd: Int
): Boolean {
return AdasManager.getInstance().sendRoboBusJinlvM1AirConditionerCmd(switchCmd, modeCmd, windSpeedCmd, temperatureCmd) > -1
}
@@ -1491,20 +1521,20 @@ class MoGoAutopilotControlProvider :
}
@ChainLog(
linkChainLog = AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = AdasChain.CHAIN_SOURCE_ADAS,
nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_SEND_PLANNING_CMD,
paramIndexes = [0]
linkChainLog = AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = AdasChain.CHAIN_SOURCE_ADAS,
nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_SEND_PLANNING_CMD,
paramIndexes = [0]
)
override fun sendPlanningCmd(cmd: Int): Boolean {
return AdasManager.getInstance().sendPlanningCmd(cmd) > -1
}
@ChainLog(
linkChainLog = AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = AdasChain.CHAIN_SOURCE_ADAS,
nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_SEND_PLANNING_CMD,
paramIndexes = [0]
linkChainLog = AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = AdasChain.CHAIN_SOURCE_ADAS,
nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_SEND_PLANNING_CMD,
paramIndexes = [0]
)
override fun sendPlanningLineChangeCmd(cmd: Int): Boolean {
return AdasManager.getInstance().sendPlanningLaneChangeCmd(cmd) > -1
@@ -1529,19 +1559,19 @@ class MoGoAutopilotControlProvider :
}
override fun sendFrontCamera30Cmd(isStart: Boolean): Boolean {
return AdasManager.getInstance().sendFrontCamera30Cmd(isStart)>-1
return AdasManager.getInstance().sendFrontCamera30Cmd(isStart) > -1
}
override fun sendLidarCmd(isStart: Boolean): Boolean {
return AdasManager.getInstance().sendLidarCmd(isStart)> -1
return AdasManager.getInstance().sendLidarCmd(isStart) > -1
}
override fun sendLeftFrontRadarCmd(isStart: Boolean): Boolean {
return AdasManager.getInstance().sendLeftFrontRadarCmd(isStart)>-1
return AdasManager.getInstance().sendLeftFrontRadarCmd(isStart) > -1
}
override fun sendSimulationWireFailure(isTrigger: Boolean): Boolean {
return AdasManager.getInstance().sendSimulationWireFailure(isTrigger)>-1
return AdasManager.getInstance().sendSimulationWireFailure(isTrigger) > -1
}
/**
@@ -1551,10 +1581,10 @@ class MoGoAutopilotControlProvider :
* {@link SsmInfo.IfUpgrade#DELAY}:推迟
*/
override fun sendSsmFuncOtaDownloadResponse(
token: String,
ifUpgrade: SsmInfo.IfUpgrade
token: String,
ifUpgrade: SsmInfo.IfUpgrade
): Boolean {
return AdasManager.getInstance().sendSsmFuncOtaDownloadResponse(token, ifUpgrade)>-1
return AdasManager.getInstance().sendSsmFuncOtaDownloadResponse(token, ifUpgrade) > -1
}
/**
@@ -1563,7 +1593,7 @@ class MoGoAutopilotControlProvider :
* 如果没有可以传null或""
*/
override fun sendSsmFuncOtaStatusQuery(token: String): Boolean {
return AdasManager.getInstance().sendSsmFuncOtaStatusQuery(token)>-1
return AdasManager.getInstance().sendSsmFuncOtaStatusQuery(token) > -1
}
/**
@@ -1581,7 +1611,7 @@ class MoGoAutopilotControlProvider :
* 域控响应接口{@link OnAdasListener#onCaptureImgOnTakeOver(MessagePad.Header, boolean, MessagePad.CaptureImgOnTakeOver)}
*/
override fun sendCaptureImgReqOnTakeOver(uuid: Long): Boolean {
return AdasManager.getInstance().sendCaptureImgReqOnTakeOver(uuid)>-1
return AdasManager.getInstance().sendCaptureImgReqOnTakeOver(uuid) > -1
}
/**

View File

@@ -155,6 +155,8 @@ import system_master.SystemStatusInfo
import vllm.Vlm
import java.io.PrintWriter
import java.io.StringWriter
import java.math.BigDecimal
import java.util.Date
import kotlin.math.roundToInt
/**
@@ -1674,6 +1676,28 @@ class MoGoAdasListenerImpl : OnAdasListener {
*/
override fun onPlanningStopLine(header: MessagePad.Header, mapMsg: Hadmap.MapMsg) {
}
override fun onAdasTaskManagerOriginal(header: MessagePad.Header, data: ByteArray) {
taskManagerOriginal(header, ByteUtil.byteArrToHex(data, false))
}
@ChainLog(
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
linkCode = CHAIN_SOURCE_ADAS,
nodeAliasCode = ChainConstant.CHAIN_CODE_ADAS_TASK_MANAGER_ORIGINAL,
paramIndexes = [0, 1]
)
private fun taskManagerOriginal(header: MessagePad.Header, data: String) {
CallerLogger.i("$M_D_C$TAG", "任务管理数据:$data")
}
override fun onAdasTaskManagerDeparture(taskId: Long?, siteId: Long?, sequence: Int?, ack: Boolean, reason: String?, stationTimeLeft: Double) {
}
override fun onAdasTaskManagerArrival(taskId: Long?, siteId: Long?, sequence: Int?, mileage: BigDecimal?) {
}
override fun onAdasTaskManagerComplete(taskId: Long?, userId: Long?, status: Int?, reason: String?, completedTime: Date?, mileage: BigDecimal?) {
}
/**

View File

@@ -80,6 +80,7 @@ class ChainConstant {
const val CHAIN_CODE_ADAS_COLD_START_STATE = "CHAIN_CODE_ADAS_COLD_START_STATE"
const val CHAIN_CODE_ADAS_LOST_FRAME = "CHAIN_CODE_ADAS_LOST_FRAME"
const val CHAIN_CODE_ADAS_ALL_ERROR = "CHAIN_CODE_ADAS_ALL_ERROR"//ADAS LIB中进行的异常捕获包括解析异常和数据使用异常UI层
const val CHAIN_CODE_ADAS_TASK_MANAGER_ORIGINAL = "CHAIN_CODE_ADAS_TASK_MANAGER_ORIGINAL"
const val CHAIN_CODE_RECORD_NATIVE_LEAK = "CHAIN_CODE_RECORD_NATIVE_LEAK"

View File

@@ -15,6 +15,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendRes
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirmResp
import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume.SuspendResumeTaskReq
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory
import mogo.telematics.pad.MessagePad
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest
import system_master.SsmInfo
@@ -44,6 +45,10 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
*/
fun startAutoPilot(controlParameters: AutopilotControlParameters): Long
fun sendTaskManagerAutopilotStart(taskId: Long, traj: Trajectory): Long
fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, stationId: Long, stationName: String, stationSeq: Int, lon: Double, lat: Double): Long
/**
* 开启自动驾驶(魔方)
*
@@ -75,7 +80,7 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
/**
* 结束自动驾驶
*/
fun cancelAutoPilot()
fun cancelAutoPilot(taskId: Long)
/**
* 开启域控制器录制bag包

View File

@@ -35,6 +35,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo.adas.data.bean.NodeStateInfo
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.BigTaskActionResp
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory
import com.zhjt.service.chain.ChainLog
import com.zhjt.service_biz.BizConfig
import kotlinx.coroutines.launch
@@ -90,6 +91,32 @@ object CallerAutoPilotControlManager {
return sessionId
}
/**
* 开启自动驾驶
*
* @param controlParameters 开启自动驾驶的控制参数
*/
fun unmannedStartAutoPilot(taskId: Long, traj: Trajectory?, controlParameters: AutopilotControlParameters): Long {
if (traj == null) {
//LogUtils.eTag(TAG, "自动驾驶控制参数异常,请检查参数信息")
return -1L
}
val sessionId = providerApi?.sendTaskManagerAutopilotStart(taskId, traj) ?: -1L
// 更新记录在全局的控制参数
CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(controlParameters)
return sessionId
}
//TODO 任务管理继续
// fun unmannedAutoPilotContinue(trackId: Long, taskId: Long, stationId: Long, stationName: String, stationSeq: Int, lon: Double, lat: Double): Long {
// if (traj == null) {
// //LogUtils.eTag(TAG, "自动驾驶控制参数异常,请检查参数信息")
// return -1L
// }
// val sessionId = providerApi?.sendTaskManagerAutopilotContinue(trackId, taskId, stationId, stationName, stationSeq, lon, lat) ?: -1L
// // 更新记录在全局的控制参数
// CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(controlParameters)
// return sessionId
// }
/**
* 启自驾前,是否要拦截
* @param isShowTip true: 展示Toast+语音提示; false:不展示Toast+语音提示
@@ -253,6 +280,15 @@ object CallerAutoPilotControlManager {
}
return result
}
/**
* 结束自动驾驶
*/
fun cancelAutoPilot(taskId: Long) {
// 司机屏才能取消自动驾驶
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
cancelAutoPilotInner(taskId)
}
}
/**
* 结束自动驾驶
@@ -273,8 +309,8 @@ object CallerAutoPilotControlManager {
}
}
private fun cancelAutoPilotInner() {
providerApi?.cancelAutoPilot()
private fun cancelAutoPilotInner(taskId: Long = (-1).toLong()) {
providerApi?.cancelAutoPilot(taskId)
// 更新记录在全局的控制参数
CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null)
}

View File

@@ -18,6 +18,7 @@ import java.util.Locale
*/
object CallerFsm2024ListenerManager : CallerBase<IMoGoFsm2024Listener>() {
var fsmLocaleLanguage = "chs"
private var placeOrderStandby = false //车端走任务管理时用于判断是否能下发订单
init {
val locale = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
@@ -36,7 +37,12 @@ object CallerFsm2024ListenerManager : CallerBase<IMoGoFsm2024Listener>() {
}
}
fun getPlaceOrderStandby(): Boolean {
return placeOrderStandby
}
fun invokeFSM2024State(fsmState: Fsm2024.FSMStateMsg) {
placeOrderStandby = fsmState.placeOrderStandbyFlag
M_LISTENERS.forEach {
val listener = it.value
listener.onFSM2024State(fsmState)
@@ -54,7 +60,7 @@ object CallerFsm2024ListenerManager : CallerBase<IMoGoFsm2024Listener>() {
if (fsmEvent.activeMode == Fsm2024.ActiveMode.PILOT_ACTIVE) {
if (fsmEvent.event == Fsm2024.Event.FAIL_TO_ENTER_ACTIVE || fsmEvent.event == Fsm2024.Event.ABNORMAL_EXIT_ACTIVE) {
val title =
StringUtils.getString(if (fsmEvent.event == Fsm2024.Event.FAIL_TO_ENTER_ACTIVE) R.string.module_mogo_core_fail_to_enter_active else R.string.module_mogo_core_abnormal_exit_active)
StringUtils.getString(if (fsmEvent.event == Fsm2024.Event.FAIL_TO_ENTER_ACTIVE) R.string.module_mogo_core_fail_to_enter_active else R.string.module_mogo_core_abnormal_exit_active)
var content = StringUtils.getString(R.string.module_mogo_core_unknown_cause_fault)
var summaryContent = ""
if (fsmEvent.transitionReasonsMultiLangCount > 0) {
@@ -89,10 +95,10 @@ object CallerFsm2024ListenerManager : CallerBase<IMoGoFsm2024Listener>() {
System.currentTimeMillis()
}
CallerMsgBoxManager.saveMsgBoxNoTrace(
MsgBoxBean(
MsgBoxType.FSM_EVENT,
FSMEventMsg(title, summaryContent, content, time)
)
MsgBoxBean(
MsgBoxType.FSM_EVENT,
FSMEventMsg(title, summaryContent, content, time)
)
)
}
}