| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GARNET_LIB_WLAN_MLME_INCLUDE_WLAN_MLME_CLIENT_JOIN_CONTEXT_H_ |
| #define GARNET_LIB_WLAN_MLME_INCLUDE_WLAN_MLME_CLIENT_JOIN_CONTEXT_H_ |
| |
| #include <fuchsia/wlan/mlme/cpp/fidl.h> |
| #include <wlan/common/channel.h> |
| #include <wlan/common/logging.h> |
| #include <wlan/common/macaddr.h> |
| #include <wlan/protocol/mac.h> |
| #include <zircon/types.h> |
| |
| namespace wlan { |
| |
| class JoinContext { |
| public: |
| JoinContext(::fuchsia::wlan::mlme::BSSDescription bss, ::fuchsia::wlan::common::PHY phy, |
| ::fuchsia::wlan::common::CBW cbw); |
| |
| const common::MacAddr& bssid() const { return bssid_; } |
| const wlan_channel_t& channel() const { return channel_; } |
| const wlan_channel_t& bss_channel() const { return bss_channel_; } |
| uint16_t listen_interval() const { return listen_interval_; } |
| void set_listen_interval(uint16_t listen_interval) { listen_interval_ = listen_interval; } |
| |
| enum PHY phy() const { return phy_; } |
| const ::fuchsia::wlan::mlme::BSSDescription* bss() const { return &bss_; } |
| |
| bool IsHt() const { return phy_ == WLAN_PHY_HT; } |
| bool IsVht() const { return phy_ == WLAN_PHY_VHT; } |
| |
| // SanitizeChannel tests the validation of input wlan_channel_t |
| // to support interoperable Join and Association. |
| // This provides a defensive meature to inconsistent |
| // announcement from the neighbor BSS, and potential ignorance of SME. |
| static wlan_channel_t SanitizeChannel(const wlan_channel_t& chan); |
| |
| private: |
| ::fuchsia::wlan::mlme::BSSDescription bss_; |
| wlan_channel_t channel_; |
| wlan_channel_t bss_channel_; |
| enum PHY phy_; |
| common::MacAddr bssid_; |
| |
| // TODO(NET-1819): Redesign AssocContext and move this there. |
| uint16_t listen_interval_; |
| }; |
| |
| } // namespace wlan |
| |
| #endif // GARNET_LIB_WLAN_MLME_INCLUDE_WLAN_MLME_CLIENT_JOIN_CONTEXT_H_ |