Compare commits

...

3 commits

Author SHA1 Message Date
Peter Cai e493a8e885 EuiccChannelManager: Better logging about the APDU channel used 2023-12-02 13:40:55 -05:00
BeRealQueally 195861f24b fix: jni build on windows 2023-12-02 13:38:19 -05:00
Peter Cai 9b901ae6ce lpac-jni: NDK build with 4 threads 2023-12-02 13:33:13 -05:00
4 changed files with 38 additions and 5 deletions

View file

@ -81,10 +81,12 @@ open class EuiccChannelManager(protected val context: Context) {
var euiccChannel: EuiccChannel? = tryOpenEuiccChannelPrivileged(uiccInfo, channelInfo)
if (euiccChannel == null) {
Log.i(TAG, "Trying OMAPI for slot ${uiccInfo.slotIndex}")
try {
euiccChannel = OmapiChannel(seService!!, channelInfo)
} catch (e: IllegalArgumentException) {
// Failed
Log.w(TAG, "OMAPI APDU interface unavailable for slot ${uiccInfo.slotIndex}.")
}
}

View file

@ -13,12 +13,13 @@ class PrivilegedEuiccChannelManager(context: Context): EuiccChannelManager(conte
override fun tryOpenEuiccChannelPrivileged(uiccInfo: UiccCardInfo, channelInfo: EuiccChannelInfo): EuiccChannel? {
if (uiccInfo.isEuicc && !uiccInfo.isRemovable) {
Log.d(TAG, "Using TelephonyManager for slot ${uiccInfo.slotIndex}")
Log.i(TAG, "Trying TelephonyManager for slot ${uiccInfo.slotIndex}")
// TODO: On Tiramisu, we should also connect all available "ports" for MEP support
try {
return TelephonyManagerChannel(channelInfo, tm)
} catch (e: IllegalArgumentException) {
// Failed
Log.w(TAG, "TelephonyManager APDU interface unavailable for slot ${uiccInfo.slotIndex}, falling back")
}
}
return null

View file

@ -12,6 +12,12 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
externalNativeBuild {
ndkBuild {
arguments '-j4'
}
}
}
buildTypes {

View file

@ -1,14 +1,29 @@
LOCAL_PATH := $(call my-dir)
# function to find all *.c files under a directory
# Detecting the operating system
ifeq ($(OS),Windows_NT)
# Windows-specific commands
define all-c-files-under
$(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find $(1) -name "*.c" -and -not -name ".*" -maxdepth 1) \
)
$(patsubst .\%,%, \
$(shell cd $(LOCAL_PATH) & \
dir /b/s $(subst /,\,$(1))\*.c) \
)
endef
else
# UNIX commands
define all-c-files-under
$(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find $(1) -name "*.c" -and -not -name ".*" -maxdepth 1) \
)
endef
endif
include $(CLEAR_VARS)
LOCAL_SHORT_COMMANDS := true
APP_SHORT_COMMANDS := true
# libcjson
LOCAL_MODULE := lpac-cjson
LOCAL_SRC_FILES := \
@ -16,6 +31,9 @@ LOCAL_SRC_FILES := \
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SHORT_COMMANDS := true
APP_SHORT_COMMANDS := true
# libasn1c, the ASN parser component from lpac
LOCAL_MODULE := lpac-asn1c
LOCAL_C_INCLUDES := \
@ -26,6 +44,9 @@ LOCAL_CFLAGS := -DHAVE_CONFIG_H
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SHORT_COMMANDS := true
APP_SHORT_COMMANDS := true
# libeuicc component from lpac, which contains the actual implementation
LOCAL_MODULE := lpac-euicc
LOCAL_STATIC_LIBRARIES := lpac-asn1c lpac-cjson
@ -36,6 +57,9 @@ LOCAL_SRC_FILES := \
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SHORT_COMMANDS := true
APP_SHORT_COMMANDS := true
LOCAL_MODULE := lpac-jni
LOCAL_STATIC_LIBRARIES := lpac-euicc
LOCAL_C_INCLUDES := \