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 #include "camanagerleinterface.h"
22 #include "cabtpairinginterface.h"
23 #include "cautilinterface.h"
24 #include "cainterfacecontroller.h"
27 #include "caremotehandler.h"
29 #include "catcpadapter.h"
32 #define TAG "OIC_CA_COMMON_UTILS"
34 #if defined(__ANDROID__)
36 void CASetLEScanUuid(char* uuid, int uuid_type)
38 OIC_LOG(DEBUG, TAG, "CASetLEScanUuid");
40 CASetScanUuid(uuid, uuid_type);
42 OIC_LOG(DEBUG, TAG, "it is not supported");
49 CAResult_t CARegisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB, CAConnectionStateChangedCB connStateCB)
51 OIC_LOG(DEBUG, TAG, "CARegisterNetworkMonitorHandler");
53 CASetNetworkMonitorCallbacks(adapterStateCB, connStateCB);
57 CAResult_t CAUnregisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB, CAConnectionStateChangedCB connStateCB)
59 OIC_LOG(DEBUG, TAG, "CAUnregisterNetworkMonitorHandler");
61 return CAUnsetNetworkMonitorCallbacks(adapterStateCB, connStateCB);
64 CAResult_t CASetAutoConnectionDeviceInfo(const char *address)
66 OIC_LOG(DEBUG, TAG, "CASetAutoConnectionDeviceInfo");
68 #if (defined(__ANDROID__) || defined(__APPLE__)) && defined(LE_ADAPTER)
69 return CASetLEClientAutoConnectionDeviceInfo(address);
72 return CA_NOT_SUPPORTED;
76 CAResult_t CAUnsetAutoConnectionDeviceInfo(const char *address)
78 OIC_LOG(DEBUG, TAG, "CAUnsetAutoConnectionDeviceInfo");
80 #if (defined(__ANDROID__) || defined(__APPLE__)) && defined(LE_ADAPTER)
81 return CAUnsetLEClientAutoConnectionDeviceInfo(address);
84 return CA_NOT_SUPPORTED;
90 CAResult_t CAUtilClientInitialize()
92 OIC_LOG(DEBUG, TAG, "CAUtilClientInitialize");
94 CAResult_t res = CA_STATUS_OK;
96 if (CA_STATUS_OK != CAManagerLEClientInitialize()) {
97 OIC_LOG(ERROR, TAG, "CAManagerLEClientInitialize has failed");
98 res = CA_STATUS_FAILED;
101 OIC_LOG(DEBUG, TAG, "it is not supported");
102 res = CA_NOT_SUPPORTED;
108 CAResult_t CAUtilClientTerminate()
110 OIC_LOG(DEBUG, TAG, "CAUtilClientTerminate");
112 return CAManagerLEClientTerminate();
114 OIC_LOG(DEBUG, TAG, "it is not supported");
115 return CA_NOT_SUPPORTED;
119 CAResult_t CAUtilStopLEScan()
121 OIC_LOG(DEBUG, TAG, "CAUtilStopLEScan");
123 CAManagerLEStopScan();
126 OIC_LOG(DEBUG, TAG, "it is not supported");
127 return CA_NOT_SUPPORTED;
131 CAResult_t CAUtilStartLEScan()
133 OIC_LOG(DEBUG, TAG, "CAUtilStartLEScan");
135 CAManagerLEStartScan();
138 OIC_LOG(DEBUG, TAG, "it is not supported");
139 return CA_NOT_SUPPORTED;
143 CAResult_t CAUtilClientDisconnect()
145 OIC_LOG(DEBUG, TAG, "CAUtilClientDisconnect");
147 CAManagerLEDisconnect();
150 OIC_LOG(DEBUG, TAG, "it is not supported");
151 return CA_NOT_SUPPORTED;
157 CAResult_t CASetPortNumberToAssign(CATransportAdapter_t adapter, CATransportFlags_t flag, uint16_t port)
159 uint16_t *targetPort = 0;
161 if (CA_ADAPTER_IP & adapter) {
162 if (CA_SECURE & flag) {
163 if (CA_IPV6 & flag) {
164 targetPort = &caglobals.ports.udp.u6s;
165 } else if (CA_IPV4 & flag) {
166 targetPort = &caglobals.ports.udp.u4s;
169 if (CA_IPV6 & flag) {
170 targetPort = &caglobals.ports.udp.u6;
171 } else if (CA_IPV4 & flag) {
172 targetPort = &caglobals.ports.udp.u4;
177 if (CA_ADAPTER_TCP & adapter) {
178 if (CA_IPV6 & flag) {
179 targetPort = &caglobals.ports.tcp.u6;
180 } else if (CA_IPV4 & flag) {
181 targetPort = &caglobals.ports.tcp.u4;
191 return CA_NOT_SUPPORTED;
194 uint16_t CAGetAssignedPortNumber(CATransportAdapter_t adapter, CATransportFlags_t flag)
196 OIC_LOG(DEBUG, TAG, "CAGetAssignedPortNumber");
198 if (CA_ADAPTER_IP & adapter) {
199 if (CA_SECURE & flag) {
200 if (CA_IPV6 & flag) {
201 return caglobals.ip.u6s.port;
202 } else if (CA_IPV4 & flag) {
203 return caglobals.ip.u4s.port;
206 if (CA_IPV6 & flag) {
207 return caglobals.ip.u6.port;
208 } else if (CA_IPV4 & flag) {
209 return caglobals.ip.u4.port;
214 if (CA_ADAPTER_TCP & adapter) {
215 if (CA_SECURE & flag) {
216 if (CA_IPV6 & flag) {
217 return caglobals.tcp.ipv6s.port;
218 } else if (CA_IPV4 & flag) {
219 return caglobals.tcp.ipv4s.port;
222 if (CA_IPV6 & flag) {
223 return caglobals.tcp.ipv6.port;
224 } else if (CA_IPV4 & flag) {
225 return caglobals.tcp.ipv4.port;
233 #if defined(__TIZEN__) && defined(LE_ADAPTER) && defined(BLE_CUSTOM_ADVERTISE)
234 CAResult_t CASetAdvertisementData(const char* data, int length)
236 return CAManagerLEServerSetAdvertisementData(data, length);
238 void CASetAdvertisementDataGetter(CAAdvertisementDataGetterCB getter)
240 CAManagerLEServerSetAdvertisementDataGetter(getter);
242 void CASetAutoAdvertisement(bool autoAdvertisement)
244 CAManagerLEServerSetAutoAdvertisement(autoAdvertisement);
246 CAResult_t CASetScanResponseData(const char* data, int length)
248 return CAManagerLEServerSetScanResponseData(data, length);
254 * initialize client connection manager
255 * @param[in] env JNI interface pointer.
256 * @param[in] jvm invocation inferface for JAVA virtual machine.
257 * @param[in] context application context.
259 CAResult_t CAUtilClientInitialize(JNIEnv *env, JavaVM *jvm, jobject context)
261 OIC_LOG(DEBUG, TAG, "CAUtilClientInitialize");
263 CAResult_t res = CA_STATUS_OK;
265 if (CA_STATUS_OK != CAManagerLEClientInitialize(env, jvm, context)) {
266 OIC_LOG(ERROR, TAG, "CAManagerLEClientInitialize has failed");
267 res = CA_STATUS_FAILED;
272 if (CA_STATUS_OK != CABTPairingInitialize(env, jvm, context)) {
273 OIC_LOG(ERROR, TAG, "CABTPairingInitialize has failed");
274 res = CA_STATUS_FAILED;
278 #if !defined(LE_ADAPTER) && !defined(EDR_ADAPTER)
287 * terminate client connection manager
288 * @param[in] env JNI interface pointer.
290 CAResult_t CAUtilClientTerminate(JNIEnv *env)
292 OIC_LOG(DEBUG, TAG, "CAUtilClientTerminate");
294 return CAManagerLEClientTerminate(env);
296 OIC_LOG(DEBUG, TAG, "it is not supported");
298 return CA_NOT_SUPPORTED;
303 CAResult_t CAUtilStartScan(JNIEnv *env)
306 return CABTPairingStartScan(env);
308 OIC_LOG(DEBUG, TAG, "it is not supported");
310 return CA_NOT_SUPPORTED;
314 CAResult_t CAUtilStopScan(JNIEnv *env)
317 return CABTPairingStopScan(env);
319 OIC_LOG(DEBUG, TAG, "it is not supported");
321 return CA_NOT_SUPPORTED;
325 CAResult_t CAUtilCreateBond(JNIEnv *env, jobject device)
328 return CABTPairingCreateBond(env, device);
330 OIC_LOG(DEBUG, TAG, "it is not supported");
333 return CA_NOT_SUPPORTED;
337 void CAUtilSetFoundDeviceListener(jobject listener)
340 CABTPairingSetFoundDeviceListener(listener);
346 CAResult_t CAUtilSetLEScanInterval(jint intervalTime, jint workingCount)
348 OIC_LOG(DEBUG, TAG, "CAUtilSetLEScanInterval");
350 CAManagerLESetScanInterval(intervalTime, workingCount);
355 OIC_LOG(DEBUG, TAG, "it is not supported");
356 return CA_NOT_SUPPORTED;
360 CAResult_t CAUtilStopLEScan()
362 OIC_LOG(DEBUG, TAG, "CAUtilStopLEScan");
364 CAManagerLEStopScan();
367 OIC_LOG(DEBUG, TAG, "it is not supported");
368 return CA_NOT_SUPPORTED;
371 #endif // __ANDROID__
373 CAResult_t CAUtilStartLEAdvertising()
375 OIC_LOG(DEBUG, TAG, "CAUtilStartLEAdvertising");
376 #if (defined(__ANDROID__) || defined(__TIZEN__)) && defined(LE_ADAPTER)
377 return CAManagerLEStartAdvertising();
379 OIC_LOG(DEBUG, TAG, "it is not supported");
380 return CA_NOT_SUPPORTED;
384 CAResult_t CAUtilStopLEAdvertising()
386 OIC_LOG(DEBUG, TAG, "CAUtilStopLEAdvertising");
387 #if (defined(__ANDROID__) || defined(__TIZEN__)) && defined(LE_ADAPTER)
388 return CAManagerLEStopAdvertising();
390 OIC_LOG(DEBUG, TAG, "it is not supported");
391 return CA_NOT_SUPPORTED;
395 CAResult_t CAUtilSetBTConfigure(CAUtilConfig_t config)
397 OIC_LOG_V(DEBUG, TAG, "CAUtilSetConfigure");
398 #if (defined(__ANDROID__) && defined(LE_ADAPTER))
399 OIC_LOG_V(DEBUG, TAG, " - bleFlag [%d]", config.bleFlags);
400 CAManagerSetConfigure(config);
404 OIC_LOG(DEBUG, TAG, "it is not supported");
405 return CA_NOT_SUPPORTED;
409 void CAUtilSetLogLevel(CAUtilLogLevel_t level, bool hidePrivateLogEntries)
411 OIC_LOG(DEBUG, TAG, "CAUtilSetLogLevel");
412 LogLevel logLevel = DEBUG;
414 case CA_LOG_LEVEL_ALL:
417 case CA_LOG_LEVEL_INFO:
425 OCSetLogLevel(logLevel, hidePrivateLogEntries);
428 CAResult_t CAUtilSetMulticastTTL(size_t ttl)
430 OIC_LOG(DEBUG, TAG, "CAUtilSetMulticastTTL");
433 OIC_LOG(ERROR, TAG, "TTL value is invalid");
434 return CA_STATUS_INVALID_PARAM;
437 OIC_LOG(INFO, TAG, "TTL value is not supported");
438 return CA_NOT_SUPPORTED;
440 return CASetMulticastTTL(ttl);
443 OIC_LOG(DEBUG, TAG, "it is not supported");
444 return CA_NOT_SUPPORTED;
448 CAResult_t CAUtilGetMulticastTTL(size_t *ttl)
450 OIC_LOG(DEBUG, TAG, "CAUtilGetMulticastTTL");
452 return CAGetMulticastTTL(ttl);
455 OIC_LOG(DEBUG, TAG, "it is not supported");
456 return CA_NOT_SUPPORTED;
460 CAResult_t CAUtilTCPDisconnectSession(const char *address, uint16_t port, CATransportFlags_t flags)
462 OIC_LOG(DEBUG, TAG, "CAUtilTCPDisconnectSession");
464 CARequestInfo_t reqInfo = {.info.event = CA_REQ_DISCONNECT};
465 CAEndpoint_t *endpoint = CACreateEndpointObject(flags, CA_ADAPTER_TCP, address, port);
467 return CA_STATUS_FAILED;
470 CAResult_t caResult = CASendRequest(endpoint, &reqInfo);
471 if (CA_STATUS_OK != caResult) {
472 OIC_LOG(ERROR, TAG, "CASendRequest error");
474 CAFreeEndpoint(endpoint);
480 OIC_LOG(DEBUG, TAG, "it is not supported");
481 return CA_NOT_SUPPORTED;
485 void CAUtilSkipTCPCloseOnInterfaceDown(bool state)
488 CATCPSkipCloseOnInterfaceDown(state);
491 OIC_LOG(DEBUG, TAG, "Not supported!");
495 CAResult_t CAUtilStartGattServer()
497 OIC_LOG(DEBUG, TAG, "CAUtilStartGattServer");
498 CAResult_t res = CA_STATUS_OK;
499 #if (defined(__TIZEN__) && defined(LE_ADAPTER))
502 OIC_LOG(DEBUG, TAG, "it is not supported");
503 res = CA_NOT_SUPPORTED;
508 CAResult_t CAUtilStopGattServer()
510 OIC_LOG(DEBUG, TAG, "CAUtilStopGattServer");
511 CAResult_t res = CA_STATUS_OK;
512 #if (defined(__TIZEN__) && defined(LE_ADAPTER))
515 OIC_LOG(DEBUG, TAG, "it is not supported");
516 res = CA_NOT_SUPPORTED;
521 #if defined(__TIZEN__)
522 CAResult_t CAGetTCPIPHeader(CATransportAdapter_t adapter, int flag, TCPHeaderInfo* info)
524 CAResult_t res = CA_STATUS_OK;
526 if (CA_ADAPTER_TCP & adapter) {
527 res = CAGetTCPIPHeaderInfo(flag,info);
530 res = CA_NOT_SUPPORTED;
532 res = CA_NOT_SUPPORTED;
533 OIC_LOG(DEBUG, TAG, "Not supported!");