Remove TIZEN_WIFI_MODULE_BUNDLE & TIZEN_WLAN_CONCURRENT_ENABLE
[platform/core/connectivity/wifi-direct-manager.git] / include / wifi-direct-manager.h
1 /*
2  * Network Configuration Module
3  *
4  * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
5  *
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
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
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  * This file declares wifi direct manager functions and structures.
22  *
23  * @file                wifi-direct-manager.h
24  * @author      Gibyoung Kim (lastkgb.kim@samsung.com)
25  * @version     0.7
26  */
27
28 #ifndef __WIFI_DIRECT_MANAGER_H__
29 #define __WIFI_DIRECT_MANAGER_H__
30
31 #define DEFAULT_DEVICE_NAME "Tizen_Device"
32
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 */
44
45 #if defined TIZEN_PROFILE_TV
46 #       define DEFAULT_IFNAME "p2p0"
47 #       define GROUP_IFNAME "p2p0"
48 #       define DEFAULT_PRIMARY_DEVICE_TYPE WIFI_DIRECT_PRIMARY_DEVICE_TYPE_DISPLAY
49 #       define DEFAULT_SECONDARY_DEVICE_TYPE WIFI_DIRECT_SECONDARY_DEVICE_TYPE_DISPLAY_TV
50 #endif /* TIZEN_PROFILE_TV */
51
52 #ifndef DEFAULT_IFNAME
53 #       define DEFAULT_IFNAME "p2p0"
54 #endif
55
56 #ifndef GROUP_IFNAME
57 #       define GROUP_IFNAME "p2p0"
58 #endif
59
60 #ifndef DEFAULT_PRIMARY_DEVICE_TYPE
61 #       define DEFAULT_PRIMARY_DEVICE_TYPE WIFI_DIRECT_PRIMARY_DEVICE_TYPE_TELEPHONE
62 #endif
63
64 #ifndef DEFAULT_SECONDARY_DEVICE_TYPE
65 #       define DEFAULT_SECONDARY_DEVICE_TYPE WIFI_DIRECT_SECONDARY_DEVICE_TYPE_TELEPHONE_SMARTPHONE_DUAL
66 #endif
67
68 #define WFD_MAX_CLIENT 16
69 #define WFD_MAX_STATION 8
70
71 #define DEV_NAME_LEN 32
72 #define MACADDR_LEN 6
73 #define MACSTR_LEN 18
74 #define IPADDR_LEN 4
75 #define IPSTR_LEN 16
76 #define PINSTR_LEN 8
77 #define PASSPHRASE_LEN_MAX 64
78 #define PASSPHRASE_LEN_MIN 8
79
80 typedef enum {
81         WFD_WPS_MODE_NONE,
82         WFD_WPS_MODE_PBC = 0x1,
83         WFD_WPS_MODE_DISPLAY = 0x2,
84         WFD_WPS_MODE_KEYPAD = 0x4,
85 #if defined(TIZEN_FEATURE_ASP)
86         WFD_WPS_MODE_P2PS = 0x8,
87 #endif /* TIZEN_FEATURE_ASP */
88 } wfd_wps_mode_e;
89
90 typedef enum {
91         WFD_DEV_ROLE_NONE,
92         WFD_DEV_ROLE_GC,
93         WFD_DEV_ROLE_GO,
94 } wfd_dev_role_e;
95
96 typedef enum {
97         WFD_SCAN_MODE_NONE,
98         WFD_SCAN_MODE_ACTIVE,
99         WFD_SCAN_MODE_PASSIVE,
100 } wfd_scan_mode_e;
101
102 typedef enum {
103         WFD_PEER_STATE_DISCOVERED,
104         WFD_PEER_STATE_CONNECTING,
105         WFD_PEER_STATE_CONNECTED,
106 } wfd_peer_state_e;
107
108 typedef enum {
109         WFD_IP_TYPE_DYNAMIC = 0x0,
110 #ifdef TIZEN_FEATURE_IP_OVER_EAPOL
111         WFD_IP_TYPE_OVER_EAPOL = 0x1,
112 #endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
113 } wfd_ip_type_e;
114
115 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
116 typedef enum {
117         WFD_DISPLAY_TYPE_SOURCE,
118         WFD_DISPLAY_TYPE_PRISINK,
119         WFD_DISPLAY_TYPE_SECSINK,
120         WFD_DISPLAY_TYPE_DUAL,
121 } wfd_display_type_e;
122
123 typedef struct {
124         int type;
125         int availability;
126         int wsd_support;
127         int tdls_support;
128         int hdcp_support;
129         int sync_support;
130         int port;
131         int max_tput;
132 } wfd_display_s;
133
134 #define WIFI_DISPLAY_DEFAULT_TYPE WFD_DISPLAY_TYPE_SOURCE
135 #define WIFI_DISPLAY_DEFAULT_AVAIL 1
136 #define WIFI_DISPLAY_DEFAULT_HDCP 1
137 #define WIFI_DISPLAY_DEFAULT_PORT 7236
138 #define WIFI_DISPLAY_DEFAULT_TPUT 54
139 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
140
141 typedef struct {
142         int state;
143         unsigned long time;
144
145         char dev_name[DEV_NAME_LEN+1];
146         unsigned char dev_addr[MACADDR_LEN];
147         unsigned char intf_addr[MACADDR_LEN];
148         unsigned char go_dev_addr[MACADDR_LEN];
149         int channel;
150         int dev_role;
151         int config_methods;
152         int pri_dev_type;
153         int sec_dev_type;
154         int dev_flags;
155         int group_flags;
156         int wps_mode;
157         int is_p2p;
158
159         char passphrase[PASSPHRASE_LEN_MAX + 1];
160
161 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
162         wfd_display_s display;
163 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
164
165 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
166         GList *services;
167         unsigned int service_count;
168 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
169
170         unsigned char ip_addr[IPADDR_LEN];
171
172         int ip_type;
173         unsigned char client_ip_addr[IPADDR_LEN];
174         unsigned char go_ip_addr[IPADDR_LEN];
175         int rssi;
176 } wfd_device_s;
177
178 typedef struct {
179         GMainLoop *main_loop;
180
181         wifi_direct_state_e state;
182
183 #ifdef TIZEN_FEATURE_WIFI_DIRECT_ON_DEMAND
184         unsigned int exit_timer;
185         int client_count;
186         GSList *client_list;
187 #endif/* TIZEN_FEATURE_WIFI_DIRECT_ON_DEMAND */
188         wfd_device_s *local;
189         int go_intent;
190         int req_wps_mode;
191         int max_station;
192         int autoconnection;
193         unsigned char autoconnection_peer[MACADDR_LEN];
194         char auto_pin[PINSTR_LEN+1];    /* for NFC Printer */
195         int scan_mode;
196
197         GList *peers;
198         unsigned int peer_count;
199
200         void *session;
201
202         void *group;
203
204         void *oem_ops;
205         void *plugin_handle;
206 #if defined TIZEN_ENABLE_PRD
207         void *prd_plugin_handle;
208 #endif /* TIZEN_ENABLE_PRD */
209
210         int session_timer;
211         gboolean auto_group_remove_enable;
212         gboolean is_on_demand_supported;
213         gboolean is_service_discovery_supported;
214         gboolean is_wifi_display_supported;
215         gboolean is_tethering_wifi_supported;
216         gboolean is_tethering_wifi_direct_supported;
217         gboolean is_asp_supported;
218 } wfd_manager_s;
219
220 wfd_manager_s *wfd_get_manager();
221 int wfd_local_reset_data(wfd_manager_s *manager);
222 int wfd_local_get_dev_name(char *dev_name);
223 int wfd_local_set_dev_name(char *dev_name);
224 int wfd_local_get_dev_mac(char *dev_mac);
225 #if 0
226 int wfd_local_get_intf_mac(unsigned char *intf_mac);
227 int wfd_local_set_wps_mode(int wps_mode);
228 wfd_device_s *wfd_manager_find_connected_peer(wfd_manager_s *manager, unsigned char *peer_addr);
229 #endif
230 int wfd_local_get_ip_addr(char *ip_str);
231 int wfd_local_get_supported_wps_mode(int *wps_mode);
232 int wfd_local_get_wps_mode(int *wps_mode);
233 int wfd_manager_get_go_intent(int *go_intent);
234 int wfd_manager_set_go_intent(int go_intent);
235 int wfd_manager_get_max_station(int *max_station);
236 int wfd_manager_set_max_station(int max_station);
237 int wfd_manager_get_autoconnection(int *autoconnection);
238 int wfd_manager_set_autoconnection(int autoconnection);
239 int wfd_manager_get_req_wps_mode(int *req_wps_mode);
240 int wfd_manager_set_req_wps_mode(int req_wps_mode);
241
242 int wfd_manager_local_config_set(wfd_manager_s *manager);
243 int wfd_manager_activate(wfd_manager_s *manager);
244 int wfd_manager_deactivate(wfd_manager_s *manager);
245 int wfd_manager_connect(wfd_manager_s *manager, unsigned char *peer_addr);
246 int wfd_manager_accept_connection(wfd_manager_s *manager, unsigned char *peer_addr);
247 int wfd_manager_cancel_connection(wfd_manager_s *manager, unsigned char *peer_addr);
248 int wfd_manager_reject_connection(wfd_manager_s *manager, unsigned char *peer_addr);
249 int wfd_manager_disconnect(wfd_manager_s *manager, unsigned char *peer_addr);
250 int wfd_manager_disconnect_all(wfd_manager_s *manager);
251 int wfd_manager_get_peer_info(wfd_manager_s *manager, unsigned char* addr, wfd_discovery_entry_s **peer);
252 int wfd_manager_get_peers(wfd_manager_s *manager, wfd_discovery_entry_s **peers);
253 int wfd_manager_get_connected_peers(wfd_manager_s *manager, wfd_connected_peer_info_s **peers_data);
254 int wfd_manager_get_goup_ifname(char **ifname);
255 wfd_device_s *wfd_manager_get_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr);
256 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
257 int wfd_manager_set_display_device(int type, int port, int hdcp);
258 int wfd_manager_set_session_availability(int availability);
259 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
260 int wfd_manager_start_discovery(wfd_manager_s *manager, int mode, int timeout,
261                                 const char* type, int channel, int frequency);
262 int wfd_manager_cancel_discovery(wfd_manager_s *manager);
263 #if defined(TIZEN_FEATURE_ASP)
264 wfd_device_s *wfd_manager_get_connected_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr);
265 int wfd_manager_asp_connect_session(wfd_manager_s *manager, void *params);
266 int wfd_manager_asp_confirm_session(wfd_manager_s *manager, void *params, int confirmed);
267 #endif /* TIZEN_FEATURE_ASP */
268 #ifdef TIZEN_FEATURE_WIFI_DIRECT_ON_DEMAND
269 void wfd_manager_free_active_client_list(void);
270 void wfd_manager_add_active_client(const char *client_id);
271 void wfd_manager_remove_active_client(const char *name,
272                                                  const gchar *old_owner,
273                                                  const char *new_owner);
274 #endif/* TIZEN_FEATURE_WIFI_DIRECT_ON_DEMAND */
275
276 #endif /* __WIFI_DIRECT_MANAGER_H__ */