Add legacy connection handler for addtional group iface
[platform/core/connectivity/wifi-direct-manager.git] / include / wifi-direct-ipc.h
1 /*
2  * wifi-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_IPC_H__
23 #define __WIFI_DIRECT_IPC_H__
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 #include "wifi-direct-error.h"
30
31 #define true 1
32 #define false 0
33
34 #define WFD_INVALID_ID  -1
35
36 #ifndef O_NONBLOCK
37 #define O_NONBLOCK  O_NDELAY
38 #endif /** O_NONBLOCK */
39
40
41 #ifndef _UINT32_TYPE_H_
42 #define _UINT32_TYPE_H_
43 typedef unsigned int uint32;
44 #endif /** _UINT32_TYPE_H_ */
45
46 typedef unsigned int ipv4_addr_t;
47
48 #ifndef TRUE
49 #define TRUE 1
50 #endif /** TRUE */
51
52 #ifndef FALSE
53 #define FALSE 0
54 #endif /** FALSE */
55
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
62
63 /**
64  * Wi-Fi Direct connection state
65  */
66 typedef enum {
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;
77
78 /**
79  * @brief Enumeration for Wi-Fi Direct secondary device type.
80  * @since_tizen 2.3
81  */
82 typedef enum {
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;
141
142 /**
143  * @brief Enumeration for Wi-Fi Direct primary device type.
144  * @since_tizen 2.3
145  */
146 typedef enum {
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;
160
161 /**
162  * @brief Enumeration for Wi-Fi WPS type.
163  * @since_tizen 2.3
164  */
165 typedef enum {
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 */
170 } wfd_wps_type_e;
171
172
173 /**
174  * @brief Enumeration for Wi-Fi Direct Discovery Channel.
175  * @since_tizen 2.3
176  */
177 typedef enum {
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;
184
185
186 /**
187  * Wi-Fi Direct configuration data structure for IPC
188  */
189 typedef struct {
190         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
191         int channel;
192         wfd_wps_type_e wps_config;
193         int max_clients;
194         gboolean hide_SSID;
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;
201 } wfd_config_data_s;
202
203
204 /**
205  * Wi-Fi Direct buffer structure to store result of peer discovery for IPC
206  */
207 typedef struct {
208         char device_name[WIFI_DIRECT_MAX_DEVICE_NAME_LEN + 1];
209         unsigned char mac_address[6];
210         unsigned char intf_address[6];
211         int channel;
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;
221         char *vsie;
222 } wfd_discovery_entry_s;
223
224
225 /**
226  * Wi-Fi Direct buffer structure to store information of connected peer
227  */
228 typedef struct {
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];
233         int channel;
234         gboolean is_p2p;
235         unsigned short category;
236         unsigned short subcategory;
237         unsigned int services;
238         gboolean is_wfd_device;
239 } wfd_connected_peer_info_s;
240
241
242 typedef struct {
243         int network_id;
244         char ssid[WIFI_DIRECT_MAX_SSID_LEN + 1];
245         unsigned char go_mac_address[6];
246 } wfd_persistent_group_info_s;
247
248 #ifdef __cplusplus
249 }
250 #endif
251
252 #endif  /* __WIFI_DIRECT_IPC_H__ */