| // Copyright 2017 The Fuchsia Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 | library fuchsia.devicesettings; | 
 |  | 
 | enum Status : uint8 { | 
 |     ok = 1; | 
 |     errNotSet = 2; | 
 |     errInvalidSetting = 3; | 
 |     errRead = 4; | 
 |     errIncorrectType = 5; | 
 |     errUnknown = 6; | 
 | }; | 
 |  | 
 | enum ValueType : uint8 { | 
 |     number = 1; | 
 |     text = 2; | 
 | }; | 
 |  | 
 | /// Manager interface used to manage settings | 
 | [Discoverable] | 
 | protocol DeviceSettingsManager { | 
 |     GetInteger(string key) -> (int64 val, Status s); | 
 |  | 
 |     GetString(string key) -> (string val, Status s); | 
 |  | 
 |     /// Returns false on database error and true on success. | 
 |     SetInteger(string key, int64 val) -> (bool result); | 
 |  | 
 |     /// Returns false on database error and true on success. | 
 |     SetString(string key, string val) -> (bool result); | 
 |  | 
 |     /// Register a watcher to be called when a setting changes | 
 |     /// Returns Status::ok, Status::errInvalidSetting or Status::errUnknown | 
 |     Watch(string key, DeviceSettingsWatcher watcher) -> (Status s); | 
 | }; | 
 |  | 
 | /// A watcher for device settings changes | 
 | protocol DeviceSettingsWatcher { | 
 |     OnChangeSettings(ValueType type); | 
 | }; |