From 3d9a2e92970edfe906e6c279819e710a0df65074 Mon Sep 17 00:00:00 2001 From: "bg.chun" Date: Tue, 18 Oct 2016 20:35:55 +0900 Subject: [PATCH] [IOT-1459]Add CA API which returns selected transport adapter 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 Reviewed-on: https://gerrit.iotivity.org/gerrit/13391 Tested-by: jenkins-iotivity Reviewed-by: Ashok Babu Channa --- resource/csdk/connectivity/api/cainterface.h | 7 +++ .../csdk/connectivity/src/canetworkconfigurator.c | 21 +++++++- .../csdk/connectivity/test/ca_api_unittest.cpp | 57 ++++++++++++++++++++++ 3 files changed, 83 insertions(+), 2 deletions(-) diff --git a/resource/csdk/connectivity/api/cainterface.h b/resource/csdk/connectivity/api/cainterface.h index 1b45698..70c15a9 100644 --- a/resource/csdk/connectivity/api/cainterface.h +++ b/resource/csdk/connectivity/api/cainterface.h @@ -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 */ diff --git a/resource/csdk/connectivity/src/canetworkconfigurator.c b/resource/csdk/connectivity/src/canetworkconfigurator.c index 1db90e8..848d2be 100644 --- a/resource/csdk/connectivity/src/canetworkconfigurator.c +++ b/resource/csdk/connectivity/src/canetworkconfigurator.c @@ -22,12 +22,14 @@ #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."); diff --git a/resource/csdk/connectivity/test/ca_api_unittest.cpp b/resource/csdk/connectivity/test/ca_api_unittest.cpp index 72765a7..dca4e0c 100644 --- a/resource/csdk/connectivity/test/ca_api_unittest.cpp +++ b/resource/csdk/connectivity/test/ca_api_unittest.cpp @@ -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__ -- 2.7.4