// Copyright 2014 The Chromium 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 COMPONENTS_WIFI_NETWORK_PROPERTIES_H_
#define COMPONENTS_WIFI_NETWORK_PROPERTIES_H_
#include <list>
#include <set>
#include "base/values.h"
#include "components/wifi/wifi_export.h"
namespace wifi {
typedef int32 Frequency;
enum FrequencyEnum {
kFrequencyAny = 0,
kFrequencyUnknown = 0,
kFrequency2400 = 2400,
kFrequency5000 = 5000
};
typedef std::set<Frequency> FrequencySet;
// Network Properties, can be used to parse the result of |GetProperties| and
// |GetVisibleNetworks|.
struct WIFI_EXPORT NetworkProperties {
NetworkProperties();
~NetworkProperties();
std::string connection_state;
std::string guid;
std::string name;
std::string ssid;
std::string bssid;
std::string type;
std::string security;
// |password| field is used to pass wifi password for network creation via
// |CreateNetwork| or connection via |StartConnect|. It does not persist
// once operation is completed.
std::string password;
// WiFi Signal Strength. 0..100
uint32 signal_strength;
bool auto_connect;
Frequency frequency;
FrequencySet frequency_set;
std::string json_extra; // Extra JSON properties for unit tests
scoped_ptr<base::DictionaryValue> ToValue(bool network_list) const;
// Updates only properties set in |value|.
bool UpdateFromValue(const base::DictionaryValue& value);
static std::string MacAddressAsString(const uint8 mac_as_int[6]);
static bool OrderByType(const NetworkProperties& l,
const NetworkProperties& r);
};
typedef std::list<NetworkProperties> NetworkList;
} // namespace wifi
#endif // COMPONENTS_WIFI_NETWORK_PROPERTIES_H_