ad76139f20d9da78caf8d60db9b19175cef92b11
[platform/core/connectivity/libwifi-direct.git] / include / wifi-direct-internal.h
1 /*
2  * libwifi-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 #include "wifi-direct.h"
26
27
28 #define true 1
29 #define false 0
30
31 #define WFD_INVALID_ID  -1
32
33
34 #ifndef O_NONBLOCK
35 #define O_NONBLOCK  O_NDELAY
36 #endif /** O_NONBLOCK */
37
38
39 #ifndef _UINT32_TYPE_H_
40 #define _UINT32_TYPE_H_
41 typedef unsigned int uint32;
42 #endif /** _UINT32_TYPE_H_ */
43
44 typedef unsigned int ipv4_addr_t;
45
46 #ifndef TRUE
47 #define TRUE 1
48 #endif /** TRUE */
49
50 #ifndef FALSE
51 #define FALSE 0
52 #endif /** FALSE */
53
54 #define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
55 #define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
56 #define IP2STR(a) (a)[0], (a)[1], (a)[2], (a)[3]
57
58 #define IPSTR "%d.%d.%d.%d"
59
60 #define WIFI_DIRECT_WPA_LEN 8
61 #define WIFI_DIRECT_MAX_SSID_LEN 32
62 #define WIFI_DIRECT_MAX_DEVICE_NAME_LEN 32
63 #define WIFI_DIRECT_WPS_PIN_LEN 8
64 #define WIFI_DIRECT_MAC_ADDRESS_INFO_FILE "/opt/etc/.mac.info"
65 #define WIFI_DIRECT_MAX_SERVICES_LEN 1024
66 #define WIFI_DIRECT_MAX_SERVICE_NAME_LEN 256
67
68 #define VCONFKEY_IFNAME "memory/private/wifi_direct_manager/p2p_ifname"
69 #define VCONFKEY_LOCAL_IP "memory/private/wifi_direct_manager/p2p_local_ip"
70 #define VCONFKEY_SUBNET_MASK "memory/private/wifi_direct_manager/p2p_subnet_mask"
71 #define VCONFKEY_GATEWAY "memory/private/wifi_direct_manager/p2p_gateway"
72
73 typedef enum
74 {
75         WIFI_DIRECT_CMD_INVALID,
76         WIFI_DIRECT_CMD_REGISTER,
77         WIFI_DIRECT_CMD_INIT_ASYNC_SOCKET,
78         WIFI_DIRECT_CMD_DEREGISTER,
79         WIFI_DIRECT_CMD_ACTIVATE,
80         WIFI_DIRECT_CMD_DEACTIVATE,
81         WIFI_DIRECT_CMD_START_DISCOVERY,
82         WIFI_DIRECT_CMD_CANCEL_DISCOVERY,
83         WIFI_DIRECT_CMD_GET_DISCOVERY_RESULT,
84         WIFI_DIRECT_CMD_GET_LINK_STATUS,
85         WIFI_DIRECT_CMD_CONNECT,
86
87         WIFI_DIRECT_CMD_DISCONNECT_ALL,
88         WIFI_DIRECT_CMD_CREATE_GROUP,
89         WIFI_DIRECT_CMD_IS_GROUPOWNER,
90         WIFI_DIRECT_CMD_GET_SSID,
91         WIFI_DIRECT_CMD_SET_SSID,
92         WIFI_DIRECT_CMD_GET_IP_ADDR,
93         WIFI_DIRECT_CMD_GET_CONFIG,
94         WIFI_DIRECT_CMD_SET_CONFIG,
95         WIFI_DIRECT_CMD_SEND_PROVISION_DISCOVERY_REQ,
96         WIFI_DIRECT_CMD_SEND_CONNECT_REQ,
97
98         WIFI_DIRECT_CMD_ACTIVATE_PUSHBUTTON,
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_GET_INCOMMING_PEER_INFO,
103         WIFI_DIRECT_CMD_SET_WPA,
104         WIFI_DIRECT_CMD_GET_PASSPHRASE,
105         WIFI_DIRECT_CMD_GET_SUPPORTED_WPS_MODE,
106         WIFI_DIRECT_CMD_GET_LOCAL_WPS_MODE,
107         WIFI_DIRECT_CMD_SET_REQ_WPS_MODE,       //30
108
109         WIFI_DIRECT_CMD_GET_REQ_WPS_MODE,
110         WIFI_DIRECT_CMD_GET_CONNECTED_PEERS_INFO,
111         WIFI_DIRECT_CMD_DESTROY_GROUP,
112         WIFI_DIRECT_CMD_CANCEL_CONNECTION,
113         WIFI_DIRECT_CMD_REJECT_CONNECTION,
114         WIFI_DIRECT_CMD_DISCONNECT,
115         WIFI_DIRECT_CMD_SET_GO_INTENT,
116         WIFI_DIRECT_CMD_GET_GO_INTENT,
117         WIFI_DIRECT_CMD_GET_DEVICE_MAC,
118         WIFI_DIRECT_CMD_IS_AUTONOMOUS_GROUP,
119
120         WIFI_DIRECT_CMD_SET_MAX_CLIENT,
121         WIFI_DIRECT_CMD_GET_MAX_CLIENT,
122         WIFI_DIRECT_CMD_SET_AUTOCONNECTION_MODE,
123         WIFI_DIRECT_CMD_IS_AUTOCONNECTION_MODE,
124         WIFI_DIRECT_CMD_IS_DISCOVERABLE,
125         WIFI_DIRECT_CMD_IS_LISTENING_ONLY,
126         WIFI_DIRECT_CMD_GET_OPERATING_CHANNEL,
127         WIFI_DIRECT_CMD_ACTIVATE_PERSISTENT_GROUP,
128         WIFI_DIRECT_CMD_DEACTIVATE_PERSISTENT_GROUP,
129         WIFI_DIRECT_CMD_IS_PERSISTENT_GROUP,
130
131         WIFI_DIRECT_CMD_GET_PERSISTENT_GROUP_INFO,
132
133         WIFI_DIRECT_CMD_REMOVE_PERSISTENT_GROUP,
134         WIFI_DIRECT_CMD_GET_DEVICE_NAME,
135         WIFI_DIRECT_CMD_SET_DEVICE_NAME,
136
137         WIFI_DIRECT_CMD_SET_OEM_LOGLEVEL,
138
139         WIFI_DIRECT_CMD_SERVICE_ADD,
140         WIFI_DIRECT_CMD_SERVICE_DEL,
141         WIFI_DIRECT_CMD_SERV_DISC_REQ,
142         WIFI_DIRECT_CMD_SERV_DISC_CANCEL,
143
144         WIFI_DIRECT_CMD_INIT_WIFI_DISPLAY,
145         WIFI_DIRECT_CMD_DEINIT_WIFI_DISPLAY,
146         WIFI_DIRECT_CMD_GET_DISPLAY_PORT,
147         WIFI_DIRECT_CMD_GET_DISPLAY_TYPE,
148
149         WIFI_DIRECT_CMD_ADD_TO_ACCESS_LIST,
150         WIFI_DIRECT_CMD_DEL_FROM_ACCESS_LIST,
151
152         WIFI_DIRECT_CMD_MAX
153 } wifi_direct_cmd_e;
154
155 /**
156  * Wi-Fi Direct client event for IPC
157  */
158 typedef enum
159 {
160         WIFI_DIRECT_CLI_EVENT_INVALID = -1,                                     /**< */
161
162         WIFI_DIRECT_CLI_EVENT_ACTIVATION,                                               /**< */
163         WIFI_DIRECT_CLI_EVENT_DEACTIVATION,                                     /**< */
164
165         WIFI_DIRECT_CLI_EVENT_DISCOVER_START,                           /**< 80211 scan*/
166         WIFI_DIRECT_CLI_EVENT_DISCOVER_START_LISTEN_ONLY,       /**< listen only mode*/
167         WIFI_DIRECT_CLI_EVENT_DISCOVER_START_SEARCH_LISTEN,     /**< search, listen*/
168         WIFI_DIRECT_CLI_EVENT_DISCOVER_END,                                     /**< */
169         WIFI_DIRECT_CLI_EVENT_DISCOVER_FOUND_PEERS,                     /**< */
170
171         WIFI_DIRECT_CLI_EVENT_CONNECTION_START,                         /**< */
172         WIFI_DIRECT_CLI_EVENT_CONNECTION_REQ,                           /**< */
173         WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP,                           /**< */
174         WIFI_DIRECT_CLI_EVENT_CONNECTION_WPS_REQ,                       /**< */
175
176         WIFI_DIRECT_CLI_EVENT_DISCONNECTION_RSP,                                /**< */
177         WIFI_DIRECT_CLI_EVENT_DISCONNECTION_IND,                                /**< */
178         WIFI_DIRECT_CLI_EVENT_DISASSOCIATION_IND,                               /**< */
179
180         WIFI_DIRECT_CLI_EVENT_GROUP_CREATE_RSP,                         /**< */
181         WIFI_DIRECT_CLI_EVENT_GROUP_DESTROY_RSP,                                /**< */
182
183         WIFI_DIRECT_CLI_EVENT_IP_LEASED_IND,                            /**< */
184         WIFI_DIRECT_CLI_EVENT_INVITATION_REQ,
185 } wfd_client_event_e;
186
187 /**
188  * Wi-Fi Direct configuration data structure for IPC
189  */
190 typedef struct
191 {
192         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
193         int channel;
194         wifi_direct_wps_type_e wps_config;
195         wifi_direct_wps_type_e req_wps_config;
196         int max_clients;
197         bool hide_SSID;
198         int group_owner_intent;
199         bool want_persistent_group;
200         bool listen_only;
201         bool auto_connection;
202         wifi_direct_primary_device_type_e primary_dev_type;
203         wifi_direct_secondary_device_type_e secondary_dev_type;
204 } wfd_config_data_s;
205
206
207 /**
208  * Wi-Fi Direct buffer structure to store result of peer discovery for IPC
209  */
210 typedef struct
211 {
212         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
213         unsigned char mac_address[6];
214         unsigned char intf_address[6];
215         int channel;
216         bool is_connected;
217         bool is_group_owner;
218         bool is_persistent_go;
219         unsigned int category;
220         unsigned int subcategory;
221         unsigned int wps_device_pwd_id;
222         unsigned int wps_cfg_methods;
223         bool is_wfd_device;
224         char services[WIFI_DIRECT_MAX_SERVICES_LEN + 1];
225 } wfd_discovery_entry_s;
226
227
228 /**
229  * Wi-Fi Direct buffer structure to store information of connected peer
230  */
231 typedef struct
232 {
233         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
234         unsigned char ip_address[4];
235         unsigned char mac_address[6];
236         unsigned char intf_address[6];
237         int channel;
238         bool is_p2p;
239         unsigned short category;
240         unsigned short subcategory;
241         bool is_wfd_device;
242         char services[WIFI_DIRECT_MAX_SERVICES_LEN + 1];
243 } wfd_connected_peer_info_s;
244
245 typedef struct
246 {
247         int network_id;
248         char ssid[WIFI_DIRECT_MAX_SSID_LEN + 1];
249         unsigned char go_mac_address[6];
250 } wfd_persistent_group_info_s;
251
252 typedef struct
253 {
254         int int1;
255         int int2;
256         unsigned char mac_addr[6];
257 } wifi_direct_client_request_data_s;
258
259
260 typedef struct
261 {
262         wifi_direct_cmd_e cmd;
263         int client_id;
264         unsigned int cmd_data_len;
265         wifi_direct_client_request_data_s data;
266 } wifi_direct_client_request_s;
267
268 typedef struct
269 {
270         wifi_direct_cmd_e cmd;
271         wifi_direct_error_e result;
272         int client_id;
273         int param1;
274         char param2[64];
275         char param3[32];
276         int data_length;
277 } wifi_direct_client_response_s;
278
279 typedef struct
280 {
281         wfd_client_event_e event;
282         wifi_direct_error_e error;
283         char param1[64];
284         char param2[64];
285 } wifi_direct_client_noti_s;
286
287
288 #endif                                                  //__WIFI_DIRECT_INTERNAL_H_