diff --git a/.gitignore b/.gitignore index 7300ac44..f266b7fa 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ *.apk *.ap_ -# Files for the Dalvik VM +# Files for the ART/Dalvik VM *.dex # Java class files @@ -14,6 +14,7 @@ # Generated files bin/ gen/ +out/ # Gradle files .gradle/ @@ -31,23 +32,33 @@ proguard/ # Android Studio Navigation editor temp files .navigation/ -### Android Patch ### -gen-external-apklibs +# Android Studio captures folder +captures/ +# Intellij +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/dictionaries +.idea/libraries -### Java ### -*.class +# Keystore files +*.jks -# Mobile Tools for Java (J2ME) -.mtj.tmp/ +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild -# Package Files # -*.jar -*.war -*.ear +# Google Services (e.g. APIs or Firebase) +google-services.json -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +### Android Patch ### +gen-external-apklibs ### Intellij ### diff --git a/libaums/CMakeLists.txt b/libaums/CMakeLists.txt new file mode 100644 index 00000000..577e727e --- /dev/null +++ b/libaums/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.4.1) + +add_library( errno-lib + + # Sets the library as a shared library. + SHARED + + # Provides a relative path to your source file(s). + src/c/errno.c ) \ No newline at end of file diff --git a/libaums/build.gradle b/libaums/build.gradle index 6950aa27..9bff7d27 100644 --- a/libaums/build.gradle +++ b/libaums/build.gradle @@ -31,6 +31,12 @@ android { lintOptions { abortOnError false } + + externalNativeBuild { + cmake { + path "CMakeLists.txt" + } + } } dependencies { diff --git a/libaums/src/c/errno.c b/libaums/src/c/errno.c new file mode 100644 index 00000000..382e6d1d --- /dev/null +++ b/libaums/src/c/errno.c @@ -0,0 +1,14 @@ +#include +#include +#include + +JNIEXPORT jint JNICALL +Java_com_github_mjdev_libaums_ErrNo_getErrno(JNIEnv *env, jobject thiz) { + return errno; +} + +JNIEXPORT jstring JNICALL + Java_com_github_mjdev_libaums_ErrNo_getErrstr(JNIEnv *env, jobject thiz) { + char *error = strerror(errno); + return (*env)->NewStringUTF(env, error); +} \ No newline at end of file diff --git a/libaums/src/main/java/com/github/mjdev/libaums/ErrNo.java b/libaums/src/main/java/com/github/mjdev/libaums/ErrNo.java new file mode 100644 index 00000000..3799a2db --- /dev/null +++ b/libaums/src/main/java/com/github/mjdev/libaums/ErrNo.java @@ -0,0 +1,14 @@ +package com.github.mjdev.libaums; + +/** + * Created by magnusja on 5/19/17. + */ + +public class ErrNo { + static { + System.loadLibrary("errno-lib"); + } + + public static native int getErrno(); + public static native String getErrstr(); +} diff --git a/libaums/src/main/java/com/github/mjdev/libaums/usb/JellyBeanMr2Communication.java b/libaums/src/main/java/com/github/mjdev/libaums/usb/JellyBeanMr2Communication.java index 30c42811..bb481fc2 100644 --- a/libaums/src/main/java/com/github/mjdev/libaums/usb/JellyBeanMr2Communication.java +++ b/libaums/src/main/java/com/github/mjdev/libaums/usb/JellyBeanMr2Communication.java @@ -8,6 +8,9 @@ import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbEndpoint; import android.os.Build; +import android.system.ErrnoException; + +import com.github.mjdev.libaums.ErrNo; import java.io.IOException; import java.nio.ByteBuffer; @@ -39,7 +42,7 @@ public int bulkOutTransfer(ByteBuffer src) throws IOException { src.array(), src.position(), src.remaining(), TRANSFER_TIMEOUT); if (result == -1) { - throw new IOException("Could not write to device, result == -1"); + throw new IOException("Could not write to device, result == -1 errno " + ErrNo.getErrno()); } src.position(src.position() + result); @@ -52,7 +55,7 @@ public int bulkInTransfer(ByteBuffer dest) throws IOException { dest.array(), dest.position(), dest.remaining(), TRANSFER_TIMEOUT); if (result == -1) { - throw new IOException("Could not read from device, result == -1"); + throw new IOException("Could not read from device, result == -1 errno " + ErrNo.getErrno() + " " + ErrNo.getErrstr()); } dest.position(dest.position() + result);