Merge "Fix compiler warnings" into connectivity-abstraction
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / canetworkconfigurator.c
1 /******************************************************************
2  *
3  * Copyright 2014 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  ******************************************************************/
20
21 #include <stdlib.h>
22
23 #include "canetworkconfigurator.h"
24 #include "uarraylist.h"
25 #include "logger.h"
26 #include "cainterfacecontroller.h"
27
28 #define TAG PCF("CA")
29
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;
35
36
37 CAResult_t CAAddNetworkType(uint32_t ConnectivityType)
38 {
39     if (gSelectedNetworkList == NULL)
40     {
41         OIC_LOG_V(DEBUG, TAG, "Create network list");
42
43         gSelectedNetworkList = u_arraylist_create();
44     }
45
46     switch (ConnectivityType)
47     {
48         case CA_ETHERNET:
49
50 #ifndef ETHERNET_ADAPTER
51             OIC_LOG_V(DEBUG, TAG, "Add network type(ETHERNET) - Not Supported");
52             return CA_NOT_SUPPORTED;
53 #endif /* ETHERNET_ADAPTER */
54
55             OIC_LOG_V(DEBUG, TAG, "Add network type(ETHERNET)");
56             if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_ETHERNET))
57             {
58                 u_arraylist_add(gSelectedNetworkList, &NETWORK_ETHERNET);
59             }
60             break;
61
62         case CA_WIFI:
63
64 #ifndef WIFI_ADAPTER
65             OIC_LOG_V(DEBUG, TAG, "Add network type(WIFI) - Not Supported");
66             return CA_NOT_SUPPORTED;
67 #endif /* WIFI_ADAPTER */
68
69             OIC_LOG_V(DEBUG, TAG, "Add network type(WIFI)");
70             if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_WIFI))
71             {
72                 u_arraylist_add(gSelectedNetworkList, &NETWORK_WIFI);
73             }
74             break;
75
76         case CA_EDR:
77
78 #ifndef EDR_ADAPTER
79             OIC_LOG_V(DEBUG, TAG, "Add network type(EDR) - Not Supported");
80             return CA_NOT_SUPPORTED;
81 #endif /* EDR_ADAPTER */
82
83             OIC_LOG_V(DEBUG, TAG, "Add network type(EDR)");
84             if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_EDR))
85             {
86                 u_arraylist_add(gSelectedNetworkList, &NETWORK_EDR);
87             }
88             break;
89
90         case CA_LE:
91
92 #ifndef LE_ADAPTER
93             OIC_LOG_V(DEBUG, TAG, "Add network type(LE) - Not Supported");
94             return CA_NOT_SUPPORTED;
95 #endif /* LE_ADAPTER */
96
97             OIC_LOG_V(DEBUG, TAG, "Add network type(LE)");
98             if (!u_arraylist_contains(gSelectedNetworkList, &NETWORK_LE))
99             {
100                 u_arraylist_add(gSelectedNetworkList, &NETWORK_LE);
101             }
102             break;
103
104     }
105
106     // start selected interface adapter
107     CAStartAdapter(ConnectivityType);
108
109     return CA_STATUS_OK;
110 }
111
112 CAResult_t CARemoveNetworkType(uint32_t ConnectivityType)
113 {
114     uint8_t index;
115     uint32_t type;
116
117     if (gSelectedNetworkList == NULL)
118     {
119         OIC_LOG_V(DEBUG, TAG, "Selected network not found");
120
121         return CA_STATUS_FAILED;
122     }
123
124     for (index = 0; index < u_arraylist_length(gSelectedNetworkList); index++)
125     {
126         type = *(uint32_t *) u_arraylist_get(gSelectedNetworkList, index);
127
128         if (ConnectivityType == type)
129         {
130             switch (ConnectivityType)
131             {
132                 case CA_ETHERNET:
133
134 #ifndef ETHERNET_ADAPTER
135                     OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET) - Not Supported");
136                     return CA_NOT_SUPPORTED;
137 #else
138
139                     OIC_LOG_V(DEBUG, TAG, "Remove network type(ETHERNET)");
140                     u_arraylist_remove(gSelectedNetworkList, index);
141 #endif /* ETHERNET_ADAPTER */
142                     break;
143
144                 case CA_WIFI:
145
146 #ifndef WIFI_ADAPTER
147                     OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI) - Not Supported");
148                     return CA_NOT_SUPPORTED;
149 #else
150                     OIC_LOG_V(DEBUG, TAG, "Remove network type(WIFI)");
151                     u_arraylist_remove(gSelectedNetworkList, index);
152 #endif /* WIFI_ADAPTER */
153
154                     break;
155
156                 case CA_EDR:
157
158 #ifndef EDR_ADAPTER
159                     OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR) - Not Supported");
160                     return CA_NOT_SUPPORTED;
161 #else
162                     OIC_LOG_V(DEBUG, TAG, "Remove network type(EDR)");
163                     u_arraylist_remove(gSelectedNetworkList, index);
164 #endif /* EDR_ADAPTER */
165
166                     break;
167
168                 case CA_LE:
169
170 #ifdef LE_ADAPTER
171                     OIC_LOG_V(DEBUG, TAG, "Remove network type(LE) - Not Supported");
172                     return CA_NOT_SUPPORTED;
173 #else
174                     OIC_LOG_V(DEBUG, TAG, "Remove network type(LE)");
175                     u_arraylist_remove(gSelectedNetworkList, index);
176 #endif /* LE_ADAPTER */
177
178                     break;
179             }
180
181             // stop selected interface adapter
182             CAStopAdapter(ConnectivityType);
183         }
184     }
185
186     return CA_STATUS_OK;
187 }
188
189 u_arraylist_t *CAGetSelectedNetworkList()
190 {
191     OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList IN");
192     if (gSelectedNetworkList == NULL)
193     {
194         OIC_LOG_V(DEBUG, TAG, "Selected network not found");
195
196         return NULL;
197     }
198     OIC_LOG(DEBUG, TAG, "CAGetSelectedNetworkList OUT");
199     return gSelectedNetworkList;
200 }
201
202 CAResult_t CAGetNetworkInformationInternal(CALocalConnectivity_t **info, uint32_t *size)
203 {
204     OIC_LOG_V(DEBUG, TAG, "get network information.");
205
206     return CAGetNetworkInfo(info, size);
207 }