device_state.h revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
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 // Accessors 30 const std::string& mac_address() const { return mac_address_; } 31 32 // Cellular specific accessors 33 const std::string& home_provider_id() const { return home_provider_id_; } 34 bool provider_requires_roaming() const { return provider_requires_roaming_; } 35 bool support_network_scan() const { return support_network_scan_; } 36 bool scanning() const { return scanning_; } 37 const std::string& technology_family() const { return technology_family_; } 38 const std::string& carrier() const { return carrier_; } 39 const std::string& sim_lock_type() const { return sim_lock_type_; } 40 uint32 sim_retries_left() const { return sim_retries_left_; } 41 bool sim_lock_enabled() const { return sim_lock_enabled_; } 42 const std::string& meid() const { return meid_; } 43 const std::string& imei() const { return imei_; } 44 const std::string& iccid() const { return iccid_; } 45 const std::string& mdn() const { return mdn_; } 46 const CellularScanResults& scan_results() const { return scan_results_; } 47 const DictionaryValue& properties() const { return properties_; } 48 49 // Returns true if the technology family is GSM and sim_present_ is false. 50 bool IsSimAbsent() const; 51 52 private: 53 // Common Device Properties 54 std::string mac_address_; 55 // Cellular specific propeties 56 std::string home_provider_id_; 57 bool provider_requires_roaming_; 58 bool support_network_scan_; 59 bool scanning_; 60 std::string technology_family_; 61 std::string carrier_; 62 std::string sim_lock_type_; 63 uint32 sim_retries_left_; 64 bool sim_lock_enabled_; 65 bool sim_present_; 66 std::string meid_; 67 std::string imei_; 68 std::string iccid_; 69 std::string mdn_; 70 CellularScanResults scan_results_; 71 // Keep all Device properties in a dictionary. Devices are limited and should 72 // change rarely if ever, so the overhead for this is small. 73 DictionaryValue properties_; 74 75 DISALLOW_COPY_AND_ASSIGN(DeviceState); 76}; 77 78} // namespace chromeos 79 80#endif // CHROMEOS_NETWORK_DEVICE_STATE_H_ 81