[IOT-1459]Add CA API which returns selected transport adapter
authorbg.chun <bg.chun@samsung.com>
Tue, 18 Oct 2016 11:35:55 +0000 (20:35 +0900)
committerAshok Babu Channa <ashok.channa@samsung.com>
Mon, 24 Oct 2016 06:37:45 +0000 (06:37 +0000)
Add CA API which returns selected transport adapter.
Returns bit combinations of CATransportAdapter_t enumeration
which indicate enabled adapter.
CATransportAdapter_t CAGetSelectedNetwork();

Change-Id: If9116991585ab20b56303875d2d83a79316d2387
Signed-off-by: bg.chun <bg.chun@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/13391
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Ashok Babu Channa <ashok.channa@samsung.com>
resource/csdk/connectivity/api/cainterface.h
resource/csdk/connectivity/src/canetworkconfigurator.c
resource/csdk/connectivity/test/ca_api_unittest.cpp

index 1b45698..70c15a9 100644 (file)
@@ -216,6 +216,13 @@ CAResult_t CAUnSelectNetwork(CATransportAdapter_t nonInterestedNetwork);
 CAResult_t CAGetNetworkInformation(CAEndpoint_t **info, uint32_t *size);
 
 /**
+ * Get supported network adapter.
+ *
+ * @return  Bit combinations of CATransportAdapter_t enumeration which indicate enabled adapter.
+ */
+CATransportAdapter_t CAGetSelectedNetwork();
+
+/**
  * To Handle the Request or Response.
  * @return   ::CA_STATUS_OK or ::CA_STATUS_NOT_INITIALIZED
  */
index 1db90e8..848d2be 100644 (file)
 
 #include "canetworkconfigurator.h"
 #include "cainterfacecontroller.h"
+#include "cainterface.h"
 #include "uarraylist.h"
 #include "logger.h"
 
 #define TAG "OIC_CA_NW_CONFIG"
 
 static u_arraylist_t *g_selectedNetworkList = NULL;
+static CATransportAdapter_t CASelectedNetwork = CA_DEFAULT_ADAPTER;
 
 #ifdef EDR_ADAPTER
 static uint32_t NETWORK_RFCOMM = CA_ADAPTER_RFCOMM_BTEDR;
@@ -81,6 +83,7 @@ CAResult_t CAAddNetworkType(CATransportAdapter_t transportType)
                 goto exit;
             }
             res = u_arraylist_add(g_selectedNetworkList, &NETWORK_IP);
+            CASelectedNetwork |= CA_ADAPTER_IP;
 
             break;
 #endif // IP_ADAPTER
@@ -97,6 +100,7 @@ CAResult_t CAAddNetworkType(CATransportAdapter_t transportType)
                 goto exit;
             }
             res = u_arraylist_add(g_selectedNetworkList, &NETWORK_RFCOMM);
+            CASelectedNetwork |= CA_ADAPTER_RFCOMM_BTEDR;
 
             break;
 #endif // EDR_ADAPTER
@@ -113,6 +117,7 @@ CAResult_t CAAddNetworkType(CATransportAdapter_t transportType)
                 goto exit;
             }
             res = u_arraylist_add(g_selectedNetworkList, &NETWORK_GATT);
+            CASelectedNetwork |= CA_ADAPTER_GATT_BTLE;
 
             break;
 #endif // LE_ADAPTER
@@ -126,6 +131,7 @@ CAResult_t CAAddNetworkType(CATransportAdapter_t transportType)
                goto exit;
            }
            res = u_arraylist_add(g_selectedNetworkList, &NETWORK_RA);
+           CASelectedNetwork |= CA_ADAPTER_REMOTE_ACCESS;
            break;
 #endif // RA_ADAPTER
 
@@ -138,6 +144,7 @@ CAResult_t CAAddNetworkType(CATransportAdapter_t transportType)
                goto exit;
            }
            res = u_arraylist_add(g_selectedNetworkList, &NETWORK_TCP);
+           CASelectedNetwork |= CA_ADAPTER_TCP;
            break;
 #endif // TCP_ADAPTER
 
@@ -154,6 +161,7 @@ CAResult_t CAAddNetworkType(CATransportAdapter_t transportType)
                goto exit;
            }
            res = u_arraylist_add(g_selectedNetworkList, &NETWORK_NFC);
+           CASelectedNetwork |= CA_ADAPTER_NFC;
 
            break;
 #endif // CA_ADAPTER_NFC
@@ -208,6 +216,7 @@ CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
 
                     OIC_LOG(DEBUG, TAG, "Remove network type(IP)");
                     u_arraylist_remove(g_selectedNetworkList, index);
+                    CASelectedNetwork = CASelectedNetwork & (~CA_ADAPTER_IP);
 
                     break;
 #endif //IP_ADAPTER
