libwifi-direct refactoring
[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
66 #define VCONFKEY_IFNAME "memory/private/wifi_direct_manager/p2p_ifname"
67 #define VCONFKEY_LOCAL_IP "memory/private/wifi_direct_manager/p2p_local_ip"
68 #define VCONFKEY_SUBNET_MASK "memory/private/wifi_direct_manager/p2p_subnet_mask"
69 #define VCONFKEY_GATEWAY "memory/private/wifi_direct_manager/p2p_gateway"
70
71 typedef enum
72 {
73         WIFI_DIRECT_CMD_INVALID,
74         WIFI_DIRECT_CMD_REGISTER,
75         WIFI_DIRECT_CMD_INIT_ASYNC_SOCKET,
76         WIFI_DIRECT_CMD_DEREGISTER,
77         WIFI_DIRECT_CMD_ACTIVATE,
78         WIFI_DIRECT_CMD_DEACTIVATE,
79         WIFI_DIRECT_CMD_START_DISCOVERY,
80         WIFI_DIRECT_CMD_CANCEL_DISCOVERY,
81         WIFI_DIRECT_CMD_GET_DISCOVERY_RESULT,
82         WIFI_DIRECT_CMD_GET_LINK_STATUS,
83         WIFI_DIRECT_CMD_CONNECT,
84
85         WIFI_DIRECT_CMD_DISCONNECT_ALL,
86         WIFI_DIRECT_CMD_CREATE_GROUP,
87         WIFI_DIRECT_CMD_IS_GROUPOWNER,
88         WIFI_DIRECT_CMD_GET_SSID,
89         WIFI_DIRECT_CMD_SET_SSID,
90         WIFI_DIRECT_CMD_GET_IP_ADDR,
91         WIFI_DIRECT_CMD_GET_CONFIG,
92         WIFI_DIRECT_CMD_SET_CONFIG,
93         WIFI_DIRECT_CMD_SEND_PROVISION_DISCOVERY_REQ,
94         WIFI_DIRECT_CMD_SEND_CONNECT_REQ,
95
96         WIFI_DIRECT_CMD_ACTIVATE_PUSHBUTTON,
97         WIFI_DIRECT_CMD_SET_WPS_PIN,
98         WIFI_DIRECT_CMD_GET_WPS_PIN,
99         WIFI_DIRECT_CMD_GENERATE_WPS_PIN,
100         WIFI_DIRECT_CMD_GET_INCOMMING_PEER_INFO,
101         WIFI_DIRECT_CMD_SET_WPA,
102         WIFI_DIRECT_CMD_GET_PASSPHRASE,
103         WIFI_DIRECT_CMD_GET_SUPPORTED_WPS_MODE,
104         WIFI_DIRECT_CMD_GET_LOCAL_WPS_MODE,
105         WIFI_DIRECT_CMD_SET_REQ_WPS_MODE,       //30
106
107         WIFI_DIRECT_CMD_GET_REQ_WPS_MODE,
108         WIFI_DIRECT_CMD_GET_CONNECTED_PEERS_INFO,
109         WIFI_DIRECT_CMD_CANCEL_GROUP,
110         WIFI_DIRECT_CMD_CANCEL_CONNECTION,
111         WIFI_DIRECT_CMD_REJECT_CONNECTION,
112         WIFI_DIRECT_CMD_DISCONNECT,
113         WIFI_DIRECT_CMD_SET_GO_INTENT,
114         WIFI_DIRECT_CMD_GET_GO_INTENT,
115         WIFI_DIRECT_CMD_GET_DEVICE_MAC,
116         WIFI_DIRECT_CMD_IS_AUTONOMOUS_GROUP,
117
118         WIFI_DIRECT_CMD_SET_MAX_CLIENT,
119         WIFI_DIRECT_CMD_GET_MAX_CLIENT,
120         WIFI_DIRECT_CMD_SET_AUTOCONNECTION_MODE,
121         WIFI_DIRECT_CMD_IS_AUTOCONNECTION_MODE,
122         WIFI_DIRECT_CMD_IS_DISCOVERABLE,
123         WIFI_DIRECT_CMD_IS_LISTENING_ONLY,
124         WIFI_DIRECT_CMD_GET_OWN_GROUP_CHANNEL,
125         WIFI_DIRECT_CMD_ACTIVATE_PERSISTENT_GROUP,
126         WIFI_DIRECT_CMD_DEACTIVATE_PERSISTENT_GROUP,
127         WIFI_DIRECT_CMD_IS_PERSISTENT_GROUP,
128
129         WIFI_DIRECT_CMD_GET_PERSISTENT_GROUP_INFO,
130
131         WIFI_DIRECT_CMD_REMOVE_PERSISTENT_GROUP,
132         WIFI_DIRECT_CMD_GET_DEVICE_NAME,
133
134         WIFI_DIRECT_CMD_SET_DEVICE_NAME,
135
136         WIFI_DIRECT_CMD_SET_OEM_LOGLEVEL,
137
138         WIFI_DIRECT_CMD_MAX
139 } wifi_direct_cmd_e;
140
141 /**
142  * Wi-Fi Direct client event for IPC
143  */
144 typedef enum
145 {
146         WIFI_DIRECT_CLI_EVENT_INVALID = -1,                                     /**< */
147
148         WIFI_DIRECT_CLI_EVENT_ACTIVATION,                                               /**< */
149         WIFI_DIRECT_CLI_EVENT_DEACTIVATION,                                     /**< */
150
151         WIFI_DIRECT_CLI_EVENT_DISCOVER_START,                           /**< 80211 scan*/
152         WIFI_DIRECT_CLI_EVENT_DISCOVER_START_LISTEN_ONLY,       /**< listen only mode*/
153         WIFI_DIRECT_CLI_EVENT_DISCOVER_START_SEARCH_LISTEN,     /**< search, listen*/
154         WIFI_DIRECT_CLI_EVENT_DISCOVER_END,                                     /**< */
155         WIFI_DIRECT_CLI_EVENT_DISCOVER_FOUND_PEERS,                     /**< */
156
157         WIFI_DIRECT_CLI_EVENT_CONNECTION_START,                         /**< */
158         WIFI_DIRECT_CLI_EVENT_CONNECTION_REQ,                           /**< */
159         WIFI_DIRECT_CLI_EVENT_CONNECTION_RSP,                           /**< */
160         WIFI_DIRECT_CLI_EVENT_CONNECTION_WPS_REQ,                       /**< */
161
162         WIFI_DIRECT_CLI_EVENT_DISCONNECTION_RSP,                                /**< */
163         WIFI_DIRECT_CLI_EVENT_DISCONNECTION_IND,                                /**< */
164         WIFI_DIRECT_CLI_EVENT_DISASSOCIATION_IND,                               /**< */
165
166         WIFI_DIRECT_CLI_EVENT_GROUP_CREATE_RSP,                         /**< */
167         WIFI_DIRECT_CLI_EVENT_GROUP_DESTROY_RSP,                                /**< */
168
169         WIFI_DIRECT_CLI_EVENT_IP_LEASED_IND,                            /**< */
170         WIFI_DIRECT_CLI_EVENT_INVITATION_REQ,
171 } wfd_client_event_e;
172
173 /**
174  * Wi-Fi Direct configuration data structure for IPC
175  */
176 typedef struct
177 {
178         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
179         int channel;
180         wifi_direct_wps_type_e wps_config;
181         wifi_direct_wps_type_e req_wps_config;
182         int max_clients;
183         bool hide_SSID;
184         int group_owner_intent;
185         bool want_persistent_group;
186         bool listen_only;
187         bool auto_connection;
188         wifi_direct_primary_device_type_e primary_dev_type;
189         wifi_direct_secondary_device_type_e secondary_dev_type;
190 } wfd_config_data_s;
191
192
193 /**
194  * Wi-Fi Direct buffer structure to store result of peer discovery for IPC
195  */
196 typedef struct
197 {
198         bool is_group_owner;
199         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
200         unsigned char mac_address[6];
201         int channel;
202         bool is_connected;
203         unsigned int services;
204         bool is_persistent_go;
205         unsigned char intf_mac_address[6];
206         unsigned int wps_device_pwd_id;
207         unsigned int wps_cfg_methods;
208         unsigned int category;
209         unsigned int subcategory;
210         bool is_wfd_device      ;
211 } wfd_discovery_entry_s;
212
213
214 /**
215  * Wi-Fi Direct buffer structure to store information of connected peer
216  */
217 typedef struct
218 {
219         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
220         unsigned char ip_address[4];
221         unsigned char mac_address[6];
222         unsigned char intf_mac_address[6];
223         unsigned int services;
224         bool is_p2p;
225         unsigned short category;
226         int channel;
227 } wfd_connected_peer_info_s;
228
229 typedef struct
230 {
231         int network_id;
232         char ssid[WIFI_DIRECT_MAX_SSID_LEN + 1];
233         unsigned char go_mac_address[6];
234 } wfd_persistent_group_info_s;
235
236 typedef struct
237 {
238         int int1;
239         int int2;
240         unsigned char mac_addr[6];
241 } wifi_direct_client_request_data_s;
242
243
244 typedef struct
245 {
246         wifi_direct_cmd_e cmd;
247         int client_id;
248         wifi_direct_client_request_data_s data;
249 } wifi_direct_client_request_s;
250
251 typedef struct
252 {
253         wifi_direct_cmd_e cmd;
254         wifi_direct_error_e result;
255         int client_id;
256         int param1;
257         char param2[64];
258         char param3[32];
259         int data_length;
260 } wifi_direct_client_response_s;
261
262 typedef struct
263 {
264         wfd_client_event_e event;
265         wifi_direct_error_e error;
266         char param1[64];
267         char param2[64];
268 } wifi_direct_client_noti_s;
269
270
271 #endif                                                  //__WIFI_DIRECT_INTERNAL_H_