device_state.h revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROMEOS_NETWORK_DEVICE_STATE_H_ 6#define CHROMEOS_NETWORK_DEVICE_STATE_H_ 7 8#include "base/values.h" 9#include "chromeos/network/managed_state.h" 10#include "chromeos/network/network_util.h" 11 12namespace chromeos { 13 14// Simple class to provide device state information. Similar to NetworkState; 15// see network_state.h for usage guidelines. 16class CHROMEOS_EXPORT DeviceState : public ManagedState { 17 public: 18 typedef std::vector<CellularScanResult> CellularScanResults; 19 20 explicit DeviceState(const std::string& path); 21 virtual ~DeviceState(); 22 23 // ManagedState overrides 24 virtual bool PropertyChanged(const std::string& key, 25 const base::Value& value) OVERRIDE; 26 virtual bool InitialPropertiesReceived( 27 const base::DictionaryValue& properties) OVERRIDE; 28 29 void IPConfigPropertiesChanged(const std::string& ip_config_path, 30 const base::DictionaryValue& properties); 31 32 // Accessors 33 const std::string& mac_address() const { return mac_address_; } 34 35 // Returns |mac_address_| in aa:bb format. 36 std::string GetFormattedMacAddress() const; 37 38 // Cellular specific accessors 39 const std::string& home_provider_id() const { return home_provider_id_; } 40 bool allow_roaming() const { return allow_roaming_; } 41 bool provider_requires_roaming() const { return provider_requires_roaming_; } 42 bool support_network_scan() const { return support_network_scan_; } 43 bool scanning() const { return scanning_; } 44 const std::string& technology_family() const { return technology_family_; } 45 const std::string& carrier() const { return carrier_; } 46 const std::string& sim_lock_type() const { return sim_lock_type_; } 47 uint32 sim_retries_left() const { return sim_retries_left_; } 48 bool sim_lock_enabled() const { return sim_lock_enabled_; } 49 const std::string& meid() const { return meid_; } 50 const std::string& imei() const { return imei_; } 51 const std::string& iccid() const { return iccid_; } 52 const std::string& mdn() const { return mdn_; } 53 const CellularScanResults& scan_results() const { return scan_results_; } 54 55 // Do not use this. It exists temporarily for internet_options_handler.cc 56 // which is being deprecated. 57 const base::DictionaryValue& properties() const { return properties_; } 58 const base::DictionaryValue& ip_configs() const { return ip_configs_; } 59 60 // Ethernet specific accessors 61 bool eap_authentication_completed() const { 62 return eap_authentication_completed_; 63 } 64 65 // Returns true if the technology family is GSM and sim_present_ is false. 66 bool IsSimAbsent() const; 67 68 private: 69 // Common Device Properties 70 std::string mac_address_; 71 72 // Cellular specific properties 73 std::string home_provider_id_; 74 bool allow_roaming_; 75 bool provider_requires_roaming_; 76 bool support_network_scan_; 77 bool scanning_; 78 std::string technology_family_; 79 std::string carrier_; 80 std::string sim_lock_type_; 81 uint32 sim_retries_left_; 82 bool sim_lock_enabled_; 83 bool sim_present_; 84 std::string meid_; 85 std::string imei_; 86 std::string iccid_; 87 std::string mdn_; 88 CellularScanResults scan_results_; 89 90 // Ethernet specific properties 91 bool eap_authentication_completed_; 92 93 // Keep all Device properties in a dictionary for now. See comment above. 94 base::DictionaryValue properties_; 95 96 // Dictionary of IPConfig properties, keyed by IpConfig path. 97 base::DictionaryValue ip_configs_; 98 99 DISALLOW_COPY_AND_ASSIGN(DeviceState); 100}; 101 102} // namespace chromeos 103 104#endif // CHROMEOS_NETWORK_DEVICE_STATE_H_ 105