4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Sungsik Jang <sungsik.jang@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #ifndef __WIFI_DIRECT_INTERNAL_H_
23 #define __WIFI_DIRECT_INTERNAL_H_
25 #include "wifi-direct.h"
31 #define WFD_INVALID_ID -1
35 #define O_NONBLOCK O_NDELAY
36 #endif /** O_NONBLOCK */
39 #ifndef _UINT32_TYPE_H_
40 #define _UINT32_TYPE_H_
41 typedef unsigned int uint32;
42 #endif /** _UINT32_TYPE_H_ */
44 typedef unsigned int ipv4_addr_t;
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]
58 #define IPSTR "%d.%d.%d.%d"
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
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"
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,
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,
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
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,
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,
131 WIFI_DIRECT_CMD_GET_PERSISTENT_GROUP_INFO,
133 WIFI_DIRECT_CMD_REMOVE_PERSISTENT_GROUP,
134 WIFI_DIRECT_CMD_GET_DEVICE_NAME,
135 WIFI_DIRECT_CMD_SET_DEVICE_NAME,
137 WIFI_DIRECT_CMD_SET_OEM_LOGLEVEL,
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,
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,
149 WIFI_DIRECT_CMD_GET_ACCESS_LIST,
150 WIFI_DIRECT_CMD_ADD_TO_ACCESS_LIST,
151 WIFI_DIRECT_CMD_DEL_FROM_ACCESS_LIST,
157 * Wi-Fi Direct client event for IPC
161 WIFI_DIRECT_CLI_EVENT_INVALID = -1, /**< */
163 WIFI_DIRECT_CLI_EVENT_ACTIVATION, /**< */
164 WIFI_DIRECT_CLI_EVENT_DEACTIVATION, /**< */
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, /**< */
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, /**< */
177 WIFI_DIRECT_CLI_EVENT_DISCONNECTION_RSP, /**< */
178 WIFI_DIRECT_CLI_EVENT_DISCONNECTION_IND, /**< */
179 WIFI_DIRECT_CLI_EVENT_DISASSOCIATION_IND, /**< */
181 WIFI_DIRECT_CLI_EVENT_GROUP_CREATE_RSP, /**< */
182 WIFI_DIRECT_CLI_EVENT_GROUP_DESTROY_RSP, /**< */
184 WIFI_DIRECT_CLI_EVENT_IP_LEASED_IND, /**< */
185 WIFI_DIRECT_CLI_EVENT_INVITATION_REQ,
186 } wfd_client_event_e;
189 * Wi-Fi Direct configuration data structure for IPC
193 char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
195 wifi_direct_wps_type_e wps_config;
196 wifi_direct_wps_type_e req_wps_config;
199 int group_owner_intent;
200 bool want_persistent_group;
202 bool auto_connection;
203 wifi_direct_primary_device_type_e primary_dev_type;
204 wifi_direct_secondary_device_type_e secondary_dev_type;
209 * Wi-Fi Direct buffer structure to store access list for IPC
214 char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
215 unsigned char mac_address[6];
216 } wfd_access_list_info_s;
220 * Wi-Fi Direct buffer structure to store result of peer discovery for IPC
224 char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
225 unsigned char mac_address[6];
226 unsigned char intf_address[6];
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;
236 char services[WIFI_DIRECT_MAX_SERVICES_LEN + 1];
237 } wfd_discovery_entry_s;
241 * Wi-Fi Direct buffer structure to store information of connected peer
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];
251 unsigned short category;
252 unsigned short subcategory;
254 char services[WIFI_DIRECT_MAX_SERVICES_LEN + 1];
255 } wfd_connected_peer_info_s;
260 char ssid[WIFI_DIRECT_MAX_SSID_LEN + 1];
261 unsigned char go_mac_address[6];
262 } wfd_persistent_group_info_s;
268 unsigned char mac_addr[6];
269 } wifi_direct_client_request_data_s;
274 wifi_direct_cmd_e cmd;
276 unsigned int cmd_data_len;
277 wifi_direct_client_request_data_s data;
278 } wifi_direct_client_request_s;
282 wifi_direct_cmd_e cmd;
283 wifi_direct_error_e result;
289 } wifi_direct_client_response_s;
293 wfd_client_event_e event;
294 wifi_direct_error_e error;
297 } wifi_direct_client_noti_s;
300 #endif //__WIFI_DIRECT_INTERNAL_H_