X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fconnectivity%2Fsrc%2Fcanetworkconfigurator.c;h=9f822e4018b4aeebd2b75293f549d2ee710a60ab;hb=c315c87e07c4080ecd0ef488e7a1047bc3c509b2;hp=0efe11841509d874e8e327b46aa03b69f3bbce42;hpb=90d4cabefe76a4bf7ec3706ef68f8d9799e82864;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/connectivity/src/canetworkconfigurator.c b/resource/csdk/connectivity/src/canetworkconfigurator.c index 0efe118..9f822e4 100644 --- a/resource/csdk/connectivity/src/canetworkconfigurator.c +++ b/resource/csdk/connectivity/src/canetworkconfigurator.c @@ -21,153 +21,271 @@ #include #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 + +#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 + +#ifdef NFC_ADAPTER +static uint32_t NETWORK_NFC = CA_ADAPTER_NFC; +#endif -static u_arraylist_t *gSelectedNetworkList = NULL; +#ifdef RA_ADAPTER +static uint32_t NETWORK_RA = CA_ADAPTER_REMOTE_ACCESS; +#endif -CAResult_t CAAddNetworkType(uint32_t ConnectivityType) +#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(); - switch (ConnectivityType) + if (NULL == g_selectedNetworkList) + { + return CA_MEMORY_ALLOC_FAILED; + } + } + 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)"); - u_arraylist_add(gSelectedNetworkList, &NETWORK_ETHERNET); + if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_IP)) + { + goto exit; + } + res = u_arraylist_add(g_selectedNetworkList, &NETWORK_IP); break; +#endif // IP_ADAPTER - case CA_WIFI: - -#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)"); - u_arraylist_add(gSelectedNetworkList, &NETWORK_WIFI); + if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_RFCOMM)) + { + goto exit; + } + res = u_arraylist_add(g_selectedNetworkList, &NETWORK_RFCOMM); break; +#endif // EDR_ADAPTER - case CA_EDR: - -#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 + + if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_GATT)) + { + goto exit; + } + res = u_arraylist_add(g_selectedNetworkList, &NETWORK_GATT); - OIC_LOG_V(DEBUG, TAG, "Add network type(EDR)"); - u_arraylist_add(gSelectedNetworkList, &NETWORK_EDR); break; +#endif // LE_ADAPTER - case CA_LE: +#ifdef RA_ADAPTER + case CA_ADAPTER_REMOTE_ACCESS: -#ifdef 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)"); - 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(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) { - 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; } - switch (ConnectivityType) + uint32_t selectedNetworkLength = u_arraylist_length(g_selectedNetworkList); + for (uint32_t index = 0; index < selectedNetworkLength; index++) { - case CA_ETHERNET: - -#ifndef ETHERNET_ADAPTER - OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET) - Not Supported"); - return CA_NOT_SUPPORTED; + void* ptrType = u_arraylist_get(g_selectedNetworkList, index); + if (NULL == ptrType) + { + continue; + } + + CATransportAdapter_t connType = *(CATransportAdapter_t *)ptrType; + + if (transportType == connType) + { + switch (transportType) + { + 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, &NETWORK_ETHERNET); -#endif /* ETHERNET_ADAPTER */ - break; - - case CA_WIFI: + OIC_LOG(DEBUG, TAG, "Remove network type(IP)"); + u_arraylist_remove(g_selectedNetworkList, index); -#ifndef WIFI_ADAPTER - OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI) - Not Supported"); - return CA_NOT_SUPPORTED; -#else - OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI)"); - u_arraylist_remove(gSelectedNetworkList, &NETWORK_WIFI); -#endif /* WIFI_ADAPTER */ - - break; - - case CA_EDR: + break; +#endif //IP_ADAPTER + case CA_ADAPTER_RFCOMM_BTEDR: #ifndef EDR_ADAPTER - OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR) - Not Supported"); - return CA_NOT_SUPPORTED; + OIC_LOG(DEBUG, TAG, "Remove network type(EDR) - Not Supported"); + return CA_NOT_SUPPORTED; #else - OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR)"); - u_arraylist_remove(gSelectedNetworkList, &NETWORK_EDR); -#endif /* EDR_ADAPTER */ + OIC_LOG(DEBUG, TAG, "Remove network type(EDR)"); + u_arraylist_remove(g_selectedNetworkList, index); - break; - - case CA_LE: + break; +#endif // EDR_ADAPTER -#ifdef LE_ADAPTER - OIC_LOG_V(DEBUG, TAG, "Remove network type(LE) - Not Supported"); - return CA_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(LE)"); - u_arraylist_remove(gSelectedNetworkList, &NETWORK_LE); -#endif /* LE_ADAPTER */ - - break; + OIC_LOG(DEBUG, TAG, "Remove network type(LE)"); + u_arraylist_remove(g_selectedNetworkList, index); + + 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 + CAStopAdapter(connType); + return CA_STATUS_OK; + } } - // stop selected interface adapter - CAStopAdapter(ConnectivityType); + return CA_STATUS_FAILED; +} - return CA_STATUS_OK; +u_arraylist_t *CAGetSelectedNetworkList() +{ + return g_selectedNetworkList; } -u_arraylist_t* CAGetSelectedNetworkList() +CAResult_t CAGetNetworkInformationInternal(CAEndpoint_t **info, uint32_t *size) { - if (gSelectedNetworkList == NULL) + OIC_LOG(DEBUG, TAG, "get network information."); + + if (NULL == info || NULL == size) { - OIC_LOG_V(DEBUG, TAG, "Selected network not found"); + OIC_LOG(ERROR, TAG, "Input parameter is invalid value"); - return NULL; + return CA_STATUS_INVALID_PARAM; } - return gSelectedNetworkList; + return CAGetNetworkInfo(info, size); +} + +CAResult_t CATerminateNetworkType() +{ + OIC_LOG(DEBUG, TAG, "CATerminateNetworkType()"); + if (NULL != g_selectedNetworkList) + { + u_arraylist_free(&g_selectedNetworkList); + } + return CA_STATUS_OK; }