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_IPC_H__
23 #define __WIFI_DIRECT_IPC_H__
29 #include "wifi-direct-error.h"
34 #define WFD_INVALID_ID -1
37 #define O_NONBLOCK O_NDELAY
38 #endif /** O_NONBLOCK */
41 #ifndef _UINT32_TYPE_H_
42 #define _UINT32_TYPE_H_
43 typedef unsigned int uint32;
44 #endif /** _UINT32_TYPE_H_ */
46 typedef unsigned int ipv4_addr_t;
56 #define WIFI_DIRECT_MAX_SSID_LEN 32
57 #define WIFI_DIRECT_MIN_SSID_LEN 1
58 #define WIFI_DIRECT_MAX_DEVICE_NAME_LEN 32
59 #define WIFI_DIRECT_WPS_PIN_LEN 8
60 #define WIFI_DIRECT_MAX_SERVICES_LEN 1024
61 #define WIFI_DIRECT_MAX_SERVICE_NAME_LEN 256
64 * Wi-Fi Direct connection state
67 WFD_EVENT_CONNECTION_REQ, /**< Connection is requested */
68 WFD_EVENT_CONNECTION_WPS_REQ, /**< WPS is requested */
69 WFD_EVENT_CONNECTION_IN_PROGRESS, /**< Connection in progress */
70 WFD_EVENT_CONNECTION_RSP, /**< Connected */
71 WFD_EVENT_DISASSOCIATION_IND, /**< Disconnected by remote Group Client */
72 WFD_EVENT_DISCONNECTION_RSP, /**< Disconnected by local device */
73 WFD_EVENT_DISCONNECTION_IND, /**< Disconnected by remote Group Owner */
74 WFD_EVENT_GROUP_CREATED, /**< Group is created */
75 WFD_EVENT_GROUP_DESTROYED, /**< Group is destroyed */
76 } wfd_connection_event_e;
79 * @brief Enumeration for Wi-Fi Direct secondary device type.
83 WFD_SECONDARY_DEVICE_TYPE_COMPUTER_PC = 1, /**< PC */
84 WFD_SECONDARY_DEVICE_TYPE_COMPUTER_SERVER = 2, /**< Server */
85 WFD_SECONDARY_DEVICE_TYPE_COMPUTER_MEDIA_CENTER = 3, /**< Media Center */
86 WFD_SECONDARY_DEVICE_TYPE_COMPUTER_UMPC = 4, /**< UMPC */
87 WFD_SECONDARY_DEVICE_TYPE_COMPUTER_NOTEBOOK = 5, /**< Notebook */
88 WFD_SECONDARY_DEVICE_TYPE_COMPUTER_DESKTOP = 6, /**< Desktop */
89 WFD_SECONDARY_DEVICE_TYPE_COMPUTER_MID = 7, /**< MID */
90 WFD_SECONDARY_DEVICE_TYPE_COMPUTER_NETBOOK = 8, /**< Netbook */
91 WFD_SECONDARY_DEVICE_TYPE_INPUT_KEYBOARD = 1, /**< Keyboard */
92 WFD_SECONDARY_DEVICE_TYPE_INPUT_MOUSE = 2, /**< Mouse */
93 WFD_SECONDARY_DEVICE_TYPE_INPUT_JOYSTICK = 3, /**< Joystick */
94 WFD_SECONDARY_DEVICE_TYPE_INPUT_TRACKBALL = 4, /**< Trackball */
95 WFD_SECONDARY_DEVICE_TYPE_INPUT_CONTROLLER = 5, /**< Controller */
96 WFD_SECONDARY_DEVICE_TYPE_INPUT_REMOTE = 6, /**< Remote */
97 WFD_SECONDARY_DEVICE_TYPE_INPUT_TOUCHSCREEN = 7, /**< Touchscreen */
98 WFD_SECONDARY_DEVICE_TYPE_INPUT_BIOMETRIC_READER = 8, /**< Biometric reader */
99 WFD_SECONDARY_DEVICE_TYPE_INPUT_BARCODE_READER = 9, /**< Barcode reader */
100 WFD_SECONDARY_DEVICE_TYPE_PRINTER_PRINTER = 1, /**< Printer */
101 WFD_SECONDARY_DEVICE_TYPE_PRINTER_SCANNER = 2, /**< Scanner */
102 WFD_SECONDARY_DEVICE_TYPE_PRINTER_FAX = 3, /**< Fax */
103 WFD_SECONDARY_DEVICE_TYPE_PRINTER_COPIER = 4, /**< Copier */
104 WFD_SECONDARY_DEVICE_TYPE_PRINTER_ALL_IN_ONE = 5, /**< All-in-one */
105 WFD_SECONDARY_DEVICE_TYPE_CAMERA_DIGITAL_STILL = 1, /**< Digital still camera */
106 WFD_SECONDARY_DEVICE_TYPE_CAMERA_VIDEO = 2, /**< Video camera */
107 WFD_SECONDARY_DEVICE_TYPE_CAMERA_WEBCAM = 3, /**< Webcam */
108 WFD_SECONDARY_DEVICE_TYPE_CAMERA_SECURITY = 4, /**< Security camera */
109 WFD_SECONDARY_DEVICE_TYPE_STORAGE_NAS = 1, /**< NAS */
110 WFD_SECONDARY_DEVICE_TYPE_NETWORK_INFRA_AP = 1, /**< AP */
111 WFD_SECONDARY_DEVICE_TYPE_NETWORK_INFRA_ROUTER = 2, /**< Router */
112 WFD_SECONDARY_DEVICE_TYPE_NETWORK_INFRA_SWITCH = 3, /**< Switch */
113 WFD_SECONDARY_DEVICE_TYPE_NETWORK_INFRA_GATEWAY = 4, /**< Gateway */
114 WFD_SECONDARY_DEVICE_TYPE_DISPLAY_TV = 1, /**< TV */
115 WFD_SECONDARY_DEVICE_TYPE_DISPLAY_PIC_FRAME = 2, /**< Picture frame */
116 WFD_SECONDARY_DEVICE_TYPE_DISPLAY_PROJECTOR = 3, /**< Projector */
117 WFD_SECONDARY_DEVICE_TYPE_DISPLAY_MONITOR = 4, /**< Monitor */
118 WFD_SECONDARY_DEVICE_TYPE_MULTIMEDIA_DAR = 1, /**< DAR */
119 WFD_SECONDARY_DEVICE_TYPE_MULTIMEDIA_PVR = 2, /**< PVR */
120 WFD_SECONDARY_DEVICE_TYPE_MULTIMEDIA_MCX = 3, /**< MCX */
121 WFD_SECONDARY_DEVICE_TYPE_MULTIMEDIA_STB = 4, /**< Set-top box */
122 WFD_SECONDARY_DEVICE_TYPE_MULTIMEDIA_MS_MA_ME = 5, /**< Media Server / Media Adapter / Media Extender */
123 WFD_SECONDARY_DEVICE_TYPE_MULTIMEDIA_PVP = 6, /**< Portable video player */
124 WFD_SECONDARY_DEVICE_TYPE_GAME_XBOX = 1, /**< Xbox */
125 WFD_SECONDARY_DEVICE_TYPE_GAME_XBOX_360 = 2, /**< Xbox 360 */
126 WFD_SECONDARY_DEVICE_TYPE_GAME_PS = 3, /**< Playstation */
127 WFD_SECONDARY_DEVICE_TYPE_GAME_CONSOLE = 4, /**< Console */
128 WFD_SECONDARY_DEVICE_TYPE_GAME_PORTABLE = 5, /**< Portable */
129 WFD_SECONDARY_DEVICE_TYPE_TELEPHONE_WINDOWS_MOBILE = 1, /**< Windows Mobile */
130 WFD_SECONDARY_DEVICE_TYPE_TELEPHONE_PHONE_SINGLE = 2, /**< Phone - single mode */
131 WFD_SECONDARY_DEVICE_TYPE_TELEPHONE_PHONE_DUAL = 3, /**< Phone - dual mode */
132 WFD_SECONDARY_DEVICE_TYPE_TELEPHONE_SMARTPHONE_SINGLE = 4, /**< Smart Phone - single mode */
133 WFD_SECONDARY_DEVICE_TYPE_TELEPHONE_SMARTPHONE_DUAL = 5, /**< Smart Phone - dual mode */
134 WFD_SECONDARY_DEVICE_TYPE_AUDIO_TUNER = 1, /**< Tuner */
135 WFD_SECONDARY_DEVICE_TYPE_AUDIO_SPEAKER = 2, /**< Speaker */
136 WFD_SECONDARY_DEVICE_TYPE_AUDIO_PMP = 3, /**< Portable Music Player */
137 WFD_SECONDARY_DEVICE_TYPE_AUDIO_HEADSET = 4, /**< Headset */
138 WFD_SECONDARY_DEVICE_TYPE_AUDIO_HEADPHONE = 5, /**< Headphone */
139 WFD_SECONDARY_DEVICE_TYPE_AUDIO_MIC = 6, /**< Microphone */
140 } wfd_secondary_device_type_e;
143 * @brief Enumeration for Wi-Fi Direct primary device type.
147 WFD_PRIMARY_DEVICE_TYPE_COMPUTER = 1, /**< Computer */
148 WFD_PRIMARY_DEVICE_TYPE_INPUT_DEVICE = 2, /**< Input device */
149 WFD_PRIMARY_DEVICE_TYPE_PRINTER = 3, /**< Printer */
150 WFD_PRIMARY_DEVICE_TYPE_CAMERA = 4, /**< Camera */
151 WFD_PRIMARY_DEVICE_TYPE_STORAGE = 5, /**< Storage */
152 WFD_PRIMARY_DEVICE_TYPE_NETWORK_INFRA = 6, /**< Network Infrastructure */
153 WFD_PRIMARY_DEVICE_TYPE_DISPLAY = 7, /**< Display */
154 WFD_PRIMARY_DEVICE_TYPE_MULTIMEDIA_DEVICE = 8, /**< Multimedia device */
155 WFD_PRIMARY_DEVICE_TYPE_GAME_DEVICE = 9, /**< Game device */
156 WFD_PRIMARY_DEVICE_TYPE_TELEPHONE = 10, /**< Telephone */
157 WFD_PRIMARY_DEVICE_TYPE_AUDIO = 11, /**< Audio */
158 WFD_PRIMARY_DEVICE_TYPE_OTHER = 255 /**< Others */
159 } wfd_primary_device_type_e;
162 * @brief Enumeration for Wi-Fi WPS type.
166 WFD_WPS_TYPE_NONE = 0x00, /**< No WPS type */
167 WFD_WPS_TYPE_PBC = 0x01, /**< Push Button Configuration */
168 WFD_WPS_TYPE_PIN_DISPLAY = 0x02, /**< Display PIN code */
169 WFD_WPS_TYPE_PIN_KEYPAD = 0x04, /**< Provide the keypad to input the PIN */
174 * @brief Enumeration for Wi-Fi Direct Discovery Channel.
178 WFD_DISCOVERY_FULL_SCAN = 0, /**< Scan full channel*/
179 WFD_DISCOVERY_SOCIAL_CHANNEL = 1611, /**< Scan social channel*/
180 WFD_DISCOVERY_CHANNEL1 = 1, /**< Scan channel 1*/
181 WFD_DISCOVERY_CHANNEL6 = 6, /**< Scan channel 6*/
182 WFD_DISCOVERY_CHANNEL11 = 11, /**< Scan channel 11*/
183 } wfd_discovery_channel_e;
187 * Wi-Fi Direct configuration data structure for IPC
190 char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
192 wfd_wps_type_e wps_config;
195 int group_owner_intent;
196 gboolean want_persistent_group;
197 gboolean listen_only;
198 gboolean auto_connection;
199 wfd_primary_device_type_e primary_dev_type;
200 wfd_secondary_device_type_e secondary_dev_type;
205 * Wi-Fi Direct buffer structure to store result of peer discovery for IPC
208 char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
209 unsigned char mac_address[6];
210 unsigned char intf_address[6];
212 gboolean is_connected;
213 gboolean is_group_owner;
214 gboolean is_persistent_go;
215 unsigned int category;
216 unsigned int subcategory;
217 unsigned int services;
218 unsigned int wps_device_pwd_id;
219 unsigned int wps_cfg_methods;
220 gboolean is_wfd_device;
222 } wfd_discovery_entry_s;
226 * Wi-Fi Direct buffer structure to store information of connected peer
229 char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
230 unsigned char ip_address[4];
231 unsigned char mac_address[6];
232 unsigned char intf_address[6];
235 unsigned short category;
236 unsigned short subcategory;
237 unsigned int services;
238 gboolean is_wfd_device;
239 } wfd_connected_peer_info_s;
244 char ssid[WIFI_DIRECT_MAX_SSID_LEN + 1];
245 unsigned char go_mac_address[6];
246 } wfd_persistent_group_info_s;
252 #endif /* __WIFI_DIRECT_IPC_H__ */