#ifndef __WIFI_DIRECT_MANAGER_H__
#define __WIFI_DIRECT_MANAGER_H__
-#define DEFAULT_DEVICE_NAME "Tizen_Device"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define DEFAULT_IFNAME "p2p0"
-#define GROUP_IFNAME "p2p-wlan0-0"
+#define GROUP_IFNAME "p2p0"
+#define DEFAULT_PRIMARY_DEVICE_TYPE WIFI_DIRECT_PRIMARY_DEVICE_TYPE_TELEPHONE
+#define DEFAULT_SECONDARY_DEVICE_TYPE WIFI_DIRECT_SECONDARY_DEVICE_TYPE_TELEPHONE_SMARTPHONE_DUAL
+
+#define WFD_MAX_TYPE 8
+#define WFD_GO_INTENT_MIN 0
+#define WFD_GO_INTENT_DISPLY_SOURCE 2
+#define WFD_GO_INTENT_MAX 15
#define WFD_MAX_CLIENT 16
#define WFD_MAX_STATION 8
#define IPADDR_LEN 4
#define IPSTR_LEN 16
#define PINSTR_LEN 8
-#define PASSPHRASE_LEN 8
-
-#if 0
-typedef enum {
- WFD_STATE_DEACTIVATED,
- WFD_STATE_ACTIVATED,
- WFD_STATE_IDLE, // passive scaning
- WFD_STATE_SCANNING, // active scanning
- WFD_STATE_CONNECTING,
- WFD_STATE_CONNECTED,
-} wfd_state_e;
-#endif
+#define PASSPHRASE_LEN_MAX 64
+#define PASSPHRASE_LEN_MIN 8
typedef enum {
WFD_WPS_MODE_NONE,
WFD_WPS_MODE_PBC = 0x1,
WFD_WPS_MODE_DISPLAY = 0x2,
WFD_WPS_MODE_KEYPAD = 0x4,
+ WFD_WPS_MODE_P2PS = 0x8,
} wfd_wps_mode_e;
typedef enum {
WFD_SCAN_MODE_PASSIVE,
} wfd_scan_mode_e;
+typedef enum {
+ WFD_PEER_STATE_DISCOVERED,
+ WFD_PEER_STATE_CONNECTING,
+ WFD_PEER_STATE_CONNECTED,
+} wfd_peer_state_e;
+
+typedef enum {
+ WFD_IP_TYPE_DYNAMIC = 0x0,
+ WFD_IP_TYPE_OVER_EAPOL = 0x1,
+} wfd_ip_type_e;
+
+typedef enum {
+ WFD_DISPLAY_TYPE_SOURCE,
+ WFD_DISPLAY_TYPE_PRISINK,
+ WFD_DISPLAY_TYPE_SECSINK,
+ WFD_DISPLAY_TYPE_DUAL,
+ WFD_DISPLAY_TYPE_NONE,
+} wfd_display_type_e;
+
+typedef struct {
+ int type;
+ int availability;
+ int wsd_support;
+ int tdls_support;
+ int hdcp_support;
+ int sync_support;
+ int port;
+ int max_tput;
+} wfd_display_s;
+
+#define WIFI_DISPLAY_DEFAULT_TYPE WFD_DISPLAY_TYPE_SOURCE
+#define WIFI_DISPLAY_DEFAULT_AVAIL 1
+#define WIFI_DISPLAY_DEFAULT_HDCP 1
+#define WIFI_DISPLAY_DEFAULT_PORT 7236
+#define WIFI_DISPLAY_DEFAULT_TPUT 54
+
typedef struct {
+ int state;
+ unsigned long time;
+
char dev_name[DEV_NAME_LEN+1];
unsigned char dev_addr[MACADDR_LEN];
unsigned char intf_addr[MACADDR_LEN];
int dev_flags;
int group_flags;
int wps_mode;
+ int is_p2p;
+
+ char passphrase[PASSPHRASE_LEN_MAX + 1];
+
+ wfd_display_s display;
- int wfd_dev_info;
- int wfd_ctrl_port;
- int wfd_max_tput;
+ GList *services;
+ unsigned int service_count;
unsigned char ip_addr[IPADDR_LEN];
+
+ int ip_type;
+ unsigned char client_ip_addr[IPADDR_LEN];
+ unsigned char go_ip_addr[IPADDR_LEN];
+ int rssi;
+ char *vsie;
} wfd_device_s;
typedef struct {
GMainLoop *main_loop;
- int serv_sock;
- unsigned int client_handle; // for accept clients
- GList *clients;
- unsigned int client_count;
+ wifi_direct_state_e state;
- int state;
unsigned int exit_timer;
-
+ int client_count;
+ GSList *client_list;
wfd_device_s *local;
int go_intent;
int req_wps_mode;
int max_station;
int autoconnection;
+ unsigned char autoconnection_peer[MACADDR_LEN];
+ char auto_pin[PINSTR_LEN+1]; /* for NFC Printer */
int scan_mode;
GList *peers;
void *oem_ops;
void *plugin_handle;
+#if defined TIZEN_ENABLE_PRD
+ void *prd_plugin_handle;
+#endif /* TIZEN_ENABLE_PRD */
+
+ int session_timer;
+ int go_intent_per_type[WFD_MAX_TYPE];
+ int connection_timeout;
+ gboolean auto_group_remove_enable;
+ gboolean is_on_demand_supported;
+ gboolean is_service_discovery_supported;
+ gboolean is_wifi_display_supported;
+ gboolean is_tethering_wifi_supported;
+ gboolean is_tethering_wifi_direct_supported;
+ gboolean is_asp_supported;
+ gboolean is_on_demand;
+ gboolean is_connection_agent;
+ gboolean is_ip_over_eapol;
+ void *wfd_oem_conf;
} wfd_manager_s;
wfd_manager_s *wfd_get_manager();
int wfd_local_reset_data(wfd_manager_s *manager);
int wfd_local_get_dev_name(char *dev_name);
int wfd_local_set_dev_name(char *dev_name);
-int wfd_local_get_dev_mac(unsigned char *dev_mac);
+int wfd_local_get_dev_mac(char *dev_mac);
+#if 0
int wfd_local_get_intf_mac(unsigned char *intf_mac);
+int wfd_local_set_wps_mode(int wps_mode);
+wfd_device_s *wfd_manager_find_connected_peer(wfd_manager_s *manager, unsigned char *peer_addr);
+#endif
+int wfd_manager_load();
+void wfd_manager_unload();
int wfd_local_get_ip_addr(char *ip_str);
int wfd_local_get_supported_wps_mode(int *wps_mode);
-int wfd_local_set_req_wps_mode(int wps_mode);
int wfd_local_get_wps_mode(int *wps_mode);
-int wfd_local_get_req_wps_mode(int *req_wps_mode);
-
int wfd_manager_get_go_intent(int *go_intent);
int wfd_manager_set_go_intent(int go_intent);
+int wfd_manager_get_go_intent_per_type(int type, int *go_intent);
+int wfd_manager_set_go_intent_per_type(int type, int go_intent);
int wfd_manager_get_max_station(int *max_station);
int wfd_manager_set_max_station(int max_station);
int wfd_manager_get_autoconnection(int *autoconnection);
int wfd_manager_deactivate(wfd_manager_s *manager);
int wfd_manager_connect(wfd_manager_s *manager, unsigned char *peer_addr);
int wfd_manager_accept_connection(wfd_manager_s *manager, unsigned char *peer_addr);
+int wfd_manager_cancel_connection(wfd_manager_s *manager, unsigned char *peer_addr);
+int wfd_manager_reject_connection(wfd_manager_s *manager, unsigned char *peer_addr);
+int wfd_manager_disconnect(wfd_manager_s *manager, unsigned char *peer_addr);
+int wfd_manager_disconnect_all(wfd_manager_s *manager);
+int wfd_manager_get_peer_info(wfd_manager_s *manager, unsigned char* addr, wfd_discovery_entry_s **peer);
int wfd_manager_get_peers(wfd_manager_s *manager, wfd_discovery_entry_s **peers);
int wfd_manager_get_connected_peers(wfd_manager_s *manager, wfd_connected_peer_info_s **peers_data);
-wfd_device_s *wfd_manager_find_connected_peer(wfd_manager_s *manager, unsigned char *peer_addr);
-wfd_device_s *wfd_manager_get_current_peer(wfd_manager_s *manager);
int wfd_manager_get_goup_ifname(char **ifname);
+wfd_device_s *wfd_manager_get_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr);
+int wfd_manager_set_display_device(int type, int port, int hdcp);
+int wfd_manager_set_session_availability(int availability);
+int wfd_manager_get_display_device(int *type, int *port, int *hdcp);
+int wfd_manager_get_session_availability(int *availability);
+int wfd_manager_start_discovery(wfd_manager_s *manager, int mode, int timeout,
+ const char* type, int channel, int frequency);
+int wfd_manager_cancel_discovery(wfd_manager_s *manager);
+wfd_device_s *wfd_manager_get_connected_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr);
+int wfd_manager_asp_connect_session(wfd_manager_s *manager, void *params);
+int wfd_manager_asp_confirm_session(wfd_manager_s *manager, void *params, int confirmed);
+void wfd_manager_free_active_client_list(void);
+void wfd_manager_add_active_client(const char *client_id);
+void wfd_manager_remove_active_client(const char *name,
+ const gchar *old_owner,
+ const char *new_owner);
+#ifdef __cplusplus
+}
+#endif
#endif /* __WIFI_DIRECT_MANAGER_H__ */