1 /******************************************************************
3 * Copyright 2014 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 ******************************************************************/
23 #include "canetworkconfigurator.h"
24 #include "cainterfacecontroller_singlethread.h"
25 #include "uarraylist.h"
30 static u_arraylist_t *g_selectedNetworkList = NULL;
31 static uint32_t NETWORK_ETHERNET = CA_ETHERNET;
32 static uint32_t NETWORK_WIFI = CA_WIFI;
33 static uint32_t NETWORK_EDR = CA_EDR;
34 static uint32_t NETWORK_LE = CA_LE;
36 CAResult_t CAAddNetworkType(CAConnectivityType_t connectivityType)
38 OIC_LOG(DEBUG, TAG, "IN");
39 if (NULL == g_selectedNetworkList)
41 OIC_LOG(DEBUG, TAG, "Create network list");
43 g_selectedNetworkList = u_arraylist_create();
45 if (NULL == g_selectedNetworkList)
47 return CA_MEMORY_ALLOC_FAILED;
50 CAResult_t res = CA_STATUS_OK;
51 switch (connectivityType)
56 #ifndef ETHERNET_ADAPTER
57 OIC_LOG(DEBUG, TAG, "Add network type(ETHERNET) - Not Supported");
58 return CA_NOT_SUPPORTED;
59 #endif /* ETHERNET_ADAPTER */
61 OIC_LOG(DEBUG, TAG, "Add network type(ETHERNET)");
62 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_ETHERNET))
66 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_ETHERNET);
74 OIC_LOG(DEBUG, TAG, "Add network type(WIFI) - Not Supported");
75 return CA_NOT_SUPPORTED;
76 #endif /* WIFI_ADAPTER */
78 OIC_LOG(DEBUG, TAG, "Add network type(WIFI)");
79 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_WIFI))
83 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_WIFI);
91 OIC_LOG(DEBUG, TAG, "Add network type(EDR) - Not Supported");
92 return CA_NOT_SUPPORTED;
93 #endif /* EDR_ADAPTER */
95 OIC_LOG(DEBUG, TAG, "Add network type(EDR)");
96 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_EDR))
100 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_EDR);
108 OIC_LOG(DEBUG, TAG, "Add network type(LE) - Not Supported");
109 return CA_NOT_SUPPORTED;
110 #endif /* LE_ADAPTER */
112 OIC_LOG(DEBUG, TAG, "Add network type(LE)");
113 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_LE))
117 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_LE);
123 if (CA_STATUS_OK != res)
125 OIC_LOG_V(ERROR, TAG, "Add arraylist failed[Err code: %d]", res);
129 // start selected interface adapter
130 res = CAStartAdapter((CAConnectivityType_t)connectivityType);
131 OIC_LOG(DEBUG, TAG, "OUT");
135 OIC_LOG(DEBUG, TAG, "This adapter is already enabled");
139 CAResult_t CARemoveNetworkType(CAConnectivityType_t connectivityType)
141 OIC_LOG(DEBUG, TAG, "IN");
143 if (NULL == g_selectedNetworkList)
145 OIC_LOG(ERROR, TAG, "SelectedNetwork list is NULL");
147 return CA_STATUS_FAILED;
150 uint32_t selectedNetworkLength = u_arraylist_length(g_selectedNetworkList);
152 for (index = 0; index < selectedNetworkLength; index++)
154 void* ptrType = u_arraylist_get(g_selectedNetworkList, index);
160 CAConnectivityType_t connType = *(CAConnectivityType_t *) ptrType;
162 if (connectivityType == connType)
164 switch (connectivityType)
168 #ifndef ETHERNET_ADAPTER
169 OIC_LOG(DEBUG, TAG, "Remove network type(ETHERNET) - Not Supported");
170 return CA_NOT_SUPPORTED;
173 OIC_LOG(DEBUG, TAG, "Remove network type(ETHERNET)");
174 u_arraylist_remove(g_selectedNetworkList, index);
175 #endif /* ETHERNET_ADAPTER */
181 OIC_LOG(DEBUG, TAG, "Remove network type(WIFI) - Not Supported");
182 return CA_NOT_SUPPORTED;
184 OIC_LOG(DEBUG, TAG, "Remove network type(WIFI)");
185 u_arraylist_remove(g_selectedNetworkList, index);
186 #endif /* WIFI_ADAPTER */
193 OIC_LOG(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
194 return CA_NOT_SUPPORTED;
196 OIC_LOG(DEBUG, TAG, "Remove network type(EDR)");
197 u_arraylist_remove(g_selectedNetworkList, index);
198 #endif /* EDR_ADAPTER */
205 OIC_LOG(DEBUG, TAG, "Remove network type(LE) - Not Supported");
206 return CA_NOT_SUPPORTED;
208 OIC_LOG(DEBUG, TAG, "Remove network type(LE)");
209 u_arraylist_remove(g_selectedNetworkList, index);
210 #endif /* LE_ADAPTER */
215 // stop selected interface adapter
216 CAStopAdapter(connType);
221 return CA_STATUS_FAILED;
224 u_arraylist_t *CAGetSelectedNetworkList()
226 return g_selectedNetworkList;
229 CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_t *size)
231 OIC_LOG(DEBUG, TAG, "get network information.");
233 if (NULL == info || NULL == size)
235 OIC_LOG(ERROR, TAG, "Input parameter is invalid value");
237 return CA_STATUS_INVALID_PARAM;
240 return CAGetNetworkInfo(info, size);
243 CAResult_t CATerminateNetworkType()
245 OIC_LOG(DEBUG, TAG, "CATerminateNetworkType()");
246 if (NULL != g_selectedNetworkList)
248 u_arraylist_free(&g_selectedNetworkList);