Merge branch 'refs/heads/dev_robotaxi-d_240912_6.7.0' into dev_robotaxi-d_240912_6.7.2_local

# Conflicts:
#	OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt
#	OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt
This commit is contained in:
donghongyu-pc
2024-10-25 10:15:33 +08:00
20 changed files with 127 additions and 57 deletions

View File

@@ -2,9 +2,20 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_962"
android:layout_height="@dimen/dp_1047"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/bus_biz_bg">
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_bg"
android:src="@drawable/bus_biz_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="@dimen/dp_167"
android:scaleType="fitXY"
android:layout_width="@dimen/dp_962"
android:layout_height="@dimen/dp_0"/>
<androidx.appcompat.widget.AppCompatImageView
android:src="@drawable/bus_biz_bg_header"
@@ -19,7 +30,8 @@
android:id="@+id/loading_biz"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
android:layout_marginBottom="@dimen/dp_60"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="wrap_content"
@@ -32,8 +44,10 @@
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
android:layout_marginBottom="@dimen/dp_60"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_height="0dp"/>
<com.mogo.och.weaknet.ui.switchtask.SwitchTaskView
android:id="@+id/swtichTask"
@@ -42,8 +56,10 @@
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
android:layout_marginBottom="@dimen/dp_60"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_height="0dp"/>
<com.mogo.och.weaknet.ui.taskrunning.TaskRunningView
android:id="@+id/taskRunning"
@@ -52,7 +68,9 @@
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
android:layout_marginBottom="@dimen/dp_60"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_height="0dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -2,7 +2,8 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
xmlns:tools="http://schemas.android.com/tools">
<TextView

View File

@@ -3,7 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
tools:background="@drawable/bus_switch_line_normal">
<TextView

View File

@@ -2,7 +2,8 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
tools:background="@drawable/bus_switch_line_normal"
xmlns:tools="http://schemas.android.com/tools">

View File

@@ -22,7 +22,6 @@
<color name="bus_switch_map_bg">#323C6F</color>
<dimen name="bus_dp_10">10dp</dimen>
<dimen name="bus_dp_20">20dp</dimen>
<dimen name="bus_dp_200">200dp</dimen>
<dimen name="bus_dp_52">52dp</dimen>
<dimen name="bus_dp_65">65dp</dimen>
<dimen name="bus_layout_margin_bottom">20dp</dimen>

View File

@@ -34,7 +34,6 @@ import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_distanc
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_end_routing
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_routing_name
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_submit_task
import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_time_end
import kotlinx.android.synthetic.main.unmanned_routing_running.view.goutp_show_routing_info
import kotlinx.android.synthetic.main.unmanned_routing_running.view.include_empty
import kotlinx.android.synthetic.main.unmanned_routing_running.view.naviToStart
@@ -196,8 +195,7 @@ class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCal
)
}"
)
actv_distance_end.text =TaskUtils.getCurrentTaskDistance(meters)
actv_time_end.text =TaskUtils.getCurrentTaskTime(timeInSecond)
actv_distance_end.text = "${TaskUtils.getCurrentTaskDistance(meters)} ${TaskUtils.getCurrentTaskTime(timeInSecond)}"
}
}

View File

