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_IP = CA_IPV4;
32 static uint32_t NETWORK_EDR = CA_EDR;
33 static uint32_t NETWORK_LE = CA_LE;
36 CAResult_t CAAddNetworkType(CATransportType_t transportType)
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 (transportType)
57 OIC_LOG(DEBUG, TAG, "Add network type(IP) - Not Supported");
58 return CA_NOT_SUPPORTED;
59 #endif /* IP_ADAPTER */
61 OIC_LOG(DEBUG, TAG, "Add network type(IP)");
62 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_IP))
66 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_IP);
71 OIC_LOG(ERROR, TAG, "Currently IPV6 is not supported");
72 return CA_NOT_SUPPORTED;
79 OIC_LOG(DEBUG, TAG, "Add network type(EDR) - Not Supported");
80 return CA_NOT_SUPPORTED;
81 #endif /* EDR_ADAPTER */
83 OIC_LOG(DEBUG, TAG, "Add network type(EDR)");
84 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_EDR))
88 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_EDR);
96 OIC_LOG(DEBUG, TAG, "Add network type(LE) - Not Supported");
97 return CA_NOT_SUPPORTED;
98 #endif /* LE_ADAPTER */
100 OIC_LOG(DEBUG, TAG, "Add network type(LE)");
101 if (u_arraylist_contains(g_selectedNetworkList, &NETWORK_LE))
105 res = u_arraylist_add(g_selectedNetworkList, &NETWORK_LE);
111 if (CA_STATUS_OK != res)
113 OIC_LOG_V(ERROR, TAG, "Add arraylist failed[Err code: %d]", res);
116 // start selected interface adapter
117 res = CAStartAdapter((CATransportType_t)transportType);
118 OIC_LOG(DEBUG, TAG, "OUT");
122 OIC_LOG(DEBUG, TAG, "This adapter is already enabled");
126 CAResult_t CARemoveNetworkType(CATransportType_t transportType)
128 OIC_LOG(DEBUG, TAG, "IN");
130 if (NULL == g_selectedNetworkList)
132 OIC_LOG(ERROR, TAG, "SelectedNetwork list is NULL");
134 return CA_STATUS_FAILED;
137 uint32_t selectedNetworkLength = u_arraylist_length(g_selectedNetworkList);
138 for (uint32_t index = 0; index < selectedNetworkLength; index++)
140 void* ptrType = u_arraylist_get(g_selectedNetworkList, index);
146 CATransportType_t connType = *(CATransportType_t *) ptrType;
148 if (transportType == connType)
150 switch (transportType)
155 OIC_LOG(DEBUG, TAG, "Remove network type(IP) - Not Supported");
156 return CA_NOT_SUPPORTED;
159 OIC_LOG(DEBUG, TAG, "Remove network type(IP)");
160 u_arraylist_remove(g_selectedNetworkList, index);
161 #endif /* IP_ADAPTER */
166 OIC_LOG(ERROR, TAG, "Currently IPV6 is not supported");
167 return CA_NOT_SUPPORTED;
173 OIC_LOG(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
174 return CA_NOT_SUPPORTED;
176 OIC_LOG(DEBUG, TAG, "Remove network type(EDR)");
177 u_arraylist_remove(g_selectedNetworkList, index);
178 #endif /* EDR_ADAPTER */
185 OIC_LOG(DEBUG, TAG, "Remove network type(LE) - Not Supported");
186 return CA_NOT_SUPPORTED;
188 OIC_LOG(DEBUG, TAG, "Remove network type(LE)");
189 u_arraylist_remove(g_selectedNetworkList, index);
190 #endif /* LE_ADAPTER */
195 // stop selected interface adapter
196 CAStopAdapter(connType);
201 return CA_STATUS_FAILED;
204 u_arraylist_t *CAGetSelectedNetworkList()
206 return g_selectedNetworkList;
209 CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_t *size)
211 OIC_LOG(DEBUG, TAG, "get network information.");
213 if (NULL == info || NULL == size)
215 OIC_LOG(ERROR, TAG, "Input parameter is invalid value");
217 return CA_STATUS_INVALID_PARAM;
220 return CAGetNetworkInfo(info, size);
223 CAResult_t CATerminateNetworkType()
225 OIC_LOG(DEBUG, TAG, "CATerminateNetworkType()");
226 if (NULL != g_selectedNetworkList)
228 u_arraylist_free(&g_selectedNetworkList);