// Copyright 2013 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 CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_H_
#define CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_H_
#include <set>
#include "base/basictypes.h"
#include "base/strings/string16.h"
#include "content/common/content_export.h"
namespace content {
// Wifi data relating to a single access point.
struct CONTENT_EXPORT AccessPointData {
AccessPointData();
~AccessPointData();
// MAC address, formatted as per MacAddressAsString16.
base::string16 mac_address;
int radio_signal_strength; // Measured in dBm
int channel;
int signal_to_noise; // Ratio in dB
base::string16 ssid; // Network identifier
};
// This is to allow AccessPointData to be used in std::set. We order
// lexicographically by MAC address.
struct AccessPointDataLess {
bool operator()(const AccessPointData& data1,
const AccessPointData& data2) const {
return data1.mac_address < data2.mac_address;
}
};
// All data for wifi.
struct CONTENT_EXPORT WifiData {
WifiData();
~WifiData();
// Determines whether a new set of WiFi data differs significantly from this.
bool DiffersSignificantly(const WifiData& other) const;
// Store access points as a set, sorted by MAC address. This allows quick
// comparison of sets for detecting changes and for caching.
typedef std::set<AccessPointData, AccessPointDataLess> AccessPointDataSet;
AccessPointDataSet access_point_data;
};
} // namespace content
#endif // CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_H_