replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / canetworkconfigurator.c
index 51b409a..9f822e4 100644 (file)
 #include <stdlib.h>
 
 #include "canetworkconfigurator.h"
+#include "cainterfacecontroller.h"
 #include "uarraylist.h"
 #include "logger.h"
-#include "cainterfacecontroller.h"
 
-#define TAG PCF("CA")
+#define TAG "OIC_CA_NW_CONFIG"
+
+static u_arraylist_t *g_selectedNetworkList = NULL;
+
+#ifdef EDR_ADAPTER
+static uint32_t NETWORK_RFCOMM = CA_ADAPTER_RFCOMM_BTEDR;
+#endif
 
-static u_arraylist_t *gSelectedNetworkList = NULL;
-static uint32_t NETWORK_ETHERNET = CA_ETHERNET;
-static uint32_t NETWORK_WIFI = CA_WIFI;
-static uint32_t NETWORK_EDR = CA_EDR;
-static uint32_t NETWORK_LE = CA_LE;
+#ifdef LE_ADAPTER
+static uint32_t NETWORK_GATT = CA_ADAPTER_GATT_BTLE;
+#endif
 
+#ifdef IP_ADAPTER
+static uint32_t NETWORK_IP = CA_ADAPTER_IP;
+#endif
 
-CAResult_t CAAddNetworkType(uint32_t ConnectivityType)
+#ifdef NFC_ADAPTER
+static uint32_t NETWORK_NFC = CA_ADAPTER_NFC;
+#endif
+
+#ifdef RA_ADAPTER
+static uint32_t NETWORK_RA = CA_ADAPTER_REMOTE_ACCESS;
+#endif
+
+#ifdef TCP_ADAPTER
+static uint32_t NETWORK_TCP = CA_ADAPTER_TCP;
+#endif
+
+CAResult_t CAAddNetworkType(CATransportAdapter_t transportType)
 {
-    if (gSelectedNetworkList == NULL)
+    if (NULL == g_selectedNetworkList)
     {
-        OIC_LOG_V(DEBUG, TAG, "Create network list");
+        OIC_LOG(DEBUG, TAG, "Create network list");
 
-        gSelectedNetworkList = u_arraylist_create();
+        g_selectedNetworkList = u_arraylist_create();
 
-        if( gSelectedNetworkList == NULL )
+        if (NULL == g_selectedNetworkList)
         {
-            return CA_STATUS_FAILED;
+            return CA_MEMORY_ALLOC_FAILED;
         }
     }
-
-    switch (ConnectivityType)
+    bool res = true;
+    switch (transportType)
     {
-        case CA_ETHERNET:
-        {
-
-#ifndef ETHERNET_ADAPTER
-            OIC_LOG_V(DEBUG, TAG, "Add network type(ETHERNET) - Not Supported");
+        case CA_ADAPTER_IP:
+#ifndef IP_ADAPTER
             return CA_NOT_SUPPORTED;
-#endif /* ETHERNET_ADAPTER */
+#else
 
-            OIC_LOG_V(DEBUG, TAG, "Add network type(ETHERNET)");
-            if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_ETHERNET))
+            if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_IP))
             {
-                u_arraylist_add(gSelectedNetworkList, &NETWORK_ETHERNET);
+                goto exit;
             }
-        }
-            break;
+            res = u_arraylist_add(g_selectedNetworkList, &NETWORK_IP);
 
-        case CA_WIFI:
-        {
+            break;
+#endif // IP_ADAPTER
 
-#ifndef WIFI_ADAPTER
-            OIC_LOG_V(DEBUG, TAG, "Add network type(WIFI) - Not Supported");
+        case CA_ADAPTER_RFCOMM_BTEDR:
+#ifndef EDR_ADAPTER
             return CA_NOT_SUPPORTED;
-#endif /* WIFI_ADAPTER */
+#else
 
-            OIC_LOG_V(DEBUG, TAG, "Add network type(WIFI)");
-            if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_WIFI))
+            if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_RFCOMM))
             {
-                u_arraylist_add(gSelectedNetworkList, &NETWORK_WIFI);
+                goto exit;
             }
-        }
-            break;
+            res = u_arraylist_add(g_selectedNetworkList, &NETWORK_RFCOMM);
 