@@ -219,6 +228,7 @@ CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
 #else
                     OIC_LOG(DEBUG, TAG, "Remove network type(EDR)");
                     u_arraylist_remove(g_selectedNetworkList, index);
+                    CASelectedNetwork = CASelectedNetwork & (~CA_ADAPTER_RFCOMM_BTEDR);
 
                     break;
 #endif // EDR_ADAPTER
@@ -230,7 +240,7 @@ CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
 #else
                     OIC_LOG(DEBUG, TAG, "Remove network type(LE)");
                     u_arraylist_remove(g_selectedNetworkList, index);
-
+                    CASelectedNetwork = CASelectedNetwork & (~CA_ADAPTER_GATT_BTLE);
                     break;
 #endif // LE_ADAPTER
 
@@ -238,6 +248,7 @@ CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
                 case CA_ADAPTER_REMOTE_ACCESS:
                     OIC_LOG(DEBUG, TAG, "Remove network type(RA)");
                     u_arraylist_remove(g_selectedNetworkList, index);
+                    CASelectedNetwork = CASelectedNetwork & (~CA_ADAPTER_REMOTE_ACCESS);
                     break;
 #endif // RA_ADAPTER
 
@@ -245,6 +256,7 @@ CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
                 case CA_ADAPTER_TCP:
                     OIC_LOG(DEBUG, TAG, "Remove network type(TCP)");
                     u_arraylist_remove(g_selectedNetworkList, index);
+                    CASelectedNetwork = CASelectedNetwork & (~CA_ADAPTER_TCP);
                     break;
 #endif // TCP_ADAPTER
 
@@ -255,7 +267,7 @@ CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
 #else
                    OIC_LOG(DEBUG, TAG, "Add network type(NFC)");
                    u_arraylist_remove(g_selectedNetworkList, index);
-
+                   CASelectedNetwork = CASelectedNetwork & (~CA_ADAPTER_NFC);
                    break;
 #endif // CA_ADAPTER_NFC
                 default:
@@ -276,6 +288,11 @@ u_arraylist_t *CAGetSelectedNetworkList()
     return g_selectedNetworkList;
 }
 
+CATransportAdapter_t CAGetSelectedNetwork()
+{
+    return CASelectedNetwork;
+}
+
 CAResult_t CAGetNetworkInformationInternal(CAEndpoint_t **info, uint32_t *size)
 {
     OIC_LOG(DEBUG, TAG, "get network information.");
index 72765a7..dca4e0c 100644 (file)
@@ -414,6 +414,63 @@ TEST_F (CATests, GetNetworkInformationTest)
     free(tempInfo);
 }
 
+TEST_F(CATests, GetSelectecNetwork)
+{
+    CATransportAdapter_t SelectedNetwork = CA_DEFAULT_ADAPTER;
+
+#ifdef IP_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork | CA_ADAPTER_IP) ;
+    EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_IP));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+#ifdef LE_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork | CA_ADAPTER_GATT_BTLE);
+    EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_GATT_BTLE));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+#ifdef EDR_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork | CA_ADAPTER_RFCOMM_BTEDR);
+    EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_RFCOMM_BTEDR));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+#ifdef TCP_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork | CA_ADAPTER_TCP);
+    EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_TCP));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+#ifdef NFC_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork | CA_ADAPTER_NFC);
+    EXPECT_EQ(CA_STATUS_OK, CASelectNetwork(CA_ADAPTER_NFC));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+
+#ifdef IP_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork & ~CA_ADAPTER_IP) ;
+    EXPECT_EQ(CA_STATUS_OK, CAUnSelectNetwork(CA_ADAPTER_IP));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+#ifdef LE_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork & ~CA_ADAPTER_GATT_BTLE);
+    EXPECT_EQ(CA_STATUS_OK, CAUnSelectNetwork(CA_ADAPTER_GATT_BTLE));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+#ifdef EDR_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork & ~CA_ADAPTER_RFCOMM_BTEDR);
+    EXPECT_EQ(CA_STATUS_OK, CAUnSelectNetwork(CA_ADAPTER_RFCOMM_BTEDR));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+#ifdef TCP_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork & ~CA_ADAPTER_TCP);
+    EXPECT_EQ(CA_STATUS_OK, CAUnSelectNetwork(CA_ADAPTER_TCP));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+#ifdef NFC_ADAPTER
+    SelectedNetwork = (CATransportAdapter_t)(SelectedNetwork & ~CA_ADAPTER_NFC);
+    EXPECT_EQ(CA_STATUS_OK, CAUnSelectNetwork(CA_ADAPTER_NFC));
+    EXPECT_EQ(SelectedNetwork, CAGetSelectedNetwork());
+#endif
+}
+
 TEST_F(CATests, RegisterDTLSCredentialsHandlerTest)
 {
 #ifdef __WITH_DTLS__