|
|
@@ -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)
|
|
|
}
|
|
|
}
|