-        case CA_EDR:
-        {
+            break;
+#endif // EDR_ADAPTER
 
-#ifndef EDR_ADAPTER
-            OIC_LOG_V(DEBUG, TAG, "Add network type(EDR) - Not Supported");
+        case CA_ADAPTER_GATT_BTLE:
+#ifndef LE_ADAPTER
             return CA_NOT_SUPPORTED;
-#endif /* EDR_ADAPTER */
+#else
 
-            OIC_LOG_V(DEBUG, TAG, "Add network type(EDR)");
-            if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_EDR))
+            if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_GATT))
             {
-                u_arraylist_add(gSelectedNetworkList, &NETWORK_EDR);
+                goto exit;
             }
-        }
+            res = u_arraylist_add(g_selectedNetworkList, &NETWORK_GATT);
+
             break;
+#endif // LE_ADAPTER
 
-        case CA_LE:
-        {
+#ifdef RA_ADAPTER
+        case CA_ADAPTER_REMOTE_ACCESS:
 
-#ifndef LE_ADAPTER
-            OIC_LOG_V(DEBUG, TAG, "Add network type(LE) - Not Supported");
+           if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_RA))
+           {
+               goto exit;
+           }
+           res = u_arraylist_add(g_selectedNetworkList, &NETWORK_RA);
+           break;
+#endif // RA_ADAPTER
+
+#ifdef TCP_ADAPTER
+        case CA_ADAPTER_TCP:
+
+           if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_TCP))
+           {
+               goto exit;
+           }
+           res = u_arraylist_add(g_selectedNetworkList, &NETWORK_TCP);
+           break;
+#endif // TCP_ADAPTER
+
+
+        case CA_ADAPTER_NFC:
+ #ifndef NFC_ADAPTER
             return CA_NOT_SUPPORTED;
-#endif /* LE_ADAPTER */
 
-            OIC_LOG_V(DEBUG, TAG, "Add network type(LE)");
-            if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_LE))
-            {
-                u_arraylist_add(gSelectedNetworkList, &NETWORK_LE);
-            }
-        }
-            break;
+#else
+           if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_NFC))
+           {
+               goto exit;
+           }
+           res = u_arraylist_add(g_selectedNetworkList, &NETWORK_NFC);
 
+           break;
+#endif // CA_ADAPTER_NFC
+
+        default:
+            break;
     }
 
+    if (!res)
+    {
+        OIC_LOG_V(ERROR, TAG, "Add arraylist failed[Err code: %d]", res);
+        return CA_STATUS_FAILED;
+    }
     // start selected interface adapter
-    CAStartAdapter((CAConnectivityType_t)ConnectivityType);
+    CAResult_t result = CAStartAdapter(transportType);
+    return result;
 
+exit:
+    OIC_LOG(DEBUG, TAG, "This adapter is already enabled");
     return CA_STATUS_OK;
 }
 
-CAResult_t CARemoveNetworkType(uint32_t ConnectivityType)
+CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
 {
-    uint8_t index;
-    CAConnectivityType_t connType;
-
-    if (gSelectedNetworkList == NULL)
+    if (NULL == g_selectedNetworkList)
     {
-        OIC_LOG_V(DEBUG, TAG, "Selected network not found");
+        OIC_LOG(ERROR, TAG, "SelectedNetwork list is NULL");
 
         return CA_STATUS_FAILED;
     }
 
-    for (index = 0; index < u_arraylist_length(gSelectedNetworkList); index++)
+    uint32_t selectedNetworkLength = u_arraylist_length(g_selectedNetworkList);
+    for (uint32_t index = 0; index < selectedNetworkLength; index++)
     {
-        void* ptrType = u_arraylist_get(gSelectedNetworkList, index);
-
-        if(ptrType == NULL)
+        void* ptrType = u_arraylist_get(g_selectedNetworkList, index);
+        if (NULL == ptrType)
         {
             continue;
         }
 
-        connType = *(CAConnectivityType_t *) ptrType;
+        CATransportAdapter_t connType = *(CATransportAdapter_t *)ptrType;
 
-        if (ConnectivityType == connType)
+        if (transportType == connType)
         {
-            switch (ConnectivityType)
+            switch (transportType)
             {
-                case CA_ETHERNET:
-
-#ifndef ETHERNET_ADAPTER
-                    OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET) - Not Supported");
+                case CA_ADAPTER_IP:
+#ifndef IP_ADAPTER
+                    OIC_LOG(DEBUG, TAG, "Remove network type(IP) - Not Supported");
                     return CA_NOT_SUPPORTED;
 #else
 
-                    OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET)");
-                    u_arraylist_remove(gSelectedNetworkList, index);
-#endif /* ETHERNET_ADAPTER */
-                    break;
+                    OIC_LOG(DEBUG, TAG, "Remove network type(IP)");
+                    u_arraylist_remove(g_selectedNetworkList, index);
 
-                case CA_WIFI:
+                    break;
+#endif //IP_ADAPTER
 
-#ifndef WIFI_ADAPTER
-                    OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI) - Not Supported");
+                case CA_ADAPTER_RFCOMM_BTEDR:
+#ifndef EDR_ADAPTER
+                    OIC_LOG(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
                     return CA_NOT_SUPPORTED;
 #else
-                    OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI)");
-                    u_arraylist_remove(gSelectedNetworkList, index);
-#endif /* WIFI_ADAPTER */
+                    OIC_LOG(DEBUG, TAG, "Remove network type(EDR)");
+                    u_arraylist_remove(g_selectedNetworkList, index);
 
                     break;
+#endif // EDR_ADAPTER
 
-                case CA_EDR:
-
-#ifndef EDR_ADAPTER
-                    OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
+                case CA_ADAPTER_GATT_BTLE:
+#ifndef LE_ADAPTER
+                    OIC_LOG(DEBUG, TAG, "Remove network type(LE) - Not Supported");
                     return CA_NOT_SUPPORTED;
 #else
-                    OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR)");
-                    u_arraylist_remove(gSelectedNetworkList, index);
-#endif /* EDR_ADAPTER */
+                    OIC_LOG(DEBUG, TAG, "Remove network type(LE)");
+                    u_arraylist_remove(g_selectedNetworkList, index);
 
                     break;
