Add API to get access list
[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_GET_ACCESS_LIST,
150         WIFI_DIRECT_CMD_ADD_TO_ACCESS_LIST,
151         WIFI_DIRECT_CMD_DEL_FROM_ACCESS_LIST,
152
153         WIFI_DIRECT_CMD_MAX
154 } wifi_direct_cmd_e;
155
156 /**
157  * Wi-Fi Direct client event for IPC
158  */
159 typedef enum
160 {
161         WIFI_DIRECT_CLI_EVENT_INVALID = -1,                                     /**< */
162
163         WIFI_DIRECT_CLI_EVENT_ACTIVATION,                                               /**< */
164         WIFI_DIRECT_CLI_EVENT_DEACTIVATION,                                     /**< */
165
166         WIFI_DIRECT_CLI_EVENT_DISCOVER_START,                           /**< 80211 scan*/
167         WIFI_DIRECT_CLI_EVENT_DISCOVER_START_LISTEN_ONLY,       /**< listen only mode*/
168         WIFI_DIRECT_CLI_EVENT_DISCOVER_START_SEARCH_LISTEN,     /**< search, listen*/
169         WIFI_DIRECT_CLI_EVENT_DISCOVER_END,                                     /**< */
170         WIFI_DIRECT_CLI_EVENT_DISCOVER_FOUND_PEERS,                     /**< */
171
172         WIFI_DIRECT_CLI_EVENT_CONNECTION_START,                         /**< */
173         WIFI_DIRECT_CLI_EVENT_CONNECTION_REQ,                           /**< */
174         WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP,                           /**< */
175         WIFI_DIRECT_CLI_EVENT_CONNECTION_WPS_REQ,                       /**< */
176
177         WIFI_DIRECT_CLI_EVENT_DISCONNECTION_RSP,                                /**< */
178         WIFI_DIRECT_CLI_EVENT_DISCONNECTION_IND,                                /**< */
179         WIFI_DIRECT_CLI_EVENT_DISASSOCIATION_IND,                               /**< */
180
181         WIFI_DIRECT_CLI_EVENT_GROUP_CREATE_RSP,                         /**< */
182         WIFI_DIRECT_CLI_EVENT_GROUP_DESTROY_RSP,                                /**< */
183
184         WIFI_DIRECT_CLI_EVENT_IP_LEASED_IND,                            /**< */
185         WIFI_DIRECT_CLI_EVENT_INVITATION_REQ,
186 } wfd_client_event_e;
187
188 /**
189  * Wi-Fi Direct configuration data structure for IPC
190  */
191 typedef struct
192 {
193         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
194         int channel;
195         wifi_direct_wps_type_e wps_config;
196         wifi_direct_wps_type_e req_wps_config;
197         int max_clients;
198         bool hide_SSID;
199         int group_owner_intent;
200         bool want_persistent_group;
201         bool listen_only;
202         bool auto_connection;
203         wifi_direct_primary_device_type_e primary_dev_type;
204         wifi_direct_secondary_device_type_e secondary_dev_type;
205 } wfd_config_data_s;
206
207
208 /**
209  * Wi-Fi Direct buffer structure to store access list for IPC
210  */
211 typedef struct
212 {
213         bool allowed;
214         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
215         unsigned char mac_address[6];
216 } wfd_access_list_info_s;
217
218
219 /**
220  * Wi-Fi Direct buffer structure to store result of peer discovery for IPC
221  */
222 typedef struct
223 {
224         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
225         unsigned char mac_address[6];
226         unsigned char intf_address[6];
227         int channel;
228         bool is_connected;
229         bool is_group_owner;
230         bool is_persistent_go;
231         unsigned int category;
232         unsigned int subcategory;
233         unsigned int wps_device_pwd_id;
234         unsigned int wps_cfg_methods;
235         bool is_wfd_device;
236         char services[WIFI_DIRECT_MAX_SERVICES_LEN + 1];
237 } wfd_discovery_entry_s;
238
239
240 /**
241  * Wi-Fi Direct buffer structure to store information of connected peer
242  */
243 typedef struct
244 {
245         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
246         unsigned char ip_address[4];
247         unsigned char mac_address[6];
248         unsigned char intf_address[6];
249         int channel;
250         bool is_p2p;
251         unsigned short category;
252         unsigned short subcategory;
253         bool is_wfd_device;
254         char services[WIFI_DIRECT_MAX_SERVICES_LEN + 1];
255 } wfd_connected_peer_info_s;
256
257 typedef struct
258 {
259         int network_id;
260         char ssid[WIFI_DIRECT_MAX_SSID_LEN + 1];
261         unsigned char go_mac_address[6];
262 } wfd_persistent_group_info_s;
263
264 typedef struct
265 {
266         int int1;
267         int int2;
268         unsigned char mac_addr[6];
269 } wifi_direct_client_request_data_s;
270
271
272 typedef struct
273 {
274         wifi_direct_cmd_e cmd;
275         int client_id;
276         unsigned int cmd_data_len;
277         wifi_direct_client_request_data_s data;
278 } wifi_direct_client_request_s;
279
280 typedef struct
281 {
282         wifi_direct_cmd_e cmd;
283         wifi_direct_error_e result;
284         int client_id;
285         int param1;
286         char param2[64];
287         char param3[32];
288         int data_length;
289 } wifi_direct_client_response_s;
290
291 typedef struct
292 {
293         wfd_client_event_e event;
294         wifi_direct_error_e error;
295         char param1[64];
296         char param2[64];
297 } wifi_direct_client_noti_s;
298
299
300 #endif                                                  //__WIFI_DIRECT_INTERNAL_H_