Update snapshot(2017-11-29)
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / canetworkconfigurator.c
index 191a27b..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;
-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 EDR_ADAPTER
+static uint32_t NETWORK_RFCOMM = CA_ADAPTER_RFCOMM_BTEDR;
+#endif
+
+#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(CAConnectivityType_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 (g_selectedNetworkList == NULL)
+    if (NULL == g_selectedNetworkList)
     {
         OIC_LOG(DEBUG, TAG, "Create network list");
 
         g_selectedNetworkList = u_arraylist_create();
 
-        if( g_selectedNetworkList == NULL )
+        if (NULL == g_selectedNetworkList)
         {
             return CA_MEMORY_ALLOC_FAILED;
         }
     }
-
-    CAResult_t res = CA_STATUS_OK;
-    switch (connectivityType)
+    bool res = true;
+    switch (transportType)
     {
-        case CA_ETHERNET:
-        {
-
-#ifndef ETHERNET_ADAPTER
-            OIC_LOG(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(DEBUG, TAG, "Add network type(ETHERNET)");
-            if (!u_arraylist_contains(g_selectedNetworkList, &NETWORK_ETHERNET))
+            if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_IP))
             {
-                res = u_arraylist_add(g_selectedNetworkList, &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(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(DEBUG, TAG, "Add network type(WIFI)");
-            if (!u_arraylist_contains(g_selectedNetworkList, &NETWORK_WIFI))
+            if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_RFCOMM))
             {
-                res = u_arraylist_add(g_selectedNetworkList, &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(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(DEBUG, TAG, "Add network type(EDR)");
-            if (!u_arraylist_contains(g_selectedNetworkList, &NETWORK_EDR))
+            if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_GATT))
             {
-                res = u_arraylist_add(g_selectedNetworkList, &NETWORK_EDR);
+                goto exit;
             }
-        }
-        break;
+            res = u_arraylist_add(g_selectedNetworkList, &NETWORK_GATT);
 
-        case CA_LE:
-        {
+            break;
+#endif // LE_ADAPTER
 
-#ifndef LE_ADAPTER
-            OIC_LOG(DEBUG, TAG, "Add network type(LE) - Not Supported");
+#ifdef RA_ADAPTER
+        case CA_ADAPTER_REMOTE_ACCESS:
+
+           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(DEBUG, TAG, "Add network type(LE)");
-            if (!u_arraylist_contains(g_selectedNetworkList, &NETWORK_LE))
-            {
-                res = u_arraylist_add(g_selectedNetworkList, &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 (CA_STATUS_OK != res)
+    if (!res)
     {
         OIC_LOG_V(ERROR, TAG, "Add arraylist failed[Err code: %d]", res);
-        return res;
+        return CA_STATUS_FAILED;
     }
     // start selected interface adapter
-    res = CAStartAdapter((CAConnectivityType_t)connectivityType);
+    CAResult_t result = CAStartAdapter(transportType);
+    return result;
 
-    return res;
+exit:
+    OIC_LOG(DEBUG, TAG, "This adapter is already enabled");
+    return CA_STATUS_OK;
 }
 
-CAResult_t CARemoveNetworkType(CAConnectivityType_t connectivityType)
+CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
 {
-    uint8_t index;
-    CAConnectivityType_t connType;
-
-    if (g_selectedNetworkList == NULL)
+    if (NULL == g_selectedNetworkList)
     {
-        OIC_LOG(DEBUG, TAG, "SelectedNetwork list is NULL");
+        OIC_LOG(ERROR, TAG, "SelectedNetwork list is NULL");
 
         return CA_STATUS_FAILED;
     }
 
-    for (index = 0; index < u_arraylist_length(g_selectedNetworkList); index++)
+    uint32_t selectedNetworkLength = u_arraylist_length(g_selectedNetworkList);
+    for (uint32_t index = 0; index < selectedNetworkLength; index++)
     {
         void* ptrType = u_arraylist_get(g_selectedNetworkList, index);
-
-        if(ptrType == NULL)
+        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(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(DEBUG, TAG, "Remove network type(ETHERNET)");
-                    u_arraylist_remove(g_selectedNetworkList, index);
-#endif /* ETHERNET_ADAPTER */
-                    break;
-
-                case CA_WIFI:
-
-#ifndef WIFI_ADAPTER
-                    OIC_LOG(DEBUG, TAG, "Remove network type(WIFI) - Not Supported");
-                    return CA_NOT_SUPPORTED;
-#else
-                    OIC_LOG(DEBUG, TAG, "Remove network type(WIFI)");
+                    OIC_LOG(DEBUG, TAG, "Remove network type(IP)");
                     u_arraylist_remove(g_selectedNetworkList, index);
-#endif /* WIFI_ADAPTER */
 
                     break;
+#endif //IP_ADAPTER
 
-                case CA_EDR:
-
+                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(DEBUG, TAG, "Remove network type(EDR)");
                     u_arraylist_remove(g_selectedNetworkList, index);
-#endif /* EDR_ADAPTER */
 
                     break;
+#endif // EDR_ADAPTER
 
-                case CA_LE:
-
+                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(DEBUG, TAG, "Remove network type(LE)");
                     u_arraylist_remove(g_selectedNetworkList, index);
-#endif /* LE_ADAPTER */
 
                     break;
+#endif // LE_ADAPTER
+
+#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
+
+#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(DEBUG, TAG, "Add network type(NFC)");
+                   u_arraylist_remove(g_selectedNetworkList, index);
+
+                   break;
+#endif // CA_ADAPTER_NFC
+                default:
+                    break;
             }
 
             // stop selected interface adapter
@@ -215,23 +263,16 @@ CAResult_t CARemoveNetworkType(CAConnectivityType_t connectivityType)
 
 u_arraylist_t *CAGetSelectedNetworkList()
 {
-    OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList IN");
-    if (g_selectedNetworkList == NULL)
-    {
-        OIC_LOG(DEBUG, TAG, "SelectedNetwork list is NULL");
-        return NULL;
-    }
-    OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList OUT");
     return g_selectedNetworkList;
 }
 
-CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_t *size)
+CAResult_t CAGetNetworkInformationInternal(CAEndpoint_t **info, uint32_t *size)
 {
     OIC_LOG(DEBUG, TAG, "get network information.");
 
-    if (info == NULL || size == NULL)
+    if (NULL == info || NULL == size)
     {
-        OIC_LOG(DEBUG, TAG, "Input parameter is invalid value");
+        OIC_LOG(ERROR, TAG, "Input parameter is invalid value");
 
         return CA_STATUS_INVALID_PARAM;
     }
@@ -242,12 +283,9 @@ CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_
 CAResult_t CATerminateNetworkType()
 {
     OIC_LOG(DEBUG, TAG, "CATerminateNetworkType()");
-
-    if(g_selectedNetworkList != NULL)
+    if (NULL != g_selectedNetworkList)
     {
         u_arraylist_free(&g_selectedNetworkList);
     }
-
     return CA_STATUS_OK;
 }
-