15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROMEOS_NETWORK_DEVICE_STATE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROMEOS_NETWORK_DEVICE_STATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/values.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/managed_state.h" 10a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "chromeos/network/network_util.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Simple class to provide device state information. Similar to NetworkState; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// see network_state.h for usage guidelines. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CHROMEOS_EXPORT DeviceState : public ManagedState { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 18a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch typedef std::vector<CellularScanResult> CellularScanResults; 19a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit DeviceState(const std::string& path); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~DeviceState(); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ManagedState overrides 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool PropertyChanged(const std::string& key, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Value& value) OVERRIDE; 26424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual bool InitialPropertiesReceived( 27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const base::DictionaryValue& properties) OVERRIDE; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void IPConfigPropertiesChanged(const std::string& ip_config_path, 30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const base::DictionaryValue& properties); 31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Accessors 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& mac_address() const { return mac_address_; } 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Cellular specific accessors 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& home_provider_id() const { return home_provider_id_; } 37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool allow_roaming() const { return allow_roaming_; } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool provider_requires_roaming() const { return provider_requires_roaming_; } 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool support_network_scan() const { return support_network_scan_; } 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool scanning() const { return scanning_; } 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& technology_family() const { return technology_family_; } 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& carrier() const { return carrier_; } 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& sim_lock_type() const { return sim_lock_type_; } 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch uint32 sim_retries_left() const { return sim_retries_left_; } 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool sim_lock_enabled() const { return sim_lock_enabled_; } 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& meid() const { return meid_; } 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& imei() const { return imei_; } 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& iccid() const { return iccid_; } 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& mdn() const { return mdn_; } 50a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch const CellularScanResults& scan_results() const { return scan_results_; } 51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // |ip_configs_| is kept up to date by NetworkStateHandler. 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const base::DictionaryValue& ip_configs() const { return ip_configs_; } 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Do not use this. It exists temporarily for internet_options_handler.cc 56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // which is being deprecated. 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::DictionaryValue& properties() const { return properties_; } 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Ethernet specific accessors 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool eap_authentication_completed() const { 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return eap_authentication_completed_; 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Returns true if the technology family is GSM and sim_present_ is false. 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool IsSimAbsent() const; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Common Device Properties 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string mac_address_; 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Cellular specific properties 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string home_provider_id_; 73010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool allow_roaming_; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool provider_requires_roaming_; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool support_network_scan_; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool scanning_; 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string technology_family_; 787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch std::string carrier_; 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string sim_lock_type_; 807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch uint32 sim_retries_left_; 817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool sim_lock_enabled_; 827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool sim_present_; 83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string meid_; 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string imei_; 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string iccid_; 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string mdn_; 87a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch CellularScanResults scan_results_; 884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Ethernet specific properties 904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool eap_authentication_completed_; 914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Keep all Device properties in a dictionary for now. See comment above. 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue properties_; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Dictionary of IPConfig properties, keyed by IpConfig path. 96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::DictionaryValue ip_configs_; 97010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DeviceState); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROMEOS_NETWORK_DEVICE_STATE_H_ 104