Merge branch 'dev_robotaxi-d_260311_8.4.0' into dev_robotaxi-d_260311_8.5.0_yyk
This commit is contained in:
@@ -7,6 +7,7 @@ import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
|
||||
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
|
||||
import com.mogo.och.bridge.autopilot.line.LineManager
|
||||
import com.mogo.och.bridge.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager
|
||||
import com.mogo.och.bridge.bridge.OchBridgeManager
|
||||
@@ -68,6 +69,19 @@ class BridgeProvider : BridgeService, CallerBase<BridgeListener>() {
|
||||
removeListener(tag)
|
||||
}
|
||||
|
||||
override fun startAutopilot(type: Int) {
|
||||
when (type) {
|
||||
0 -> {LineManager.unmannedStartAutopilot(false)}
|
||||
1 -> {LineManager.unmanneAutopilotContinue(false)}
|
||||
2 -> {}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
override fun taskManager(type: Int, index: Int) {
|
||||
invokeTaskManagerTestArrived(index)
|
||||
}
|
||||
|
||||
override fun doSomeAfterAddListener(tag: String, listener: BridgeListener) {
|
||||
// 轨迹和距离回调
|
||||
TrajectoryManager.doSomeAfterBridgeListener()
|
||||
@@ -133,5 +147,11 @@ class BridgeProvider : BridgeService, CallerBase<BridgeListener>() {
|
||||
}
|
||||
}
|
||||
|
||||
fun invokeTaskManagerTestArrived(indexStation:Int){
|
||||
M_LISTENERS.forEach {
|
||||
it.value.onTestArrivedStation(indexStation)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,6 +3,10 @@ package com.mogo.och.bridge.autopilot.autopilot;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
|
||||
import com.mogo.och.bridge.autopilot.autopilot.bean.ArrivedStation;
|
||||
import com.zhjt.mogo.adas.data.AdasConstants;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo_msg.MogoReportMsg;
|
||||
@@ -40,6 +44,23 @@ public interface IOchAutopilotStatusListener {
|
||||
default void onAutopilotArriveAtStation(ArrivedStation arrivalNotification) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动驾驶离站
|
||||
* @param taskId
|
||||
* @param taskStartNotification
|
||||
*/
|
||||
default void onAutopilotLeaveStation(Long taskId, TaskStartNotification taskStartNotification){
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动驾驶离站
|
||||
* @param taskId
|
||||
* @param taskStartNotification
|
||||
*/
|
||||
default void onArriveAtStationByTaskManager(Long taskId, TaskArrivalNotification taskStartNotification){
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 工控机获取SN
|
||||
*/
|
||||
|
||||
@@ -122,8 +122,8 @@ object OchAutoPilotManager {
|
||||
* 继续启动自驾
|
||||
*/
|
||||
@JvmStatic
|
||||
fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory, vehicleSite : VehicleSite, parameters: AutopilotControlParameters): Long {
|
||||
val sessionId = CallerAutoPilotControlManager.unmannedAutoPilotContinue(taskId, traj,vehicleSite, parameters)
|
||||
fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory, startStation : VehicleSite,endStation : VehicleSite, parameters: AutopilotControlParameters): Long {
|
||||
val sessionId = CallerAutoPilotControlManager.unmannedAutoPilotContinue(taskId, traj,startStation,endStation, parameters)
|
||||
globalSessionId.set(SessionWithTime(sessionId, System.currentTimeMillis(), -1L))
|
||||
OchAutoPilotStatusListenerManager.fsmBackSessionId.set(-1L)
|
||||
OchAutopilotAnalytics.triggerStartAutopilotParameters(traj, parameters, sessionId)
|
||||
|
||||
@@ -23,6 +23,8 @@ import com.zhjt.mogo.adas.common.MessageType
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.bean.ReceivedAck
|
||||
import com.zhjt.mogo.adas.data.bean.ReceivedAck.Status
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification
|
||||
import fsm.Fsm2024
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
@@ -239,6 +241,23 @@ object OchAutoPilotStatusListenerManager : CallerBase<IOchAutopilotStatusListene
|
||||
}
|
||||
}
|
||||
|
||||
override fun invokeLeaveStation(taskId: Long?, taskStartNotification: TaskStartNotification?) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.onAutopilotLeaveStation(taskId,taskStartNotification)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onArriveAtStationByTaskManager(
|
||||
taskId: Long?,
|
||||
taskArrivalNotification: TaskArrivalNotification?
|
||||
) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.onArriveAtStationByTaskManager(taskId,taskArrivalNotification)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 距离终点10m 向地盘查询是否到站地盘的返回值
|
||||
* [LineManager.mMapLocationListener]
|
||||
|
||||
@@ -638,12 +638,6 @@ object LineManager : CallerBase<ILineCallback>() {
|
||||
return
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 存在Session
|
||||
*/
|
||||
if (!OchAutoPilotManager.canStartAutopilotBySessionId()) {
|
||||
return
|
||||
}
|
||||
OchAutopilotAnalytics.triggerClickStartAutopilotTime(System.currentTimeMillis())
|
||||
//1、判断轨迹url是否可用
|
||||
if (_contraiInfo == null) {
|
||||
@@ -759,12 +753,6 @@ object LineManager : CallerBase<ILineCallback>() {
|
||||
return
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 存在Session
|
||||
*/
|
||||
if (!OchAutoPilotManager.canStartAutopilotBySessionId()) {
|
||||
return
|
||||
}
|
||||
OchAutopilotAnalytics.triggerClickStartAutopilotTime(System.currentTimeMillis())
|
||||
//1、判断轨迹url是否可用
|
||||
if (_contraiInfo == null) {
|
||||
@@ -793,10 +781,10 @@ object LineManager : CallerBase<ILineCallback>() {
|
||||
return
|
||||
}
|
||||
_lineInfos?.let { lineInfo ->
|
||||
startStation?.let { start->
|
||||
getStations { start, end ->
|
||||
val wayPoints = ArrayList<VehicleSite>()
|
||||
val blackPoints = ArrayList<VehicleSite>()
|
||||
val vehicleSite = VehicleSite.builder()
|
||||
val startStation = VehicleSite.builder()
|
||||
.coordinateType(AutopilotCoordinateTypeEnum.WGS84.code)
|
||||
.point(AutopilotPoint.builder().x(start.lon).y(start.lat).build())
|
||||
.station(StationEnum.SITE.code)
|
||||
@@ -805,7 +793,17 @@ object LineManager : CallerBase<ILineCallback>() {
|
||||
.stationSeq(start.seq)
|
||||
.tag(start.tag)
|
||||
.build()
|
||||
wayPoints.add(vehicleSite)
|
||||
val endStation = VehicleSite.builder()
|
||||
.coordinateType(AutopilotCoordinateTypeEnum.WGS84.code)
|
||||
.point(AutopilotPoint.builder().x(end.lon).y(end.lat).build())
|
||||
.station(StationEnum.SITE.code)
|
||||
.stationId(end.siteId.toLong())
|
||||
.stationName(end.name)
|
||||
.stationSeq(end.seq)
|
||||
.tag(end.tag)
|
||||
.build()
|
||||
wayPoints.add(startStation)
|
||||
wayPoints.add(endStation)
|
||||
val traj = Trajectory.builder()
|
||||
.id(lineInfo.lineId)
|
||||
.name(lineInfo.lineName)
|
||||
@@ -817,7 +815,7 @@ object LineManager : CallerBase<ILineCallback>() {
|
||||
.wayPoints(wayPoints)
|
||||
.blackPoints(blackPoints)
|
||||
.build()
|
||||
val sessionId = OchAutoPilotManager.unmannedAutoPilotContinue(lineInfo.taskId, traj,vehicleSite, parameters)
|
||||
val sessionId = OchAutoPilotManager.unmannedAutoPilotContinue(lineInfo.taskId, traj,startStation, endStation,parameters)
|
||||
OchAutopilotAnalytics.triggerUpdateStartAutoPilotSessionId(sessionId, true)
|
||||
d(
|
||||
TAG,
|
||||
|
||||
@@ -24,6 +24,7 @@ object CheckVinManager : IMoGoAutopilotCarConfigListener {
|
||||
|
||||
override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) {
|
||||
checkVin()
|
||||
CallerAutoPilotControlManager.sendTaskManagerRunningInfo()
|
||||
}
|
||||
|
||||
fun getVin(): String {
|
||||
|
||||
@@ -86,6 +86,8 @@ object DebugDataDispatch {
|
||||
const val pncAction = "pncAction"
|
||||
const val collisionRisk = "CollisionRisk"
|
||||
const val mediaStationMedia = "stationMedia"
|
||||
const val startAutopilot = "startAutopilot"
|
||||
const val taskManager = "taskManager"
|
||||
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "video" --ei add 2 --es url "rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid"
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "location" --es path "1111/11111"
|
||||
@@ -108,6 +110,8 @@ object DebugDataDispatch {
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "vlmMessage" --es message "前方100米有道路施工,施工长度100米,影响第1、2车道通行。" --ei id 128 --ef time 1880.0
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "vlmImage" --ef time 1880.0
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "stationMedia"
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "startAutopilot" --ei startType 0
|
||||
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "taskManager" --ei startType 0 --ei indexStation 3
|
||||
|
||||
// adb shell am broadcast -a com.hmi.v2x.trafficlight -f 0x011000000 --ei trafficLightCheckType 1 --ei trafficLightCountDown 0 --ez trafficLightIsShow true // 红绿灯
|
||||
|
||||
@@ -122,6 +126,15 @@ object DebugDataDispatch {
|
||||
|
||||
}
|
||||
when (type) {
|
||||
taskManager -> {
|
||||
val type = intent.getIntExtra("startType", 0)
|
||||
val indexStation = intent.getIntExtra("indexStation", 0)
|
||||
BridgeManager.debugTaskManager(type,indexStation)
|
||||
}
|
||||
startAutopilot -> {
|
||||
val type = intent.getIntExtra("startType", 0)
|
||||
BridgeManager.debugStartAutopilot(type)
|
||||
}
|
||||
mediaStationMedia -> {
|
||||
val introductionList = mutableListOf<MediaItem>()
|
||||
introductionList.add(
|
||||
|
||||
@@ -28,4 +28,6 @@ interface BridgeListener {
|
||||
fun onPncInfoListener(pncAction: String) {}
|
||||
|
||||
fun onCollisionRisk() {}
|
||||
|
||||
fun onTestArrivedStation(indexStation:Int) {}
|
||||
}
|
||||
@@ -35,4 +35,12 @@ object BridgeManager {
|
||||
bridgeService?.removeBridgeListener(tag)
|
||||
}
|
||||
|
||||
fun debugStartAutopilot(type:Int){
|
||||
bridgeService?.startAutopilot(type)
|
||||
}
|
||||
|
||||
fun debugTaskManager(type:Int,index:Int){
|
||||
bridgeService?.taskManager(type,index)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,4 +13,8 @@ interface BridgeService : IProvider {
|
||||
fun addBridgeListener(tag:String, listener:BridgeListener)
|
||||
|
||||
fun removeBridgeListener(tag: String)
|
||||
|
||||
fun startAutopilot(type: Int)
|
||||
|
||||
fun taskManager(type: Int,index:Int)
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.amap.api.navi.AMapNaviView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/amapNaviView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
@@ -11,6 +11,17 @@ import java.util.Objects
|
||||
* @author tongchenfei
|
||||
*/
|
||||
open class BusStationBean {
|
||||
companion object{
|
||||
const val drivingStatusInit = 0//0初始值
|
||||
const val drivingStatusPassed = 1//1已经过
|
||||
const val drivingStatusCurrent = 2//2当前站
|
||||
const val drivingStatusNotArrived = 3//3未到站
|
||||
|
||||
const val tagInit = 0//0初始值
|
||||
const val tagNormal = 1//1正常停靠
|
||||
const val tagSkip = 2//2 需要跳过
|
||||
}
|
||||
|
||||
var siteId: Int = 0
|
||||
|
||||
@JvmField
|
||||
|
||||
@@ -103,7 +103,7 @@ class BusRoutesResponse : BaseData() {
|
||||
}
|
||||
result.add(temp!!)
|
||||
// 正在进行中的任务
|
||||
if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) {
|
||||
if (temp!!.drivingStatus == BusStationBean.drivingStatusCurrent) {
|
||||
if (temp!!.tag != 2) {
|
||||
currentStationIndex = index
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ object LineModel {
|
||||
null
|
||||
} else {
|
||||
// startStationIndex == stationList!!.size - 1
|
||||
startStationIndex == getLastStationPos(stationList!!)-1
|
||||
nextStationIndex == getLastStationPos(stationList!!)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -334,7 +334,7 @@ object LineModel {
|
||||
|
||||
fun startTaskMessage(): Boolean {
|
||||
if (!stationList.isNullOrEmpty()) {
|
||||
return startStationIndex == 0 && stationList!!.first().drivingStatus == TaskSiteDataBean.drivingStatusCurrent && !stationList!!.first().isLeaving
|
||||
return startStationIndex == 0 && stationList!!.first().drivingStatus == BusStationBean.drivingStatusCurrent && !stationList!!.first().isLeaving
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -40,12 +40,18 @@ import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.OCHThreadPoolManager
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.unmanned.R
|
||||
import com.mogo.och.unmanned.constant.BusConst
|
||||
import com.mogo.och.unmanned.repository.RepositoryManager
|
||||
import com.mogo.och.unmanned.repository.db.bean.TaskSiteDataBean
|
||||
import com.mogo.och.unmanned.repository.exception.DataException
|
||||
import com.mogo.och.unmanned.util.ShuttleVoiceManager
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.AutopilotPoint
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite
|
||||
import com.zhjt.mogo.adas.unmanned.task.enums.AutopilotCoordinateTypeEnum
|
||||
import com.zhjt.mogo.adas.unmanned.task.enums.StationEnum
|
||||
import io.reactivex.Observer
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
@@ -122,14 +128,128 @@ object OrderModel {
|
||||
// else -> {}
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onTestArrivedStation(indexStation: Int) {
|
||||
super.onTestArrivedStation(indexStation)
|
||||
try {
|
||||
LineModel.currentTask?.taskId?.let { taskId ->
|
||||
LineModel.stationList?.let { list ->
|
||||
if (list.size > indexStation) {
|
||||
val busStationBean = list.get(indexStation)
|
||||
val behicleSite = VehicleSite.builder()
|
||||
.coordinateType(AutopilotCoordinateTypeEnum.WGS84.code)
|
||||
.point(AutopilotPoint.builder().x(busStationBean.lon).y(busStationBean.lat).build())
|
||||
.station(StationEnum.SITE.code)
|
||||
.stationId(busStationBean.siteId.toLong())
|
||||
.stationName(busStationBean.name)
|
||||
.stationSeq(busStationBean.seq)
|
||||
.tag(busStationBean.tag)
|
||||
.build()
|
||||
val mockInfo = TaskArrivalNotification(behicleSite,behicleSite,12.0)
|
||||
ochAutopilotStatusListener.onArriveAtStationByTaskManager(taskId,mockInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch (e:Exception){
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private val ochAutopilotStatusListener = object : IOchAutopilotStatusListener {
|
||||
override fun onAutopilotArriveAtStation(arrivedStation: ArrivedStation?) {
|
||||
e(TAG, "行程日志-onAutopilotArriveAtStation arrive")
|
||||
onArriveAt(arrivedStation, "底盘触发进站",false)
|
||||
//onArriveAt(arrivedStation, "底盘触发进站")
|
||||
}
|
||||
|
||||
override fun onAutopilotLeaveStation(
|
||||
taskId: Long?,
|
||||
taskStartNotification: TaskStartNotification?
|
||||
) {
|
||||
OchChainLogManager.writeChainLog("触发滑动出发,","taskId:$taskId taskStartNotification:${taskStartNotification}")
|
||||
if(taskStartNotification?.isCloseDoorStartAuto==true){
|
||||
val curStation = taskStartNotification.curStation
|
||||
val nextStation = taskStartNotification.nextStation
|
||||
LineModel.currentTask?.let { task ->
|
||||
if(task.taskId==taskId){
|
||||
LineManager.getStations { start, end ->
|
||||
if(start.siteId.toLong()==curStation.stationId&&end.siteId.toLong()==nextStation.stationId){
|
||||
OchChainLogManager.writeChainLog("触发滑动出发,","触发成功")
|
||||
driveToNextStation(false)
|
||||
}else{
|
||||
OchChainLogManager.writeChainLog("触发滑动出发,","起始终点id不同触发失败")
|
||||
}
|
||||
}
|
||||
}else{
|
||||
OchChainLogManager.writeChainLog("触发滑动出发,","taskId不同触发失败")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun onArriveAtStationByTaskManager(
|
||||
taskId: Long?,
|
||||
taskArrivalNotification: TaskArrivalNotification?
|
||||
) {
|
||||
OchChainLogManager.writeChainLog("任务管理触发进站,","taskId:$taskId taskStartNotification:${taskArrivalNotification}")
|
||||
taskId?.let { taskIdNotNull->
|
||||
LineModel.currentTask?.let {
|
||||
if(it.taskId==taskIdNotNull){
|
||||
taskArrivalNotification?.station?.let { arrivedStation->
|
||||
LineModel.stationList?.forEachIndexed { index, busStationBean ->
|
||||
if(busStationBean.siteId.toLong()==arrivedStation.stationId){
|
||||
if(busStationBean.tag==BusStationBean.tagSkip){
|
||||
OchChainLogManager.writeChainLog("任务管理触发进站,","触发到站是临时不停不进行向下操作")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LineManager.getStations { start, end ->
|
||||
if(end.siteId.toLong()==arrivedStation.stationId){
|
||||
onArriveAt(arrivedStation, "任务管理器触发进站")
|
||||
}else{
|
||||
if(start.siteId.toLong()==arrivedStation.stationId){
|
||||
OchChainLogManager.writeChainLog("任务管理触发进站,","开始站点和到达站点一致 不到站正好调整好数据")
|
||||
}else{
|
||||
|
||||
OchChainLogManager.writeChainLog("任务管理触发进站,","到达站点和${start}还有${end}都不一致但是taskId:${taskId}一致去数据库调整数据使之一致")
|
||||
RepositoryManager.adjustAllStation(taskIdNotNull,arrivedStation)
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(object : Observer<Boolean> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
d(TAG, "onSubscribe")
|
||||
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
d(TAG, "onError${e.printStackTrace()}")
|
||||
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
d(TAG, "onComplete")
|
||||
}
|
||||
|
||||
override fun onNext(data: Boolean) {
|
||||
d(TAG, "onNext:${data}")
|
||||
queryBusRoutes()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
OchChainLogManager.writeChainLog("任务管理触发进站,","任务管理和pad端task 不一致请取消任务后重新选择任务")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private val ochTransform = object : OchTransformDispatch {
|
||||
@@ -145,7 +265,7 @@ object OrderModel {
|
||||
//是否到站的围栏判断 离站状态并且自动驾驶还未触发到站
|
||||
if (isGoingToNextStation && !isArrivedStation) {
|
||||
OCHThreadPoolManager.getsInstance().locationExecute {
|
||||
onArriveAt(null, "兜底:距离站点15m内 每秒钟向底盘查询是否到站 底盘返回",false)
|
||||
//onArriveAt(null, "兜底:距离站点15m内 每秒钟向底盘查询是否到站 底盘返回")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -243,13 +363,15 @@ object OrderModel {
|
||||
}
|
||||
}
|
||||
|
||||
private fun onStartAutopilot(taskId: Long?) {
|
||||
private fun onStartAutopilot() {
|
||||
//开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启
|
||||
isGoingToNextStation = true
|
||||
if (CallerTaskListenerManager.isCarRunningTask()) {
|
||||
LineManager.unmanneAutopilotContinue(false)
|
||||
d(TAG, "启动自驾:继续启动自驾")
|
||||
}else{
|
||||
LineManager.unmannedStartAutopilot(true)
|
||||
d(TAG, "启动自驾:下发轨迹启动自驾")
|
||||
}
|
||||
if (CallerAutoPilotStatusListenerManager.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
|
||||
) {
|
||||
@@ -284,7 +406,7 @@ object OrderModel {
|
||||
* 滑动出发
|
||||
*/
|
||||
@JvmStatic
|
||||
fun driveToNextStation() {
|
||||
fun driveToNextStation(startAutopilot:Boolean) {
|
||||
if (LineModel.isLastStation() == true) {
|
||||
// 当前站是最后一站,结束当前行程
|
||||
completeTask(true)
|
||||
@@ -292,7 +414,7 @@ object OrderModel {
|
||||
}
|
||||
|
||||
LineManager.getStations().first?.let { startStation ->
|
||||
startStation.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
startStation.drivingStatus = BusStationBean.drivingStatusCurrent
|
||||
startStation.isLeaving = true
|
||||
LineModel.currentTask?.let { task ->
|
||||
RepositoryManager.leaveStation(
|
||||
@@ -318,7 +440,9 @@ object OrderModel {
|
||||
}
|
||||
LineModel.leaveStationSuccess()
|
||||
isArrivedStation = false
|
||||
onStartAutopilot(task.taskId)
|
||||
if(startAutopilot) {
|
||||
onStartAutopilot()
|
||||
}
|
||||
|
||||
ThirdDeviceData.leaveStation()
|
||||
|
||||
@@ -336,8 +460,9 @@ object OrderModel {
|
||||
if (data) {
|
||||
LineModel.leaveStationSuccess()
|
||||
isArrivedStation = false
|
||||
onStartAutopilot(task.taskId)
|
||||
|
||||
if(startAutopilot) {
|
||||
onStartAutopilot()
|
||||
}
|
||||
ThirdDeviceData.leaveStation()
|
||||
|
||||
updateBusStatus()
|
||||
@@ -458,7 +583,7 @@ object OrderModel {
|
||||
* @param data
|
||||
*/
|
||||
@JvmStatic
|
||||
fun onArriveAt(data: ArrivedStation?, type: String,skipStation:Boolean) {
|
||||
fun onArriveAt(data: VehicleSite?, type: String) {
|
||||
if (LineManager.getStations().second == null) {
|
||||
e(TAG, "行程日志-到站异常,取消后续操作结束")
|
||||
OchChainLogManager.writeChainLog("shuttle弱网", "$type 行程日志-到站异常,取消后续操作结束")
|
||||
@@ -478,9 +603,9 @@ object OrderModel {
|
||||
LineManager.lastArrivedSiteId = end.siteId
|
||||
isArrivedStation = true
|
||||
isGoingToNextStation = false
|
||||
start.drivingStatus = TaskSiteDataBean.drivingStatusPassed
|
||||
start.drivingStatus = BusStationBean.drivingStatusPassed
|
||||
start.isLeaving = false
|
||||
end.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
end.drivingStatus = BusStationBean.drivingStatusCurrent
|
||||
RepositoryManager.arriveStation(end.seq, end.siteId.toLong(), LineModel.currentTask?.taskId
|
||||
?: 0L)
|
||||
?.subscribeOn(Schedulers.io())
|
||||
@@ -515,9 +640,6 @@ object OrderModel {
|
||||
}
|
||||
LineModel.arrivedStationSuccess()
|
||||
updateBusStatus()
|
||||
if(skipStation) {
|
||||
driveToNextStation()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
@@ -541,9 +663,6 @@ object OrderModel {
|
||||
}
|
||||
LineModel.arrivedStationSuccess()
|
||||
updateBusStatus()
|
||||
if(skipStation) {
|
||||
driveToNextStation()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onNext(data: Boolean) {
|
||||
@@ -555,6 +674,88 @@ object OrderModel {
|
||||
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun skipNextStation() {
|
||||
// 手动点击到站
|
||||
LineManager.getStations { start, end ->
|
||||
|
||||
if (isArrivedStation || end.siteId == LineManager.lastArrivedSiteId) return@getStations
|
||||
|
||||
OchChainLogManager.writeChainLog("触发跳站", "点击")
|
||||
end.tag = 2
|
||||
end.drivingStatus = BusStationBean.drivingStatusNotArrived
|
||||
RepositoryManager.skipStation()
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(object : Observer<Boolean> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
d(TAG, "onSubscribe")
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
d(TAG, "onError${e.printStackTrace()}")
|
||||
if (e is DataException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
ThirdDeviceData.arriveStation()
|
||||
d(TAG, "skipNextStation onComplete")
|
||||
LineModel.stationList?.let {
|
||||
//此处始发站应为上段路程的终点站
|
||||
val startStation = LineManager.getStations().first
|
||||
if (LineModel.startStationIndex + 1 < it.size) {
|
||||
//遍历当前路段起始点之后的数组,第一个正常停靠点即为该段终点
|
||||
val subStationList = it.subList(LineModel.startStationIndex + 1, it.size)
|
||||
val endStation = subStationList.firstOrNull { bean ->
|
||||
bean.tag != 2
|
||||
}
|
||||
LineModel.nextStationIndex = it.indexOf(endStation)
|
||||
// val endStation = stationlist[LineModel.startStationIndex + 1]
|
||||
LineManager.setStartAndEndStation(startStation, endStation)
|
||||
LineModel.callEyeMap(5)
|
||||
}
|
||||
}
|
||||
LineModel.leaveStationSuccess()
|
||||
ThirdDeviceData.leaveStation()
|
||||
updateBusStatus()
|
||||
|
||||
isArrivedStation = false
|
||||
onStartAutopilot()
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
ThirdDeviceData.arriveStation()
|
||||
d(TAG, "skipNextStation onComplete")
|
||||
LineModel.stationList?.let {
|
||||
//此处始发站应为上段路程的终点站
|
||||
val startStation = LineManager.getStations().first
|
||||
if (LineModel.startStationIndex + 1 < it.size) {
|
||||
//遍历当前路段起始点之后的数组,第一个正常停靠点即为该段终点
|
||||
val subStationList = it.subList(LineModel.startStationIndex + 1, it.size)
|
||||
val endStation = subStationList.firstOrNull { bean ->
|
||||
bean.tag != 2
|
||||
}
|
||||
LineModel.nextStationIndex = it.indexOf(endStation)
|
||||
// val endStation = stationlist[LineModel.startStationIndex + 1]
|
||||
LineManager.setStartAndEndStation(startStation, endStation)
|
||||
LineModel.callEyeMap(6)
|
||||
}
|
||||
}
|
||||
LineModel.leaveStationSuccess()
|
||||
ThirdDeviceData.leaveStation()
|
||||
updateBusStatus()
|
||||
|
||||
isArrivedStation = false
|
||||
onStartAutopilot()
|
||||
}
|
||||
|
||||
override fun onNext(data: Boolean) {
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// 登出
|
||||
@JvmStatic
|
||||
fun logoutInner() {
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.mogo.och.unmanned.repository.net.bean.response.PassengerWriteOffRespo
|
||||
import com.mogo.och.unmanned.repository.writeoff.IWriteOffRepository
|
||||
import com.mogo.och.unmanned.repository.writeoff.impl.WriteOffCacheRepository
|
||||
import com.mogo.och.unmanned.repository.writeoff.impl.WriteOffNormallRepository
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite
|
||||
import io.reactivex.Observable
|
||||
|
||||
object RepositoryManager {
|
||||
@@ -138,6 +139,15 @@ object RepositoryManager {
|
||||
return lineRepository?.arriveStation(seq, siteId, taskId)
|
||||
}
|
||||
|
||||
fun skipStation(): Observable<Boolean>? {
|
||||
return lineRepository?.skipStation()
|
||||
}
|
||||
|
||||
|
||||
fun adjustAllStation(taskId: Long, arrivedStation: VehicleSite): Observable<Boolean>? {
|
||||
return lineRepository?.adjustAllStation(taskId,arrivedStation)
|
||||
}
|
||||
|
||||
fun endTask(shiftsId: Long, taskId: Long): Observable<Boolean>? {
|
||||
return lineRepository?.endTask(shiftsId, taskId)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.unmanned.repository.db.bean
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
|
||||
@Entity(tableName = TaskSiteDataBean.tableName)
|
||||
data class TaskSiteDataBean(
|
||||
@@ -143,6 +144,17 @@ data class TaskSiteDataBean(
|
||||
fun toTaskSiteDatas(querySites: List<SiteDataBean>, shiftsId: Long, taskId: Long, lineName: String): MutableList<TaskSiteDataBean> {
|
||||
val result = mutableListOf<TaskSiteDataBean>()
|
||||
var temp: TaskSiteDataBean? = null
|
||||
|
||||
// 先定义变量存储「第一个tag≠2」的元素seq值
|
||||
var targetSeq: Int? = null
|
||||
|
||||
// 第一步:遍历找到第一个tag≠2的元素的seq
|
||||
querySites.forEach {
|
||||
if (it.tag != 2 && targetSeq == null) {
|
||||
targetSeq = it.seq
|
||||
}
|
||||
}
|
||||
|
||||
querySites.forEach {
|
||||
temp = TaskSiteDataBean()
|
||||
temp?.taskId = taskId
|
||||
@@ -157,10 +169,14 @@ data class TaskSiteDataBean(
|
||||
temp?.gcjLat = it.gcjLat
|
||||
temp?.lon = it.lon
|
||||
temp?.lat = it.lat
|
||||
if (it.seq == 1) {
|
||||
temp?.drivingStatus = drivingStatusCurrent
|
||||
} else {
|
||||
temp?.drivingStatus = drivingStatusNotArrived
|
||||
// 核心:根据tag条件设置drivingStatus
|
||||
temp?.drivingStatus = when {
|
||||
// 1. 找到第一个tag≠2的元素 → Current
|
||||
targetSeq != null && it.seq == targetSeq -> BusStationBean.drivingStatusCurrent
|
||||
// 2. 该元素之前的 → Passed
|
||||
targetSeq != null && it.seq!! < targetSeq!! -> BusStationBean.drivingStatusPassed
|
||||
// 3. 其余情况(包括所有tag=2)→ NotArrived
|
||||
else -> BusStationBean.drivingStatusNotArrived
|
||||
}
|
||||
temp?.leaving = false
|
||||
temp?.introduction = it.introduction
|
||||
@@ -174,9 +190,5 @@ data class TaskSiteDataBean(
|
||||
|
||||
const val tableName: String = "used_task_data_table"
|
||||
|
||||
const val drivingStatusInit = 0//0初始值
|
||||
const val drivingStatusPassed = 1//1已经过
|
||||
const val drivingStatusCurrent = 2//2当前站
|
||||
const val drivingStatusNotArrived = 3//3未到站
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,11 @@ interface TaskSiteDataDao {
|
||||
@Query("UPDATE ${TaskSiteDataBean.tableName} SET leaving = :leave , driving_status = :drivingStatusCurrent WHERE task_id = :taskId and site_id = :siteId")
|
||||
fun updateDrivingStatusANdLeave(taskId: Long, siteId: Long, drivingStatusCurrent: Int, leave: Int)
|
||||
|
||||
// 跳站中把tag 值为2 仅置运行表中
|
||||
@Query("UPDATE ${TaskSiteDataBean.tableName} SET leaving = :leave , driving_status = :drivingStatusCurrent , tag = :tag WHERE task_id = :taskId and site_id = :siteId")
|
||||
fun updateDrivingStatusTagAndLeave(taskId: Long, siteId: Long, drivingStatusCurrent: Int, leave: Int , tag:Int)
|
||||
|
||||
|
||||
@Query("UPDATE ${TaskSiteDataBean.tableName} SET driving_status = :drivingStatusCurrent WHERE task_id = :taskId and site_id = :siteId")
|
||||
fun updateDrivingStatus(taskId: Long, siteId: Long, drivingStatusCurrent: Int)
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.mogo.och.unmanned.repository.db.repository
|
||||
|
||||
import androidx.room.Transaction
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
|
||||
import com.mogo.eagle.core.utilcode.util.StringUtils
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.data.db.exception.DbException
|
||||
import com.mogo.och.shuttle.unmanned.R
|
||||
import com.mogo.och.unmanned.repository.db.IDbRepository
|
||||
@@ -95,6 +97,23 @@ object TaskSiteDb : IDbRepository {
|
||||
)
|
||||
}
|
||||
}
|
||||
fun updateDrivingStatusTagAndLeave(
|
||||
taskId: Long,
|
||||
siteId: Long,
|
||||
drivingStatus: Int,
|
||||
leave: Boolean,
|
||||
tag:Int
|
||||
) {
|
||||
BizLoopManager.runInIoThread {
|
||||
taskSiteDataDao?.updateDrivingStatusTagAndLeave(
|
||||
taskId,
|
||||
siteId,
|
||||
drivingStatus,
|
||||
if (leave) 1 else 0,
|
||||
tag
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun queryRunningTask(taskId: Long): List<TaskSiteDataBean>? {
|
||||
return taskSiteDataDao?.queryRunningTask(taskId)
|
||||
@@ -151,7 +170,7 @@ object TaskSiteDb : IDbRepository {
|
||||
runningSite.forEach {
|
||||
if (it.siteId == currentSiteId) {
|
||||
currentSeq = it.seq ?: 0
|
||||
it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
it.drivingStatus = BusStationBean.drivingStatusCurrent
|
||||
it.leaving = leaving
|
||||
return@forEach
|
||||
}
|
||||
@@ -159,15 +178,32 @@ object TaskSiteDb : IDbRepository {
|
||||
runningSite.forEach {
|
||||
val seq = it.seq ?: 0
|
||||
if (seq < currentSeq) {
|
||||
it.drivingStatus = TaskSiteDataBean.drivingStatusPassed
|
||||
it.drivingStatus = BusStationBean.drivingStatusPassed
|
||||
it.leaving = true
|
||||
} else if (seq > currentSeq) {
|
||||
it.drivingStatus = TaskSiteDataBean.drivingStatusNotArrived
|
||||
it.drivingStatus = BusStationBean.drivingStatusNotArrived
|
||||
it.leaving = false
|
||||
}
|
||||
}
|
||||
return runningSite
|
||||
}
|
||||
|
||||
fun adjustAllStationByTaskId(queryRunningTask: List<TaskSiteDataBean>?) {
|
||||
val runnable = object : Runnable {
|
||||
@Transaction
|
||||
override fun run() {
|
||||
queryRunningTask?.forEach {
|
||||
taskSiteDataDao?.updateDrivingStatusANdLeave(
|
||||
it.taskId ?: 0,
|
||||
it.siteId ?: 0,
|
||||
it.drivingStatus ?: 0,
|
||||
if (it.leaving == true) 1 else 0,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
BizLoopManager.runInIoThread(runnable)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.mogo.och.unmanned.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.unmanned.bean.response.PointResponse
|
||||
import com.mogo.och.unmanned.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.unmanned.repository.db.bean.TaskDataBean
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite
|
||||
import io.reactivex.Observable
|
||||
|
||||
interface ILineRepository {
|
||||
@@ -32,6 +33,10 @@ interface ILineRepository {
|
||||
|
||||
fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable<Boolean>?
|
||||
|
||||
fun skipStation(): Observable<Boolean>?
|
||||
|
||||
fun adjustAllStation(taskId: Long, arrivedStation: VehicleSite):Observable<Boolean>?
|
||||
|
||||
fun endTask(shiftsId: Long, taskId: Long): Observable<Boolean>?
|
||||
|
||||
fun queryCarExecutableTaskList(ochCommonServiceCallback: OchCommonServiceCallback<CarExecutableTaskResponse>)
|
||||
|
||||
@@ -22,13 +22,13 @@ import com.mogo.och.unmanned.bean.response.PointResponse
|
||||
import com.mogo.och.unmanned.model.LineModel
|
||||
import com.mogo.och.unmanned.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.unmanned.repository.db.bean.TaskDataBean
|
||||
import com.mogo.och.unmanned.repository.db.bean.TaskSiteDataBean
|
||||
import com.mogo.och.unmanned.repository.line.ILineRepository
|
||||
import com.mogo.och.unmanned.repository.net.NetInterface
|
||||
import com.mogo.och.unmanned.repository.net.exception.NetException
|
||||
import com.mogo.och.unmanned.repository.net.project.dali.bus.DaliBusServiceManager
|
||||
import com.mogo.och.unmanned.repository.net.project.mogo.bus.MogoBusServiceManager
|
||||
import com.mogo.och.unmanned.repository.net.project.mogo.shuttle.MogoShuttleServiceManager
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite
|
||||
import io.reactivex.Observable
|
||||
|
||||
class NormalRepository : ILineRepository {
|
||||
@@ -103,7 +103,7 @@ class NormalRepository : ILineRepository {
|
||||
temp?.siteId = taskAndsite.siteId
|
||||
result.add(temp!!)
|
||||
// 正在进行中的任务
|
||||
if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) {
|
||||
if (temp!!.drivingStatus == BusStationBean.drivingStatusCurrent) {
|
||||
if (temp!!.tag != 2) {
|
||||
currentStationIndex = index
|
||||
}
|
||||
@@ -201,6 +201,14 @@ class NormalRepository : ILineRepository {
|
||||
)
|
||||
}
|
||||
|
||||
override fun skipStation(): Observable<Boolean>? {
|
||||
return Observable.just(false)
|
||||
}
|
||||
|
||||
override fun adjustAllStation(taskId: Long, arrivedStation: VehicleSite):Observable<Boolean>? {
|
||||
return Observable.just(false)
|
||||
}
|
||||
|
||||
override fun endTask(shiftsId: Long, taskId: Long): Observable<Boolean>? {
|
||||
return normalLineInterface?.endTask(taskId)
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.data.bean.ContraiInfo
|
||||
import com.mogo.och.shuttle.unmanned.R
|
||||
import com.mogo.och.unmanned.bean.request.QueryPointRequest
|
||||
@@ -29,7 +30,6 @@ import com.mogo.och.unmanned.model.LineModel.currentTask
|
||||
import com.mogo.och.unmanned.repository.db.bean.ContrailDataBean
|
||||
import com.mogo.och.unmanned.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.unmanned.repository.db.bean.TaskDataBean
|
||||
import com.mogo.och.unmanned.repository.db.bean.TaskSiteDataBean
|
||||
import com.mogo.och.unmanned.repository.db.repository.ContraiDb
|
||||
import com.mogo.och.unmanned.repository.db.repository.EventDb
|
||||
import com.mogo.och.unmanned.repository.db.repository.LineDb
|
||||
@@ -43,6 +43,7 @@ import com.mogo.och.unmanned.repository.net.project.dali.shuttle.DaliShuttleServ
|
||||
import com.mogo.och.unmanned.repository.net.project.saas.bus.SaasBusServiceManager
|
||||
import com.mogo.och.unmanned.repository.net.project.saas.scheduled.SaasScheduledServiceManager
|
||||
import com.mogo.och.unmanned.repository.net.project.saas.shuttle.SaasShuttleServiceManager
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite
|
||||
import io.reactivex.Observable
|
||||
|
||||
class WeaknetRepository : ILineRepository {
|
||||
@@ -424,7 +425,7 @@ class WeaknetRepository : ILineRepository {
|
||||
TaskSiteDb.updateDrivingStatusAndLeave(
|
||||
task.taskId!!,
|
||||
start.siteId.toLong(),
|
||||
TaskSiteDataBean.drivingStatusPassed,
|
||||
BusStationBean.drivingStatusPassed,
|
||||
false
|
||||
)
|
||||
// 设置到站任务
|
||||
@@ -455,7 +456,7 @@ class WeaknetRepository : ILineRepository {
|
||||
TaskSiteDb.updateDrivingStatus(
|
||||
taskId,
|
||||
end.siteId.toLong(),
|
||||
TaskSiteDataBean.drivingStatusCurrent
|
||||
BusStationBean.drivingStatusCurrent
|
||||
)
|
||||
}
|
||||
} else {
|
||||
@@ -476,6 +477,70 @@ class WeaknetRepository : ILineRepository {
|
||||
|
||||
}
|
||||
|
||||
override fun skipStation(): Observable<Boolean>? {
|
||||
return Observable.just(12)
|
||||
.flatMap {temp->
|
||||
//1 恢复end站点的值并置tag为临时不停靠运行表中
|
||||
LineManager.getStations { start, end ->
|
||||
if (currentTask != null && currentTask!!.taskId != null) {
|
||||
currentTask?.let { task ->
|
||||
if (task.taskId != null && task.lineId != null) {
|
||||
TaskSiteDb.updateDrivingStatusTagAndLeave(
|
||||
task.taskId!!,
|
||||
end.siteId.toLong(),
|
||||
BusStationBean.drivingStatusNotArrived,
|
||||
false,
|
||||
BusStationBean.tagSkip
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
OchChainLogManager.writeChainLog(
|
||||
"跳站点_数据更新_error",
|
||||
"task:${currentTask}__taskId:${currentTask?.taskId}"
|
||||
)
|
||||
CallerLogger.d(TAG, "跳斩_数据更新_error:task:${currentTask}__taskId:${currentTask?.taskId}")
|
||||
}
|
||||
val changeInfo =
|
||||
"taskId:${currentTask?.taskId}--lineId:${currentTask?.lineId}--currentStationName:${start.name}--finalNextStationName:${end.name}"
|
||||
OchChainLogManager.writeChainLog("到站", changeInfo)
|
||||
CallerLogger.d(TAG, "到站:$changeInfo")
|
||||
}
|
||||
return@flatMap Observable.just(true)
|
||||
}
|
||||
}
|
||||
|
||||
override fun adjustAllStation(taskId: Long, arrivedStation: VehicleSite): Observable<Boolean>? {
|
||||
return Observable.just(12)
|
||||
.flatMap {temp->
|
||||
//1 查询正在执行的任务
|
||||
val queryRunningTask = TaskSiteDb.queryRunningTask(taskId)
|
||||
//2 根据参数arrivedStation 来设置正确的 当前站和下一站
|
||||
var arrivedStationIndex = -1
|
||||
queryRunningTask?.forEachIndexed { index, taskSiteDataBean ->
|
||||
if (taskSiteDataBean.tag != BusStationBean.tagSkip) {
|
||||
if (taskSiteDataBean.siteId == arrivedStation.stationId) {
|
||||
arrivedStationIndex = index
|
||||
taskSiteDataBean.drivingStatus = BusStationBean.drivingStatusCurrent
|
||||
taskSiteDataBean.leaving = false
|
||||
} else {
|
||||
if (arrivedStationIndex < 0) {
|
||||
taskSiteDataBean.drivingStatus = BusStationBean.drivingStatusPassed
|
||||
taskSiteDataBean.leaving = false
|
||||
} else {
|
||||
taskSiteDataBean.drivingStatus =
|
||||
BusStationBean.drivingStatusNotArrived
|
||||
taskSiteDataBean.leaving = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OchChainLogManager.writeChainLog("任务管理触发进站,","更新新的数据库类型去")
|
||||
TaskSiteDb.adjustAllStationByTaskId(queryRunningTask)
|
||||
return@flatMap Observable.just(true)
|
||||
}
|
||||
}
|
||||
|
||||
override fun endTask(shiftsId: Long, taskId: Long): Observable<Boolean>? {
|
||||
return Observable.just(taskId).flatMap {
|
||||
currentTask?.let { task ->
|
||||
|
||||
@@ -28,7 +28,7 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback {
|
||||
}
|
||||
|
||||
fun leaveStation() {
|
||||
OrderModel.driveToNextStation()
|
||||
OrderModel.driveToNextStation(true)
|
||||
}
|
||||
|
||||
interface SwtichLineViewCallback {
|
||||
@@ -55,7 +55,7 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback {
|
||||
}
|
||||
|
||||
fun arriveStation() {
|
||||
OrderModel.onArriveAt(null, "页面触发到站",false)
|
||||
OrderModel.onArriveAt(null, "页面触发到站")
|
||||
}
|
||||
|
||||
override fun onArriveStationSuccess() {
|
||||
@@ -84,7 +84,7 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback {
|
||||
if (LineModel.isLastStation() == true) {
|
||||
return
|
||||
}
|
||||
OrderModel.onArriveAt(null, "页面挑站触发到站",true)
|
||||
OrderModel.skipNextStation()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -88,7 +88,6 @@ class TaskRunningView : ConstraintLayout, TaskRunningModel.SwtichLineViewCallbac
|
||||
}else{
|
||||
viewModel?.skipStation()
|
||||
}
|
||||
viewModel?.arriveStation()
|
||||
}
|
||||
unmanned_actv_arriver_station_new.setOnLongClickListener {
|
||||
viewModel?.arriveStation()
|
||||
|
||||
@@ -8,30 +8,30 @@
|
||||
tools:ignore="MissingDefaultResource">
|
||||
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.TrafficLightView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:focusable="false"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:lightUser="driver" />
|
||||
<!-- <com.mogo.eagle.core.function.hmi.ui.widget.TrafficLightView-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_marginTop="@dimen/dp_40"-->
|
||||
<!-- android:focusable="false"-->
|
||||
<!-- android:visibility="gone"-->
|
||||
<!-- app:layout_constraintLeft_toLeftOf="parent"-->
|
||||
<!-- app:layout_constraintRight_toRightOf="parent"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
||||
<!-- app:lightUser="driver" />-->
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:id="@+id/viewTrafficLightPrompt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:promptUser="driver" />
|
||||
<!-- <com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView-->
|
||||
<!-- android:id="@+id/viewTrafficLightPrompt"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_marginTop="@dimen/dp_350"-->
|
||||
<!-- android:layout_marginEnd="@dimen/dp_50"-->
|
||||
<!-- android:focusable="false"-->
|
||||
<!-- android:focusableInTouchMode="false"-->
|
||||
<!-- android:visibility="gone"-->
|
||||
<!-- app:layout_constraintRight_toRightOf="parent"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
||||
<!-- app:promptUser="driver" />-->
|
||||
|
||||
|
||||
<!--pnc行为决策-->
|
||||
|
||||
@@ -95,7 +95,7 @@ class BusRoutesResponse : BaseData() {
|
||||
}
|
||||
result.add(temp!!)
|
||||
// 正在进行中的任务
|
||||
if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) {
|
||||
if (temp!!.drivingStatus == BusStationBean.drivingStatusCurrent) {
|
||||
if (temp!!.tag != 2) {
|
||||
currentStationIndex = index
|
||||
}
|
||||
|
||||
@@ -324,7 +324,7 @@ object LineModel {
|
||||
|
||||
fun startTaskMessage():Boolean {
|
||||
if (!stationList.isNullOrEmpty()) {
|
||||
return startStationIndex == 0 && stationList!!.first().drivingStatus == TaskSiteDataBean.drivingStatusCurrent && !stationList!!.first().isLeaving
|
||||
return startStationIndex == 0 && stationList!!.first().drivingStatus == BusStationBean.drivingStatusCurrent && !stationList!!.first().isLeaving
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -40,9 +40,9 @@ import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.OCHThreadPoolManager
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.weaknet.R
|
||||
import com.mogo.och.weaknet.constant.BusConst
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean
|
||||
import com.mogo.och.weaknet.repository.RepositoryManager
|
||||
import com.mogo.och.weaknet.repository.exception.DataException
|
||||
import com.mogo.och.weaknet.util.BusTrajectoryManager
|
||||
@@ -285,7 +285,7 @@ object OrderModel {
|
||||
}
|
||||
|
||||
LineManager.getStations().first?.let {startStation->
|
||||
startStation.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
startStation.drivingStatus = BusStationBean.drivingStatusCurrent
|
||||
startStation.isLeaving = true
|
||||
LineModel.currentTask?.let { task->
|
||||
RepositoryManager.leaveStation(
|
||||
@@ -472,9 +472,9 @@ object OrderModel {
|
||||
LineManager.lastArrivedSiteId = end.siteId
|
||||
isArrivedStation = true
|
||||
isGoingToNextStation = false
|
||||
start.drivingStatus = TaskSiteDataBean.drivingStatusPassed
|
||||
start.drivingStatus = BusStationBean.drivingStatusPassed
|
||||
start.isLeaving = false
|
||||
end.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
end.drivingStatus = BusStationBean.drivingStatusCurrent
|
||||
RepositoryManager.arriveStation(end.seq,end.siteId.toLong(), LineModel.currentTask?.taskId?:0L)
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.mogo.och.weaknet.repository.db.bean
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import com.mogo.och.weaknet.repository.db.bean.SiteDataBean
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
|
||||
@Entity(tableName = TaskSiteDataBean.tableName)
|
||||
data class TaskSiteDataBean(
|
||||
@@ -159,9 +159,9 @@ data class TaskSiteDataBean(
|
||||
temp?.lon = it.lon
|
||||
temp?.lat = it.lat
|
||||
if(it.seq==1){
|
||||
temp?.drivingStatus = drivingStatusCurrent
|
||||
temp?.drivingStatus = BusStationBean.drivingStatusCurrent
|
||||
}else{
|
||||
temp?.drivingStatus = drivingStatusNotArrived
|
||||
temp?.drivingStatus = BusStationBean.drivingStatusNotArrived
|
||||
}
|
||||
temp?.leaving = false
|
||||
temp?.introduction = it.introduction
|
||||
@@ -175,9 +175,5 @@ data class TaskSiteDataBean(
|
||||
|
||||
const val tableName: String = "used_task_data_table"
|
||||
|
||||
const val drivingStatusInit = 0//0初始值
|
||||
const val drivingStatusPassed = 1//1已经过
|
||||
const val drivingStatusCurrent = 2//2当前站
|
||||
const val drivingStatusNotArrived = 3//3未到站
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
|
||||
import com.mogo.eagle.core.utilcode.util.StringUtils
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.weaknet.repository.db.IDbRepository
|
||||
import com.mogo.och.weaknet.repository.db.MyDataBase
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean
|
||||
@@ -152,7 +153,7 @@ object TaskSiteDb : IDbRepository {
|
||||
runningSite.forEach {
|
||||
if (it.siteId == currentSiteId) {
|
||||
currentSeq = it.seq ?: 0
|
||||
it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
it.drivingStatus = BusStationBean.drivingStatusCurrent
|
||||
it.leaving = leaving
|
||||
return@forEach
|
||||
}
|
||||
@@ -160,10 +161,10 @@ object TaskSiteDb : IDbRepository {
|
||||
runningSite.forEach {
|
||||
val seq = it.seq ?: 0
|
||||
if (seq < currentSeq) {
|
||||
it.drivingStatus = TaskSiteDataBean.drivingStatusPassed
|
||||
it.drivingStatus = BusStationBean.drivingStatusPassed
|
||||
it.leaving = true
|
||||
} else if (seq > currentSeq) {
|
||||
it.drivingStatus = TaskSiteDataBean.drivingStatusNotArrived
|
||||
it.drivingStatus = BusStationBean.drivingStatusNotArrived
|
||||
it.leaving = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ class NormalRepository: ILineRepository {
|
||||
temp?.siteId = taskAndsite.siteId
|
||||
result.add(temp!!)
|
||||
// 正在进行中的任务
|
||||
if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) {
|
||||
if (temp!!.drivingStatus == BusStationBean.drivingStatusCurrent) {
|
||||
if (temp!!.tag != 2) {
|
||||
currentStationIndex = index
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.data.bean.ContraiInfo
|
||||
import com.mogo.och.shuttle.weaknet.R
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest
|
||||
@@ -420,7 +421,7 @@ class WeaknetRepository : ILineRepository {
|
||||
TaskSiteDb.updateDrivingStatusAndLeave(
|
||||
task.taskId!!,
|
||||
start.siteId.toLong(),
|
||||
TaskSiteDataBean.drivingStatusPassed,
|
||||
BusStationBean.drivingStatusPassed,
|
||||
false
|
||||
)
|
||||
// 设置到站任务
|
||||
@@ -451,7 +452,7 @@ class WeaknetRepository : ILineRepository {
|
||||
TaskSiteDb.updateDrivingStatus(
|
||||
taskId,
|
||||
end.siteId.toLong(),
|
||||
TaskSiteDataBean.drivingStatusCurrent
|
||||
BusStationBean.drivingStatusCurrent
|
||||
)
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.mogo.och.shuttle.weaknet.passenger.ui.linenew
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.appcompat.widget.AppCompatTextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.StringUtils
|
||||
@@ -30,7 +32,6 @@ import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.cl_empty_ser
|
||||
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.cl_line_info_station
|
||||
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.end_station_name
|
||||
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.group_station_empty
|
||||
import kotlinx.android.synthetic.main.m2_arrive_view.view.ochtv_arrive_station_value
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@@ -186,6 +187,7 @@ class PB4DrivingInfoFullSFragment :
|
||||
}
|
||||
|
||||
private fun showBottom1Station(station:BusStationBean?,isShow:Boolean){
|
||||
setTextColor(station,actv_station_pre_1)
|
||||
if(isShow) {
|
||||
actv_station_pre_1.text = station?.name
|
||||
aciv_arrow_station_1.visibility = View.VISIBLE
|
||||
@@ -199,6 +201,7 @@ class PB4DrivingInfoFullSFragment :
|
||||
}
|
||||
|
||||
private fun showBottom2Station(station:BusStationBean?,isShow:Boolean){
|
||||
setTextColor(station, actv_station_pre_2)
|
||||
if(isShow) {
|
||||
actv_station_pre_2.text = station?.name
|
||||
aciv_arrow_station_2.visibility = View.VISIBLE
|
||||
@@ -212,6 +215,7 @@ class PB4DrivingInfoFullSFragment :
|
||||
}
|
||||
|
||||
private fun showBottom3Station(station:BusStationBean?,isShow:Boolean){
|
||||
setTextColor(station, actv_station_pre_3)
|
||||
if(isShow) {
|
||||
actv_station_pre_3.text = station?.name
|
||||
aciv_arrow_station_3.visibility = View.VISIBLE
|
||||
@@ -225,6 +229,7 @@ class PB4DrivingInfoFullSFragment :
|
||||
}
|
||||
|
||||
private fun showBottom4Station(station:BusStationBean?,isShow:Boolean){
|
||||
setTextColor(station, actv_station_pre_4)
|
||||
if(isShow) {
|
||||
actv_station_pre_4.text = station?.name
|
||||
aciv_arrow_station_4.visibility = View.VISIBLE
|
||||
@@ -237,6 +242,16 @@ class PB4DrivingInfoFullSFragment :
|
||||
}
|
||||
}
|
||||
|
||||
private fun setTextColor(station: BusStationBean?, textView: AppCompatTextView){
|
||||
context?.let {
|
||||
if(station?.tag==2){
|
||||
textView.setTextColor(ContextCompat.getColor(it, R.color.b4_5E5E5E))
|
||||
}else{
|
||||
textView.setTextColor(ContextCompat.getColor(it, R.color.white))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun updateLineName(lineName: String){
|
||||
actvLineName.text = lineName
|
||||
|
||||
@@ -22,4 +22,5 @@
|
||||
<color name="b4_9AFF98">#9AFF98</color>
|
||||
<color name="b4_EDBE2B">#EDBE2B</color>
|
||||
<color name="b4_FF8300">#FF8300</color>
|
||||
<color name="b4_5E5E5E">#5E5E5E</color>
|
||||
</resources>
|
||||
@@ -49,6 +49,8 @@ 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.status.SweeperTaskStatus;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
@@ -803,4 +805,14 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
|
||||
@Override
|
||||
public void onAutoPilotStation(long token, long timestamp, @Nullable SsmInfo.AutoPilotStation autoPilotStation) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invokeLeaveStation(@Nullable Long taskId, @Nullable TaskStartNotification taskStartNotification) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArriveAtStationByTaskManager(@Nullable Long taskId, @Nullable TaskArrivalNotification taskArrivalNotification) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ import com.mogo.och.sweeper.operate.model.SweeperOperateTaskModel;
|
||||
import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil;
|
||||
import com.mogo.och.sweeper.operate.util.SweeperTrajectoryManager;
|
||||
import com.zhjt.mogo.adas.data.AdasConstants;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
@@ -483,4 +485,14 @@ public class SweeperOperatePresenter extends Presenter<SweeperOperateFragment>
|
||||
public void onAutoPilotStation(long token, long timestamp, @Nullable SsmInfo.AutoPilotStation autoPilotStation) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invokeLeaveStation(@Nullable Long taskId, @Nullable TaskStartNotification taskStartNotification) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArriveAtStationByTaskManager(@Nullable Long taskId, @Nullable TaskArrivalNotification taskArrivalNotification) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,6 +84,7 @@ 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.mogo.adas.unmanned.task.dto.cmd.VehicleSite
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import io.netty.channel.Channel
|
||||
import mogo.telematics.pad.MessagePad
|
||||
@@ -467,9 +468,9 @@ class MoGoAutopilotControlProvider :
|
||||
}
|
||||
}
|
||||
|
||||
override fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, stationId: Long, stationName: String, stationSeq: Int, lon: Double, lat: Double): Long {
|
||||
override fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, startStation : VehicleSite, endStation:VehicleSite ): Long {
|
||||
return if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
|
||||
val invokeResult = AdasManager.getInstance().sendTaskManagerAutopilotContinue(trackId, taskId, stationId, stationName, stationSeq, lon, lat)
|
||||
val invokeResult = AdasManager.getInstance().sendTaskManagerAutopilotContinue(trackId, taskId, startStation, endStation)
|
||||
invokeAutoPilotResult(if (invokeResult > -1) "无人化 取消自动驾驶调用成功:${invokeResult}" else "无人化 取消自动驾驶调用失败, socket 或者 rawPack 可能为空")
|
||||
invokeResult
|
||||
} else {
|
||||
|
||||
@@ -38,7 +38,9 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SO
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_VEHICLE
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_STATUS
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeLeaveStation
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeArriveAtStation
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeArriveAtStationByTaskManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutoPilotInfo
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutoPilotStation
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotGuardian
|
||||
@@ -132,7 +134,9 @@ 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.status.SweeperTaskStatus
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskLocationQueryResponse
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification
|
||||
import com.zhjt.mogo.adas.utils.ByteUtil
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import fault_management.FmInfo
|
||||
@@ -1679,8 +1683,8 @@ 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))
|
||||
override fun onAdasTaskManagerOriginal(header: MessagePad.Header, data: String) {
|
||||
taskManagerOriginal(header, data)
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
@@ -1693,10 +1697,15 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
CallerLogger.i("$M_D_C$TAG", "任务管理数据:$data")
|
||||
}
|
||||
|
||||
override fun onAdasTaskManagerDeparture(taskId: Long?, siteId: Long?, sequence: Int?, ack: Boolean, reason: String?, stationTimeLeft: Double) {
|
||||
override fun onAdasTaskManagerDeparture(
|
||||
taskId: Long?,
|
||||
taskStartNotification: TaskStartNotification?
|
||||
) {
|
||||
invokeLeaveStation(taskId,taskStartNotification)
|
||||
}
|
||||
|
||||
override fun onAdasTaskManagerArrival(taskId: Long?, siteId: Long?, sequence: Int?, mileage: BigDecimal?) {
|
||||
override fun onAdasTaskManagerArrival(taskId: Long?,taskArrivalNotification: TaskArrivalNotification? ) {
|
||||
invokeArriveAtStationByTaskManager(taskId,taskArrivalNotification)
|
||||
}
|
||||
|
||||
override fun onAdasTaskManagerComplete(taskId: Long?, userId: Long?, status: Int?, reason: String?, completedTime: Date?, mileage: BigDecimal?) {
|
||||
|
||||
@@ -55,6 +55,7 @@ class AsyncDataToAutopilotServer private constructor() : IMoGoTrafficLightListen
|
||||
.subscribe {
|
||||
bizLog(SceneConstant.M_D_C + TAG, "请求底盘轨迹")
|
||||
CallerAutoPilotControlManager.getGlobalPath()
|
||||
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
|
||||
@@ -906,11 +906,7 @@ class ColdStartView @JvmOverloads constructor(
|
||||
tvColdStartContent.text = resources.getString(R.string.cold_start_fail_content)
|
||||
tvColdStartContent.setTextColor(ContextCompat.getColor(context, R.color.cold_start_fail))
|
||||
coldStartResultListener?.coldStartFail()
|
||||
ThreadUtils.runOnUiThread {
|
||||
tvColdStartNow.visibility = View.VISIBLE
|
||||
ivColdStartNow.visibility = View.VISIBLE
|
||||
tvColdStartTip.visibility = View.VISIBLE
|
||||
}
|
||||
initUseNowBtnView()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfi
|
||||
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 com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest
|
||||
import system_master.SsmInfo
|
||||
@@ -49,7 +50,7 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider {
|
||||
|
||||
fun sendTaskManagerAutopilotStart(taskId: Long, traj: Trajectory): Long
|
||||
|
||||
fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, stationId: Long, stationName: String, stationSeq: Int, lon: Double, lat: Double): Long
|
||||
fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, startStation : VehicleSite, endStation: VehicleSite): Long
|
||||
|
||||
/**
|
||||
* 开启自动驾驶(魔方)
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.mogo.eagle.core.function.api.autopilot
|
||||
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
import system_master.*
|
||||
@@ -67,6 +69,13 @@ interface IMoGoAutopilotStatusListener {
|
||||
*/
|
||||
fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {}
|
||||
|
||||
fun onArriveAtStationByTaskManager(taskId: Long?,taskArrivalNotification: TaskArrivalNotification?) {}
|
||||
|
||||
/**
|
||||
* 自动驾驶 离站触发
|
||||
*/
|
||||
fun invokeLeaveStation(taskId: Long?, taskStartNotification: TaskStartNotification?) {}
|
||||
|
||||
/**
|
||||
* 工控机获取SN
|
||||
*/
|
||||
|
||||
@@ -122,12 +122,12 @@ object CallerAutoPilotControlManager {
|
||||
/**
|
||||
* 自驾成功后再次启动自驾时
|
||||
*/
|
||||
fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory?, vehicleSite : VehicleSite, controlParameters: AutopilotControlParameters): Long {
|
||||
fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory?, startStation : VehicleSite,endStation : VehicleSite, controlParameters: AutopilotControlParameters): Long {
|
||||
if (traj == null) {
|
||||
//LogUtils.eTag(TAG, "自动驾驶控制参数异常,请检查参数信息")
|
||||
return -1L
|
||||
}
|
||||
val sessionId = providerApi?.sendTaskManagerAutopilotContinue(traj.id, taskId, vehicleSite.stationId, vehicleSite.stationName, vehicleSite.stationSeq, vehicleSite.point.x, vehicleSite.point.y) ?: -1L
|
||||
val sessionId = providerApi?.sendTaskManagerAutopilotContinue(traj.id, taskId, startStation,endStation) ?: -1L
|
||||
// 更新记录在全局的控制参数
|
||||
CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(controlParameters)
|
||||
return sessionId
|
||||
|
||||
@@ -12,6 +12,8 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ParseVersionUtils
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
import system_master.SsmInfo
|
||||
@@ -270,6 +272,25 @@ object CallerAutoPilotStatusListenerManager : CallerBase<IMoGoAutopilotStatusLis
|
||||
listener.onAutopilotArriveAtStation(arrivalNotification)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 自动驾驶站点信息 回调
|
||||
* @param arrivalNotification 自动驾驶网约车回调数据
|
||||
*/
|
||||
@Synchronized
|
||||
fun invokeArriveAtStationByTaskManager(taskId: Long?,taskArrivalNotification: TaskArrivalNotification? ) {
|
||||
mAutopilotStatusInfo.isArriveAtStation = true
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.onArriveAtStationByTaskManager(taskId,taskArrivalNotification)
|
||||
}
|
||||
}
|
||||
|
||||
fun invokeLeaveStation(taskId: Long?, taskStartNotification: TaskStartNotification?){
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.invokeLeaveStation(taskId,taskStartNotification)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 工控机获取SN 回调
|
||||
|
||||
@@ -378,8 +378,8 @@ object AppIdentityModeUtils {
|
||||
//获取驾舱类型
|
||||
@JvmStatic
|
||||
fun getCockpitType(): CockpitType {
|
||||
// return CockpitType.getCockpitType(SPUtils.getInstance().getString(COCKPIT_TYPE, CockpitType.NONE.code))
|
||||
return CockpitType.UNMANNED
|
||||
return CockpitType.getCockpitType(SPUtils.getInstance().getString(COCKPIT_TYPE, CockpitType.NONE.code))
|
||||
// return CockpitType.UNMANNED
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,12 +9,22 @@ public class TaskContinueNotification {
|
||||
* 当前站点
|
||||
*/
|
||||
private VehicleSite curStation;
|
||||
private VehicleSite nextStation;
|
||||
|
||||
public TaskContinueNotification() {
|
||||
}
|
||||
|
||||
public TaskContinueNotification(VehicleSite curStation) {
|
||||
public VehicleSite getNextStation() {
|
||||
return nextStation;
|
||||
}
|
||||
|
||||
public void setNextStation(VehicleSite nextStation) {
|
||||
this.nextStation = nextStation;
|
||||
}
|
||||
|
||||
public TaskContinueNotification(VehicleSite curStation, VehicleSite nextStation) {
|
||||
this.curStation = curStation;
|
||||
this.nextStation = nextStation;
|
||||
}
|
||||
|
||||
public VehicleSite getCurStation() {
|
||||
@@ -29,6 +39,7 @@ public class TaskContinueNotification {
|
||||
public String toString() {
|
||||
return "TaskContinueNotification{" +
|
||||
"curStation=" + curStation +
|
||||
", nextStation=" + nextStation +
|
||||
'}';
|
||||
}
|
||||
|
||||
@@ -38,14 +49,20 @@ public class TaskContinueNotification {
|
||||
|
||||
public static class Builder {
|
||||
private VehicleSite curStation;
|
||||
private VehicleSite nextStation;
|
||||
|
||||
public Builder curStation(VehicleSite curStation) {
|
||||
this.curStation = curStation;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder nextStation(VehicleSite nextStation) {
|
||||
this.nextStation = nextStation;
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskContinueNotification build() {
|
||||
return new TaskContinueNotification(curStation);
|
||||
return new TaskContinueNotification(curStation, nextStation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
package com.zhjt.mogo.adas.unmanned.task.dto.cmd;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.zhjt.mogo.adas.unmanned.task.enums.MessageCmdEnum;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 车端发送车辆启动结果
|
||||
@@ -26,17 +32,20 @@ public class TaskStartNotification {
|
||||
* 错误码
|
||||
*/
|
||||
private List<Integer> errCodes;
|
||||
/**
|
||||
* 当前站点
|
||||
*/
|
||||
private VehicleSite curStation;
|
||||
/**
|
||||
* 下一个站点
|
||||
*/
|
||||
private VehicleSite nextStation;
|
||||
/**
|
||||
* 前一个任务名称
|
||||
*/
|
||||
private String lastTaskCmdType;
|
||||
|
||||
public TaskStartNotification() {
|
||||
}
|
||||
|
||||
public TaskStartNotification(VehicleSite curLocation, boolean autopilotResult, double stationTimeLeft, String errMsg, List<Integer> errCodes) {
|
||||
this.curLocation = curLocation;
|
||||
this.autopilotResult = autopilotResult;
|
||||
this.stationTimeLeft = stationTimeLeft;
|
||||
this.errMsg = errMsg;
|
||||
this.errCodes = errCodes;
|
||||
}
|
||||
public TaskStartNotification() {}
|
||||
|
||||
public VehicleSite getCurLocation() {
|
||||
return curLocation;
|
||||
@@ -78,6 +87,30 @@ public class TaskStartNotification {
|
||||
this.errCodes = errCodes;
|
||||
}
|
||||
|
||||
public VehicleSite getCurStation() {
|
||||
return curStation;
|
||||
}
|
||||
|
||||
public void setCurStation(VehicleSite curStation) {
|
||||
this.curStation = curStation;
|
||||
}
|
||||
|
||||
public VehicleSite getNextStation() {
|
||||
return nextStation;
|
||||
}
|
||||
|
||||
public void setNextStation(VehicleSite nextStation) {
|
||||
this.nextStation = nextStation;
|
||||
}
|
||||
|
||||
public String getLastTaskCmdType() {
|
||||
return lastTaskCmdType;
|
||||
}
|
||||
|
||||
public void setLastTaskCmdType(String lastTaskCmdType) {
|
||||
this.lastTaskCmdType = lastTaskCmdType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TaskStartNotification{" +
|
||||
@@ -86,6 +119,19 @@ public class TaskStartNotification {
|
||||
", stationTimeLeft=" + stationTimeLeft +
|
||||
", errMsg='" + errMsg + '\'' +
|
||||
", errCodes=" + errCodes +
|
||||
", curStation=" + curStation +
|
||||
", nextStation=" + nextStation +
|
||||
", lastTaskCmdType=" + lastTaskCmdType +
|
||||
'}';
|
||||
}
|
||||
|
||||
public boolean isCloseDoorStartAuto(){
|
||||
if(Objects.equals(lastTaskCmdType, MessageCmdEnum.TaskStartNotification.getCode()) ||
|
||||
Objects.equals(lastTaskCmdType, MessageCmdEnum.TaskContinueNotification.getCode()) ){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -9,16 +9,31 @@ public enum MessageCmdEnum {
|
||||
AutopilotStartRequest("AutopilotStartRequest", "APP开始任务"),
|
||||
|
||||
TaskContinueNotification("TaskContinueNotification", "站点出发"),
|
||||
|
||||
@Deprecated
|
||||
TaskFinishNotification("TaskFinishNotification", "任务完成"),
|
||||
|
||||
@Deprecated
|
||||
TaskLocationQueryRequest("TaskLocationQueryRequest", "任务查询"),
|
||||
|
||||
TaskStartNotification("TaskStartNotification", "自驾/离站结果回执"),
|
||||
|
||||
TaskArrivalNotification("TaskArrivalNotification", "到站通知"),
|
||||
|
||||
TaskAbortNotification("TaskAbortNotification", "任务终止"),
|
||||
|
||||
// 定频返回
|
||||
TaskLocationQueryResponse("TaskLocationQueryResponse", "任务查询结果"),
|
||||
|
||||
TaskCancelRequest("TaskCancelRequest", "任务取消请求"),
|
||||
TaskCancelResponse("TaskCancelResponse", "任务取消请求"),
|
||||
|
||||
//车向云的查询请求
|
||||
TaskQueryStateRequest("TaskQueryStateRequest", "任务状态查询"),
|
||||
//查询状态响应, 车端重启后请求
|
||||
TaskQueryStateResponse("TaskQueryStateResponse", "任务状态查询响应"),
|
||||
|
||||
|
||||
TaskRouteSyncRequest("TaskRouteSyncRequest", "查询正在执行的任务"),
|
||||
TaskRouteSyncResponse("TaskRouteSyncResponse", "查询执行的任务的结果"),
|
||||
;
|
||||
|
||||
@@ -4,6 +4,7 @@ package com.zhidao.support.adas.high;
|
||||
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_INIT;
|
||||
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_GLOBAL_PATH;
|
||||
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_SYSTEM_CMD;
|
||||
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_TASK;
|
||||
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD;
|
||||
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_CONNECT_ADDRESS;
|
||||
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_SOURCE_ADAS;
|
||||
@@ -3397,7 +3398,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
// .newBuilder()
|
||||
// .setTaskData(com.google.protobuf.ByteString.copyFrom(JsonUtil.toJsonBase64(data).getBytes(StandardCharsets.UTF_8)));
|
||||
// return sendPBMessage(MessageType.TYPE_SEND_TASK_MANAGER, builder.build().toByteArray());
|
||||
Log.i(TAG, "任务管理:"+data.toString());
|
||||
sendTaskManageReqLog(data);
|
||||
return sendPBMessage(MessageType.TYPE_SEND_TASK_MANAGER, JsonUtil.toJsonBase64(data).getBytes(StandardCharsets.UTF_8));
|
||||
}
|
||||
|
||||
@@ -3435,19 +3436,13 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
*
|
||||
* @param trackId
|
||||
* @param taskId
|
||||
* @param stationId
|
||||
* @param stationName
|
||||
* @param stationSeq
|
||||
* @param lon
|
||||
* @param lat
|
||||
* @param startStation
|
||||
* @param endStation
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, Long stationId, String stationName, Integer stationSeq, double lon, double lat) {
|
||||
VehicleSite vehicleSite = VehicleSite.builder().stationId(stationId).stationName(stationName)
|
||||
.station(StationEnum.SITE.getCode()).stationSeq(stationSeq)
|
||||
.point(AutopilotPoint.builder().x(lon).y(lat).build()).coordinateType(AutopilotCoordinateTypeEnum.WGS84.getCode()).build();
|
||||
TaskContinueNotification taskContinueNotification = TaskContinueNotification.builder().curStation(vehicleSite).build();
|
||||
public long sendTaskManagerAutopilotContinue(Long trackId, Long taskId,VehicleSite startStation,VehicleSite endStation) {
|
||||
TaskContinueNotification taskContinueNotification = TaskContinueNotification.builder().curStation(startStation).nextStation(endStation).build();
|
||||
CmdDto<TaskContinueNotification> cmdDto = CmdDto.<TaskContinueNotification>builder().cmdType(MessageCmdEnum.TaskContinueNotification.getCode()).taskId(taskId).lineId(trackId).timestamp(System.currentTimeMillis()).data(taskContinueNotification).build();
|
||||
return sendTaskManager(cmdDto);
|
||||
}
|
||||
@@ -3464,5 +3459,15 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
|
||||
.lineId(0L).timestamp(System.currentTimeMillis()).data(new JSONObject()).build();
|
||||
return sendTaskManager(cmdDto);
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
|
||||
linkCode = CHAIN_SOURCE_ADAS,
|
||||
nodeAliasCode = CHAIN_CODE_ADAS_SEND_TASK,
|
||||
paramIndexes = {0}
|
||||
)
|
||||
public <T> void sendTaskManageReqLog(T data) {
|
||||
Log.i(TAG, "任务管理:"+data.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ 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.mogo.adas.unmanned.task.dto.cmd.VehicleSite;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@@ -2098,8 +2099,8 @@ public class AdasManager implements IAdasNetCommApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, Long stationId, String stationName, Integer stationSeq, double lon, double lat) {
|
||||
return mChannel == null ? -1L : mChannel.sendTaskManagerAutopilotContinue(trackId, taskId, stationId, stationName, stationSeq, lon, lat);
|
||||
public long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, VehicleSite startStation, VehicleSite endStation) {
|
||||
return mChannel == null ? -1L : mChannel.sendTaskManagerAutopilotContinue(trackId, taskId, startStation, endStation);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,6 +17,7 @@ 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.mogo.adas.unmanned.task.dto.cmd.VehicleSite;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -1547,7 +1548,7 @@ public interface IAdasNetCommApi {
|
||||
long sendTaskManagerRunningInfo();
|
||||
long sendTaskManagerAutopilotStart(Long taskId, Trajectory traj);
|
||||
|
||||
long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, Long stationId, String stationName, Integer stationSeq, double lon, double lat);
|
||||
long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, VehicleSite startStation, VehicleSite endStation);
|
||||
|
||||
long sendTaskManagerAutopilotCancel(Long taskId);
|
||||
|
||||
|
||||
@@ -33,7 +33,9 @@ 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.status.SweeperTaskStatus;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskLocationQueryResponse;
|
||||
import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
@@ -805,7 +807,7 @@ public interface OnAdasListener {
|
||||
* @param header 头
|
||||
* @param data 数据
|
||||
*/
|
||||
void onAdasTaskManagerOriginal(@NonNull MessagePad.Header header, @NonNull byte[] data);
|
||||
void onAdasTaskManagerOriginal(@NonNull MessagePad.Header header, @NonNull String data);
|
||||
|
||||
/**
|
||||
* 域控任务管理离站通知
|
||||
@@ -816,8 +818,9 @@ public interface OnAdasListener {
|
||||
* @param ack
|
||||
* @param reason
|
||||
* @param stationTimeLeft
|
||||
* @param closeDoorStartAuto
|
||||
*/
|
||||
void onAdasTaskManagerDeparture(Long taskId, Long siteId, Integer sequence, boolean ack, String reason, double stationTimeLeft);
|
||||
void onAdasTaskManagerDeparture(Long taskId, TaskStartNotification taskStartNotification);
|
||||
|
||||
/**
|
||||
* 域控任务管理到站通知
|
||||
@@ -827,7 +830,7 @@ public interface OnAdasListener {
|
||||
* @param sequence 站点序号,对应顺序列表里站点流程,从1开始,1为起始点,最大值为终点。 途径点填写0
|
||||
* @param mileage 任务全程的已经行进的里程
|
||||
*/
|
||||
void onAdasTaskManagerArrival(Long taskId, Long siteId, Integer sequence, BigDecimal mileage);
|
||||
void onAdasTaskManagerArrival(Long taskId, TaskArrivalNotification taskArrivalNotification);
|
||||
|
||||
/**
|
||||
* 域控任务管理终止任务
|
||||
|
||||
@@ -17,4 +17,5 @@ public class AdasChain {
|
||||
public static final String CHAIN_CODE_ADAS_SEND_GLOBAL_PATH = "CHAIN_CODE_ADAS_SEND_GLOBAL_PATH";
|
||||
public static final String CHAIN_CODE_ADAS_SEND_SYSTEM_CMD = "CHAIN_CODE_ADAS_SEND_SYSTEM_CMD";
|
||||
public static final String CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD = "CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD";
|
||||
public static final String CHAIN_CODE_ADAS_SEND_TASK = "CHAIN_CODE_ADAS_SEND_TASK";
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.zhidao.support.adas.high.msg;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
@@ -45,8 +46,9 @@ public class TaskManagerMessage extends MyAbstractMessageHandler {
|
||||
if (CupidLogUtils.isEnableLog())
|
||||
nowTime = SystemClock.elapsedRealtime();
|
||||
if (adasListener != null) {
|
||||
adasListener.onAdasTaskManagerOriginal(raw.getHeader(), data);
|
||||
parse(adasListener, new String(data, StandardCharsets.UTF_8));
|
||||
String dataString = new String(data, StandardCharsets.UTF_8);
|
||||
adasListener.onAdasTaskManagerOriginal(raw.getHeader(), dataString);
|
||||
parse(adasListener,dataString);
|
||||
}
|
||||
AdasChannel.calculateTimeConsumingBusiness("任务管理消息", nowTime);
|
||||
}
|
||||
@@ -65,7 +67,7 @@ public class TaskManagerMessage extends MyAbstractMessageHandler {
|
||||
TaskStartNotification taskStartNotification = cmdDto.getData();
|
||||
|
||||
VehicleSite vehicleSite = taskStartNotification.getCurLocation();
|
||||
adasListener.onAdasTaskManagerDeparture(cmdDto.getTaskId(), vehicleSite.getStationId(), vehicleSite.getStationSeq(), taskStartNotification.isAutopilotResult(), taskStartNotification.getErrMsg(), taskStartNotification.getStationTimeLeft());
|
||||
adasListener.onAdasTaskManagerDeparture(cmdDto.getTaskId(), taskStartNotification);
|
||||
}
|
||||
|
||||
} else if (messageCmdEnum == MessageCmdEnum.TaskArrivalNotification) {//到站通知
|
||||
@@ -74,8 +76,7 @@ public class TaskManagerMessage extends MyAbstractMessageHandler {
|
||||
if (cmdDto != null) {
|
||||
Log.i(TAG, "onAdasTaskManagerArrival=" + cmdDto);
|
||||
TaskArrivalNotification taskArrivalNotification = cmdDto.getData();
|
||||
VehicleSite vehicleSite = taskArrivalNotification.getCurLocation();
|
||||
adasListener.onAdasTaskManagerArrival(cmdDto.getTaskId(), vehicleSite.getStationId(), vehicleSite.getStationSeq(), BigDecimal.valueOf(taskArrivalNotification.getAccumulatedTaskDis()));
|
||||
adasListener.onAdasTaskManagerArrival(cmdDto.getTaskId(), taskArrivalNotification);
|
||||
}
|
||||
|
||||
} else if (messageCmdEnum == MessageCmdEnum.TaskAbortNotification) {//终止任务
|
||||
|
||||
@@ -342,6 +342,17 @@ class IFlyTekOfflineTts : IMogoTTS {
|
||||
if (!aiHandle!!.isSuccess) {
|
||||
// handleErrorEvent("开启会话报错:${aiHandle!!.code}")
|
||||
handleErrorEvent("${StringUtils.getString(R.string.module_tts_start_ai_handle_error)}${aiHandle!!.code}")
|
||||
if(aiHandle!!.code==18310){
|
||||
aiHandle?.let {
|
||||
val ret = AiHelper.getInst().end(it)
|
||||
d(TAG, "AIKit_End:$ret")
|
||||
if(ret==0){
|
||||
realSpeak(content,language)
|
||||
}else{
|
||||
handleErrorEvent("${StringUtils.getString(R.string.module_tts_start_ai_handle_error)}${ret}")
|
||||
}
|
||||
}
|
||||
}
|
||||
aiHandle = null
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user