2 * Network Configuration Module
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 * This file declares wifi direct manager functions and structures.
23 * @file wifi-direct-manager.h
24 * @author Gibyoung Kim (lastkgb.kim@samsung.com)
28 #ifndef __WIFI_DIRECT_MANAGER_H__
29 #define __WIFI_DIRECT_MANAGER_H__
31 #define DEFAULT_DEVICE_NAME "Tizen_Device"
33 #if defined TIZEN_PROFILE_MOBILE
34 # if defined TIZEN_WLAN_BOARD_SPRD
35 # define DEFAULT_IFNAME "p2p0"
36 # define GROUP_IFNAME "p2p0"
37 # else /* TIZEN_WLAN_BOARD_SPRD */
38 # define DEFAULT_IFNAME "wlan0"
39 # define GROUP_IFNAME "p2p-wlan0-0"
40 # endif /* TIZEN_WLAN_BOARD_SPRD */
41 # define DEFAULT_PRIMARY_DEVICE_TYPE WIFI_DIRECT_PRIMARY_DEVICE_TYPE_TELEPHONE
42 # define DEFAULT_SECONDARY_DEVICE_TYPE WIFI_DIRECT_SECONDARY_DEVICE_TYPE_TELEPHONE_SMARTPHONE_DUAL
43 #endif /* TIZEN_PROFILE_MOBILE */
45 #if defined TIZEN_PROFILE_TV
46 # if defined TIZEN_WIFI_MODULE_BUNDLE
47 # define DEFAULT_IFNAME "wlan0"
48 # define GROUP_IFNAME "wlan0"
49 # else /* TIZEN_WIFI_MODULE_BUNDLE */
50 # define DEFAULT_IFNAME "p2p0"
51 # define GROUP_IFNAME "p2p0"
52 # endif /* TIZEN_WIFI_MODULE_BUNDLE */
53 # define DEFAULT_PRIMARY_DEVICE_TYPE WIFI_DIRECT_PRIMARY_DEVICE_TYPE_DISPLAY
54 # define DEFAULT_SECONDARY_DEVICE_TYPE WIFI_DIRECT_SECONDARY_DEVICE_TYPE_DISPLAY_TV
55 #endif /* TIZEN_PROFILE_TV */
57 #ifndef DEFAULT_IFNAME
58 # define DEFAULT_IFNAME "p2p0"
62 # define GROUP_IFNAME "p2p0"
65 #ifndef DEFAULT_PRIMARY_DEVICE_TYPE
66 # define DEFAULT_PRIMARY_DEVICE_TYPE WIFI_DIRECT_PRIMARY_DEVICE_TYPE_TELEPHONE
69 #ifndef DEFAULT_SECONDARY_DEVICE_TYPE
70 # define DEFAULT_SECONDARY_DEVICE_TYPE WIFI_DIRECT_SECONDARY_DEVICE_TYPE_TELEPHONE_SMARTPHONE_DUAL
73 #define WFD_MAX_CLIENT 16
74 #define WFD_MAX_STATION 8
76 #define DEV_NAME_LEN 32
82 #define PASSPHRASE_LEN_MAX 64
83 #define PASSPHRASE_LEN_MIN 8
87 WFD_WPS_MODE_PBC = 0x1,
88 WFD_WPS_MODE_DISPLAY = 0x2,
89 WFD_WPS_MODE_KEYPAD = 0x4,
90 #if defined(TIZEN_FEATURE_ASP)
91 WFD_WPS_MODE_P2PS = 0x8,
92 #endif /* TIZEN_FEATURE_ASP */
103 WFD_SCAN_MODE_ACTIVE,
104 WFD_SCAN_MODE_PASSIVE,
108 WFD_PEER_STATE_DISCOVERED,
109 WFD_PEER_STATE_CONNECTING,
110 WFD_PEER_STATE_CONNECTED,
114 WFD_IP_TYPE_DYNAMIC = 0x0,
115 #ifdef TIZEN_FEATURE_IP_OVER_EAPOL
116 WFD_IP_TYPE_OVER_EAPOL = 0x1,
117 #endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
120 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
122 WFD_DISPLAY_TYPE_SOURCE,
123 WFD_DISPLAY_TYPE_PRISINK,
124 WFD_DISPLAY_TYPE_SECSINK,
125 WFD_DISPLAY_TYPE_DUAL,
126 } wfd_display_type_e;
139 #define WIFI_DISPLAY_DEFAULT_TYPE WFD_DISPLAY_TYPE_SOURCE
140 #define WIFI_DISPLAY_DEFAULT_AVAIL 1
141 #define WIFI_DISPLAY_DEFAULT_HDCP 1
142 #define WIFI_DISPLAY_DEFAULT_PORT 7236
143 #define WIFI_DISPLAY_DEFAULT_TPUT 54
144 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
150 char dev_name[DEV_NAME_LEN+1];
151 unsigned char dev_addr[MACADDR_LEN];
152 unsigned char intf_addr[MACADDR_LEN];
153 unsigned char go_dev_addr[MACADDR_LEN];
164 char passphrase[PASSPHRASE_LEN_MAX + 1];
166 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
167 wfd_display_s display;
168 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
170 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
172 unsigned int service_count;
173 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
175 unsigned char ip_addr[IPADDR_LEN];
178 unsigned char client_ip_addr[IPADDR_LEN];
179 unsigned char go_ip_addr[IPADDR_LEN];
183 GMainLoop *main_loop;
185 wifi_direct_state_e state;
192 unsigned char autoconnection_peer[MACADDR_LEN];
193 char auto_pin[PINSTR_LEN+1]; /* for NFC Printer */
197 unsigned int peer_count;
206 gboolean auto_group_remove_enable;
209 wfd_manager_s *wfd_get_manager();
210 int wfd_local_reset_data(wfd_manager_s *manager);
211 int wfd_local_get_dev_name(char *dev_name);
212 int wfd_local_set_dev_name(char *dev_name);
213 int wfd_local_get_dev_mac(char *dev_mac);
215 int wfd_local_get_intf_mac(unsigned char *intf_mac);
216 int wfd_local_set_wps_mode(int wps_mode);
217 wfd_device_s *wfd_manager_find_connected_peer(wfd_manager_s *manager, unsigned char *peer_addr);
219 int wfd_local_get_ip_addr(char *ip_str);
220 int wfd_local_get_supported_wps_mode(int *wps_mode);
221 int wfd_local_get_wps_mode(int *wps_mode);
222 int wfd_manager_get_go_intent(int *go_intent);
223 int wfd_manager_set_go_intent(int go_intent);
224 int wfd_manager_get_max_station(int *max_station);
225 int wfd_manager_set_max_station(int max_station);
226 int wfd_manager_get_autoconnection(int *autoconnection);
227 int wfd_manager_set_autoconnection(int autoconnection);
228 int wfd_manager_get_req_wps_mode(int *req_wps_mode);
229 int wfd_manager_set_req_wps_mode(int req_wps_mode);
231 int wfd_manager_local_config_set(wfd_manager_s *manager);
232 int wfd_manager_activate(wfd_manager_s *manager);
233 int wfd_manager_deactivate(wfd_manager_s *manager);
234 int wfd_manager_connect(wfd_manager_s *manager, unsigned char *peer_addr);
235 int wfd_manager_accept_connection(wfd_manager_s *manager, unsigned char *peer_addr);
236 int wfd_manager_cancel_connection(wfd_manager_s *manager, unsigned char *peer_addr);
237 int wfd_manager_reject_connection(wfd_manager_s *manager, unsigned char *peer_addr);
238 int wfd_manager_disconnect(wfd_manager_s *manager, unsigned char *peer_addr);
239 int wfd_manager_disconnect_all(wfd_manager_s *manager);
240 int wfd_manager_get_peer_info(wfd_manager_s *manager, unsigned char* addr, wfd_discovery_entry_s **peer);
241 int wfd_manager_get_peers(wfd_manager_s *manager, wfd_discovery_entry_s **peers);
242 int wfd_manager_get_connected_peers(wfd_manager_s *manager, wfd_connected_peer_info_s **peers_data);
243 int wfd_manager_get_goup_ifname(char **ifname);
244 wfd_device_s *wfd_manager_get_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr);
245 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
246 int wfd_manager_set_display_device(int type, int port, int hdcp);
247 int wfd_manager_set_session_availability(int availability);
248 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
249 int wfd_manager_start_discovery(wfd_manager_s *manager, int mode, int timeout, const char* type, int channel);
250 int wfd_manager_cancel_discovery(wfd_manager_s *manager);
252 #endif /* __WIFI_DIRECT_MANAGER_H__ */