#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;
}
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;
}
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;
}
-