replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / cainterfacecontroller.c
old mode 100644 (file)
new mode 100755 (executable)
index b0ffc3f..525f79f
@@ -35,6 +35,7 @@
 #include "cathreadpool.h"
 #include "caipadapter.h"
 #include "cainterface.h"
+#include "caipinterface.h"
 #include <coap/utlist.h>
 
 #ifdef RA_ADAPTER
 #include "catcpadapter.h"
 #endif
 
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
+#include "ca_adapter_net_ssl.h"
+#endif
+
 #define TAG "OIC_CA_INF_CTR"
 
 #define CA_MEMORY_ALLOC_CHECK(arg) {if (arg == NULL) \
@@ -86,6 +91,7 @@ static int CAGetAdapterIndex(CATransportAdapter_t cType)
              return index;
          }
     }
+    OIC_LOG_V(ERROR, TAG, "adapter info [%d]", g_numberOfAdapters);
     return -1;
 }
 
@@ -160,6 +166,8 @@ static CAResult_t AddNetworkStateChangedCallback(CAAdapterStateChangedCB adapter
     callback->adapter = adapterCB;
     callback->conn = connCB;
     LL_APPEND(g_networkChangeCallbackList, callback);
+    OIC_LOG_V(INFO, TAG, "Added NetworkStateChanged Callback [%p]", callback);
+
     return CA_STATUS_OK;
 }
 
@@ -191,22 +199,6 @@ static CAResult_t RemoveNetworkStateChangedCallback(CAAdapterStateChangedCB adap
     return CA_STATUS_OK;
 }
 
-/**
- * Remove all network callback from the network callback list
- */
-static void RemoveAllNetworkStateChangedCallback()
-{
-    OIC_LOG(DEBUG, TAG, "Remove All NetworkStateChanged Callback");
-
-    CANetworkCallback_t* callback = NULL;
-    LL_FOREACH(g_networkChangeCallbackList, callback)
-    {
-        OIC_LOG(DEBUG, TAG, "remove all callbacks");
-        LL_DELETE(g_networkChangeCallbackList, callback);
-        OICFree(callback);
-    }
-}
-
 #ifdef RA_ADAPTER
 CAResult_t CASetAdapterRAInfo(const CARAInfo_t *caraInfo)
 {
@@ -214,16 +206,17 @@ CAResult_t CASetAdapterRAInfo(const CARAInfo_t *caraInfo)
 }
 #endif
 
-static void CAReceivedPacketCallback(const CASecureEndpoint_t *sep,
-                                     const void *data, uint32_t dataLen)
+static CAResult_t CAReceivedPacketCallback(const CASecureEndpoint_t *sep,
+                                           const void *data, uint32_t dataLen)
 {
     if (g_networkPacketReceivedCallback != NULL)
     {
-        g_networkPacketReceivedCallback(sep, data, dataLen);
+        return g_networkPacketReceivedCallback(sep, data, dataLen);
     }
     else
     {
-        OIC_LOG(ERROR, TAG, "network packet received callback is NULL!");
+        OIC_LOG(INFO, TAG, "network packet received callback is NULL!");
+        return CA_STATUS_OK;
     }
 }
 
