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);
151 for (uint32_t index = 0; index < selectedNetworkLength; index++)
153 void* ptrType = u_arraylist_get(g_selectedNetworkList, index);
159 CAConnectivityType_t connType = *(CAConnectivityType_t *) ptrType;
161 if (connectivityType == connType)
163 switch (connectivityType)
167 #ifndef ETHERNET_ADAPTER
168 OIC_LOG(DEBUG, TAG, "Remove network type(ETHERNET) - Not Supported");
169 return CA_NOT_SUPPORTED;
172 OIC_LOG(DEBUG, TAG, "Remove network type(ETHERNET)");
173 u_arraylist_remove(g_selectedNetworkList, index);
174 #endif /* ETHERNET_ADAPTER */
180 OIC_LOG(DEBUG, TAG, "Remove network type(WIFI) - Not Supported");
181 return CA_NOT_SUPPORTED;
183 OIC_LOG(DEBUG, TAG, "Remove network type(WIFI)");
184 u_arraylist_remove(g_selectedNetworkList, index);
185 #endif /* WIFI_ADAPTER */
192 OIC_LOG(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
193 return CA_NOT_SUPPORTED;
195 OIC_LOG(DEBUG, TAG, "Remove network type(EDR)");
196 u_arraylist_remove(g_selectedNetworkList, index);
197 #endif /* EDR_ADAPTER */
204 OIC_LOG(DEBUG, TAG, "Remove network type(LE) - Not Supported");
205 return CA_NOT_SUPPORTED;
207 OIC_LOG(DEBUG, TAG, "Remove network type(LE)");
208 u_arraylist_remove(g_selectedNetworkList, index);
209 #endif /* LE_ADAPTER */
214 // stop selected interface adapter
215 CAStopAdapter(connType);
220 return CA_STATUS_FAILED;
223 u_arraylist_t *CAGetSelectedNetworkList()
225 return g_selectedNetworkList;
228 CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_t *size)
230 OIC_LOG(DEBUG, TAG, "get network information.");
232 if (NULL == info || NULL == size)
234 OIC_LOG(ERROR, TAG, "Input parameter is invalid value");
236 return CA_STATUS_INVALID_PARAM;
239 return CAGetNetworkInfo(info, size);
242 CAResult_t CATerminateNetworkType()
244 OIC_LOG(DEBUG, TAG, "CATerminateNetworkType()");
245 if (NULL != g_selectedNetworkList)
247 u_arraylist_free(&g_selectedNetworkList);