replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / connectivity / api / cautilinterface.h
1 /* ****************************************************************
2  *
3  * Copyright 2016 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 #ifndef CA_UTILS_INTERFACE_H_
22 #define CA_UTILS_INTERFACE_H_
23
24 #include "cacommon.h"
25 #ifdef __ANDROID__
26 #include "jni.h"
27 #endif
28 #ifdef __cplusplus
29 extern "C"
30 {
31 #endif
32
33 /**
34  * this level depends on transmission time.
35  * unicast based UDP will be checked by caretransmission.
36  */
37 typedef enum
38 {
39     HIGH_SPEED = 0,
40     NORMAL_SPEED
41 } CMSpeedLevel_t;
42
43 typedef struct
44 {
45     /** address for all **/
46     char addr[MAX_ADDR_STR_SIZE_CA];
47
48     /** adapter priority of all transmissions. **/
49     CATransportAdapter_t adapter;
50
51     /** level about speed of response. **/
52     CMSpeedLevel_t level;
53 } CMConfigureInfo_t;
54
55 /*
56  * CAUtilConfig_t structure.
57  */
58 typedef struct
59 {
60     CATransportBTFlags_t bleFlags;
61     CMConfigureInfo_t cmInfo;
62 } CAUtilConfig_t;
63
64 /**
65  * Callback function type for connection status changes delivery.
66  * @param[out]   info           Remote endpoint information.
67  * @param[out]   isConnected    Current connection status info.
68  */
69 typedef void (*CAConnectionStateChangedCB)(const CAEndpoint_t *info, bool isConnected);
70
71 /**
72  * Callback function type for adapter status changes delivery.
73  * @param[out]   adapter    Transport type information.
74  * @param[out]   enabled    Current adapter status info.
75  */
76 typedef void (*CAAdapterStateChangedCB)(CATransportAdapter_t adapter, bool enabled);
77
78 /**
79  * Register network monitoring callback.
80  * Network status changes are delivered these callback.
81  * @param[in]   adapterStateCB  Adapter state monitoring callback.
82  * @param[in]   connStateCB     Connection state monitoring callback.
83  *
84  * @return  ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_MEMORY_ALLOC_FAILED
85  */
86 CAResult_t CARegisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB,
87                                            CAConnectionStateChangedCB connStateCB);
88
89 /**
90  * Unregister network monitoring callback.
91  * @param[in]   adapterStateCB  Adapter state monitoring callback.
92  * @param[in]   connStateCB     Connection state monitoring callback.
93  *
94  * @return  ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_MEMORY_ALLOC_FAILED
95  */
96 CAResult_t CAUnregisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB,
97                                              CAConnectionStateChangedCB connStateCB);
98
99 /**
100  * Set device to handle for auto connection.
101  * @param[in]   address         LE address to set.
102  *
103  * @return  ::CA_STATUS_OK or ::CA_STATUS_FAILED.
104  */
105 CAResult_t CASetAutoConnectionDeviceInfo(const char* address);
106
107 /**
108  * Unset device to handle for auto connection.
109  * @param[in]   address         LE address to unset.
110  *
111  * @return  ::CA_STATUS_OK or ::CA_STATUS_FAILED.
112  */
113 CAResult_t CAUnsetAutoConnectionDeviceInfo(const char* address);
114
115 /**
116  * Set the port number to assign .
117  * @param[in]   adapter     Transport adapter information.
118  * @param[in]   flag        Transport flag information.
119  * @param[in]   port        The port number to use.
120  *
121  * @return  ::CA_STATUS_OK or ::CA_STATUS_FAILED.
122  */
123 CAResult_t CASetPortNumberToAssign(CATransportAdapter_t adapter,
124                                    CATransportFlags_t flag, uint16_t port);
125
126 /**
127  * Get the assigned port number currently.
128  * @param[in]   adapter     Transport adapter information.
129  * @param[in]   flag        Transport flag information.
130  *
131  * @return  assigned port number information.
132  */
133 uint16_t CAGetAssignedPortNumber(CATransportAdapter_t adapter, CATransportFlags_t flag);
134
135 //custom advertisement data setting
136 #if defined(__TIZEN__) && defined(LE_ADAPTER) && defined(BLE_CUSTOM_ADVERTISE)
137 CAResult_t CASetAdvertisementData(const char* data, int length);
138 CAResult_t CASetScanResponseData(const char* data, int length);
139 #endif
140
141 #ifdef __APPLE__
142 /**
143  * initialize client connection manager
144  */
145 CAResult_t CAUtilClientInitialize();
146
147 /**
148  * terminate client connection manager
149  */
150 CAResult_t CAUtilClientTerminate();
151
152 /**
153  * stop LE scan.
154  * @return  ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
155  */
156 CAResult_t CAUtilStopLEScan();
157
158 /**
159  * start LE scan.
160  * @return  ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
161  */
162 CAResult_t CAUtilStartLEScan();
163
164 /**
165  * Client disconnect.
166  * @return  ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
167  */
168 CAResult_t CAUtilClientDisconnect();
169 #endif
170
171 #ifdef __ANDROID__
172 /**
173  * initialize util client for android
174  * @param[in]   env                   JNI interface pointer.
175  * @param[in]   jvm                   invocation inferface for JAVA virtual machine.
176  * @param[in]   context               application context.
177  *
178  * @return  ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_MEMORY_ALLOC_FAILED
179  */
180 CAResult_t CAUtilClientInitialize(JNIEnv *env, JavaVM *jvm, jobject context);
181
182 /**
183  * terminate util client for android
184  * @param[in]   env                   JNI interface pointer.
185  *
186  * @return  ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_MEMORY_ALLOC_FAILED
187  */
188 CAResult_t CAUtilClientTerminate(JNIEnv *env);
189
190 // BT pairing
191 /**
192  * start discovery for BT device which has iotivity UUID.
193  * @param[in]  env              JNI interface pointer.
194  */
195 CAResult_t CAUtilStartScan(JNIEnv *env);
196
197 /**
198  * stop discovery
199  * @param[in]  env              JNI interface pointer.
200  */
201 CAResult_t CAUtilStopScan(JNIEnv *env);
202
203 /**
204  * bonding between devices.
205  * @param[in]  env              JNI interface pointer.
206  * @param[in]  device           bluetooth device object.
207  */
208 CAResult_t CAUtilCreateBond(JNIEnv *env, jobject device);
209
210
211 /**
212  * set callback listener of found device.
213  * @param[in]  listener         callback listener
214  */
215 void CAUtilSetFoundDeviceListener(jobject listener);
216
217 /**
218  * set interval time and working count for LE scan.
219  * @param[in]  intervalTime         interval time(Seconds).
220  * @param[in]  workingCount         working cycle for selected interval time.
221  *
222  * @return  ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
223  */
224 CAResult_t CAUtilSetLEScanInterval(jint intervalTime, jint workingCount);
225
226 /**
227  * stop LE scan.
228  *
229  * @return  ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
230  */
231 CAResult_t CAUtilStopLEScan();
232 #endif
233
234 // BLE util
235 /**
236  * start BLE advertising.
237  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
238  */
239 CAResult_t CAUtilStartLEAdvertising();
240
241 /**
242  * stop BLE advertising.
243  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
244  */
245 CAResult_t CAUtilStopLEAdvertising();
246
247 /**
248  * set CAUtil BT configure.
249  * @param[in]  config       ::CAUtilConfig_t value
250  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
251  */
252 CAResult_t CAUtilSetBTConfigure(CAUtilConfig_t config);
253
254 /**
255  * set CAUtil log preference.
256  * @param[in]  level                     ::CAUtilLogLevel_t value
257  * @param[in]  hidePrivateLogEntries     Private Log Entries.
258  *                                       Example:
259  *                                       true : hide private log.
260  *                                       false : show private log.
261  *                                       (privacy : uid, did, access token, etc)
262  */
263 void CAUtilSetLogLevel(CAUtilLogLevel_t level, bool hidePrivateLogEntries);
264
265 /**
266  * Set multicast time to live value to control the scope of the multicasts.
267  * @param[in]  ttl         To be set to any value from 0 to 255.
268  *                         Example:
269  *                         0: Are restricted to the same host.
270  *                         1: Are restricted to the same subnet.
271  *                         32: Are restricted to the same site.
272  *                         64: Are restricted to the same region.
273  *                         128: Are restricted to the same continent.
274  *                         255: Are unrestricted in scope.
275  *                         We cannot support region, continent and unrestricted in scope.
276  *
277  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
278  */
279 CAResult_t CAUtilSetMulticastTTL(size_t ttl);
280
281 /**
282  * Get multicast time to live value.
283  * @param[out]  ttl        TTL pointer to get the stored multicast time to live.
284  *
285  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
286  */
287 CAResult_t CAUtilGetMulticastTTL(size_t *ttl);
288
289 /**
290  * Disconnect TCP session.
291  * When there is no transmission for a long time.
292  * Some carrier Vendor is blocking data.
293  * Thur, TCP Session is cleaned through this function.
294  * @param[in]   address        Address.
295  * @param[in]   port           Port.
296  * @param[in]   flags          Transport flag.
297  */
298 CAResult_t CAUtilTCPDisconnectSession(const char *address,
299                                       uint16_t port,
300                                       CATransportFlags_t flags);
301
302 CAResult_t CAUtilStartGattServer();
303 CAResult_t CAUtilStopGattServer();
304
305 #ifdef __cplusplus
306 } /* extern "C" */
307 #endif
308
309 #endif /* CA_UTILS_INTERFACE_H_ */
310