[wfd-manager]: Sync-up with Tizen 2.4 Profile
[platform/core/connectivity/wifi-direct-manager.git] / include / wifi-direct-ipc.h
1 /*
2  * wifi-direct
3  *
4  * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Sungsik Jang <sungsik.jang@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 #ifndef __WIFI_DIRECT_INTERNAL_H_
23 #define __WIFI_DIRECT_INTERNAL_H_
24
25 #define true 1
26 #define false 0
27
28 #define WFD_INVALID_ID  -1
29
30 #ifndef O_NONBLOCK
31 #define O_NONBLOCK  O_NDELAY
32 #endif /** O_NONBLOCK */
33
34
35 #ifndef _UINT32_TYPE_H_
36 #define _UINT32_TYPE_H_
37 typedef unsigned int uint32;
38 #endif /** _UINT32_TYPE_H_ */
39
40 typedef unsigned int ipv4_addr_t;
41
42 #ifndef TRUE
43 #define TRUE 1
44 #endif /** TRUE */
45
46 #ifndef FALSE
47 #define FALSE 0
48 #endif /** FALSE */
49
50 #define WIFI_DIRECT_MAX_SSID_LEN 32
51 #define WIFI_DIRECT_MAX_DEVICE_NAME_LEN 32
52 #define WIFI_DIRECT_WPS_PIN_LEN 8
53 #define WIFI_DIRECT_MAC_ADDRESS_INFO_FILE "/opt/etc/.mac.info"
54 #define WIFI_DIRECT_MAX_SERVICES_LEN 1024
55 #define WIFI_DIRECT_MAX_SERVICE_NAME_LEN 256
56
57 #define VCONFKEY_IFNAME "memory/private/wifi_direct_manager/p2p_ifname"
58 #define VCONFKEY_LOCAL_IP "memory/private/wifi_direct_manager/p2p_local_ip"
59 #define VCONFKEY_SUBNET_MASK "memory/private/wifi_direct_manager/p2p_subnet_mask"
60 #define VCONFKEY_GATEWAY "memory/private/wifi_direct_manager/p2p_gateway"
61
62 typedef enum
63 {
64         WIFI_DIRECT_CMD_INVALID,
65         WIFI_DIRECT_CMD_REGISTER,
66         WIFI_DIRECT_CMD_INIT_ASYNC_SOCKET,
67         WIFI_DIRECT_CMD_DEREGISTER,
68         WIFI_DIRECT_CMD_GET_LINK_STATUS,
69         WIFI_DIRECT_CMD_ACTIVATE,
70         WIFI_DIRECT_CMD_DEACTIVATE,
71         WIFI_DIRECT_CMD_START_DISCOVERY,
72         WIFI_DIRECT_CMD_START_DISCOVERY_SPECIFIC_CHANNEL,
73         WIFI_DIRECT_CMD_CANCEL_DISCOVERY,
74         WIFI_DIRECT_CMD_IS_LISTENING_ONLY,      // 10
75         WIFI_DIRECT_CMD_GET_DISCOVERY_RESULT,
76
77         WIFI_DIRECT_CMD_CONNECT,
78         WIFI_DIRECT_CMD_SEND_CONNECT_REQ,
79         WIFI_DIRECT_CMD_CANCEL_CONNECT, // deprecated
80         WIFI_DIRECT_CMD_CANCEL_CONNECTION,
81         WIFI_DIRECT_CMD_REJECT_CONNECTION,
82         WIFI_DIRECT_CMD_DISCONNECT,
83         WIFI_DIRECT_CMD_DISCONNECT_ALL,
84         WIFI_DIRECT_CMD_GET_CONNECTED_PEERS_INFO,
85
86         WIFI_DIRECT_CMD_CREATE_GROUP,   // 20
87         WIFI_DIRECT_CMD_DESTROY_GROUP,
88         WIFI_DIRECT_CMD_IS_GROUPOWNER,
89         WIFI_DIRECT_CMD_IS_AUTONOMOUS_GROUP,
90
91         WIFI_DIRECT_CMD_GET_SSID,
92         WIFI_DIRECT_CMD_SET_SSID,
93         WIFI_DIRECT_CMD_GET_IP_ADDR,
94         WIFI_DIRECT_CMD_GET_MAC_ADDR,
95         WIFI_DIRECT_CMD_GET_CONFIG,
96         WIFI_DIRECT_CMD_SET_CONFIG,
97
98         WIFI_DIRECT_CMD_ACTIVATE_PUSHBUTTON,    // 30
99         WIFI_DIRECT_CMD_SET_WPS_PIN,
100         WIFI_DIRECT_CMD_GET_WPS_PIN,
101         WIFI_DIRECT_CMD_GENERATE_WPS_PIN,
102         WIFI_DIRECT_CMD_SET_WPA,
103         WIFI_DIRECT_CMD_GET_SUPPORTED_WPS_MODE,
104         WIFI_DIRECT_CMD_GET_LOCAL_WPS_MODE,
105         WIFI_DIRECT_CMD_GET_REQ_WPS_MODE,
106         WIFI_DIRECT_CMD_SET_REQ_WPS_MODE,
107
108         WIFI_DIRECT_CMD_SET_GO_INTENT,
109         WIFI_DIRECT_CMD_GET_GO_INTENT,  // 40
110         WIFI_DIRECT_CMD_SET_MAX_CLIENT,
111         WIFI_DIRECT_CMD_GET_MAX_CLIENT,
112         WIFI_DIRECT_CMD_SET_AUTOCONNECTION_MODE,
113         WIFI_DIRECT_CMD_IS_AUTOCONNECTION_MODE,
114         WIFI_DIRECT_CMD_IS_DISCOVERABLE,
115
116         WIFI_DIRECT_CMD_GET_OPERATING_CHANNEL,
117         WIFI_DIRECT_CMD_ACTIVATE_PERSISTENT_GROUP,
118         WIFI_DIRECT_CMD_DEACTIVATE_PERSISTENT_GROUP,
119         WIFI_DIRECT_CMD_IS_PERSISTENT_GROUP_ACTIVATED,
120         WIFI_DIRECT_CMD_GET_PERSISTENT_GROUP_INFO,      // 50
121         WIFI_DIRECT_CMD_REMOVE_PERSISTENT_GROUP,
122         WIFI_DIRECT_CMD_GET_DEVICE_NAME,
123         WIFI_DIRECT_CMD_SET_DEVICE_NAME,
124
125         WIFI_DIRECT_CMD_SET_OEM_LOGLEVEL,
126         WIFI_DIRECT_CMD_GET_PEER_INFO,
127         WIFI_DIRECT_CMD_SET_PASSPHRASE,
128         WIFI_DIRECT_CMD_GET_PASSPHRASE,
129         WIFI_DIRECT_CMD_SET_AUTOCONNECTION_PEER,
130
131 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
132         WIFI_DIRECT_CMD_REGISTER_LOCAL_SERVICE,
133         WIFI_DIRECT_CMD_DEREGISTER_LOCAL_SERVICE,
134         WIFI_DIRECT_CMD_START_SERVICE_DISCOVERY,
135         WIFI_DIRECT_CMD_CANCEL_SERVICE_DISCOVERY,       //60
136
137         WIFI_DIRECT_CMD_REGISTER_SERVICE,
138         WIFI_DIRECT_CMD_DEREGISTER_SERVICE,
139 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
140
141 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
142         WIFI_DIRECT_CMD_INIT_MIRACAST,
143         WIFI_DIRECT_CMD_INIT_DISPLAY,
144         WIFI_DIRECT_CMD_DEINIT_DISPLAY,
145         WIFI_DIRECT_CMD_SET_DISPLAY,
146         WIFI_DIRECT_CMD_SET_DISPLAY_AVAILABILITY,
147         WIFI_DIRECT_CMD_GET_PEER_DISPLAY_TYPE,
148         WIFI_DIRECT_CMD_GET_PEER_DISPLAY_AVAILABILITY,
149         WIFI_DIRECT_CMD_GET_PEER_DISPLAY_HDCP,
150         WIFI_DIRECT_CMD_GET_PEER_DISPLAY_PORT,
151         WIFI_DIRECT_CMD_GET_PEER_DISPLAY_THROUGHPUT,
152 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
153
154
155
156         WIFI_DIRECT_CMD_MAX
157 } wifi_direct_cmd_e;
158
159 /**
160  * Wi-Fi Direct client event for IPC
161  */
162 typedef enum
163 {
164         WIFI_DIRECT_CLI_EVENT_INVALID = -1,                                     /**< */
165
166         WIFI_DIRECT_CLI_EVENT_ACTIVATION,                                               /**< */
167         WIFI_DIRECT_CLI_EVENT_DEACTIVATION,                                     /**< */
168
169         WIFI_DIRECT_CLI_EVENT_DISCOVER_START,                           /**< 80211 scan*/
170         WIFI_DIRECT_CLI_EVENT_DISCOVER_START_LISTEN_ONLY,       /**< listen only mode*/
171         WIFI_DIRECT_CLI_EVENT_DISCOVER_START_SEARCH_LISTEN,     /**< search, listen*/
172         WIFI_DIRECT_CLI_EVENT_DISCOVER_END,                                     /**< */
173         WIFI_DIRECT_CLI_EVENT_DISCOVER_FOUND_PEERS,                     /**< */
174
175         WIFI_DIRECT_CLI_EVENT_CONNECTION_START,                         /**< */
176         WIFI_DIRECT_CLI_EVENT_CONNECTION_REQ,                           /**< */
177         WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP,                           /**< */
178         WIFI_DIRECT_CLI_EVENT_CONNECTION_WPS_REQ,                       /**< */
179
180         WIFI_DIRECT_CLI_EVENT_DISCONNECTION_RSP,                                /**< */
181         WIFI_DIRECT_CLI_EVENT_DISCONNECTION_IND,                                /**< */
182         WIFI_DIRECT_CLI_EVENT_DISASSOCIATION_IND,                               /**< */
183
184         WIFI_DIRECT_CLI_EVENT_GROUP_CREATE_RSP,                         /**< */
185         WIFI_DIRECT_CLI_EVENT_GROUP_DESTROY_RSP,                                /**< */
186
187         WIFI_DIRECT_CLI_EVENT_IP_LEASED_IND,                            /**< */
188
189 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
190         WIFI_DIRECT_CLI_EVENT_SERVICE_DISCOVERY_STARTED,
191         WIFI_DIRECT_CLI_EVENT_SERVICE_DISCOVERY_FOUND,
192         WIFI_DIRECT_CLI_EVENT_SERVICE_DISCOVERY_FINISHED,
193 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
194
195         WIFI_DIRECT_CLI_EVENT_MAX,
196 } wfd_client_event_e;
197
198 /**
199  * Wi-Fi Direct configuration data structure for IPC
200  */
201 typedef struct
202 {
203         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
204         int channel;
205         wifi_direct_wps_type_e wps_config;
206         int max_clients;
207         bool hide_SSID;
208         int group_owner_intent;
209         bool want_persistent_group;
210         bool listen_only;
211         bool auto_connection;
212         wifi_direct_primary_device_type_e primary_dev_type;
213         wifi_direct_secondary_device_type_e secondary_dev_type;
214 } wfd_config_data_s;
215
216
217 /**
218  * Wi-Fi Direct buffer structure to store result of peer discovery for IPC
219  */
220 typedef struct
221 {
222         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
223         unsigned char mac_address[6];
224         unsigned char intf_address[6];
225         int channel;
226         bool is_connected;
227         bool is_group_owner;
228         bool is_persistent_go;
229         unsigned int category;
230         unsigned int subcategory;
231
232         unsigned int services;
233
234         unsigned int wps_device_pwd_id;
235         unsigned int wps_cfg_methods;
236
237         bool is_wfd_device;
238
239 } wfd_discovery_entry_s;
240
241
242 /**
243  * Wi-Fi Direct buffer structure to store information of connected peer
244  */
245 typedef struct
246 {
247         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
248         unsigned char ip_address[4];
249         unsigned char mac_address[6];
250         unsigned char intf_address[6];
251         int channel;
252         bool is_p2p;
253         unsigned short category;
254         unsigned short subcategory;
255
256         unsigned int services;
257
258         bool is_wfd_device;
259
260 } wfd_connected_peer_info_s;
261
262 typedef struct
263 {
264         int network_id;
265         char ssid[WIFI_DIRECT_MAX_SSID_LEN + 1];
266         unsigned char go_mac_address[6];
267 } wfd_persistent_group_info_s;
268
269 typedef struct
270 {
271         int int1;
272         int int2;
273         int int3;
274         unsigned char mac_addr[6];
275 } wifi_direct_client_request_data_s;
276
277
278 typedef struct
279 {
280         wifi_direct_cmd_e cmd;
281         int client_id;
282         unsigned int cmd_data_len;
283         wifi_direct_client_request_data_s data;
284 } wifi_direct_client_request_s;
285
286 typedef struct
287 {
288         wifi_direct_cmd_e cmd;
289         wifi_direct_error_e result;
290         int client_id;
291         int param1;
292         char param2[64];
293         char param3[32];
294         int data_length;
295 } wifi_direct_client_response_s;
296
297 typedef struct
298 {
299         wfd_client_event_e event;
300         wifi_direct_error_e error;
301         int type;
302         char param1[64];
303         char param2[256];
304 } wifi_direct_client_noti_s;
305
306
307 #endif  /* __WIFI_DIRECT_INTERNAL_H_ */