@@ -3,7 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
tools:background="@drawable/shape_itinerary_bg_default"
xmlns:tools="http://schemas.android.com/tools">
@@ -41,7 +42,7 @@
android:layout_marginEnd="@dimen/dp_52"
android:layout_width="match_parent"
android:background="@drawable/shape_itinerary_bg_default"
android:layout_height="@dimen/dp_351"/>
android:layout_height="@dimen/dp_272"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_current_itinerary_start_point"
@@ -61,7 +62,7 @@
android:layout_marginTop="@dimen/dp_8"
android:background="@color/taxi_color_4D000000"
android:layout_width="@dimen/dp_6"
android:layout_height="@dimen/dp_171"/>
android:layout_height="@dimen/dp_92"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_current_itinerary_end_point"
@@ -95,6 +96,7 @@
android:layout_width="@dimen/dp_46"
android:layout_height="@dimen/dp_46"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_distance_end"
android:text="5.2公里"
@@ -102,22 +104,10 @@
android:textColor="@color/taxi_color_CCCCCC"
app:layout_constraintTop_toBottomOf="@+id/actv_current_itinerary_start_name"
app:layout_constraintStart_toStartOf="@+id/actv_current_itinerary_start_name"
app:layout_constraintBottom_toTopOf="@+id/actv_time_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_time_end"
android:text="1小时36分钟"
android:textSize="@dimen/dp_32"
android:textColor="@color/taxi_color_CCCCCC"
app:layout_constraintTop_toBottomOf="@+id/actv_distance_end"
app:layout_constraintStart_toStartOf="@+id/actv_current_itinerary_start_name"
app:layout_constraintBottom_toTopOf="@+id/actv_current_itinerary_end_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_current_itinerary_end_name"
app:layout_constraintTop_toTopOf="@+id/aciv_current_itinerary_end_point"
@@ -162,7 +152,7 @@
<androidx.constraintlayout.widget.Group
android:id="@+id/goutp_show_routing_info"
app:constraint_referenced_ids="actv_end_routing,actv_submit_task,actv_current_itinerary_end_name,actv_time_end,actv_distance_end,actv_current_itinerary_start_name,aciv_current_itinerary_end_point,v_line_current_start_end,aciv_current_itinerary_start_point,v_bg_itinerary_info,actv_routing_name,naviToStart"
app:constraint_referenced_ids="actv_end_routing,actv_submit_task,actv_current_itinerary_end_name,actv_distance_end,actv_current_itinerary_start_name,aciv_current_itinerary_end_point,v_line_current_start_end,aciv_current_itinerary_start_point,v_bg_itinerary_info,actv_routing_name,naviToStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

View File

@@ -3,7 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
tools:background="@drawable/shape_itinerary_bg_default"
xmlns:tools="http://schemas.android.com/tools">

View File

@@ -2,7 +2,8 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
xmlns:tools="http://schemas.android.com/tools"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">

View File

@@ -2,9 +2,20 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_962"
android:layout_height="@dimen/dp_1047"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/taxi_biz_bg">
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_bg"
android:src="@drawable/taxi_biz_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="@dimen/dp_167"
android:scaleType="fitXY"
android:layout_width="@dimen/dp_962"
android:layout_height="@dimen/dp_0"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_h_top"
@@ -41,15 +52,19 @@
app:layout_constraintTop_toTopOf="@+id/guideline_h_top"
app:layout_constraintStart_toStartOf="@+id/guideline_v_left"
app:layout_constraintEnd_toEndOf="@+id/guideline_v_right"
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
android:layout_marginBottom="@dimen/dp_60"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"/>
android:layout_height="0dp"/>
<com.mogo.och.unmanned.taxi.ui.routing.RoutingSwitchView
android:id="@+id/routingSwitchView"
app:layout_constraintTop_toTopOf="@+id/guideline_h_top"
app:layout_constraintStart_toStartOf="@+id/guideline_v_left"
app:layout_constraintEnd_toEndOf="@+id/guideline_v_right"
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
android:layout_marginBottom="@dimen/dp_60"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"/>
android:layout_height="0dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -2,7 +2,8 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_880"
android:layout_height="@dimen/dp_966"
android:layout_height="match_parent"
tools:layout_height="@dimen/dp_966"
xmlns:tools="http://schemas.android.com/tools"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">

View File