@@ -235,6 +228,7 @@ static void CAAdapterChangedCallback(CATransportAdapter_t adapter, CANetworkStat
     {
         if (callback && callback->adapter)
         {
+            OIC_LOG_V(INFO, TAG, "IN application adapter changed callback [%p]", callback);
             if (CA_INTERFACE_UP == status)
             {
                 callback->adapter(adapter, true);
@@ -243,6 +237,7 @@ static void CAAdapterChangedCallback(CATransportAdapter_t adapter, CANetworkStat
             {
                 callback->adapter(adapter, false);
             }
+            OIC_LOG_V(INFO, TAG, "OUT application adapter changed callback [%p]", callback);
         }
     }
     OIC_LOG_V(DEBUG, TAG, "[%d] adapter status is changed to [%d]", adapter, status);
@@ -277,39 +272,71 @@ static void CAAdapterErrorHandleCallback(const CAEndpoint_t *endpoint,
     }
 }
 
-void CAInitializeAdapters(ca_thread_pool_t handle)
+void CAInitializeAdapters(ca_thread_pool_t handle, CATransportAdapter_t transportType)
 {
-    OIC_LOG(DEBUG, TAG, "initialize adapters..");
+    OIC_LOG_V(DEBUG, TAG, "initialize adapters %d", transportType);
+
+    // Initialize ssl adapter.
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
+    if (CA_STATUS_OK != CAinitSslAdapter())
+    {
+        OIC_LOG(ERROR, TAG, "Failed to init SSL adapter");
+    }
+#endif
 
     // Initialize adapters and register callback.
 #ifdef IP_ADAPTER
-    CAInitializeIP(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
-                   CAAdapterErrorHandleCallback, handle);
+    if ((transportType & CA_ADAPTER_IP) || (CA_DEFAULT_ADAPTER == transportType)
+            || (transportType == CA_ALL_ADAPTERS))
+    {
+        CAInitializeIP(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
+                       CAAdapterErrorHandleCallback, handle);
+    }
 #endif /* IP_ADAPTER */
 
 #ifdef EDR_ADAPTER
-    CAInitializeEDR(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
-                    CAConnectionChangedCallback, CAAdapterErrorHandleCallback, handle);
+    if ((transportType & CA_ADAPTER_RFCOMM_BTEDR) || (CA_DEFAULT_ADAPTER == transportType)
+            || (transportType == CA_ALL_ADAPTERS))
+    {
+        CAInitializeEDR(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
+                        CAConnectionChangedCallback, CAAdapterErrorHandleCallback, handle);
+    }
 #endif /* EDR_ADAPTER */
 
 #ifdef LE_ADAPTER
-    CAInitializeLE(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
-                   CAConnectionChangedCallback, CAAdapterErrorHandleCallback, handle);
+    if ((transportType & CA_ADAPTER_GATT_BTLE) || (CA_DEFAULT_ADAPTER == transportType)
+            || (transportType == CA_ALL_ADAPTERS))
+    {
+        CAInitializeLE(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
+                       CAConnectionChangedCallback, CAAdapterErrorHandleCallback, handle);
+    }
 #endif /* LE_ADAPTER */
 
 #ifdef RA_ADAPTER
-    CAInitializeRA(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
-                   handle);
+    if ((transportType & CA_ADAPTER_REMOTE_ACCESS) || (CA_DEFAULT_ADAPTER == transportType)
+            || (transportType == CA_ALL_ADAPTERS))
+    {
+        CAInitializeRA(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
+                       handle);
+    }
 #endif /* RA_ADAPTER */
 
 #ifdef TCP_ADAPTER
-    CAInitializeTCP(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
-                    CAConnectionChangedCallback, CAAdapterErrorHandleCallback, handle);
+    if ((transportType & CA_ADAPTER_TCP) || (CA_DEFAULT_ADAPTER == transportType)
+            || (transportType == CA_ALL_ADAPTERS))
+    {
+        CAInitializeTCP(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
+                        CAConnectionChangedCallback, CAAdapterErrorHandleCallback, handle);
+    }
 #endif /* TCP_ADAPTER */
 
 #ifdef NFC_ADAPTER
-    CAInitializeNFC(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
-                    CAAdapterErrorHandleCallback, handle);
+    if ((transportType & CA_ADAPTER_NFC) || (CA_DEFAULT_ADAPTER == transportType)
+            || (transportType == CA_ALL_ADAPTERS))
+    {
+        CAInitializeNFC(CARegisterCallback, CAReceivedPacketCallback, CAAdapterChangedCallback,
+                        CAAdapterErrorHandleCallback, handle);
+    }
 #endif /* NFC_ADAPTER */
 }
 
@@ -423,12 +450,14 @@ CAResult_t CAGetNetworkInfo(CAEndpoint_t **info, uint32_t *size)
                 resSize += tempSize[index];
             }
 
+#ifndef __TIZENRT__
             OIC_LOG_V(DEBUG,
                       TAG,
                       "%" PRIu32 " adapter network info size is %" PRIu32 " res:%d",
                       index,
                       tempSize[index],
                       res);
+#endif
         }
     }
 
@@ -532,7 +561,7 @@ CAResult_t CASendUnicastData(const CAEndpoint_t *endpoint, const void *data, uin
 
         if (-1 == index)
         {
-            OIC_LOG(ERROR, TAG, "unknown transport type!");
+            OIC_LOG_V(ERROR, TAG, "unknown transport type[%d]", connType);
             return CA_STATUS_INVALID_PARAM;
         }
 
@@ -759,6 +788,10 @@ void CATerminateAdapters()
         }
     }
 
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
+    CAdeinitSslAdapter();
+#endif
+
     OICFree(g_adapterHandler);
     g_adapterHandler = NULL;
     g_numberOfAdapters = 0;
@@ -803,3 +836,33 @@ CAResult_t CAReadData()
 }
 #endif
 
+#ifdef IP_ADAPTER
+CAResult_t CASetMulticastTTL(size_t ttl)
+{
+    return CAIPSetMulticastTTL(ttl);
+}
+
+CAResult_t CAGetMulticastTTL(size_t *ttl)
+{
+    return CAIPGetMulticastTTL(ttl);
+}
+#endif
+
+#ifdef TCP_ADAPTER
+CAResult_t CADisconnectSession(const CAEndpoint_t *endpoint)
+{
+    return CATCPDisconnectSession(endpoint);
+}
+#endif
+
+#ifdef LE_ADAPTER
+void CAStartGattServer()
+{
+       CALEStartGattServer();
+}
+
+void CAStopGattServer()
+{
+       CALEStopGattServer();
+}
+#endif