device_state.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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 // Cellular specific accessors 36 const std::string& home_provider_id() const { return home_provider_id_; } 37 bool allow_roaming() const { return allow_roaming_; } 38 bool provider_requires_roaming() const { return provider_requires_roaming_; } 39 bool support_network_scan() const { return support_network_scan_; } 40 bool scanning() const { return scanning_; } 41 const std::string& technology_family() const { return technology_family_; } 42 const std::string& carrier() const { return carrier_; } 43 const std::string& sim_lock_type() const { return sim_lock_type_; } 44 uint32 sim_retries_left() const { return sim_retries_left_; } 45 bool sim_lock_enabled() const { return sim_lock_enabled_; } 46 const std::string& meid() const { return meid_; } 47 const std::string& imei() const { return imei_; } 48 const std::string& iccid() const { return iccid_; } 49 const std::string& mdn() const { return mdn_; } 50 const CellularScanResults& scan_results() const { return scan_results_; } 51 52 // Do not use this. It exists temporarily for internet_options_handler.cc 53 // which is being deprecated. 54 const base::DictionaryValue& properties() const { return properties_; } 55 const base::DictionaryValue& ip_configs() const { return ip_configs_; } 56 57 // Ethernet specific accessors 58 bool eap_authentication_completed() const { 59 return eap_authentication_completed_; 60 } 61 62 // Returns true if the technology family is GSM and sim_present_ is false. 63 bool IsSimAbsent() const; 64 65 private: 66 // Common Device Properties 67 std::string mac_address_; 68 69 // Cellular specific properties 70 std::string home_provider_id_; 71 bool allow_roaming_; 72 bool provider_requires_roaming_; 73 bool support_network_scan_; 74 bool scanning_; 75 std::string technology_family_; 76 std::string carrier_; 77 std::string sim_lock_type_; 78 uint32 sim_retries_left_; 79 bool sim_lock_enabled_; 80 bool sim_present_; 81 std::string meid_; 82 std::string imei_; 83 std::string iccid_; 84 std::string mdn_; 85 CellularScanResults scan_results_; 86 87 // Ethernet specific properties 88 bool eap_authentication_completed_; 89 90 // Keep all Device properties in a dictionary for now. See comment above. 91 base::DictionaryValue properties_; 92 93 // Dictionary of IPConfig properties, keyed by IpConfig path. 94 base::DictionaryValue ip_configs_; 95 96 DISALLOW_COPY_AND_ASSIGN(DeviceState); 97}; 98 99} // namespace chromeos 100 101#endif // CHROMEOS_NETWORK_DEVICE_STATE_H_ 102