Release 2.0 beta
[framework/connectivity/libnet-client.git] / src / include / 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.0 (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
21 #ifndef __NETWORK_INTERNAL_H_
22 #define __NETWORK_INTERNAL_H_
23
24 /*****************************************************************************
25  *      Standard headers
26  *****************************************************************************/
27 #include <stdio.h> 
28 #include <errno.h> 
29 #include <stdlib.h> 
30 #include <string.h>
31 #include <glib.h>
32
33 #include <dbus/dbus.h> 
34
35 #include <net/if.h>                     /** for IFNAMSIZ and co... */
36
37 /*****************************************************************************
38  *      Platform headers
39  *****************************************************************************/
40 #include "network-pm-intf.h"
41 #include "network-cm-intf.h"
42 #include "network-wifi-intf.h"
43
44 /*****************************************************************************
45  *      Macros and Typedefs
46  *****************************************************************************/
47
48 /** Maximum Profile Count */
49 #define NET_PROFILE_LIST_MAX 512
50
51 #define NET_TECH_LENGTH_MAX 64
52
53 #define CONNMAN_MAX_BUFLEN 512
54
55 #define NET_MEMFREE(x)  {if(x != NULL) free(x); x = NULL;}
56
57 /** ConnMan Daemon Management interface */
58
59 #define CONNMAN_SERVICE                 "net.connman"
60
61 #define CONNMAN_MANAGER_INTERFACE               CONNMAN_SERVICE ".Manager"
62 #define CONNMAN_TECHNOLOGY_INTERFACE    CONNMAN_SERVICE ".Technology"
63 #define CONNMAN_SERVICE_INTERFACE               CONNMAN_SERVICE ".Service"
64 #define CONNMAN_PROFILE_INTERFACE               CONNMAN_SERVICE ".Profile"
65 #define CONNMAN_COUNTER_INTERFACE               CONNMAN_SERVICE ".Counter"
66 #define CONNMAN_ERROR_INTERFACE                 CONNMAN_SERVICE ".Error"
67
68 #define CONNMAN_MANAGER_PATH                    "/"
69 #define CONNMAN_PATH                                    "/net/connman"
70 #define CONNMAN_TECHNOLOGY_PATH                 "/net/connman/technology"
71
72 /** Network related Daemon interfaces */
73
74 #define NETCONFIG_SERVICE                               "net.netconfig"
75 #define NETCONFIG_WIFI_INTERFACE                NETCONFIG_SERVICE ".wifi"
76 #define NETCONFIG_STATISTICS_INTERFACE          NETCONFIG_SERVICE ".network_statistics"
77
78 #define NETCONFIG_WIFI_PATH                             "/net/netconfig/wifi"
79 #define NETCONFIG_STATISTICS_PATH                       "/net/netconfig/network_statistics"
80
81 #define TELEPHONY_SERVCE                                "com.tcore.ps"
82 #define TELEPHONY_MASTER_INTERFACE              TELEPHONY_SERVCE ".master"
83 #define TELEPHONY_NETWORK_INTERFACE             TELEPHONY_SERVCE ".network"
84 #define TELEPHONY_PROFILE_INTERFACE             TELEPHONY_SERVCE ".context"
85 #define TELEPHONY_MASTER_PATH                   "/"
86
87 /** Network related Daemon Signal Filters */
88
89 #define NETCONFIG_WIFI_FILTER                   "type='signal',interface='net.netconfig.wifi'"
90
91 /** Network related Daemon Signals */
92
93 #define NETCONFIG_SIGNAL_POWERON_COMPLETED      "PowerOnCompleted"
94 #define NETCONFIG_SIGNAL_POWEROFF_COMPLETED     "PowerOffCompleted"
95 #define NETCONFIG_SIGNAL_SPECIFIC_SCAN_DONE     "SpecificScanCompleted"
96
97 /** ConnMan Daemon Signal Filters */
98
99 #define CONNMAN_MANAGER_SIGNAL_FILTER           "type='signal',interface='net.connman.Manager'"
100 #define CONNMAN_TECHNOLOGY_SIGNAL_FILTER        "type='signal',interface='net.connman.Technology'"
101 #define CONNMAN_SERVICE_SIGNAL_FILTER           "type='signal',interface='net.connman.Service'"
102 #define CONNMAN_PROFILE_SIGNAL_FILTER           "type='signal',interface='net.connman.Profile'"
103 #define CONNMAN_NETWORK_COUNTER_FILTER          "type='signal',interface='net.connman.Counter'"
104
105 /** ConnMan Daemon Signals */
106
107 #define CONNMAN_SIGNAL_PROPERTY_CHANGED         "PropertyChanged"
108 #define CONNMAN_SIGNAL_STATE_CHANGED            "StateChanged"
109 #define CONNMAN_SIGNAL_SCAN_COMPLETED           "ScanCompleted"
110
111 /** ConnMan technology and profile prefixes for ConnMan 0.78 */
112
113 #define CONNMAN_CELLULAR_TECHNOLOGY_PREFIX              CONNMAN_PATH "/technology/cellular"
114 #define CONNMAN_WIFI_TECHNOLOGY_PREFIX                  CONNMAN_PATH "/technology/wifi"
115 #define CONNMAN_ETHERNET_TECHNOLOGY_PREFIX              CONNMAN_PATH "/technology/ethernet"
116
117 #define CONNMAN_CELLULAR_SERVICE_PROFILE_PREFIX CONNMAN_PATH "/service/cellular_"
118 #define CONNMAN_WIFI_SERVICE_PROFILE_PREFIX             CONNMAN_PATH "/service/wifi_"
119 #define CONNMAN_ETHERNET_SERVICE_PROFILE_PREFIX CONNMAN_PATH "/service/ethernet_"
120
121
122 #ifdef VITA_FEATURE
123 #include <dlog.h>
124
125 #define CONNMAN_CLIENT_MID "network"
126
127 #define NETWORK_LOW             LOG_VERBOSE
128 #define NETWORK_MED             LOG_VERBOSE
129 #define NETWORK_HIGH            LOG_VERBOSE
130 #define NETWORK_ERROR           LOG_ERROR
131 #define NETWORK_EXCEPTION       LOG_WARN
132 #define NETWORK_ASSERT          LOG_WARN
133
134
135 #define NETWORK_LOG(log_level, format, args...) \
136         SLOG(log_level,CONNMAN_CLIENT_MID, "[%s][Ln: %d] " format, __FILE__, __LINE__, ##args) 
137 #define __NETWORK_FUNC_ENTER__  /* NETWORK_LOG(NETWORK_HIGH, "Entering %s()\n", __func__) */
138 #define __NETWORK_FUNC_EXIT__   /* NETWORK_LOG(NETWORK_HIGH, "Quit: %s()\n", __func__) */
139
140 #else /** VITA_FEATURE */
141
142 #define NETWORK_LOG(log_level, format, args...) printf("[%s][Ln: %d] " format, __FILE__, __LINE__, ##args)
143 #define __NETWORK_FUNC_ENTER__  /* printf("Entering: %s:%d:%s()\n", __FILE__, __LINE__,__func__) */
144 #define __NETWORK_FUNC_EXIT__   /* printf("Quit: %s:%d:%s()\n", __FILE__, __LINE__,__func__) */
145
146 #endif /** VITA_FEATURE */
147
148
149 /*****************************************************************************
150  *      Global Enums
151  *****************************************************************************/
152
153 typedef enum
154 {
155         NETWORK_REQUEST_TYPE_SCAN = 0x00,
156         NETWORK_REQUEST_TYPE_OPEN_CONNECTION,
157         NETWORK_REQUEST_TYPE_CLOSE_CONNECTION,
158         NETWORK_REQUEST_TYPE_WIFI_POWER,
159         NETWORK_REQUEST_TYPE_ENROLL_WPS,
160         NETWORK_REQUEST_TYPE_SPECIFIC_SCAN,
161         NETWORK_REQUEST_TYPE_MAX
162 } network_async_request_type_t;
163
164
165 typedef struct
166 {
167         int flag; /** TRUE/FALSE */
168         char ProfileName[NET_PROFILE_NAME_LEN_MAX+1];
169 } network_request_table_t;
170
171 /*****************************************************************************
172  *      Global Structures
173  *****************************************************************************/
174
175 typedef struct
176 {
177         int num_of_services;
178         char* ProfileName[NET_PROFILE_LIST_MAX];
179 } network_services_list_t;
180
181 typedef struct {
182         net_wifi_state_t wifi_state;
183         net_event_cb_t ClientEventCb;
184         void* user_data;
185         net_event_cb_t ClientEventCb_conn;
186         void* user_data_conn;
187         net_event_cb_t ClientEventCb_wifi;
188         void* user_data_wifi;
189         int ref_count;
190 } network_info_t;
191
192 typedef struct
193 {
194         char technology[NET_TECH_LENGTH_MAX]; /** wifi, ethernet, cellular - strings */
195         char AvailableTechnology;
196         char EnabledTechnology;
197         char ConnectedTechnology;
198         char DefaultTechnology;
199 } network_get_tech_state_info_t;
200
201 /**
202  * This is the profile structure exposed from modman.
203  */
204 typedef struct
205 {
206         /** Profile name */
207         char                    ProfileName[NET_PROFILE_NAME_LEN_MAX+1];
208         /** Service type of this profile context */
209         net_service_type_t      ServiceType;
210         /** Network Access Point Name */
211         char                    Apn[NET_PDP_APN_LEN_MAX+1];
212         /** Authentication info of the PDP profile */
213         net_auth_info_t AuthInfo;
214         /**Proxy address */
215         char                    ProxyAddr[NET_PROXY_LEN_MAX+1];
216         /** Browser Home URL or MMS server URL */
217         char                    HomeURL[NET_HOME_URL_LEN_MAX+1];
218 } net_telephony_profile_info_t;
219
220 /*****************************************************************************
221  *      Global Functions 
222  *****************************************************************************/
223 net_device_t _net_get_tech_type_from_path(const char *profile_name);
224 char* _net_get_string(DBusMessage* msg);
225 unsigned long long _net_get_uint64(DBusMessage* msg);
226 char* _net_get_object(DBusMessage* msg);
227 int _net_get_boolean(DBusMessage* msg);
228 int _net_get_path(DBusMessage *msg, char *profile_name);
229 int _net_get_tech_state(DBusMessage* msg, network_get_tech_state_info_t* tech_state);
230 char* _net_print_error(net_err_t error);
231 int _net_open_connection_with_wifi_info(const net_wifi_connection_info_t* wifi_info);
232 int _net_check_profile_name(const char* ProfileName);
233 int _net_get_profile_list(net_device_t device_type, net_profile_info_t** profile_info, int* profile_count);
234 int _net_mutex_init(void);
235 void _net_mutex_destroy(void);
236 void _net_client_callback(net_event_info_t *event_data);
237 int _net_get_service_profile(net_service_type_t service_type, net_profile_name_t *profile_name);
238 int _net_get_default_profile_info(net_profile_info_t *profile_info);
239 net_wifi_state_t _net_get_wifi_state(void);
240 void _net_clear_request_table(void);
241
242 #endif /** __NETWORK_INTERNAL_H_ */