2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef __TETHERING_PRIVATE_H__
18 #define __TETHERING_PRIVATE_H__
20 #define LOG_TAG "CAPI_NETWORK_TETHERING"
25 #include "tethering.h"
32 #define API __attribute__ ((visibility("default")))
35 #ifndef DEPRECATED_API
36 #define DEPRECATED_API __attribute__ ((deprecated))
39 #define INFO(fmt, args...) LOGI(fmt, ##args)
40 #define DBG(fmt, args...) LOGD(fmt, ##args)
41 #define WARN(fmt, args...) LOGW(fmt, ##args)
42 #define ERR(fmt, args...) LOGE(fmt, ##args)
43 #define SINFO(fmt, args...) SECURE_LOGI(fmt, ##args)
44 #define SDBG(fmt, args...) SECURE_LOGD(fmt, ##args)
45 #define SERR(fmt, args...) SECURE_LOGE(fmt, ##args)
47 #define _warn_if(expr, fmt, arg...) do { \
53 #define _ret_if(expr) do { \
59 #define _retv_if(expr, val) do { \
65 #define _retm_if(expr, fmt, arg...) do { \
72 #define _retvm_if(expr, val, fmt, arg...) do { \
80 * To lock and unlock Mutex
83 #define TETHERING_LOCK \
88 #define TETHERING_UNLOCK \
90 _tethering_unlock(); \
93 void _tethering_lock(void);
94 void _tethering_unlock(void);
97 * To check supported feature
100 #define TETHERING_FEATURE "http://tizen.org/feature/network.tethering"
101 #define TETHERING_BT_FEATURE "http://tizen.org/feature/network.tethering.bluetooth"
102 #define TETHERING_USB_FEATURE "http://tizen.org/feature/network.tethering.usb"
103 #define TETHERING_WIFI_FEATURE "http://tizen.org/feature/network.tethering.wifi"
106 TETHERING_SUPPORTED_FEATURE,
107 TETHERING_SUPPORTED_FEATURE_WIFI,
108 TETHERING_SUPPORTED_FEATURE_BT,
109 TETHERING_SUPPORTED_FEATURE_USB,
110 TETHERING_SUPPORTED_FEATURE_MAX,
111 } tethering_supported_feature_e;
113 #define CHECK_FEATURE_SUPPORTED(...) \
115 int rv = _tethering_check_feature_supported(__VA_ARGS__, NULL); \
116 if (rv != TETHERING_ERROR_NONE) { \
121 int _tethering_check_feature_supported(const char* feature, ...);
124 * Start of mobileap-agent common values
125 * When these values are changed, mobileap-agent should be also changed.
126 * But some of those will be removed.
130 * from mobileap_lib.h
134 * Common configuration
136 #define TETHERING_STR_INFO_LEN 40 /**< length of the ip or mac address */
137 #define TETHERING_IPV4_ADDRESS_MAX_LEN 15 /**< Maximum length of IP address */
138 #define TETHERING_IPV4_ADDRESS_MIN_LEN 7 /**< Minimum length of IP address */
142 * Mobile AP error code
145 MOBILE_AP_ERROR_NONE, /**< No error */
146 MOBILE_AP_ERROR_RESOURCE, /**< Socket creation error, file open error */
147 MOBILE_AP_ERROR_INTERNAL, /**< Driver related error */
148 MOBILE_AP_ERROR_INVALID_PARAM, /**< Invalid parameter */
149 MOBILE_AP_ERROR_ALREADY_ENABLED, /**< Mobile AP is already ON */
150 MOBILE_AP_ERROR_NOT_ENABLED, /**< Mobile AP is not ON, so cannot be disabled */
151 MOBILE_AP_ERROR_NET_OPEN, /**< PDP network open error */
152 MOBILE_AP_ERROR_NET_CLOSE, /**< PDP network close error */
153 MOBILE_AP_ERROR_DHCP, /**< DHCP error */
154 MOBILE_AP_ERROR_IN_PROGRESS, /**< Request is in progress */
155 MOBILE_AP_ERROR_NOT_PERMITTED, /**< Operation is not permitted */
156 MOBILE_AP_ERROR_PERMISSION_DENIED, /**< Permission Denied */
159 } mobile_ap_error_code_e;
162 * Event type on callback
165 MOBILE_AP_ENABLE_CFM,
166 MOBILE_AP_DISABLE_CFM,
168 MOBILE_AP_ENABLE_WIFI_TETHERING_CFM,
169 MOBILE_AP_DISABLE_WIFI_TETHERING_CFM,
170 MOBILE_AP_CHANGE_WIFI_CONFIG_CFM,
172 MOBILE_AP_ENABLE_USB_TETHERING_CFM,
173 MOBILE_AP_DISABLE_USB_TETHERING_CFM,
175 MOBILE_AP_ENABLE_BT_TETHERING_CFM,
176 MOBILE_AP_DISABLE_BT_TETHERING_CFM,
178 MOBILE_AP_ENABLE_P2P_TETHERING_CFM,
179 MOBILE_AP_DISABLE_P2P_TETHERING_CFM,
181 MOBILE_AP_GET_STATION_INFO_CFM,
182 MOBILE_AP_GET_DATA_PACKET_USAGE_CFM
194 E_SIGNAL_NET_CLOSED = 0,
195 E_SIGNAL_WIFI_TETHER_ON,
196 E_SIGNAL_WIFI_TETHER_OFF,
197 E_SIGNAL_USB_TETHER_ON,
198 E_SIGNAL_USB_TETHER_OFF,
199 E_SIGNAL_BT_TETHER_ON,
200 E_SIGNAL_BT_TETHER_OFF,
201 E_SIGNAL_NO_DATA_TIMEOUT,
202 E_SIGNAL_LOW_BATTERY_MODE,
203 E_SIGNAL_FLIGHT_MODE,
204 E_SIGNAL_SECURITY_TYPE_CHANGED,
205 E_SIGNAL_SSID_VISIBILITY_CHANGED,
206 E_SIGNAL_PASSPHRASE_CHANGED,
207 E_SIGNAL_DHCP_STATUS,
211 #define TETHERING_SERVICE_OBJECT_PATH "/MobileapAgent"
212 #define TETHERING_SERVICE_NAME "org.tizen.MobileapAgent"
213 #define TETHERING_SERVICE_INTERFACE "org.tizen.tethering"
215 #define TETHERING_SIGNAL_MATCH_RULE "type='signal',interface='org.tizen.tethering'"
216 #define TETHERING_SIGNAL_NAME_LEN 64
218 #define SIGNAL_NAME_NET_CLOSED "net_closed"
219 #define SIGNAL_NAME_STA_CONNECT "sta_connected"
220 #define SIGNAL_NAME_STA_DISCONNECT "sta_disconnected"
221 #define SIGNAL_NAME_WIFI_TETHER_ON "wifi_on"
222 #define SIGNAL_NAME_WIFI_TETHER_OFF "wifi_off"
223 #define SIGNAL_NAME_USB_TETHER_ON "usb_on"
224 #define SIGNAL_NAME_USB_TETHER_OFF "usb_off"
225 #define SIGNAL_NAME_BT_TETHER_ON "bluetooth_on"
226 #define SIGNAL_NAME_BT_TETHER_OFF "bluetooth_off"
227 #define SIGNAL_NAME_NO_DATA_TIMEOUT "no_data_timeout"
228 #define SIGNAL_NAME_LOW_BATTERY_MODE "low_batt_mode"
229 #define SIGNAL_NAME_FLIGHT_MODE "flight_mode"
230 #define SIGNAL_NAME_SECURITY_TYPE_CHANGED "security_type_changed"
231 #define SIGNAL_NAME_SSID_VISIBILITY_CHANGED "ssid_visibility_changed"
232 #define SIGNAL_NAME_PASSPHRASE_CHANGED "passphrase_changed"
233 #define SIGNAL_NAME_DHCP_STATUS "dhcp_status"
235 #define SIGNAL_MSG_NOT_AVAIL_INTERFACE "Interface is not available"
236 #define SIGNAL_MSG_TIMEOUT "There is no connection for a while"
237 #define SIGNAL_MSG_SSID_VISIBLE "ssid_visible"
238 #define SIGNAL_MSG_SSID_HIDE "ssid_hide"
240 /* Network Interface */
241 #define TETHERING_SUBNET_MASK "255.255.255.0"
243 #define TETHERING_USB_IF "usb0"
244 #define TETHERING_USB_GATEWAY "192.168.129.1"
246 #define TETHERING_WIFI_IF "wlan0"
247 #define TETHERING_WIFI_GATEWAY "192.168.43.1"
249 #define TETHERING_BT_IF "bnep0"
250 #define TETHERING_BT_GATEWAY "192.168.130.1"
252 #define TETHERING_P2P_IF "p2p0"
253 #define TETHERING_P2P_GATEWAY "192.168.49.1"
255 #define TETHERING_WIFI_SSID_MAX_LEN 32 /**< Maximum length of ssid */
256 #define TETHERING_WIFI_KEY_MIN_LEN 8 /**< Minimum length of wifi key */
257 #define TETHERING_WIFI_KEY_MAX_LEN 64 /**< Maximum length of wifi key */
258 #define TETHERING_WIFI_HASH_KEY_MAX_LEN 64
259 #define TETHERING_WIFI_MAX_STA 10 /**< Maximum Wi-Fi tethering station */
260 #define TETHERING_WIFI_MAX_TXPOWER 100 /**< Default max TX POWER */
262 #define TETHERING_WIFI_MODE_MAX_LEN 10 /**< Maximum length of mode */
264 #define VCONFKEY_MOBILE_HOTSPOT_SSID "memory/private/mobileap-agent/ssid"
265 #define TETHERING_PASSPHRASE_PATH "wifi_tethering.txt"
266 #define TETHERING_WIFI_PASSPHRASE_STORE_KEY "tethering_wifi_passphrase"
267 #define MAX_ALIAS_LEN 256
270 * End of mobileap-agent common values
273 #define TETHERING_DEFAULT_SSID "Tizen"
274 #define TETHERING_WIFI_CHANNEL 6
275 #define TETHERING_WIFI_SECURITY_TYPE_OPEN_STR "open"
276 #define TETHERING_WIFI_SECURITY_TYPE_WPA2_PSK_STR "wpa2-psk"
277 #define TETHERING_WIFI_SECURITY_TYPE_WPS_STR "wps"
278 #define TETHERING_WIFI_SECURITY_TYPE_SAE_STR "sae"
279 #define TETHERING_ERROR_RECOVERY_MAX 3
280 #define SECURITY_TYPE_LEN 32
281 #define PSK_ITERATION_COUNT 4096
283 typedef void (*__handle_cb_t)(GDBusConnection *connection, const gchar *sender_name,
284 const gchar *object_path, const gchar *interface_name, const gchar *signal_name,
285 GVariant *parameters, gpointer user_data);
289 char name[TETHERING_SIGNAL_NAME_LEN];
294 GDBusConnection *client_bus;
295 GDBusProxy *client_bus_proxy;
296 GCancellable *cancellable;
298 tethering_enabled_cb enabled_cb[TETHERING_TYPE_MAX];
299 void *enabled_user_data[TETHERING_TYPE_MAX];
300 tethering_disabled_cb disabled_cb[TETHERING_TYPE_MAX];
301 void *disabled_user_data[TETHERING_TYPE_MAX];
302 tethering_connection_state_changed_cb changed_cb[TETHERING_TYPE_MAX];
303 void *changed_user_data[TETHERING_TYPE_MAX];
304 tethering_data_usage_cb data_usage_cb;
305 void *data_usage_user_data;
306 tethering_wifi_security_type_changed_cb security_type_changed_cb;
307 void *security_type_user_data;
308 tethering_wifi_ssid_visibility_changed_cb ssid_visibility_changed_cb;
309 void *ssid_visibility_user_data;
310 tethering_wifi_passphrase_changed_cb passphrase_changed_cb;
311 void *passphrase_user_data;
312 tethering_wifi_settings_reloaded_cb settings_reloaded_cb;
313 void *settings_reloaded_user_data;
315 char passphrase[TETHERING_WIFI_KEY_MAX_LEN + 1];
316 tethering_wifi_security_type_e sec_type;
317 tethering_wifi_mode_type_e mode_type;
318 char ip_address[TETHERING_IPV4_ADDRESS_MAX_LEN + 1];
321 bool port_forwarding;
326 int wifi_max_connected;
327 unsigned int txpower;
331 tethering_type_e interface; /**< interface type */
332 char ip[TETHERING_STR_INFO_LEN]; /**< assigned IP address */
333 char mac[TETHERING_STR_INFO_LEN]; /**< MAC Address */
335 time_t tm; /**< connection time */
336 tethering_band_e band; /**< wifi band type */
337 } __tethering_client_h;
340 tethering_type_e interface; /**< interface type */
341 char interface_name[TETHERING_STR_INFO_LEN]; /**< interface alphanumeric name */
342 char ip_address[TETHERING_STR_INFO_LEN]; /**< assigned ip addresss to interface */
343 char gateway_address[TETHERING_STR_INFO_LEN]; /**< gateway address of interface */
344 char subnet_mask[TETHERING_STR_INFO_LEN]; /**< subnet mask of interface */
345 } __tethering_interface_t;
348 char ssid[TETHERING_WIFI_SSID_MAX_LEN + 1];
349 char key[TETHERING_WIFI_KEY_MAX_LEN + 1];
350 char mode[TETHERING_WIFI_MODE_MAX_LEN + 1];
351 char ip_address[TETHERING_IPV4_ADDRESS_MAX_LEN + 1];
352 tethering_wifi_security_type_e sec_type;
357 unsigned int txpower;
358 } _softap_settings_t;
360 void _tethering_add_handle(tethering_h handle);
361 void _tethering_remove_handle(tethering_h handle);
362 bool _tethering_check_handle(tethering_h handle);
368 #endif /* __TETHERING_PRIVATE_H__ */