Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4ba125d authored by Brian Carlstrom's avatar Brian Carlstrom
Browse files

Cleanup Bluetooth AdapterService JNI

I was here to force the version to be initialized as required in the call to AttachCurrentThread.

Probably JNI_ABORT should be used in ReleaseByteArrayElements to avoid copy back, but 0 is semantically what was passed before.

Change-Id: I812b0785011385b033e67012faa08d113418f01e
parent 09067d92
Loading
Loading
Loading
Loading
+80 −81
Original line number Diff line number Diff line
@@ -428,8 +428,7 @@ static void callback_thread_event(bt_cb_thread_evt event) {
    if (event  == ASSOCIATE_JVM) {
        JavaVMAttachArgs args;
        char name[] = "BT Service Callback Thread";
        //TODO(BT)
        //args.version = nat->envVer;
        args.version = JNI_VERSION_1_6;
        args.name = name;
        args.group = NULL;
        vm->AttachCurrentThread(&callbackEnv, &args);
@@ -602,7 +601,7 @@ static jboolean createBondNative(JNIEnv* env, jobject obj, jbyteArray address) {
    }

    int ret = sBluetoothInterface->create_bond((bt_bdaddr_t *)addr);
    env->ReleaseByteArrayElements(address, addr, NULL);
    env->ReleaseByteArrayElements(address, addr, 0);
    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;

    return result;
@@ -622,7 +621,7 @@ static jboolean removeBondNative(JNIEnv* env, jobject obj, jbyteArray address) {
    }

    int ret = sBluetoothInterface->remove_bond((bt_bdaddr_t *)addr);
    env->ReleaseByteArrayElements(address, addr, NULL);
    env->ReleaseByteArrayElements(address, addr, 0);
    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;

    return result;
@@ -642,7 +641,7 @@ static jboolean cancelBondNative(JNIEnv* env, jobject obj, jbyteArray address) {
    }

    int ret = sBluetoothInterface->cancel_bond((bt_bdaddr_t *)addr);
    env->ReleaseByteArrayElements(address, addr, NULL);
    env->ReleaseByteArrayElements(address, addr, 0);
    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;

    return result;
@@ -666,15 +665,15 @@ static jboolean pinReplyNative(JNIEnv *env, jobject obj, jbyteArray address, jbo
        pinPtr = env->GetByteArrayElements(pinArray, NULL);
        if (pinPtr == NULL) {
           jniThrowIOException(env, EINVAL);
           env->ReleaseByteArrayElements(address, addr, NULL);
           env->ReleaseByteArrayElements(address, addr, 0);
           return result;
        }
    }

    int ret = sBluetoothInterface->pin_reply((bt_bdaddr_t*)addr, accept, len,
                                              (bt_pin_code_t *) pinPtr);
    env->ReleaseByteArrayElements(address, addr, NULL);
    env->ReleaseByteArrayElements(pinArray, pinPtr, NULL);
    env->ReleaseByteArrayElements(address, addr, 0);
    env->ReleaseByteArrayElements(pinArray, pinPtr, 0);
    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;

    return result;
@@ -696,7 +695,7 @@ static jboolean sspReplyNative(JNIEnv *env, jobject obj, jbyteArray address,

    int ret = sBluetoothInterface->ssp_reply((bt_bdaddr_t *)addr,
         (bt_ssp_variant_t) type, accept, passkey);
    env->ReleaseByteArrayElements(address, addr, NULL);
    env->ReleaseByteArrayElements(address, addr, 0);
    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;

    return result;
@@ -716,7 +715,7 @@ static jboolean setAdapterPropertyNative(JNIEnv *env, jobject obj, jint type, jb
    prop.val = val;

    int ret = sBluetoothInterface->set_adapter_property(&prop);
    env->ReleaseByteArrayElements(value, val, NULL);
    env->ReleaseByteArrayElements(value, val, 0);
    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;

    return result;
@@ -761,7 +760,7 @@ static jboolean getDevicePropertyNative(JNIEnv *env, jobject obj, jbyteArray add

    int ret = sBluetoothInterface->get_remote_device_property((bt_bdaddr_t *)addr,
                                                              (bt_property_type_t) type);
    env->ReleaseByteArrayElements(address, addr, NULL);
    env->ReleaseByteArrayElements(address, addr, 0);
    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;

    return result;
@@ -783,7 +782,7 @@ static jboolean setDevicePropertyNative(JNIEnv *env, jobject obj, jbyteArray add

    addr = env->GetByteArrayElements(address, NULL);
    if (addr == NULL) {
        env->ReleaseByteArrayElements(value, val, NULL);
        env->ReleaseByteArrayElements(value, val, 0);
        jniThrowIOException(env, EINVAL);
        return result;
    }
@@ -795,8 +794,8 @@ static jboolean setDevicePropertyNative(JNIEnv *env, jobject obj, jbyteArray add
    prop.val = val;

    int ret = sBluetoothInterface->set_remote_device_property((bt_bdaddr_t *)addr, &prop);
    env->ReleaseByteArrayElements(value, val, NULL);
    env->ReleaseByteArrayElements(address, addr, NULL);
    env->ReleaseByteArrayElements(value, val, 0);
    env->ReleaseByteArrayElements(address, addr, 0);

    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;

@@ -817,7 +816,7 @@ static jboolean getRemoteServicesNative(JNIEnv *env, jobject obj, jbyteArray add
    }

    int ret = sBluetoothInterface->get_remote_services((bt_bdaddr_t *)addr);
    env->ReleaseByteArrayElements(address, addr, NULL);
    env->ReleaseByteArrayElements(address, addr, 0);
    result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;
    return result;
}
@@ -828,7 +827,7 @@ static int connectSocketNative(JNIEnv *env, jobject object, jbyteArray address,
    int socket_fd;
    bt_status_t status;

    if (!sBluetoothSocketInterface) return NULL;
    if (!sBluetoothSocketInterface) return -1;

    addr = env->GetByteArrayElements(address, NULL);
    if (!addr) {
@@ -871,7 +870,7 @@ static int createSocketChannelNative(JNIEnv *env, jobject object, jint type,
    int socket_fd;
    bt_status_t status;

    if (!sBluetoothSocketInterface) return NULL;
    if (!sBluetoothSocketInterface) return -1;

    service_name = env->GetStringUTFChars(name_str, NULL);