@@ -59,11 +59,15 @@ class V2NTest {
delay(millis)
}
FunctionBuildConfig.v2nTotalSwitch = true
runCatching {
val map = HashMap<String, Boolean>().also {
it["f1"] = FunctionBuildConfig.v2nTotalSwitch
val isDriver = arguments.getString("isDriver", "1").toInt() == 1
val times = arguments.getString("times", "100").toInt()
if (isDriver) {
runCatching {
val map = HashMap<String, Boolean>().also {
it["f1"] = FunctionBuildConfig.v2nTotalSwitch
}
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray())
}
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray())
}
delay(2000)
val targetX = arguments.getString("lon", "0").toDouble()
@@ -83,10 +87,43 @@ class V2NTest {
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
val point = DrivingDirectionUtils.calculateNewPoint(car.longitude, car.latitude, car.heading , eventDistance)
val polygon = generateTriangle(point.first, point.second, car.heading, r * 1e-5)
val data = TrackedObject.getDefaultInstance().toBuilder().setType(501).setLongitude(point.first).setLatitude(point.second).setAltitude(0.0).setSystemTime(System.currentTimeMillis() * 1.0 / 1000).setSatelliteTime(1.0).setUuid(10).setCarID("1").setColor("#ffffff").setHeading(car.heading).setSpeed(0.0).setDrawLevel(1).setDriverTime(1.0).setCameraIp("172.18.7.40").setVideoUrl("").addAllImageUrl(Collections.singletonList("http://www.baidu.com")).addAllPolygon(polygon.map { Location.getDefaultInstance().toBuilder().setLongitude(it.first).setLatitude(it.second).setAltitude(0.0).setHeading(0.0).setStation(false).build() }).setDetectStartTime(System.currentTimeMillis()).setV2XUuid("xxxxx1").setStrUuid("xxxxx2").build()
var data = TrackedObject.getDefaultInstance().toBuilder()
.setType(501)
.setLongitude(point.first)
.setLatitude(point.second)
.setAltitude(0.0)
.setSystemTime(System.currentTimeMillis() * 1.0 / 1000)
.setSatelliteTime(1.0)
.setUuid(10)
.setCarID("1")
.setColor("#ffffff")
.setHeading(car.heading)
.setSpeed(0.0)
.setDrawLevel(1)
.setDriverTime(1.0)
.setCameraIp("172.18.7.40")
.setVideoUrl("")
.addTrackedSource(MessagePad.TrackedSource.getDefaultInstance().toBuilder().setSource(2).addSubSource(MessagePad.SubSource.getDefaultInstance().toBuilder().setSource(1)).build())
.addAllImageUrl(Collections.singletonList("http://www.baidu.com"))
.addAllPolygon(polygon.map { Location.getDefaultInstance().toBuilder().setLongitude(it.first).setLatitude(it.second).setAltitude(0.0).setHeading(0.0).setStation(false).build() })
.setDetectStartTime(System.currentTimeMillis())
.setV2XUuid("xxxxx1")
.setStrUuid("xxxxx2")
.build()
val trafficData = Collections.singletonList(data)
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_AI_ROAD_SHI_GONG, data.toByteArray())
CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate(trafficData)
if (isDriver) {
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_AI_ROAD_SHI_GONG, data.toByteArray())
}
var cur = 0
while (cur < times) {
cur ++
FunctionBuildConfig.v2nTotalSwitch = true
FunctionBuildConfig.v2nNewLinkedToPNC = true
FunctionBuildConfig.v2xTotalSwitch = true
CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate(trafficData)
data = data.newBuilderForType().build()
delay(50)
}
delay(TimeUnit.MINUTES.toMillis(10))
}

View File

