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)
55 #ifndef ETHERNET_ADAPTER
56 OIC_LOG_V(DEBUG, TAG, "Add network type(ETHERNET) - Not Supported");
57 return CA_NOT_SUPPORTED;
58 #endif /* ETHERNET_ADAPTER */
60 OIC_LOG_V(DEBUG, TAG, "Add network type(ETHERNET)");
61 if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_ETHERNET))
63 u_arraylist_add(gSelectedNetworkList, &NETWORK_ETHERNET);
70 OIC_LOG_V(DEBUG, TAG, "Add network type(WIFI) - Not Supported");
71 return CA_NOT_SUPPORTED;
72 #endif /* WIFI_ADAPTER */
74 OIC_LOG_V(DEBUG, TAG, "Add network type(WIFI)");
75 if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_WIFI))
77 u_arraylist_add(gSelectedNetworkList, &NETWORK_WIFI);
84 OIC_LOG_V(DEBUG, TAG, "Add network type(EDR) - Not Supported");
85 return CA_NOT_SUPPORTED;
86 #endif /* EDR_ADAPTER */
88 OIC_LOG_V(DEBUG, TAG, "Add network type(EDR)");
89 if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_EDR))
91 u_arraylist_add(gSelectedNetworkList, &NETWORK_EDR);
98 OIC_LOG_V(DEBUG, TAG, "Add network type(LE) - Not Supported");
99 return CA_NOT_SUPPORTED;
100 #endif /* LE_ADAPTER */
102 OIC_LOG_V(DEBUG, TAG, "Add network type(LE)");
103 if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_LE))
105 u_arraylist_add(gSelectedNetworkList, &NETWORK_LE);
111 // start selected interface adapter
112 CAStartAdapter((CAConnectivityType_t)ConnectivityType);
117 CAResult_t CARemoveNetworkType(uint32_t ConnectivityType)
120 CAConnectivityType_t connType;
122 if (gSelectedNetworkList == NULL)
124 OIC_LOG_V(DEBUG, TAG, "Selected network not found");
126 return CA_STATUS_FAILED;
129 for (index = 0; index < u_arraylist_length(gSelectedNetworkList); index++)
131 void* ptrType = u_arraylist_get(gSelectedNetworkList, index);
138 connType = *(CAConnectivityType_t *) ptrType;
140 if (ConnectivityType == connType)
142 switch (ConnectivityType)
146 #ifndef ETHERNET_ADAPTER
147 OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET) - Not Supported");
148 return CA_NOT_SUPPORTED;
151 OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET)");
152 u_arraylist_remove(gSelectedNetworkList, index);
153 #endif /* ETHERNET_ADAPTER */
159 OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI) - Not Supported");
160 return CA_NOT_SUPPORTED;
162 OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI)");
163 u_arraylist_remove(gSelectedNetworkList, index);
164 #endif /* WIFI_ADAPTER */
171 OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
172 return CA_NOT_SUPPORTED;
174 OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR)");
175 u_arraylist_remove(gSelectedNetworkList, index);
176 #endif /* EDR_ADAPTER */
183 OIC_LOG_V(DEBUG, TAG, "Remove network type(LE) - Not Supported");
184 return CA_NOT_SUPPORTED;
186 OIC_LOG_V(DEBUG, TAG, "Remove network type(LE)");
187 u_arraylist_remove(gSelectedNetworkList, index);
188 #endif /* LE_ADAPTER */
193 // stop selected interface adapter
194 CAStopAdapter(connType);
201 u_arraylist_t *CAGetSelectedNetworkList()
203 OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList IN");
204 if (gSelectedNetworkList == NULL)
206 OIC_LOG_V(DEBUG, TAG, "Selected network not found");
210 OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList OUT");
211 return gSelectedNetworkList;
214 CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_t *size)
216 OIC_LOG_V(DEBUG, TAG, "get network information.");
218 if (info == NULL || size == NULL)
220 OIC_LOG_V(DEBUG, TAG, "Input parameter is invalid value");
222 return CA_STATUS_INVALID_PARAM;
225 return CAGetNetworkInfo(info, size);
228 CAResult_t CATerminateNetworkType()
230 OIC_LOG_V(DEBUG, TAG, "CATerminateNetworkType()");
232 if(gSelectedNetworkList != NULL)
234 u_arraylist_free(&gSelectedNetworkList);