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