11package io.github.developrofthings.kespl
22
3+ import io.github.developrofthings.kespl.packet.data.Version
4+ import io.github.developrofthings.kespl.packet.data.asDouble
35import io.github.developrofthings.kespl.utilities.V1_GEN2_AUTO_MUTE_SETTING_VERSION
46import io.github.developrofthings.kespl.utilities.V1_GEN2_PHOTO_RADAR_VERSION
57import io.github.developrofthings.kespl.utilities.V1_GEN_2_PLATFORM_BASELINE_VERSION
68
7- data class V1CapabilityInfo (
9+ @ConsistentCopyVisibility
10+ data class V1CapabilityInfo private constructor(
811 val supportsDefaultSweepRequest : Boolean ,
912 val supportsReqDefaultSweepDefinitions : Boolean ,
1013 // 4.1018
@@ -38,37 +41,42 @@ data class V1CapabilityInfo(
3841 val supportsTemporaryVolume : Boolean ,
3942 val supportsDisplayActiveBit : Boolean ,
4043 val supportsPhotoRadar : Boolean ,
44+ ) {
45+ constructor (version: Double ) : this (
46+ supportsDefaultSweepRequest = version >= 3.8920 ,
47+ supportsReqDefaultSweepDefinitions = version >= 3.8950 ,
48+ isGen2 = version >= V1_GEN_2_PLATFORM_BASELINE_VERSION ,
49+ hasInfDisplayDataMuteAndBtIndicator = version >= V1_GEN_2_PLATFORM_BASELINE_VERSION ,
50+ supportsKAndKaInEuroAndUsa = version >= V1_GEN_2_PLATFORM_BASELINE_VERSION ,
51+ supportsVolumeControl = version >= 4.1027 ,
52+ supportsDoubleTap = version >= 4.1028 ,
53+ hasInfDisplayDataLogicMode = version >= 4.1028 ,
54+ hasInfDisplayDataMuteInformation = version >= 4.1028 ,
55+ hasInfDisplayDataVolume = version >= 4.1028 ,
56+ supportsFastLaserDetectionUserSetting = version >= 4.1031 ,
57+ supportsKaAlwaysPriorityUserSetting = version >= 4.1031 ,
58+ unmutingAlertsAffectsLaser = version >= 4.1031 ,
59+ hasAlertDataJunkBit = version >= 4.1032 ,
60+ supportsMainDisplayRequestAux0Byte = version >= 4.1032 ,
61+ supportsKaThresholdUserSetting = version >= 4.1032 ,
62+ supportStartupSequenceUserSetting = version >= 4.1035 ,
63+ supportsRestingDisplayUserSetting = version >= 4.1035 ,
64+ supportsAbortAudioDelay = version >= 4.1035 ,
65+ supportsAutoMuteUserSettings = version >= V1_GEN2_AUTO_MUTE_SETTING_VERSION ,
66+ supportsDisplayVolumeRequest = version >= V1_GEN2_AUTO_MUTE_SETTING_VERSION ,
67+ supportsAllVolumesRequest = version >= V1_GEN2_PHOTO_RADAR_VERSION ,
68+ supportsTemporaryVolume = version >= V1_GEN2_PHOTO_RADAR_VERSION ,
69+ supportsDisplayActiveBit = version >= V1_GEN2_PHOTO_RADAR_VERSION ,
70+ supportsPhotoRadar = version >= V1_GEN2_PHOTO_RADAR_VERSION ,
71+ )
72+
73+ constructor (version: Version ) : this (
74+ version = version.takeIf {
75+ it.contains(" V" , ignoreCase = true ) && it.length == 7
76+ }?.asDouble() ? : 0.0
77+ )
4178
42- ) {
4379 companion object {
44- val DEFAULT : V1CapabilityInfo = determineCapabilities (0.0 )
80+ val DEFAULT : V1CapabilityInfo = V1CapabilityInfo (0.0 )
4581 }
46- }
47-
48- fun determineCapabilities (version : Double ): V1CapabilityInfo = V1CapabilityInfo (
49- supportsDefaultSweepRequest = version >= 3.8920 ,
50- supportsReqDefaultSweepDefinitions = version >= 3.8950 ,
51- isGen2 = version >= V1_GEN_2_PLATFORM_BASELINE_VERSION ,
52- hasInfDisplayDataMuteAndBtIndicator = version >= V1_GEN_2_PLATFORM_BASELINE_VERSION ,
53- supportsKAndKaInEuroAndUsa = version >= V1_GEN_2_PLATFORM_BASELINE_VERSION ,
54- supportsVolumeControl = version >= 4.1027 ,
55- supportsDoubleTap = version >= 4.1028 ,
56- hasInfDisplayDataLogicMode = version >= 4.1028 ,
57- hasInfDisplayDataMuteInformation = version >= 4.1028 ,
58- hasInfDisplayDataVolume = version >= 4.1028 ,
59- supportsFastLaserDetectionUserSetting = version >= 4.1031 ,
60- supportsKaAlwaysPriorityUserSetting = version >= 4.1031 ,
61- unmutingAlertsAffectsLaser = version >= 4.1031 ,
62- hasAlertDataJunkBit = version >= 4.1032 ,
63- supportsMainDisplayRequestAux0Byte = version >= 4.1032 ,
64- supportsKaThresholdUserSetting = version >= 4.1032 ,
65- supportStartupSequenceUserSetting = version >= 4.1035 ,
66- supportsRestingDisplayUserSetting = version >= 4.1035 ,
67- supportsAbortAudioDelay = version >= 4.1035 ,
68- supportsAutoMuteUserSettings = version >= V1_GEN2_AUTO_MUTE_SETTING_VERSION ,
69- supportsDisplayVolumeRequest = version >= V1_GEN2_AUTO_MUTE_SETTING_VERSION ,
70- supportsAllVolumesRequest = version >= V1_GEN2_PHOTO_RADAR_VERSION ,
71- supportsTemporaryVolume = version >= V1_GEN2_PHOTO_RADAR_VERSION ,
72- supportsDisplayActiveBit = version >= V1_GEN2_PHOTO_RADAR_VERSION ,
73- supportsPhotoRadar = version >= V1_GEN2_PHOTO_RADAR_VERSION ,
74- )
82+ }
0 commit comments