| // Copyright 2016 The Chromium OS 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 CHROMEOS_CONFIG_LIBCROS_CONFIG_CROS_CONFIG_INTERFACE_H_ |
| #define CHROMEOS_CONFIG_LIBCROS_CONFIG_CROS_CONFIG_INTERFACE_H_ |
| |
| #include <string> |
| |
| #include <base/logging.h> |
| #include <base/macros.h> |
| |
| namespace brillo { |
| |
| // Interface definition for accessing the Chrome OS master configuration. |
| class CrosConfigInterface { |
| public: |
| CrosConfigInterface() {} |
| virtual ~CrosConfigInterface() {} |
| |
| // Obtain a config property. |
| // This returns a property for the current board model. This can only be |
| // called if Init() was called. |
| // @path: Path to property ("/" for a property at the top of the model |
| // hierarchy). The path specifies the node that contains the property to be |
| // accessed. |
| // @property: Name of property to look up. This is separate from the path |
| // since nodes and properties are separate concepts in device tree, and mixing |
| // nodes and properties in paths is frowned upon. Also it is typical when |
| // reading properties to access them all from a single node, so having the |
| // path the same in each case allows a constant to be used for @path. |
| // @val_out: returns the string value found, if any |
| // @return true on success, false on failure (e.g. no such property) |
| virtual bool GetString(const std::string& path, |
| const std::string& property, |
| std::string* val_out) = 0; |
| |
| // Get a unique integer to the device identity within the identities |
| // supported by the current board. This will fail if the identity |
| // has not been initialized (e.g., Init has not been called) or the |
| // interface does not support this (e.g., the fallback interface for |
| // legacy boards). |
| // @device_index_out: Output parameter to place integer at. |
| // @return: true on success, false on failure. |
| virtual bool GetDeviceIndex(int* device_index_out) = 0; |
| |
| // Return true iff library debug logging is enabled. |
| // Currently this checks for a non-empty CROS_CONFIG_DEBUG environment |
| // variable. |
| static bool IsLoggingEnabled(); |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(CrosConfigInterface); |
| }; |
| |
| #define CROS_CONFIG_LOG(severity) \ |
| LOG_IF(severity, CrosConfigInterface::IsLoggingEnabled()) |
| |
| } // namespace brillo |
| |
| #endif // CHROMEOS_CONFIG_LIBCROS_CONFIG_CROS_CONFIG_INTERFACE_H_ |