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 #if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
32 #include "ca_adapter_net_ssl.h"
35 #define TAG "OIC_CA_COMMON_UTILS"
37 #if defined(__ANDROID__)
39 void CASetLEScanUuid(char* uuid, int uuid_type)
41 OIC_LOG(DEBUG, TAG, "CASetLEScanUuid");
43 CASetScanUuid(uuid, uuid_type);
45 OIC_LOG(DEBUG, TAG, "it is not supported");
52 CAResult_t CARegisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB, CAConnectionStateChangedCB connStateCB)
54 OIC_LOG(DEBUG, TAG, "CARegisterNetworkMonitorHandler");
56 CASetNetworkMonitorCallbacks(adapterStateCB, connStateCB);
60 CAResult_t CAUnregisterNetworkMonitorHandler(CAAdapterStateChangedCB adapterStateCB, CAConnectionStateChangedCB connStateCB)
62 OIC_LOG(DEBUG, TAG, "CAUnregisterNetworkMonitorHandler");
64 return CAUnsetNetworkMonitorCallbacks(adapterStateCB, connStateCB);
67 CAResult_t CASetAutoConnectionDeviceInfo(const char *address)
69 OIC_LOG(DEBUG, TAG, "CASetAutoConnectionDeviceInfo");
71 #if (defined(__ANDROID__) || defined(__APPLE__)) && defined(LE_ADAPTER)
72 return CASetLEClientAutoConnectionDeviceInfo(address);
75 return CA_NOT_SUPPORTED;
79 CAResult_t CAUnsetAutoConnectionDeviceInfo(const char *address)
81 OIC_LOG(DEBUG, TAG, "CAUnsetAutoConnectionDeviceInfo");
83 #if (defined(__ANDROID__) || defined(__APPLE__)) && defined(LE_ADAPTER)
84 return CAUnsetLEClientAutoConnectionDeviceInfo(address);
87 return CA_NOT_SUPPORTED;
93 CAResult_t CAUtilClientInitialize()
95 OIC_LOG(DEBUG, TAG, "CAUtilClientInitialize");
97 CAResult_t res = CA_STATUS_OK;
99 if (CA_STATUS_OK != CAManagerLEClientInitialize()) {
100 OIC_LOG(ERROR, TAG, "CAManagerLEClientInitialize has failed");
101 res = CA_STATUS_FAILED;
104 OIC_LOG(DEBUG, TAG, "it is not supported");
105 res = CA_NOT_SUPPORTED;
111 CAResult_t CAUtilClientTerminate()
113 OIC_LOG(DEBUG, TAG, "CAUtilClientTerminate");
115 return CAManagerLEClientTerminate();
117 OIC_LOG(DEBUG, TAG, "it is not supported");
118 return CA_NOT_SUPPORTED;
122 CAResult_t CAUtilStopLEScan()
124 OIC_LOG(DEBUG, TAG, "CAUtilStopLEScan");
126 CAManagerLEStopScan();
129 OIC_LOG(DEBUG, TAG, "it is not supported");
130 return CA_NOT_SUPPORTED;
134 CAResult_t CAUtilStartLEScan()
136 OIC_LOG(DEBUG, TAG, "CAUtilStartLEScan");
138 CAManagerLEStartScan();
141 OIC_LOG(DEBUG, TAG, "it is not supported");
142 return CA_NOT_SUPPORTED;
146 CAResult_t CAUtilClientDisconnect()
148 OIC_LOG(DEBUG, TAG, "CAUtilClientDisconnect");
150 CAManagerLEDisconnect();
153 OIC_LOG(DEBUG, TAG, "it is not supported");
154 return CA_NOT_SUPPORTED;
160 CAResult_t CASetPortNumberToAssign(CATransportAdapter_t adapter, CATransportFlags_t flag, uint16_t port)
162 uint16_t *targetPort = 0;
164 if (CA_ADAPTER_IP & adapter) {
165 if (CA_SECURE & flag) {
166 if (CA_IPV6 & flag) {
167 targetPort = &caglobals.ports.udp.u6s;
168 } else if (CA_IPV4 & flag) {
169 targetPort = &caglobals.ports.udp.u4s;
172 if (CA_IPV6 & flag) {
173 targetPort = &caglobals.ports.udp.u6;
174 } else if (CA_IPV4 & flag) {
175 targetPort = &caglobals.ports.udp.u4;
180 if (CA_ADAPTER_TCP & adapter) {
181 if (CA_IPV6 & flag) {
182 targetPort = &caglobals.ports.tcp.u6;
183 } else if (CA_IPV4 & flag) {
184 targetPort = &caglobals.ports.tcp.u4;
194 return CA_NOT_SUPPORTED;
197 uint16_t CAGetAssignedPortNumber(CATransportAdapter_t adapter, CATransportFlags_t flag)
199 OIC_LOG(DEBUG, TAG, "CAGetAssignedPortNumber");
201 if (CA_ADAPTER_IP & adapter) {
202 if (CA_SECURE & flag) {
203 if (CA_IPV6 & flag) {
204 return caglobals.ip.u6s.port;
205 } else if (CA_IPV4 & flag) {
206 return caglobals.ip.u4s.port;
209 if (CA_IPV6 & flag) {
210 return caglobals.ip.u6.port;
211 } else if (CA_IPV4 & flag) {
212 return caglobals.ip.u4.port;
217 if (CA_ADAPTER_TCP & adapter) {
218 if (CA_SECURE & flag) {
219 if (CA_IPV6 & flag) {
220 return caglobals.tcp.ipv6s.port;
221 } else if (CA_IPV4 & flag) {
222 return caglobals.tcp.ipv4s.port;
225 if (CA_IPV6 & flag) {
226 return caglobals.tcp.ipv6.port;
227 } else if (CA_IPV4 & flag) {
228 return caglobals.tcp.ipv4.port;
236 #if defined(__TIZEN__) && defined(LE_ADAPTER) && defined(BLE_CUSTOM_ADVERTISE)
237 CAResult_t CASetAdvertisementData(const char* data, int length)
239 return CAManagerLEServerSetAdvertisementData(data, length);
241 void CASetAdvertisementDataGetter(CAAdvertisementDataGetterCB getter)
243 CAManagerLEServerSetAdvertisementDataGetter(getter);
245 void CASetAutoAdvertisement(bool autoAdvertisement)
247 CAManagerLEServerSetAutoAdvertisement(autoAdvertisement);
249 CAResult_t CASetScanResponseData(const char* data, int length)
251 return CAManagerLEServerSetScanResponseData(data, length);
257 * initialize client connection manager
258 * @param[in] env JNI interface pointer.
259 * @param[in] jvm invocation inferface for JAVA virtual machine.
260 * @param[in] context application context.
262 CAResult_t CAUtilClientInitialize(JNIEnv *env, JavaVM *jvm, jobject context)
264 OIC_LOG(DEBUG, TAG, "CAUtilClientInitialize");
266 CAResult_t res = CA_STATUS_OK;
268 if (CA_STATUS_OK != CAManagerLEClientInitialize(env, jvm, context)) {
269 OIC_LOG(ERROR, TAG, "CAManagerLEClientInitialize has failed");
270 res = CA_STATUS_FAILED;
275 if (CA_STATUS_OK != CABTPairingInitialize(env, jvm, context)) {
276 OIC_LOG(ERROR, TAG, "CABTPairingInitialize has failed");
277 res = CA_STATUS_FAILED;
281 #if !defined(LE_ADAPTER) && !defined(EDR_ADAPTER)
290 * terminate client connection manager
291 * @param[in] env JNI interface pointer.
293 CAResult_t CAUtilClientTerminate(JNIEnv *env)
295 OIC_LOG(DEBUG, TAG, "CAUtilClientTerminate");
297 return CAManagerLEClientTerminate(env);
299 OIC_LOG(DEBUG, TAG, "it is not supported");
301 return CA_NOT_SUPPORTED;
306 CAResult_t CAUtilStartScan(JNIEnv *env)
309 return CABTPairingStartScan(env);
311 OIC_LOG(DEBUG, TAG, "it is not supported");
313 return CA_NOT_SUPPORTED;
317 CAResult_t CAUtilStopScan(JNIEnv *env)
320 return CABTPairingStopScan(env);
322 OIC_LOG(DEBUG, TAG, "it is not supported");
324 return CA_NOT_SUPPORTED;
328 CAResult_t CAUtilCreateBond(JNIEnv *env, jobject device)
331 return CABTPairingCreateBond(env, device);
333 OIC_LOG(DEBUG, TAG, "it is not supported");
336 return CA_NOT_SUPPORTED;
340 void CAUtilSetFoundDeviceListener(jobject listener)
343 CABTPairingSetFoundDeviceListener(listener);
349 CAResult_t CAUtilSetLEScanInterval(jint intervalTime, jint workingCount)
351 OIC_LOG(DEBUG, TAG, "CAUtilSetLEScanInterval");
353 CAManagerLESetScanInterval(intervalTime, workingCount);
358 OIC_LOG(DEBUG, TAG, "it is not supported");
359 return CA_NOT_SUPPORTED;
363 CAResult_t CAUtilStopLEScan()
365 OIC_LOG(DEBUG, TAG, "CAUtilStopLEScan");
367 CAManagerLEStopScan();
370 OIC_LOG(DEBUG, TAG, "it is not supported");
371 return CA_NOT_SUPPORTED;
374 #endif // __ANDROID__
376 CAResult_t CAUtilStartLEAdvertising()
378 OIC_LOG(DEBUG, TAG, "CAUtilStartLEAdvertising");
379 #if (defined(__ANDROID__) || defined(__TIZEN__)) && defined(LE_ADAPTER)
380 return CAManagerLEStartAdvertising();
382 OIC_LOG(DEBUG, TAG, "it is not supported");
383 return CA_NOT_SUPPORTED;
387 CAResult_t CAUtilStopLEAdvertising()
389 OIC_LOG(DEBUG, TAG, "CAUtilStopLEAdvertising");
390 #if (defined(__ANDROID__) || defined(__TIZEN__)) && defined(LE_ADAPTER)
391 return CAManagerLEStopAdvertising();
393 OIC_LOG(DEBUG, TAG, "it is not supported");
394 return CA_NOT_SUPPORTED;
398 CAResult_t CAUtilSetBTConfigure(CAUtilConfig_t config)
400 OIC_LOG_V(DEBUG, TAG, "CAUtilSetConfigure");
401 #if (defined(__ANDROID__) && defined(LE_ADAPTER))
402 OIC_LOG_V(DEBUG, TAG, " - bleFlag [%d]", config.bleFlags);
403 CAManagerSetConfigure(config);
407 OIC_LOG(DEBUG, TAG, "it is not supported");
408 return CA_NOT_SUPPORTED;
412 void CAUtilSetLogLevel(CAUtilLogLevel_t level, bool hidePrivateLogEntries)
414 OIC_LOG(DEBUG, TAG, "CAUtilSetLogLevel");
415 LogLevel logLevel = DEBUG;
417 case CA_LOG_LEVEL_ALL:
420 case CA_LOG_LEVEL_INFO:
428 OCSetLogLevel(logLevel, hidePrivateLogEntries);
431 CAResult_t CAUtilSetMulticastTTL(size_t ttl)
433 OIC_LOG(DEBUG, TAG, "CAUtilSetMulticastTTL");
436 OIC_LOG(ERROR, TAG, "TTL value is invalid");
437 return CA_STATUS_INVALID_PARAM;
440 OIC_LOG(INFO, TAG, "TTL value is not supported");
441 return CA_NOT_SUPPORTED;
443 return CASetMulticastTTL(ttl);
446 OIC_LOG(DEBUG, TAG, "it is not supported");
447 return CA_NOT_SUPPORTED;
451 CAResult_t CAUtilGetMulticastTTL(size_t *ttl)
453 OIC_LOG(DEBUG, TAG, "CAUtilGetMulticastTTL");
455 return CAGetMulticastTTL(ttl);
458 OIC_LOG(DEBUG, TAG, "it is not supported");
459 return CA_NOT_SUPPORTED;
463 CAResult_t CAUtilTCPDisconnectSession(const char *address, uint16_t port, CATransportFlags_t flags)
465 OIC_LOG(DEBUG, TAG, "CAUtilTCPDisconnectSession");
467 CARequestInfo_t reqInfo = {.info.event = CA_REQ_DISCONNECT};
468 CAEndpoint_t *endpoint = CACreateEndpointObject(flags, CA_ADAPTER_TCP, address, port);
470 return CA_STATUS_FAILED;
473 CAResult_t caResult = CASendRequest(endpoint, &reqInfo);
474 if (CA_STATUS_OK != caResult) {
475 OIC_LOG(ERROR, TAG, "CASendRequest error");
477 CAFreeEndpoint(endpoint);
483 OIC_LOG(DEBUG, TAG, "it is not supported");
484 return CA_NOT_SUPPORTED;
488 void CAUtilSkipTCPCloseOnInterfaceDown(bool state)
491 CATCPSkipCloseOnInterfaceDown(state);
494 OIC_LOG(DEBUG, TAG, "Not supported!");
498 CAResult_t CASetSecureEndpointUuid(const CAEndpoint_t *peer, const char *uuid)
500 OIC_LOG(DEBUG, TAG, "CASetSecureEndpointUuid");
501 #if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
502 return SetCASecureEndpointUuid(peer, uuid);
506 OIC_LOG(DEBUG, TAG, "it is not supported");
507 return CA_NOT_SUPPORTED;
511 CAResult_t CAUtilStartGattServer()
513 OIC_LOG(DEBUG, TAG, "CAUtilStartGattServer");
514 CAResult_t res = CA_STATUS_OK;
515 #if (defined(__TIZEN__) && defined(LE_ADAPTER))
518 OIC_LOG(DEBUG, TAG, "it is not supported");
519 res = CA_NOT_SUPPORTED;
524 CAResult_t CAUtilStopGattServer()
526 OIC_LOG(DEBUG, TAG, "CAUtilStopGattServer");
527 CAResult_t res = CA_STATUS_OK;
528 #if (defined(__TIZEN__) && defined(LE_ADAPTER))
531 OIC_LOG(DEBUG, TAG, "it is not supported");
532 res = CA_NOT_SUPPORTED;
537 #if defined(__TIZEN__)
538 CAResult_t CAGetTCPIPHeader(CATransportAdapter_t adapter, int flag, TCPHeaderInfo* info)
540 CAResult_t res = CA_STATUS_OK;
542 if (CA_ADAPTER_TCP & adapter) {
543 res = CAGetTCPIPHeaderInfo(flag,info);
546 res = CA_NOT_SUPPORTED;
548 res = CA_NOT_SUPPORTED;
549 OIC_LOG(DEBUG, TAG, "Not supported!");