API change , Retransmission Callback on expiry , remove glib source for dynamic linking
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / bt_le_adapter / android / caleutils.c
1 #include <jni.h>
2 #include <stdio.h>
3 #include <android/log.h>
4 #include "caleutils.h"
5 #include "logger.h"
6 #include "oic_malloc.h"
7 #include "uthreadpool.h"
8 #include "uarraylist.h"
9
10 #define TAG PCF("CA_LE_UTILS")
11
12 #define  LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
13 #define  LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
14
15 #define METHODID_OBJECTNONPARAM   "()Landroid/bluetooth/BluetoothAdapter;"
16 //#define METHODID_INTNONPARAM   "()I"
17 #define METHODID_STRINGNONPARAM   "()Ljava/lang/String;"
18 //#define METHODID_OBJECT_STRINGUUIDPARAM   "(Ljava/lang/String;Ljava/util/UUID;)Ljava/lang/Object;"
19 //#define METHODID_ONRESPONSE_PARAM  "(Ljava/lang/String;)V"
20 #define CLASSPATH_BT_ADPATER "android/bluetooth/BluetoothAdapter"
21 //#define CLASSPATH_BT_UUID "java/util/UUID"
22
23 jobject CALEGetUuidFromString(JNIEnv *env, const char* uuid)
24 {
25
26     OIC_LOG_V(DEBUG, TAG, "CALEGetUuidFromString");
27
28     jclass jni_cid_UUID = (*env)->FindClass(env, "java/util/UUID");
29
30     jmethodID jni_mid_fromString = (*env)->GetStaticMethodID(env, jni_cid_UUID,
31             "fromString", "(Ljava/lang/String;)Ljava/util/UUID;");
32
33     jstring str_uuid = (*env)->NewStringUTF(env, uuid);
34
35     jobject jni_obj_uuid = (*env)->CallStaticObjectMethod(env, jni_cid_UUID,
36             jni_mid_fromString, str_uuid);
37     if (!jni_obj_uuid)
38     {
39         OIC_LOG_V(DEBUG, TAG, "Fail to get jni uuid object");
40         return NULL;
41     }
42
43     return jni_obj_uuid;
44 }
45
46 jobject CALEGetParcelUuid(JNIEnv *env, jobject uuid)
47 {
48     OIC_LOG_V(DEBUG, TAG, "CALEGetParcelUuid");
49
50     jclass jni_cid_ParcelUuid = (*env)->FindClass(env, "android/os/ParcelUuid");
51
52     jmethodID jni_mid_ParcelUuid = (*env)->GetMethodID(env, jni_cid_ParcelUuid,
53             "<init>", "(Ljava/util/UUID;)V");
54
55     jobject jni_ParcelUuid = (*env)->NewObject(env, jni_cid_ParcelUuid,
56             jni_mid_ParcelUuid, uuid);
57     if (!jni_ParcelUuid)
58     {
59         OIC_LOG_V(DEBUG, TAG, "Fail to get jni ParcelUuid");
60         return NULL;
61     }
62
63     return jni_ParcelUuid;
64 }
65
66 jstring CALEGetAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice)
67 {
68     OIC_LOG(DEBUG, TAG, "CALEGetAddressFromBTDevice");
69
70     jclass jni_cid_device_list = (*env)->FindClass(env,
71             "android/bluetooth/BluetoothDevice");
72     jmethodID jni_mid_getAddress = (*env)->GetMethodID(env, jni_cid_device_list,
73             "getAddress", "()Ljava/lang/String;");
74     jstring jni_address = (jstring)(*env)->CallObjectMethod(env,
75             bluetoothDevice, jni_mid_getAddress);
76     if (!jni_address)
77     {
78         OIC_LOG(DEBUG, TAG, "jni_address is null");
79         return 0;
80     }
81     return jni_address;
82 }
83
84 jstring CALEGetLocalDeviceAddress(JNIEnv* env)
85 {
86     jclass jni_cid_BTAdapter = (*env)->FindClass(env, CLASSPATH_BT_ADPATER);
87     if (!jni_cid_BTAdapter)
88     {
89         OIC_LOG(DEBUG, TAG, "getAddress: jni_cid_BTAdapter is null");
90         return NULL;
91     }
92
93     jmethodID jni_mid_getDefaultAdapter = (*env)->GetStaticMethodID(env,
94             jni_cid_BTAdapter, "getDefaultAdapter", METHODID_OBJECTNONPARAM);
95     if (!jni_mid_getDefaultAdapter)
96     {
97         OIC_LOG(DEBUG, TAG, "getAddress: jni_mid_getDefaultAdapter is null");
98         return NULL;
99     }
100
101     jmethodID jni_mid_getAddress = (*env)->GetMethodID(env, jni_cid_BTAdapter,
102             "getAddress", METHODID_STRINGNONPARAM);
103     if (!jni_mid_getAddress)
104     {
105         OIC_LOG(DEBUG, TAG, "getAddress: jni_mid_getAddress is null");
106         return NULL;
107     }
108
109     jobject jni_obj_BTAdapter = (*env)->CallStaticObjectMethod(env,
110             jni_cid_BTAdapter, jni_mid_getDefaultAdapter);
111     if (!jni_obj_BTAdapter)
112     {
113         OIC_LOG(DEBUG, TAG, "getAddress: jni_obj_BTAdapter is null");
114         return NULL;
115     }
116
117     jstring jni_str_address = (jstring)(*env)->CallObjectMethod(env,
118             jni_obj_BTAdapter, jni_mid_getAddress);
119     if (!jni_str_address)
120     {
121         OIC_LOG(DEBUG, TAG, "getAddress: jni_str_address is null");
122         return NULL;
123     }
124
125     return jni_str_address;
126 }