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.h"
25 #include "uarraylist.h"
28 #define TAG "OIC_CA_NW_CONFIG"
30 static u_arraylist_t *g_selectedNetworkList = NULL;
33 static uint32_t NETWORK_RFCOMM = CA_ADAPTER_RFCOMM_BTEDR;
37 static uint32_t NETWORK_GATT = CA_ADAPTER_GATT_BTLE;
41 static uint32_t NETWORK_IP = CA_ADAPTER_IP;
45 static uint32_t NETWORK_NFC = CA_ADAPTER_NFC;
49 static uint32_t NETWORK_RA = CA_ADAPTER_REMOTE_ACCESS;
53 static uint32_t NETWORK_TCP = CA_ADAPTER_TCP;
56 CAResult_t CAAddNetworkType(CATransportAdapter_t transportType)
58 if (NULL == g_selectedNetworkList)
60 OIC_LOG(DEBUG, TAG, "Create network list");
62 g_selectedNetworkList = u_arraylist_create();
64 if (NULL == g_selectedNetworkList)
66 return CA_MEMORY_ALLOC_FAILED;
70 switch (transportType)
74 OIC_LOG(DEBUG, TAG, "Add network type(IP) - Not Supported");
75 return CA_NOT_SUPPORTED;
78 OIC_LOG(DEBUG, TAG, "Add network type(IP)");
79 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_IP))
83 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_IP);
88 case CA_ADAPTER_RFCOMM_BTEDR:
90 OIC_LOG(DEBUG, TAG, "Add network type(EDR) - Not Supported");
91 return CA_NOT_SUPPORTED;
94 OIC_LOG(DEBUG, TAG, "Add network type(EDR)");
95 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_RFCOMM))
99 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_RFCOMM);
102 #endif // EDR_ADAPTER
104 case CA_ADAPTER_GATT_BTLE:
106 OIC_LOG(DEBUG, TAG, "Add network type(LE) - Not Supported");
107 return CA_NOT_SUPPORTED;
110 OIC_LOG(DEBUG, TAG, "Add network type(LE)");
111 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_GATT))
115 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_GATT);
121 case CA_ADAPTER_REMOTE_ACCESS:
123 OIC_LOG(DEBUG, TAG, "Add network type(RA)");
124 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_RA))
128 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_RA);
135 OIC_LOG(DEBUG, TAG, "Add network type(TCP)");
136 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_TCP))
140 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_TCP);
142 #endif // TCP_ADAPTER
147 OIC_LOG(DEBUG, TAG, "Add network type(NFC) - Not Supported");
148 return CA_NOT_SUPPORTED;
151 OIC_LOG(DEBUG, TAG, "Add network type(NFC)");
152 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_NFC))
156 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_NFC);
159 #endif // CA_ADAPTER_NFC
167 OIC_LOG_V(ERROR, TAG, "Add arraylist failed[Err code: %d]", res);
168 return CA_STATUS_FAILED;
170 // start selected interface adapter
171 CAResult_t result = CAStartAdapter(transportType);
175 OIC_LOG(DEBUG, TAG, "This adapter is already enabled");
179 CAResult_t CARemoveNetworkType(CATransportAdapter_t transportType)
181 if (NULL == g_selectedNetworkList)
183 OIC_LOG(ERROR, TAG, "SelectedNetwork list is NULL");
185 return CA_STATUS_FAILED;
188 uint32_t selectedNetworkLength = u_arraylist_length(g_selectedNetworkList);
189 for (uint32_t index = 0; index < selectedNetworkLength; index++)
191 void* ptrType = u_arraylist_get(g_selectedNetworkList, index);
197 CATransportAdapter_t connType = *(CATransportAdapter_t *)ptrType;
199 if (transportType == connType)
201 switch (transportType)
205 OIC_LOG(DEBUG, TAG, "Remove network type(IP) - Not Supported");
206 return CA_NOT_SUPPORTED;
209 OIC_LOG(DEBUG, TAG, "Remove network type(IP)");
210 u_arraylist_remove(g_selectedNetworkList, index);
215 case CA_ADAPTER_RFCOMM_BTEDR:
217 OIC_LOG(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
218 return CA_NOT_SUPPORTED;
220 OIC_LOG(DEBUG, TAG, "Remove network type(EDR)");
221 u_arraylist_remove(g_selectedNetworkList, index);
224 #endif // EDR_ADAPTER
226 case CA_ADAPTER_GATT_BTLE:
228 OIC_LOG(DEBUG, TAG, "Remove network type(LE) - Not Supported");
229 return CA_NOT_SUPPORTED;
231 OIC_LOG(DEBUG, TAG, "Remove network type(LE)");
232 u_arraylist_remove(g_selectedNetworkList, index);
238 case CA_ADAPTER_REMOTE_ACCESS:
239 OIC_LOG(DEBUG, TAG, "Remove network type(RA)");
240 u_arraylist_remove(g_selectedNetworkList, index);
246 OIC_LOG(DEBUG, TAG, "Remove network type(TCP)");
247 u_arraylist_remove(g_selectedNetworkList, index);
249 #endif // TCP_ADAPTER
253 OIC_LOG(DEBUG, TAG, "Add network type(NFC) - Not Supported");
254 return CA_NOT_SUPPORTED;
256 OIC_LOG(DEBUG, TAG, "Add network type(NFC)");
257 u_arraylist_remove(g_selectedNetworkList, index);
260 #endif // CA_ADAPTER_NFC
265 // stop selected interface adapter
266 CAStopAdapter(connType);
271 return CA_STATUS_FAILED;
274 u_arraylist_t *CAGetSelectedNetworkList()
276 return g_selectedNetworkList;
279 CAResult_t CAGetNetworkInformationInternal(CAEndpoint_t **info, uint32_t *size)
281 OIC_LOG(DEBUG, TAG, "get network information.");
283 if (NULL == info || NULL == size)
285 OIC_LOG(ERROR, TAG, "Input parameter is invalid value");
287 return CA_STATUS_INVALID_PARAM;
290 return CAGetNetworkInfo(info, size);
293 CAResult_t CATerminateNetworkType()
295 OIC_LOG(DEBUG, TAG, "CATerminateNetworkType()");
296 if (NULL != g_selectedNetworkList)
298 u_arraylist_free(&g_selectedNetworkList);