apmanager: add support for HT capability

Parse wiphy's HT capability and add it to the AP service's configuration
file to correctly support AP in 80211n mode.

BUG=chromium:431763
TEST=unittests and manual test by using python to invoke dbus calls
     to start AP service in 802.11n mode.

Change-Id: I6c902136832eea6b38b806f733231d6cbe14e3f6
Reviewed-on: https://chromium-review.googlesource.com/231681
Reviewed-by: Peter Qiu <zqiu@chromium.org>
Commit-Queue: Peter Qiu <zqiu@chromium.org>
Tested-by: Peter Qiu <zqiu@chromium.org>
diff --git a/config.h b/config.h
index 58f65a9..6db0568 100644
--- a/config.h
+++ b/config.h
@@ -25,6 +25,10 @@
   Config(Manager* manager, const std::string& service_path);
   virtual ~Config();
 
+  // Calculate the frequency based on the given |channel|. Return true and set
+  // the output |frequency| if is valid channel, false otherwise.
+  static bool GetFrequencyFromChannel(uint16_t channel, uint32_t* freq);
+
   // Register Config DBus object.
   void RegisterAsync(
       chromeos::dbus_utils::ExportedObjectManager* object_manager,
@@ -54,6 +58,7 @@
   static const char kHostapdConfigKeyControlInterface[];
   static const char kHostapdConfigKeyDriver[];
   static const char kHostapdConfigKeyFragmThreshold[];
+  static const char kHostapdConfigKeyHTCapability[];
   static const char kHostapdConfigKeyHwMode[];
   static const char kHostapdConfigKeyIeee80211ac[];
   static const char kHostapdConfigKeyIeee80211n[];
@@ -86,6 +91,14 @@
   static const bool kPropertyDefaultHiddenNetwork;
   static const uint16_t kPropertyDefaultServerAddressIndex;
 
+  // Constants use for converting channel to frequency.
+  static const uint16_t kBand24GHzChannelLow;
+  static const uint16_t kBand24GHzChannelHigh;
+  static const uint32_t kBand24GHzBaseFrequency;
+  static const uint16_t kBand5GHzChannelLow;
+  static const uint16_t kBand5GHzChannelHigh;
+  static const uint16_t kBand5GHzBaseFrequency;
+
   // Append default hostapd configurations to the config file.
   bool AppendHostapdDefaults(chromeos::ErrorPtr* error,
                              std::string* config_str);