1 /* ****************************************************************
3 * Copyright 2016 Samsung Electronics All Rights Reserved.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 ******************************************************************/
21 #ifndef CA_UTILS_INTERFACE_H_
22 #define CA_UTILS_INTERFACE_H_
34 * this level depends on transmission time.
35 * unicast based UDP will be checked by caretransmission.
45 /** address for all **/
46 char addr[MAX_ADDR_STR_SIZE_CA];
48 /** adapter priority of all transmissions. **/
49 CATransportAdapter_t adapter;
51 /** level about speed of response. **/
56 * CAUtilConfig_t structure.
60 CATransportBTFlags_t bleFlags;
61 CMConfigureInfo_t cmInfo;
65 * Callback function type for connection status changes delivery.
66 * @param[out] info Remote endpoint information.
67 * @param[out] isConnected Current connection status info.
69 typedef void (*CAConnectionStateChangedCB)(const CAEndpoint_t *info, bool isConnected);
72 * Callback function type for adapter status changes delivery.
73 * @param[out] adapter Transport type information.
74 * @param[out] enabled Current adapter status info.
76 typedef void (*CAAdapterStateChangedCB)(CATransportAdapter_t adapter, bool enabled);
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.
84 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_MEMORY_ALLOC_FAILED
86 CAResult_t CARegisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB,
87 CAConnectionStateChangedCB connStateCB);
90 * Unregister network monitoring callback.
91 * @param[in] adapterStateCB Adapter state monitoring callback.
92 * @param[in] connStateCB Connection state monitoring callback.
94 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_MEMORY_ALLOC_FAILED
96 CAResult_t CAUnregisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB,
97 CAConnectionStateChangedCB connStateCB);
100 * Set device to handle for auto connection.
101 * @param[in] address LE address to set.
103 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED.
105 CAResult_t CASetAutoConnectionDeviceInfo(const char* address);
108 * Unset device to handle for auto connection.
109 * @param[in] address LE address to unset.
111 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED.
113 CAResult_t CAUnsetAutoConnectionDeviceInfo(const char* address);
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.
121 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED.
123 CAResult_t CASetPortNumberToAssign(CATransportAdapter_t adapter,
124 CATransportFlags_t flag, uint16_t port);
127 * Get the assigned port number currently.
128 * @param[in] adapter Transport adapter information.
129 * @param[in] flag Transport flag information.
131 * @return assigned port number information.
133 uint16_t CAGetAssignedPortNumber(CATransportAdapter_t adapter, CATransportFlags_t flag);
135 //custom advertisement data setting
136 #if defined(__TIZEN__) && defined(LE_ADAPTER) && defined(BLE_CUSTOM_ADVERTISE)
139 * Sets Custom Advertisement Data.
140 * @param[in] data Advertisment Data buffer.
141 * @param[in] length Length of buffer.
143 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_STATUS_INVALID_PARAM
145 CAResult_t CASetAdvertisementData(const char* data, int length);
148 * Set function that will be called before starting advertising.
149 * Provided data and length will be used to set advertisement data.
150 * @param[in] getter Custom advertisement data getter callback.
153 void CASetAdvertisementDataGetter(CAAdvertisementDataGetterCB getter);
156 * set if advertising should be started automatically.
157 * By default advertising is automatically started.
158 * @param[in] autoAdvertisement true for automatic start
160 void CASetAutoAdvertisement(bool autoAdvertisement);
163 * Scan and set data for custom bluetooth advertisement.
164 * @param[in] data Array with custom bluetooth advertisement data.
165 * @param[in] length Length of data array.
166 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_STATUS_INVALID_PARAM
168 CAResult_t CASetScanResponseData(const char* data, int length);
172 #if defined(__TIZEN__)
174 * This function sets uri being used for proxy.
176 * @param uri NULL terminated resource uri for SAP Proxy.
179 * @return ::CA_STATUS_OK or ::CA_STATUS_INVALID_PARAM
181 CAResult_t CASetCloudAddressForProxy(const char *uri);
183 * This function gets proxy uri.
185 * @return resource uri or NULL
187 const char *CAGetCloudAddressForProxy();
192 * initialize client connection manager
194 CAResult_t CAUtilClientInitialize();
197 * terminate client connection manager
199 CAResult_t CAUtilClientTerminate();
203 * @return ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
205 CAResult_t CAUtilStopLEScan();
209 * @return ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
211 CAResult_t CAUtilStartLEScan();
215 * @return ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
217 CAResult_t CAUtilClientDisconnect();
222 * initialize util client for android
223 * @param[in] env JNI interface pointer.
224 * @param[in] jvm invocation inferface for JAVA virtual machine.
225 * @param[in] context application context.
227 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_MEMORY_ALLOC_FAILED
229 CAResult_t CAUtilClientInitialize(JNIEnv *env, JavaVM *jvm, jobject context);
232 * terminate util client for android
233 * @param[in] env JNI interface pointer.
235 * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_MEMORY_ALLOC_FAILED
237 CAResult_t CAUtilClientTerminate(JNIEnv *env);
241 * start discovery for BT device which has iotivity UUID.
242 * @param[in] env JNI interface pointer.
244 CAResult_t CAUtilStartScan(JNIEnv *env);
248 * @param[in] env JNI interface pointer.
250 CAResult_t CAUtilStopScan(JNIEnv *env);
253 * bonding between devices.
254 * @param[in] env JNI interface pointer.
255 * @param[in] device bluetooth device object.
257 CAResult_t CAUtilCreateBond(JNIEnv *env, jobject device);
261 * set callback listener of found device.
262 * @param[in] listener callback listener
264 void CAUtilSetFoundDeviceListener(jobject listener);
267 * set interval time and working count for LE scan.
268 * @param[in] intervalTime interval time(Seconds).
269 * @param[in] workingCount working cycle for selected interval time.
271 * @return ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
273 CAResult_t CAUtilSetLEScanInterval(jint intervalTime, jint workingCount);
278 * @return ::CA_STATUS_OK or ::CA_NOT_SUPPORTED
280 CAResult_t CAUtilStopLEScan();
285 * start BLE advertising.
286 * @return ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
288 CAResult_t CAUtilStartLEAdvertising();
291 * stop BLE advertising.
292 * @return ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
294 CAResult_t CAUtilStopLEAdvertising();
297 * set CAUtil BT configure.
298 * @param[in] config ::CAUtilConfig_t value
299 * @return ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
301 CAResult_t CAUtilSetBTConfigure(CAUtilConfig_t config);
304 * set CAUtil log preference.
305 * @param[in] level ::CAUtilLogLevel_t value
306 * @param[in] hidePrivateLogEntries Private Log Entries.
308 * true : hide private log.
309 * false : show private log.
310 * (privacy : uid, did, access token, etc)
312 void CAUtilSetLogLevel(CAUtilLogLevel_t level, bool hidePrivateLogEntries);
315 * Set multicast time to live value to control the scope of the multicasts.
316 * @param[in] ttl To be set to any value from 0 to 255.
318 * 0: Are restricted to the same host.
319 * 1: Are restricted to the same subnet.
320 * 32: Are restricted to the same site.
321 * 64: Are restricted to the same region.
322 * 128: Are restricted to the same continent.
323 * 255: Are unrestricted in scope.
324 * We cannot support region, continent and unrestricted in scope.
326 * @return ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
328 CAResult_t CAUtilSetMulticastTTL(size_t ttl);
331 * Get multicast time to live value.
332 * @param[out] ttl TTL pointer to get the stored multicast time to live.
334 * @return ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
336 CAResult_t CAUtilGetMulticastTTL(size_t *ttl);
339 * Disconnect TCP session.
340 * When there is no transmission for a long time.
341 * Some carrier Vendor is blocking data.
342 * Thur, TCP Session is cleaned through this function.
343 * @param[in] address Address.
344 * @param[in] port Port.
345 * @param[in] flags Transport flag.
347 CAResult_t CAUtilTCPDisconnectSession(const char *address,
349 CATransportFlags_t flags);
352 * Enable or disable skip closing TCP servers
353 * when network interface is down.
355 * @param[in] state true to skip closing TCP servers,
358 void CAUtilSkipTCPCloseOnInterfaceDown(bool state);
360 CAResult_t CAUtilStartGattServer();
361 CAResult_t CAUtilStopGattServer();
367 #endif /* CA_UTILS_INTERFACE_H_ */