OSDN Git Service

Accumulative patch from commit 8cee87ab139e52516ee4185789b40a0459fa7406
[android-x86/external-wpa_supplicant_8.git] / src / p2p / p2p_i.h
index b0abff0..d59a8ac 100644 (file)
@@ -52,6 +52,7 @@ struct p2p_device {
        int go_neg_req_sent;
        enum p2p_go_state go_state;
        u8 dialog_token;
+       u8 tie_breaker;
        u8 intended_addr[ETH_ALEN];
 
        char country[3];
@@ -109,6 +110,7 @@ struct p2p_sd_query {
        struct p2p_sd_query *next;
        u8 peer[ETH_ALEN];
        int for_all_peers;
+       int wsd; /* Wi-Fi Display Service Discovery Request */
        struct wpabuf *tlvs;
 };
 
@@ -207,6 +209,11 @@ struct p2p_data {
                 * P2P_SEARCH_WHEN_READY - Waiting to start Search
                 */
                P2P_SEARCH_WHEN_READY,
+
+               /**
+                * P2P_CONTINUE_SEARCH_WHEN_READY - Waiting to continue Search
+                */
+               P2P_CONTINUE_SEARCH_WHEN_READY,
        } state;
 
        /**
@@ -220,6 +227,11 @@ struct p2p_data {
        int max_disc_int;
 
        /**
+        * max_disc_tu - Maximum number of TUs for discoverable interval
+        */
+       int max_disc_tu;
+
+       /**
         * devices - List of known P2P Device peers
         */
        struct dl_list devices;
@@ -392,6 +404,8 @@ struct p2p_data {
        u8 *find_dev_id;
        u8 find_dev_id_buf[ETH_ALEN];
 
+       struct os_time find_start; /* time of last p2p_find start */
+
        struct p2p_group **groups;
        size_t num_groups;
 
@@ -437,6 +451,27 @@ struct p2p_data {
         * in IDLE state.
         */
        int pd_retries;
+
+       u8 go_timeout;
+       u8 client_timeout;
+
+       /* Extra delay in milliseconds between search iterations */
+       unsigned int search_delay;
+       int in_search_delay;
+
+#ifdef CONFIG_WIFI_DISPLAY
+       struct wpabuf *wfd_ie_beacon;
+       struct wpabuf *wfd_ie_probe_req;
+       struct wpabuf *wfd_ie_probe_resp;
+       struct wpabuf *wfd_ie_assoc_req;
+       struct wpabuf *wfd_ie_invitation;
+       struct wpabuf *wfd_ie_prov_disc_req;
+       struct wpabuf *wfd_ie_prov_disc_resp;
+       struct wpabuf *wfd_ie_go_neg;
+       struct wpabuf *wfd_dev_info;
+       struct wpabuf *wfd_assoc_bssid;
+       struct wpabuf *wfd_coupled_sink_info;
+#endif /* CONFIG_WIFI_DISPLAY */
 };
 
 /**
@@ -445,6 +480,7 @@ struct p2p_data {
 struct p2p_message {
        struct wpabuf *p2p_attributes;
        struct wpabuf *wps_attributes;
+       struct wpabuf *wfd_subelems;
 
        u8 dialog_token;
 
@@ -565,6 +601,8 @@ u8 p2p_group_presence_req(struct p2p_group *group,
                          const u8 *noa, size_t noa_len);
 int p2p_group_is_group_id_match(struct p2p_group *group, const u8 *group_id,
                                size_t group_id_len);
+void p2p_group_update_ies(struct p2p_group *group);
+struct wpabuf * p2p_group_get_wfd_ie(struct p2p_group *g);
 
 
 void p2p_buf_add_action_hdr(struct wpabuf *buf, u8 subtype, u8 dialog_token);
@@ -625,6 +663,8 @@ void p2p_process_go_neg_conf(struct p2p_data *p2p, const u8 *sa,
                             const u8 *data, size_t len);
 int p2p_connect_send(struct p2p_data *p2p, struct p2p_device *dev);
 u16 p2p_wps_method_pw_id(enum p2p_wps_method wps_method);
+void p2p_reselect_channel(struct p2p_data *p2p,
+                         struct p2p_channels *intersection);
 
 /* p2p_pd.c */
 void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
@@ -668,8 +708,9 @@ struct p2p_device * p2p_add_dev_from_go_neg_req(struct p2p_data *p2p,
                                                struct p2p_message *msg);
 void p2p_add_dev_info(struct p2p_data *p2p, const u8 *addr,
                      struct p2p_device *dev, struct p2p_message *msg);
-int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, int level,
-                  const u8 *ies, size_t ies_len, int scan_res);
+int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq,
+                  struct os_time *rx_time, int level, const u8 *ies,
+                  size_t ies_len, int scan_res);
 struct p2p_device * p2p_get_device(struct p2p_data *p2p, const u8 *addr);
 struct p2p_device * p2p_get_device_interface(struct p2p_data *p2p,
                                             const u8 *addr);