refactor: improve lpac-download init function (lpac-jni) #168
5 changed files with 32 additions and 47 deletions
|
@ -13,8 +13,7 @@ jmethodID method_http_transmit;
|
|||
jfieldID field_resp_rcode;
|
||||
jfieldID field_resp_data;
|
||||
|
||||
void interface_wrapper_init() {
|
||||
LPAC_JNI_SETUP_ENV;
|
||||
void interface_wrapper_init(JNIEnv *env) {
|
||||
jclass apdu_class = (*env)->FindClass(env, "net/typeblog/lpac_jni/ApduInterface");
|
||||
method_apdu_connect = (*env)->GetMethodID(env, apdu_class, "connect", "()V");
|
||||
method_apdu_disconnect = (*env)->GetMethodID(env, apdu_class, "disconnect", "()V");
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include <euicc/interface.h>
|
||||
#include "lpac-jni.h"
|
||||
|
||||
void interface_wrapper_init();
|
||||
void interface_wrapper_init(JNIEnv *env);
|
||||
|
||||
extern struct euicc_apdu_interface lpac_jni_apdu_interface;
|
||||
extern struct euicc_http_interface lpac_jni_http_interface;
|
||||
|
|
|
@ -13,49 +13,34 @@ jobject download_state_finalizing;
|
|||
|
||||
jmethodID on_state_update;
|
||||
|
||||
void lpac_download_init() {
|
||||
LPAC_JNI_SETUP_ENV;
|
||||
#define DOWNLOAD_CALLBACK_CLASS "net/typeblog/lpac_jni/ProfileDownloadCallback"
|
||||
#define DOWNLOAD_STATE_CLASS DOWNLOAD_CALLBACK_CLASS "$DownloadState"
|
||||
|
||||
jclass download_state_class = (*env)->FindClass(env,
|
||||
"net/typeblog/lpac_jni/ProfileDownloadCallback$DownloadState");
|
||||
jfieldID download_state_preparing_field = (*env)->GetStaticFieldID(env, download_state_class,
|
||||
"Preparing",
|
||||
"Lnet/typeblog/lpac_jni/ProfileDownloadCallback$DownloadState;");
|
||||
download_state_preparing = (*env)->GetStaticObjectField(env, download_state_class,
|
||||
download_state_preparing_field);
|
||||
download_state_preparing = (*env)->NewGlobalRef(env, download_state_preparing);
|
||||
jfieldID download_state_connecting_field = (*env)->GetStaticFieldID(env, download_state_class,
|
||||
"Connecting",
|
||||
"Lnet/typeblog/lpac_jni/ProfileDownloadCallback$DownloadState;");
|
||||
download_state_connecting = (*env)->GetStaticObjectField(env, download_state_class,
|
||||
download_state_connecting_field);
|
||||
download_state_connecting = (*env)->NewGlobalRef(env, download_state_connecting);
|
||||
jfieldID download_state_authenticating_field = (*env)->GetStaticFieldID(env,
|
||||
download_state_class,
|
||||
"Authenticating",
|
||||
"Lnet/typeblog/lpac_jni/ProfileDownloadCallback$DownloadState;");
|
||||
download_state_authenticating = (*env)->GetStaticObjectField(env, download_state_class,
|
||||
download_state_authenticating_field);
|
||||
download_state_authenticating = (*env)->NewGlobalRef(env, download_state_authenticating);
|
||||
jfieldID download_state_downloading_field = (*env)->GetStaticFieldID(env, download_state_class,
|
||||
"Downloading",
|
||||
"Lnet/typeblog/lpac_jni/ProfileDownloadCallback$DownloadState;");
|
||||
download_state_downloading = (*env)->GetStaticObjectField(env, download_state_class,
|
||||
download_state_downloading_field);
|
||||
download_state_downloading = (*env)->NewGlobalRef(env, download_state_downloading);
|
||||
jfieldID download_state_finalizng_field = (*env)->GetStaticFieldID(env, download_state_class,
|
||||
"Finalizing",
|
||||
"Lnet/typeblog/lpac_jni/ProfileDownloadCallback$DownloadState;");
|
||||
download_state_finalizing = (*env)->GetStaticObjectField(env, download_state_class,
|
||||
download_state_finalizng_field);
|
||||
download_state_finalizing = (*env)->NewGlobalRef(env, download_state_finalizing);
|
||||
|
||||
jclass download_callback_class = (*env)->FindClass(env,
|
||||
"net/typeblog/lpac_jni/ProfileDownloadCallback");
|
||||
on_state_update = (*env)->GetMethodID(env, download_callback_class, "onStateUpdate",
|
||||
"(Lnet/typeblog/lpac_jni/ProfileDownloadCallback$DownloadState;)V");
|
||||
static jobject bind_static_field(JNIEnv *env, jclass clazz, const char *name, const char *sig) {
|
||||
jfieldID field = (*env)->GetStaticFieldID(env, clazz, name, sig);
|
||||
jobject bound = (*env)->GetStaticObjectField(env, clazz, field);
|
||||
return (*env)->NewGlobalRef(env, bound);
|
||||
}
|
||||
|
||||
#define BIND_DOWNLOAD_STATE_STATIC_FIELD(NAME, FIELD) \
|
||||
download_state_##NAME = bind_static_field(env, download_state_class, FIELD, "L" DOWNLOAD_STATE_CLASS ";")
|
||||
|
||||
void lpac_download_init(JNIEnv *env) {
|
||||
jclass download_state_class = (*env)->FindClass(env, DOWNLOAD_STATE_CLASS);
|
||||
|
||||
BIND_DOWNLOAD_STATE_STATIC_FIELD(preparing, "Preparing");
|
||||
BIND_DOWNLOAD_STATE_STATIC_FIELD(connecting, "Connecting");
|
||||
BIND_DOWNLOAD_STATE_STATIC_FIELD(authenticating, "Authenticating");
|
||||
BIND_DOWNLOAD_STATE_STATIC_FIELD(downloading, "Downloading");
|
||||
BIND_DOWNLOAD_STATE_STATIC_FIELD(finalizing, "Finalizing");
|
||||
|
||||
jclass download_callback_class = (*env)->FindClass(env, DOWNLOAD_CALLBACK_CLASS);
|
||||
on_state_update = (*env)->GetMethodID(
|
||||
env, download_callback_class, "onStateUpdate", "(L" DOWNLOAD_STATE_CLASS ";)V");
|
||||
}
|
||||
|
||||
#undef BIND_DOWNLOAD_STATE_STATIC_FIELD
|
||||
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_net_typeblog_lpac_1jni_LpacJni_downloadProfile(JNIEnv *env, jobject thiz, jlong handle,
|
||||
jstring smdp, jstring matching_id,
|
||||
|
|
|
@ -3,4 +3,4 @@
|
|||
#include <jni.h>
|
||||
#include "lpac-jni.h"
|
||||
|
||||
void lpac_download_init();
|
||||
void lpac_download_init(JNIEnv *env);
|
|
@ -19,10 +19,11 @@ jmethodID string_constructor;
|
|||
|
||||
jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||
jvm = vm;
|
||||
interface_wrapper_init();
|
||||
lpac_download_init();
|
||||
|
||||
LPAC_JNI_SETUP_ENV;
|
||||
|
||||
interface_wrapper_init(env);
|
||||
lpac_download_init(env);
|
||||
|
||||
string_class = (*env)->FindClass(env, "java/lang/String");
|
||||
string_class = (*env)->NewGlobalRef(env, string_class);
|
||||
string_constructor = (*env)->GetMethodID(env, string_class, "<init>",
|
||||
|
|
Loading…
Add table
Reference in a new issue