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"
31 #define TAG "OIC_CA_COMMON_UTILS"
33 CAResult_t CARegisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB, CAConnectionStateChangedCB connStateCB)
35 OIC_LOG(DEBUG, TAG, "CARegisterNetworkMonitorHandler");
37 CASetNetworkMonitorCallbacks(adapterStateCB, connStateCB);
41 CAResult_t CAUnregisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB, CAConnectionStateChangedCB connStateCB)
43 OIC_LOG(DEBUG, TAG, "CAUnregisterNetworkMonitorHandler");
45 return CAUnsetNetworkMonitorCallbacks(adapterStateCB, connStateCB);
48 CAResult_t CASetAutoConnectionDeviceInfo(const char *address)
50 OIC_LOG(DEBUG, TAG, "CASetAutoConnectionDeviceInfo");
52 #if (defined(__ANDROID__) || defined(__APPLE__)) && defined(LE_ADAPTER)
53 return CASetLEClientAutoConnectionDeviceInfo(address);
56 return CA_NOT_SUPPORTED;
60 CAResult_t CAUnsetAutoConnectionDeviceInfo(const char *address)
62 OIC_LOG(DEBUG, TAG, "CAUnsetAutoConnectionDeviceInfo");
64 #if (defined(__ANDROID__) || defined(__APPLE__)) && defined(LE_ADAPTER)
65 return CAUnsetLEClientAutoConnectionDeviceInfo(address);
68 return CA_NOT_SUPPORTED;
74 CAResult_t CAUtilClientInitialize()
76 OIC_LOG(DEBUG, TAG, "CAUtilClientInitialize");
78 CAResult_t res = CA_STATUS_OK;
80 if (CA_STATUS_OK != CAManagerLEClientInitialize()) {
81 OIC_LOG(ERROR, TAG, "CAManagerLEClientInitialize has failed");
82 res = CA_STATUS_FAILED;
85 OIC_LOG(DEBUG, TAG, "it is not supported");
86 res = CA_NOT_SUPPORTED;
92 CAResult_t CAUtilClientTerminate()
94 OIC_LOG(DEBUG, TAG, "CAUtilClientTerminate");
96 return CAManagerLEClientTerminate();
98 OIC_LOG(DEBUG, TAG, "it is not supported");
99 return CA_NOT_SUPPORTED;
103 CAResult_t CAUtilStopLEScan()
105 OIC_LOG(DEBUG, TAG, "CAUtilStopLEScan");
107 CAManagerLEStopScan();
110 OIC_LOG(DEBUG, TAG, "it is not supported");
111 return CA_NOT_SUPPORTED;
115 CAResult_t CAUtilStartLEScan()
117 OIC_LOG(DEBUG, TAG, "CAUtilStartLEScan");
119 CAManagerLEStartScan();
122 OIC_LOG(DEBUG, TAG, "it is not supported");
123 return CA_NOT_SUPPORTED;
127 CAResult_t CAUtilClientDisconnect()
129 OIC_LOG(DEBUG, TAG, "CAUtilClientDisconnect");
131 CAManagerLEDisconnect();
134 OIC_LOG(DEBUG, TAG, "it is not supported");
135 return CA_NOT_SUPPORTED;
141 CAResult_t CASetPortNumberToAssign(CATransportAdapter_t adapter, CATransportFlags_t flag, uint16_t port)
143 uint16_t *targetPort = 0;
145 if (CA_ADAPTER_IP & adapter) {
146 if (CA_SECURE & flag) {
147 if (CA_IPV6 & flag) {
148 targetPort = &caglobals.ports.udp.u6s;
149 } else if (CA_IPV4 & flag) {
150 targetPort = &caglobals.ports.udp.u4s;
153 if (CA_IPV6 & flag) {
154 targetPort = &caglobals.ports.udp.u6;
155 } else if (CA_IPV4 & flag) {
156 targetPort = &caglobals.ports.udp.u4;
161 if (CA_ADAPTER_TCP & adapter) {
162 if (CA_IPV6 & flag) {
163 targetPort = &caglobals.ports.tcp.u6;
164 } else if (CA_IPV4 & flag) {
165 targetPort = &caglobals.ports.tcp.u4;
175 return CA_NOT_SUPPORTED;
178 uint16_t CAGetAssignedPortNumber(CATransportAdapter_t adapter, CATransportFlags_t flag)
180 OIC_LOG(DEBUG, TAG, "CAGetAssignedPortNumber");
182 if (CA_ADAPTER_IP & adapter) {
183 if (CA_SECURE & flag) {
184 if (CA_IPV6 & flag) {
185 return caglobals.ip.u6s.port;
186 } else if (CA_IPV4 & flag) {
187 return caglobals.ip.u4s.port;
190 if (CA_IPV6 & flag) {
191 return caglobals.ip.u6.port;
192 } else if (CA_IPV4 & flag) {
193 return caglobals.ip.u4.port;
198 if (CA_ADAPTER_TCP & adapter) {
199 if (CA_SECURE & flag) {
200 if (CA_IPV6 & flag) {
201 return caglobals.tcp.ipv6s.port;
202 } else if (CA_IPV4 & flag) {
203 return caglobals.tcp.ipv4s.port;
206 if (CA_IPV6 & flag) {
207 return caglobals.tcp.ipv6.port;
208 } else if (CA_IPV4 & flag) {
209 return caglobals.tcp.ipv4.port;
217 #if defined(__TIZEN__) && defined(LE_ADAPTER) && defined(BLE_CUSTOM_ADVERTISE)
218 CAResult_t CASetAdvertisementData(const char* data, int length)
220 return CAManagerLEServerSetAdvertisementData(data, length);
222 void CASetAdvertisementDataGetter(CAAdvertisementDataGetterCB getter)
224 CAManagerLEServerSetAdvertisementDataGetter(getter);
226 void CASetAutoAdvertisement(bool autoAdvertisement)
228 CAManagerLEServerSetAutoAdvertisement(autoAdvertisement);
230 CAResult_t CASetScanResponseData(const char* data, int length)
232 return CAManagerLEServerSetScanResponseData(data, length);
238 * initialize client connection manager
239 * @param[in] env JNI interface pointer.
240 * @param[in] jvm invocation inferface for JAVA virtual machine.
241 * @param[in] context application context.
243 CAResult_t CAUtilClientInitialize(JNIEnv *env, JavaVM *jvm, jobject context)
245 OIC_LOG(DEBUG, TAG, "CAUtilClientInitialize");
247 CAResult_t res = CA_STATUS_OK;
249 if (CA_STATUS_OK != CAManagerLEClientInitialize(env, jvm, context)) {
250 OIC_LOG(ERROR, TAG, "CAManagerLEClientInitialize has failed");
251 res = CA_STATUS_FAILED;
256 if (CA_STATUS_OK != CABTPairingInitialize(env, jvm, context)) {
257 OIC_LOG(ERROR, TAG, "CABTPairingInitialize has failed");
258 res = CA_STATUS_FAILED;
262 #if !defined(LE_ADAPTER) && !defined(EDR_ADAPTER)
271 * terminate client connection manager
272 * @param[in] env JNI interface pointer.
274 CAResult_t CAUtilClientTerminate(JNIEnv *env)
276 OIC_LOG(DEBUG, TAG, "CAUtilClientTerminate");
278 return CAManagerLEClientTerminate(env);
280 OIC_LOG(DEBUG, TAG, "it is not supported");
282 return CA_NOT_SUPPORTED;
287 CAResult_t CAUtilStartScan(JNIEnv *env)
290 return CABTPairingStartScan(env);
292 OIC_LOG(DEBUG, TAG, "it is not supported");
294 return CA_NOT_SUPPORTED;
298 CAResult_t CAUtilStopScan(JNIEnv *env)
301 return CABTPairingStopScan(env);
303 OIC_LOG(DEBUG, TAG, "it is not supported");
305 return CA_NOT_SUPPORTED;
309 CAResult_t CAUtilCreateBond(JNIEnv *env, jobject device)
312 return CABTPairingCreateBond(env, device);
314 OIC_LOG(DEBUG, TAG, "it is not supported");
317 return CA_NOT_SUPPORTED;
321 void CAUtilSetFoundDeviceListener(jobject listener)
324 CABTPairingSetFoundDeviceListener(listener);
330 CAResult_t CAUtilSetLEScanInterval(jint intervalTime, jint workingCount)
332 OIC_LOG(DEBUG, TAG, "CAUtilSetLEScanInterval");
334 CAManagerLESetScanInterval(intervalTime, workingCount);
339 OIC_LOG(DEBUG, TAG, "it is not supported");
340 return CA_NOT_SUPPORTED;
344 CAResult_t CAUtilStopLEScan()
346 OIC_LOG(DEBUG, TAG, "CAUtilStopLEScan");
348 CAManagerLEStopScan();
351 OIC_LOG(DEBUG, TAG, "it is not supported");
352 return CA_NOT_SUPPORTED;
355 #endif // __ANDROID__
357 CAResult_t CAUtilStartLEAdvertising()
359 OIC_LOG(DEBUG, TAG, "CAUtilStartLEAdvertising");
360 #if (defined(__ANDROID__) || defined(__TIZEN__)) && defined(LE_ADAPTER)
361 return CAManagerLEStartAdvertising();
363 OIC_LOG(DEBUG, TAG, "it is not supported");
364 return CA_NOT_SUPPORTED;
368 CAResult_t CAUtilStopLEAdvertising()
370 OIC_LOG(DEBUG, TAG, "CAUtilStopLEAdvertising");
371 #if (defined(__ANDROID__) || defined(__TIZEN__)) && defined(LE_ADAPTER)
372 return CAManagerLEStopAdvertising();
374 OIC_LOG(DEBUG, TAG, "it is not supported");
375 return CA_NOT_SUPPORTED;
379 CAResult_t CAUtilSetBTConfigure(CAUtilConfig_t config)
381 OIC_LOG_V(DEBUG, TAG, "CAUtilSetConfigure");
382 #if (defined(__ANDROID__) && defined(LE_ADAPTER))
383 OIC_LOG_V(DEBUG, TAG, " - bleFlag [%d]", config.bleFlags);
384 CAManagerSetConfigure(config);
388 OIC_LOG(DEBUG, TAG, "it is not supported");
389 return CA_NOT_SUPPORTED;
393 void CAUtilSetLogLevel(CAUtilLogLevel_t level, bool hidePrivateLogEntries)
395 OIC_LOG(DEBUG, TAG, "CAUtilSetLogLevel");
396 LogLevel logLevel = DEBUG;
398 case CA_LOG_LEVEL_ALL:
401 case CA_LOG_LEVEL_INFO:
409 OCSetLogLevel(logLevel, hidePrivateLogEntries);
412 CAResult_t CAUtilSetMulticastTTL(size_t ttl)
414 OIC_LOG(DEBUG, TAG, "CAUtilSetMulticastTTL");
417 OIC_LOG(ERROR, TAG, "TTL value is invalid");
418 return CA_STATUS_INVALID_PARAM;
421 OIC_LOG(INFO, TAG, "TTL value is not supported");
422 return CA_NOT_SUPPORTED;
424 return CASetMulticastTTL(ttl);
427 OIC_LOG(DEBUG, TAG, "it is not supported");
428 return CA_NOT_SUPPORTED;
432 CAResult_t CAUtilGetMulticastTTL(size_t *ttl)
434 OIC_LOG(DEBUG, TAG, "CAUtilGetMulticastTTL");
436 return CAGetMulticastTTL(ttl);
439 OIC_LOG(DEBUG, TAG, "it is not supported");
440 return CA_NOT_SUPPORTED;
444 CAResult_t CAUtilTCPDisconnectSession(const char *address, uint16_t port, CATransportFlags_t flags)
446 OIC_LOG(DEBUG, TAG, "CAUtilTCPDisconnectSession");
448 CARequestInfo_t reqInfo = {.info.event = CA_REQ_DISCONNECT};
449 CAEndpoint_t *endpoint = CACreateEndpointObject(flags, CA_ADAPTER_TCP, address, port);
451 return CA_STATUS_FAILED;
454 CAResult_t caResult = CASendRequest(endpoint, &reqInfo);
455 if (CA_STATUS_OK != caResult) {
456 OIC_LOG(ERROR, TAG, "CASendRequest error");
458 CAFreeEndpoint(endpoint);
464 OIC_LOG(DEBUG, TAG, "it is not supported");
465 return CA_NOT_SUPPORTED;
469 void CAUtilSkipTCPCloseOnInterfaceDown(bool state)
472 CATCPSkipCloseOnInterfaceDown(state);
475 OIC_LOG(DEBUG, TAG, "Not supported!");
479 CAResult_t CAUtilStartGattServer()
481 OIC_LOG(DEBUG, TAG, "CAUtilStartGattServer");
482 CAResult_t res = CA_STATUS_OK;
483 #if (defined(__TIZEN__) && defined(LE_ADAPTER))
486 OIC_LOG(DEBUG, TAG, "it is not supported");
487 res = CA_NOT_SUPPORTED;
492 CAResult_t CAUtilStopGattServer()
494 OIC_LOG(DEBUG, TAG, "CAUtilStopGattServer");
495 CAResult_t res = CA_STATUS_OK;
496 #if (defined(__TIZEN__) && defined(LE_ADAPTER))
499 OIC_LOG(DEBUG, TAG, "it is not supported");
500 res = CA_NOT_SUPPORTED;
505 CAResult_t CAGetTCPIPHeader(CATransportAdapter_t adapter, int flag, TCPHeaderInfo* info)
507 CAResult_t res = CA_STATUS_OK;
509 if (CA_ADAPTER_TCP & adapter) {
510 res = CAGetTCPIPHeaderInfo(flag,info);
513 res = CA_NOT_SUPPORTED;
515 res = CA_NOT_SUPPORTED;
516 OIC_LOG(DEBUG, TAG, "Not supported!");