Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / bt_edr_adapter / android / caedrutils.h
1 /******************************************************************
2  *
3  * Copyright 2014 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  ******************************************************************/
20
21 /**
22  * @file
23  * @brief This file contains the APIs for BT communications.
24  */
25 #ifndef CA_EDR_UTILS_H_
26 #define CA_EDR_UTILS_H_
27
28 #include "cacommon.h"
29 #include "cathreadpool.h"
30 #include "uarraylist.h"
31 #include "caedrinterface.h"
32 #include "jni.h"
33
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #endif
38
39 /**
40  * @brief   Get address from device socket
41  * @param   env                 [IN] JNI interface pointer
42  * @param   bluetoothSocketObj  [IN] bluetooth socket object
43  * @return  Bluetooth device address
44  */
45 jstring CAEDRNativeGetAddressFromDeviceSocket(JNIEnv *env, jobject bluetoothSocketObj);
46
47 /**
48  * @brief   Get local device address
49  * @param   env                 [IN] JNI interface pointer
50  * @return  Bluetooth device address
51  */
52 jstring CAEDRNativeGetLocalDeviceAddress(JNIEnv *env);
53
54 /**
55  * @brief   Get bonded devices list
56  * @param   env                 [IN] JNI interface pointer
57  * @return  Bonded devices list
58  */
59 jobjectArray CAEDRNativeGetBondedDevices(JNIEnv *env);
60
61 /**
62  * @brief   Get Bluetooth device state
63  * @param   env                 [IN] JNI interface pointer
64  * @return  Bluetooth device state
65  */
66 jint CAEDRNativeGetBTStateOnInfo(JNIEnv *env);
67
68 /**
69  * @brief   Check the BT Adapter enable
70  * @param   env                 [IN] JNI interface pointer
71  * @return  JNI_TRUE or JNI_FALSE
72  */
73 jboolean CAEDRNativeIsEnableBTAdapter(JNIEnv *env);
74
75 /**
76  * @brief   Get address from BT device
77  * @param   env                 [IN] JNI interface pointer
78  * @param   bluetoothSocketObj  [IN] bluetooth socket object
79  * @return  Bluetooth device address
80  */
81 jstring CAEDRNativeGetAddressFromBTDevice(JNIEnv *env, jobject bluetoothDevice);
82
83 /**
84  * BT State Info List
85  */
86
87 /**
88  * @brief  This function will create the device state list.
89  * @return None
90  */
91 void CAEDRNativeCreateDeviceStateList();
92
93 /**
94  * @brief  Update connection state of device
95  * @param  state            [IN] connection state
96  * @param  address          [IN] remote address
97  * @return None
98  */
99 void CAEDRUpdateDeviceState(CAConnectedState_t state, const char *address);
100
101 /**
102  * @brief  Add device object to the list
103  * @param  state            [IN] connection state object
104  * @return None
105  */
106 void CAEDRNativeAddDeviceStateToList(state_t *state);
107
108 /**
109  * @brief  Check whether the device exist in the list or not
110  * @param  remoteAddress    [IN] remote address
111  * @return true or false
112  */
113 bool CAEDRNativeIsDeviceInList(const char *remoteAddress);
114
115 /**
116  * @brief   Close all socket
117  * @param   env       [IN] JNI interface pointer
118  * @return  NONE
119  */
120 void CAEDRNativeSocketCloseToAll(JNIEnv *env);
121
122 /**
123  * @brief   Remove all device objects in the list
124  * @return  None
125  */
126 void CAEDRNativeRemoveAllDeviceState();
127
128 /**
129  * @brief   Remove target device in the list
130  * @param   remoteAddress    [IN] remote address
131  * @return  None
132  */
133 void CAEDRNativeRemoveDevice(const char *remoteAddress);
134
135 /**
136  * @brief   Get current device connection state
137  * @param   remoteAddress    [IN] remote address
138  * @return  STATE_DISCONNECTED or STATE_CONNECTED
139  */
140 CAConnectedState_t CAEDRIsConnectedDevice(const char *remoteAddress);
141
142 /**
143  * @brief   Reordering for the list
144  * @param   index           [IN] index of device list that want to reordering
145  * @return  None
146  */
147 void CAEDRReorderingDeviceList(uint32_t index);
148
149 /**
150  * Bluetooth Socket Object List
151  */
152
153 /**
154  * @brief  This function will create the device socket list.
155  * @return None
156  */
157 void CAEDRNativeCreateDeviceSocketList();
158
159 /**
160  * @brief  Add device object to the list
161  * @param  env              [IN] JNI interface pointer
162  * @param  deviceSocket     [IN] device socket object
163  * @return None
164  */
165 void CAEDRNativeAddDeviceSocketToList(JNIEnv *env, jobject deviceSocket);
166
167 /**
168  * @brief  Add device object to the list
169  * @param  env              [IN] JNI interface pointer
170  * @param  remoteAddress    [IN] remote address
171  * @return true or false
172  */
173 bool CAEDRNativeIsDeviceSocketInList(JNIEnv *env, const char *remoteAddress);
174
175 /**
176  * @brief  Add device object to the list
177  * @param  env              [IN] JNI interface pointer
178  * @return None
179  */
180 void CAEDRNativeRemoveAllDeviceSocket(JNIEnv *env);
181
182 /**
183  * @brief  Add device object to the list
184  * @param  env              [IN] JNI interface pointer
185  * @param  deviceSocket     [IN] device socket object
186  * @return None
187  */
188 void CAEDRNativeRemoveDeviceSocket(JNIEnv *env, jobject deviceSocket);
189
190 /**
191  * @brief   Remove device socket
192  * @param   env             [IN] JNI interface pointer
193  * @param   address         [IN] remote address
194  * @return  NONE
195  */
196 void CAEDRNativeRemoveDeviceSocketBaseAddr(JNIEnv *env, jstring address);
197
198 /**
199  * @brief  Get device socket object from the list
200  * @param  idx              [IN] index of device list
201  * @return Device socket object or NULL
202  */
203 jobject CAEDRNativeGetDeviceSocket(uint32_t idx);
204
205 /**
206  * @brief   Get device socket address
207  * @param   env             [IN] JNI interface pointer
208  * @param   remoteAddress   [IN] remote address
209  * @return  Device socket object or NULL
210  */
211 jobject CAEDRNativeGetDeviceSocketBaseAddr(JNIEnv *env, const char* remoteAddress);
212
213 /**
214  * @brief  Get length of device socket list
215  * @return length of list
216  */
217 uint32_t CAEDRGetSocketListLength();
218
219 /**
220  * @brief   Reordering for the list
221  * @param   index           [IN] index of device list that want to reordering
222  * @return  None
223  */
224 void CAEDRReorderingDeviceSocketList(uint32_t index);
225 #ifdef __cplusplus
226 } /* extern "C" */
227 #endif
228
229 #endif /* CA_EDR_UTILS_H_ */
230