Make local handle for event loop
[platform/core/connectivity/libnet-client.git] / include / internal / network-internal.h
1 /*
2  * Network Client Library
3  *
4  * Copyright 2012 Samsung Electronics Co., Ltd
5  *
6  * Licensed under the Flora License, Version 1.1 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.tizenopensource.org/license
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 #ifndef __NETWORK_INTERNAL_H__
21 #define __NETWORK_INTERNAL_H__
22
23 #include <dlog.h>
24 #include <glib.h>
25 #include <stdlib.h>
26 #include <gio/gio.h>
27 #include <glib-object.h>
28
29 #include "network-info.h"
30 #include "network-cm-intf.h"
31 #include "network-wifi-intf.h"
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 /*****************************************************************************
38  *      Macros and Typedefs
39  *****************************************************************************/
40
41 /** Maximum Profile Count */
42 #define NET_PROFILE_LIST_MAX 512
43
44 #define CONNMAN_MAX_BUFLEN 512
45
46 #define CONNMAN_STATE_STRLEN 16
47
48 #define NET_MEMFREE(x)  {if(x != NULL) free(x); x = NULL;}
49
50 #define CONNMAN_SERVICE                 "net.connman"
51 #define CONNMAN_MANAGER_INTERFACE               CONNMAN_SERVICE ".Manager"
52 #define CONNMAN_TECHNOLOGY_INTERFACE    CONNMAN_SERVICE ".Technology"
53 #define CONNMAN_SERVICE_INTERFACE               CONNMAN_SERVICE ".Service"
54 #define CONNMAN_PROFILE_INTERFACE               CONNMAN_SERVICE ".Profile"
55 #define CONNMAN_COUNTER_INTERFACE               CONNMAN_SERVICE ".Counter"
56 #define CONNMAN_ERROR_INTERFACE                 CONNMAN_SERVICE ".Error"
57 #define CONNMAN_AGENT_INTERFACE                 CONNMAN_SERVICE ".Agent"
58 #define CONNMAN_MESH_INTERFACE                  CONNMAN_SERVICE ".Mesh"
59
60 #define CONNMAN_MANAGER_PATH                    "/"
61 #define CONNMAN_PATH                                    "/net/connman"
62 #define CONNMAN_TECHNOLOGY_PATH                 "/net/connman/technology"
63
64 #define NETCONFIG_SERVICE                               "net.netconfig"
65 #define NETCONFIG_NETWORK_INTERFACE             NETCONFIG_SERVICE ".network"
66 #define NETCONFIG_TCPDUMP_INTERFACE             NETCONFIG_SERVICE ".tcpdump"
67 #define NETCONFIG_WIFI_INTERFACE                NETCONFIG_SERVICE ".wifi"
68 #define NETCONFIG_STATISTICS_INTERFACE  NETCONFIG_SERVICE ".network_statistics"
69 #define NETCONFIG_MPTCP_INTERFACE               NETCONFIG_SERVICE ".mptcp"
70
71 #define NETCONFIG_NETWORK_PATH                  "/net/netconfig/network"
72 #define NETCONFIG_WIFI_PATH                             "/net/netconfig/wifi"
73 #define NETCONFIG_STATISTICS_PATH               "/net/netconfig/network_statistics"
74 #define NETCONFIG_MPTCP_PATH                    "/net/netconfig/mptcp"
75
76 #define NETCONFIG_TV_PROFILE_INTERFACE  NETCONFIG_SERVICE ".tv_profile"
77
78 #define TELEPHONY_SERVICE                               "com.tcore.ps"
79 #define TELEPHONY_MASTER_INTERFACE              TELEPHONY_SERVICE ".master"
80 #define TELEPHONY_MODEM_INTERFACE               TELEPHONY_SERVICE ".modem"
81 #define TELEPHONY_NETWORK_INTERFACE             TELEPHONY_SERVICE ".network"
82 #define TELEPHONY_PROFILE_INTERFACE             TELEPHONY_SERVICE ".context"
83
84 #define TELEPHONY_MASTER_PATH                   "/"
85 #define TELEPHONY_MODEM_PATH                    "/qmimodem0"
86
87 #define SUPPLICANT_SERVICE                              "fi.w1.wpa_supplicant1"
88 #define SUPPLICANT_INTERFACE                    "fi.w1.wpa_supplicant1"
89 #define SUPPLICANT_IFACE_INTERFACE              SUPPLICANT_INTERFACE ".Interface"
90 #define SUPPLICANT_IFACE_BSS                    SUPPLICANT_INTERFACE ".BSS"
91 #define SUPPLICANT_PATH                                 "/fi/w1/wpa_supplicant1"
92
93 #define DBUS_PROPERTIES_INTERFACE               "org.freedesktop.DBus.Properties"
94
95 #define CONNMAN_MANAGER_SIGNAL_FILTER \
96                                                 "type='signal',interface='net.connman.Manager'"
97 #define CONNMAN_SERVICE_SIGNAL_FILTER \
98                                                 "type='signal',interface='net.connman.Service'"
99 #define NETCONFIG_WIFI_FILTER \
100                                                 "type='signal',interface='net.netconfig.wifi'"
101 #define SUPPLICANT_INTERFACE_SIGNAL_FILTER \
102                         "type='signal',interface='fi.w1.wpa_supplicant1.Interface'"
103
104 #define SIGNAL_PROPERTY_CHANGED         "PropertyChanged"
105 #define SIGNAL_PROPERTIES_CHANGED       "PropertiesChanged"
106 #define SIGNAL_TECHNOLOGY_ADDED         "TechnologyAdded"
107 #define SIGNAL_TECHNOLOGY_REMOVED       "TechnologyRemoved"
108 #define SIGNAL_SERVICES_CHANGED         "ServicesChanged"
109 #define SIGNAL_SCAN_DONE                        "ScanDone"
110
111 #define CONNMAN_CELLULAR_TECHNOLOGY_PREFIX \
112                                                                         CONNMAN_PATH "/technology/cellular"
113 #define CONNMAN_WIFI_TECHNOLOGY_PREFIX \
114                                                                         CONNMAN_PATH "/technology/wifi"
115 #define CONNMAN_ETHERNET_TECHNOLOGY_PREFIX \
116                                                                         CONNMAN_PATH "/technology/ethernet"
117 #define CONNMAN_BLUETOOTH_TECHNOLOGY_PREFIX \
118                                                                         CONNMAN_PATH "/technology/bluetooth"
119 #define CONNMAN_MESH_TECHNOLOGY_PREFIX \
120                                                                         CONNMAN_PATH "/technology/mesh"
121
122 #define CONNMAN_CELLULAR_SERVICE_PROFILE_PREFIX \
123                                                                         CONNMAN_PATH "/service/cellular_"
124 #define CONNMAN_WIFI_SERVICE_PROFILE_PREFIX \
125                                                                         CONNMAN_PATH "/service/wifi_"
126 #define CONNMAN_ETHERNET_SERVICE_PROFILE_PREFIX \
127                                                                         CONNMAN_PATH "/service/ethernet_"
128 #define CONNMAN_BLUETOOTH_SERVICE_PROFILE_PREFIX \
129                                                                         CONNMAN_PATH "/service/bluetooth_"
130 #define CONNMAN_MESH_PROFILE_PREFIX \
131                                                                         CONNMAN_PATH "/mesh/mesh_"
132
133 /** Network related Daemon Signals */
134 #define NETCONFIG_SIGNAL_POWERON_COMPLETED      "PowerOnCompleted"
135 #define NETCONFIG_SIGNAL_POWEROFF_COMPLETED     "PowerOffCompleted"
136 #define NETCONFIG_SIGNAL_ETHERNET_CABLE_STATE   "EthernetCableState"
137 #define NETCONFIG_SIGNAL_TDLS_CONNECTED         "TDLSConnect"
138 #define NETCONFIG_SIGNAL_TDLS_DISCONNECTED      "TDLSDisconnect"
139 #define NETCONFIG_SIGNAL_TDLS_PEER_FOUND        "TDLSPeerFound"
140 #define NETCONFIG_SIGNAL_WIFI_CONNECT_FAIL      "WiFiConnectFail"
141 #define NETCONFIG_SIGNAL_DPM_WIFI                       "DPMWifi"
142 #define NETCONFIG_SIGNAL_DPM_WIFI_PROFILE       "DPMWifiProfile"
143 #define NETCONFIG_SIGNAL_NETWORK_CONFIGURATION_CHANGED  "NetworkConfigChanged"
144
145 #undef  LOG_TAG
146 #define LOG_TAG         "NET_CLIENT"
147
148 #define NETWORK_LOW                     1
149 #define NETWORK_HIGH            2
150 #define NETWORK_ERROR           3
151
152 #define NETWORK_LOG(log_level, format, args...) \
153         do { \
154                 switch (log_level) { \
155                 case NETWORK_ERROR: \
156                         SLOGE(format, ##args); \
157                         break; \
158                 case NETWORK_HIGH: \
159                         SLOGI(format, ##args); \
160                         break; \
161                 default: \
162                         SLOGD(format, ##args); \
163                 } \
164         } while(0)
165
166 #define SECURE_NETWORK_LOG(log_level, format, args...) \
167         do { \
168                 switch (log_level) { \
169                 case NETWORK_ERROR: \
170                         SECURE_SLOGE(format, ##args); \
171                         break; \
172                 case NETWORK_HIGH: \
173                         SECURE_SLOGI(format, ##args); \
174                         break; \
175                 default: \
176                         SECURE_SLOGD(format, ##args); \
177                 } \
178         } while(0)
179
180 #define NERWORK_LOG_RED "\033[0;31m"
181 #define NERWORK_LOG_GREEN "\033[0;32m"
182 #define NERWORK_LOG_BROWN "\033[0;33m"
183 #define NERWORK_LOG_BLUE "\033[0;34m"
184 #define NERWORK_LOG_END "\033[0;m"
185 #define __NETWORK_FUNC_ENTER__ /*NETWORK_LOG(NETWORK_LOW, NERWORK_LOG_GREEN"Entering (%s)" NERWORK_LOG_END, __func__);*/
186 #define __NETWORK_FUNC_EXIT__  /*NETWORK_LOG(NETWORK_LOW, NERWORK_LOG_RED"Quit (%s)" NERWORK_LOG_END, __func__);*/
187
188
189 /*****************************************************************************
190  *      Global Enums
191  *****************************************************************************/
192
193 typedef enum
194 {
195         NETWORK_REQUEST_TYPE_SCAN = 0x00,
196         NETWORK_REQUEST_TYPE_OPEN_CONNECTION,
197         NETWORK_REQUEST_TYPE_CLOSE_CONNECTION,
198         NETWORK_REQUEST_TYPE_WIFI_POWER,
199         NETWORK_REQUEST_TYPE_ENROLL_WPS,
200         NETWORK_REQUEST_TYPE_SPECIFIC_SCAN,
201         NETWORK_REQUEST_TYPE_SET_DEFAULT,
202         NETWORK_REQUEST_TYPE_RESET_DEFAULT,
203         NETWORK_REQUEST_TYPE_MAX
204 } network_async_request_type_t;
205
206 typedef struct
207 {
208         int flag;
209         char ProfileName[NET_PROFILE_NAME_LEN_MAX+1];
210 } network_request_table_t;
211
212 /*****************************************************************************
213  *      Global Structures
214  *****************************************************************************/
215 typedef struct
216 {
217         int num_of_services;
218         char* ProfileName[NET_PROFILE_LIST_MAX];
219 } network_services_list_t;
220
221 /*****************************************************************************
222  *      Global Functions
223  *****************************************************************************/
224 net_device_t _net_get_tech_type_from_path(const char *profile_name);
225 int _net_get_tech_state(GVariant *iter, network_tech_state_info_t* tech_state);
226 char* _net_print_error(net_err_t error);
227 int _net_is_valid_service_type(net_service_type_t service_type);
228 int _net_check_profile_name(const char* ProfileName);
229 int _net_get_profile_list(network_info_t *network_info, net_device_t device_type,
230                         net_profile_info_t** profile_info, int* profile_count);
231 int _net_get_default_profile_info(network_info_t *network_info,
232                         net_profile_info_t *profile_info);
233 void _net_clear_request_table(void);
234
235 int _net_dbus_create_gdbus_call(network_info_t *network_info);
236 void _net_dbus_close_gdbus_call(network_info_t *network_info);
237
238 #ifdef __cplusplus
239 }
240 #endif
241
242 #endif /* __NETWORK_INTERNAL_H__ */