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

Commit ddcfe050 authored by Ganesh Ganapathi Batta's avatar Ganesh Ganapathi Batta Committed by Matthew Xie
Browse files

Add transport param to Connect APIs

Support for passing preferred transport for GATT connections as part of
Connect APIs

Change-Id: Ibeafb922aec954d1f2e693b422e264fbc87468f2
parent b5941a2b
Loading
Loading
Loading
Loading
+7 −7
Original line number Original line Diff line number Diff line
@@ -785,13 +785,13 @@ static void gattClientScanNative(JNIEnv* env, jobject object, jint clientIf, jbo
}
}


static void gattClientConnectNative(JNIEnv* env, jobject object, jint clientif,
static void gattClientConnectNative(JNIEnv* env, jobject object, jint clientif,
                                 jstring address, jboolean isDirect)
                                 jstring address, jboolean isDirect, jint transport)
{
{
    if (!sGattIf) return;
    if (!sGattIf) return;


    bt_bdaddr_t bda;
    bt_bdaddr_t bda;
    jstr2bdaddr(env, &bda, address);
    jstr2bdaddr(env, &bda, address);
    sGattIf->client->connect(clientif, &bda, isDirect);
    sGattIf->client->connect(clientif, &bda, isDirect, transport);
}
}


static void gattClientDisconnectNative(JNIEnv* env, jobject object, jint clientIf,
static void gattClientDisconnectNative(JNIEnv* env, jobject object, jint clientIf,
@@ -1127,7 +1127,7 @@ static void gattServerUnregisterAppNative(JNIEnv* env, jobject object, jint serv
}
}


static void gattServerConnectNative(JNIEnv *env, jobject object,
static void gattServerConnectNative(JNIEnv *env, jobject object,
                                 jint server_if, jstring address, jboolean is_direct)
                                 jint server_if, jstring address, jboolean is_direct, jint transport)
{
{
    if (!sGattIf) return;
    if (!sGattIf) return;


@@ -1135,7 +1135,7 @@ static void gattServerConnectNative(JNIEnv *env, jobject object,
    const char *c_address = env->GetStringUTFChars(address, NULL);
    const char *c_address = env->GetStringUTFChars(address, NULL);
    bd_addr_str_to_addr(c_address, bd_addr.address);
    bd_addr_str_to_addr(c_address, bd_addr.address);


    sGattIf->server->connect(server_if, &bd_addr, is_direct);
    sGattIf->server->connect(server_if, &bd_addr, is_direct, transport);
}
}


static void gattServerDisconnectNative(JNIEnv* env, jobject object, jint serverIf,
static void gattServerDisconnectNative(JNIEnv* env, jobject object, jint serverIf,
@@ -1306,7 +1306,7 @@ static JNINativeMethod sMethods[] = {
    {"gattClientRegisterAppNative", "(JJ)V", (void *) gattClientRegisterAppNative},
    {"gattClientRegisterAppNative", "(JJ)V", (void *) gattClientRegisterAppNative},
    {"gattClientUnregisterAppNative", "(I)V", (void *) gattClientUnregisterAppNative},
    {"gattClientUnregisterAppNative", "(I)V", (void *) gattClientUnregisterAppNative},
    {"gattClientScanNative", "(IZ)V", (void *) gattClientScanNative},
    {"gattClientScanNative", "(IZ)V", (void *) gattClientScanNative},
    {"gattClientConnectNative", "(ILjava/lang/String;Z)V", (void *) gattClientConnectNative},
    {"gattClientConnectNative", "(ILjava/lang/String;ZI)V", (void *) gattClientConnectNative},
    {"gattClientDisconnectNative", "(ILjava/lang/String;I)V", (void *) gattClientDisconnectNative},
    {"gattClientDisconnectNative", "(ILjava/lang/String;I)V", (void *) gattClientDisconnectNative},
    {"gattClientRefreshNative", "(ILjava/lang/String;)V", (void *) gattClientRefreshNative},
    {"gattClientRefreshNative", "(ILjava/lang/String;)V", (void *) gattClientRefreshNative},
    {"gattClientSearchServiceNative", "(IZJJ)V", (void *) gattClientSearchServiceNative},
    {"gattClientSearchServiceNative", "(IZJJ)V", (void *) gattClientSearchServiceNative},
@@ -1325,7 +1325,7 @@ static JNINativeMethod sMethods[] = {


    {"gattServerRegisterAppNative", "(JJ)V", (void *) gattServerRegisterAppNative},
    {"gattServerRegisterAppNative", "(JJ)V", (void *) gattServerRegisterAppNative},
    {"gattServerUnregisterAppNative", "(I)V", (void *) gattServerUnregisterAppNative},
    {"gattServerUnregisterAppNative", "(I)V", (void *) gattServerUnregisterAppNative},
    {"gattServerConnectNative", "(ILjava/lang/String;Z)V", (void *) gattServerConnectNative},
    {"gattServerConnectNative", "(ILjava/lang/String;ZI)V", (void *) gattServerConnectNative},
    {"gattServerDisconnectNative", "(ILjava/lang/String;I)V", (void *) gattServerDisconnectNative},
    {"gattServerDisconnectNative", "(ILjava/lang/String;I)V", (void *) gattServerDisconnectNative},
    {"gattServerAddServiceNative", "(IIIJJI)V", (void *) gattServerAddServiceNative},
    {"gattServerAddServiceNative", "(IIIJJI)V", (void *) gattServerAddServiceNative},
    {"gattServerAddIncludedServiceNative", "(III)V", (void *) gattServerAddIncludedServiceNative},
    {"gattServerAddIncludedServiceNative", "(III)V", (void *) gattServerAddIncludedServiceNative},
@@ -1339,7 +1339,7 @@ static JNINativeMethod sMethods[] = {
    {"gattServerSendResponseNative", "(IIIIII[BI)V", (void *) gattServerSendResponseNative},
    {"gattServerSendResponseNative", "(IIIIII[BI)V", (void *) gattServerSendResponseNative},


    {"gattSetAdvDataNative", "(IZZZIII[B[B[B)V", (void *) gattSetAdvDataNative},
    {"gattSetAdvDataNative", "(IZZZIII[B[B[B)V", (void *) gattSetAdvDataNative},
    {"gattTestNative", "(IJJLjava/lang/String;IIIII)V", (void *) gattTestNative},
    {"gattTestNative", "(IJJLjava/lang/String;IIIII)V", (void *) gattTestNative}
};
};


int register_com_android_bluetooth_gatt(JNIEnv* env)
int register_com_android_bluetooth_gatt(JNIEnv* env)
+14 −14
Original line number Original line Diff line number Diff line
@@ -311,10 +311,10 @@ public class GattService extends ProfileService {
            service.stopScan(appIf, isServer);
            service.stopScan(appIf, isServer);
        }
        }


        public void clientConnect(int clientIf, String address, boolean isDirect) {
        public void clientConnect(int clientIf, String address, boolean isDirect, int transport) {
            GattService service = getService();
            GattService service = getService();
            if (service == null) return;
            if (service == null) return;
            service.clientConnect(clientIf, address, isDirect);
            service.clientConnect(clientIf, address, isDirect, transport);
        }
        }


        public void clientDisconnect(int clientIf, String address) {
        public void clientDisconnect(int clientIf, String address) {
@@ -433,10 +433,10 @@ public class GattService extends ProfileService {
            service.unregisterServer(serverIf);
            service.unregisterServer(serverIf);
        }
        }


        public void serverConnect(int serverIf, String address, boolean isDirect) {
        public void serverConnect(int serverIf, String address, boolean isDirect, int transport) {
            GattService service = getService();
            GattService service = getService();
            if (service == null) return;
            if (service == null) return;
            service.serverConnect(serverIf, address, isDirect);
            service.serverConnect(serverIf, address, isDirect, transport);
        }
        }


        public void serverDisconnect(int serverIf, String address) {
        public void serverDisconnect(int serverIf, String address) {
@@ -573,10 +573,8 @@ public class GattService extends ProfileService {


        @Override
        @Override
        public void removeAdvManufacturerCodeAndData(int manufacturerCode) throws RemoteException {
        public void removeAdvManufacturerCodeAndData(int manufacturerCode) throws RemoteException {
            GattService service = getService();
            if (service == null) return;
            service.removeAdvManufacturerCodeAndData(manufacturerCode);
        }
        }

    };
    };


    /**************************************************************************
    /**************************************************************************
@@ -1094,11 +1092,11 @@ public class GattService extends ProfileService {
        gattClientUnregisterAppNative(clientIf);
        gattClientUnregisterAppNative(clientIf);
    }
    }


    void clientConnect(int clientIf, String address, boolean isDirect) {
    void clientConnect(int clientIf, String address, boolean isDirect, int transport) {
        enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
        enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");


        if (DBG) Log.d(TAG, "clientConnect() - address=" + address + ", isDirect=" + isDirect);
        if (DBG) Log.d(TAG, "clientConnect() - address=" + address + ", isDirect=" + isDirect);
        gattClientConnectNative(clientIf, address, isDirect);
        gattClientConnectNative(clientIf, address, isDirect, transport);
    }
    }


    void clientDisconnect(int clientIf, String address) {
    void clientDisconnect(int clientIf, String address) {
@@ -1655,11 +1653,11 @@ public class GattService extends ProfileService {
        gattServerUnregisterAppNative(serverIf);
        gattServerUnregisterAppNative(serverIf);
    }
    }


    void serverConnect(int serverIf, String address, boolean isDirect) {
    void serverConnect(int serverIf, String address, boolean isDirect, int transport) {
        enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
        enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");


        if (DBG) Log.d(TAG, "serverConnect() - address=" + address);
        if (DBG) Log.d(TAG, "serverConnect() - address=" + address);
        gattServerConnectNative(serverIf, address, isDirect);
        gattServerConnectNative(serverIf, address, isDirect,transport);
    }
    }


    void serverDisconnect(int serverIf, String address) {
    void serverDisconnect(int serverIf, String address) {
@@ -1776,6 +1774,7 @@ public class GattService extends ProfileService {
        }
        }
    }
    }



    /**************************************************************************
    /**************************************************************************
     * Private functions
     * Private functions
     *************************************************************************/
     *************************************************************************/
@@ -1889,7 +1888,8 @@ public class GattService extends ProfileService {
                }
                }
            }
            }
        } else {
        } else {
            gattServerStartServiceNative(serverIf, srvcHandle, (byte)2 /*BREDR/LE*/);
            gattServerStartServiceNative(serverIf, srvcHandle,
                (byte)BluetoothDevice.TRANSPORT_BREDR | BluetoothDevice.TRANSPORT_LE);
            finished = true;
            finished = true;
        }
        }


@@ -2020,7 +2020,7 @@ public class GattService extends ProfileService {
    private native void gattClientScanNative(int clientIf, boolean start);
    private native void gattClientScanNative(int clientIf, boolean start);


    private native void gattClientConnectNative(int clientIf, String address,
    private native void gattClientConnectNative(int clientIf, String address,
            boolean isDirect);
            boolean isDirect, int transport);


    private native void gattClientDisconnectNative(int clientIf, String address,
    private native void gattClientDisconnectNative(int clientIf, String address,
            int conn_id);
            int conn_id);
@@ -2093,7 +2093,7 @@ public class GattService extends ProfileService {
    private native void gattServerUnregisterAppNative(int serverIf);
    private native void gattServerUnregisterAppNative(int serverIf);


    private native void gattServerConnectNative(int server_if, String address,
    private native void gattServerConnectNative(int server_if, String address,
                                             boolean is_direct);
                                             boolean is_direct, int transport);


    private native void gattServerDisconnectNative(int serverIf, String address,
    private native void gattServerDisconnectNative(int serverIf, String address,
                                              int conn_id);
                                              int conn_id);