diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index c071543a4c..8218e6f9e4 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -428,6 +428,38 @@ class MoGoAutopilotProvider : AdasManager.getInstance().sendRecordDataConfigReq() } + /** + * 向左变道 + */ + override fun sendOperatorChangeLaneLeft() { + Log.d("liyz", "MoGoAutopilotProvider sendOperatorChangeLaneLeft -------> ") + AdasManager.getInstance().sendOperatorCmdChangeLaneLeft() + } + + /** + * 向右变道 + */ + override fun sendOperatorChangeLaneRight() { + Log.d("liyz", "MoGoAutopilotProvider sendOperatorChangeLaneRight -------> ") + AdasManager.getInstance().sendOperatorCmdChangeLaneRight() + } + + /** + * 发送设置加速度 acc>0加速 acc<0减速 acc=0复位 + */ + override fun sendOperatorSetAcceleratedSpeed(cc: Double) { + Log.d("liyz", "MoGoAutopilotProvider sendOperatorSetAcceleratedSpeed cc $cc ") + AdasManager.getInstance().sendOperatorCmdSetAcceleratedSpeed(cc) + } + + /** + * 鸣笛 value 1: honk 2: stop honking + */ + override fun sendOperatorSetHorn(value: Double) { + Log.d("liyz", "MoGoAutopilotProvider sendOperatorSetHorn value $value ") + AdasManager.getInstance().sendOperatorCmdSetHorn(value) + } + /** * 发送工控机所有节点重启命令 */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java index 0833d41030..f9f724cd1f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java @@ -22,6 +22,8 @@ import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; @@ -37,6 +39,8 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; /** * 针对作为Launcher的情况,做个性化操作 @@ -49,6 +53,11 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis private final static Handler handlerV2XEvent = new Handler(); private static Runnable runnableV2XEvent; + private volatile double accelerated;//加速度 + private Timer timerHorn; + private Timer timerAcc; + + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -161,11 +170,12 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){ //向上长按 + if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { //向上长按 ToastUtils.showShort("↑↑↑"); return true; - }else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){ //下和中间键盘长按,减速为-2 + } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { //下和中间键盘长按,减速为-2 ToastUtils.showShort("↓↓↓"); + sendAcc(true, -2); return true; } return super.onKeyDown(keyCode, event); @@ -174,20 +184,35 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override public boolean dispatchTouchEvent(MotionEvent event) { Log.d("liyz", "dispatchTouchEvent event.getX() = " + event.getX() + "--event.getY() = " + event.getY()); - if(event.getX()== -1469.6875 && event.getY()==530.0){ //向左变道 +// CallerMapUIServiceManager.INSTANCE.getMapUIController().changeZoom(0); + if (event.getX() == -1469.6875 && event.getY() == 530.0) { //向左变道 ToastUtils.showShort("← 向左变道"); + CallerAutoPilotManager.INSTANCE.sendOperatorChangeLaneLeft(); return true; - }else if(event.getX()== -1096.25 && event.getY()==132.5){ //鸣笛 + } else if (event.getX() == -1096.25 && event.getY() == 132.5) { //鸣笛 ToastUtils.showShort("↑ 鸣笛 "); + CallerAutoPilotManager.INSTANCE.sendOperatorSetHorn(1); + timerHorn = new Timer(); + timerHorn.schedule(new TimerTask() { + @Override + public void run() { + CallerAutoPilotManager.INSTANCE.sendOperatorSetHorn(2); + timerHorn = null; + } + }, 500); + return true; - }else if(event.getX()== -863.4375 && event.getY()==690.0){ //向右变道 + } else if (event.getX() == -863.4375 && event.getY() == 690.0) { //向右变道 + CallerAutoPilotManager.INSTANCE.sendOperatorChangeLaneRight(); ToastUtils.showShort("→ 向右变道"); return true; - }else if(event.getX()== -1096.25 && event.getY()==1099.0){ // -1减速 + } else if (event.getX() == -1096.25 && event.getY() == 1099.0) { // -1减速 + sendAcc(true, -1); //TODO 需要可以配置 ToastUtils.showShort("↓"); return true; - }else if(event.getX()== -1096.25 && event.getY()==690.0){ //复原 + } else if (event.getX() == -1096.25 && event.getY() == 690.0) { //复原 ToastUtils.showShort("O 复原 "); + sendAcc(false, 0.0); return true; } return super.dispatchTouchEvent(event); @@ -203,19 +228,19 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis //O x:-1096.25 y:690.0 Log.d("liyz", "onTouchEvent event.getX() = " + event.getX() + "--event.getY() = " + event.getY()); - if(event.getX()== -1469.6875 && event.getY()==530.0){ + if (event.getX() == -1469.6875 && event.getY() == 530.0) { ToastUtils.showShort("←"); return true; - }else if(event.getX()== -1096.25 && event.getY()==132.5){ + } else if (event.getX() == -1096.25 && event.getY() == 132.5) { ToastUtils.showShort("↑"); return true; - }else if(event.getX()== -863.4375 && event.getY()==690.0){ + } else if (event.getX() == -863.4375 && event.getY() == 690.0) { ToastUtils.showShort("→"); return true; - }else if(event.getX()== -1096.25 && event.getY()==1099.0){ + } else if (event.getX() == -1096.25 && event.getY() == 1099.0) { ToastUtils.showShort("↓"); return true; - }else if(event.getX()== -1096.25 && event.getY()==690.0){ + } else if (event.getX() == -1096.25 && event.getY() == 690.0) { ToastUtils.showShort("O"); return true; } @@ -230,4 +255,27 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis BarUtils.setStatusBarLightMode(this, true); } } + + private synchronized void sendAcc(boolean isSend, double acc) { + if (isSend) { + accelerated = acc; + if (timerAcc == null) { + timerAcc = new Timer(); + timerAcc.schedule(new TimerTask() { + @Override + public void run() { + CallerAutoPilotManager.INSTANCE.sendOperatorSetAcceleratedSpeed(accelerated); + } + }, 0, 500); //TODO + } + } else { + if (timerAcc != null) { + timerAcc.cancel(); + timerAcc = null; + } + CallerAutoPilotManager.INSTANCE.sendOperatorSetAcceleratedSpeed(acc); + } + } + + } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt index a360b916a5..3bb1317489 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt @@ -205,4 +205,24 @@ interface IMoGoAutopilotProvider : IMoGoFunctionServerProvider { * 主动查询工控机的各topic状态 */ fun sendStatusQueryReq() + + /** + * 向左变道 + */ + fun sendOperatorChangeLaneLeft() + + /** + * 向右变道 + */ + fun sendOperatorChangeLaneRight() + + /** + * 设置加速度 + */ + fun sendOperatorSetAcceleratedSpeed(cc: Double) + + /** + * 鸣笛 开始:1,结束:2 + */ + fun sendOperatorSetHorn(value: Double) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt index 7f3da3c452..c2bbe23556 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt @@ -185,6 +185,34 @@ object CallerAutoPilotManager { providerApi?.getBadCaseConfig() } + /** + * 向左变道 + */ + fun sendOperatorChangeLaneLeft() { + providerApi?.sendOperatorChangeLaneLeft() + } + + /** + * 向右变道 + */ + fun sendOperatorChangeLaneRight() { + providerApi?.sendOperatorChangeLaneRight() + } + + /** + * 发送设置加速度 acc>0加速 acc<0减速 acc=0复位 + */ + fun sendOperatorSetAcceleratedSpeed(cc: Double) { + providerApi?.sendOperatorSetAcceleratedSpeed(cc) + } + + /** + * 鸣笛 value 1: honk 2: stop honking + */ + fun sendOperatorSetHorn(value: Double) { + providerApi?.sendOperatorSetHorn(value) + } + /** * 发送工控机所有节点重启命令 */