1cc290419Sopenharmony_ci/* 2cc290419Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 3cc290419Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4cc290419Sopenharmony_ci * you may not use this file except in compliance with the License. 5cc290419Sopenharmony_ci * You may obtain a copy of the License at 6cc290419Sopenharmony_ci * 7cc290419Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8cc290419Sopenharmony_ci * 9cc290419Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10cc290419Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11cc290419Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12cc290419Sopenharmony_ci * See the License for the specific language governing permissions and 13cc290419Sopenharmony_ci * limitations under the License. 14cc290419Sopenharmony_ci */ 15cc290419Sopenharmony_ci/* 16cc290419Sopenharmony_ci############ 17cc290419Sopenharmony_ciThis file is used to support compatibility between platforms, differences between old and new projects and 18cc290419Sopenharmony_cicompilation platforms 19cc290419Sopenharmony_ci 20cc290419Sopenharmony_cidefined HARMONY_PROJECT 21cc290419Sopenharmony_ciWith openharmony toolchains support. If not defined, it should be [device]buildroot or [PC]msys64(...)/ubuntu-apt(...) 22cc290419Sopenharmony_cienvirments 23cc290419Sopenharmony_ci############ 24cc290419Sopenharmony_ci*/ 25cc290419Sopenharmony_ci#include "system_depend.h" 26cc290419Sopenharmony_ci#include "base.h" 27cc290419Sopenharmony_ci#if defined(HARMONY_PROJECT) 28cc290419Sopenharmony_ciextern "C" { 29cc290419Sopenharmony_ci#include "init_reboot.h" 30cc290419Sopenharmony_ci#include "parameter.h" 31cc290419Sopenharmony_ci} 32cc290419Sopenharmony_ci#endif 33cc290419Sopenharmony_ci 34cc290419Sopenharmony_cinamespace Hdc { 35cc290419Sopenharmony_cinamespace SystemDepend { 36cc290419Sopenharmony_ci bool SetDevItem(const char *key, const char *value) 37cc290419Sopenharmony_ci { 38cc290419Sopenharmony_ci bool ret = true; 39cc290419Sopenharmony_ci#ifdef HARMONY_PROJECT 40cc290419Sopenharmony_ci ret = SetParameter(key, value) == 0; 41cc290419Sopenharmony_ci#else 42cc290419Sopenharmony_ci char outBuf[256] = ""; 43cc290419Sopenharmony_ci string stringBuf = Base::StringFormat("param set %s %s", key, value); 44cc290419Sopenharmony_ci Base::RunPipeComand(stringBuf.c_str(), outBuf, sizeof(outBuf), true); 45cc290419Sopenharmony_ci#endif // HARMONY_PROJECT 46cc290419Sopenharmony_ci return ret; 47cc290419Sopenharmony_ci } 48cc290419Sopenharmony_ci 49cc290419Sopenharmony_ci bool GetDevItem(const char *key, string &out, const char *preDefine) 50cc290419Sopenharmony_ci { 51cc290419Sopenharmony_ci bool ret = true; 52cc290419Sopenharmony_ci char tmpStringBuf[BUF_SIZE_MEDIUM] = ""; 53cc290419Sopenharmony_ci#ifdef HARMONY_PROJECT 54cc290419Sopenharmony_ci auto res = GetParameter(key, preDefine, tmpStringBuf, BUF_SIZE_MEDIUM); 55cc290419Sopenharmony_ci if (res <= 0) { 56cc290419Sopenharmony_ci return false; 57cc290419Sopenharmony_ci } 58cc290419Sopenharmony_ci#else 59cc290419Sopenharmony_ci string sFailString = Base::StringFormat("Get parameter \"%s\" fail", key); 60cc290419Sopenharmony_ci string stringBuf = "param get " + string(key); 61cc290419Sopenharmony_ci Base::RunPipeComand(stringBuf.c_str(), tmpStringBuf, BUF_SIZE_MEDIUM - 1, true); 62cc290419Sopenharmony_ci if (!strcmp(sFailString.c_str(), tmpStringBuf)) { 63cc290419Sopenharmony_ci // failed 64cc290419Sopenharmony_ci ret = false; 65cc290419Sopenharmony_ci Base::ZeroBuf(tmpStringBuf, BUF_SIZE_MEDIUM); 66cc290419Sopenharmony_ci } 67cc290419Sopenharmony_ci#endif 68cc290419Sopenharmony_ci out = tmpStringBuf; 69cc290419Sopenharmony_ci return ret; 70cc290419Sopenharmony_ci } 71cc290419Sopenharmony_ci 72cc290419Sopenharmony_ci uint32_t GetDevUint(const char *key, uint32_t defaultValue) 73cc290419Sopenharmony_ci { 74cc290419Sopenharmony_ci return GetUintParameter(key, defaultValue); 75cc290419Sopenharmony_ci } 76cc290419Sopenharmony_ci 77cc290419Sopenharmony_ci bool CallDoReboot(const char *reason) 78cc290419Sopenharmony_ci { 79cc290419Sopenharmony_ci string rebootCtrl = "ohos.startup.powerctrl"; 80cc290419Sopenharmony_ci#ifdef HARMONY_PROJECT 81cc290419Sopenharmony_ci return SetDevItem(rebootCtrl.c_str(), reason); 82cc290419Sopenharmony_ci#else 83cc290419Sopenharmony_ci return false; 84cc290419Sopenharmony_ci#endif 85cc290419Sopenharmony_ci } 86cc290419Sopenharmony_ci 87cc290419Sopenharmony_ci bool RebootDevice(const string &cmd) 88cc290419Sopenharmony_ci { 89cc290419Sopenharmony_ci string reason = "reboot"; 90cc290419Sopenharmony_ci if (cmd != "") { 91cc290419Sopenharmony_ci reason += ","; 92cc290419Sopenharmony_ci reason += cmd; 93cc290419Sopenharmony_ci } 94cc290419Sopenharmony_ci WRITE_LOG(LOG_DEBUG, "DoReboot with args:[%s] for cmd:[%s]", reason.c_str(), cmd.c_str()); 95cc290419Sopenharmony_ci return CallDoReboot(reason.c_str()); 96cc290419Sopenharmony_ci } 97cc290419Sopenharmony_ci} 98cc290419Sopenharmony_ci} // namespace Hdc 99