| // Copyright (c) 2012 The Chromium OS 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 WIMAX_MANAGER_NETWORK_H_ |
| #define WIMAX_MANAGER_NETWORK_H_ |
| |
| #include <stdint.h> |
| |
| #include <map> |
| #include <string> |
| |
| #include <base/macros.h> |
| #include <base/memory/ref_counted.h> |
| |
| #include "wimax_manager/dbus_adaptable.h" |
| |
| namespace wimax_manager { |
| |
| enum NetworkType { |
| kNetworkHome, |
| kNetworkPartner, |
| kNetworkRoamingParnter, |
| kNetworkUnknown, |
| }; |
| |
| class NetworkDBusAdaptor; |
| |
| class Network : public base::RefCounted<Network>, |
| public DBusAdaptable<Network, NetworkDBusAdaptor> { |
| public: |
| using Identifier = uint32_t; |
| |
| static const int kMaxCINR; |
| static const int kMinCINR; |
| static const int kMaxRSSI; |
| static const int kMinRSSI; |
| static const Identifier kInvalidIdentifier; |
| |
| Network(Identifier identifier, const std::string &name, NetworkType type, |
| int cinr, int rssi); |
| |
| static int DecodeCINR(int encoded_cinr); |
| static int DecodeRSSI(int encoded_rssi); |
| |
| void UpdateFrom(const Network &network); |
| int GetSignalStrength() const; |
| |
| // Returns a string description that comprises |name_| and |identifier_|. |
| // If |name_| is empty, returns "network (<8-digit hexadecimal identifier>)". |
| // Otherwise, returns "network '<name>' (<8-digit hexadecimal identifier>)". |
| std::string GetNameWithIdentifier() const; |
| |
| Identifier identifier() const { return identifier_; } |
| const std::string &name() const { return name_; } |
| NetworkType type() const { return type_; } |
| int cinr() const { return cinr_; } |
| int rssi() const { return rssi_; } |
| |
| private: |
| friend class base::RefCounted<Network>; |
| |
| ~Network(); |
| |
| Identifier identifier_; |
| std::string name_; |
| NetworkType type_; |
| int cinr_; |
| int rssi_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Network); |
| }; |
| |
| using NetworkRefPtr = scoped_refptr<Network>; |
| using NetworkMap = std::map<Network::Identifier, NetworkRefPtr>; |
| |
| } // namespace wimax_manager |
| |
| #endif // WIMAX_MANAGER_NETWORK_H_ |