[wifi-direct-manager]Disable p2p0 interface and concurrent mode for default XU3 device
[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_MOBILE
34 #define DEFAULT_IFNAME "wlan0"
35 #define GROUP_IFNAME "p2p-wlan0-0"
36 #endif
37
38 #if defined TIZEN_WIFI_MODULE_BUNDLE
39 #define DEFAULT_IFNAME "wlan0"
40 #define GROUP_IFNAME "wlan0"
41 #endif
42
43 #if 0
44 #define DEFAULT_IFNAME "p2p0"
45 #define GROUP_IFNAME "p2p0"
46 #endif
47
48 #define WFD_MAX_CLIENT 16
49 #define WFD_MAX_STATION 8
50
51 #define DEV_NAME_LEN 32
52 #define MACADDR_LEN 6
53 #define MACSTR_LEN 18
54 #define IPADDR_LEN 4
55 #define IPSTR_LEN 16
56 #define PINSTR_LEN 8
57 #define PASSPHRASE_LEN_MAX 63
58 #define PASSPHRASE_LEN_MIN 8
59
60 #if 0
61 typedef enum {
62         WFD_STATE_DEACTIVATED,
63         WFD_STATE_ACTIVATED,
64         WFD_STATE_IDLE,                 // passive scaning
65         WFD_STATE_SCANNING,             // active scanning
66         WFD_STATE_CONNECTING,
67         WFD_STATE_CONNECTED,
68 } wfd_state_e;
69 #endif
70
71 typedef enum {
72         WFD_WPS_MODE_NONE,
73         WFD_WPS_MODE_PBC = 0x1,
74         WFD_WPS_MODE_DISPLAY = 0x2,
75         WFD_WPS_MODE_KEYPAD = 0x4,
76 } wfd_wps_mode_e;
77
78 typedef enum {
79         WFD_DEV_ROLE_NONE,
80         WFD_DEV_ROLE_GC,
81         WFD_DEV_ROLE_GO,
82 } wfd_dev_role_e;
83
84 typedef enum {
85         WFD_SCAN_MODE_NONE,
86         WFD_SCAN_MODE_ACTIVE,
87         WFD_SCAN_MODE_PASSIVE,
88 } wfd_scan_mode_e;
89
90 typedef enum {
91         WFD_PEER_STATE_DISCOVERED,
92         WFD_PEER_STATE_CONNECTING,
93         WFD_PEER_STATE_CONNECTED,
94 } wfd_peer_state_e;
95
96 typedef enum {
97         WFD_IP_TYPE_DYNAMIC = 0x0,
98         WFD_IP_TYPE_OVER_EAPOL = 0x1,
99 } wfd_ip_type_e;
100
101 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
102
103 typedef enum {
104         WFD_DISPLAY_TYPE_SOURCE,
105         WFD_DISPLAY_TYPE_PRISINK,
106         WFD_DISPLAY_TYPE_SECSINK,
107         WFD_DISPLAY_TYPE_DUAL,
108 } wfd_display_type_e;
109
110 typedef struct {
111         int type;
112         int availablity;
113         int wsd_support;
114         int tdls_support;
115         int hdcp_support;
116         int sync_support;
117         int port;
118         int max_tput;
119 } wfd_display_s;
120
121 #define WIFI_DISPLAY_DEFAULT_TYPE WFD_DISPLAY_TYPE_SOURCE
122 #define WIFI_DISPLAY_DEFAULT_AVAIL 1
123 #define WIFI_DISPLAY_DEFAULT_HDCP 1
124 #define WIFI_DISPLAY_DEFAULT_PORT 7236
125 #define WIFI_DISPLAY_DEFAULT_TPUT 54
126 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
127
128 typedef struct {
129         int state;
130         unsigned long time;
131
132         char dev_name[DEV_NAME_LEN+1];
133         unsigned char dev_addr[MACADDR_LEN];
134         unsigned char intf_addr[MACADDR_LEN];
135         unsigned char go_dev_addr[MACADDR_LEN];
136         int channel;
137         int dev_role;
138         int config_methods;
139         int pri_dev_type;
140         int sec_dev_type;
141         int dev_flags;
142         int group_flags;
143         int wps_mode;
144
145         char passphrase[PASSPHRASE_LEN_MAX + 1];
146
147 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
148         wfd_display_s display;
149 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
150
151 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
152         GList *services;
153         unsigned int service_count;
154 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
155
156         unsigned char ip_addr[IPADDR_LEN];
157
158         int ip_type;
159         unsigned char client_ip_addr[IPADDR_LEN];
160         unsigned char go_ip_addr[IPADDR_LEN];
161 } wfd_device_s;
162
163 typedef struct {
164         GMainLoop *main_loop;
165
166         int serv_sock;
167         unsigned int client_handle;     // for accept clients
168         GList *clients;
169         unsigned int client_count;
170
171         wifi_direct_state_e state;
172         unsigned int exit_timer;
173
174         wfd_device_s *local;
175         int go_intent;
176         int req_wps_mode;
177         int max_station;
178         int autoconnection;
179         unsigned char autoconnection_peer[MACADDR_LEN];
180         char auto_pin[PINSTR_LEN+1];    // for NFC Printer
181         int scan_mode;
182
183         GList *peers;
184         unsigned int peer_count;
185
186         void *session;
187
188         void *group;
189
190         void *oem_ops;
191         void *plugin_handle;
192 } wfd_manager_s;
193
194 wfd_manager_s *wfd_get_manager();
195 int wfd_local_reset_data(wfd_manager_s *manager);
196 int wfd_local_get_dev_name(char *dev_name);
197 int wfd_local_set_dev_name(char *dev_name);
198 int wfd_local_get_dev_mac(char *dev_mac);
199 #if 0
200 int wfd_local_get_intf_mac(unsigned char *intf_mac);
201 int wfd_local_set_wps_mode(int wps_mode);
202 wfd_device_s *wfd_manager_find_connected_peer(wfd_manager_s *manager, unsigned char *peer_addr);
203 #endif
204 int wfd_local_get_ip_addr(char *ip_str);
205 int wfd_local_get_supported_wps_mode(int *wps_mode);
206 int wfd_local_get_wps_mode(int *wps_mode);
207 int wfd_manager_get_go_intent(int *go_intent);
208 int wfd_manager_set_go_intent(int go_intent);
209 int wfd_manager_get_max_station(int *max_station);
210 int wfd_manager_set_max_station(int max_station);
211 int wfd_manager_get_autoconnection(int *autoconnection);
212 int wfd_manager_set_autoconnection(int autoconnection);
213 int wfd_manager_get_req_wps_mode(int *req_wps_mode);
214 int wfd_manager_set_req_wps_mode(int req_wps_mode);
215
216 int wfd_manager_local_config_set(wfd_manager_s *manager);
217 int wfd_manager_activate(wfd_manager_s *manager);
218 int wfd_manager_deactivate(wfd_manager_s *manager);
219 int wfd_manager_connect(wfd_manager_s *manager, unsigned char *peer_addr);
220 int wfd_manager_accept_connection(wfd_manager_s *manager, unsigned char *peer_addr);
221 int wfd_manager_cancel_connection(wfd_manager_s *manager, unsigned char *peer_addr);
222 int wfd_manager_reject_connection(wfd_manager_s *manager, unsigned char *peer_addr);
223 int wfd_manager_disconnect(wfd_manager_s *manager, unsigned char *peer_addr);
224 int wfd_manager_disconnect_all(wfd_manager_s *manager);
225 int wfd_manager_get_peer_info(wfd_manager_s *manager, unsigned char* addr, wfd_discovery_entry_s **peer);
226 int wfd_manager_get_peers(wfd_manager_s *manager, wfd_discovery_entry_s **peers);
227 int wfd_manager_get_connected_peers(wfd_manager_s *manager, wfd_connected_peer_info_s **peers_data);
228 int wfd_manager_get_goup_ifname(char **ifname);
229 wfd_device_s *wfd_manager_get_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr);
230 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
231 int wfd_manager_set_display_device(int type, int port, int hdcp);
232 int wfd_manager_set_session_availability(int availability);
233 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
234
235 #endif /* __WIFI_DIRECT_MANAGER_H__ */