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 "uarraylist.h"
26 #include "cainterfacecontroller.h"
30 static u_arraylist_t *gSelectedNetworkList = 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;
37 CAResult_t CAAddNetworkType(uint32_t ConnectivityType)
39 if (gSelectedNetworkList == NULL)
41 OIC_LOG_V(DEBUG, TAG, "Create network list");
43 gSelectedNetworkList = u_arraylist_create();
45 if( gSelectedNetworkList == NULL )
47 return CA_STATUS_FAILED;
51 switch (ConnectivityType)
56 #ifndef ETHERNET_ADAPTER
57 OIC_LOG_V(DEBUG, TAG, "Add network type(ETHERNET) - Not Supported");
58 return CA_NOT_SUPPORTED;
59 #endif /* ETHERNET_ADAPTER */
61 OIC_LOG_V(DEBUG, TAG, "Add network type(ETHERNET)");
62 if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_ETHERNET))
64 u_arraylist_add(gSelectedNetworkList, &NETWORK_ETHERNET);
73 OIC_LOG_V(DEBUG, TAG, "Add network type(WIFI) - Not Supported");
74 return CA_NOT_SUPPORTED;
75 #endif /* WIFI_ADAPTER */
77 OIC_LOG_V(DEBUG, TAG, "Add network type(WIFI)");
78 if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_WIFI))
80 u_arraylist_add(gSelectedNetworkList, &NETWORK_WIFI);
89 OIC_LOG_V(DEBUG, TAG, "Add network type(EDR) - Not Supported");
90 return CA_NOT_SUPPORTED;
91 #endif /* EDR_ADAPTER */
93 OIC_LOG_V(DEBUG, TAG, "Add network type(EDR)");
94 if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_EDR))
96 u_arraylist_add(gSelectedNetworkList, &NETWORK_EDR);
105 OIC_LOG_V(DEBUG, TAG, "Add network type(LE) - Not Supported");
106 return CA_NOT_SUPPORTED;
107 #endif /* LE_ADAPTER */
109 OIC_LOG_V(DEBUG, TAG, "Add network type(LE)");
110 if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_LE))
112 u_arraylist_add(gSelectedNetworkList, &NETWORK_LE);
119 // start selected interface adapter
120 CAStartAdapter((CAConnectivityType_t)ConnectivityType);
125 CAResult_t CARemoveNetworkType(uint32_t ConnectivityType)
128 CAConnectivityType_t connType;
130 if (gSelectedNetworkList == NULL)
132 OIC_LOG_V(DEBUG, TAG, "Selected network not found");
134 return CA_STATUS_FAILED;
137 for (index = 0; index < u_arraylist_length(gSelectedNetworkList); index++)
139 void* ptrType = u_arraylist_get(gSelectedNetworkList, index);
146 connType = *(CAConnectivityType_t *) ptrType;
148 if (ConnectivityType == connType)
150 switch (ConnectivityType)
154 #ifndef ETHERNET_ADAPTER
155 OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET) - Not Supported");
156 return CA_NOT_SUPPORTED;
159 OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET)");
160 u_arraylist_remove(gSelectedNetworkList, index);
161 #endif /* ETHERNET_ADAPTER */
167 OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI) - Not Supported");
168 return CA_NOT_SUPPORTED;
170 OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI)");
171 u_arraylist_remove(gSelectedNetworkList, index);
172 #endif /* WIFI_ADAPTER */
179 OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
180 return CA_NOT_SUPPORTED;
182 OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR)");
183 u_arraylist_remove(gSelectedNetworkList, index);
184 #endif /* EDR_ADAPTER */
191 OIC_LOG_V(DEBUG, TAG, "Remove network type(LE) - Not Supported");
192 return CA_NOT_SUPPORTED;
194 OIC_LOG_V(DEBUG, TAG, "Remove network type(LE)");
195 u_arraylist_remove(gSelectedNetworkList, index);
196 #endif /* LE_ADAPTER */
201 // stop selected interface adapter
202 CAStopAdapter(connType);
207 return CA_STATUS_FAILED;
210 u_arraylist_t *CAGetSelectedNetworkList()
212 OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList IN");
213 if (gSelectedNetworkList == NULL)
215 OIC_LOG_V(DEBUG, TAG, "Selected network not found");
219 OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList OUT");
220 return gSelectedNetworkList;
223 CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_t *size)
225 OIC_LOG_V(DEBUG, TAG, "get network information.");
227 if (info == NULL || size == NULL)
229 OIC_LOG_V(DEBUG, TAG, "Input parameter is invalid value");
231 return CA_STATUS_INVALID_PARAM;
234 return CAGetNetworkInfo(info, size);
237 CAResult_t CATerminateNetworkType()
239 OIC_LOG_V(DEBUG, TAG, "CATerminateNetworkType()");
241 if(gSelectedNetworkList != NULL)
243 u_arraylist_free(&gSelectedNetworkList);