diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index 10ba73cf1a..29103f4c3a 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -44,8 +44,7 @@ public class BusPassengerRouteFragment extends private final String TAG = "BusPassengerRouteFragment"; - private BusPassengerTrafficLightView mTrafficLightView; - private List mStationsList = new ArrayList<>(); + private final List mStationsList = new ArrayList<>(); private TextView mSpeedTv; private ConstraintLayout mNoLineInfoView; @@ -75,8 +74,6 @@ public class BusPassengerRouteFragment extends @Override protected void initViews() { super.initViews(); - mTrafficLightView = findViewById(R.id.bus_p_traffic_light_view); - CallerHmiManager.INSTANCE.setProxyTrafficLightView(mTrafficLightView); mSpeedTv = findViewById(R.id.bus_p_speed_tv); diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerTrafficLightView.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerTrafficLightView.java deleted file mode 100644 index e021a8675b..0000000000 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerTrafficLightView.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.mogo.och.bus.passenger.ui; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight; -import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.och.bus.passenger.R; - -import org.jetbrains.annotations.Nullable; - -/** - * bus乘客端:红绿灯view - * - * Created on 2022/3/14 - */ -public class BusPassengerTrafficLightView extends IViewTrafficLight { - - private ImageView mLightIconIV; - private TextView mLightTimeTV; - private int mCurrentLightId; - private ImageView mLightIconBG; - - public BusPassengerTrafficLightView(@Nullable Context context) { - this(context, null, 0); - } - - public BusPassengerTrafficLightView(@Nullable Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public BusPassengerTrafficLightView(@Nullable Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context); - } - - private void init(Context context) { - LayoutInflater.from(context).inflate(R.layout.bus_p_traffic_light_view, this, true); - mLightIconIV = findViewById(R.id.bus_p_traffic_light_iv); - mLightTimeTV = findViewById(R.id.bus_p_traffic_light_time_tv); - mLightIconBG = findViewById(R.id.bus_p_traffic_light_bg); - } - - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 - */ - @Override - public void showWarningTrafficLight(int checkLightId,int lightSource) { - super.showWarningTrafficLight(checkLightId,lightSource); - mCurrentLightId = checkLightId; - updateTrafficLightIcon(checkLightId); - } - - /** - * 关闭红绿灯预警展示,并重制灯态 - */ - @Override - public void disableWarningTrafficLight() { - super.disableWarningTrafficLight(); - UiThreadHandler.post(() -> { - mCurrentLightId = 0; - BusPassengerTrafficLightView.this.setVisibility(GONE); - }); - } - - /** - * @param redNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - @Override - public void changeCountdownTrafficLightNum(int redNum, int yellowNum, int greenNum) { - super.changeCountdownTrafficLightNum(redNum, yellowNum, greenNum); - resetView(); - switch (mCurrentLightId) { - case 1: - changeCountdownRed(redNum); - break; - case 2: - changeCountdownYellow(yellowNum); - break; - case 3: - changeCountdownGreen(greenNum); - break; - default: - UiThreadHandler.post(() -> { - mLightTimeTV.setText(""); - }); - break; - } - } - - @Override - public void changeCountdownRed(int redNum) { - super.changeCountdownRed(redNum); - UiThreadHandler.post(() -> { - if (redNum > 0) { - resetView(); - mLightTimeTV.setText(String.valueOf(redNum)); - } else { - disableCountdown(); - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownGreen(int greenNum) { - super.changeCountdownGreen(greenNum); - UiThreadHandler.post(() -> { - if (greenNum > 0) { - resetView(); - mLightTimeTV.setText(String.valueOf(greenNum)); - } else { - disableCountdown(); - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownYellow(int yellowNum) { - super.changeCountdownYellow(yellowNum); - UiThreadHandler.post(() -> { - if (yellowNum > 0) { - resetView(); - mLightTimeTV.setText(String.valueOf(yellowNum)); - } else { - disableCountdown(); - mLightTimeTV.setText(""); - } - }); - } - - /** - * 更新红绿灯icon - * - * @param lightId 0-都是默认,1-红,2-黄,3-绿 - */ - private void updateTrafficLightIcon(int lightId) { - UiThreadHandler.post(() -> { - switch (lightId) { - case 1: - mLightIconIV.setBackgroundResource(R.drawable.bus_p_light_red_nor); - BusPassengerTrafficLightView.this.setVisibility(VISIBLE); - break; - case 2: - mLightIconIV.setBackgroundResource(R.drawable.bus_p_light_yellow_nor); - BusPassengerTrafficLightView.this.setVisibility(VISIBLE); - break; - case 3: - mLightIconIV.setBackgroundResource(R.drawable.bus_p_light_green_nor); - BusPassengerTrafficLightView.this.setVisibility(VISIBLE); - break; - default: - BusPassengerTrafficLightView.this.setVisibility(GONE); - break; - } - }); - } - - @Override - public void disableCountdown() { - super.disableCountdown(); - UiThreadHandler.post(() ->{ - ViewGroup.LayoutParams layoutParams = getLayoutParams(); - if (layoutParams instanceof MarginLayoutParams){ - MarginLayoutParams lp = (MarginLayoutParams) layoutParams; - lp.width = (int) getResources().getDimension(R.dimen.bus_p_traffic_light_icon_size); - setLayoutParams(lp); - mLightTimeTV.setVisibility(GONE); - mLightIconBG.getLayoutParams().width = (int)getResources().getDimension(R.dimen.dp_90); - } - }); - } - - private void resetView(){ - ViewGroup.LayoutParams layoutParams = getLayoutParams(); - if (layoutParams instanceof MarginLayoutParams) { - MarginLayoutParams lp = (MarginLayoutParams) layoutParams; - lp.width = (int) getResources().getDimension(R.dimen.bus_p_route_traffic_light_view_width); - setLayoutParams(lp); - mLightTimeTV.setVisibility(VISIBLE); - mLightIconBG.getLayoutParams().width = (int) getResources().getDimension(R.dimen.bus_p_traffic_light_bg_width); - } - } -} diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerTrafficLightView.kt b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerTrafficLightView.kt new file mode 100644 index 0000000000..9ac253d812 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerTrafficLightView.kt @@ -0,0 +1,179 @@ +package com.mogo.och.bus.passenger.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.LinearLayout +import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum +import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.main.bus_p_traffic_light_view.view.* + +/** + * bus乘客端:红绿灯view + * + * Created on 2022/3/14 + */ +class BusPassengerTrafficLightView @JvmOverloads constructor( + context: Context?, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr), IMoGoTrafficLightListener { + + companion object { + private const val TAG = "BusPassengerTrafficLightView" + } + + private var mCurrentLightId = TrafficLightEnum.BLACK + + init { + init(context) + } + + private fun init(context: Context?) { + LayoutInflater.from(context).inflate(R.layout.bus_p_traffic_light_view, this, true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerTrafficLightListenerManager.addListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerTrafficLightListenerManager.removeListener(TAG) + } + + /** + * 展示红绿灯预警 + * + * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 + * @param lightSource 1:云端下发;2:自车感知 + */ + override fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) { + super.showTrafficLight(checkLightId, lightSource) + mCurrentLightId = checkLightId + updateTrafficLightIcon(checkLightId) + } + + /** + * 关闭红绿灯预警展示,并重制灯态 + */ + override fun disableTrafficLight() { + super.disableTrafficLight() + UiThreadHandler.post { + mCurrentLightId = TrafficLightEnum.BLACK + this@BusPassengerTrafficLightView.visibility = GONE + } + } + + /** + * @param redNum 红灯倒计时 + * @param yellowNum 黄灯倒计时 + * @param greenNum 绿灯倒计时 + */ + override fun changeCountdownTrafficLightNum(redNum: Int, yellowNum: Int, greenNum: Int) { + super.changeCountdownTrafficLightNum(redNum, yellowNum, greenNum) + resetView() + when (mCurrentLightId) { + TrafficLightEnum.RED -> changeCountdownRed(redNum) + TrafficLightEnum.YELLOW -> changeCountdownYellow(yellowNum) + TrafficLightEnum.GREEN -> changeCountdownGreen(greenNum) + else -> UiThreadHandler.post { bus_p_traffic_light_time_tv.text = "" } + } + } + + override fun changeCountdownRed(redNum: Int) { + super.changeCountdownRed(redNum) + UiThreadHandler.post { + if (redNum > 0) { + resetView() + bus_p_traffic_light_time_tv.text = redNum.toString() + } else { + disableTrafficLightCountDown() + bus_p_traffic_light_time_tv.text = "" + } + } + } + + override fun changeCountdownGreen(greenNum: Int) { + super.changeCountdownGreen(greenNum) + UiThreadHandler.post { + if (greenNum > 0) { + resetView() + bus_p_traffic_light_time_tv.text = greenNum.toString() + } else { + disableTrafficLightCountDown() + bus_p_traffic_light_time_tv.text = "" + } + } + } + + override fun changeCountdownYellow(yellowNum: Int) { + super.changeCountdownYellow(yellowNum) + UiThreadHandler.post { + if (yellowNum > 0) { + resetView() + bus_p_traffic_light_time_tv.text = yellowNum.toString() + } else { + disableTrafficLightCountDown() + bus_p_traffic_light_time_tv.text = "" + } + } + } + + /** + * 更新红绿灯icon + * + * @param lightId 0-都是默认,1-红,2-黄,3-绿 + */ + private fun updateTrafficLightIcon(lightId: TrafficLightEnum) { + UiThreadHandler.post { + when (lightId) { + TrafficLightEnum.RED -> { + bus_p_traffic_light_iv.setBackgroundResource(R.drawable.bus_p_light_red_nor) + this@BusPassengerTrafficLightView.visibility = VISIBLE + } + TrafficLightEnum.YELLOW -> { + bus_p_traffic_light_iv.setBackgroundResource(R.drawable.bus_p_light_yellow_nor) + this@BusPassengerTrafficLightView.visibility = VISIBLE + } + TrafficLightEnum.GREEN -> { + bus_p_traffic_light_iv.setBackgroundResource(R.drawable.bus_p_light_green_nor) + this@BusPassengerTrafficLightView.visibility = VISIBLE + } + else -> this@BusPassengerTrafficLightView.visibility = GONE + } + } + } + + override fun disableTrafficLightCountDown() { + super.disableTrafficLightCountDown() + UiThreadHandler.post { + val layoutParams = layoutParams + if (layoutParams is MarginLayoutParams) { + val lp = layoutParams + lp.width = resources.getDimension(R.dimen.bus_p_traffic_light_icon_size).toInt() + setLayoutParams(lp) + bus_p_traffic_light_time_tv.visibility = GONE + bus_p_traffic_light_bg.layoutParams.width = + resources.getDimension(R.dimen.dp_90).toInt() + } + } + } + + private fun resetView() { + val layoutParams = layoutParams + if (layoutParams is MarginLayoutParams) { + val lp = layoutParams + lp.width = resources.getDimension(R.dimen.bus_p_route_traffic_light_view_width).toInt() + setLayoutParams(lp) + bus_p_traffic_light_time_tv.visibility = VISIBLE + bus_p_traffic_light_bg.layoutParams.width = + resources.getDimension(R.dimen.bus_p_traffic_light_bg_width).toInt() + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusTrafficLightView.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusTrafficLightView.java deleted file mode 100644 index 4b25021821..0000000000 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusTrafficLightView.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.mogo.och.bus.ui; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.widget.ImageView; - -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight; -import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.och.bus.R; -import com.mogo.och.common.module.wigets.OCHGradientTextView; - -import org.jetbrains.annotations.Nullable; - -/** - * Bus司机端:红绿灯view - * - * Created on 2022/3/29 - */ -public class BusTrafficLightView extends IViewTrafficLight { - - private ImageView mLightIconIV; - private OCHGradientTextView mLightTimeTV; - private int mCurrentLightId; - - public BusTrafficLightView(@Nullable Context context) { - this(context, null, 0); - } - - public BusTrafficLightView(@Nullable Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public BusTrafficLightView(@Nullable Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context); - } - - private void init(Context context) { - LayoutInflater.from(context).inflate(R.layout.bus_traffic_light_view, this, true); - mLightIconIV = findViewById(R.id.bus_traffic_light_iv); - mLightTimeTV = findViewById(R.id.bus_traffic_light_time_tv); - } - - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 - */ - @Override - public void showWarningTrafficLight(int checkLightId,int lightSource) { - super.showWarningTrafficLight(checkLightId,lightSource); - mCurrentLightId = checkLightId; - updateTrafficLightIcon(checkLightId); - } - - /** - * 关闭红绿灯预警展示,并重制灯态 - */ - @Override - public void disableWarningTrafficLight() { - super.disableWarningTrafficLight(); - UiThreadHandler.post(() -> { - mCurrentLightId = 0; - BusTrafficLightView.this.setVisibility(GONE); - }); - } - - /** - * @param redNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - @Override - public void changeCountdownTrafficLightNum(int redNum, int yellowNum, int greenNum) { - super.changeCountdownTrafficLightNum(redNum, yellowNum, greenNum); - switch (mCurrentLightId) { - case 1: - changeCountdownRed(redNum); - break; - case 2: - changeCountdownYellow(yellowNum); - break; - case 3: - changeCountdownGreen(greenNum); - break; - default: - UiThreadHandler.post(() -> { - mLightTimeTV.setText(""); - }); - break; - } - } - - @Override - public void changeCountdownRed(int redNum) { - super.changeCountdownRed(redNum); - UiThreadHandler.post(() -> { - if (redNum > 0) { - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.bus_traffic_light_red_color_up), - getResources().getColor(R.color.bus_traffic_light_red_color_down)}); - mLightTimeTV.setText(String.valueOf(redNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownGreen(int greenNum) { - super.changeCountdownGreen(greenNum); - UiThreadHandler.post(() -> { - if (greenNum > 0) { - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.bus_traffic_light_green_color_up), - getResources().getColor(R.color.bus_traffic_light_green_color_down)}); - mLightTimeTV.setText(String.valueOf(greenNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownYellow(int yellowNum) { - super.changeCountdownYellow(yellowNum); - UiThreadHandler.post(() -> { - if (yellowNum > 0) { - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.bus_traffic_light_yellow_color_up), - getResources().getColor(R.color.bus_traffic_light_yellow_color_down)}); - mLightTimeTV.setText(String.valueOf(yellowNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - /** - * 更新红绿灯icon - * - * @param lightId 0-都是默认,1-红,2-黄,3-绿 - */ - private void updateTrafficLightIcon(int lightId) { - UiThreadHandler.post(() -> { - switch (lightId) { - case 1: - mLightIconIV.setBackgroundResource(R.drawable.bus_light_red_nor); - BusTrafficLightView.this.setVisibility(VISIBLE); - break; - case 2: - mLightIconIV.setBackgroundResource(R.drawable.bus_lightyellow_nor); - BusTrafficLightView.this.setVisibility(VISIBLE); - break; - case 3: - mLightIconIV.setBackgroundResource(R.drawable.bus_light_green_nor); - BusTrafficLightView.this.setVisibility(VISIBLE); - break; - default: - BusTrafficLightView.this.setVisibility(GONE); - break; - } - }); - } -} diff --git a/OCH/mogo-och-bus/src/main/res/layout/bus_traffic_light_view.xml b/OCH/mogo-och-bus/src/main/res/layout/bus_traffic_light_view.xml deleted file mode 100644 index 2fb7084349..0000000000 --- a/OCH/mogo-och-bus/src/main/res/layout/bus_traffic_light_view.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficLightView.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficLightView.java deleted file mode 100644 index adbc4ad114..0000000000 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficLightView.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.mogo.och.sweeper.view; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.widget.ImageView; -import android.widget.TextView; - -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight; -import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.och.sweeper.R; - -import org.jetbrains.annotations.Nullable; - -/** - * 清扫车:红绿灯view- - * - * Created on 2022/3/29 - */ -public class SweeperTrafficLightView extends IViewTrafficLight { - - private ImageView mLightIconIV; - private TextView mLightTimeTV; - private int mCurrentLightId; - - public SweeperTrafficLightView(@Nullable Context context) { - this(context, null, 0); - } - - public SweeperTrafficLightView(@Nullable Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public SweeperTrafficLightView(@Nullable Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context); - } - - private void init(Context context) { - LayoutInflater.from(context).inflate(R.layout.sweeper_traffic_light_view, this, true); - mLightIconIV = findViewById(R.id.sweeper_traffic_light_iv); - mLightTimeTV = findViewById(R.id.sweeper_traffic_light_time_tv); - } - - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 - */ - @Override - public void showWarningTrafficLight(int checkLightId,int lightSource) { - super.showWarningTrafficLight(checkLightId,lightSource); - mCurrentLightId = checkLightId; - updateTrafficLightIcon(checkLightId); - } - - /** - * 关闭红绿灯预警展示,并重制灯态 - */ - @Override - public void disableWarningTrafficLight() { - super.disableWarningTrafficLight(); - UiThreadHandler.post(() -> { - mCurrentLightId = 0; - SweeperTrafficLightView.this.setVisibility(GONE); - }); - } - - /** - * @param redNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - @Override - public void changeCountdownTrafficLightNum(int redNum, int yellowNum, int greenNum) { - super.changeCountdownTrafficLightNum(redNum, yellowNum, greenNum); - switch (mCurrentLightId) { - case 1: - changeCountdownRed(redNum); - break; - case 2: - changeCountdownYellow(yellowNum); - break; - case 3: - changeCountdownGreen(greenNum); - break; - default: - UiThreadHandler.post(() -> { - mLightTimeTV.setText(""); - }); - break; - } - } - - @Override - public void changeCountdownRed(int redNum) { - super.changeCountdownRed(redNum); - UiThreadHandler.post(() -> { - if (redNum > 0) { - mLightTimeTV.setText(String.valueOf(redNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownGreen(int greenNum) { - super.changeCountdownGreen(greenNum); - UiThreadHandler.post(() -> { - if (greenNum > 0) { - mLightTimeTV.setText(String.valueOf(greenNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownYellow(int yellowNum) { - super.changeCountdownYellow(yellowNum); - UiThreadHandler.post(() -> { - if (yellowNum > 0) { - mLightTimeTV.setText(String.valueOf(yellowNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - /** - * 更新红绿灯icon - * - * @param lightId 0-都是默认,1-红,2-黄,3-绿 - */ - private void updateTrafficLightIcon(int lightId) { - UiThreadHandler.post(() -> { - switch (lightId) { - case 1: - mLightIconIV.setBackgroundResource(R.drawable.sweeper_light_red_nor); - SweeperTrafficLightView.this.setVisibility(VISIBLE); - break; - case 2: - mLightIconIV.setBackgroundResource(R.drawable.sweeper_lightyellow_nor); - SweeperTrafficLightView.this.setVisibility(VISIBLE); - break; - case 3: - mLightIconIV.setBackgroundResource(R.drawable.sweeper_light_green_nor); - SweeperTrafficLightView.this.setVisibility(VISIBLE); - break; - default: - SweeperTrafficLightView.this.setVisibility(GONE); - break; - } - }); - } -} diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficLightView.kt b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficLightView.kt new file mode 100644 index 0000000000..2e199a83b4 --- /dev/null +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficLightView.kt @@ -0,0 +1,139 @@ +package com.mogo.och.sweeper.view + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.LinearLayout +import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum +import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.sweeper.R +import kotlinx.android.synthetic.main.sweeper_traffic_light_view.view.* + +/** + * 清扫车:红绿灯view- + * + * Created on 2022/3/29 + */ +class SweeperTrafficLightView @JvmOverloads constructor( + context: Context?, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr), IMoGoTrafficLightListener { + + companion object { + private const val TAG = "SweeperTrafficLightView" + } + + private var mCurrentLightId = TrafficLightEnum.BLACK + + init { + init(context) + } + + private fun init(context: Context?) { + LayoutInflater.from(context).inflate(R.layout.sweeper_traffic_light_view, this, true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerTrafficLightListenerManager.addListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerTrafficLightListenerManager.removeListener(TAG) + } + + /** + * 展示红绿灯预警 + * + * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 + * @param lightSource 1:云端下发;2:自车感知 + */ + override fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) { + mCurrentLightId = checkLightId + updateTrafficLightIcon(checkLightId) + } + + /** + * 关闭红绿灯预警展示,并重制灯态 + */ + override fun disableTrafficLight() { + UiThreadHandler.post { + mCurrentLightId = TrafficLightEnum.BLACK + this@SweeperTrafficLightView.visibility = GONE + } + } + + /** + * @param redNum 红灯倒计时 + * @param yellowNum 黄灯倒计时 + * @param greenNum 绿灯倒计时 + */ + override fun changeCountdownTrafficLightNum(redNum: Int, yellowNum: Int, greenNum: Int) { + when (mCurrentLightId) { + TrafficLightEnum.RED -> changeCountdownRed(redNum) + TrafficLightEnum.YELLOW -> changeCountdownYellow(yellowNum) + TrafficLightEnum.GREEN -> changeCountdownGreen(greenNum) + else -> UiThreadHandler.post { sweeper_traffic_light_time_tv.text = "" } + } + } + + override fun changeCountdownRed(redNum: Int) { + UiThreadHandler.post { + if (redNum > 0) { + sweeper_traffic_light_time_tv.text = redNum.toString() + } else { + sweeper_traffic_light_time_tv.text = "" + } + } + } + + override fun changeCountdownGreen(greenNum: Int) { + UiThreadHandler.post { + if (greenNum > 0) { + sweeper_traffic_light_time_tv.text = greenNum.toString() + } else { + sweeper_traffic_light_time_tv.text = "" + } + } + } + + override fun changeCountdownYellow(yellowNum: Int) { + UiThreadHandler.post { + if (yellowNum > 0) { + sweeper_traffic_light_time_tv.text = yellowNum.toString() + } else { + sweeper_traffic_light_time_tv.text = "" + } + } + } + + /** + * 更新红绿灯icon + * + * @param lightId 0-都是默认,1-红,2-黄,3-绿 + */ + private fun updateTrafficLightIcon(lightId: TrafficLightEnum) { + UiThreadHandler.post { + when (lightId) { + TrafficLightEnum.RED -> { + sweeper_traffic_light_iv.setBackgroundResource(R.drawable.sweeper_light_red_nor) + this@SweeperTrafficLightView.visibility = VISIBLE + } + TrafficLightEnum.YELLOW -> { + sweeper_traffic_light_iv.setBackgroundResource(R.drawable.sweeper_lightyellow_nor) + this@SweeperTrafficLightView.visibility = VISIBLE + } + TrafficLightEnum.GREEN -> { + sweeper_traffic_light_iv.setBackgroundResource(R.drawable.sweeper_light_green_nor) + this@SweeperTrafficLightView.visibility = VISIBLE + } + else -> this@SweeperTrafficLightView.visibility = GONE + } + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index a1a703d564..f30fa8d8c3 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -15,8 +15,6 @@ import androidx.fragment.app.FragmentTransaction; import com.mogo.commons.module.status.MogoStatusManager; import com.mogo.commons.mvp.MvpFragment; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; -import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy; -import com.mogo.eagle.core.function.api.hmi.view.IViewNotification; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; @@ -58,7 +56,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment mArrivedEndView; private WeakReference mArrivedCheckView; @@ -94,10 +91,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment { - mCurrentLightId = 0; - TaxiPassengerTrafficLightView.this.setVisibility(GONE); - }); - } - - /** - * @param redNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - @Override - public void changeCountdownTrafficLightNum(int redNum, int yellowNum, int greenNum) { - super.changeCountdownTrafficLightNum(redNum, yellowNum, greenNum); - resetView(); - switch (mCurrentLightId) { - case 1: - changeCountdownRed(redNum); - break; - case 2: - changeCountdownYellow(yellowNum); - break; - case 3: - changeCountdownGreen(greenNum); - break; - default: - UiThreadHandler.post(() -> { - mLightTimeTV.setText(""); - }); - break; - } - } - - @Override - public void changeCountdownRed(int redNum) { - super.changeCountdownRed(redNum); - UiThreadHandler.post(() -> { - if (redNum > 0) { - resetView(); - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.taxi_p_traffic_light_red_color_up), - getResources().getColor(R.color.taxi_p_traffic_light_red_color_down)}); - mLightTimeTV.setText(String.valueOf(redNum)); - } else { - disableCountdown(); - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownGreen(int greenNum) { - super.changeCountdownGreen(greenNum); - UiThreadHandler.post(() -> { - if (greenNum > 0) { - resetView(); - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.taxi_p_traffic_light_green_color_up), - getResources().getColor(R.color.taxi_p_traffic_light_green_color_down)}); - mLightTimeTV.setText(String.valueOf(greenNum)); - } else { - disableCountdown(); - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownYellow(int yellowNum) { - super.changeCountdownYellow(yellowNum); - UiThreadHandler.post(() -> { - if (yellowNum > 0) { - resetView(); - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.taxi_p_traffic_light_yellow_color_up), - getResources().getColor(R.color.taxi_p_traffic_light_yellow_color_down)}); - mLightTimeTV.setText(String.valueOf(yellowNum)); - } else { - disableCountdown(); - mLightTimeTV.setText(""); - } - }); - } - - /** - * 更新红绿灯icon - * - * @param lightId 0-都是默认,1-红,2-黄,3-绿 - */ - private void updateTrafficLightIcon(int lightId) { - UiThreadHandler.post(() -> { - switch (lightId) { - case 1: - mLightIconIV.setBackgroundResource(R.drawable.taxi_p_light_red_nor); - TaxiPassengerTrafficLightView.this.setVisibility(VISIBLE); - break; - case 2: - mLightIconIV.setBackgroundResource(R.drawable.taxi_p_lightyellow_nor); - TaxiPassengerTrafficLightView.this.setVisibility(VISIBLE); - break; - case 3: - mLightIconIV.setBackgroundResource(R.drawable.taxi_p_light_green_nor); - TaxiPassengerTrafficLightView.this.setVisibility(VISIBLE); - break; - default: - TaxiPassengerTrafficLightView.this.setVisibility(GONE); - break; - } - }); - } - @Override - public void disableCountdown() { - super.disableCountdown(); - UiThreadHandler.post(() ->{ - ViewGroup.LayoutParams layoutParams = getLayoutParams(); - if (layoutParams instanceof MarginLayoutParams){ - MarginLayoutParams lp = (MarginLayoutParams) layoutParams; - lp.width = (int) getResources().getDimension(R.dimen.taxi_p_traffic_light_icon_size); - setLayoutParams(lp); - mLightTimeTV.setVisibility(GONE); - mLightIconBG.getLayoutParams().width = (int)getResources().getDimension(R.dimen.dp_124); - } - }); - } - - private void resetView(){ - ViewGroup.LayoutParams layoutParams = getLayoutParams(); - if (layoutParams instanceof MarginLayoutParams) { - MarginLayoutParams lp = (MarginLayoutParams) layoutParams; - lp.width = (int) getResources().getDimension(R.dimen.taxi_p_traffic_light_layout_width); - setLayoutParams(lp); - mLightTimeTV.setVisibility(VISIBLE); - mLightIconBG.getLayoutParams().width = (int) getResources().getDimension(R.dimen.taxi_p_traffic_light_bg_width); - } - } -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerTrafficLightView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerTrafficLightView.kt new file mode 100644 index 0000000000..e445d5a65e --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerTrafficLightView.kt @@ -0,0 +1,200 @@ +package com.mogo.och.taxi.passenger.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.LinearLayout +import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum +import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.taxi.passenger.R +import kotlinx.android.synthetic.main.taxi_p_traffic_light_view.view.* + +/** + * Taxi乘客端:红绿灯view + * + * Created on 2022/3/14 + */ +class TaxiPassengerTrafficLightView @JvmOverloads constructor( + context: Context?, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr), IMoGoTrafficLightListener { + + companion object { + private const val TAG = "TaxiPassengerTrafficLightView" + } + + private var mCurrentLightId = TrafficLightEnum.BLACK + + init { + init(context) + } + + private fun init(context: Context?) { + LayoutInflater.from(context).inflate(R.layout.taxi_p_traffic_light_view, this, true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerTrafficLightListenerManager.addListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerTrafficLightListenerManager.removeListener(TAG) + } + + /** + * 展示红绿灯预警 + * + * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 + * @param lightSource 1:云端下发;2:自车感知 + */ + override fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) { + super.showTrafficLight(checkLightId, lightSource) + mCurrentLightId = checkLightId + updateTrafficLightIcon(checkLightId) + } + + /** + * 关闭红绿灯预警展示,并重制灯态 + */ + override fun disableTrafficLight() { + super.disableTrafficLight() + UiThreadHandler.post { + mCurrentLightId = TrafficLightEnum.BLACK + this@TaxiPassengerTrafficLightView.visibility = GONE + } + } + + /** + * @param redNum 红灯倒计时 + * @param yellowNum 黄灯倒计时 + * @param greenNum 绿灯倒计时 + */ + override fun changeCountdownTrafficLightNum(redNum: Int, yellowNum: Int, greenNum: Int) { + super.changeCountdownTrafficLightNum(redNum, yellowNum, greenNum) + resetView() + when (mCurrentLightId) { + TrafficLightEnum.RED -> changeCountdownRed(redNum) + TrafficLightEnum.YELLOW -> changeCountdownYellow(yellowNum) + TrafficLightEnum.GREEN -> changeCountdownGreen(greenNum) + else -> UiThreadHandler.post { taxi_p_traffic_light_time_tv.text = "" } + } + } + + override fun changeCountdownRed(redNum: Int) { + super.changeCountdownRed(redNum) + UiThreadHandler.post { + if (redNum > 0) { + resetView() + taxi_p_traffic_light_time_tv.setVertrial(true) + taxi_p_traffic_light_time_tv.setmColorList( + intArrayOf( + resources.getColor(R.color.taxi_p_traffic_light_red_color_up), + resources.getColor(R.color.taxi_p_traffic_light_red_color_down) + ) + ) + taxi_p_traffic_light_time_tv.text = redNum.toString() + } else { + disableTrafficLightCountDown() + taxi_p_traffic_light_time_tv.text = "" + } + } + } + + override fun changeCountdownGreen(greenNum: Int) { + super.changeCountdownGreen(greenNum) + UiThreadHandler.post { + if (greenNum > 0) { + resetView() + taxi_p_traffic_light_time_tv.setVertrial(true) + taxi_p_traffic_light_time_tv.setmColorList( + intArrayOf( + resources.getColor(R.color.taxi_p_traffic_light_green_color_up), + resources.getColor(R.color.taxi_p_traffic_light_green_color_down) + ) + ) + taxi_p_traffic_light_time_tv.text = greenNum.toString() + } else { + disableTrafficLightCountDown() + taxi_p_traffic_light_time_tv.text = "" + } + } + } + + override fun changeCountdownYellow(yellowNum: Int) { + super.changeCountdownYellow(yellowNum) + UiThreadHandler.post { + if (yellowNum > 0) { + resetView() + taxi_p_traffic_light_time_tv.setVertrial(true) + taxi_p_traffic_light_time_tv.setmColorList( + intArrayOf( + resources.getColor(R.color.taxi_p_traffic_light_yellow_color_up), + resources.getColor(R.color.taxi_p_traffic_light_yellow_color_down) + ) + ) + taxi_p_traffic_light_time_tv.text = yellowNum.toString() + } else { + disableTrafficLightCountDown() + taxi_p_traffic_light_time_tv.text = "" + } + } + } + + /** + * 更新红绿灯icon + * + * @param lightId 0-都是默认,1-红,2-黄,3-绿 + */ + private fun updateTrafficLightIcon(lightId: TrafficLightEnum) { + UiThreadHandler.post { + when (lightId) { + TrafficLightEnum.RED -> { + taxi_p_traffic_light_iv.setBackgroundResource(R.drawable.taxi_p_light_red_nor) + this@TaxiPassengerTrafficLightView.visibility = VISIBLE + } + TrafficLightEnum.YELLOW -> { + taxi_p_traffic_light_iv.setBackgroundResource(R.drawable.taxi_p_lightyellow_nor) + this@TaxiPassengerTrafficLightView.visibility = VISIBLE + } + TrafficLightEnum.GREEN -> { + taxi_p_traffic_light_iv.setBackgroundResource(R.drawable.taxi_p_light_green_nor) + this@TaxiPassengerTrafficLightView.visibility = VISIBLE + } + else -> this@TaxiPassengerTrafficLightView.visibility = GONE + } + } + } + + override fun disableTrafficLightCountDown() { + super.disableTrafficLightCountDown() + UiThreadHandler.post { + val layoutParams = layoutParams + if (layoutParams is MarginLayoutParams) { + layoutParams.width = + resources.getDimension(R.dimen.taxi_p_traffic_light_icon_size).toInt() + setLayoutParams(layoutParams) + taxi_p_traffic_light_time_tv.visibility = GONE + taxi_p_traffic_light_bg.layoutParams.width = + resources.getDimension(R.dimen.dp_124).toInt() + } + } + } + + private fun resetView() { + val layoutParams = layoutParams + if (layoutParams is MarginLayoutParams) { + val lp = layoutParams + lp.width = resources.getDimension(R.dimen.taxi_p_traffic_light_layout_width).toInt() + setLayoutParams(lp) + taxi_p_traffic_light_time_tv.visibility = VISIBLE + taxi_p_traffic_light_bg.layoutParams.width = + resources.getDimension(R.dimen.taxi_p_traffic_light_bg_width).toInt() + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiTrafficLightView.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiTrafficLightView.java deleted file mode 100644 index 41db23e822..0000000000 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiTrafficLightView.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.mogo.och.taxi.ui; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.widget.ImageView; - -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight; -import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.och.common.module.wigets.OCHGradientTextView; -import com.mogo.och.taxi.R; - -import org.jetbrains.annotations.Nullable; - -/** - * Taxi司机端:红绿灯view - * - * Created on 2022/3/29 - */ -public class TaxiTrafficLightView extends IViewTrafficLight { - - private ImageView mLightIconIV; - private OCHGradientTextView mLightTimeTV; - private int mCurrentLightId; - - public TaxiTrafficLightView(@Nullable Context context) { - this(context, null, 0); - } - - public TaxiTrafficLightView(@Nullable Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public TaxiTrafficLightView(@Nullable Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context); - } - - private void init(Context context) { - LayoutInflater.from(context).inflate(R.layout.taxi_traffic_light_view, this, true); - mLightIconIV = findViewById(R.id.taxi_traffic_light_iv); - mLightTimeTV = findViewById(R.id.taxi_traffic_light_time_tv); - } - - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 - */ - @Override - public void showWarningTrafficLight(int checkLightId,int lightSource) { - super.showWarningTrafficLight(checkLightId,lightSource); - mCurrentLightId = checkLightId; - updateTrafficLightIcon(checkLightId); - } - - /** - * 关闭红绿灯预警展示,并重制灯态 - */ - @Override - public void disableWarningTrafficLight() { - super.disableWarningTrafficLight(); - UiThreadHandler.post(() -> { - mCurrentLightId = 0; - TaxiTrafficLightView.this.setVisibility(GONE); - }); - } - - /** - * @param redNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - @Override - public void changeCountdownTrafficLightNum(int redNum, int yellowNum, int greenNum) { - super.changeCountdownTrafficLightNum(redNum, yellowNum, greenNum); - switch (mCurrentLightId) { - case 1: - changeCountdownRed(redNum); - break; - case 2: - changeCountdownYellow(yellowNum); - break; - case 3: - changeCountdownGreen(greenNum); - break; - default: - UiThreadHandler.post(() -> { - mLightTimeTV.setText(""); - }); - break; - } - } - - @Override - public void changeCountdownRed(int redNum) { - super.changeCountdownRed(redNum); - UiThreadHandler.post(() -> { - if (redNum > 0) { - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.taxi_traffic_light_red_color_up), - getResources().getColor(R.color.taxi_traffic_light_red_color_down)}); - mLightTimeTV.setText(String.valueOf(redNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownGreen(int greenNum) { - super.changeCountdownGreen(greenNum); - UiThreadHandler.post(() -> { - if (greenNum > 0) { - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.taxi_traffic_light_green_color_up), - getResources().getColor(R.color.taxi_traffic_light_green_color_down)}); - mLightTimeTV.setText(String.valueOf(greenNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - @Override - public void changeCountdownYellow(int yellowNum) { - super.changeCountdownYellow(yellowNum); - UiThreadHandler.post(() -> { - if (yellowNum > 0) { - mLightTimeTV.setVertrial(true); - mLightTimeTV.setmColorList(new int[]{getResources().getColor(R.color.taxi_traffic_light_yellow_color_up), - getResources().getColor(R.color.taxi_traffic_light_yellow_color_down)}); - mLightTimeTV.setText(String.valueOf(yellowNum)); - } else { - mLightTimeTV.setText(""); - } - }); - } - - /** - * 更新红绿灯icon - * - * @param lightId 0-都是默认,1-红,2-黄,3-绿 - */ - private void updateTrafficLightIcon(int lightId) { - UiThreadHandler.post(() -> { - switch (lightId) { - case 1: - mLightIconIV.setBackgroundResource(R.drawable.taxi_light_red_nor); - TaxiTrafficLightView.this.setVisibility(VISIBLE); - break; - case 2: - mLightIconIV.setBackgroundResource(R.drawable.taxi_lightyellow_nor); - TaxiTrafficLightView.this.setVisibility(VISIBLE); - break; - case 3: - mLightIconIV.setBackgroundResource(R.drawable.taxi_light_green_nor); - TaxiTrafficLightView.this.setVisibility(VISIBLE); - break; - default: - TaxiTrafficLightView.this.setVisibility(GONE); - break; - } - }); - } -} diff --git a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt index a4114873ba..bf3fb9760a 100644 --- a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt @@ -89,8 +89,6 @@ object ConfigStartUp { HdMapBuildConfig.currentCarVrIconRes = R.raw.chuzuche } else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaobache -// HmiBuildConfig.isShowBrakeLightView = false -// HmiBuildConfig.isShowTurnLightView = false } else if (AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode)) { HdMapBuildConfig.currentCarVrIconRes = R.raw.huanwei } diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java index eece42be2b..5f9055ed09 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java @@ -153,6 +153,32 @@ public class DataDistribution { private long listBagManagerCmdSize = 0; private long listObuWarningDataSize = 0; + public void clearCount() { + listTrajectorySize = 1; + listTrackedObjectsSize = 1; + listGnssInfoSize = 1; + listVehicleStateSize = 1; + listAutopilotStateSize = 1; + listMogoReportMessageSize = 1; + listPerceptionTrafficLightSize = 1; + listPredictionObstacleTrajectorySize = 1; + listRecordPanelSize = 1; + listGlobalPathRespSize = 1; + listWarnSize = 1; + listArrivalNotificationSize = 1; + listStatusInfoSize = 1; + listRecordDataConfigSize = 1; + listErrorDataSize = 1; + listOriginalPointCloudSize = 1; + listPlanningObjectsSize = 1; + listPlanningDecisionStateSize = 1; + listChassisStatesSize = 1; + listFSMFunctionStatesSize = 1; + listRoboSweeperTaskIndexSize = 1; + listBagManagerCmdSize = 1; + listObuWarningDataSize = 1; + } + public String cutDown(String str) { if (isCutDown && str.length() > 650) { str = str.substring(0, 650) + "\n(已缩短。如需查看完整数据,请勾选日志存储复选框)"; diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index dd27d0f587..3040c5cf9b 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -12,6 +12,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Message; import android.os.PowerManager; +import android.os.SystemClock; import android.provider.Settings; import android.text.Editable; import android.text.Html; @@ -43,6 +44,8 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; import com.google.protobuf.TextFormat; +import com.mogo.support.obu.ObuPenetrate; +import com.mogo.support.obu.ObuScene; import com.mogo.telematic.MogoProtocolMsg; import com.mogo.telematic.NSDNettyManager; import com.mogo.telematic.client.listener.NettyClientListener; @@ -138,6 +141,9 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas private static final int WHAT_IPC_IP = 0x00; private static final int WHAT_DRIVER_IP = 0x01; private static final int WHAT_IPC_CONNECT_STATE = 0x02; + private static final int WHAT_RECEIVE_ERROR_DATA_SHOW = 0x03; + private static final int WHAT_RECEIVE_ERROR_DATA_HINT = 0x04; + private static final int WHAT_RECEIVE_ERROR_DATA_STOP = 0x05; private EditText etIp; private ImageView role; private ImageView tvIp; @@ -181,6 +187,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas private boolean isAutopilotAbility = true; private String autopilotAbilityReason; private List specialVehicleBeanList;//特种车辆 + private long errorDataUpdateTime = 0; // @Override // protected void onStart() { // super.onStart(); @@ -548,7 +555,14 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - showLocalIP(); + if (TextUtils.equals(title.getText(), getString(R.string.have_error_data))) { + int position=titleFragmentData.size() - 1; + infoFragment.smoothScrollToPosition(position); + fragmentAdapter.setSelectedPosition(position); + showFragment(Constants.TITLE.RECEIVE_ERROR); + } else { + showLocalIP(); + } } }); title.setOnLongClickListener(new View.OnLongClickListener() { @@ -829,6 +843,18 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas @Override public void onError(ProtocolStatus status, byte[] bytes) { + long errorDataReceiveTime = SystemClock.elapsedRealtime(); + if (errorDataUpdateTime == 0) { + errorDataUpdateTime = errorDataReceiveTime + 800; + } + if (errorDataReceiveTime > errorDataUpdateTime) { + errorDataUpdateTime = 0; + getHandler().sendEmptyMessage(WHAT_RECEIVE_ERROR_DATA_SHOW); + if (getHandler().hasMessages(WHAT_RECEIVE_ERROR_DATA_STOP)) { + getHandler().removeMessages(WHAT_RECEIVE_ERROR_DATA_STOP); + } + getHandler().sendEmptyMessageDelayed(WHAT_RECEIVE_ERROR_DATA_STOP, 1500); + } ErrorData base = new ErrorData(status, bytes); DataDistribution.getInstance().addData(base); } @@ -1045,6 +1071,26 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas DataDistribution.getInstance().addData(base); } + @Override + public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { + + } + + @Override + public void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { + + } + + @Override + public void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { + + } + + @Override + public void onoObuRsmWarning(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { + + } + @Override public void onFunctionStates(MessagePad.Header header, FunctionStates.FSMFunctionStates functionStates) { FSMFunctionStates base = new FSMFunctionStates(header, functionStates, sdf); @@ -1177,6 +1223,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas connectStatus = ipcConnectionStatus; String status = onUpdateConnectStateView(); if (connectStatus == IPC_CONNECTION_STATUS.CONNECTED) { + DataDistribution.getInstance().clearCount(); getHandler().sendEmptyMessage(WHAT_IPC_IP); String tem = getIPCIP(); if (!TextUtils.isEmpty(tem)) { @@ -1581,6 +1628,21 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas tvConnectState.setText(status.status); tvConnectState.setTextColor(getResources().getColor(status.color)); break; + case WHAT_RECEIVE_ERROR_DATA_SHOW: + title.setText(R.string.have_error_data); + title.setTextColor(getColor(android.R.color.holo_red_light)); + title.setVisibility(View.VISIBLE); + getHandler().sendEmptyMessageDelayed(WHAT_RECEIVE_ERROR_DATA_HINT, 500); + break; + case WHAT_RECEIVE_ERROR_DATA_HINT: + title.setVisibility(View.INVISIBLE); + break; + case WHAT_RECEIVE_ERROR_DATA_STOP: + title.setText(R.string.app_name); + title.setTextColor(getColor(R.color.colorWhile)); + title.setVisibility(View.VISIBLE); + errorDataUpdateTime = 0; + break; } } } diff --git a/app_ipc_monitoring/src/main/res/layout/item_main.xml b/app_ipc_monitoring/src/main/res/layout/item_main.xml index 4f3acb94c9..52fbb751ab 100644 --- a/app_ipc_monitoring/src/main/res/layout/item_main.xml +++ b/app_ipc_monitoring/src/main/res/layout/item_main.xml @@ -17,6 +17,7 @@ 工控机监控 + 存在错误数据 添加 保存 删除 diff --git a/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java b/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java index d2125c7d7f..ae8549740f 100644 --- a/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java +++ b/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java @@ -33,6 +33,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; +import com.mogo.support.obu.ObuScene; import com.zhidao.adas.magic.R; import com.zhidao.adas.magic.adapter.InfoTitleAdapter; import com.zhidao.adas.magic.base.BaseActivity; @@ -551,6 +552,26 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } + @Override + public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { + + } + + @Override + public void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { + + } + + @Override + public void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { + + } + + @Override + public void onoObuRsmWarning(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { + + } + @Override public void onFunctionStates(MessagePad.Header header, FunctionStates.FSMFunctionStates functionStates) { diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/TrafficLightHMIManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/TrafficLightHMIManager.kt deleted file mode 100644 index d4e777fc8a..0000000000 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/TrafficLightHMIManager.kt +++ /dev/null @@ -1,65 +0,0 @@ -package com.mogo.eagle.function.biz.v2x.trafficlight - -import com.mogo.eagle.core.data.trafficlight.* -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager - -class TrafficLightHMIManager { - - companion object { - const val TAG = "TrafficLightHMIManager" - - val INSTANCE: TrafficLightHMIManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { - TrafficLightHMIManager() - } - } - - private var initView: Boolean = false - - fun isWarningTrafficLightShow(): Boolean { - return CallerHmiManager.isWarningTrafficLightShow() - } - - fun updateTrafficLight(trafficLightResult: TrafficLightResult) { - val currentTrafficLight = trafficLightResult.currentRoadTrafficLight() - currentTrafficLight?.let { - if (!initView) { - initView = true - CallerHmiManager.showWarningTrafficLight(0,1) - } - callerHMIToChangeLight(it) - } - } - - private fun callerHMIToChangeLight(trafficLightStatus: TrafficLightStatus) { - val remain = if (trafficLightStatus.remain > 99) { - 99 - } else { - trafficLightStatus.remain - } - when { - trafficLightStatus.isGreen() || trafficLightStatus.isFlashGreen() -> { - CallerHmiManager.showWarningTrafficLight(3,1) - CallerHmiManager.changeCountdownGreen(remain) -// CallerHmiManager.changeCountdownRed(-1) -// CallerHmiManager.changeCountdownYellow(-1) - } - trafficLightStatus.isYellow() -> { - CallerHmiManager.showWarningTrafficLight(2,1) - CallerHmiManager.changeCountdownYellow(remain) -// CallerHmiManager.changeCountdownGreen(-1) -// CallerHmiManager.changeCountdownRed(-1) - } - trafficLightStatus.isRed() -> { - CallerHmiManager.showWarningTrafficLight(1,1) - CallerHmiManager.changeCountdownRed(remain) -// CallerHmiManager.changeCountdownGreen(-1) -// CallerHmiManager.changeCountdownYellow(-1) - } - } - } - - fun hideTrafficLight() { - initView = false - CallerHmiManager.disableWarningTrafficLight() - } -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt index d80621a186..199cfc828b 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt @@ -8,14 +8,13 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Liste import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ20ListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager -import com.mogo.eagle.function.biz.v2x.trafficlight.TrafficLightHMIManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X import com.mogo.eagle.function.biz.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_LOOP_SEARCH_CROSS_ROAD import com.mogo.eagle.function.biz.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT import com.mogo.eagle.function.biz.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_STOP_SEARCH_CROSS_ROAD import com.mogo.eagle.function.biz.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT import com.mogo.eagle.function.biz.v2x.trafficlight.network.TrafficLightNetWorkModel -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X import mogo.telematics.pad.MessagePad class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener { @@ -46,9 +45,8 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener { mThreadHandler = TrafficLightThreadHandler(Looper.getMainLooper(), { //第一次查询路口时,如果红绿灯显示,则隐藏掉 - if (firstLoopCrossRoad && TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()) { - TrafficLightHMIManager.INSTANCE.hideTrafficLight() - CallerTrafficLightListenerManager.resetTrafficLightData() + if (firstLoopCrossRoad) { + CallerTrafficLightListenerManager.resetTrafficLightStatus() } firstLoopCrossRoad = false mLocation?.let { it -> @@ -98,10 +96,7 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener { 2_000L ) } - if (TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()) { - TrafficLightHMIManager.INSTANCE.hideTrafficLight() - CallerTrafficLightListenerManager.resetTrafficLightData() - } + CallerTrafficLightListenerManager.resetTrafficLightStatus() CallerTrafficLightListenerManager.invokeTrafficRequestError() }) @@ -137,8 +132,7 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener { trafficLightResult = null firstLoopCrossRoad = true mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT) - TrafficLightHMIManager.INSTANCE.hideTrafficLight() - CallerTrafficLightListenerManager.resetTrafficLightData() + CallerTrafficLightListenerManager.resetTrafficLightStatus() } } } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/TrafficLightDispatcher.kt index 2e65445525..8d80d0d709 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/TrafficLightDispatcher.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/TrafficLightDispatcher.kt @@ -2,25 +2,23 @@ package com.mogo.eagle.function.biz.v2x.trafficlight.core import android.content.Context import android.os.Handler -import com.mogo.eagle.core.data.trafficlight.TrafficLightResult +import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum +import com.mogo.eagle.core.data.trafficlight.* import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener -import com.mogo.eagle.core.function.api.obu.IMoGoObuTrafficLightListener import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.function.call.obu.CallerObuTrafficLightListenerManager import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager -import com.mogo.eagle.function.biz.v2x.trafficlight.TrafficLightHMIManager import perception.TrafficLightOuterClass import perception.TrafficLightOuterClass.TrafficLight /** * @author XuXinChao - * @description 对多个红绿灯信号来源进行统一调度(AI云、工控机) + * @description 对多个红绿灯信号来源进行统一调度(AI云、工控机、OBU) + * @优先级:OBU,云,工控 * @since: 2022/4/28 */ -class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLightListener, - IMoGoObuTrafficLightListener { +class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLightListener { companion object { const val TAG = "TrafficLightDispatcher" @@ -34,6 +32,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight //是否有AI获取红绿灯灯态 private var hasAiLightStatus: Boolean = false + //obu数据 private var hasObuLightStatus: Boolean = false @@ -41,14 +40,8 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight mContext = context //注册监听AI云获取红绿灯状态 CallerTrafficLightListenerManager.addListener(TAG, this) - //注册监听AI云进入路口 - CallerTrafficLightListenerManager.addListener(TAG, this) - //注册监听红绿灯请求失败 - CallerTrafficLightListenerManager.addListener(TAG, this) //注册监听工控机感知红绿灯 CallerAutopilotIdentifyListenerManager.addListener(TAG, this) - //obu红绿灯数据 - CallerObuTrafficLightListenerManager.addListener(TAG, this) } /** @@ -71,27 +64,36 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight } if (light == null) { //隐藏红绿灯显示 - TrafficLightHMIManager.INSTANCE.hideTrafficLight() + CallerTrafficLightListenerManager.disableTrafficLight() } else { when (light.state) { TrafficLightOuterClass.LightState.STATE_RED -> { //红灯 - CallerHmiManager.showWarningTrafficLight(1, 2) - CallerHmiManager.changeCountdownGreen(0) + CallerTrafficLightListenerManager.showTrafficLight( + TrafficLightEnum.RED, + DataSourceType.TELEMATIC + ) + CallerTrafficLightListenerManager.changeCountdownRed(0) } TrafficLightOuterClass.LightState.STATE_YELLOW -> { //黄灯 - CallerHmiManager.showWarningTrafficLight(2, 2) - CallerHmiManager.changeCountdownGreen(0) + CallerTrafficLightListenerManager.showTrafficLight( + TrafficLightEnum.YELLOW, + DataSourceType.TELEMATIC + ) + CallerTrafficLightListenerManager.changeCountdownYellow(0) } TrafficLightOuterClass.LightState.STATE_GREEN -> { //绿灯 - CallerHmiManager.showWarningTrafficLight(3, 2) - CallerHmiManager.changeCountdownGreen(0) + CallerTrafficLightListenerManager.showTrafficLight( + TrafficLightEnum.GREEN, + DataSourceType.TELEMATIC + ) + CallerTrafficLightListenerManager.changeCountdownGreen(0) } TrafficLightOuterClass.LightState.STATE_OFF -> { //黑灯,隐藏红绿灯显示 - TrafficLightHMIManager.INSTANCE.hideTrafficLight() + CallerTrafficLightListenerManager.disableTrafficLight() } else -> {} } @@ -107,7 +109,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight */ override fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) { if (!hasObuLightStatus) { - TrafficLightHMIManager.INSTANCE.updateTrafficLight(trafficLightResult) + updateTrafficLight(trafficLightResult) hasAiLightStatus = true } } @@ -122,11 +124,8 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight hasAiLightStatus = false hasObuLightStatus = false }, 5000) - CallerTrafficLightListenerManager.resetTrafficLightData() //如果没有OBU灯态则进行隐藏,如果有OBU灯态,则交由OBU管理 - if(!hasObuLightStatus){ - TrafficLightHMIManager.INSTANCE.hideTrafficLight() - } + CallerTrafficLightListenerManager.resetTrafficLightStatus(!hasObuLightStatus) } } @@ -135,21 +134,41 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight */ override fun onTrafficRequestError() { hasAiLightStatus = false - CallerTrafficLightListenerManager.resetTrafficLightData() - if(!hasObuLightStatus){ - if (TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()) { - TrafficLightHMIManager.INSTANCE.hideTrafficLight() - } - } + CallerTrafficLightListenerManager.resetTrafficLightStatus(!hasObuLightStatus) } /** * obu 红绿灯数据 */ - override fun onObuTrafficLight(light: Int) { - super.onObuTrafficLight(light) + override fun onObuTrafficLightStatus(light: TrafficLightEnum) { + super.onObuTrafficLightStatus(light) hasObuLightStatus = true - CallerHmiManager.showWarningTrafficLight(light, 3) + CallerTrafficLightListenerManager.showTrafficLight(light, DataSourceType.OBU) + } + + private fun updateTrafficLight(trafficLightResult: TrafficLightResult) { + val currentTrafficLight = trafficLightResult.currentRoadTrafficLight() + currentTrafficLight?.let { + val remain = if (it.remain > 99) { + 99 + } else { + it.remain + } + when { + it.isGreen() || it.isFlashGreen() -> { + CallerTrafficLightListenerManager.showTrafficLight(TrafficLightEnum.GREEN, DataSourceType.AICLOUD) + CallerTrafficLightListenerManager.changeCountdownGreen(remain) + } + it.isYellow() -> { + CallerTrafficLightListenerManager.showTrafficLight(TrafficLightEnum.YELLOW, DataSourceType.AICLOUD) + CallerTrafficLightListenerManager.changeCountdownYellow(remain) + } + it.isRed() -> { + CallerTrafficLightListenerManager.showTrafficLight(TrafficLightEnum.RED, DataSourceType.AICLOUD) + CallerTrafficLightListenerManager.changeCountdownRed(remain) + } + } + } } fun destroy() { @@ -157,10 +176,6 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight CallerTrafficLightListenerManager.removeListener(TAG) //取消注册监听工控机感知红绿灯 CallerAutopilotIdentifyListenerManager.removeListener(TAG) - //取消注册监听红绿灯请求失败 - CallerTrafficLightListenerManager.removeListener(TAG) - //取消注册监听AI云进入路口 - CallerTrafficLightListenerManager.removeListener(TAG) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 21224916e5..784b4f3301 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -54,6 +54,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerStartAutopilotFailedLis import com.mogo.eagle.core.function.call.obucombine.CallerObuDcCombineListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.Logger +import com.mogo.support.obu.ObuScene import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener import com.zhidao.support.adas.high.bean.AutopilotAbility @@ -536,6 +537,40 @@ class MoGoAdasListenerImpl : OnAdasListener { CallerObuDcCombineListenerManager.invokeObuDcData(obuWarningData) } + /** + * OBU 红绿灯预警信息 + * + * @param header 头 + * @param spatWarningData 数据 + */ + override fun onoObuSpatWarning(header: MessagePad.Header?, spatWarningData: ObuScene.SpatWarningData?) { + } + /** + * OBU RSI预警信息 + * + * @param header 头 + * @param rsiWarningData 数据 + */ + override fun onoObuRsiWarning(header: MessagePad.Header?, rsiWarningData: ObuScene.RsiWarningData?) { + } + + /** + * OBU RSM预警信息 + * + * @param header 头 + * @param rsmWarningData 数据 + */ + override fun onoObuRsmWarning(header: MessagePad.Header?, rsmWarningData: ObuScene.RsmWarningData?) { + } + /** + * OBU 地图匹配结果 + * + * @param header 头 + * @param mapMatchData 数据 + */ + override fun onoObuRsmWarning(header: MessagePad.Header?, mapMatchData: ObuScene.MapMatchData?) { + } + /** * 重构后的功能状态 * diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt index 27b38679d6..50623760c5 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt @@ -5,6 +5,7 @@ import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.V2XMsg @@ -14,6 +15,7 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.call.obucombine.CallerObuDcCombineListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU @@ -511,7 +513,7 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuDcCombineListener // 删除 MogoObuConstants.STATUS.DELETE -> { // 移除顶部弹窗,当收不到信号的时候触发一次 - CallerHmiManager.disableWarningTrafficLight() + CallerTrafficLightListenerManager.disableTrafficLight() CallerHmiManager.disableWarningV2X(appId.toString()) isShowGreenWave = false isShowRunRedLight = false @@ -626,7 +628,7 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuDcCombineListener when (currentLight.light) { // 灯光不可用 0 -> { - CallerHmiManager.showWarningTrafficLight(0, 2) + CallerTrafficLightListenerManager.showTrafficLight(TrafficLightEnum.BLACK, DataSourceType.TELEMATIC) } // 红灯 @@ -636,9 +638,9 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuDcCombineListener isRedLight = true } isGreenLight = false - CallerHmiManager.showWarningTrafficLight(1, 2) + CallerTrafficLightListenerManager.showTrafficLight(TrafficLightEnum.RED, DataSourceType.TELEMATIC) val red = currentLight.countDown / 10 - CallerHmiManager.changeCountdownRed(red) + CallerTrafficLightListenerManager.changeCountdownRed(red) } // 绿灯 @@ -648,17 +650,17 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuDcCombineListener isGreenLight = true } isRedLight = false - CallerHmiManager.showWarningTrafficLight(3, 2) + CallerTrafficLightListenerManager.showTrafficLight(TrafficLightEnum.GREEN, DataSourceType.TELEMATIC) val green = currentLight.countDown / 10 - CallerHmiManager.changeCountdownGreen(green) + CallerTrafficLightListenerManager.changeCountdownGreen(green) } // 黄灯 7, 8 -> { CallerHmiManager.disableWarningV2X(appId.toString()) - CallerHmiManager.showWarningTrafficLight(2, 2) + CallerTrafficLightListenerManager.showTrafficLight(TrafficLightEnum.YELLOW, DataSourceType.TELEMATIC) val yellow = currentLight.countDown / 10 - CallerHmiManager.changeCountdownYellow(yellow) + CallerTrafficLightListenerManager.changeCountdownYellow(yellow) } } } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt index 16975e57c5..2a2b323404 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt @@ -16,7 +16,7 @@ import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Defa import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.TooClose import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.call.obu.CallerObuConnectListenerManager -import com.mogo.eagle.core.function.call.obu.CallerObuTrafficLightListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager import com.mogo.eagle.core.function.datacenter.obu.utils.TrafficDataConvertUtilsNew import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -909,7 +909,7 @@ private fun handlerTrafficLight(appId: Int, status: Int, lights: List // 删除 MogoObuConstants.STATUS.DELETE -> { // 移除顶部弹窗 - CallerHmiManager.disableWarningTrafficLight() + CallerTrafficLightListenerManager.disableTrafficLight() CallerHmiManager.disableWarningV2X(appId.toString()) isShowGreenWave = false isShowRunRedLight = false @@ -1052,7 +1052,7 @@ private fun changeTrafficLightStatus( when (currentLight.light) { // 灯光不可用 0 -> { - CallerObuTrafficLightListenerManager.invokeObuTrafficLight(0) + CallerTrafficLightListenerManager.invokeObuTrafficLightStatus(TrafficLightEnum.BLACK) } // 红灯 2, 3 -> { @@ -1062,9 +1062,8 @@ private fun changeTrafficLightStatus( } isGreenLight = false isYellowLight = false - CallerObuTrafficLightListenerManager.invokeObuTrafficLight(1) + CallerTrafficLightListenerManager.invokeObuTrafficLightStatus(TrafficLightEnum.RED) val red = currentLight.countDown.toInt() - CallerHmiManager.changeCountdownRed(red) } // 绿灯 @@ -1075,9 +1074,8 @@ private fun changeTrafficLightStatus( } isRedLight = false isYellowLight = false - CallerObuTrafficLightListenerManager.invokeObuTrafficLight(3) + CallerTrafficLightListenerManager.invokeObuTrafficLightStatus(TrafficLightEnum.GREEN) val green = currentLight.countDown.toInt() - CallerHmiManager.changeCountdownGreen(green) } // 黄灯 @@ -1088,9 +1086,8 @@ private fun changeTrafficLightStatus( isRedLight = false isGreenLight = false CallerHmiManager.disableWarningV2X(appId.toString()) - CallerObuTrafficLightListenerManager.invokeObuTrafficLight(2) + CallerTrafficLightListenerManager.invokeObuTrafficLightStatus(TrafficLightEnum.YELLOW) val yellow = currentLight.countDown.toInt() - CallerHmiManager.changeCountdownYellow(yellow) } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/receiver/V2XTrafficLightBroadcastReceiver.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/receiver/V2XTrafficLightBroadcastReceiver.kt index b6599e45b2..30a8a7fc2a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/receiver/V2XTrafficLightBroadcastReceiver.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/receiver/V2XTrafficLightBroadcastReceiver.kt @@ -3,7 +3,9 @@ package com.mogo.eagle.core.function.hmi.receiver import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.WaringConst /** @@ -57,11 +59,17 @@ class V2XTrafficLightBroadcastReceiver : BroadcastReceiver() { * @param trafficLightCountDown 对应交通灯倒计时,如果倒计时为0,则disable */ private fun dispatchShowWaring(trafficLightCheckType: Int, trafficLightCountDown: Int) { - CallerHmiManager.showWarningTrafficLight(trafficLightCheckType,1) + val trafficLightType = when(trafficLightCheckType){ + 1 -> TrafficLightEnum.RED + 2 -> TrafficLightEnum.YELLOW + 3 -> TrafficLightEnum.GREEN + else -> TrafficLightEnum.BLACK + } + CallerTrafficLightListenerManager.showTrafficLight(trafficLightType,DataSourceType.DEFAULT) when(trafficLightCheckType){ - 1 -> CallerHmiManager.changeCountdownRed(trafficLightCountDown) - 2 -> CallerHmiManager.changeCountdownYellow(trafficLightCountDown) - 3 -> CallerHmiManager.changeCountdownGreen(trafficLightCountDown) + 1 -> CallerTrafficLightListenerManager.changeCountdownRed(trafficLightCountDown) + 2 -> CallerTrafficLightListenerManager.changeCountdownYellow(trafficLightCountDown) + 3 -> CallerTrafficLightListenerManager.changeCountdownGreen(trafficLightCountDown) } } @@ -69,6 +77,6 @@ class V2XTrafficLightBroadcastReceiver : BroadcastReceiver() { * 关闭交通灯 */ private fun dispatchCloseWaring() { - CallerHmiManager.disableWarningTrafficLight() + CallerTrafficLightListenerManager.disableTrafficLight() } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 760d9e4e48..6b8a0b345f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -29,8 +29,6 @@ import com.mogo.eagle.core.data.map.Infrastructure import com.mogo.eagle.core.data.notice.NoticeNormalData import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData import com.mogo.eagle.core.data.report.ReportEntity -import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight import com.mogo.eagle.core.function.api.hmi.warning.IMoGoHmiProvider import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager @@ -78,17 +76,12 @@ import java.util.concurrent.atomic.AtomicReference @Route(path = MoGoFragmentPaths.PATH_FRAGMENT_HMI) class MoGoHmiFragment : MvpFragment(), IMoGoHmiProvider, - IMoGoHmiViewProxy, MoGoHmiContract.View { companion object { private const val TAG = "MoGoHmiFragment" } - // HMI 视图控件代理 - // todo 需要统一数据源 红绿灯 View代理 - private var mViewTrafficLight: IViewTrafficLight? = null - private val lastSpeakJob by lazy { AtomicReference() } private var lastShowV2XJob: Job? = null @@ -98,14 +91,6 @@ class MoGoHmiFragment : MvpFragment(), } - /** todo ----------------------------------------------**/ - /** - * 设置 红绿灯 代理View - */ - override fun setProxyTrafficLightView(view: IViewTrafficLight) { - mViewTrafficLight = view - } - /** * ok * 工控机重启返回结果 @@ -309,55 +294,6 @@ class MoGoHmiFragment : MvpFragment(), } } - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认不亮起,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 - */ - override fun showWarningTrafficLight(checkLightId: Int, lightSource: Int) { - mViewTrafficLight?.showWarningTrafficLight(checkLightId, lightSource) - } - - override fun isWarningTrafficLightShow(): Boolean { - return mViewTrafficLight?.visibility == View.VISIBLE - } - - /** - * 关闭红绿灯预警展示,并重制灯态 - */ - override fun disableWarningTrafficLight() { - mViewTrafficLight?.disableWarningTrafficLight() - } - - /** - * 关闭红绿灯倒计时 - */ - override fun disableWarningTrafficLightCountDown() { - mViewTrafficLight?.disableCountdown() - } - - override fun changeCountdownRed(redNum: Int) { - mViewTrafficLight?.changeCountdownRed(redNum) - } - - override fun changeCountdownYellow(yellowNum: Int) { - mViewTrafficLight?.changeCountdownYellow(yellowNum) - } - - override fun changeCountdownGreen(greenNum: Int) { - mViewTrafficLight?.changeCountdownGreen(greenNum) - } - - /** - * @param readNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - override fun changeCountdownTrafficLightNum(readNum: Int, yellowNum: Int, greenNum: Int) { - mViewTrafficLight?.changeCountdownTrafficLightNum(readNum, yellowNum, greenNum) - } - /** * 展示指定方位上的红框预警 * @param direction @@ -509,7 +445,6 @@ class MoGoHmiFragment : MvpFragment(), "${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight = $light ---isLeftLight = $isLeftLight ---isRightLight = $isRightLight" ) - if (HmiBuildConfig.isShowTurnLightView) { ThreadUtils.runOnUiThread { if (light == 1 || light == 2) { if (!isVisualAngleChanged) { @@ -557,7 +492,6 @@ class MoGoHmiFragment : MvpFragment(), } } } - } } private var isBrake: Boolean = false @@ -566,7 +500,6 @@ class MoGoHmiFragment : MvpFragment(), * 显示刹车效果 */ override fun showBrakeLight(light: Int) { - if (HmiBuildConfig.isShowBrakeLightView) { ThreadUtils.runOnUiThread { if (light == 1) { //刹车灯亮 if (!isBrake) { @@ -587,8 +520,8 @@ class MoGoHmiFragment : MvpFragment(), CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500) } } + brakeView.setBrakeLight(light) } - } } /** todo----------------------------------------------- **/ @@ -658,14 +591,6 @@ class MoGoHmiFragment : MvpFragment(), } } - override fun setTurnLightFunction(isOpen: Boolean) { - HmiBuildConfig.isShowTurnLightView = isOpen - } - - override fun setBrakeLightFunction(isOpen: Boolean) { - HmiBuildConfig.isShowBrakeLightView = isOpen - } - override fun setSnBinding(isOpen: Boolean) { HmiBuildConfig.isShowSnBindingView = isOpen } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/pnc/PncActionsView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/pnc/PncActionsView.kt index 2a50d8f222..e221ee5fa1 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/pnc/PncActionsView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/pnc/PncActionsView.kt @@ -82,8 +82,8 @@ class PncActionsView @JvmOverloads constructor( //如果是存在云端红绿灯数据条件下,设置云端数据 if (PncActionsHelper.isWaitingTrafficlight(it.drivingState.number, it.drivingAction.number) && mTrafficLightResult != null - && getWaitTrafficlightTime().isNotBlank()) { - actions += ",预计${getWaitTrafficlightTime()}秒后通过" + && getWaitTrafficLightTime().isNotBlank()) { + actions += ",预计${getWaitTrafficLightTime()}秒后通过" } else { mTrafficLightResult = null } @@ -106,7 +106,7 @@ class PncActionsView @JvmOverloads constructor( mTrafficLightResult = trafficLightResult } - private fun getWaitTrafficlightTime(): String { + private fun getWaitTrafficLightTime(): String { return if (mTrafficLightResult != null && mTrafficLightResult!!.currentRoadTrafficLight() != null && mTrafficLightResult!!.currentRoadTrafficLight()!!.isRed() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index a662a61c12..6087b3d4fc 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -1048,29 +1048,6 @@ internal class DebugSettingView @JvmOverloads constructor( } } - - /** - * 打开、关闭转向灯控制 - */ - tbOpenLight.setOnCheckedChangeListener { _, isChecked -> - if (!isChecked) { - CallerHmiManager.setTurnLightFunction(true) - } else { - CallerHmiManager.setTurnLightFunction(false) - } - } - - /** - * 打开、关闭刹车控制 - */ - tbOpenBrakeLight.setOnCheckedChangeListener { _, isChecked -> - if (!isChecked) { - CallerHmiManager.setBrakeLightFunction(true) - } else { - CallerHmiManager.setBrakeLightFunction(false) - } - } - /** * sn绑定控制 */ @@ -1959,22 +1936,6 @@ internal class DebugSettingView @JvmOverloads constructor( } - /** - * 车辆转向灯 数据 - * @param lightSwitch - */ - override fun onAutopilotLightSwitchData(lightSwitch: Chassis.LightSwitch?) { - - } - - /** - * 车辆刹车灯 数据 - * @param brakeLight - */ - override fun onAutopilotBrakeLightData(brakeLight: Boolean) { - - } - /** * 车辆方向盘转向角回调 * @param steering 方向盘转向角 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index 75a9ec91bd..baa3b07802 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -20,6 +20,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.function.business.routeoverlay.RouteStrategy import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.util.UiThreadHandler import kotlinx.android.synthetic.main.view_sop_setting.view.* @@ -139,7 +140,7 @@ internal class SOPSettingView @JvmOverloads constructor( HmiBuildConfig.isShowTrafficLightView = false } else { HmiBuildConfig.isShowTrafficLightView = true - CallerHmiManager.disableWarningTrafficLight() + CallerTrafficLightListenerManager.disableTrafficLight() } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt index 36af0aad3d..33169d3fed 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt @@ -5,13 +5,17 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.widget.ImageView +import android.widget.LinearLayout import android.widget.TextView import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig +import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.TrafficLightView_TAG -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight +import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler @@ -23,13 +27,18 @@ class SingleTrafficLightView @JvmOverloads constructor( context: Context?, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : IViewTrafficLight(context, attrs, defStyleAttr), IViewControlListener { +) : LinearLayout(context, attrs, defStyleAttr), IViewControlListener, IMoGoTrafficLightListener { + + companion object { + private const val TAG = "SingleTrafficLightView" + } + private var mLightIconIV: ImageView? = null private var mLightIconBG: ImageView? = null private var mLightTimeTV: GradientTextView? = null private var mLightSourceTV: TextView? = null private var mLightSourceDivider: View? = null - private var mCurrentLightId = 0 + private var mCurrentLightId = TrafficLightEnum.BLACK override fun onAttachedToWindow() { super.onAttachedToWindow() @@ -40,6 +49,7 @@ class SingleTrafficLightView @JvmOverloads constructor( mLightSourceTV = findViewById(R.id.hmi_traffic_light_source) mLightSourceDivider = findViewById(R.id.hmi_traffic_light_divider) + CallerTrafficLightListenerManager.addListener(TAG, this) CallerHmiViewControlListenerManager.addListener(TrafficLightView_TAG, this) } @@ -50,6 +60,7 @@ class SingleTrafficLightView @JvmOverloads constructor( override fun onDetachedFromWindow() { super.onDetachedFromWindow() + CallerTrafficLightListenerManager.removeListener(TAG) CallerHmiViewControlListenerManager.removeListener(TrafficLightView_TAG) } @@ -57,10 +68,10 @@ class SingleTrafficLightView @JvmOverloads constructor( * 展示红绿灯预警 * * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 + * @param lightSource 1:云端下发;2:自车感知 3:OBU */ - override fun showWarningTrafficLight(checkLightId: Int, lightSource: Int) { - super.showWarningTrafficLight(checkLightId, lightSource) + override fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) { + super.showTrafficLight(checkLightId, lightSource) mCurrentLightId = checkLightId if (!HmiBuildConfig.isShowTrafficLightView) { updateTrafficLightIcon(checkLightId, lightSource) @@ -70,16 +81,16 @@ class SingleTrafficLightView @JvmOverloads constructor( /** * 关闭红绿灯预警展示,并重制灯态 */ - override fun disableWarningTrafficLight() { - super.disableWarningTrafficLight() + override fun disableTrafficLight() { + super.disableTrafficLight() UiThreadHandler.post { - mCurrentLightId = 0 + mCurrentLightId = TrafficLightEnum.BLACK this@SingleTrafficLightView.visibility = GONE } } - override fun disableCountdown() { - super.disableCountdown() + override fun disableTrafficLightCountDown() { + super.disableTrafficLightCountDown() UiThreadHandler.post { // 小巴车的司机端需要展示红绿灯信号来源 if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) @@ -118,9 +129,9 @@ class SingleTrafficLightView @JvmOverloads constructor( UiThreadHandler.post { resetView() when (mCurrentLightId) { - 1 -> changeCountdownRed(redNum) - 2 -> changeCountdownYellow(yellowNum) - 3 -> changeCountdownGreen(greenNum) + TrafficLightEnum.RED -> changeCountdownRed(redNum) + TrafficLightEnum.YELLOW -> changeCountdownYellow(yellowNum) + TrafficLightEnum.GREEN -> changeCountdownGreen(greenNum) else -> UiThreadHandler.post { mLightTimeTV!!.text = "" } } } @@ -140,7 +151,7 @@ class SingleTrafficLightView @JvmOverloads constructor( ) mLightTimeTV!!.text = redNum.toString() } else { - disableCountdown() + disableTrafficLightCountDown() mLightTimeTV!!.text = "" } } @@ -160,7 +171,7 @@ class SingleTrafficLightView @JvmOverloads constructor( ) mLightTimeTV!!.text = greenNum.toString() } else { - disableCountdown() + disableTrafficLightCountDown() mLightTimeTV!!.text = "" } } @@ -180,7 +191,7 @@ class SingleTrafficLightView @JvmOverloads constructor( ) mLightTimeTV!!.text = yellowNum.toString() } else { - disableCountdown() + disableTrafficLightCountDown() mLightTimeTV!!.text = "" } } @@ -192,30 +203,33 @@ class SingleTrafficLightView @JvmOverloads constructor( * @param lightId 0-都是默认,1-红,2-黄,3-绿 * @param lightSource 1:云端下发;2:自车感知 */ - private fun updateTrafficLightIcon(lightId: Int, lightSource: Int) { + private fun updateTrafficLightIcon(lightId: TrafficLightEnum, lightSource: DataSourceType) { UiThreadHandler.post { when (lightId) { - 1 -> { + TrafficLightEnum.RED -> { mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_red_nor) this@SingleTrafficLightView.visibility = VISIBLE } - 2 -> { + TrafficLightEnum.YELLOW -> { mLightIconIV!!.setBackgroundResource(R.drawable.hmi_lightyellow_nor) this@SingleTrafficLightView.visibility = VISIBLE } - 3 -> { + TrafficLightEnum.GREEN -> { mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_green_nor) this@SingleTrafficLightView.visibility = VISIBLE } else -> this@SingleTrafficLightView.visibility = GONE } when (lightSource) { - 1 -> { + DataSourceType.AICLOUD -> { mLightSourceTV!!.text = "云端下发" } - 2 -> { + DataSourceType.TELEMATIC -> { mLightSourceTV!!.text = "自车感知" } + DataSourceType.OBU -> { + mLightSourceTV!!.text = "OBU" + } else -> { mLightSourceTV!!.visibility = GONE } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficLightView.kt deleted file mode 100644 index c8406f16bd..0000000000 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/TrafficLightView.kt +++ /dev/null @@ -1,122 +0,0 @@ -package com.mogo.eagle.core.function.hmi.ui.widget - -import android.content.Context -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.View -import androidx.constraintlayout.widget.ConstraintLayout -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight -import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import kotlinx.android.synthetic.main.view_traffic_light_vr.view.* - -/** - * @author xiaoyuzhou - * @date 2021/8/4 3:16 下午 - * 红绿灯控件 - */ -class TrafficLightView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : IViewTrafficLight(context, attrs, defStyleAttr) { - - - init { - LayoutInflater.from(context).inflate(R.layout.view_traffic_light_vr, this, true) - } - - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 - */ - override fun showWarningTrafficLight(checkLightId: Int,lightSource: Int) { - UiThreadHandler.post { - visibility = View.VISIBLE - when (checkLightId) { - 0 -> { - ctvRedTrafficLight.isChecked = false - ctvYellowTrafficLight.isChecked = false - ctvGreenTrafficLight.isChecked = false - } - 1 -> { - ctvRedTrafficLight.isChecked = true - ctvYellowTrafficLight.isChecked = false - ctvGreenTrafficLight.isChecked = false - } - 2 -> { - ctvRedTrafficLight.isChecked = false - ctvYellowTrafficLight.isChecked = true - ctvGreenTrafficLight.isChecked = false - } - 3 -> { - ctvRedTrafficLight.isChecked = false - ctvYellowTrafficLight.isChecked = false - ctvGreenTrafficLight.isChecked = true - } - } - } - } - - /** - * 关闭红绿灯预警展示,并重制灯态 - */ - override fun disableWarningTrafficLight() { - UiThreadHandler.post { - visibility = View.GONE - ctvRedTrafficLight.isChecked = false - ctvYellowTrafficLight.isChecked = false - ctvGreenTrafficLight.isChecked = false - ctvRedTrafficLight.text = "" - ctvYellowTrafficLight.text = "" - ctvGreenTrafficLight.text = "" - } - } - - - /** - * @param readNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - override fun changeCountdownTrafficLightNum(readNum: Int, yellowNum: Int, greenNum: Int) { - UiThreadHandler.post { - changeCountdownGreen(readNum) - changeCountdownYellow(yellowNum) - changeCountdownRed(greenNum) - } - } - - override fun changeCountdownGreen(greenNum: Int) { - UiThreadHandler.post { - if (greenNum > 0) { - ctvGreenTrafficLight.text = "$greenNum" - } else { - ctvGreenTrafficLight.text = "" - } - } - } - - override fun changeCountdownYellow(yellowNum: Int) { - UiThreadHandler.post { - if (yellowNum > 0) { - ctvYellowTrafficLight.text = "$yellowNum" - } else { - ctvYellowTrafficLight.text = "" - } - } - } - - override fun changeCountdownRed(redNum: Int) { - UiThreadHandler.post { - if (redNum > 0) { - ctvRedTrafficLight.text = "$redNum" - } else { - ctvRedTrafficLight.text = "" - } - } - } - -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 639cc50149..68ffc3415d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -1286,30 +1286,6 @@ android:textOn="显示「小地图」" android:textSize="@dimen/dp_24" /> - - - - - - - - - - - - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00011.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00011.png index e69de29bb2..50a65c8571 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00011.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00011.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00012.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00012.png index e69de29bb2..50a65c8571 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00012.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00012.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00013.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00013.png index e69de29bb2..50a65c8571 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00013.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00013.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00014.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00014.png index e69de29bb2..50a65c8571 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00014.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00014.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00015.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00015.png index e69de29bb2..50a65c8571 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00015.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00015.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00016.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00016.png index e69de29bb2..50a65c8571 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00016.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00016.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00017.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00017.png index e69de29bb2..50a65c8571 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00017.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00017.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00018.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00018.png index e69de29bb2..7a03a5972c 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00018.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00018.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00019.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00019.png index e69de29bb2..cd1e0c45a7 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00019.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00019.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00020.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00020.png index e69de29bb2..7a376915ce 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00020.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00020.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00021.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00021.png index e69de29bb2..c98ac95838 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00021.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00021.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00022.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00022.png index e69de29bb2..ec40533fa8 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00022.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00022.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00023.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00023.png index e69de29bb2..ae901b2df2 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00023.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00023.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00024.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00024.png index e69de29bb2..eef4b4e0ea 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00024.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00024.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00025.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00025.png index e69de29bb2..5bcd897394 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00025.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00025.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00026.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00026.png index e69de29bb2..15db7cf734 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00026.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00026.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00027.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00027.png index e69de29bb2..b20d6046d7 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00027.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00027.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00028.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00028.png index e69de29bb2..608e8f2be1 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00028.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00028.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00029.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00029.png index e69de29bb2..8d4bf7cbc2 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00029.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00029.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00030.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00030.png index e69de29bb2..ed13d90608 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00030.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00030.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00031.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00031.png index e69de29bb2..3a06bcb678 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00031.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00031.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00032.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00032.png index e69de29bb2..6c5451ca49 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00032.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00032.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00033.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00033.png index e69de29bb2..09b2e8480f 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00033.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00033.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00034.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00034.png index e69de29bb2..2841ed3770 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00034.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00034.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00035.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00035.png index e69de29bb2..18a981fdd2 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00035.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00035.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00036.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00036.png index e69de29bb2..cbca5fd792 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00036.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00036.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00037.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00037.png index e69de29bb2..6febc135b1 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00037.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00037.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00038.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00038.png index e69de29bb2..a4561c8e5e 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00038.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00038.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00039.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00039.png index e69de29bb2..7a94145199 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00039.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00039.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00040.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00040.png index e69de29bb2..d69704044c 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00040.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00040.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00041.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00041.png index e69de29bb2..971078720b 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00041.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00041.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00042.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00042.png index e69de29bb2..f5c9b2c48a 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00042.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00042.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00043.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00043.png index e69de29bb2..a65cf8591b 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00043.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00043.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00044.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00044.png index e69de29bb2..22d424dcf0 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00044.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00044.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00045.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00045.png index e69de29bb2..56c66de923 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00045.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00045.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00046.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00046.png index e69de29bb2..862fbc25f6 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00046.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00046.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00047.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00047.png index e69de29bb2..0d8e1f1b63 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00047.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00047.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00048.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00048.png index e69de29bb2..50a65c8571 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00048.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_orange_00048.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00011.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00011.png index e69de29bb2..3cbad345ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00011.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00011.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00012.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00012.png index e69de29bb2..3cbad345ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00012.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00012.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00013.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00013.png index e69de29bb2..3cbad345ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00013.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00013.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00014.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00014.png index e69de29bb2..3cbad345ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00014.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00014.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00015.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00015.png index e69de29bb2..3cbad345ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00015.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00015.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00016.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00016.png index e69de29bb2..3cbad345ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00016.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00016.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00017.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00017.png index e69de29bb2..3cbad345ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00017.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00017.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00018.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00018.png index e69de29bb2..3cbad345ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00018.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00018.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00019.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00019.png index e69de29bb2..ca3d131845 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00019.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00019.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00020.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00020.png index e69de29bb2..07a4f2e837 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00020.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00020.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00021.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00021.png index e69de29bb2..e477715df4 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00021.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00021.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00022.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00022.png index e69de29bb2..eadea4fcc2 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00022.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00022.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00023.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00023.png index e69de29bb2..062e7f2ab6 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00023.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00023.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00024.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00024.png index e69de29bb2..9dde80c060 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00024.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00024.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00025.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00025.png index e69de29bb2..69de6b84ec 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00025.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00025.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00026.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00026.png index e69de29bb2..6b473ad63f 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00026.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00026.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00027.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00027.png index e69de29bb2..bbddd52ad0 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00027.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00027.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00028.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00028.png index e69de29bb2..4d4764b480 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00028.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00028.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00029.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00029.png index e69de29bb2..9f3b4d984e 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00029.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00029.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00030.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00030.png index e69de29bb2..82562e17b5 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00030.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00030.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00031.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00031.png index e69de29bb2..5d1d66203a 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00031.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00031.png differ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00032.png b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00032.png index e69de29bb2..50abe7d551 100644 Binary files a/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00032.png and b/core/function-impl/mogo-core-function-v2x/src/main/res/drawable-xhdpi/v_to_x_warning_circle_red_00032.png differ diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt index 24fd2fe73e..318111a8de 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt @@ -7,18 +7,6 @@ package com.mogo.eagle.core.data.config */ object HmiBuildConfig { - /** - * 是否展示 转向灯ui - */ - @JvmField - var isShowTurnLightView = true - - /** - * 是否展示 刹车ui - */ - @JvmField - var isShowBrakeLightView = true - /** * 是否显示 限速UI */ diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/TrafficLightEnum.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/TrafficLightEnum.kt new file mode 100644 index 0000000000..bd1c9869cf --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/TrafficLightEnum.kt @@ -0,0 +1,5 @@ +package com.mogo.eagle.core.data.enums + +enum class TrafficLightEnum { + RED,GREEN,YELLOW,BLACK +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisLamplightListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisLamplightListener.kt index 40441a3fe9..8e9ec25a58 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisLamplightListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoChassisLamplightListener.kt @@ -11,7 +11,7 @@ interface IMoGoChassisLamplightListener { * 车辆转向灯 数据 * @param lightSwitch */ - fun onAutopilotLightSwitchData(lightSwitch: Chassis.LightSwitch?) + fun onAutopilotLightSwitchData(lightSwitch: Chassis.LightSwitch?){} /** * 车辆刹车灯 数据 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/IMoGoHmiViewProxy.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/IMoGoHmiViewProxy.kt deleted file mode 100644 index 7b760ac015..0000000000 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/IMoGoHmiViewProxy.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.mogo.eagle.core.function.api.hmi - -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight - -/** - * 设置HMI中控件代理接口 - */ -interface IMoGoHmiViewProxy { - - /** - * 设置 红绿灯 代理View - * @param view - */ - fun setProxyTrafficLightView(view: IViewTrafficLight) - -} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewTrafficLight.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewTrafficLight.kt deleted file mode 100644 index 42bebf7c4c..0000000000 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewTrafficLight.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.mogo.eagle.core.function.api.hmi.view - -import android.content.Context -import android.util.AttributeSet -import android.widget.LinearLayout - -/** - * 定义红绿灯View具备的功能接口 - */ -abstract class IViewTrafficLight(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : - LinearLayout(context, attrs, defStyleAttr) { - - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 - */ - open fun showWarningTrafficLight(checkLightId: Int,lightSource: Int) {} - - /** - * 关闭红绿灯预警展示,并重制灯态 - */ - open fun disableWarningTrafficLight() {} - - /** - * @param readNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - open fun changeCountdownTrafficLightNum(readNum: Int, yellowNum: Int, greenNum: Int) {} - - open fun changeCountdownGreen(greenNum: Int) {} - - open fun changeCountdownYellow(yellowNum: Int) {} - - open fun changeCountdownRed(redNum: Int) {} - - /** - * 隐藏倒计时 - */ - open fun disableCountdown(){} -} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt index 27433b48cc..45581ca528 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt @@ -8,29 +8,18 @@ import com.mogo.eagle.core.data.map.Infrastructure import com.mogo.eagle.core.data.notice.NoticeNormalData import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData import com.mogo.eagle.core.data.report.ReportEntity -import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy /** * @author xiaoyuzhou * @date 2021/8/2 7:36 下午 */ -interface IMoGoHmiProvider : IMoGoHmiViewProxy { +interface IMoGoHmiProvider { /** * 浓雾预警 */ fun displayEffects() - /** - * 控制转向灯 - */ - fun setTurnLightFunction(isOpen: Boolean) - - /** - * 控制刹车功能 - */ - fun setBrakeLightFunction(isOpen: Boolean) - /** * 控制sn绑定功能 */ @@ -57,51 +46,6 @@ interface IMoGoHmiProvider : IMoGoHmiViewProxy { */ fun disableWarningV2X(tag: String?) - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知 - */ - fun showWarningTrafficLight(checkLightId: Int,lightSource: Int) - - /** - * 红绿灯是否展示 - */ - fun isWarningTrafficLightShow(): Boolean - - /** - * 关闭红绿灯预警 - */ - fun disableWarningTrafficLight() - - /** - * 关闭红绿灯倒计时 - */ - fun disableWarningTrafficLightCountDown() - - /** - * 修改红灯倒计时 - */ - fun changeCountdownRed(redNum: Int) - - /** - * 修改黄灯倒计时 - */ - fun changeCountdownYellow(yellowNum: Int) - - /** - * 修改绿灯倒计时 - */ - fun changeCountdownGreen(greenNum: Int) - - /** - * @param readNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - fun changeCountdownTrafficLightNum(readNum: Int, yellowNum: Int, greenNum: Int) - /** * 展示指定方位上的红框预警 * @param direction diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightListener.kt deleted file mode 100644 index fa902d6702..0000000000 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightListener.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.mogo.eagle.core.function.api.obu - -/** - * OBU 灯态信息 - * @author lixiaopeng - * @date 2022/1/30 10:28 下午 - */ -interface IMoGoObuTrafficLightListener { - /** - * @param light 灯的信息 - */ - fun onObuTrafficLight(light: Int){} - -} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/trafficlight/IMoGoTrafficLightListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/trafficlight/IMoGoTrafficLightListener.kt index b0f9026b07..d57b566cad 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/trafficlight/IMoGoTrafficLightListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/trafficlight/IMoGoTrafficLightListener.kt @@ -1,13 +1,15 @@ package com.mogo.eagle.core.function.api.trafficlight +import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum import com.mogo.eagle.core.data.trafficlight.TrafficLightResult interface IMoGoTrafficLightListener { /** - * 当前红绿灯状态,包含红绿灯灯态,倒计时秒数,灯态经纬度,时间戳,剩余时间 + * 当前云端红绿灯状态,包含红绿灯灯态,倒计时秒数,灯态经纬度,时间戳,剩余时间 */ - fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) + fun onTrafficLightStatus(trafficLightResult: TrafficLightResult){} /** * 车辆进入路口回调 @@ -17,10 +19,46 @@ interface IMoGoTrafficLightListener { } /** - * 红绿灯接口请求失败 + * 云端红绿灯接口请求失败 */ fun onTrafficRequestError(){ } + /** + * obu红绿灯状态 + */ + fun onObuTrafficLightStatus(light: TrafficLightEnum){} + + /** + * 展示红绿灯预警 + * + * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 + * @param lightSource 1:云端下发 2:自车感知 3:OBU + */ + fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) {} + + /** + * @param readNum 红灯倒计时 + * @param yellowNum 黄灯倒计时 + * @param greenNum 绿灯倒计时 + */ + fun changeCountdownTrafficLightNum(readNum: Int, yellowNum: Int, greenNum: Int) {} + + fun changeCountdownGreen(greenNum: Int) {} + + fun changeCountdownYellow(yellowNum: Int) {} + + fun changeCountdownRed(redNum: Int) {} + + /** + * 关闭红绿灯预警展示,并重制灯态 + */ + fun disableTrafficLight() {} + + /** + * 关闭红绿灯计数 + */ + fun disableTrafficLightCountDown() {} + } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt index 2011cb665e..f995fc302d 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt @@ -10,7 +10,6 @@ import com.mogo.eagle.core.data.map.Infrastructure import com.mogo.eagle.core.data.notice.NoticeNormalData import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData import com.mogo.eagle.core.data.report.ReportEntity -import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight import com.mogo.eagle.core.function.api.hmi.warning.IMoGoHmiProvider import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener @@ -32,20 +31,6 @@ object CallerHmiManager { waringProviderApi?.displayEffects() } - /** - * 控制转向灯功能 - */ - fun setTurnLightFunction(isOpen: Boolean) { - waringProviderApi?.setTurnLightFunction(isOpen) - } - - /** - * 控制刹车功能 - */ - fun setBrakeLightFunction(isOpen: Boolean) { - waringProviderApi?.setBrakeLightFunction(isOpen) - } - /** * 控制显示sn绑定弹框 */ @@ -98,67 +83,6 @@ object CallerHmiManager { waringProviderApi?.disableWarningV2X(tag) } - /** - * 展示红绿灯预警 - * - * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 - * @param lightSource 1:云端下发;2:自车感知;3:OBU - */ - fun showWarningTrafficLight(checkLightId: Int, lightSource: Int) { - waringProviderApi?.showWarningTrafficLight(checkLightId, lightSource) - } - - /** - * 关闭红绿灯预警 - */ - fun disableWarningTrafficLight() { - waringProviderApi?.disableWarningTrafficLight() - } - - /** - * 红绿灯是否展示 - */ - fun isWarningTrafficLightShow(): Boolean { - return waringProviderApi?.isWarningTrafficLightShow() ?: false - } - - /** - * 关闭红绿灯倒计时 - */ - fun disableWarningTrafficLightCountDown() { - waringProviderApi?.disableWarningTrafficLightCountDown() - } - - /** - * 修改红灯倒计时 - */ - fun changeCountdownRed(redNum: Int) { - waringProviderApi?.changeCountdownRed(redNum) - } - - /** - * 修改黄灯倒计时 - */ - fun changeCountdownYellow(yellowNum: Int) { - waringProviderApi?.changeCountdownYellow(yellowNum) - } - - /** - * 修改绿灯倒计时 - */ - fun changeCountdownGreen(greenNum: Int) { - waringProviderApi?.changeCountdownGreen(greenNum) - } - - /** - * @param readNum 红灯倒计时 - * @param yellowNum 黄灯倒计时 - * @param greenNum 绿灯倒计时 - */ - fun changeCountdownTrafficLightNum(readNum: Int, yellowNum: Int, greenNum: Int) { - waringProviderApi?.changeCountdownTrafficLightNum(readNum, yellowNum, greenNum) - } - /** * 展示指定方位上的红框预警 * @param direction @@ -279,14 +203,6 @@ object CallerHmiManager { waringProviderApi?.hideSmallFragment() } - /** - * 设置 红绿灯 代理View - * @param view - */ - fun setProxyTrafficLightView(view: IViewTrafficLight) { - waringProviderApi?.setProxyTrafficLightView(view) - } - /** * 展示工控机监控上报数据 * @param errorReportList 错误级别上报数据列表 diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightListenerManager.kt deleted file mode 100644 index 972feeeeb7..0000000000 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightListenerManager.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.mogo.eagle.core.function.call.obu - -import com.mogo.eagle.core.function.api.obu.IMoGoObuTrafficLightListener -import com.mogo.eagle.core.function.call.base.CallerBase - -/** - * OBU 红绿灯数据监听管理 - */ -object CallerObuTrafficLightListenerManager : CallerBase() { - - var mLight: Int = 0 - - override fun doSomeAfterAddListener(tag: String, listener: IMoGoObuTrafficLightListener) { - listener.onObuTrafficLight(mLight) - } - - fun invokeObuTrafficLight(light: Int) { - this.mLight = light - M_LISTENERS.forEach { - val tag = it.key - val listener = it.value - listener.onObuTrafficLight(light) - } - } - -} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightListenerManager.kt index 24da759ef4..b2659b4ec6 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightListenerManager.kt @@ -1,10 +1,12 @@ package com.mogo.eagle.core.function.call.trafficlight +import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.enums.TrafficLightEnum import com.mogo.eagle.core.data.trafficlight.TrafficLightResult import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.base.CallerBase -object CallerTrafficLightListenerManager : CallerBase() { +object CallerTrafficLightListenerManager : CallerBase() { private var trafficLightResult: TrafficLightResult? = null @@ -17,7 +19,6 @@ object CallerTrafficLightListenerManager : CallerBase Make Moudle 'MoGoEagleEye.libraries.mogo-adas-data' +~~~ + +# 工控机透传OBU V2I PB转换 +***鹰眼自用PB文件放在单独文件夹(personal)目的是为了区分工控机PB还是自用PB*** +|工控机原始PB文件|转换后鹰眼所用PB| +|:-|:-| +|obu_warning_event.proto|personal/obu_penetrate.proto、personal/obu_scene.proto| +|mogo_v2x.proto|personal/obu_base.proto| +## PB需要转换精度的字段 +**MapMatchData** +~~~ +obu_scene.proto/MapMatchData/speedMaxLimit int32 转 double (0.02m/s 转 m/s) +obu_scene.proto/MapMatchData/speedMinLimit int32 转 double (0.02m/s 转 m/s) +~~~ +**SpatLight** +~~~ +obu_base.proto/SpatLight/countDown int32 转 double (0.1s 转 s) +obu_base.proto/SpatLight/suggestMaxSpeed int32 转 double (0.02m/s 转 m/s) +obu_base.proto/SpatLight/suggestMinSpeed int32 转 double (0.02m/s 转 m/s) +~~~ +**Participant** +~~~ +obu_base.proto/Participant/latitude int64 转 double (1e-7° 转 °) +obu_base.proto/Participant/longitude int64 转 double (1e-7° 转 °) +obu_base.proto/Participant/elevation int64 转 double (0.1m 转 m) +obu_base.proto/Participant/speed int64 转 double (0.02m/s 转 m/s) +obu_base.proto/Participant/heading int32 转 double (0.0125° 转 °) +~~~ +**AccFourAxes** +~~~ +obu_base.proto/AccFourAxes/accLng int32 转 double (0.01m/s2 转 m/s2) +obu_base.proto/AccFourAxes/accLat int32 转 double (0.01m/s2 转 m/s2) +obu_base.proto/AccFourAxes/accVert int32 转 double (0.02G 转 G) +obu_base.proto/AccFourAxes/accYaw int32 转 double (0.01°/s 转 °/s) +~~~ +**VehicleSize** +~~~ +obu_base.proto/VehicleSize/height int32 转 int32 (5cm 转 cm) +~~~ +**V2xWarning** +~~~ +obu_base.proto/V2xWarning/distance int32 转 double (0.01m 转 m) +~~~ +**RsiWarning** +~~~ +obu_base.proto/RsiWarning/speedMaxLimit int32 转 double (0.02m/s 转 m/s) +obu_base.proto/RsiWarning/speedMinLimit int32 转 double (0.02m/s 转 m/s) +obu_base.proto/RsiWarning/eventRadius int32 转 double (0.1m 转 m) +obu_base.proto/RsiWarning/distance int32 转 double (0.01m 转 m) +~~~ +**VerticalLLV** +~~~ +obu_base.proto/VerticalLLV/present/offset1 int32 转 double (0.1m 转 m) +obu_base.proto/VerticalLLV/present/offset2 int32 转 double (0.1m 转 m) +obu_base.proto/VerticalLLV/present/offset3 int32 转 double (0.1m 转 m) +obu_base.proto/VerticalLLV/present/offset4 int32 转 double (0.1m 转 m) +obu_base.proto/VerticalLLV/present/offset5 int32 转 double (0.1m 转 m) +obu_base.proto/VerticalLLV/present/offset6 int32 转 double (0.1m 转 m) +obu_base.proto/VerticalLLV/present/elevation int32 转 double (0.1m 转 m) +~~~ +**PositionLL1** +~~~ +obu_base.proto/PositionLL1/longitude int64 转 double (1e-7° 转 °) +obu_base.proto/PositionLL1/latitude int64 转 double (1e-7° 转 °) +~~~ +**PositionLL2** +~~~ +obu_base.proto/PositionLL2/longitude int64 转 double (1e-7° 转 °) +obu_base.proto/PositionLL2/latitude int64 转 double (1e-7° 转 °) +~~~ +**PositionLL3** +~~~ +obu_base.proto/PositionLL3/longitude int64 转 double (1e-7° 转 °) +obu_base.proto/PositionLL3/latitude int64 转 double (1e-7° 转 °) +~~~ +**PositionLL4** +~~~ +obu_base.proto/PositionLL4/longitude int64 转 double (1e-7° 转 °) +obu_base.proto/PositionLL4/latitude int64 转 double (1e-7° 转 °) +~~~ +**PositionLL5** +~~~ +obu_base.proto/PositionLL5/longitude int64 转 double (1e-7° 转 °) +obu_base.proto/PositionLL5/latitude int64 转 double (1e-7° 转 °) +~~~ +**PositionLL6** +~~~ +obu_base.proto/PositionLL6/longitude int64 转 double (1e-7° 转 °) +obu_base.proto/PositionLL6/latitude int64 转 double (1e-7° 转 °) +~~~ +**PositionLatLon** +~~~ +obu_base.proto/PositionLatLon/longitude int64 转 double (1e-7° 转 °) +obu_base.proto/PositionLatLon/latitude int64 转 double (1e-7° 转 °) ~~~ \ No newline at end of file diff --git a/libraries/mogo-adas-data/src/main/proto/personal/obu_base.proto b/libraries/mogo-adas-data/src/main/proto/personal/obu_base.proto new file mode 100644 index 0000000000..52174fb80e --- /dev/null +++ b/libraries/mogo-adas-data/src/main/proto/personal/obu_base.proto @@ -0,0 +1,167 @@ +syntax = "proto3"; +package com.mogo.support.obu; +//场景基础数据PB + +//垂直方向偏差 目前OBU发送的数据未偏移,使用的是elevation +message VerticalLLV{ + oneof present{ + double offset1 = 1;//海拔,单位(m) + double offset2 = 2;//海拔,单位(m) + double offset3 = 3;//海拔,单位(m) + double offset4 = 4;//海拔,单位(m) + double offset5 = 5;//海拔,单位(m) + double offset6 = 6;//海拔,单位(m) + double elevation = 7;//海拔,单位(m) + } +} + + + +////////////////////////////////////////////////////////////////// +//经纬度偏差,来描述一个坐标点的相对位置。约定偏差值等于真实值减去参考值。 +//提供了 7 种尺度的描述方式 目前OBU发送的数据未偏移,使用的是position_LatLon +message PositionOffset{ + oneof present{ + PositionLL1 positionLL1 = 1; + PositionLL2 positionLL2 = 2; + PositionLL3 positionLL3 = 3; + PositionLL4 positionLL4 = 4; + PositionLL5 positionLL5 = 5; + PositionLL6 positionLL6 = 6; + PositionLatLon positionLatLon = 7; + } +} +message PositionLL1{ + // (-2048..2047) + double longitude = 1;//经度,单位(°) + double latitude = 2;//维度,单位(°) +} +message PositionLL2{ + // (-8192..8191) + double longitude = 1;//经度,单位(°) + double latitude = 2;//维度,单位(°) +} +message PositionLL3{ + // (-32768..32767) + double longitude = 1;//经度,单位(°) + double latitude = 2;//维度,单位(°) +} +message PositionLL4{ + // (-131072..131071) + double longitude = 1;//经度,单位(°) + double latitude = 2;//维度,单位(°) +} +message PositionLL5{ + // (-2097152..2097151) + double longitude = 1;//经度,单位(°) + double latitude = 2;//维度,单位(°) +} +message PositionLL6{ + // (-8388608..8388607) + double longitude = 1;//经度,单位(°) + double latitude = 2;//维度,单位(°) +} +message PositionLatLon{ + // 定义经度数值。东经为正,西经为负。 + //分辨率为1e-7°。 + double longitude = 1;//经度,单位(°) + double latitude = 2;//维度,单位(°) +} +////////////////////////////////////////////////////////////////// + +//交通标志/事件位置信息 +message PositionLLV{ + PositionOffset position = 1;//经纬度 + VerticalLLV vertical = 2;//垂直方向偏差 +} + +//交通参与者尺寸信息 +message VehicleSize { + int32 width = 1;//宽度,单位(cm) + int32 length = 2;//长度,单位(cm) + int32 height = 3;//高度,单位(cm) +} + +//四轴加速度 +message AccFourAxes { + double accLng = 1;//纵向加速度,单位(m/s2) + double accLat = 2;//横向加速度,单位(m/s2) + double accVert = 3;//垂直加速度,单位(G) + double accYaw = 4;//横摆角加速度,单位(°/s) +} + +//节点信息 +message NodeId{ + int32 region = 1;/* 定义地图中划分区域的ID号 */ + int32 id = 2; /* 定义地图节点ID */ +} + +//灯色信息 +message SpatLight{ + int32 phaseID = 1; /* 信号灯相位ID */ + int32 maneuvers = 2; /* 允许转向关系,bit0:直行,bit1:左转,bit2:右转,bit3:掉头 */ + int32 light = 3; /* 灯色,0:不可用,1:黑色,2:红闪,3:红色,4:绿闪,5:permissive_green,6:protected_green,7:黄色,8:黄闪 */ + double countDown = 4; /* 灯色倒计时,单位(s) */ + double suggestMaxSpeed = 5; /* 建议最大车速,单位(m/s) */ + double suggestMinSpeed = 6; /* 建议最小车速,单位(m/s) */ +} + +//时间 +message DateTime{ + int32 year = 1; /* 年份 */ + int32 month = 2; /* 月份 */ + int32 day = 3; /* 日期 */ + int32 hour = 4; /* 小时 */ + int32 minute = 5; /* 分钟 */ + int32 millisecond = 6; /* 毫秒 */ + int32 offset = 7; /* 定义与UTC时间的分钟差 */ +} + +//预警数据 +message WarningData{ + int32 unitMask = 1; /* 描述所属字段有效性 */ + int32 status = 2; /* 状态信息,0:更新,1:添加,2:删除 */ + int32 warningType = 3; /* 预警类型,0:前向碰撞预警,1:交叉路口碰撞预警,2:左转辅助预警,3:盲区预警,4:变道预警, + 5:逆向超车预警,6:紧急制动预警,7:异常车辆提醒,8:失控车辆预警,9:紧急车辆预警,10:弱势交通参与者碰撞预警 */ + int32 warningLevel = 4; /* 预警等级,0:无效,1:DETECTED,2:INFORM,3:WARNING */ + int32 warningPriority = 5; /* 预警优先级,默认为0,预留 */ +} + +//弱势交通参与者预警信息 +message V2xWarning{ + int32 unitMask = 1; /* 描述所属字段有效性 */ + repeated WarningData warningData = 2; + DateTime warningTime = 3; /* 预警触发时间 */ + double distance = 4; /* 预警触发时与自车之间的距离,单位(m) */ +} + +//弱势交通参与者信息 +message Participant{ + int32 ptcType = 1; /* 交通参与者类型,0:未知,1:机动车,2:非机动车,3:行人,4:OBU自身 */ + int32 ptcId = 2; /* 临时ID,取值范围(1..255) */ + int32 source = 3; /* 监测信息来源,0:未知,1:RSU自身,2:V2X广播,3:视频传感器,4:微波雷达,5:地磁线圈传感器,6:激光雷达传感器,7:两类或以上感知数据融合 */ + int64 secMark = 4; /* UTC时间,单位(ms) */ + double latitude = 5; /* 维度,单位(°) */ + double longitude = 6; /* 经度,单位(°) */ + double elevation = 7; /* 海拔,单位(m) */ + double speed = 8; /* 速度,单位(m/s) */ + double heading = 9; /* 航向角,单位(°) */ + AccFourAxes accFourAxes = 10; /* 四轴加速度 */ + VehicleSize ptcSize = 11; /* 交通参与者尺寸信息 */ + int32 vehicleClass = 12; /* 车辆类型,参考《OBU软件SDK使用文档》附录A中的表1 */ + int32 targetPosition = 13; /* 目标方位,参考mg_veh_target_position_t */ +} + +message RsiWarning { + int32 unitMask = 1; /* 描述所属字段有效性 */ + int32 sceneType = 2; /* 预警类型,0:无效,1:限速信息,2:道路危险,3:车内标牌,4:前方拥堵 */ + PositionLLV position = 3; /* 交通标志/事件位置信息 */ + int32 signSerialNum = 4; /* 交通标志类型序号,根据预警类型匹配,0:无效,参照国标《GB 5768.2-2009中“交通标志中文名称索引》表序号 */ + int32 eventSerialNum = 5; /* 交通事件类型序号,根据预警类型匹配,0:无效,参考国标《GB/T 29100-2012》中定义的事件分类代码 */ + double speedMaxLimit = 6; /* 建议最大车速,单位(0.02m/s) */ + double speedMinLimit = 7; /* 建议最小车速,单位(0.02m/s) */ + double eventRadius = 8; /* 交通事件触发半径,根据预警类型匹配,0:无效,单位(0.1m) */ + int32 warningLevel = 9; /* 预警等级,0:无效,1:DETECTED,2:INFORM,3:WARNING */ + int32 targetPosition = 10; /* 目标方位,参考mg_rti_target_position_t */ + double distance = 11; /* 预警触发时与自车之间的距离,单位(0.01m) */ +} \ No newline at end of file diff --git a/libraries/mogo-adas-data/src/main/proto/personal/obu_penetrate.proto b/libraries/mogo-adas-data/src/main/proto/personal/obu_penetrate.proto new file mode 100644 index 0000000000..1745f69063 --- /dev/null +++ b/libraries/mogo-adas-data/src/main/proto/personal/obu_penetrate.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; +package com.mogo.support.obu; + +import "header.proto"; +import "personal/obu_scene.proto"; + +//工控机透传PB +message PenetrateWarningData{ + common.Header header = 1; + int32 msgDataType = 2; /*1:rsiEvent; 2:rsmEvent; 3:spatEvent; 4:mapMatchData*/ + RsiWarningData rsiEvent = 3; + RsmWarningData rsmEvent = 4; + SpatWarningData spatEvent = 5; + MapMatchData mapMatchData = 6; +} diff --git a/libraries/mogo-adas-data/src/main/proto/personal/obu_scene.proto b/libraries/mogo-adas-data/src/main/proto/personal/obu_scene.proto new file mode 100644 index 0000000000..feb76afbc0 --- /dev/null +++ b/libraries/mogo-adas-data/src/main/proto/personal/obu_scene.proto @@ -0,0 +1,36 @@ +syntax = "proto3"; +package com.mogo.support.obu; + +import "personal/obu_base.proto"; +//场景PB 目前只有V2I(Rsi、Rsm、Spat、Map)相关场景,后期会添加V2V相关场景 + +//预警事件 RSI Warning event +message RsiWarningData { + int32 status = 1; /* 状态信息,0:更新,1:添加,2:删除 */ + //int32 warning_num = 2; /* 预警信息数量 */ + repeated RsiWarning warningMsg = 2; /* 预警信息集合 */ +} + +//RSM Warning Msg +message RsmWarningData{ + int32 status = 1; /* 状态信息,0:更新,1:添加,2:删除 */ + Participant participant = 2; /* 弱势交通参与者信息 */ + V2xWarning warningMsg = 3; /* 弱势交通参与者预警信息 */ +} + +//SPAT Msg +message SpatWarningData{ + int32 status = 1; /* 状态信息,0:更新,1:添加,2:删除 */ + int32 warningType = 2; /* 预警类型信息 */ + repeated SpatLight lights = 3; /* 灯色信息集合 */ +} + +message MapMatchData{ + int32 status = 1;/* 状态信息,0:更新,1:添加,2:删除 */ + int32 unitMask = 2;/* 描述所属字段有效性 */ + NodeId currentNodeID = 3;/* 前方节点信息 */ + NodeId upstreamNodeID = 4;/* 上游节点信息 */ + int32 matchingLaneID = 5;/* 匹配车道ID,0:无效 */ + double speedMaxLimit = 6;/* 建议最大车速,单位(m/s) */ + double speedMinLimit = 7;/* 建议最小车速,单位(m/s) */ +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index cc41289c5a..c53588b041 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -205,6 +205,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec // dispatchHandlers.put(MessagePad.MessageType.MsgTypeTrajectory, new DispatchHandler(MessagePad.MessageType.MsgTypeTrajectory, this)); //障碍物信息 dispatchHandlers.put(MessagePad.MessageType.MsgTypeTrackedObjects, new DispatchHandler(MessagePad.MessageType.MsgTypeTrackedObjects, this)); + //透传OBU V2I事件(OBU通过UDP发送数据如果多场景同时出发,接收频率太高。工控机只是透传未做任何频率限制) + dispatchHandlers.put(MessagePad.MessageType.MsgTypeObuWarningData, new DispatchHandler(MessagePad.MessageType.MsgTypeObuWarningData, this)); + //惯导信息 // dispatchHandlers.put(MessagePad.MessageType.MsgTypeGnssInfo, new DispatchHandler(MessagePad.MessageType.MsgTypeGnssInfo, this)); //底盘信息 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index e309aab7f8..dae63233cd 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -1,5 +1,6 @@ package com.zhidao.support.adas.high; +import com.mogo.support.obu.ObuScene; import com.zhidao.support.adas.high.bean.AutopilotAbility; import com.zhidao.support.adas.high.bean.AutopilotStatistics; import com.zhidao.support.adas.high.common.ProtocolStatus; @@ -203,6 +204,38 @@ public interface OnAdasListener { */ void onObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData obuWarningData); + /** + * OBU 红绿灯预警信息 + * + * @param header 头 + * @param spatWarningData 数据 + */ + void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData); + + /** + * OBU RSI预警信息 + * + * @param header 头 + * @param rsiWarningData 数据 + */ + void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData); + + /** + * OBU RSM预警信息 + * + * @param header 头 + * @param rsmWarningData 数据 + */ + void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData); + + /** + * OBU 地图匹配结果 + * + * @param header 头 + * @param mapMatchData 数据 + */ + void onoObuRsmWarning(MessagePad.Header header, ObuScene.MapMatchData mapMatchData); + /** * 重构后的功能状态 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ObuWarningDataMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ObuWarningDataMessage.java index 98075ce004..e07f3d0f2e 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ObuWarningDataMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ObuWarningDataMessage.java @@ -1,8 +1,10 @@ package com.zhidao.support.adas.high.msg; import android.os.SystemClock; +import android.util.Log; import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.UnknownFieldSet; import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.common.CupidLogUtils; @@ -27,5 +29,30 @@ public class ObuWarningDataMessage extends MyAbstractMessageHandler { adasListener.onObuWarningData(raw.getHeader(), obuWarningData); } AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime); + + + +// ObuPenetrate.WarningData warningData = ObuPenetrate.WarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); +// UnknownFieldSet set = warningData.getMapMatchData().getUnknownFields(); +// +// Log.i("ddd", "set.getField(7).getVarintList()=" + set.getField(7).getVarintList()); +// Long a = set.getField(7).getVarintList().get(0); +// +// ObuScene.MapMatchData.Builder MapMatchDataBuilder = warningData.getMapMatchData().toBuilder().setSpeedMinLimit(a * 0.02D); +// MapMatchDataBuilder.setUnknownFields(UnknownFieldSet.getDefaultInstance()); +// ObuPenetrate.WarningData.Builder builder = warningData.toBuilder(); +// builder.setMapMatchData(MapMatchDataBuilder); +// warningData = builder.build(); +//// Log.i("ddd","a="+a); +// +// +// AdasChannel.calculateTimeConsumingOnDispatchRaw("OBU预警事件", raw.receiveTime); +// long nowTime = 0; +// if (CupidLogUtils.isEnableLog()) +// nowTime = SystemClock.elapsedRealtime(); +// if (adasListener != null) { +// adasListener.onObuWarningData(raw.getHeader(), warningData); +// } +// AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime); } } diff --git a/libraries/mogo-obu/.gitignore b/libraries/mogo-obu/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/libraries/mogo-obu/.gitignore @@ -0,0 +1 @@ +/build diff --git a/libraries/mogo-obu/README.md b/libraries/mogo-obu/README.md new file mode 100644 index 0000000000..cef2260b99 --- /dev/null +++ b/libraries/mogo-obu/README.md @@ -0,0 +1,4 @@ +#### 说明 +# OBU LIB +## OBU SDK 数据融合 + diff --git a/libraries/mogo-obu/build.gradle b/libraries/mogo-obu/build.gradle new file mode 100644 index 0000000000..e3dc611b6f --- /dev/null +++ b/libraries/mogo-obu/build.gradle @@ -0,0 +1,61 @@ +plugins { + id 'com.android.library' + id 'com.google.protobuf' +} + +android { + compileSdkVersion rootProject.ext.android.compileSdkVersion + + defaultConfig { + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode rootProject.versionCode as int + versionName rootProject.versionName + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + sourceSets { + main { + proto { + srcDir 'src/main/proto' + include '**/*.proto' + } + } + } + + protobuf { + protoc { + artifact = rootProject.ext.dependencies.protoc + } + + generateProtoTasks { + all().each { task -> + task.builtins { + remove java + } + task.builtins { + java {} + } + } + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + api project(':libraries:mogo-adas-data') + api rootProject.ext.dependencies.protobuf_java + api rootProject.ext.dependencies.protobuf_java_util + api rootProject.ext.dependencies.mogoobu +} diff --git a/libraries/mogo-obu/consumer-rules.pro b/libraries/mogo-obu/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libraries/mogo-obu/gradle.properties b/libraries/mogo-obu/gradle.properties new file mode 100644 index 0000000000..ed0606233d --- /dev/null +++ b/libraries/mogo-obu/gradle.properties @@ -0,0 +1,3 @@ +GROUP=com.mogo.obu +POM_ARTIFACT_ID=mogo-obu +VERSION_CODE=1 \ No newline at end of file diff --git a/libraries/mogo-obu/proguard-rules.pro b/libraries/mogo-obu/proguard-rules.pro new file mode 100644 index 0000000000..f1b424510d --- /dev/null +++ b/libraries/mogo-obu/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/libraries/mogo-obu/src/main/AndroidManifest.xml b/libraries/mogo-obu/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..6da0edce23 --- /dev/null +++ b/libraries/mogo-obu/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + diff --git a/libraries/mogo-obu/src/main/res/values/strings.xml b/libraries/mogo-obu/src/main/res/values/strings.xml new file mode 100644 index 0000000000..1be2af6934 --- /dev/null +++ b/libraries/mogo-obu/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + mogo-obu + diff --git a/settings.gradle b/settings.gradle index 99625fde8b..ca6928c12d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -47,6 +47,7 @@ include ':libraries:mogo-map-api' include ':libraries:mogo-map' include ':libraries:mogo-adas' include ':libraries:mogo-adas-data' +include ':libraries:mogo-obu' // 语音 include ':tts:tts-base'