diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt index aff4f1c759..754f0aa6e4 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt @@ -166,103 +166,106 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, OTAUpgradeConfig.otaToken = request.otaToken } } - //解析JSON - var upgradeComplete = true - val otaUpgradeList = ArrayList() - val productArray = JSONArray(request.productName) - if(productArray.length() > 0){ - for(index in 0 until productArray.length()){ - val productInfo = productArray[index] as JSONObject - val token = productInfo.optString("token") - val productStatus = productInfo.optInt("status") - val failReason = productInfo.optString("fail_reason") - val upgradeReason = productInfo.optString("upgrade_reason")//升级原因 - val taskId = productInfo.optInt("task_id") - val taskItemId = productInfo.optInt("task_item_id") - val otaType = productInfo.optInt("ota_type") - var productName = productInfo.optString("product_name") - val needRestart = productInfo.optBoolean("need_restart") - val isDelay = productInfo.optBoolean("is_delay") - val curSize = productInfo.optDouble("cur_size") - val totalSize = productInfo.optDouble("total_size") - val taskNumber = productInfo.optInt("task_number") - val leftTime = productInfo.optInt("left_time") //剩余时间,单位秒 + try{ + //解析JSON + var upgradeComplete = true + val otaUpgradeList = ArrayList() + val productArray = JSONArray(request.productName) + if(productArray.length() > 0){ + for(index in 0 until productArray.length()){ + val productInfo = productArray[index] as JSONObject + val token = productInfo.optString("token") + val productStatus = productInfo.optInt("status") + val failReason = productInfo.optString("fail_reason") + val upgradeReason = productInfo.optString("upgrade_reason")//升级原因 + val taskId = productInfo.optInt("task_id") + val taskItemId = productInfo.optInt("task_item_id") + val otaType = productInfo.optInt("ota_type") + var productName = productInfo.optString("product_name") + val needRestart = productInfo.optBoolean("need_restart") + val isDelay = productInfo.optBoolean("is_delay") + val curSize = productInfo.optDouble("cur_size") + val totalSize = productInfo.optDouble("total_size") + val taskNumber = productInfo.optInt("task_number") + val leftTime = productInfo.optInt("left_time") //剩余时间,单位秒 - Log.i(TAG, "index=$index") - Log.i(TAG, "token=$token") - Log.i(TAG, "status=$productStatus") - Log.i(TAG, "fail_reason=$failReason") - Log.i(TAG, "upgrade_reason=$upgradeReason") - Log.i(TAG, "task_id=$taskId") - Log.i(TAG, "task_item_id=$taskItemId") - Log.i(TAG, "ota_type=$otaType") - Log.i(TAG, "product_name=$productName") - Log.i(TAG, "need_restart=$needRestart") - Log.i(TAG, "is_delay=$isDelay") - Log.i(TAG, "cur_size=$curSize") - Log.i(TAG, "total_size=$totalSize") - Log.i(TAG,"task_number=$taskNumber") - Log.i(TAG,"left_time=$leftTime") + Log.i(TAG, "index=$index") + Log.i(TAG, "token=$token") + Log.i(TAG, "status=$productStatus") + Log.i(TAG, "fail_reason=$failReason") + Log.i(TAG, "upgrade_reason=$upgradeReason") + Log.i(TAG, "task_id=$taskId") + Log.i(TAG, "task_item_id=$taskItemId") + Log.i(TAG, "ota_type=$otaType") + Log.i(TAG, "product_name=$productName") + Log.i(TAG, "need_restart=$needRestart") + Log.i(TAG, "is_delay=$isDelay") + Log.i(TAG, "cur_size=$curSize") + Log.i(TAG, "total_size=$totalSize") + Log.i(TAG,"task_number=$taskNumber") + Log.i(TAG,"left_time=$leftTime") - val upgradeTime = if(leftTime > 60){ - "预计部署过程用时${leftTime/60}分钟${leftTime%60}秒" - }else{ - "预计部署过程用时${leftTime%60}秒" - } - - if(index == 0){ - //是否需要触发提示升级只判断第一个任务 - if(productStatus == 0){ - if(!OTAUpgradeConfig.promptedUpgrade.contains(request.otaToken)){ - //冷启动已完成(包括成功/失败),且驾驶状态为非自驾状态,且当前无订单进行强提示,否则为弱提示 - if(OTAUpgradeConfig.coldStartCompleted && !OTAUpgradeConfig.autopilotStatus - && !OTAUpgradeConfig.inOrder){ - //触发强提示升级 - CallerHmiManager.showOTAUpgradeDialog(1,true,upgradeReason+upgradeTime) - }else{ - //触发弱提示升级 - //冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级, - // 并toast提示“收到车辆部署任务,请在车辆空闲时发起升级” - CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.DELAY) - ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级") - } - OTAUpgradeConfig.promptedUpgrade.add(request.otaToken) - } - return + val upgradeTime = if(leftTime > 60){ + "预计部署过程用时${leftTime/60}分钟${leftTime%60}秒" + }else{ + "预计部署过程用时${leftTime%60}秒" } - } - // 状态 0:默认(未开始), 1:下载中, 2:下载完成, 3:升级完成, 4:升级失败 - if(productStatus == 0 || productStatus == 1 || productStatus == 2){ - upgradeComplete = false + if(index == 0){ + //是否需要触发提示升级只判断第一个任务 + if(productStatus == 0){ + if(!OTAUpgradeConfig.promptedUpgrade.contains(request.otaToken)){ + //冷启动已完成(包括成功/失败),且驾驶状态为非自驾状态,且当前无订单进行强提示,否则为弱提示 + if(OTAUpgradeConfig.coldStartCompleted && !OTAUpgradeConfig.autopilotStatus + && !OTAUpgradeConfig.inOrder){ + //触发强提示升级 + CallerHmiManager.showOTAUpgradeDialog(1,true,upgradeReason+upgradeTime) + }else{ + //触发弱提示升级 + //冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级, + // 并toast提示“收到车辆部署任务,请在车辆空闲时发起升级” + CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.DELAY) + ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级") + } + OTAUpgradeConfig.promptedUpgrade.add(request.otaToken) + } + return + } + } + + // 状态 0:默认(未开始), 1:下载中, 2:下载完成, 3:升级完成, 4:升级失败 + if(productStatus == 0 || productStatus == 1 || productStatus == 2){ + upgradeComplete = false + } + if(productArray.length() != taskNumber){ + upgradeComplete = false + } + if(productName.contains(":")){ + productName = productName.trim().substringAfterLast(":") + } + val otaUpgradeInfo = OtaUpgradeInfo(token, productStatus,failReason,upgradeReason, + taskId,taskItemId,otaType,productName,needRestart,isDelay,curSize,totalSize,leftTime) + otaUpgradeList.add(otaUpgradeInfo) } - if(productArray.length() != taskNumber){ - upgradeComplete = false + CallerHmiManager.showOTADownloadStatusDialog(true,otaUpgradeList) + if(!upgradeComplete){ + responseTimeoutNum = 0 + handler.removeMessages(1) + handler.sendEmptyMessageDelayed(1,30000) + }else{ + responseTimeoutNum = 0 + handler.removeMessages(1) } - if(productName.contains(":")){ - productName = productName.trim().substringAfterLast(":") + if(upgradeComplete){ + OTAUpgradeConfig.otaToken = "" + CallerOTAManager.invokeOtaDownloadStatus(false) + }else{ + CallerOTAManager.invokeOtaDownloadStatus(true) } - val otaUpgradeInfo = OtaUpgradeInfo(token, productStatus,failReason,upgradeReason, - taskId,taskItemId,otaType,productName,needRestart,isDelay,curSize,totalSize,leftTime) - otaUpgradeList.add(otaUpgradeInfo) - } - CallerHmiManager.showOTADownloadStatusDialog(true,otaUpgradeList) - if(!upgradeComplete){ - responseTimeoutNum = 0 - handler.removeMessages(1) - handler.sendEmptyMessageDelayed(1,30000) - }else{ - responseTimeoutNum = 0 - handler.removeMessages(1) - } - if(upgradeComplete){ - OTAUpgradeConfig.otaToken = "" - CallerOTAManager.invokeOtaDownloadStatus(false) - }else{ - CallerOTAManager.invokeOtaDownloadStatus(true) } + }catch (e: Exception){ + Log.e(TAG,"onOtaDownloadRequest e:${e}") } - } @@ -282,145 +285,147 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, OTAUpgradeConfig.otaToken = status.otaInfo.otaToken } } - - //解析JSON - if(status.otaInfo.productName.isEmpty()){ - if(OTAUpgradeConfig.isQuery){ -// ToastUtils.showLong("暂无待升级任务!") - shouldToast = true - OTAUpgradeConfig.isQuery = false - }else{ - //没有升级任务,取消查询,关掉弹窗 - responseTimeoutNum = 0 - handler.removeMessages(1) - CallerHmiManager.showOTAUpgradeDialog(1,false,"") - CallerHmiManager.showOTADownloadStatusDialog(false, emptyList()) - CallerOTAManager.invokeOtaDownloadStatus(false) - } - return - } - - val otaUpgradeList = ArrayList() - val productArray = JSONArray(status.otaInfo.productName) - var upgradeComplete = true - var upgradeResult = true //升级结果 true代表成功 false代表失败 默认为升级成功 - if(productArray.length() > 0){ - for(index in 0 until productArray.length()){ - val productInfo = productArray[index] as JSONObject - val token = productInfo.optString("token") - val productStatus = productInfo.optInt("status") - val failReason = productInfo.optString("fail_reason") - val upgradeReason = productInfo.optString("upgrade_reason")//升级原因 - val taskId = productInfo.optInt("task_id") - val taskItemId = productInfo.optInt("task_item_id") - val otaType = productInfo.optInt("ota_type") - var productName = productInfo.optString("product_name") - val needRestart = productInfo.optBoolean("need_restart") - val isDelay = productInfo.optBoolean("is_delay") - val curSize = productInfo.optDouble("cur_size") - val totalSize = productInfo.optDouble("total_size") - val taskNumber = productInfo.optInt("task_number") - val leftTime = productInfo.optInt("left_time")//剩余时间,单位秒 - - Log.i(TAG, "index=$index") - Log.i(TAG, "token=$token") - Log.i(TAG, "status=$productStatus") - Log.i(TAG, "fail_reason=$failReason") - Log.i(TAG, "upgrade_reason=$upgradeReason") - Log.i(TAG, "task_id=$taskId") - Log.i(TAG, "task_item_id=$taskItemId") - Log.i(TAG, "ota_type=$otaType") - Log.i(TAG, "product_name=$productName") - Log.i(TAG, "need_restart=$needRestart") - Log.i(TAG, "is_delay=$isDelay") - Log.i(TAG, "cur_size=$curSize") - Log.i(TAG, "total_size=$totalSize") - Log.i(TAG,"task_number=$taskNumber") - Log.i(TAG,"left_time=$leftTime") - - val upgradeTime = if(leftTime > 60){ - "预计部署过程用时${leftTime/60}分钟${leftTime%60}秒" - }else{ - "预计部署过程用时${leftTime%60}秒" - } - - if(index == 0){ - //是否需要触发提示升级只判断第一个任务 - if(productStatus == 0){ - if(!OTAUpgradeConfig.promptedUpgrade.contains(status.otaInfo.otaToken)){ - //冷启动已完成(包括成功/失败),且驾驶状态为非自驾状态,且当前无订单进行强提示,否则为弱提示 - if(OTAUpgradeConfig.coldStartCompleted && !OTAUpgradeConfig.autopilotStatus - && !OTAUpgradeConfig.inOrder){ - //触发强提示升级 - CallerHmiManager.showOTAUpgradeDialog(1,true,upgradeReason+upgradeTime) - }else{ - //触发弱提示升级 - //冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级, - // 并toast提示“收到车辆部署任务,请在车辆空闲时发起升级” - CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.DELAY) - ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级") - } - OTAUpgradeConfig.promptedUpgrade.add(status.otaInfo.otaToken) - } - OTAUpgradeConfig.isQuery = false - return - } - } - - - // 状态 0:默认(未开始), 1:下载中, 2:下载完成, 3:升级完成, 4:升级失败 - if(productStatus == 0 || productStatus == 1 || productStatus == 2){ - upgradeComplete = false - } - if(productArray.length() != taskNumber){ - upgradeComplete = false - } - if(productStatus == 4){ - upgradeResult = false - upgradeComplete = true - } - if(productName.contains(":")){ - productName = productName.trim().substringAfterLast(":") - } - val otaUpgradeInfo = OtaUpgradeInfo(token, productStatus,failReason,upgradeReason, - taskId,taskItemId,otaType,productName,needRestart,isDelay,curSize,totalSize,leftTime) - otaUpgradeList.add(otaUpgradeInfo) - } - if(!upgradeComplete){ - responseTimeoutNum = 0 - handler.removeMessages(1) - handler.sendEmptyMessageDelayed(1,30000) - }else{ - responseTimeoutNum = 0 - handler.removeMessages(1) - } - if(upgradeComplete){ - OTAUpgradeConfig.otaToken = "" + try { + //解析JSON + if(status.otaInfo.productName.isEmpty()){ if(OTAUpgradeConfig.isQuery){ -// ToastUtils.showLong("暂无待升级任务!") +// ToastUtils.showLong("暂无待升级任务!") shouldToast = true OTAUpgradeConfig.isQuery = false }else{ - CallerHmiManager.showOTADownloadStatusDialog(false,otaUpgradeList) - CallerHmiManager.showOTAResultDialog(true,upgradeResult) - //升级成功,自动执行优雅停服 - if(upgradeResult){ - CallerAutoPilotControlManager.sendIpcPowerOff() - //当优雅停服完成、需要车辆下电的时候(比如当前是停服触发60s后),车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作 - handler.sendEmptyMessageDelayed(2,60000) - } + //没有升级任务,取消查询,关掉弹窗 + responseTimeoutNum = 0 + handler.removeMessages(1) + CallerHmiManager.showOTAUpgradeDialog(1,false,"") + CallerHmiManager.showOTADownloadStatusDialog(false, emptyList()) + CallerOTAManager.invokeOtaDownloadStatus(false) } - CallerOTAManager.invokeOtaDownloadStatus(false) - }else{ - //通知关闭提示升级窗口(存在域控也在进行5min倒计时,与app存在时间差,域控会更早完成倒计时触发升级, - // 此时通知app开始升级,app收到后即使未完成倒计时,也关闭提示弹窗,开始展示下载进展) - OTAUpgradeConfig.isQuery = false - CallerHmiManager.showOTAUpgradeDialog(1,false,"") - CallerHmiManager.showOTADownloadStatusDialog(true,otaUpgradeList) - CallerOTAManager.invokeOtaDownloadStatus(true) + return } - } + val otaUpgradeList = ArrayList() + val productArray = JSONArray(status.otaInfo.productName) + var upgradeComplete = true + var upgradeResult = true //升级结果 true代表成功 false代表失败 默认为升级成功 + if(productArray.length() > 0){ + for(index in 0 until productArray.length()){ + val productInfo = productArray[index] as JSONObject + val token = productInfo.optString("token") + val productStatus = productInfo.optInt("status") + val failReason = productInfo.optString("fail_reason") + val upgradeReason = productInfo.optString("upgrade_reason")//升级原因 + val taskId = productInfo.optInt("task_id") + val taskItemId = productInfo.optInt("task_item_id") + val otaType = productInfo.optInt("ota_type") + var productName = productInfo.optString("product_name") + val needRestart = productInfo.optBoolean("need_restart") + val isDelay = productInfo.optBoolean("is_delay") + val curSize = productInfo.optDouble("cur_size") + val totalSize = productInfo.optDouble("total_size") + val taskNumber = productInfo.optInt("task_number") + val leftTime = productInfo.optInt("left_time")//剩余时间,单位秒 + + Log.i(TAG, "index=$index") + Log.i(TAG, "token=$token") + Log.i(TAG, "status=$productStatus") + Log.i(TAG, "fail_reason=$failReason") + Log.i(TAG, "upgrade_reason=$upgradeReason") + Log.i(TAG, "task_id=$taskId") + Log.i(TAG, "task_item_id=$taskItemId") + Log.i(TAG, "ota_type=$otaType") + Log.i(TAG, "product_name=$productName") + Log.i(TAG, "need_restart=$needRestart") + Log.i(TAG, "is_delay=$isDelay") + Log.i(TAG, "cur_size=$curSize") + Log.i(TAG, "total_size=$totalSize") + Log.i(TAG,"task_number=$taskNumber") + Log.i(TAG,"left_time=$leftTime") + + val upgradeTime = if(leftTime > 60){ + "预计部署过程用时${leftTime/60}分钟${leftTime%60}秒" + }else{ + "预计部署过程用时${leftTime%60}秒" + } + + if(index == 0){ + //是否需要触发提示升级只判断第一个任务 + if(productStatus == 0){ + if(!OTAUpgradeConfig.promptedUpgrade.contains(status.otaInfo.otaToken)){ + //冷启动已完成(包括成功/失败),且驾驶状态为非自驾状态,且当前无订单进行强提示,否则为弱提示 + if(OTAUpgradeConfig.coldStartCompleted && !OTAUpgradeConfig.autopilotStatus + && !OTAUpgradeConfig.inOrder){ + //触发强提示升级 + CallerHmiManager.showOTAUpgradeDialog(1,true,upgradeReason+upgradeTime) + }else{ + //触发弱提示升级 + //冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级, + // 并toast提示“收到车辆部署任务,请在车辆空闲时发起升级” + CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.DELAY) + ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级") + } + OTAUpgradeConfig.promptedUpgrade.add(status.otaInfo.otaToken) + } + OTAUpgradeConfig.isQuery = false + return + } + } + + + // 状态 0:默认(未开始), 1:下载中, 2:下载完成, 3:升级完成, 4:升级失败 + if(productStatus == 0 || productStatus == 1 || productStatus == 2){ + upgradeComplete = false + } + if(productArray.length() != taskNumber){ + upgradeComplete = false + } + if(productStatus == 4){ + upgradeResult = false + upgradeComplete = true + } + if(productName.contains(":")){ + productName = productName.trim().substringAfterLast(":") + } + val otaUpgradeInfo = OtaUpgradeInfo(token, productStatus,failReason,upgradeReason, + taskId,taskItemId,otaType,productName,needRestart,isDelay,curSize,totalSize,leftTime) + otaUpgradeList.add(otaUpgradeInfo) + } + if(!upgradeComplete){ + responseTimeoutNum = 0 + handler.removeMessages(1) + handler.sendEmptyMessageDelayed(1,30000) + }else{ + responseTimeoutNum = 0 + handler.removeMessages(1) + } + if(upgradeComplete){ + OTAUpgradeConfig.otaToken = "" + if(OTAUpgradeConfig.isQuery){ +// ToastUtils.showLong("暂无待升级任务!") + shouldToast = true + OTAUpgradeConfig.isQuery = false + }else{ + CallerHmiManager.showOTADownloadStatusDialog(false,otaUpgradeList) + CallerHmiManager.showOTAResultDialog(true,upgradeResult) + //升级成功,自动执行优雅停服 + if(upgradeResult){ + CallerAutoPilotControlManager.sendIpcPowerOff() + //当优雅停服完成、需要车辆下电的时候(比如当前是停服触发60s后),车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作 + handler.sendEmptyMessageDelayed(2,60000) + } + } + CallerOTAManager.invokeOtaDownloadStatus(false) + }else{ + //通知关闭提示升级窗口(存在域控也在进行5min倒计时,与app存在时间差,域控会更早完成倒计时触发升级, + // 此时通知app开始升级,app收到后即使未完成倒计时,也关闭提示弹窗,开始展示下载进展) + OTAUpgradeConfig.isQuery = false + CallerHmiManager.showOTAUpgradeDialog(1,false,"") + CallerHmiManager.showOTADownloadStatusDialog(true,otaUpgradeList) + CallerOTAManager.invokeOtaDownloadStatus(true) + } + } + }catch (e: Exception){ + Log.e(TAG,"onOtaStatus e:${e}") + } } /** @@ -435,121 +440,123 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, Log.i(TAG, "onOtaPureStr timestamp=$timestamp") Log.i(TAG, "onOtaPureStr status=$status") Log.i(TAG, "onOtaPureStr status.data=${status.data}") - val jsonObject = JSONObject(status.data) - val cmd = jsonObject.optString("cmd") - - //无升级任务 - if("ASK_PAD_NO_UPGRADE" == cmd){ - ToastUtils.showShort("暂无OTA升级任务") - return - } - - val otaToken = jsonObject.optString("token") - val otaStatus = jsonObject.optString("status") - val upgradeReason = jsonObject.optString("upgrade_reason") - val isDelay = jsonObject.optBoolean("is_delay") - val isCancel = jsonObject.optBoolean("is_cancel") - - Log.i(TAG, "cmd=$cmd") - Log.i(TAG, "otaToken=$otaToken") - Log.i(TAG, "otaStatus=$otaStatus") - Log.i(TAG, "upgradeReason=$upgradeReason") - Log.i(TAG, "isDelay=$isDelay") - Log.i(TAG, "isCancel=$isCancel") - - OTAUpgradeConfig.token = otaToken - - val products = jsonObject.optString("products") - val productsArray = JSONArray(products) - val otaUpgradeList = ArrayList() - if(productsArray.length() > 0){ - for(index in 0 until productsArray.length()){ - val productInfo = productsArray[index] as JSONObject - val productStatus = productInfo.optString("status") - val failReason = productInfo.optString("fail_reason") - val speed = productInfo.optDouble("speed") - val leftTime = productInfo.optInt("left_time") - val name = productInfo.optString("name") - val curSize = productInfo.optDouble("cur_size") - val totalSize = productInfo.optDouble("total_size") - - Log.i(TAG, "productStatus=$productStatus") - Log.i(TAG, "failReason=$failReason") - Log.i(TAG, "speed=$speed") - Log.i(TAG, "leftTime=$leftTime") - Log.i(TAG, "name=$name") - Log.i(TAG, "curSize=$curSize") - Log.i(TAG, "totalSize=$totalSize") - - val otaUpgradeInfo = OtaUpgradeInfo(otaToken, getProjectStatus(productStatus),failReason,upgradeReason, - 0,0,1,name,true,isDelay,curSize,totalSize,leftTime) - otaUpgradeList.add(otaUpgradeInfo) - + try { + val jsonObject = JSONObject(status.data) + val cmd = jsonObject.optString("cmd") + //无升级任务 + if("ASK_PAD_NO_UPGRADE" == cmd){ + ToastUtils.showShort("暂无OTA升级任务") + return } - } - //请求升级 - if(cmd == "ASK_PAD_UPGRADE" &&( otaStatus == "init" || otaStatus == "delay")){ - secondVersionShouldToast = false //收到请求升级,故不需要进行提示 - //冷启动已完成(包括成功/失败),且驾驶状态为非自驾状态,且当前无订单进行强提示,否则为弱提示 - if(OTAUpgradeConfig.coldStartCompleted && !OTAUpgradeConfig.autopilotStatus - && !OTAUpgradeConfig.inOrder){ - //触发强提示升级 - CallerHmiManager.showOTAUpgradeDialog(2,true,upgradeReason) - }else{ - //触发弱提示升级 - //冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级, - // 并toast提示“收到车辆部署任务,请在车辆空闲时发起升级” + val otaToken = jsonObject.optString("token") + val otaStatus = jsonObject.optString("status") + val upgradeReason = jsonObject.optString("upgrade_reason") + val isDelay = jsonObject.optBoolean("is_delay") + val isCancel = jsonObject.optBoolean("is_cancel") + + Log.i(TAG, "cmd=$cmd") + Log.i(TAG, "otaToken=$otaToken") + Log.i(TAG, "otaStatus=$otaStatus") + Log.i(TAG, "upgradeReason=$upgradeReason") + Log.i(TAG, "isDelay=$isDelay") + Log.i(TAG, "isCancel=$isCancel") + + OTAUpgradeConfig.token = otaToken + + val products = jsonObject.optString("products") + val productsArray = JSONArray(products) + val otaUpgradeList = ArrayList() + if(productsArray.length() > 0){ + for(index in 0 until productsArray.length()){ + val productInfo = productsArray[index] as JSONObject + val productStatus = productInfo.optString("status") + val failReason = productInfo.optString("fail_reason") + val speed = productInfo.optDouble("speed") + val leftTime = productInfo.optInt("left_time") + val name = productInfo.optString("name") + val curSize = productInfo.optDouble("cur_size") + val totalSize = productInfo.optDouble("total_size") + + Log.i(TAG, "productStatus=$productStatus") + Log.i(TAG, "failReason=$failReason") + Log.i(TAG, "speed=$speed") + Log.i(TAG, "leftTime=$leftTime") + Log.i(TAG, "name=$name") + Log.i(TAG, "curSize=$curSize") + Log.i(TAG, "totalSize=$totalSize") + + val otaUpgradeInfo = OtaUpgradeInfo(otaToken, getProjectStatus(productStatus),failReason,upgradeReason, + 0,0,1,name,true,isDelay,curSize,totalSize,leftTime) + otaUpgradeList.add(otaUpgradeInfo) - val reason = if(OTAUpgradeConfig.autopilotStatus){ - "处于自驾中" - }else if(OTAUpgradeConfig.inOrder){ - "处于订单中" - }else{ - "冷启动未完成" } - val query = JSONObject() - query.put("cmd","ASK_PAD_UPGRADE_RES") - query.put("token",OTAUpgradeConfig.token) - query.put("allow_upgrade",false) - query.put("reason",reason) - Log.i(TAG,query.toString()) - CallerAutoPilotControlManager.sendOtaPadMsgQuery(query.toString()) - - ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级") } - return - } - //升级中 - if(cmd == "PAD_UPGRADE_REPORT"){ - CallerHmiManager.showOTADownloadStatusDialog(true,otaUpgradeList) - versionTwoTimeoutNum = 0 - handler.removeMessages(3) - handler.sendEmptyMessageDelayed(3,30000) - } - //升级完成 - if(otaStatus == "fail"){ - CallerHmiManager.showOTADownloadStatusDialog(false,emptyList()) - CallerHmiManager.showOTAResultDialog(isShow = true, result = false) - versionTwoTimeoutNum = 0 - handler.removeMessages(3) - CallerOTAManager.invokeOtaDownloadStatus(false) - OTAUpgradeConfig.token = "" - } - if(otaStatus == "success"){ - //升级成功,自动执行优雅停服 - CallerAutoPilotControlManager.sendIpcPowerOff() - //当优雅停服完成、需要车辆下电的时候(比如当前是停服触发60s后),车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作 - handler.sendEmptyMessageDelayed(2,60000) - CallerOTAManager.invokeOtaDownloadStatus(false) - CallerHmiManager.showOTADownloadStatusDialog(false,emptyList()) - CallerHmiManager.showOTAResultDialog(isShow = true, result = true) - versionTwoTimeoutNum = 0 - handler.removeMessages(3) - OTAUpgradeConfig.token = "" - } + //请求升级 + if(cmd == "ASK_PAD_UPGRADE" &&( otaStatus == "init" || otaStatus == "delay")){ + secondVersionShouldToast = false //收到请求升级,故不需要进行提示 + //冷启动已完成(包括成功/失败),且驾驶状态为非自驾状态,且当前无订单进行强提示,否则为弱提示 + if(OTAUpgradeConfig.coldStartCompleted && !OTAUpgradeConfig.autopilotStatus + && !OTAUpgradeConfig.inOrder){ + //触发强提示升级 + CallerHmiManager.showOTAUpgradeDialog(2,true,upgradeReason) + }else{ + //触发弱提示升级 + //冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级, + // 并toast提示“收到车辆部署任务,请在车辆空闲时发起升级” + val reason = if(OTAUpgradeConfig.autopilotStatus){ + "处于自驾中" + }else if(OTAUpgradeConfig.inOrder){ + "处于订单中" + }else{ + "冷启动未完成" + } + val query = JSONObject() + query.put("cmd","ASK_PAD_UPGRADE_RES") + query.put("token",OTAUpgradeConfig.token) + query.put("allow_upgrade",false) + query.put("reason",reason) + Log.i(TAG,query.toString()) + CallerAutoPilotControlManager.sendOtaPadMsgQuery(query.toString()) + + ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级") + } + return + } + + //升级中 + if(cmd == "PAD_UPGRADE_REPORT"){ + CallerHmiManager.showOTADownloadStatusDialog(true,otaUpgradeList) + versionTwoTimeoutNum = 0 + handler.removeMessages(3) + handler.sendEmptyMessageDelayed(3,30000) + } + //升级完成 + if(otaStatus == "fail"){ + CallerHmiManager.showOTADownloadStatusDialog(false,emptyList()) + CallerHmiManager.showOTAResultDialog(isShow = true, result = false) + versionTwoTimeoutNum = 0 + handler.removeMessages(3) + CallerOTAManager.invokeOtaDownloadStatus(false) + OTAUpgradeConfig.token = "" + } + if(otaStatus == "success"){ + //升级成功,自动执行优雅停服 + CallerAutoPilotControlManager.sendIpcPowerOff() + //当优雅停服完成、需要车辆下电的时候(比如当前是停服触发60s后),车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作 + handler.sendEmptyMessageDelayed(2,60000) + CallerOTAManager.invokeOtaDownloadStatus(false) + CallerHmiManager.showOTADownloadStatusDialog(false,emptyList()) + CallerHmiManager.showOTAResultDialog(isShow = true, result = true) + versionTwoTimeoutNum = 0 + handler.removeMessages(3) + OTAUpgradeConfig.token = "" + } + }catch (e: Exception){ + Log.e(TAG,"onOtaPureStr e;${e}") + } } override fun sendOtaPadMsgQuery() {