[清扫车]refactor: 重构作业模式,清扫方向关闭时命令判断成功的逻辑,[纯扫] 比较特殊,单独对待;
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user