| // Copyright 2015 The Weave 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 LIBWEAVE_INCLUDE_WEAVE_SETTINGS_H_ | 
 | #define LIBWEAVE_INCLUDE_WEAVE_SETTINGS_H_ | 
 |  | 
 | #include <set> | 
 | #include <string> | 
 |  | 
 | #include <base/time/time.h> | 
 |  | 
 | namespace weave { | 
 |  | 
 | // Scopes in order of increasing privileges. | 
 | enum class AuthScope { | 
 |   kNone, | 
 |   kViewer, | 
 |   kUser, | 
 |   kOwner, | 
 | }; | 
 |  | 
 | // Type client-device pairing. | 
 | enum class PairingType { | 
 |   kPinCode, | 
 |   kEmbeddedCode, | 
 | }; | 
 |  | 
 | struct Settings { | 
 |   // Model specific information. Must be set by ConfigStore::LoadDefaults. | 
 |   std::string firmware_version; | 
 |   std::string oem_name; | 
 |   std::string model_name; | 
 |   std::string model_id; | 
 |  | 
 |   // Basic device information. Must be set from ConfigStore::LoadDefaults. | 
 |   std::string name; | 
 |   std::string description; | 
 |   std::string location; | 
 |  | 
 |   // OAuth 2.0 related options. Must be set from ConfigStore::LoadDefaults. | 
 |   std::string api_key; | 
 |   std::string client_id; | 
 |   std::string client_secret; | 
 |  | 
 |   // Options mirrored into "base" state. | 
 |   // Maximum role for local anonymous user. | 
 |   AuthScope local_anonymous_access_role{AuthScope::kViewer}; | 
 |   // If true, allows local discovery using DNS-SD. | 
 |   bool local_discovery_enabled{true}; | 
 |   // If true, allows local pairing using Privet API. | 
 |   bool local_pairing_enabled{true}; | 
 |  | 
 |   // Set of pairing modes supported by device. | 
 |   std::set<PairingType> pairing_modes; | 
 |  | 
 |   // Embedded code. Will be used only if pairing_modes contains kEmbeddedCode. | 
 |   std::string embedded_code; | 
 |  | 
 |   // Optional cloud information. Can be used for testing or debugging. | 
 |   std::string oauth_url; | 
 |   std::string service_url; | 
 |  | 
 |   // Cloud ID of the registered device. Empty if device is not registered. | 
 |   std::string cloud_id; | 
 |  | 
 |   // Local device id. | 
 |   std::string device_id; | 
 |  | 
 |   // Internal options to tweak some library functionality. External code should | 
 |   // avoid using them. | 
 |   bool wifi_auto_setup_enabled{true}; | 
 |   bool disable_security{false}; | 
 |   std::string test_privet_ssid; | 
 | }; | 
 |  | 
 | }  // namespace weave | 
 |  | 
 | #endif  // LIBWEAVE_INCLUDE_WEAVE_SETTINGS_H_ |