Merge branch 'robosweeper-d-app-module_290_0816' of gitlab.zhidaoauto.com:zhjt/AndroidApp/MoGoEagleEye into robosweeper-d-app-module_290_0816
This commit is contained in:
@@ -415,6 +415,12 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
*/
|
||||
public abstract int getStationPanelViewId();
|
||||
|
||||
/**
|
||||
* 获取清扫车操作面板layout id
|
||||
* @return
|
||||
*/
|
||||
public abstract int getSweepOperatePanelViewId();
|
||||
|
||||
/**
|
||||
* 重新开启自动驾驶
|
||||
*/
|
||||
|
||||
@@ -249,6 +249,11 @@ public class SweeperFragment extends BaseSweeperTabFragment<SweeperFragment, Swe
|
||||
return R.layout.fragment_och_sweeper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSweepOperatePanelViewId() {
|
||||
return R.layout.sweeper_operate_panel_view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restartAutopilot() {
|
||||
if (!isAnimateRunning) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,148 @@
|
||||
package com.mogo.och.sweeper.util;
|
||||
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass;
|
||||
import chassis.VehicleStateOuterClass;
|
||||
|
||||
/**
|
||||
* 清扫车-福田,构建业务命令数据的工具类
|
||||
*/
|
||||
public class SweeperFutianCmdUtil {
|
||||
private static final int CLEAN_WORK_OPEN = 1; //清扫作业-开启
|
||||
private static final int CLEAN_WORK_CLOSE = 2;//清扫作业-关闭
|
||||
public static final int CLEAN_MODE_PURE_SWEEP = 1;//作业模式-纯扫
|
||||
public static final int CLEAN_MODE_WASH_SWEEP = 2;//作业模式-洗扫
|
||||
public static final int CLEAN_MODE_PURE_WASH = 3;//作业模式-纯洗
|
||||
public static final int CLEAN_MODE_PURE_DRAW = 4;//作业模式-纯吸
|
||||
private static final int CLEAN_MODE_CLOSE = 5;//作业模式-关闭
|
||||
public static final int CLEAN_DIRECTION_BOTH_SIDE = 1;//清扫方向-两侧
|
||||
public static final int CLEAN_DIRECTION_LEFT_SIDE = 2;//清扫方向-左侧
|
||||
public static final int CLEAN_DIRECTION_RIGHT_SIDE = 3;//清扫方向-右侧
|
||||
private static final int CLEAN_DIRECTION_CLOSE = 4;//清扫方向-关闭
|
||||
public static final int CLEAN_INTENSITY_STRAND = 1;//作业强度-标准
|
||||
public static final int CLEAN_INTENSITY_STRONG = 2;//作业强度-加强
|
||||
|
||||
/**
|
||||
* 清扫作业:打开
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanWorkStartCmd() {
|
||||
return buildCleanWorkCmd(CLEAN_WORK_OPEN);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清扫作业:关闭
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanWorkStopCmd() {
|
||||
return buildCleanWorkCmd(CLEAN_WORK_CLOSE);
|
||||
}
|
||||
|
||||
|
||||
private static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanWorkCmd(int startOrStop) {
|
||||
SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.newBuilder();
|
||||
builder.setCleanOpenRequirement(startOrStop);
|
||||
return buildTaskCmd(builder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 作业模式:传入具体的模式对应的值
|
||||
*
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanModeCmd(int value) {
|
||||
SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.newBuilder();
|
||||
builder.setCleanModeRequirement(value);
|
||||
return buildTaskCmd(builder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 作业模式:纯吸
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanModePureDrawCmd() {
|
||||
SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.newBuilder();
|
||||
builder.setCleanModeRequirement(CLEAN_MODE_PURE_DRAW);
|
||||
//不用设置作业方向,自动设置作业强度为:标准
|
||||
builder.setCleanIntensityRequirement(CLEAN_INTENSITY_STRAND);
|
||||
return buildTaskCmd(builder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 作业模式:关闭作业模式
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanModeCloseCmd() {
|
||||
SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.newBuilder();
|
||||
builder.setCleanModeRequirement(CLEAN_MODE_CLOSE);
|
||||
//关闭清扫方向,待下次在选择
|
||||
builder.setCleanDirectionRequirement(CLEAN_DIRECTION_CLOSE);
|
||||
//自动设置作业强度为:标准
|
||||
builder.setCleanIntensityRequirement(CLEAN_INTENSITY_STRAND);
|
||||
return buildTaskCmd(builder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 作业方向:根据具体的方向传入具体的值
|
||||
*
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanDirectionCmd(int value) {
|
||||
SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.newBuilder();
|
||||
builder.setCleanDirectionRequirement(value);
|
||||
builder.setCleanIntensityRequirement(CLEAN_INTENSITY_STRAND);
|
||||
// 同时作业强度默认:标准
|
||||
return buildTaskCmd(builder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 作业方向:关闭作业方向
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanDirectionCloseCmd() {
|
||||
SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.newBuilder();
|
||||
builder.setCleanDirectionRequirement(CLEAN_DIRECTION_CLOSE);
|
||||
//重置作业强度为标准
|
||||
builder.setCleanIntensityRequirement(CLEAN_INTENSITY_STRAND);
|
||||
return buildTaskCmd(builder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 作业强度:传入具体的值
|
||||
*
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildCleanIntensityCmd(int value) {
|
||||
SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.newBuilder();
|
||||
builder.setCleanIntensityRequirement(value);
|
||||
return buildTaskCmd(builder.build());
|
||||
}
|
||||
|
||||
private static SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd buildTaskCmd(
|
||||
SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd fuTianCleanCmd) {
|
||||
return SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd.newBuilder()
|
||||
.setRoboSweeperFutianCleanCmd(fuTianCleanCmd).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建底盘Mock数据
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static VehicleStateOuterClass.SweeperFuTianCleanSystemState buildSweeperFuTionCleanSystemStateMockData() {
|
||||
VehicleStateOuterClass.SweeperFuTianCleanSystemState.Builder builder = VehicleStateOuterClass.SweeperFuTianCleanSystemState.newBuilder();
|
||||
builder.setSecuMotWorkSts(true);
|
||||
builder.setSecuModWashSts(true);
|
||||
builder.setSecuWorkOnBothsidesSts(true);
|
||||
builder.setSecuWorkStrongSts(true);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="#00000000"/>
|
||||
<corners android:radius="@dimen/sweeper_operate_panel_btn_bg_corner"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/sweeper_operate_panel_btn1_bg_close"/>
|
||||
<corners android:radius="@dimen/sweeper_operate_panel_btn_bg_corner"/>
|
||||
<stroke android:color="@color/sweeper_operate_panel_btn1_bg_stroke" android:width="1dp"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/sweeper_operate_panel_btn2_bg_default"/>
|
||||
<corners android:radius="@dimen/sweeper_operate_panel_btn_bg_corner"/>
|
||||
<stroke android:color="@color/sweeper_operate_panel_btn2_bg_stroke" android:width="1dp"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/sweeper_operate_panel_btn2_bg_disabled"/>
|
||||
<corners android:radius="@dimen/sweeper_operate_panel_btn_bg_corner"/>
|
||||
<stroke android:color="@color/sweeper_operate_panel_btn2_bg_stroke" android:width="1dp"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/sweeper_operate_panel_btn1_bg_open"/>
|
||||
<corners android:radius="@dimen/sweeper_operate_panel_btn_bg_corner"/>
|
||||
<stroke android:color="@color/sweeper_operate_panel_btn1_bg_stroke" android:width="1dp"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/sweeper_operate_panel_btn2_bg_pressed"/>
|
||||
<corners android:radius="@dimen/sweeper_operate_panel_btn_bg_corner"/>
|
||||
<stroke android:color="@color/sweeper_operate_panel_btn2_bg_stroke" android:width="1dp"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,4 @@
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/bg_sweeper_operate_panel_btn_close" android:state_checked="true"/>
|
||||
<item android:drawable="@drawable/bg_sweeper_operate_panel_btn_open" android:state_checked="false"/>
|
||||
</selector>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/bg_sweeper_operate_panel_btn_disabled" android:state_enabled="false" android:state_checked="false"/>
|
||||
<item android:drawable="@drawable/bg_sweeper_operate_panel_btn_pressed" android:state_enabled="true" android:state_checked="true"/>
|
||||
<item android:drawable="@drawable/bg_sweeper_operate_panel_btn_default" android:state_enabled="true" android:state_checked="false"/>
|
||||
</selector>
|
||||
@@ -63,6 +63,17 @@
|
||||
app:layout_goneMarginTop="@dimen/module_mogo_och_station_panel_container_margin_top_no_call"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.mogo.och.sweeper.ui.SweeperOperatePanelView
|
||||
android:id="@+id/module_mogo_och_sweeper_operate_panel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_24"
|
||||
android:layout_marginStart="@dimen/dp_8"
|
||||
app:layout_constraintLeft_toRightOf="@id/fl_speed"
|
||||
app:layout_constraintTop_toTopOf="@id/fl_speed"
|
||||
tools:background="#f00"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<include
|
||||
android:id="@+id/module_mogo_och_sweeper_test_bar"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -0,0 +1,309 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_32"
|
||||
android:background="@drawable/bg_sweeper_operate_panel"
|
||||
android:padding="@dimen/dp_8">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hint_clean_work"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#ffffff"
|
||||
android:gravity="top|center_horizontal"
|
||||
android:paddingStart="@dimen/dp_8"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_8"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="车辆准备"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_work_open_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn1_bg_selector"
|
||||
android:checked="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_28"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_28"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="open"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toRightOf="@id/hint_clean_work"
|
||||
app:layout_constraintTop_toTopOf="@id/hint_clean_work" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/clean_work_barrier"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="bottom"
|
||||
app:constraint_referenced_ids="hint_clean_work, btn_clean_work_open_close" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hint_clean_mode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_28"
|
||||
android:background="#ffffff"
|
||||
android:gravity="top|center_horizontal"
|
||||
android:paddingStart="@dimen/dp_8"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_8"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="作业模式"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/clean_work_barrier" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_mode_pure_sweep"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="纯扫"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toRightOf="@id/hint_clean_mode"
|
||||
app:layout_constraintTop_toTopOf="@id/hint_clean_mode" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_mode_pure_wash"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="纯洗"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toRightOf="@id/btn_clean_mode_pure_sweep"
|
||||
app:layout_constraintTop_toTopOf="@id/hint_clean_mode" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_mode_sweep_wash"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="洗扫"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toLeftOf="@id/btn_clean_mode_pure_sweep"
|
||||
app:layout_constraintTop_toBottomOf="@id/btn_clean_mode_pure_sweep" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_mode_pure_absorption"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="纯吸"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toRightOf="@id/btn_clean_mode_sweep_wash"
|
||||
app:layout_constraintTop_toTopOf="@id/btn_clean_mode_sweep_wash" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/clean_mode_barrier"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="bottom"
|
||||
app:constraint_referenced_ids="hint_clean_mode, btn_clean_mode_pure_sweep, btn_clean_mode_pure_wash, btn_clean_mode_sweep_wash, btn_clean_mode_pure_absorption" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hint_clean_direction"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_28"
|
||||
android:background="#ffffff"
|
||||
android:gravity="top|center_horizontal"
|
||||
android:paddingStart="@dimen/dp_8"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_8"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="清扫方向"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/clean_mode_barrier" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_direction_left_side"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="左侧"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toRightOf="@id/hint_clean_direction"
|
||||
app:layout_constraintTop_toTopOf="@id/hint_clean_direction" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_direction_right_side"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="右侧"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toRightOf="@id/btn_clean_direction_left_side"
|
||||
app:layout_constraintTop_toTopOf="@id/hint_clean_direction" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_direction_both_side"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="两侧"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toLeftOf="@id/btn_clean_direction_left_side"
|
||||
app:layout_constraintTop_toBottomOf="@id/btn_clean_direction_left_side" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/clean_direction_barrier"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="bottom"
|
||||
app:constraint_referenced_ids="hint_clean_direction, btn_clean_direction_left_side, btn_clean_direction_right_side, btn_clean_direction_both_side" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hint_clean_intensity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_28"
|
||||
android:background="#ffffff"
|
||||
android:gravity="top|center_horizontal"
|
||||
android:paddingStart="@dimen/dp_8"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_8"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="作业强度"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/clean_direction_barrier" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_intensity_standard"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="标准"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toRightOf="@id/hint_clean_intensity"
|
||||
app:layout_constraintTop_toTopOf="@id/hint_clean_intensity" />
|
||||
|
||||
<CheckedTextView
|
||||
android:id="@+id/btn_clean_intensity_strong"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_28"
|
||||
android:background="@drawable/sweeper_operate_panel_btn2_bg_selector"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_32"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_32"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:text="强力"
|
||||
android:textColor="#000000"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size"
|
||||
app:layout_constraintLeft_toRightOf="@id/btn_clean_intensity_standard"
|
||||
app:layout_constraintTop_toTopOf="@id/hint_clean_intensity" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/loading_hint_container"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="#cc000000"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/loading_hint_top"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="正在执行中,请稍后"
|
||||
android:textColor="#ffffff"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/loading_hint_bottom"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_28"
|
||||
android:text="预计等待30秒"
|
||||
android:textColor="#ffffff"
|
||||
android:textSize="@dimen/sweeper_operate_panel_btn_text_size" />
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -44,4 +44,13 @@
|
||||
<color name="sweeper_traffic_light_green_color_down">#FF006D43</color>
|
||||
<color name="sweeper_traffic_light_yellow_color_up">#FFFFE198</color>
|
||||
<color name="sweeper_traffic_light_yellow_color_down">#FFFF9B00</color>
|
||||
|
||||
<color name="sweeper_operate_panel_btn1_bg_open">#7DE261</color>
|
||||
<color name="sweeper_operate_panel_btn1_bg_close">#f00</color>
|
||||
<color name="sweeper_operate_panel_btn1_bg_stroke">#BF30334C</color>
|
||||
<color name="sweeper_operate_panel_btn2_bg_default">#ffffff</color>
|
||||
<color name="sweeper_operate_panel_btn2_bg_pressed">#1FA7FF</color>
|
||||
<color name="sweeper_operate_panel_btn2_bg_disabled">#80ffffff</color>
|
||||
<color name="sweeper_operate_panel_btn2_bg_stroke">#BF30334C</color>
|
||||
|
||||
</resources>
|
||||
@@ -151,4 +151,7 @@
|
||||
<dimen name="sweeper_traffic_light_icon_size">154px</dimen>
|
||||
<dimen name="sweeper_traffic_light_time_view_width">130px</dimen>
|
||||
<dimen name="sweeper_traffic_light_time_size">60px</dimen>
|
||||
|
||||
<dimen name="sweeper_operate_panel_btn_bg_corner">16px</dimen>
|
||||
<dimen name="sweeper_operate_panel_btn_text_size">36px</dimen>
|
||||
</resources>
|
||||
@@ -24,4 +24,6 @@
|
||||
<string name="sweeper_arrive_to_current_tag">当前站点:</string>
|
||||
<string name="sweeper_arrive_to_next_tag">下一站:</string>
|
||||
<string name="sweeper_auto_disable_tip">自动驾驶状态为0不可用</string>
|
||||
|
||||
<string name="sweeper_operate_panel_cmd_execute_timeout">预计等待%d秒</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.Manifest.permission
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import androidx.annotation.RequiresPermission
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
@@ -545,4 +546,9 @@ class MoGoAutopilotProvider :
|
||||
Log.d(TAG, "---- sendStatusQueryReq ----")
|
||||
AdasManager.getInstance().sendStatusQueryReq()
|
||||
}
|
||||
|
||||
override fun sendSweeperFuTianTaskCmd(fuTianTaskCmd: SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd) {
|
||||
Log.d(TAG, "---- sendSweeperFuTianTaskCmd ----")
|
||||
AdasManager.getInstance().sendRoboSweeperFuTianTaskCmd(fuTianTaskCmd)
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.mogo.eagle.core.function.autopilot.adapter
|
||||
|
||||
import android.util.*
|
||||
import chassis.VehicleStateOuterClass
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
||||
@@ -45,7 +44,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPointCloudList
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager.invokeAutopilotRecordResult
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.network.utils.*
|
||||
import com.zhidao.support.adas.high.AdasManager
|
||||
import com.zhidao.support.adas.high.OnAdasListener
|
||||
import com.zhidao.support.adas.high.common.ProtocolStatus
|
||||
@@ -57,7 +55,6 @@ import mogo_msg.MogoReportMsg
|
||||
import perception.TrafficLightOuterClass
|
||||
import prediction.Prediction
|
||||
import record_cache.RecordPanelOuterClass
|
||||
import rule_segement.MogoPointCloudOuterClass
|
||||
import system_master.SystemStatusInfo
|
||||
|
||||
/**
|
||||
@@ -162,7 +159,10 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
CallerAutopilotVehicleStateListenerManager.invokeAutopilotThrottle(vehicleState.throttle)
|
||||
//刹车
|
||||
CallerAutopilotVehicleStateListenerManager.invokeAutopilotBrake(vehicleState.brake)
|
||||
|
||||
//清扫车(福田)清扫控制系统状态
|
||||
vehicleState.sweeperFutianCleanSystemState?.also {
|
||||
CallerAutopilotVehicleStateListenerManager.invokeSweeperFutianCleanSystemState(it)
|
||||
}
|
||||
} else {
|
||||
CallerAutopilotVehicleStateListenerManager.invokeAutopilotDataException(header.timestamp.toLong())
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
@@ -23,6 +24,7 @@ import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import chassis.Chassis;
|
||||
import chassis.VehicleStateOuterClass;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
public class MoGoHandAdasMsgManager implements
|
||||
@@ -166,4 +168,9 @@ public class MoGoHandAdasMsgManager implements
|
||||
public void onAutopilotBrake(float brake) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCleanSystemState(VehicleStateOuterClass.SweeperFuTianCleanSystemState cleanSystemState) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import android.content.*
|
||||
import android.util.Log
|
||||
import chassis.Chassis.GearPosition
|
||||
import chassis.Chassis.LightSwitch
|
||||
import chassis.VehicleStateOuterClass
|
||||
import com.mogo.eagle.core.function.api.autopilot.*
|
||||
import com.mogo.eagle.core.function.call.autopilot.*
|
||||
import com.mogo.eagle.core.utilcode.kotlin.*
|
||||
@@ -81,6 +82,11 @@ internal class CanImpl(ctx: Context): IFlow<CanStatus>(ctx), IMoGoAutopilotVehic
|
||||
timeOutCheck()
|
||||
}
|
||||
|
||||
override fun onSweeperFutianCleanSystemState(cleanSystemState: VehicleStateOuterClass.SweeperFuTianCleanSystemState) {
|
||||
send(CanStatus(isCanEnabled()))
|
||||
timeOutCheck()
|
||||
}
|
||||
|
||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMessage?) {
|
||||
super.onAutopilotGuardian(guardianInfo)
|
||||
send(CanStatus(isCanEnabled()))
|
||||
|
||||
@@ -19,6 +19,7 @@ import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.*
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import chassis.Chassis
|
||||
import chassis.VehicleStateOuterClass
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClient
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
@@ -1984,6 +1985,13 @@ class DebugSettingView @JvmOverloads constructor(
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 清扫车(福田)清扫控制系统状态
|
||||
*/
|
||||
override fun onSweeperFutianCleanSystemState(cleanSystemState: VehicleStateOuterClass.SweeperFuTianCleanSystemState) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 吐司提示
|
||||
*/
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import chassis.Chassis;
|
||||
import chassis.VehicleStateOuterClass;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo_msg.MogoReportMsg;
|
||||
import system_master.SystemStatusInfo;
|
||||
@@ -170,6 +171,10 @@ public class SteeringWheelView extends ConstraintLayout {
|
||||
|
||||
private final IMoGoAutopilotVehicleStateListener mIMoGoAutopilotVehicleStateListener = new IMoGoAutopilotVehicleStateListener() {
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCleanSystemState(@NonNull VehicleStateOuterClass.SweeperFuTianCleanSystemState cleanSystemState) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param brake 刹车
|
||||
*/
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import chassis.Chassis;
|
||||
import chassis.VehicleStateOuterClass;
|
||||
|
||||
/**
|
||||
* @author Jing
|
||||
@@ -123,6 +124,10 @@ public class TrafficDataView extends ConstraintLayout {
|
||||
}
|
||||
|
||||
private final IMoGoAutopilotVehicleStateListener mIMoGoAutopilotVehicleStateListener = new IMoGoAutopilotVehicleStateListener() {
|
||||
@Override
|
||||
public void onSweeperFutianCleanSystemState(@NonNull VehicleStateOuterClass.SweeperFuTianCleanSystemState cleanSystemState) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 车辆转向灯
|
||||
* @param lightSwitch
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.mogo.eagle.core.function.api.autopilot
|
||||
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
||||
import com.mogo.eagle.core.data.trafficlight.TrafficLightResult
|
||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
|
||||
@@ -205,4 +206,9 @@ interface IMoGoAutopilotProvider : IMoGoFunctionServerProvider {
|
||||
* 主动查询工控机的各topic状态
|
||||
*/
|
||||
fun sendStatusQueryReq()
|
||||
|
||||
/**
|
||||
* 福田清扫车业务指令下发
|
||||
*/
|
||||
fun sendSweeperFuTianTaskCmd(fuTianTaskCmd: SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd)
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.mogo.eagle.core.function.api.autopilot
|
||||
|
||||
import chassis.Chassis
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import chassis.VehicleStateOuterClass
|
||||
|
||||
/**
|
||||
* 车辆底盘 数据 回调监听
|
||||
@@ -52,4 +52,9 @@ interface IMoGoAutopilotVehicleStateListener {
|
||||
* 刹车
|
||||
*/
|
||||
fun onAutopilotBrake(brake: Float)
|
||||
|
||||
/**
|
||||
* 清扫车(福田)清扫控制系统状态
|
||||
*/
|
||||
fun onSweeperFutianCleanSystemState(cleanSystemState: VehicleStateOuterClass.SweeperFuTianCleanSystemState)
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.eagle.core.function.call.autopilot
|
||||
|
||||
import android.os.SystemClock
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
||||
@@ -263,4 +264,11 @@ object CallerAutoPilotManager {
|
||||
fun sendStatusQueryReq() {
|
||||
providerApi?.sendStatusQueryReq()
|
||||
}
|
||||
|
||||
/**
|
||||
* 福田清扫车业务指令下发
|
||||
*/
|
||||
fun sendSweeperFuTianTaskCmd(fuTianTaskCmd: SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd) {
|
||||
providerApi?.sendSweeperFuTianTaskCmd(fuTianTaskCmd)
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.call.autopilot
|
||||
|
||||
import androidx.annotation.Nullable
|
||||
import chassis.Chassis
|
||||
import chassis.VehicleStateOuterClass
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotVehicleStateListener
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import mogo.telematics.pad.MessagePad
|
||||
@@ -132,6 +133,16 @@ object CallerAutopilotVehicleStateListenerManager : CallerBase() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* clean system state 清扫车(福田)清扫控制系统状态
|
||||
*/
|
||||
fun invokeSweeperFutianCleanSystemState(cleanSystemState: VehicleStateOuterClass.SweeperFuTianCleanSystemState){
|
||||
M_AUTOPILOT_VEHICLE_LISTENERS.forEach{
|
||||
val listener = it.value
|
||||
listener.onSweeperFutianCleanSystemState(cleanSystemState)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 工控机时间回调
|
||||
|
||||
Reference in New Issue
Block a user