-/******************************************************************
+/* ****************************************************************
*
* Copyright 2014 Samsung Electronics All Rights Reserved.
*
******************************************************************/
/**
- * @file caleutils.h
- * @brief This file contains the APIs for BT LE communications.
+ * @file
+ * This file contains the APIs for BT LE communications.
*/
#ifndef CA_LE_UTILS_H_
#define CA_LE_UTILS_H_
#include "cacommon.h"
#include "cathreadpool.h"
+#include "cagattservice.h"
#include "uarraylist.h"
#include "jni.h"
{
#endif
+#define CA_LE_AUTO_CONNECT_FLAG 1
+#define CA_LE_CONNECTION_STATE 2
+#define CA_LE_SEND_STATE 3
+#define CA_LE_DESCRIPTOR_FOUND 4
+
/* Service UUID */
-static const char OIC_GATT_SERVICE_UUID[] = "ADE3D529-C784-4F63-A987-EB69F70EE816";
-static const char OIC_GATT_CHARACTERISTIC_REQUEST_UUID[] = "AD7B334F-4637-4B86-90B6-9D787F03D218";
-static const char OIC_GATT_CHARACTERISTIC_RESPONSE_UUID[] = "E9241982-4580-42C4-8831-95048216B256";
+static const char OIC_GATT_SERVICE_UUID[] = CA_GATT_SERVICE_UUID;
+static const char OIC_GATT_CHARACTERISTIC_REQUEST_UUID[] = CA_GATT_REQUEST_CHRC_UUID;
+static const char OIC_GATT_CHARACTERISTIC_RESPONSE_UUID[] = CA_GATT_RESPONSE_CHRC_UUID;
static const char OIC_GATT_CHARACTERISTIC_CONFIG_UUID[] = "00002902-0000-1000-8000-00805f9b34fb";
-static const uint32_t GATT_SUCCESS = 0;
+static const char CLASSPATH_BT_PROFILE[] = "android/bluetooth/BluetoothProfile";
+static const char CLASSPATH_BT_GATT[] = "android/bluetooth/BluetoothGatt";
+static const char CLASSPATH_BT_ADAPTER[] = "android/bluetooth/BluetoothAdapter";
+static const char CLASSPATH_BT_DEVICE[] = "android/bluetooth/BluetoothDevice";
+static const char CLASSPATH_BT_UUID[] = "java/util/UUID";
+static const char CLASSPATH_LE_SCANNER[] = "android/bluetooth/le/BluetoothLeScanner";
+static const char CLASSPATH_LE_SCANSETTINGS[] = "android/bluetooth/le/ScanSettings";
+
+static const char METHODID_OBJECTNONPARAM[] = "()Landroid/bluetooth/BluetoothAdapter;";
+static const char METHODID_BT_DEVICE[] = "()Landroid/bluetooth/BluetoothDevice;";
+static const char METHODID_BT_REMOTE_DEVICE[] = "(Ljava/lang/String;)Landroid/bluetooth/BluetoothDevice;";
+
+static const jint GATT_PROFILE = 7;
+static const jint GATT_SUCCESS = 0;
+
+static const jint BOND_BONDED = 12;
+static const jint BOND_BONDING = 11;
+static const jint BOND_NONE = 10;
+
+static const uint16_t STATE_CONNECTED = 3;
+static const uint16_t STATE_SERVICE_CONNECTED = 2;
+static const uint16_t STATE_DISCONNECTED = 1;
-static const uint32_t BOND_BONDED = 12;
-static const uint32_t BOND_BONDING = 11;
-static const uint32_t BOND_NONE = 10;
+static const uint16_t GATT_ERROR = 133;
+
+static const uint16_t STATE_SEND_NONE = 1;
+static const uint16_t STATE_SEND_SUCCESS = 2;
+static const uint16_t STATE_SEND_FAIL = 3;
+static const uint16_t STATE_SENDING = 4;
+static const uint16_t STATE_SEND_PREPARING = 5;
+static const uint16_t STATE_SEND_MTU_NEGO_SUCCESS = 6;
/**
- * @brief get uuid(jni object) from uuid(character)
- * @param env [IN] JNI interface pointer
- * @param uuid [IN] uuid(character)
- * @return uuid(jni object)
+ * get uuid(jni object) from uuid(character).
+ * @param[in] env JNI interface pointer.
+ * @param[in] uuid uuid(character).
+ * @return uuid(jni object).
*/
jobject CALEGetUuidFromString(JNIEnv *env, const char* uuid);
/**
- * @brief get parcel uuid object
- * @param env [IN] JNI interface pointer
- * @param uuid [IN] uuid (jni object)
- * @return parcel uuid object
+ * get parcel uuid object.
+ * @param[in] env JNI interface pointer.
+ * @param[in] uuid uuid (jni object).
+ * @return parcel uuid object.
*/
jobject CALEGetParcelUuid(JNIEnv *env, jobject uuid);
/**
- * @brief get address from a local device
- * @param env [IN] JNI interface pointer
- * @return local address
+ * get parcel uuid object from uuid string value.
+ * @param[in] env JNI interface pointer.
+ * @param[in] uuid uuid (const char*).
+ * @return parcel uuid object.
+ */
+jobject CALEGetParcelUuidFromString(JNIEnv *env, const char* uuid);
+
+/**
+ * get address from a local device.
+ * @param[in] env JNI interface pointer.
+ * @return local address.
*/
jstring CALEGetLocalDeviceAddress(JNIEnv *env);
/**
- * @brief get bonded list
- * @param env [IN] JNI interface pointer
- * @return bonded list
+ * get bonded list.
+ * @param[in] env JNI interface pointer.
+ * @return bonded list.
*/
jobjectArray CALEGetBondedDevices(JNIEnv *env);
/**
- * @brief get constants information of bluetooth state-on
- * @param env [IN] JNI interface pointer
- * @return constants information of bluetooth state-on
+ * get constants information of bluetooth state-on.
+ * @param[in] env JNI interface pointer.
+ * @return constants information of bluetooth state-on.
*/
jint CALEGetBTStateOnInfo(JNIEnv *env);
/**
- * @brief check this device can be supported as BLE client or server
- * @param env [IN] JNI interface pointer
- * @param level [IN] Android API Level to support
- * @return CA_STATUS_OK or ERROR CODES (CAResult_t error codes in cacommon.h)
+ * check this device can be supported as BLE client or server.
+ * @param[in] env JNI interface pointer.
+ * @param[in] level Android API Level to support.
+ * @return ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
*/
CAResult_t CALECheckPlatformVersion(JNIEnv *env, uint16_t level);
/**
- * @brief get constants information of android.os.Build.VERSION.SDK_INT
- * @param env [IN] JNI interface pointer
- * @return constants information of android.os.Build.VERSION.SDK_INT
+ * get constants information of android.os.Build.VERSION.SDK_INT.
+ * @param[in] env JNI interface pointer.
+ * @return constants information of android.os.Build.VERSION.SDK_INT.
*/
jint CALEGetBuildVersion(JNIEnv *env);
/**
- * @brief get constants information of android.os.Build.VERSION_CODES.[VersionName]
- * @param env [IN] JNI interface pointer
- * @param versionName [IN] version name (.., KITKAT, LOLLIPOP, ..)
- * @return constants information of android.os.Build.VERSION_CODES.[VersionName]
+ * get constants information of android.os.Build.VERSION_CODES.[VersionName].
+ * @param[in] env JNI interface pointer.
+ * @param[in] versionName version name (.., KITKAT, LOLLIPOP, ..).
+ * @return constants information of android.os.Build.VERSION_CODES.[VersionName].
*/
jint CALEGetBuildVersionCodeForName(JNIEnv *env, const char* versionName);
/**
- * @brief get bluetooth adapter state information
- * @param env [IN] JNI interface pointer
- * @return JNI_TRUE if the local adapter is turned on
+ * get bluetooth adapter state information.
+ * @param[in] env JNI interface pointer.
+ * @return JNI_TRUE if the local adapter is turned on.
*/
jboolean CALEIsEnableBTAdapter(JNIEnv *env);
/**
- * @brief get address from remote device
- * @param env [IN] JNI interface pointer
- * @param bluetoothDevice [IN] bluetooth device object
- * @return remote address
+ * get address from remote device.
+ * @param[in] env JNI interface pointer.
+ * @param[in] bluetoothDevice bluetooth device object.
+ * @return remote address.
*/
jstring CALEGetAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice);
+/**
+ * get value from selected constants.
+ * @param[in] env JNI interface pointer.
+ * @param[in] classType class type
+ * @param[in] name constants name to get.
+ * @return remote address.
+ */
+jint CALEGetConstantsValue(JNIEnv *env, const char* classType, const char* name);
+
+/**
+ * get bluetooth device object from bluetooth adapter.
+ * @param[in] env JNI interface pointer.
+ * @param[in] address bluetooth address.
+ * @return bluetooth device object.
+ */
+jobject CALEGetRemoteDevice(JNIEnv *env, jstring address);
+
+/**
+ * get address from gatt profile object.
+ * @param[in] env JNI interface pointer.
+ * @param[in] gatt gatt profile object.
+ * @return LE address.
+ */
+jstring CALEGetAddressFromGatt(JNIEnv *env, jobject gatt);
+
#ifdef __cplusplus
} /* extern "C" */
#endif