+#endif // LE_ADAPTER
 
-                case CA_LE:
+#ifdef RA_ADAPTER
+                case CA_ADAPTER_REMOTE_ACCESS:
+                    OIC_LOG(DEBUG, TAG, "Remove network type(RA)");
+                    u_arraylist_remove(g_selectedNetworkList, index);
+                    break;
+#endif // RA_ADAPTER
 
-#ifndef LE_ADAPTER
-                    OIC_LOG_V(DEBUG, TAG, "Remove network type(LE) - Not Supported");
+#ifdef TCP_ADAPTER
+                case CA_ADAPTER_TCP:
+                    OIC_LOG(DEBUG, TAG, "Remove network type(TCP)");
+                    u_arraylist_remove(g_selectedNetworkList, index);
+                    break;
+#endif // TCP_ADAPTER
+
+#ifndef NFC_ADAPTER
+                case CA_ADAPTER_NFC:
+                    OIC_LOG(DEBUG, TAG, "Add network type(NFC) - Not Supported");
                     return CA_NOT_SUPPORTED;
 #else
-                    OIC_LOG_V(DEBUG, TAG, "Remove network type(LE)");
-                    u_arraylist_remove(gSelectedNetworkList, index);
-#endif /* LE_ADAPTER */
+                   OIC_LOG(DEBUG, TAG, "Add network type(NFC)");
+                   u_arraylist_remove(g_selectedNetworkList, index);
 
+                   break;
+#endif // CA_ADAPTER_NFC
+                default:
                     break;
             }
 
@@ -209,24 +263,16 @@ CAResult_t CARemoveNetworkType(uint32_t ConnectivityType)
 
 u_arraylist_t *CAGetSelectedNetworkList()
 {
-    OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList IN");
-    if (gSelectedNetworkList == NULL)
-    {
-        OIC_LOG_V(DEBUG, TAG, "Selected network not found");
-
-        return NULL;
-    }
-    OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList OUT");
-    return gSelectedNetworkList;
+    return g_selectedNetworkList;
 }
 
-CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_t *size)
+CAResult_t CAGetNetworkInformationInternal(CAEndpoint_t **info, uint32_t *size)
 {
-    OIC_LOG_V(DEBUG, TAG, "get network information.");
+    OIC_LOG(DEBUG, TAG, "get network information.");
 
-    if (info == NULL || size == NULL)
+    if (NULL == info || NULL == size)
     {
-        OIC_LOG_V(DEBUG, TAG, "Input parameter is invalid value");
+        OIC_LOG(ERROR, TAG, "Input parameter is invalid value");
 
         return CA_STATUS_INVALID_PARAM;
     }
@@ -236,13 +282,10 @@ CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_
 
 CAResult_t CATerminateNetworkType()
 {
-    OIC_LOG_V(DEBUG, TAG, "CATerminateNetworkType()");
-
-    if(gSelectedNetworkList != NULL)
+    OIC_LOG(DEBUG, TAG, "CATerminateNetworkType()");
+    if (NULL != g_selectedNetworkList)
     {
-        u_arraylist_free(&gSelectedNetworkList);
+        u_arraylist_free(&g_selectedNetworkList);
     }
-
     return CA_STATUS_OK;
 }
-