Add Wifi Direct Display support
[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 #define DEFAULT_IFNAME "p2p0"
33 #define GROUP_IFNAME "p2p-wlan0-0"
34 #define WFD_MAX_CLIENT 16
35 #define WFD_MAX_STATION 8
36
37 #define DEV_NAME_LEN 32
38 #define MACADDR_LEN 6
39 #define MACSTR_LEN 18
40 #define IPADDR_LEN 4
41 #define IPSTR_LEN 16
42 #define PINSTR_LEN 8
43 #define PASSPHRASE_LEN 8
44 #define QUERY_HANDLE_LIMIT 256
45
46 #if 0
47 typedef enum {
48         WFD_STATE_DEACTIVATED,
49         WFD_STATE_ACTIVATED,
50         WFD_STATE_IDLE,                 // passive scaning
51         WFD_STATE_SCANNING,             // active scanning
52         WFD_STATE_CONNECTING,
53         WFD_STATE_CONNECTED,
54 } wfd_state_e;
55 #endif
56
57 typedef enum {
58         WFD_WPS_MODE_NONE,
59         WFD_WPS_MODE_PBC = 0x1,
60         WFD_WPS_MODE_DISPLAY = 0x2,
61         WFD_WPS_MODE_KEYPAD = 0x4,
62 } wfd_wps_mode_e;
63
64 typedef enum {
65         WFD_DEV_ROLE_NONE,
66         WFD_DEV_ROLE_GC,
67         WFD_DEV_ROLE_GO,
68 } wfd_dev_role_e;
69
70 typedef enum {
71         WFD_SCAN_MODE_NONE,
72         WFD_SCAN_MODE_ACTIVE,
73         WFD_SCAN_MODE_PASSIVE,
74 } wfd_scan_mode_e;
75
76 typedef struct {
77         wifi_direct_display_type_e type;
78         char dev_info[2];
79         int ctrl_port;
80         int max_tput;
81         int availability;
82         int hdcp_support;
83 }wfd_display_info_s;
84
85 typedef struct {
86         wifi_direct_service_type_e service_type;
87         int ref_counter;
88         char *service_string;
89         int service_str_length;
90 } wfd_service_s;
91
92 typedef struct {
93         int handle;
94         int ref_counter;
95         unsigned char mac_addr[6];
96         wifi_direct_service_type_e service_type;
97         char *query_string;
98 }wfd_query_s;
99
100 typedef enum {
101         WFD_PEER_STATE_DISCOVERED,
102         WFD_PEER_STATE_CONNECTING,
103         WFD_PEER_STATE_CONNECTED,
104 } wfd_peer_state_e;
105
106 typedef struct {
107         int state;
108         unsigned long time;
109
110         char dev_name[DEV_NAME_LEN+1];
111         unsigned char dev_addr[MACADDR_LEN];
112         unsigned char intf_addr[MACADDR_LEN];
113         unsigned char go_dev_addr[MACADDR_LEN];
114         int channel;
115         int dev_role;
116         int config_methods;
117         int pri_dev_type;
118         int sec_dev_type;
119         int dev_flags;
120         int group_flags;
121         int wps_mode;
122
123         GList *services;
124         wfd_display_info_s *wifi_display;
125
126         unsigned char ip_addr[IPADDR_LEN];
127 } wfd_device_s;
128
129 typedef struct {
130         GMainLoop *main_loop;
131
132         int serv_sock;
133         unsigned int client_handle;     // for accept clients
134         GList *clients;
135         unsigned int client_count;
136
137         int state;
138         unsigned int exit_timer;
139
140         wfd_device_s *local;
141         int go_intent;
142         int req_wps_mode;
143         int max_station;
144         int autoconnection;
145         int scan_mode;
146
147         GList *peers;
148         unsigned int peer_count;
149
150         void *session;
151
152         void *group;
153
154         GList *query_handles;
155
156         void *oem_ops;
157         void *plugin_handle;
158 } wfd_manager_s;
159
160 wfd_manager_s *wfd_get_manager();
161 int wfd_local_reset_data(wfd_manager_s *manager);
162 int wfd_local_get_dev_name(char *dev_name);
163 int wfd_local_set_dev_name(char *dev_name);
164 int wfd_local_get_dev_mac(unsigned char *dev_mac);
165 int wfd_local_get_intf_mac(unsigned char *intf_mac);
166 int wfd_local_get_ip_addr(char *ip_str);
167 int wfd_local_get_supported_wps_mode(int *wps_mode);
168 int wfd_local_set_req_wps_mode(int req_wps_mode);
169 int wfd_local_get_wps_mode(int *wps_mode);
170 int wfd_local_get_req_wps_mode(int *req_wps_mode);
171
172 int wfd_local_get_display_port(int *port);
173 int wfd_local_get_display_type(wifi_direct_display_type_e *type);
174
175 int wfd_manager_get_go_intent(int *go_intent);
176 int wfd_manager_set_go_intent(int go_intent);
177 int wfd_manager_get_max_station(int *max_station);
178 int wfd_manager_set_max_station(int max_station);
179 int wfd_manager_get_autoconnection(int *autoconnection);
180 int wfd_manager_set_autoconnection(int autoconnection);
181 int wfd_manager_get_req_wps_mode(int *req_wps_mode);
182 int wfd_manager_set_req_wps_mode(int req_wps_mode);
183
184 int wfd_manager_service_add(wfd_manager_s *manager, wifi_direct_service_type_e type, char *data);
185 int wfd_manager_service_del(wfd_manager_s *manager, wifi_direct_service_type_e  type, char *data);
186 int wfd_manager_serv_disc_req(wfd_manager_s *manager, unsigned char* mad_addr, wifi_direct_service_type_e  type, char *data);
187 int wfd_manager_serv_disc_cancel(wfd_manager_s *manager, int handle);
188 int wfd_manager_init_service(wfd_device_s *device);
189 int wfd_manager_init_query(wfd_manager_s *manager);
190
191 int wfd_manager_init_wifi_display(wifi_direct_display_type_e type, int port, int hdcp);
192 int wfd_manager_deinit_wifi_display();
193
194 int wfd_manager_local_config_set(wfd_manager_s *manager);
195 int wfd_manager_activate(wfd_manager_s *manager);
196 int wfd_manager_deactivate(wfd_manager_s *manager);
197 int wfd_manager_connect(wfd_manager_s *manager, unsigned char *peer_addr);
198 int wfd_manager_accept_connection(wfd_manager_s *manager, unsigned char *peer_addr);
199 int wfd_manager_cancel_connection(wfd_manager_s *manager, unsigned char *peer_addr);
200 int wfd_manager_reject_connection(wfd_manager_s *manager, unsigned char *peer_addr);
201 int wfd_manager_disconnect(wfd_manager_s *manager, unsigned char *peer_addr);
202 int wfd_manager_disconnect_all(wfd_manager_s *manager);
203 int wfd_manager_get_peers(wfd_manager_s *manager, wfd_discovery_entry_s **peers);
204 int wfd_manager_get_connected_peers(wfd_manager_s *manager, wfd_connected_peer_info_s **peers_data);
205 wfd_device_s *wfd_manager_find_connected_peer(wfd_manager_s *manager, unsigned char *peer_addr);
206 wfd_device_s *wfd_manager_get_current_peer(wfd_manager_s *manager);
207 int wfd_manager_get_goup_ifname(char **ifname);
208
209 #endif /* __WIFI_DIRECT_MANAGER_H__ */