1/* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifndef SYSTEM_PARAMETERS_H 17#define SYSTEM_PARAMETERS_H 18 19#include <limits> 20#include <string> 21 22namespace OHOS { 23namespace system { 24/* 25 * Returns the current value of the system parameter `key`. 26 * If the parameter is empty or doesn't exist, `def` will be returned. 27 */ 28std::string GetParameter(const std::string& key, const std::string& def); 29 30/* 31 * Returns true if the system parameter `key` has the value "1", "y", "yes", "on", or "true", 32 * false for "0", "n", "no", "off", or "false", or `def` otherwise. 33 */ 34bool GetBoolParameter(const std::string& key, bool def); 35 36/* 37 * Returns the signed integer corresponding to the system parameter `key`. 38 * If the parameter is empty, doesn't exist, doesn't have an integer value, or is outside 39 * the optional bounds, returns `def`. 40 */ 41template<typename T> 42T GetIntParameter(const std::string& key, T def, T min = std::numeric_limits<T>::min(), 43 T max = std::numeric_limits<T>::max()); 44 45/* 46 * Returns the unsigned integer corresponding to the system parameter `key`. 47 * If the parameter is empty, doesn't exist, doesn't have an integer value, or is outside 48 * the optional bound, returns `def`. 49 */ 50template<typename T> 51T GetUintParameter(const std::string& key, T def, T max = std::numeric_limits<T>::max()); 52 53/* 54 * Sets the system parameter `key` to `value`. 55 * Note that system parameter setting is inherently asynchronous so a return value of `true` 56 * isn't particularly meaningful, and immediately reading back the value won't necessarily 57 * tell you whether or not your call succeeded. A `false` return value definitely means failure. 58 */ 59bool SetParameter(const std::string& key, const std::string& value); 60 61/* 62 * Obtains the device type of your product represented by a string. 63 */ 64std::string GetDeviceType(void); 65} // namespace system 66} // namespace OHOS 67 68#endif // SYSTEM_PARAMETERS_H