@@ -55,7 +55,7 @@ class V2XAiRoadEventMarker {
.set3DMode(true)
.isUseGps(true)
.icon3DRes(R.raw.taxi_sanjiaozui)
.scale(1.0f)
.scale(0.5f)
.build().let {
CallerMapUIServiceManager.getOverlayManager()?.showOrUpdatePoint(it)
}?.also {

View File

@@ -1263,9 +1263,9 @@ class OperatePanelLayout : LinearLayout {
prevCheckedKeyForFusionMode?.takeIf { it != KEY_ALL_MERGE_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
prevCheckedKeyForFusionMode = KEY_ALL_MERGE_MODE
changeValue(it, false)
}
prevCheckedKeyForFusionMode = KEY_ALL_MERGE_MODE
hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode)
clickEventAnalytics("融合模式", true)
CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode)
@@ -1283,9 +1283,9 @@ class OperatePanelLayout : LinearLayout {
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BLIND_AREA_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
prevCheckedKeyForFusionMode = KEY_BLIND_AREA_MODE
changeValue(it, false)
}
prevCheckedKeyForFusionMode = KEY_BLIND_AREA_MODE
hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode)
clickEventAnalytics("融合模式", true)
CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode)
@@ -1303,9 +1303,9 @@ class OperatePanelLayout : LinearLayout {
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BEYOND_VISUAL_RANGE_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
prevCheckedKeyForFusionMode = KEY_BEYOND_VISUAL_RANGE_MODE
changeValue(it, false)
}
prevCheckedKeyForFusionMode = KEY_BEYOND_VISUAL_RANGE_MODE
hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode)
clickEventAnalytics("融合模式", true)
CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode)
@@ -1323,9 +1323,9 @@ class OperatePanelLayout : LinearLayout {
prevCheckedKeyForFusionMode?.takeIf { it != KEY_TRANSPARENT_TRANSFER_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
prevCheckedKeyForFusionMode = KEY_TRANSPARENT_TRANSFER_MODE
changeValue(it, false)
}
prevCheckedKeyForFusionMode = KEY_TRANSPARENT_TRANSFER_MODE
hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode)
clickEventAnalytics("融合模式", true)
CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode)
@@ -1343,9 +1343,9 @@ class OperatePanelLayout : LinearLayout {
prevCheckedKeyForFusionMode?.takeIf { it != KEY_PURE_OBU_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
prevCheckedKeyForFusionMode = KEY_PURE_OBU_MODE
changeValue(it, false)
}
prevCheckedKeyForFusionMode = KEY_PURE_OBU_MODE
hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode)
clickEventAnalytics("融合模式", true)
CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode)

View File

@@ -56,8 +56,8 @@ class ColdStartView @JvmOverloads constructor(
companion object {
const val TAG = "ColdStartView"
const val LOAD_SSM_WAITING_TIME = 60000L //SSM加载超时等待时间
const val COLD_START_WAITING_TIME = 300000L //冷启动超时等待时间
const val LOAD_SSM_WAITING_TIME = 180000L //SSM加载超时等待时间
const val COLD_START_WAITING_TIME = 600000L //冷启动超时等待时间
}
private var ipcConnectStatus = false //连接域控状态,默认是未连接

View File

@@ -19,10 +19,11 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clBoneBiz"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_385"
android:layout_marginStart="@dimen/dp_19"
android:elevation="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View File

@@ -18,7 +18,7 @@ class CrossRoad(private val delayTime: Long = 0, unit: TimeUnit = TimeUnit.SECON
override fun getVisualAngleMode(): VisualAngleMode {
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
return VisualAngleMode.MAP_STYLE_VR_ANGLE_CROSS
return VisualAngleMode.MAP_STYLE_VR_ANGLE_CROSS_B2_PASSENGER
}
return MAP_STYLE_VR_ANGLE_CROSS_NEW
}

View File

@@ -83,7 +83,7 @@ MOGO_TELEMATIC_VERSION=1.4.7.42
MOGO_SKIN_VERSION=1.4.7.49.11-debug
######## MogoAiCloudSDK Version ########
# 自研地图
MAP_SDK_VERSION=3.4.1.16
MAP_SDK_VERSION=3.4.1.17
MAP_SDK_DATA_VERSION=1.0.0.9
MAP_SDK_OPERATION_VERSION=1.1.4.1
# websocket

View File

@@ -62,8 +62,14 @@ enum class VisualAngleMode(val code: Int) : IMogoMapVisualAngle {
/**
* 十字路口视角-新版
* 适用于其它非B2乘客屏的车型
*/
MAP_STYLE_VR_ANGLE_CROSS_NEW(12);
MAP_STYLE_VR_ANGLE_CROSS_NEW(12),
/**
* 十字路口视角-B2乘客
*/
MAP_STYLE_VR_ANGLE_CROSS_B2_PASSENGER(13);
override val isLongSight: Boolean
get() = code == MODE_LONG_SIGHT.code