浏览代码

refactor: improve read vendors (#247)

Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/247
Co-authored-by: septs <github@septs.pw>
Co-committed-by: septs <github@septs.pw>
septs 3 月之前
父节点
当前提交
987eb4f71b
共有 1 个文件被更改,包括 11 次插入22 次删除
  1. 11 22
      app-common/src/main/java/im/angry/openeuicc/util/Vendors.kt

+ 11 - 22
app-common/src/main/java/im/angry/openeuicc/util/Vendors.kt

@@ -6,29 +6,22 @@ import im.angry.openeuicc.core.EuiccChannel
 import net.typeblog.lpac_jni.Version
 
 data class EuiccVendorInfo(
-    val skuName: String?,
-    val serialNumber: String?,
-    val bootloaderVersion: String?,
-    val firmwareVersion: String?,
+    val skuName: String? = null,
+    val serialNumber: String? = null,
+    val bootloaderVersion: String? = null,
+    val firmwareVersion: String? = null,
 )
 
-private val EUICC_VENDORS: Array<EuiccVendor> = arrayOf(EstkMe(), SimLink())
+private val EUICC_VENDORS: Array<EuiccVendor> = arrayOf(ESTKme(), SIMLink())
 
-fun EuiccChannel.tryParseEuiccVendorInfo(): EuiccVendorInfo? {
-    EUICC_VENDORS.forEach { vendor ->
-        vendor.tryParseEuiccVendorInfo(this@tryParseEuiccVendorInfo)?.let {
-            return it
-        }
-    }
-
-    return null
-}
+fun EuiccChannel.tryParseEuiccVendorInfo(): EuiccVendorInfo? =
+    EUICC_VENDORS.firstNotNullOfOrNull { it.tryParseEuiccVendorInfo(this) }
 
 interface EuiccVendor {
     fun tryParseEuiccVendorInfo(channel: EuiccChannel): EuiccVendorInfo?
 }
 
-private class EstkMe : EuiccVendor {
+private class ESTKme : EuiccVendor {
     companion object {
         private val PRODUCT_AID = "A06573746B6D65FFFFFFFFFFFF6D6774".decodeHex()
         private val PRODUCT_ATR_FPR = "estk.me".encodeToByteArray()
@@ -75,7 +68,7 @@ private class EstkMe : EuiccVendor {
     }
 }
 
-private class SimLink : EuiccVendor {
+private class SIMLink : EuiccVendor {
     companion object {
         private val EID_PATTERN = Regex("^89044045(84|21)67274948")
     }
@@ -86,6 +79,7 @@ private class SimLink : EuiccVendor {
         if (version == null || EID_PATTERN.find(eid, 0) == null) return null
         val versionName = when {
             // @formatter:off
+            version >= Version(37,  4,  3) -> "v3.2 (beta 1)"
             version >= Version(37,  1, 41) -> "v3.1 (beta 1)"
             version >= Version(36, 18,  5) -> "v3 (final)"
             version >= Version(36, 17, 39) -> "v3 (beta)"
@@ -102,11 +96,6 @@ private class SimLink : EuiccVendor {
             "9eSIM $versionName"
         }
 
-        return EuiccVendorInfo(
-            skuName = skuName,
-            serialNumber = null,
-            bootloaderVersion = null,
-            firmwareVersion = null
-        )
+        return EuiccVendorInfo(skuName = skuName)
     }
 }