ソースを参照

chore: uprev lpac & lpac-jni w/ breaking changes

Peter Cai 2 年 前
コミット
21b9eeb2ad

+ 0 - 1
libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/EuiccInfo2.kt

@@ -9,7 +9,6 @@ data class EuiccInfo2(
     val globalPlatformVersion: String,
     val globalPlatformVersion: String,
     val sasAccreditationNumber: String,
     val sasAccreditationNumber: String,
     val ppVersion: String,
     val ppVersion: String,
-    val installedApp: Int,
     val freeNvram: Int,
     val freeNvram: Int,
     val freeRam: Int,
     val freeRam: Int,
 )
 )

+ 22 - 20
libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileInfo.kt

@@ -1,7 +1,5 @@
 package net.typeblog.lpac_jni
 package net.typeblog.lpac_jni
 
 
-import java.lang.IllegalArgumentException
-
 data class LocalProfileInfo(
 data class LocalProfileInfo(
     val iccid: String,
     val iccid: String,
     val state: State,
     val state: State,
@@ -13,29 +11,33 @@ data class LocalProfileInfo(
 ) {
 ) {
     enum class State {
     enum class State {
         Enabled,
         Enabled,
-        Disabled
+        Disabled;
+
+        companion object {
+            @JvmStatic
+            fun fromString(str: String?) =
+                when (str?.lowercase()) {
+                    "enabled" -> Enabled
+                    "disabled" -> Disabled
+                    else -> Disabled
+                }
+        }
     }
     }
 
 
     enum class Clazz {
     enum class Clazz {
         Testing,
         Testing,
         Provisioning,
         Provisioning,
-        Operational
-    }
-
-    companion object {
-        fun stateFromString(state: String?): State =
-            if (state == "0") {
-                State.Disabled
-            } else {
-                State.Enabled
-            }
+        Operational;
 
 
-        fun classFromString(clazz: String?): Clazz =
-            when (clazz) {
-                "0" -> Clazz.Testing
-                "1" -> Clazz.Provisioning
-                "2" -> Clazz.Operational
-                else -> throw IllegalArgumentException("Unknown profile class $clazz")
-            }
+        companion object {
+            @JvmStatic
+            fun fromString(str: String?) =
+                when (str?.lowercase()) {
+                    "testing" -> Testing
+                    "provisioning" -> Provisioning
+                    "operational" -> Operational
+                    else -> Operational
+                }
+        }
     }
     }
 }
 }

+ 1 - 1
libs/lpac-jni/src/main/jni/lpac

@@ -1 +1 @@
-Subproject commit 29984b34220581ec3779876d964b41bb566851f5
+Subproject commit 76baec728ada6e9a7705bffc2e6bd68482acb839

+ 22 - 49
libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c

@@ -12,12 +12,11 @@ JavaVM  *jvm = NULL;
 jclass local_profile_info_class;
 jclass local_profile_info_class;
 jmethodID local_profile_info_constructor;
 jmethodID local_profile_info_constructor;
 
 
-jobject local_profile_state_enabled;
-jobject local_profile_state_disabled;
+jclass local_profile_state_class;
+jmethodID local_profile_state_from_string;
 
 
-jobject local_profile_class_testing;
-jobject local_profile_class_provisioning;
-jobject local_profile_class_operational;
+jclass local_profile_class_class;
+jmethodID local_profile_class_from_string;
 
 
 jstring empty_string;
 jstring empty_string;
 
 
@@ -42,28 +41,17 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
     local_profile_info_constructor = (*env)->GetMethodID(env, local_profile_info_class, "<init>",
     local_profile_info_constructor = (*env)->GetMethodID(env, local_profile_info_class, "<init>",
                                                          "(Ljava/lang/String;Lnet/typeblog/lpac_jni/LocalProfileInfo$State;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lnet/typeblog/lpac_jni/LocalProfileInfo$Clazz;)V");
                                                          "(Ljava/lang/String;Lnet/typeblog/lpac_jni/LocalProfileInfo$State;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lnet/typeblog/lpac_jni/LocalProfileInfo$Clazz;)V");
 
 
-    jclass local_profile_state_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/LocalProfileInfo$State");
-    jfieldID field_enabled = (*env)->GetStaticFieldID(env, local_profile_state_class, "Enabled", "Lnet/typeblog/lpac_jni/LocalProfileInfo$State;");
-    local_profile_state_enabled = (*env)->GetStaticObjectField(env, local_profile_state_class, field_enabled);
-    local_profile_state_enabled = (*env)->NewGlobalRef(env, local_profile_state_enabled);
-    jfieldID field_disabled = (*env)->GetStaticFieldID(env, local_profile_state_class, "Disabled", "Lnet/typeblog/lpac_jni/LocalProfileInfo$State;");
-    local_profile_state_disabled = (*env)->GetStaticObjectField(env, local_profile_state_class, field_disabled);
-    local_profile_state_disabled = (*env)->NewGlobalRef(env, local_profile_state_disabled);
-
-    jclass local_profile_class_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/LocalProfileInfo$Clazz");
-    jfieldID field_testing = (*env)->GetStaticFieldID(env, local_profile_class_class, "Testing", "Lnet/typeblog/lpac_jni/LocalProfileInfo$Clazz;");
-    local_profile_class_testing = (*env)->GetStaticObjectField(env, local_profile_class_class, field_testing);
-    local_profile_class_testing = (*env)->NewGlobalRef(env, local_profile_class_testing);
-    jfieldID field_provisioning = (*env)->GetStaticFieldID(env, local_profile_class_class, "Provisioning", "Lnet/typeblog/lpac_jni/LocalProfileInfo$Clazz;");
-    local_profile_class_provisioning = (*env)->GetStaticObjectField(env, local_profile_class_class, field_provisioning);
-    local_profile_class_provisioning = (*env)->NewGlobalRef(env, local_profile_class_provisioning);
-    jfieldID field_operational = (*env)->GetStaticFieldID(env, local_profile_class_class, "Operational", "Lnet/typeblog/lpac_jni/LocalProfileInfo$Clazz;");
-    local_profile_class_operational = (*env)->GetStaticObjectField(env, local_profile_class_class, field_operational);
-    local_profile_class_operational = (*env)->NewGlobalRef(env, local_profile_class_operational);
+    local_profile_state_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/LocalProfileInfo$State");
+    local_profile_state_class = (*env)->NewGlobalRef(env, local_profile_state_class);
+    local_profile_state_from_string = (*env)->GetStaticMethodID(env, local_profile_state_class, "fromString", "(Ljava/lang/String;)Lnet/typeblog/lpac_jni/LocalProfileInfo$State;");
+
+    local_profile_class_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/LocalProfileInfo$Clazz");
+    local_profile_class_class = (*env)->NewGlobalRef(env, local_profile_class_class);
+    local_profile_class_from_string = (*env)->GetStaticMethodID(env, local_profile_class_class, "fromString", "(Ljava/lang/String;)Lnet/typeblog/lpac_jni/LocalProfileInfo$Clazz;");
 
 
     euicc_info2_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/EuiccInfo2");
     euicc_info2_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/EuiccInfo2");
     euicc_info2_class = (*env)->NewGlobalRef(env, euicc_info2_class);
     euicc_info2_class = (*env)->NewGlobalRef(env, euicc_info2_class);
-    euicc_info2_constructor = (*env)->GetMethodID(env, euicc_info2_class, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;III)V");
+    euicc_info2_constructor = (*env)->GetMethodID(env, euicc_info2_class, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V");
 
 
     const char _unused[1];
     const char _unused[1];
     empty_string = (*env)->NewString(env, _unused, 0);
     empty_string = (*env)->NewString(env, _unused, 0);
@@ -153,30 +141,15 @@ Java_net_typeblog_lpac_1jni_LpacJni_es10cGetProfilesInfo(JNIEnv *env, jobject th
         jstring nickName = info[i].profileNickname ? toJString(env, info[i].profileNickname) : (*env)->NewLocalRef(env, empty_string);
         jstring nickName = info[i].profileNickname ? toJString(env, info[i].profileNickname) : (*env)->NewLocalRef(env, empty_string);
         jstring serviceProvider = info[i].serviceProviderName ? toJString(env, info[i].serviceProviderName) : (*env)->NewLocalRef(env, empty_string);
         jstring serviceProvider = info[i].serviceProviderName ? toJString(env, info[i].serviceProviderName) : (*env)->NewLocalRef(env, empty_string);
 
 
-        jobject state;
-        switch (info[i].profileState) {
-            case ES10C_PROFILE_INFO_STATE_ENABLED:
-                state = local_profile_state_enabled;
-                break;
-            case ES10C_PROFILE_INFO_STATE_DISABLED:
-                state = local_profile_state_disabled;
-                break;
-        }
-        state = (*env)->NewLocalRef(env, state);
-
-        jobject class;
-        switch (info[i].profileClass) {
-            case ES10C_PROFILE_INFO_CLASS_TEST:
-                class = local_profile_class_testing;
-                break;
-            case ES10C_PROFILE_INFO_CLASS_PROVISIONING:
-                class = local_profile_class_provisioning;
-                break;
-            case ES10C_PROFILE_INFO_CLASS_OPERATIONAL:
-                class = local_profile_class_operational;
-                break;
-        }
-        class = (*env)->NewLocalRef(env, class);
+        jobject state =
+                (*env)->CallStaticObjectMethod(env, local_profile_state_class,
+                                               local_profile_state_from_string,
+                                               toJString(env, info[i].profileState));
+
+        jobject class =
+                (*env)->CallStaticObjectMethod(env, local_profile_class_class,
+                                               local_profile_class_from_string,
+                                               toJString(env, info[i].profileClass));
 
 
         jobject jinfo = (*env)->NewObject(env, local_profile_info_class, local_profile_info_constructor,
         jobject jinfo = (*env)->NewObject(env, local_profile_info_class, local_profile_info_constructor,
                                           iccid, state, name, nickName, serviceProvider, isdpAid, class);
                                           iccid, state, name, nickName, serviceProvider, isdpAid, class);
@@ -266,7 +239,7 @@ Java_net_typeblog_lpac_1jni_LpacJni_es10cexGetEuiccInfo2(JNIEnv *env, jobject th
                             profile_version, sgp22_version, euicc_firmware_version,
                             profile_version, sgp22_version, euicc_firmware_version,
                             uicc_firmware_version, global_platform_version,
                             uicc_firmware_version, global_platform_version,
                             sas_accreditation_number, pp_version,
                             sas_accreditation_number, pp_version,
-                            info.installed_app, info.free_nvram, info.free_ram);
+                            info.free_nvram, info.free_ram);
 
 
     out:
     out:
     (*env)->DeleteLocalRef(env, profile_version);
     (*env)->DeleteLocalRef(env, profile_version);