[清扫车]refactor: 重构作业模式,清扫方向关闭时命令判断成功的逻辑,[纯扫] 比较特殊,单独对待;

This commit is contained in:
aibingbing
2022-08-29 16:38:58 +08:00
parent 89ce3c59fc
commit 6e8d45f78e

View File

@@ -262,13 +262,13 @@ public class SweeperOperatePanelView extends LinearLayout {
boolean isClickCurrentChoosedModeBtn = currentChoosedModeBtnView != null
&& currentChoosedModeBtnView.getId() == currentClickView.getId();
//是否纯吸View
boolean isPureAbsorption = currentClickView.getId() == R.id.btn_clean_mode_pure_absorption;
boolean isPureAbsorptionClick = currentClickView.getId() == R.id.btn_clean_mode_pure_absorption;
//是否纯洗View
boolean isPureWash = currentClickView.getId() == R.id.btn_clean_mode_pure_wash;
boolean isPureWashClick = currentClickView.getId() == R.id.btn_clean_mode_pure_wash;
//是否纯扫View
boolean isPureSweep = currentClickView.getId() == R.id.btn_clean_mode_pure_sweep;
boolean isPureSweepClick = currentClickView.getId() == R.id.btn_clean_mode_pure_sweep;
//是否洗扫View
boolean isWashSweep = currentClickView.getId() == R.id.btn_clean_mode_sweep_wash;
boolean isWashSweepClick = currentClickView.getId() == R.id.btn_clean_mode_sweep_wash;
CmdRequestCallback cmdRequestCallback = new CmdRequestCallback() {
@Override
@@ -295,14 +295,23 @@ public class SweeperOperatePanelView extends LinearLayout {
boolean clean_mode_pure_draw = cleanSystemState.getSecuWorkTonSts();
// 纯扫 模式判断不是另外其他3个模式同时有清扫方向说明开启了纯扫模式
boolean clean_mode_pure_sweep = checkIfCleanModePureSweep(cleanSystemState);
// 关闭作业模式实际执行了3个操作 关闭作业模式 关闭清扫方向 切换标准强度,实际以关闭作业模式成功为准)
boolean clean_mode_close = !clean_mode_wash_sweep
&& !clean_mode_pure_wash
&& !clean_mode_pure_draw
&& !clean_mode_pure_sweep;
if (isPureSweep) {
success = clean_mode_pure_sweep;
} else if (isPureWash) {
if (clean_mode_close) {// 关闭放第一判断
success = clean_mode_close;
} else if (isPureSweepClick) {
//success = clean_mode_pure_sweep;
//纯扫 这个模式实际在福田清扫车上没有这个按钮,只是发送指令给特种车端,默认此命令肯定是正确的
success = true;
} else if (isPureWashClick) {
success = clean_mode_pure_wash;
} else if (isWashSweep) {
} else if (isWashSweepClick) {
success = clean_mode_wash_sweep;
} else if (isPureAbsorption) {
} else if (isPureAbsorptionClick) {
success = clean_mode_pure_draw;
}
//TODO
@@ -318,7 +327,7 @@ public class SweeperOperatePanelView extends LinearLayout {
toggleCleanIntensityBtnsStatus(false);
} else {
// 如果是纯吸,没有设置清扫方向,同时自动设置作业强度为标准
if (isPureAbsorption) {
if (isPureAbsorptionClick) {
toggleCleanDirectionBtnsStatus(false);
setCleanIntensityStandard();
} else {
@@ -352,7 +361,7 @@ public class SweeperOperatePanelView extends LinearLayout {
//开启新的作业模式,直接发送命令(纯吸需要一并设置作业强度为标准)
int cmdValue = cleanModeBtnAndCmdValueMap.get(currentClickView.getId());
sendSweeperCmd(
isPureAbsorption ? SweeperFutianCmdUtil.buildCleanModePureDrawCmd()
isPureAbsorptionClick ? SweeperFutianCmdUtil.buildCleanModePureDrawCmd()
: SweeperFutianCmdUtil.buildCleanModeCmd(cmdValue),
cmdRequestCallback,
CMD_EXECUTE_TIMEOUT_SECONDS);
@@ -399,8 +408,13 @@ public class SweeperOperatePanelView extends LinearLayout {
boolean clean_direction_right_side = cleanSystemState.getSecuWorkRightSts();
// 两侧
boolean clean_direction_both_side = cleanSystemState.getSecuWorkOnBothsidesSts();
// 关闭清扫方向实际执行了2个操作关闭清扫方向 切换标准强度,实际以关闭清扫方向成功为准)
boolean clean_direction_close = !clean_direction_left_side && !clean_direction_right_side
&& !clean_direction_both_side;
if (isLeftSide) {
if (clean_direction_close) {//关闭放第一判断
success = clean_direction_close;
} else if (isLeftSide) {
success = clean_direction_left_side;
} else if (isRightSide) {
success = clean_direction_right_side;
@@ -779,12 +793,11 @@ public class SweeperOperatePanelView extends LinearLayout {
protected void onAttachedToWindow() {
super.onAttachedToWindow();
CallerAutopilotVehicleStateListenerManager.INSTANCE.addListener(TAG, mIMoGoAutopilotVehicleStateListener);
// syncVehicleStateAndRecoverOperatePanelStates();
// TODO
//syncVehicleStateAndRecoverOperatePanelStates();
// Mock VehicleState 数据回调
// UiThreadHandler.postDelayed(() -> {
// onSyncVehicleStateCallBack(SweeperFutianCmdUtil.buildSweeperFuTionCleanSystemStateMockData());
// }, 3000L);
// UiThreadHandler.postDelayed(() -> {
// onSyncVehicleStateCallBack(SweeperFutianCmdUtil.buildSweeperFuTionCleanSystemStateMockData());
// }, 3000L);
}
@Override
@@ -942,6 +955,10 @@ public class SweeperOperatePanelView extends LinearLayout {
msg.obj = timeout;
mSweeperOperateCmdHandler.sendMessage(msg);
// Mock Cmd Success
mockSendCmdSuccess();
}
private void mockSendCmdSuccess() {
Message successMsg = Message.obtain();
successMsg.what = MSG_CMD_EXECUTE_MOCK_SUCCESS;
mSweeperOperateCmdHandler.sendMessageDelayed(successMsg, 1000L * CMD_EXECUTE_MOCK_SUCCESS_SECONDS);