17c804472Sopenharmony_ci/*
27c804472Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
47c804472Sopenharmony_ci * you may not use this file except in compliance with the License.
57c804472Sopenharmony_ci * You may obtain a copy of the License at
67c804472Sopenharmony_ci *
77c804472Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
87c804472Sopenharmony_ci *
97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
127c804472Sopenharmony_ci * See the License for the specific language governing permissions and
137c804472Sopenharmony_ci * limitations under the License.
147c804472Sopenharmony_ci */
157c804472Sopenharmony_ci
167c804472Sopenharmony_ci#include "CommandLine.h"
177c804472Sopenharmony_ci
187c804472Sopenharmony_ci#include <algorithm>
197c804472Sopenharmony_ci#include <regex>
207c804472Sopenharmony_ci#include <sstream>
217c804472Sopenharmony_ci
227c804472Sopenharmony_ci#include "CommandLineInterface.h"
237c804472Sopenharmony_ci#include "CommandParser.h"
247c804472Sopenharmony_ci#include "Interrupter.h"
257c804472Sopenharmony_ci#include "JsApp.h"
267c804472Sopenharmony_ci#include "JsAppImpl.h"
277c804472Sopenharmony_ci#include "JsonReader.h"
287c804472Sopenharmony_ci#include "LanguageManagerImpl.h"
297c804472Sopenharmony_ci#include "ModelConfig.h"
307c804472Sopenharmony_ci#include "ModelManager.h"
317c804472Sopenharmony_ci#include "MouseInputImpl.h"
327c804472Sopenharmony_ci#include "MouseWheelImpl.h"
337c804472Sopenharmony_ci#include "KeyInputImpl.h"
347c804472Sopenharmony_ci#include "PreviewerEngineLog.h"
357c804472Sopenharmony_ci#include "SharedData.h"
367c804472Sopenharmony_ci#include "VirtualMessageImpl.h"
377c804472Sopenharmony_ci#include "VirtualScreenImpl.h"
387c804472Sopenharmony_ci
397c804472Sopenharmony_ciCommandLine::CommandLine(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
407c804472Sopenharmony_ci    : args(arg), cliSocket(socket), type(commandType), commandName("")
417c804472Sopenharmony_ci{
427c804472Sopenharmony_ci}
437c804472Sopenharmony_ci
447c804472Sopenharmony_ciCommandLine::~CommandLine()
457c804472Sopenharmony_ci{
467c804472Sopenharmony_ci}
477c804472Sopenharmony_ci
487c804472Sopenharmony_civoid CommandLine::CheckAndRun()
497c804472Sopenharmony_ci{
507c804472Sopenharmony_ci    if (!IsArgValid()) {
517c804472Sopenharmony_ci        ELOG("CheckAndRun: invalid command params");
527c804472Sopenharmony_ci        SetCommandResult("result", JsonReader::CreateBool(false));
537c804472Sopenharmony_ci        SendResult();
547c804472Sopenharmony_ci        return;
557c804472Sopenharmony_ci    }
567c804472Sopenharmony_ci    Run();
577c804472Sopenharmony_ci    SendResult();
587c804472Sopenharmony_ci}
597c804472Sopenharmony_ci
607c804472Sopenharmony_civoid CommandLine::SendResult()
617c804472Sopenharmony_ci{
627c804472Sopenharmony_ci    if (commandResult.IsNull() || !commandResult.IsValid()) {
637c804472Sopenharmony_ci        return;
647c804472Sopenharmony_ci    }
657c804472Sopenharmony_ci    cliSocket << commandResult.ToStyledString();
667c804472Sopenharmony_ci    ELOG("SendResult commandResult: %s", commandResult.ToStyledString().c_str());
677c804472Sopenharmony_ci    commandResult.Clear();
687c804472Sopenharmony_ci}
697c804472Sopenharmony_ci
707c804472Sopenharmony_civoid CommandLine::RunAndSendResultToManager()
717c804472Sopenharmony_ci{
727c804472Sopenharmony_ci    Run();
737c804472Sopenharmony_ci    SendResultToManager();
747c804472Sopenharmony_ci}
757c804472Sopenharmony_ci
767c804472Sopenharmony_civoid CommandLine::SendResultToManager()
777c804472Sopenharmony_ci{
787c804472Sopenharmony_ci    if (commandResultToManager.IsNull() || !commandResultToManager.IsValid()) {
797c804472Sopenharmony_ci        return;
807c804472Sopenharmony_ci    }
817c804472Sopenharmony_ci    cliSocket << commandResultToManager.ToStyledString();
827c804472Sopenharmony_ci    commandResultToManager.Clear();
837c804472Sopenharmony_ci}
847c804472Sopenharmony_ci
857c804472Sopenharmony_cibool CommandLine::IsArgValid() const
867c804472Sopenharmony_ci{
877c804472Sopenharmony_ci    if (type == CommandType::GET) {
887c804472Sopenharmony_ci        return IsGetArgValid();
897c804472Sopenharmony_ci    }
907c804472Sopenharmony_ci    if (type == CommandType::SET) {
917c804472Sopenharmony_ci        return IsSetArgValid();
927c804472Sopenharmony_ci    }
937c804472Sopenharmony_ci    if (type == CommandType::ACTION) {
947c804472Sopenharmony_ci        return IsActionArgValid();
957c804472Sopenharmony_ci    }
967c804472Sopenharmony_ci    return true;
977c804472Sopenharmony_ci}
987c804472Sopenharmony_ci
997c804472Sopenharmony_ciuint8_t CommandLine::ToUint8(std::string str) const
1007c804472Sopenharmony_ci{
1017c804472Sopenharmony_ci    int value = atoi(str.data());
1027c804472Sopenharmony_ci    if (value > UINT8_MAX) {
1037c804472Sopenharmony_ci        ELOG("CommandLine::ToUint8 value is overflow, value: %d", value);
1047c804472Sopenharmony_ci    }
1057c804472Sopenharmony_ci    return static_cast<uint8_t>(value);
1067c804472Sopenharmony_ci}
1077c804472Sopenharmony_ci
1087c804472Sopenharmony_civoid CommandLine::SetCommandName(std::string command)
1097c804472Sopenharmony_ci{
1107c804472Sopenharmony_ci    this->commandName = command;
1117c804472Sopenharmony_ci}
1127c804472Sopenharmony_ci
1137c804472Sopenharmony_civoid CommandLine::SetCommandResult(const std::string& resultType, const Json2::Value& resultContent)
1147c804472Sopenharmony_ci{
1157c804472Sopenharmony_ci    this->commandResult.Add("version", CommandLineInterface::COMMAND_VERSION.c_str());
1167c804472Sopenharmony_ci    this->commandResult.Add("command", this->commandName.c_str());
1177c804472Sopenharmony_ci    this->commandResult.Add(resultType.c_str(), resultContent);
1187c804472Sopenharmony_ci}
1197c804472Sopenharmony_ci
1207c804472Sopenharmony_civoid CommandLine::SetResultToManager(const std::string& resultType,
1217c804472Sopenharmony_ci                                     const Json2::Value& resultContent,
1227c804472Sopenharmony_ci                                     const std::string& messageType)
1237c804472Sopenharmony_ci{
1247c804472Sopenharmony_ci    this->commandResultToManager.Add("MessageType", messageType.c_str());
1257c804472Sopenharmony_ci    this->commandResultToManager.Add(resultType.c_str(), resultContent);
1267c804472Sopenharmony_ci}
1277c804472Sopenharmony_ci
1287c804472Sopenharmony_civoid CommandLine::Run()
1297c804472Sopenharmony_ci{
1307c804472Sopenharmony_ci    if (type == CommandType::GET) {
1317c804472Sopenharmony_ci        RunGet();
1327c804472Sopenharmony_ci    } else if (type == CommandType::SET) {
1337c804472Sopenharmony_ci        RunSet();
1347c804472Sopenharmony_ci    } else if (type == CommandType::ACTION) {
1357c804472Sopenharmony_ci        RunAction();
1367c804472Sopenharmony_ci    }
1377c804472Sopenharmony_ci}
1387c804472Sopenharmony_ci
1397c804472Sopenharmony_cibool CommandLine::IsBoolType(std::string arg) const
1407c804472Sopenharmony_ci{
1417c804472Sopenharmony_ci    std::regex tofrx("^(true)|(false)$");
1427c804472Sopenharmony_ci    if (regex_match(arg, tofrx)) {
1437c804472Sopenharmony_ci        return true;
1447c804472Sopenharmony_ci    }
1457c804472Sopenharmony_ci    return false;
1467c804472Sopenharmony_ci}
1477c804472Sopenharmony_ci
1487c804472Sopenharmony_cibool CommandLine::IsIntType(std::string arg) const
1497c804472Sopenharmony_ci{
1507c804472Sopenharmony_ci    std::regex isInt("^\\d+$");
1517c804472Sopenharmony_ci    return regex_match(arg, isInt);
1527c804472Sopenharmony_ci}
1537c804472Sopenharmony_ci
1547c804472Sopenharmony_cibool CommandLine::IsOneDigitFloatType(std::string arg, bool allowNegativeNumber) const
1557c804472Sopenharmony_ci{
1567c804472Sopenharmony_ci    if (allowNegativeNumber) {
1577c804472Sopenharmony_ci        std::regex isFloat("^-?\\d+(\\.\\d+)?$");
1587c804472Sopenharmony_ci        return regex_match(arg, isFloat);
1597c804472Sopenharmony_ci    } else {
1607c804472Sopenharmony_ci        std::regex isFloat("^\\d(\\.\\d+)?$");
1617c804472Sopenharmony_ci        return regex_match(arg, isFloat);
1627c804472Sopenharmony_ci    }
1637c804472Sopenharmony_ci}
1647c804472Sopenharmony_ci
1657c804472Sopenharmony_civoid TouchAndMouseCommand::SetEventParams(EventParams& params)
1667c804472Sopenharmony_ci{
1677c804472Sopenharmony_ci    if (CommandParser::GetInstance().GetScreenMode() == CommandParser::ScreenMode::STATIC) {
1687c804472Sopenharmony_ci        return;
1697c804472Sopenharmony_ci    }
1707c804472Sopenharmony_ci    MouseInputImpl::GetInstance().SetMousePosition(params.x, params.y);
1717c804472Sopenharmony_ci    MouseInputImpl::GetInstance().SetMouseStatus(params.type);
1727c804472Sopenharmony_ci    MouseInputImpl::GetInstance().SetMouseButton(params.button);
1737c804472Sopenharmony_ci    MouseInputImpl::GetInstance().SetMouseAction(params.action);
1747c804472Sopenharmony_ci    MouseInputImpl::GetInstance().SetSourceType(params.sourceType);
1757c804472Sopenharmony_ci    MouseInputImpl::GetInstance().SetSourceTool(params.sourceTool);
1767c804472Sopenharmony_ci    MouseInputImpl::GetInstance().SetPressedBtns(params.pressedBtnsVec);
1777c804472Sopenharmony_ci    MouseInputImpl::GetInstance().SetAxisValues(params.axisVec);
1787c804472Sopenharmony_ci    MouseInputImpl::GetInstance().DispatchOsTouchEvent();
1797c804472Sopenharmony_ci    std::stringstream ss;
1807c804472Sopenharmony_ci    ss << "[";
1817c804472Sopenharmony_ci    for (double val : params.axisVec) {
1827c804472Sopenharmony_ci        ss << " " << val << " ";
1837c804472Sopenharmony_ci    }
1847c804472Sopenharmony_ci    ss << "]" << std::endl;
1857c804472Sopenharmony_ci    ILOG("%s(%f,%f,%d,%d,%d,%d,%d,%d,%d,%s)", params.name.c_str(), params.x, params.y, params.type, params.button,
1867c804472Sopenharmony_ci        params.action, params.sourceType, params.sourceTool, params.pressedBtnsVec.size(), params.axisVec.size(),
1877c804472Sopenharmony_ci        ss.str().c_str());
1887c804472Sopenharmony_ci}
1897c804472Sopenharmony_ci
1907c804472Sopenharmony_cibool TouchPressCommand::IsActionArgValid() const
1917c804472Sopenharmony_ci{
1927c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("x") || !args.IsMember("y") ||
1937c804472Sopenharmony_ci        !args["x"].IsInt() || !args["y"].IsInt()) {
1947c804472Sopenharmony_ci        return false;
1957c804472Sopenharmony_ci    }
1967c804472Sopenharmony_ci    int32_t pointX = args["x"].AsInt();
1977c804472Sopenharmony_ci    int32_t pointY = args["y"].AsInt();
1987c804472Sopenharmony_ci    if (pointX < 0 || pointX > VirtualScreenImpl::GetInstance().GetCurrentWidth()) {
1997c804472Sopenharmony_ci        ELOG("X coordinate range %d ~ %d", 0, VirtualScreenImpl::GetInstance().GetCurrentWidth());
2007c804472Sopenharmony_ci        return false;
2017c804472Sopenharmony_ci    }
2027c804472Sopenharmony_ci    if (pointY < 0 || pointY > VirtualScreenImpl::GetInstance().GetCurrentHeight()) {
2037c804472Sopenharmony_ci        ELOG("Y coordinate range %d ~ %d", 0, VirtualScreenImpl::GetInstance().GetCurrentHeight());
2047c804472Sopenharmony_ci        return false;
2057c804472Sopenharmony_ci    }
2067c804472Sopenharmony_ci    return true;
2077c804472Sopenharmony_ci}
2087c804472Sopenharmony_ci
2097c804472Sopenharmony_ciTouchPressCommand::TouchPressCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
2107c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
2117c804472Sopenharmony_ci{
2127c804472Sopenharmony_ci}
2137c804472Sopenharmony_ci
2147c804472Sopenharmony_civoid TouchPressCommand::RunAction()
2157c804472Sopenharmony_ci{
2167c804472Sopenharmony_ci    int type = 0;
2177c804472Sopenharmony_ci    EventParams param;
2187c804472Sopenharmony_ci    param.x = args["x"].AsDouble();
2197c804472Sopenharmony_ci    param.y = args["y"].AsDouble();
2207c804472Sopenharmony_ci    param.type = type;
2217c804472Sopenharmony_ci    param.name = "TouchPress";
2227c804472Sopenharmony_ci    param.button = MouseInputImpl::GetInstance().defaultButton;
2237c804472Sopenharmony_ci    param.action = MouseInputImpl::GetInstance().defaultAction;
2247c804472Sopenharmony_ci    param.sourceType = MouseInputImpl::GetInstance().defaultSourceType;
2257c804472Sopenharmony_ci    param.sourceTool = MouseInputImpl::GetInstance().defaultSourceTool;
2267c804472Sopenharmony_ci    SetEventParams(param);
2277c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
2287c804472Sopenharmony_ci}
2297c804472Sopenharmony_ci
2307c804472Sopenharmony_cibool MouseWheelCommand::IsActionArgValid() const
2317c804472Sopenharmony_ci{
2327c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("rotate") || !args["rotate"].IsDouble()) {
2337c804472Sopenharmony_ci        return false;
2347c804472Sopenharmony_ci    }
2357c804472Sopenharmony_ci    return true;
2367c804472Sopenharmony_ci}
2377c804472Sopenharmony_ci
2387c804472Sopenharmony_ciMouseWheelCommand::MouseWheelCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
2397c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
2407c804472Sopenharmony_ci{
2417c804472Sopenharmony_ci}
2427c804472Sopenharmony_ci
2437c804472Sopenharmony_civoid MouseWheelCommand::RunAction()
2447c804472Sopenharmony_ci{
2457c804472Sopenharmony_ci    if (CommandParser::GetInstance().GetScreenMode() == CommandParser::ScreenMode::STATIC) {
2467c804472Sopenharmony_ci        return;
2477c804472Sopenharmony_ci    }
2487c804472Sopenharmony_ci    MouseWheelImpl::GetInstance().SetRotate(args["rotate"].AsDouble());
2497c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
2507c804472Sopenharmony_ci    ILOG("CrownRotate (%f)", args["rotate"].AsDouble());
2517c804472Sopenharmony_ci}
2527c804472Sopenharmony_ci
2537c804472Sopenharmony_cibool TouchReleaseCommand::IsActionArgValid() const
2547c804472Sopenharmony_ci{
2557c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("x") || !args.IsMember("y") ||
2567c804472Sopenharmony_ci        !args["x"].IsInt() || !args["y"].IsInt()) {
2577c804472Sopenharmony_ci        return false;
2587c804472Sopenharmony_ci    }
2597c804472Sopenharmony_ci    int32_t pX = args["x"].AsInt();
2607c804472Sopenharmony_ci    int32_t pY = args["y"].AsInt();
2617c804472Sopenharmony_ci    if (pY < 0 || pY > VirtualScreenImpl::GetInstance().GetCurrentHeight()) {
2627c804472Sopenharmony_ci        ELOG("Y coordinate range %d ~ %d", 0, VirtualScreenImpl::GetInstance().GetCurrentHeight());
2637c804472Sopenharmony_ci        return false;
2647c804472Sopenharmony_ci    }
2657c804472Sopenharmony_ci    if (pX < 0 || pX > VirtualScreenImpl::GetInstance().GetCurrentWidth()) {
2667c804472Sopenharmony_ci        ELOG("X coordinate range %d ~ %d", 0, VirtualScreenImpl::GetInstance().GetCurrentWidth());
2677c804472Sopenharmony_ci        return false;
2687c804472Sopenharmony_ci    }
2697c804472Sopenharmony_ci    return true;
2707c804472Sopenharmony_ci}
2717c804472Sopenharmony_ci
2727c804472Sopenharmony_ciTouchReleaseCommand::TouchReleaseCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
2737c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
2747c804472Sopenharmony_ci{
2757c804472Sopenharmony_ci}
2767c804472Sopenharmony_ci
2777c804472Sopenharmony_civoid TouchReleaseCommand::RunAction()
2787c804472Sopenharmony_ci{
2797c804472Sopenharmony_ci    int type = 1;
2807c804472Sopenharmony_ci    EventParams param;
2817c804472Sopenharmony_ci    param.x = args["x"].AsDouble();
2827c804472Sopenharmony_ci    param.y = args["y"].AsDouble();
2837c804472Sopenharmony_ci    param.type = type;
2847c804472Sopenharmony_ci    param.name = "TouchRelease";
2857c804472Sopenharmony_ci    param.button = MouseInputImpl::GetInstance().defaultButton;
2867c804472Sopenharmony_ci    param.action = MouseInputImpl::GetInstance().defaultAction;
2877c804472Sopenharmony_ci    param.sourceType = MouseInputImpl::GetInstance().defaultSourceType;
2887c804472Sopenharmony_ci    param.sourceTool = MouseInputImpl::GetInstance().defaultSourceTool;
2897c804472Sopenharmony_ci    SetEventParams(param);
2907c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
2917c804472Sopenharmony_ci}
2927c804472Sopenharmony_ci
2937c804472Sopenharmony_cibool TouchMoveCommand::IsActionArgValid() const
2947c804472Sopenharmony_ci{
2957c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("x") || !args.IsMember("y") ||
2967c804472Sopenharmony_ci        !args["x"].IsInt() || !args["y"].IsInt()) {
2977c804472Sopenharmony_ci        return false;
2987c804472Sopenharmony_ci    }
2997c804472Sopenharmony_ci    int32_t pX = args["x"].AsInt();
3007c804472Sopenharmony_ci    int32_t pY = args["y"].AsInt();
3017c804472Sopenharmony_ci    if (pX < 0 || pX > VirtualScreenImpl::GetInstance().GetCurrentWidth()) {
3027c804472Sopenharmony_ci        ELOG("X coordinate range %d ~ %d", 0, VirtualScreenImpl::GetInstance().GetCurrentWidth());
3037c804472Sopenharmony_ci        return false;
3047c804472Sopenharmony_ci    }
3057c804472Sopenharmony_ci    if (pY < 0 || pY > VirtualScreenImpl::GetInstance().GetCurrentHeight()) {
3067c804472Sopenharmony_ci        ELOG("Y coordinate range %d ~ %d", 0, VirtualScreenImpl::GetInstance().GetCurrentHeight());
3077c804472Sopenharmony_ci        return false;
3087c804472Sopenharmony_ci    }
3097c804472Sopenharmony_ci    return true;
3107c804472Sopenharmony_ci}
3117c804472Sopenharmony_ci
3127c804472Sopenharmony_ciTouchMoveCommand::TouchMoveCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
3137c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
3147c804472Sopenharmony_ci{
3157c804472Sopenharmony_ci}
3167c804472Sopenharmony_ci
3177c804472Sopenharmony_civoid TouchMoveCommand::RunAction()
3187c804472Sopenharmony_ci{
3197c804472Sopenharmony_ci    int type = 2;
3207c804472Sopenharmony_ci    EventParams param;
3217c804472Sopenharmony_ci    param.x = args["x"].AsDouble();
3227c804472Sopenharmony_ci    param.y = args["y"].AsDouble();
3237c804472Sopenharmony_ci    param.type = type;
3247c804472Sopenharmony_ci    param.name = "TouchMove";
3257c804472Sopenharmony_ci    param.button = MouseInputImpl::GetInstance().defaultButton;
3267c804472Sopenharmony_ci    param.action = MouseInputImpl::GetInstance().defaultAction;
3277c804472Sopenharmony_ci    param.sourceType = MouseInputImpl::GetInstance().defaultSourceType;
3287c804472Sopenharmony_ci    param.sourceTool = MouseInputImpl::GetInstance().defaultSourceTool;
3297c804472Sopenharmony_ci    SetEventParams(param);
3307c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
3317c804472Sopenharmony_ci}
3327c804472Sopenharmony_ci
3337c804472Sopenharmony_ciPowerCommand::PowerCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
3347c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
3357c804472Sopenharmony_ci{
3367c804472Sopenharmony_ci}
3377c804472Sopenharmony_ci
3387c804472Sopenharmony_cibool PowerCommand::IsSetArgValid() const
3397c804472Sopenharmony_ci{
3407c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("Power") || !args["Power"].IsDouble()) {
3417c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
3427c804472Sopenharmony_ci        return false;
3437c804472Sopenharmony_ci    }
3447c804472Sopenharmony_ci    double val = args["Power"].AsDouble();
3457c804472Sopenharmony_ci    if (!SharedData<double>::IsValid(SharedDataType::BATTERY_LEVEL, val)) {
3467c804472Sopenharmony_ci        ELOG("PowerCommand invalid value: %f", val);
3477c804472Sopenharmony_ci        return false;
3487c804472Sopenharmony_ci    }
3497c804472Sopenharmony_ci    return true;
3507c804472Sopenharmony_ci}
3517c804472Sopenharmony_ci
3527c804472Sopenharmony_civoid PowerCommand::RunGet()
3537c804472Sopenharmony_ci{
3547c804472Sopenharmony_ci    double power = SharedData<double>::GetData(SharedDataType::BATTERY_LEVEL);
3557c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateObject();
3567c804472Sopenharmony_ci    resultContent.Add("Power", power);
3577c804472Sopenharmony_ci    SetCommandResult("result", resultContent);
3587c804472Sopenharmony_ci    ILOG("Get power run finished");
3597c804472Sopenharmony_ci}
3607c804472Sopenharmony_ci
3617c804472Sopenharmony_civoid PowerCommand::RunSet()
3627c804472Sopenharmony_ci{
3637c804472Sopenharmony_ci    double val = args["Power"].AsDouble();
3647c804472Sopenharmony_ci    SharedData<double>::SetData(SharedDataType::BATTERY_LEVEL, val);
3657c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
3667c804472Sopenharmony_ci    ILOG("Set power run finished, the value is: %f", val);
3677c804472Sopenharmony_ci}
3687c804472Sopenharmony_ci
3697c804472Sopenharmony_ciVolumeCommand::VolumeCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
3707c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
3717c804472Sopenharmony_ci{
3727c804472Sopenharmony_ci}
3737c804472Sopenharmony_ci
3747c804472Sopenharmony_cibool VolumeCommand::IsSetArgValid() const
3757c804472Sopenharmony_ci{
3767c804472Sopenharmony_ci    return true;
3777c804472Sopenharmony_ci}
3787c804472Sopenharmony_ci
3797c804472Sopenharmony_civoid VolumeCommand::RunGet()
3807c804472Sopenharmony_ci{
3817c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateString("Command offline"));
3827c804472Sopenharmony_ci    ILOG("Command offline");
3837c804472Sopenharmony_ci}
3847c804472Sopenharmony_ci
3857c804472Sopenharmony_civoid VolumeCommand::RunSet()
3867c804472Sopenharmony_ci{
3877c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateString("Command offline"));
3887c804472Sopenharmony_ci    ILOG("Command offline");
3897c804472Sopenharmony_ci}
3907c804472Sopenharmony_ci
3917c804472Sopenharmony_ciBarometerCommand::BarometerCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
3927c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
3937c804472Sopenharmony_ci{
3947c804472Sopenharmony_ci}
3957c804472Sopenharmony_ci
3967c804472Sopenharmony_cibool BarometerCommand::IsSetArgValid() const
3977c804472Sopenharmony_ci{
3987c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("Barometer") || !args["Barometer"].IsUInt()) {
3997c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
4007c804472Sopenharmony_ci        return false;
4017c804472Sopenharmony_ci    }
4027c804472Sopenharmony_ci    uint32_t val = args["Barometer"].AsUInt();
4037c804472Sopenharmony_ci    if (!SharedData<uint32_t>::IsValid(SharedDataType::PRESSURE_VALUE, val)) {
4047c804472Sopenharmony_ci        ELOG("Barometer invalid value: %d", val);
4057c804472Sopenharmony_ci        return false;
4067c804472Sopenharmony_ci    }
4077c804472Sopenharmony_ci    return true;
4087c804472Sopenharmony_ci}
4097c804472Sopenharmony_ci
4107c804472Sopenharmony_civoid BarometerCommand::RunGet()
4117c804472Sopenharmony_ci{
4127c804472Sopenharmony_ci    int barometer = static_cast<int>(SharedData<uint32_t>::GetData(SharedDataType::PRESSURE_VALUE));
4137c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateObject();
4147c804472Sopenharmony_ci    resultContent.Add("Barometer", barometer);
4157c804472Sopenharmony_ci    SetCommandResult("result", resultContent);
4167c804472Sopenharmony_ci    ILOG("Get barometer run finished");
4177c804472Sopenharmony_ci}
4187c804472Sopenharmony_ci
4197c804472Sopenharmony_civoid BarometerCommand::RunSet()
4207c804472Sopenharmony_ci{
4217c804472Sopenharmony_ci    uint32_t val = args["Barometer"].AsUInt();
4227c804472Sopenharmony_ci    SharedData<uint32_t>::SetData(SharedDataType::PRESSURE_VALUE, val);
4237c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
4247c804472Sopenharmony_ci    ILOG("Set barometer run finished, the value is: %d", val);
4257c804472Sopenharmony_ci}
4267c804472Sopenharmony_ci
4277c804472Sopenharmony_ciResolutionSwitchCommand::ResolutionSwitchCommand(CommandType commandType,
4287c804472Sopenharmony_ci                                                 const Json2::Value& arg,
4297c804472Sopenharmony_ci                                                 const LocalSocket& socket)
4307c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
4317c804472Sopenharmony_ci{
4327c804472Sopenharmony_ci}
4337c804472Sopenharmony_ci
4347c804472Sopenharmony_cibool ResolutionSwitchCommand::IsSetArgValid() const
4357c804472Sopenharmony_ci{
4367c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("originWidth") || !args.IsMember("originHeight") || !args.IsMember("width") ||
4377c804472Sopenharmony_ci        !args.IsMember("height") || !args.IsMember("screenDensity")) {
4387c804472Sopenharmony_ci        ELOG("Invalid param of arguments!");
4397c804472Sopenharmony_ci        return false;
4407c804472Sopenharmony_ci    }
4417c804472Sopenharmony_ci    if (!args["originWidth"].IsInt() || !args["originHeight"].IsInt() ||
4427c804472Sopenharmony_ci        !args["screenDensity"].IsInt() || !args["width"].IsInt() || !args["height"].IsInt()) {
4437c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
4447c804472Sopenharmony_ci        return false;
4457c804472Sopenharmony_ci    }
4467c804472Sopenharmony_ci    if (!IsIntValValid()) {
4477c804472Sopenharmony_ci        return false;
4487c804472Sopenharmony_ci    }
4497c804472Sopenharmony_ci    if (args.IsMember("reason")) {
4507c804472Sopenharmony_ci        if (!args["reason"].IsString()) {
4517c804472Sopenharmony_ci            return false;
4527c804472Sopenharmony_ci        }
4537c804472Sopenharmony_ci        std::string reason = args["reason"].AsString();
4547c804472Sopenharmony_ci        if (reason != "rotation" && reason != "resize" && reason != "undefined") {
4557c804472Sopenharmony_ci            ELOG("Invalid value of reason!");
4567c804472Sopenharmony_ci            return false;
4577c804472Sopenharmony_ci        }
4587c804472Sopenharmony_ci    }
4597c804472Sopenharmony_ci    return true;
4607c804472Sopenharmony_ci}
4617c804472Sopenharmony_ci
4627c804472Sopenharmony_cibool ResolutionSwitchCommand::IsIntValValid() const
4637c804472Sopenharmony_ci{
4647c804472Sopenharmony_ci    if (args["originWidth"].AsInt() < minWidth || args["originWidth"].AsInt() > maxWidth ||
4657c804472Sopenharmony_ci        args["originHeight"].AsInt() < minWidth || args["originHeight"].AsInt() > maxWidth ||
4667c804472Sopenharmony_ci        args["width"].AsInt() < minWidth || args["width"].AsInt() > maxWidth ||
4677c804472Sopenharmony_ci        args["height"].AsInt() < minWidth || args["height"].AsInt() > maxWidth) {
4687c804472Sopenharmony_ci        ELOG("width or height is out of range %d-%d", minWidth, maxWidth);
4697c804472Sopenharmony_ci        return false;
4707c804472Sopenharmony_ci    }
4717c804472Sopenharmony_ci    if (args["screenDensity"].AsInt() < minDpi || args["screenDensity"].AsInt() > maxDpi) {
4727c804472Sopenharmony_ci        ELOG("screenDensity is out of range %d-%d", minDpi, maxDpi);
4737c804472Sopenharmony_ci        return false;
4747c804472Sopenharmony_ci    }
4757c804472Sopenharmony_ci    return true;
4767c804472Sopenharmony_ci}
4777c804472Sopenharmony_ci
4787c804472Sopenharmony_civoid ResolutionSwitchCommand::RunSet()
4797c804472Sopenharmony_ci{
4807c804472Sopenharmony_ci    int32_t originWidth = args["originWidth"].AsInt();
4817c804472Sopenharmony_ci    int32_t originHeight = args["originHeight"].AsInt();
4827c804472Sopenharmony_ci    int32_t width = args["width"].AsInt();
4837c804472Sopenharmony_ci    int32_t height = args["height"].AsInt();
4847c804472Sopenharmony_ci    int32_t screenDensity = args["screenDensity"].AsInt();
4857c804472Sopenharmony_ci    std::string reason = "undefined";
4867c804472Sopenharmony_ci    if (args.IsMember("reason")) {
4877c804472Sopenharmony_ci        reason = args["reason"].AsString();
4887c804472Sopenharmony_ci    }
4897c804472Sopenharmony_ci    ResolutionParam param(originWidth, originHeight, width, height);
4907c804472Sopenharmony_ci    JsAppImpl::GetInstance().ResolutionChanged(param, screenDensity, reason);
4917c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
4927c804472Sopenharmony_ci    ILOG("ResolutionSwitch run finished.");
4937c804472Sopenharmony_ci}
4947c804472Sopenharmony_ci
4957c804472Sopenharmony_ciOrientationCommand::OrientationCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
4967c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
4977c804472Sopenharmony_ci{
4987c804472Sopenharmony_ci}
4997c804472Sopenharmony_ci
5007c804472Sopenharmony_cibool OrientationCommand::IsSetArgValid() const
5017c804472Sopenharmony_ci{
5027c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("Orientation") || !args["Orientation"].IsString()) {
5037c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
5047c804472Sopenharmony_ci        return false;
5057c804472Sopenharmony_ci    }
5067c804472Sopenharmony_ci    if (args["Orientation"].AsString() != "portrait" && args["Orientation"].AsString() != "landscape") {
5077c804472Sopenharmony_ci        ELOG("Orientation just support [portrait,landscape].");
5087c804472Sopenharmony_ci        return false;
5097c804472Sopenharmony_ci    }
5107c804472Sopenharmony_ci    return true;
5117c804472Sopenharmony_ci}
5127c804472Sopenharmony_ci
5137c804472Sopenharmony_civoid OrientationCommand::RunSet()
5147c804472Sopenharmony_ci{
5157c804472Sopenharmony_ci    std::string commandOrientation = args["Orientation"].AsString();
5167c804472Sopenharmony_ci    std::string currentOrientation = JsAppImpl::GetInstance().GetOrientation();
5177c804472Sopenharmony_ci    if (commandOrientation != currentOrientation) {
5187c804472Sopenharmony_ci        JsAppImpl::GetInstance().OrientationChanged(commandOrientation);
5197c804472Sopenharmony_ci    }
5207c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
5217c804472Sopenharmony_ci    ILOG("Set Orientation run finished, Orientation is: %s", args["Orientation"].AsString().c_str());
5227c804472Sopenharmony_ci}
5237c804472Sopenharmony_ci
5247c804472Sopenharmony_ciColorModeCommand::ColorModeCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
5257c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
5267c804472Sopenharmony_ci{
5277c804472Sopenharmony_ci}
5287c804472Sopenharmony_ci
5297c804472Sopenharmony_cibool ColorModeCommand::IsSetArgValid() const
5307c804472Sopenharmony_ci{
5317c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("ColorMode") || !args["ColorMode"].IsString()) {
5327c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
5337c804472Sopenharmony_ci        return false;
5347c804472Sopenharmony_ci    }
5357c804472Sopenharmony_ci
5367c804472Sopenharmony_ci    if (args["ColorMode"].AsString() != "light" && args["ColorMode"].AsString() != "dark") {
5377c804472Sopenharmony_ci        ELOG("ColorMode just support [light,dark]");
5387c804472Sopenharmony_ci        return false;
5397c804472Sopenharmony_ci    }
5407c804472Sopenharmony_ci    return true;
5417c804472Sopenharmony_ci}
5427c804472Sopenharmony_ci
5437c804472Sopenharmony_civoid ColorModeCommand::RunSet()
5447c804472Sopenharmony_ci{
5457c804472Sopenharmony_ci    std::string commandColorMode = args["ColorMode"].AsString();
5467c804472Sopenharmony_ci    std::string currentColorMode = JsAppImpl::GetInstance().GetColorMode();
5477c804472Sopenharmony_ci    if (commandColorMode != currentColorMode) {
5487c804472Sopenharmony_ci        JsAppImpl::GetInstance().SetArgsColorMode(args["ColorMode"].AsString());
5497c804472Sopenharmony_ci        JsAppImpl::GetInstance().ColorModeChanged(commandColorMode);
5507c804472Sopenharmony_ci    }
5517c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
5527c804472Sopenharmony_ci    ILOG("Set ColorMode run finished, ColorMode is: %s", args["ColorMode"].AsString().c_str());
5537c804472Sopenharmony_ci}
5547c804472Sopenharmony_ci
5557c804472Sopenharmony_ciFontSelectCommand::FontSelectCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
5567c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
5577c804472Sopenharmony_ci{
5587c804472Sopenharmony_ci}
5597c804472Sopenharmony_ci
5607c804472Sopenharmony_cibool FontSelectCommand::IsSetArgValid() const
5617c804472Sopenharmony_ci{
5627c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("FontSelect") || !args["FontSelect"].IsBool()) {
5637c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
5647c804472Sopenharmony_ci        return false;
5657c804472Sopenharmony_ci    }
5667c804472Sopenharmony_ci    return true;
5677c804472Sopenharmony_ci}
5687c804472Sopenharmony_ci
5697c804472Sopenharmony_civoid FontSelectCommand::RunSet()
5707c804472Sopenharmony_ci{
5717c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
5727c804472Sopenharmony_ci    ILOG("FontSelect finished, currentSelect is: %s", args["FontSelect"].AsBool() ? "true" : "false");
5737c804472Sopenharmony_ci}
5747c804472Sopenharmony_ci
5757c804472Sopenharmony_ciMemoryRefreshCommand::MemoryRefreshCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
5767c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
5777c804472Sopenharmony_ci{
5787c804472Sopenharmony_ci}
5797c804472Sopenharmony_ci
5807c804472Sopenharmony_cibool MemoryRefreshCommand::IsSetArgValid() const
5817c804472Sopenharmony_ci{
5827c804472Sopenharmony_ci    if (args.IsNull()) {
5837c804472Sopenharmony_ci        ELOG("Invalid MemoryRefresh of arguments!");
5847c804472Sopenharmony_ci        return false;
5857c804472Sopenharmony_ci    }
5867c804472Sopenharmony_ci    return true;
5877c804472Sopenharmony_ci}
5887c804472Sopenharmony_ci
5897c804472Sopenharmony_civoid MemoryRefreshCommand::RunSet()
5907c804472Sopenharmony_ci{
5917c804472Sopenharmony_ci    ILOG("MemoryRefreshCommand begin.");
5927c804472Sopenharmony_ci    bool ret = JsAppImpl::GetInstance().MemoryRefresh(args.ToStyledString());
5937c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(ret));
5947c804472Sopenharmony_ci    ILOG("MemoryRefresh finished.");
5957c804472Sopenharmony_ci}
5967c804472Sopenharmony_ci
5977c804472Sopenharmony_ciLoadDocumentCommand::LoadDocumentCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
5987c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
5997c804472Sopenharmony_ci{
6007c804472Sopenharmony_ci}
6017c804472Sopenharmony_ci
6027c804472Sopenharmony_cibool LoadDocumentCommand::IsSetArgValid() const
6037c804472Sopenharmony_ci{
6047c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("url") || !args.IsMember("className") || !args.IsMember("previewParam") ||
6057c804472Sopenharmony_ci        !args["url"].IsString() || !args["className"].IsString() || !args["previewParam"].IsObject()) {
6067c804472Sopenharmony_ci        return false;
6077c804472Sopenharmony_ci    }
6087c804472Sopenharmony_ci    Json2::Value previewParam = args["previewParam"];
6097c804472Sopenharmony_ci    if (!previewParam["width"].IsInt() || !previewParam["height"].IsInt() || !previewParam["dpi"].IsInt() ||
6107c804472Sopenharmony_ci        !previewParam["locale"].IsString() || !previewParam["colorMode"].IsString() ||
6117c804472Sopenharmony_ci        !previewParam["orientation"].IsString() || !previewParam["deviceType"].IsString()) {
6127c804472Sopenharmony_ci        return false;
6137c804472Sopenharmony_ci    }
6147c804472Sopenharmony_ci    if (!IsIntValValid(previewParam) || !IsStrValVailid(previewParam)) {
6157c804472Sopenharmony_ci        return false;
6167c804472Sopenharmony_ci    }
6177c804472Sopenharmony_ci    return true;
6187c804472Sopenharmony_ci}
6197c804472Sopenharmony_ci
6207c804472Sopenharmony_cibool LoadDocumentCommand::IsIntValValid(const Json2::Value& previewParam) const
6217c804472Sopenharmony_ci{
6227c804472Sopenharmony_ci    int width = previewParam["width"].AsInt();
6237c804472Sopenharmony_ci    int height = previewParam["height"].AsInt();
6247c804472Sopenharmony_ci    int dpi = previewParam["dpi"].AsInt();
6257c804472Sopenharmony_ci    if (width < minLoadDocWidth || width > maxLoadDocWidth || height < minLoadDocWidth ||
6267c804472Sopenharmony_ci        height > maxLoadDocWidth || dpi < minDpi || dpi > maxDpi) {
6277c804472Sopenharmony_ci        return false;
6287c804472Sopenharmony_ci    }
6297c804472Sopenharmony_ci    return true;
6307c804472Sopenharmony_ci}
6317c804472Sopenharmony_ci
6327c804472Sopenharmony_cibool LoadDocumentCommand::IsStrValVailid(const Json2::Value& previewParam) const
6337c804472Sopenharmony_ci{
6347c804472Sopenharmony_ci    std::string locale = previewParam["locale"].AsString();
6357c804472Sopenharmony_ci    bool isLiteDevice = JsApp::IsLiteDevice(CommandParser::GetInstance().GetDeviceType());
6367c804472Sopenharmony_ci    if (isLiteDevice) {
6377c804472Sopenharmony_ci        if (std::find(liteSupportedLanguages.begin(), liteSupportedLanguages.end(), locale) ==
6387c804472Sopenharmony_ci            liteSupportedLanguages.end()) {
6397c804472Sopenharmony_ci            return false;
6407c804472Sopenharmony_ci        }
6417c804472Sopenharmony_ci    } else {
6427c804472Sopenharmony_ci        if (std::find(richSupportedLanguages.begin(), richSupportedLanguages.end(), locale) ==
6437c804472Sopenharmony_ci            richSupportedLanguages.end()) {
6447c804472Sopenharmony_ci            return false;
6457c804472Sopenharmony_ci        }
6467c804472Sopenharmony_ci    }
6477c804472Sopenharmony_ci    if (previewParam["colorMode"].AsString() != "light" && previewParam["colorMode"].AsString() != "dark") {
6487c804472Sopenharmony_ci        return false;
6497c804472Sopenharmony_ci    }
6507c804472Sopenharmony_ci    if (previewParam["orientation"].AsString() != "portrait" &&
6517c804472Sopenharmony_ci        previewParam["orientation"].AsString() != "landscape") {
6527c804472Sopenharmony_ci        return false;
6537c804472Sopenharmony_ci    }
6547c804472Sopenharmony_ci    if (std::find(LoadDocDevs.begin(), LoadDocDevs.end(), previewParam["deviceType"].AsString()) ==
6557c804472Sopenharmony_ci        LoadDocDevs.end()) {
6567c804472Sopenharmony_ci        return false;
6577c804472Sopenharmony_ci    }
6587c804472Sopenharmony_ci    return true;
6597c804472Sopenharmony_ci}
6607c804472Sopenharmony_ci
6617c804472Sopenharmony_civoid LoadDocumentCommand::RunSet()
6627c804472Sopenharmony_ci{
6637c804472Sopenharmony_ci    VirtualScreenImpl::GetInstance().SetLoadDocFlag(VirtualScreen::LoadDocType::START);
6647c804472Sopenharmony_ci    ILOG("LoadDocumentCommand begin.");
6657c804472Sopenharmony_ci    std::string pageUrl = args["url"].AsString();
6667c804472Sopenharmony_ci    std::string className = args["className"].AsString();
6677c804472Sopenharmony_ci    VirtualScreenImpl::GetInstance().InitFlushEmptyTime();
6687c804472Sopenharmony_ci    JsAppImpl::GetInstance().LoadDocument(pageUrl, className, args["previewParam"]);
6697c804472Sopenharmony_ci    VirtualScreenImpl::GetInstance().SetLoadDocFlag(VirtualScreen::LoadDocType::FINISHED);
6707c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
6717c804472Sopenharmony_ci    ILOG("LoadDocumentCommand finished.");
6727c804472Sopenharmony_ci}
6737c804472Sopenharmony_ci
6747c804472Sopenharmony_ciReloadRuntimePageCommand::ReloadRuntimePageCommand(CommandType commandType,
6757c804472Sopenharmony_ci                                                   const Json2::Value& arg,
6767c804472Sopenharmony_ci                                                   const LocalSocket& socket)
6777c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
6787c804472Sopenharmony_ci{
6797c804472Sopenharmony_ci}
6807c804472Sopenharmony_ci
6817c804472Sopenharmony_cibool ReloadRuntimePageCommand::IsSetArgValid() const
6827c804472Sopenharmony_ci{
6837c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("ReloadRuntimePage") || !args["ReloadRuntimePage"].IsString()) {
6847c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
6857c804472Sopenharmony_ci        return false;
6867c804472Sopenharmony_ci    }
6877c804472Sopenharmony_ci    return true;
6887c804472Sopenharmony_ci}
6897c804472Sopenharmony_ci
6907c804472Sopenharmony_civoid ReloadRuntimePageCommand::RunSet()
6917c804472Sopenharmony_ci{
6927c804472Sopenharmony_ci    std::string currentPage = args["ReloadRuntimePage"].AsString();
6937c804472Sopenharmony_ci    JsAppImpl::GetInstance().ReloadRuntimePage(currentPage);
6947c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
6957c804472Sopenharmony_ci    ILOG("ReloadRuntimePage finished, currentPage is: %s", args["ReloadRuntimePage"].AsString().c_str());
6967c804472Sopenharmony_ci}
6977c804472Sopenharmony_ci
6987c804472Sopenharmony_ciCurrentRouterCommand::CurrentRouterCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
6997c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
7007c804472Sopenharmony_ci{
7017c804472Sopenharmony_ci}
7027c804472Sopenharmony_ci
7037c804472Sopenharmony_civoid CurrentRouterCommand::RunGet()
7047c804472Sopenharmony_ci{
7057c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateObject();
7067c804472Sopenharmony_ci    std::string currentRouter = VirtualScreenImpl::GetInstance().GetCurrentRouter();
7077c804472Sopenharmony_ci    resultContent.Add("CurrentRouter", currentRouter.c_str());
7087c804472Sopenharmony_ci    SetResultToManager("args", resultContent, "CurrentJsRouter");
7097c804472Sopenharmony_ci    ILOG("Get CurrentRouter run finished.");
7107c804472Sopenharmony_ci}
7117c804472Sopenharmony_ci
7127c804472Sopenharmony_ciLoadContentCommand::LoadContentCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
7137c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
7147c804472Sopenharmony_ci{
7157c804472Sopenharmony_ci}
7167c804472Sopenharmony_ci
7177c804472Sopenharmony_civoid LoadContentCommand::RunGet()
7187c804472Sopenharmony_ci{
7197c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateObject();
7207c804472Sopenharmony_ci    std::string currentRouter = VirtualScreenImpl::GetInstance().GetAbilityCurrentRouter();
7217c804472Sopenharmony_ci    resultContent.Add("AbilityCurrentRouter", currentRouter.c_str());
7227c804472Sopenharmony_ci    SetResultToManager("args", resultContent, "AbilityCurrentJsRouter");
7237c804472Sopenharmony_ci    ILOG("Get AbilityCurrentRouter run finished.");
7247c804472Sopenharmony_ci}
7257c804472Sopenharmony_ci
7267c804472Sopenharmony_ciLanguageCommand::LanguageCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
7277c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
7287c804472Sopenharmony_ci{
7297c804472Sopenharmony_ci}
7307c804472Sopenharmony_ci
7317c804472Sopenharmony_cibool LanguageCommand::IsSetArgValid() const
7327c804472Sopenharmony_ci{
7337c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("Language") || !args["Language"].IsString()) {
7347c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
7357c804472Sopenharmony_ci        return false;
7367c804472Sopenharmony_ci    }
7377c804472Sopenharmony_ci
7387c804472Sopenharmony_ci    CommandParser& cmdParser = CommandParser::GetInstance();
7397c804472Sopenharmony_ci    std::string deviceType = cmdParser.GetDeviceType();
7407c804472Sopenharmony_ci    bool isLiteDevice = JsApp::IsLiteDevice(deviceType);
7417c804472Sopenharmony_ci    if (isLiteDevice) {
7427c804472Sopenharmony_ci        if (std::find(liteSupportedLanguages.begin(), liteSupportedLanguages.end(), args["Language"].AsString()) ==
7437c804472Sopenharmony_ci            liteSupportedLanguages.end()) {
7447c804472Sopenharmony_ci            ELOG("Language not support liteDevice : %s", args["Language"].AsString().c_str());
7457c804472Sopenharmony_ci            return false;
7467c804472Sopenharmony_ci        }
7477c804472Sopenharmony_ci    } else {
7487c804472Sopenharmony_ci        if (std::find(richSupportedLanguages.begin(), richSupportedLanguages.end(), args["Language"].AsString()) ==
7497c804472Sopenharmony_ci            richSupportedLanguages.end()) {
7507c804472Sopenharmony_ci            ELOG("Language not support richDevice : %s", args["Language"].AsString().c_str());
7517c804472Sopenharmony_ci            return false;
7527c804472Sopenharmony_ci        }
7537c804472Sopenharmony_ci    }
7547c804472Sopenharmony_ci    return true;
7557c804472Sopenharmony_ci}
7567c804472Sopenharmony_ci
7577c804472Sopenharmony_civoid LanguageCommand::RunGet()
7587c804472Sopenharmony_ci{
7597c804472Sopenharmony_ci    std::string language = SharedData<std::string>::GetData(SharedDataType::LANGUAGE);
7607c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateObject();
7617c804472Sopenharmony_ci    resultContent.Add("Language", language.c_str());
7627c804472Sopenharmony_ci    SetCommandResult("result", resultContent);
7637c804472Sopenharmony_ci    ILOG("Get language run finished.");
7647c804472Sopenharmony_ci}
7657c804472Sopenharmony_ci
7667c804472Sopenharmony_civoid LanguageCommand::RunSet()
7677c804472Sopenharmony_ci{
7687c804472Sopenharmony_ci    std::string language(args["Language"].AsString());
7697c804472Sopenharmony_ci    SharedData<std::string>::SetData(SharedDataType::LANGUAGE, language);
7707c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
7717c804472Sopenharmony_ci    ILOG("Set language run finished, language is: %s", language.c_str());
7727c804472Sopenharmony_ci}
7737c804472Sopenharmony_ci
7747c804472Sopenharmony_ciSupportedLanguagesCommand::SupportedLanguagesCommand(CommandType commandType,
7757c804472Sopenharmony_ci                                                     const Json2::Value& arg,
7767c804472Sopenharmony_ci                                                     const LocalSocket& socket)
7777c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
7787c804472Sopenharmony_ci{
7797c804472Sopenharmony_ci}
7807c804472Sopenharmony_ci
7817c804472Sopenharmony_civoid SupportedLanguagesCommand::RunGet()
7827c804472Sopenharmony_ci{
7837c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateObject();
7847c804472Sopenharmony_ci    Json2::Value languageList = JsonReader::CreateArray();
7857c804472Sopenharmony_ci    std::string deviceType = CommandParser::GetInstance().GetDeviceType();
7867c804472Sopenharmony_ci    bool isLiteDevice = JsApp::IsLiteDevice(deviceType);
7877c804472Sopenharmony_ci    if (!deviceType.empty() && !isLiteDevice) {
7887c804472Sopenharmony_ci        for (auto iter = richSupportedLanguages.begin(); iter != richSupportedLanguages.end(); iter++) {
7897c804472Sopenharmony_ci            languageList.Add((*iter).c_str());
7907c804472Sopenharmony_ci        }
7917c804472Sopenharmony_ci    } else {
7927c804472Sopenharmony_ci        for (auto iter = liteSupportedLanguages.begin(); iter != liteSupportedLanguages.end(); iter++) {
7937c804472Sopenharmony_ci            languageList.Add((*iter).c_str());
7947c804472Sopenharmony_ci        }
7957c804472Sopenharmony_ci    }
7967c804472Sopenharmony_ci    resultContent.Add("SupportedLanguages", languageList);
7977c804472Sopenharmony_ci    SetCommandResult("result", resultContent);
7987c804472Sopenharmony_ci    ILOG("Get supportedLanguages run finished.");
7997c804472Sopenharmony_ci}
8007c804472Sopenharmony_ci
8017c804472Sopenharmony_ciLocationCommand::LocationCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
8027c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
8037c804472Sopenharmony_ci{
8047c804472Sopenharmony_ci}
8057c804472Sopenharmony_ci
8067c804472Sopenharmony_cibool LocationCommand::IsSetArgValid() const
8077c804472Sopenharmony_ci{
8087c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("latitude") || !args.IsMember("longitude")) {
8097c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
8107c804472Sopenharmony_ci        return false;
8117c804472Sopenharmony_ci    }
8127c804472Sopenharmony_ci    std::string latitude(args["latitude"].AsString());
8137c804472Sopenharmony_ci    std::string longitude(args["longitude"].AsString());
8147c804472Sopenharmony_ci    std::regex isDob("^([\\-]*[0-9]{1,}[\\.][0-9]*)$");
8157c804472Sopenharmony_ci    if (!regex_match(latitude, isDob) || !regex_match(longitude, isDob)) {
8167c804472Sopenharmony_ci        ELOG("Invalid arguments!");
8177c804472Sopenharmony_ci        return false;
8187c804472Sopenharmony_ci    }
8197c804472Sopenharmony_ci
8207c804472Sopenharmony_ci    if (!SharedData<double>::IsValid(SharedDataType::LATITUDE, atof(latitude.data()))) {
8217c804472Sopenharmony_ci        ELOG("LocationCommand invalid latitude value: %f", atof(latitude.data()));
8227c804472Sopenharmony_ci        return false;
8237c804472Sopenharmony_ci    }
8247c804472Sopenharmony_ci
8257c804472Sopenharmony_ci    if (!SharedData<double>::IsValid(SharedDataType::LONGITUDE, atof(longitude.data()))) {
8267c804472Sopenharmony_ci        ELOG("LocationCommand invalid longitude value: %f", atof(longitude.data()));
8277c804472Sopenharmony_ci        return false;
8287c804472Sopenharmony_ci    }
8297c804472Sopenharmony_ci    return true;
8307c804472Sopenharmony_ci}
8317c804472Sopenharmony_ci
8327c804472Sopenharmony_civoid LocationCommand::RunGet()
8337c804472Sopenharmony_ci{
8347c804472Sopenharmony_ci    double longitude = SharedData<double>::GetData(SharedDataType::LONGITUDE);
8357c804472Sopenharmony_ci    double latitude = SharedData<double>::GetData(SharedDataType::LATITUDE);
8367c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateObject();
8377c804472Sopenharmony_ci    resultContent.Add("latitude", latitude);
8387c804472Sopenharmony_ci    resultContent.Add("longitude", longitude);
8397c804472Sopenharmony_ci    SetCommandResult("result", resultContent);
8407c804472Sopenharmony_ci    ILOG("Get location run finished");
8417c804472Sopenharmony_ci}
8427c804472Sopenharmony_ci
8437c804472Sopenharmony_civoid LocationCommand::RunSet()
8447c804472Sopenharmony_ci{
8457c804472Sopenharmony_ci    std::string latitude(args["latitude"].AsString());
8467c804472Sopenharmony_ci    std::string longitude(args["longitude"].AsString());
8477c804472Sopenharmony_ci    SharedData<double>::SetData(SharedDataType::LONGITUDE, atof(longitude.data()));
8487c804472Sopenharmony_ci    SharedData<double>::SetData(SharedDataType::LATITUDE, atof(latitude.data()));
8497c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateBool(true);
8507c804472Sopenharmony_ci    SetCommandResult("result", resultContent);
8517c804472Sopenharmony_ci    ILOG("Set location run finished, latitude: %s,longitude: %s", latitude.c_str(), longitude.c_str());
8527c804472Sopenharmony_ci}
8537c804472Sopenharmony_ci
8547c804472Sopenharmony_ciDistributedCommunicationsCommand::DistributedCommunicationsCommand(CommandType commandType,
8557c804472Sopenharmony_ci                                                                   const Json2::Value& arg,
8567c804472Sopenharmony_ci                                                                   const LocalSocket& socket)
8577c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
8587c804472Sopenharmony_ci{
8597c804472Sopenharmony_ci}
8607c804472Sopenharmony_ci
8617c804472Sopenharmony_civoid DistributedCommunicationsCommand::RunAction()
8627c804472Sopenharmony_ci{
8637c804472Sopenharmony_ci    MessageInfo info;
8647c804472Sopenharmony_ci    info.deviceID = args["DeviceId"].AsString();
8657c804472Sopenharmony_ci    info.bundleName = args["bundleName"].AsString();
8667c804472Sopenharmony_ci    info.abilityName = args["abilityName"].AsString();
8677c804472Sopenharmony_ci    info.message = args["message"].AsString();
8687c804472Sopenharmony_ci    VirtualMessageImpl::GetInstance().SendVirtualMessage(info);
8697c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateBool(true);
8707c804472Sopenharmony_ci    SetCommandResult("result", resultContent);
8717c804472Sopenharmony_ci    ILOG("Send distributedCommunications run finished");
8727c804472Sopenharmony_ci}
8737c804472Sopenharmony_ci
8747c804472Sopenharmony_cibool DistributedCommunicationsCommand::IsActionArgValid() const
8757c804472Sopenharmony_ci{
8767c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("DeviceId") || !args.IsMember("bundleName") || !args.IsMember("abilityName") ||
8777c804472Sopenharmony_ci        !args.IsMember("message")) {
8787c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
8797c804472Sopenharmony_ci        return false;
8807c804472Sopenharmony_ci    }
8817c804472Sopenharmony_ci    if (args["DeviceId"].AsString().empty() || args["bundleName"].AsString().empty() ||
8827c804472Sopenharmony_ci        args["abilityName"].AsString().empty() || args["message"].AsString().empty()) {
8837c804472Sopenharmony_ci        ELOG("Invalid arguments!");
8847c804472Sopenharmony_ci        return false;
8857c804472Sopenharmony_ci    }
8867c804472Sopenharmony_ci    return true;
8877c804472Sopenharmony_ci}
8887c804472Sopenharmony_ci
8897c804472Sopenharmony_cistd::vector<char> DistributedCommunicationsCommand::StringToCharVector(std::string str) const
8907c804472Sopenharmony_ci{
8917c804472Sopenharmony_ci    std::vector<char> vec(str.begin(), str.end());
8927c804472Sopenharmony_ci    vec.push_back('\0');
8937c804472Sopenharmony_ci    return vec;
8947c804472Sopenharmony_ci}
8957c804472Sopenharmony_ci
8967c804472Sopenharmony_ciKeepScreenOnStateCommand::KeepScreenOnStateCommand(CommandType commandType,
8977c804472Sopenharmony_ci                                                   const Json2::Value& arg,
8987c804472Sopenharmony_ci                                                   const LocalSocket& socket)
8997c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
9007c804472Sopenharmony_ci{
9017c804472Sopenharmony_ci}
9027c804472Sopenharmony_ci
9037c804472Sopenharmony_civoid KeepScreenOnStateCommand::RunGet()
9047c804472Sopenharmony_ci{
9057c804472Sopenharmony_ci    Json2::Value result = JsonReader::CreateObject();
9067c804472Sopenharmony_ci    result.Add("KeepScreenOnState", SharedData<bool>::GetData(SharedDataType::KEEP_SCREEN_ON));
9077c804472Sopenharmony_ci    SetCommandResult("result", result);
9087c804472Sopenharmony_ci    ILOG("Get keepScreenOnState run finished");
9097c804472Sopenharmony_ci}
9107c804472Sopenharmony_ci
9117c804472Sopenharmony_civoid KeepScreenOnStateCommand::RunSet()
9127c804472Sopenharmony_ci{
9137c804472Sopenharmony_ci    SharedData<bool>::SetData(SharedDataType::KEEP_SCREEN_ON, args["KeepScreenOnState"].AsBool());
9147c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
9157c804472Sopenharmony_ci    ILOG("Set keepScreenOnState run finished, the value is: %s",
9167c804472Sopenharmony_ci        args["KeepScreenOnState"].AsBool() ? "true" : "false");
9177c804472Sopenharmony_ci}
9187c804472Sopenharmony_ci
9197c804472Sopenharmony_cibool KeepScreenOnStateCommand::IsSetArgValid() const
9207c804472Sopenharmony_ci{
9217c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("KeepScreenOnState")) {
9227c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
9237c804472Sopenharmony_ci        return false;
9247c804472Sopenharmony_ci    }
9257c804472Sopenharmony_ci    if (!args["KeepScreenOnState"].IsBool()) {
9267c804472Sopenharmony_ci        ELOG("arg KeepScreenOnState id not bool");
9277c804472Sopenharmony_ci        return false;
9287c804472Sopenharmony_ci    }
9297c804472Sopenharmony_ci    return true;
9307c804472Sopenharmony_ci}
9317c804472Sopenharmony_ci
9327c804472Sopenharmony_ciWearingStateCommand::WearingStateCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
9337c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
9347c804472Sopenharmony_ci{
9357c804472Sopenharmony_ci}
9367c804472Sopenharmony_ci
9377c804472Sopenharmony_civoid WearingStateCommand::RunGet()
9387c804472Sopenharmony_ci{
9397c804472Sopenharmony_ci    Json2::Value result = JsonReader::CreateObject();
9407c804472Sopenharmony_ci    result.Add("WearingState", SharedData<bool>::GetData(SharedDataType::WEARING_STATE));
9417c804472Sopenharmony_ci    SetCommandResult("result", result);
9427c804472Sopenharmony_ci    ILOG("Get wearingState run finished");
9437c804472Sopenharmony_ci}
9447c804472Sopenharmony_ci
9457c804472Sopenharmony_civoid WearingStateCommand::RunSet()
9467c804472Sopenharmony_ci{
9477c804472Sopenharmony_ci    SharedData<bool>::SetData(SharedDataType::WEARING_STATE, args["WearingState"].AsBool());
9487c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
9497c804472Sopenharmony_ci    ILOG("Set wearingState run finished, the value is: %s", args["WearingState"].AsBool() ? "true" : "false");
9507c804472Sopenharmony_ci}
9517c804472Sopenharmony_ci
9527c804472Sopenharmony_cibool WearingStateCommand::IsSetArgValid() const
9537c804472Sopenharmony_ci{
9547c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("WearingState")) {
9557c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
9567c804472Sopenharmony_ci        return false;
9577c804472Sopenharmony_ci    }
9587c804472Sopenharmony_ci    if (!args["WearingState"].IsBool()) {
9597c804472Sopenharmony_ci        ILOG("arg WearingState is not bool");
9607c804472Sopenharmony_ci        return false;
9617c804472Sopenharmony_ci    }
9627c804472Sopenharmony_ci    return true;
9637c804472Sopenharmony_ci}
9647c804472Sopenharmony_ci
9657c804472Sopenharmony_ciBrightnessModeCommand::BrightnessModeCommand(CommandType commandType, const Json2::Value& arg,
9667c804472Sopenharmony_ci    const LocalSocket& socket) : CommandLine(commandType, arg, socket)
9677c804472Sopenharmony_ci{
9687c804472Sopenharmony_ci}
9697c804472Sopenharmony_ci
9707c804472Sopenharmony_civoid BrightnessModeCommand::RunGet()
9717c804472Sopenharmony_ci{
9727c804472Sopenharmony_ci    Json2::Value result = JsonReader::CreateObject();
9737c804472Sopenharmony_ci    result.Add("BrightnessMode", SharedData<uint8_t>::GetData(SharedDataType::BRIGHTNESS_MODE));
9747c804472Sopenharmony_ci    SetCommandResult("result", result);
9757c804472Sopenharmony_ci    ILOG("Get brightnessMode run finished");
9767c804472Sopenharmony_ci}
9777c804472Sopenharmony_ci
9787c804472Sopenharmony_civoid BrightnessModeCommand::RunSet()
9797c804472Sopenharmony_ci{
9807c804472Sopenharmony_ci    SharedData<uint8_t>::SetData(SharedDataType::BRIGHTNESS_MODE,
9817c804472Sopenharmony_ci                                 static_cast<uint8_t>(args["BrightnessMode"].AsInt()));
9827c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
9837c804472Sopenharmony_ci    ILOG("Set brightnessMode run finished, the value is: %d", args["BrightnessMode"].AsInt());
9847c804472Sopenharmony_ci}
9857c804472Sopenharmony_ci
9867c804472Sopenharmony_cibool BrightnessModeCommand::IsSetArgValid() const
9877c804472Sopenharmony_ci{
9887c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("BrightnessMode")) {
9897c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
9907c804472Sopenharmony_ci        return false;
9917c804472Sopenharmony_ci    }
9927c804472Sopenharmony_ci    if (!args["BrightnessMode"].IsInt()) {
9937c804472Sopenharmony_ci        ELOG("BrightnessMode is not int");
9947c804472Sopenharmony_ci        return false;
9957c804472Sopenharmony_ci    }
9967c804472Sopenharmony_ci    uint8_t temp = static_cast<uint8_t>(args["BrightnessMode"].AsInt());
9977c804472Sopenharmony_ci    if (!SharedData<uint8_t>::IsValid(SharedDataType::BRIGHTNESS_MODE, temp)) {
9987c804472Sopenharmony_ci        ELOG("BrightnessModeCommand invalid value: %d", temp);
9997c804472Sopenharmony_ci        return false;
10007c804472Sopenharmony_ci    }
10017c804472Sopenharmony_ci    return true;
10027c804472Sopenharmony_ci}
10037c804472Sopenharmony_ci
10047c804472Sopenharmony_ciChargeModeCommand::ChargeModeCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
10057c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
10067c804472Sopenharmony_ci{
10077c804472Sopenharmony_ci}
10087c804472Sopenharmony_ci
10097c804472Sopenharmony_civoid ChargeModeCommand::RunGet()
10107c804472Sopenharmony_ci{
10117c804472Sopenharmony_ci    Json2::Value result = JsonReader::CreateObject();
10127c804472Sopenharmony_ci    result.Add("ChargeMode", SharedData<uint8_t>::GetData(SharedDataType::BATTERY_STATUS));
10137c804472Sopenharmony_ci    SetCommandResult("result", result);
10147c804472Sopenharmony_ci    ILOG("Get chargeMode run finished");
10157c804472Sopenharmony_ci}
10167c804472Sopenharmony_ci
10177c804472Sopenharmony_civoid ChargeModeCommand::RunSet()
10187c804472Sopenharmony_ci{
10197c804472Sopenharmony_ci    SharedData<uint8_t>::SetData(SharedDataType::BATTERY_STATUS,
10207c804472Sopenharmony_ci                                 static_cast<uint8_t>(args["ChargeMode"].AsInt()));
10217c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
10227c804472Sopenharmony_ci    ILOG("Set chargeMode run finished, the value is: %d", args["ChargeMode"].AsInt());
10237c804472Sopenharmony_ci}
10247c804472Sopenharmony_ci
10257c804472Sopenharmony_cibool ChargeModeCommand::IsSetArgValid() const
10267c804472Sopenharmony_ci{
10277c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("ChargeMode")) {
10287c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
10297c804472Sopenharmony_ci        return false;
10307c804472Sopenharmony_ci    }
10317c804472Sopenharmony_ci    if (!args["ChargeMode"].IsInt()) {
10327c804472Sopenharmony_ci        ELOG("ChargeMode is not int");
10337c804472Sopenharmony_ci        return false;
10347c804472Sopenharmony_ci    }
10357c804472Sopenharmony_ci    uint8_t temp = static_cast<uint8_t>(args["ChargeMode"].AsInt());
10367c804472Sopenharmony_ci    if (!SharedData<uint8_t>::IsValid(SharedDataType::BATTERY_STATUS, temp)) {
10377c804472Sopenharmony_ci        ELOG("ChargeModeCommand invalid value: %d", temp);
10387c804472Sopenharmony_ci        return false;
10397c804472Sopenharmony_ci    }
10407c804472Sopenharmony_ci    return true;
10417c804472Sopenharmony_ci}
10427c804472Sopenharmony_ci
10437c804472Sopenharmony_ciBrightnessCommand::BrightnessCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
10447c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
10457c804472Sopenharmony_ci{
10467c804472Sopenharmony_ci}
10477c804472Sopenharmony_ci
10487c804472Sopenharmony_civoid BrightnessCommand::RunGet()
10497c804472Sopenharmony_ci{
10507c804472Sopenharmony_ci    Json2::Value result = JsonReader::CreateObject();
10517c804472Sopenharmony_ci    result.Add("Brightness", SharedData<uint8_t>::GetData(SharedDataType::BRIGHTNESS_VALUE));
10527c804472Sopenharmony_ci    SetCommandResult("result", result);
10537c804472Sopenharmony_ci    ILOG("Get brightness run finished");
10547c804472Sopenharmony_ci}
10557c804472Sopenharmony_ci
10567c804472Sopenharmony_civoid BrightnessCommand::RunSet()
10577c804472Sopenharmony_ci{
10587c804472Sopenharmony_ci    SharedData<uint8_t>::SetData(SharedDataType::BRIGHTNESS_VALUE,
10597c804472Sopenharmony_ci                                 static_cast<uint8_t>(args["Brightness"].AsInt()));
10607c804472Sopenharmony_ci    Json2::Value result = JsonReader::CreateBool(true);
10617c804472Sopenharmony_ci    SetCommandResult("result", result);
10627c804472Sopenharmony_ci    ILOG("Set brightness run finished, the value is: %d", args["Brightness"].AsInt());
10637c804472Sopenharmony_ci}
10647c804472Sopenharmony_ci
10657c804472Sopenharmony_cibool BrightnessCommand::IsSetArgValid() const
10667c804472Sopenharmony_ci{
10677c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("Brightness")) {
10687c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
10697c804472Sopenharmony_ci        return false;
10707c804472Sopenharmony_ci    }
10717c804472Sopenharmony_ci    if (!args["Brightness"].IsInt()) {
10727c804472Sopenharmony_ci        ELOG("Brightness is not int");
10737c804472Sopenharmony_ci        return false;
10747c804472Sopenharmony_ci    }
10757c804472Sopenharmony_ci    uint8_t temp = static_cast<uint8_t>(args["Brightness"].AsInt());
10767c804472Sopenharmony_ci    if (!SharedData<uint8_t>::IsValid(SharedDataType::BRIGHTNESS_VALUE, temp)) {
10777c804472Sopenharmony_ci        ELOG("BrightnessCommand invalid value: ", temp);
10787c804472Sopenharmony_ci        return false;
10797c804472Sopenharmony_ci    }
10807c804472Sopenharmony_ci    return true;
10817c804472Sopenharmony_ci}
10827c804472Sopenharmony_ci
10837c804472Sopenharmony_ciHeartRateCommand::HeartRateCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
10847c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
10857c804472Sopenharmony_ci{
10867c804472Sopenharmony_ci}
10877c804472Sopenharmony_ci
10887c804472Sopenharmony_civoid HeartRateCommand::RunGet()
10897c804472Sopenharmony_ci{
10907c804472Sopenharmony_ci    Json2::Value result = JsonReader::CreateObject();
10917c804472Sopenharmony_ci    result.Add("HeartRate", SharedData<uint8_t>::GetData(SharedDataType::HEARTBEAT_VALUE));
10927c804472Sopenharmony_ci    SetCommandResult("result", result);
10937c804472Sopenharmony_ci    ILOG("Get heartRate run finished");
10947c804472Sopenharmony_ci}
10957c804472Sopenharmony_ci
10967c804472Sopenharmony_civoid HeartRateCommand::RunSet()
10977c804472Sopenharmony_ci{
10987c804472Sopenharmony_ci    SharedData<uint8_t>::SetData(SharedDataType::HEARTBEAT_VALUE,
10997c804472Sopenharmony_ci                                 static_cast<uint8_t>(args["HeartRate"].AsInt()));
11007c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
11017c804472Sopenharmony_ci    ILOG("Set heartRate run finished, the value is: %d", args["HeartRate"].AsInt());
11027c804472Sopenharmony_ci}
11037c804472Sopenharmony_ci
11047c804472Sopenharmony_cibool HeartRateCommand::IsSetArgValid() const
11057c804472Sopenharmony_ci{
11067c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("HeartRate")) {
11077c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
11087c804472Sopenharmony_ci        return false;
11097c804472Sopenharmony_ci    }
11107c804472Sopenharmony_ci    if (!args["HeartRate"].IsInt()) {
11117c804472Sopenharmony_ci        ELOG("HeartRate is not int");
11127c804472Sopenharmony_ci        return false;
11137c804472Sopenharmony_ci    }
11147c804472Sopenharmony_ci    if (args["HeartRate"].AsInt() > UINT8_MAX) {
11157c804472Sopenharmony_ci        ELOG("Invalid arguments!");
11167c804472Sopenharmony_ci        return false;
11177c804472Sopenharmony_ci    }
11187c804472Sopenharmony_ci    uint8_t temp = static_cast<uint8_t>(args["HeartRate"].AsInt());
11197c804472Sopenharmony_ci    if (!SharedData<uint8_t>::IsValid(SharedDataType::HEARTBEAT_VALUE, temp)) {
11207c804472Sopenharmony_ci        ELOG("HeartRateCommand invalid value: %d", temp);
11217c804472Sopenharmony_ci        return false;
11227c804472Sopenharmony_ci    }
11237c804472Sopenharmony_ci    return true;
11247c804472Sopenharmony_ci}
11257c804472Sopenharmony_ci
11267c804472Sopenharmony_ciStepCountCommand::StepCountCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
11277c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
11287c804472Sopenharmony_ci{
11297c804472Sopenharmony_ci}
11307c804472Sopenharmony_ci
11317c804472Sopenharmony_civoid StepCountCommand::RunGet()
11327c804472Sopenharmony_ci{
11337c804472Sopenharmony_ci    Json2::Value result = JsonReader::CreateObject();
11347c804472Sopenharmony_ci    result.Add("StepCount", SharedData<uint32_t>::GetData(SharedDataType::SUMSTEP_VALUE));
11357c804472Sopenharmony_ci    SetCommandResult("result", result);
11367c804472Sopenharmony_ci    ILOG("Get stepCount run finished");
11377c804472Sopenharmony_ci}
11387c804472Sopenharmony_ci
11397c804472Sopenharmony_civoid StepCountCommand::RunSet()
11407c804472Sopenharmony_ci{
11417c804472Sopenharmony_ci    SharedData<uint32_t>::SetData(SharedDataType::SUMSTEP_VALUE,
11427c804472Sopenharmony_ci                                  static_cast<uint32_t>(args["StepCount"].AsInt()));
11437c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
11447c804472Sopenharmony_ci    ILOG("Set stepCount run finished, the value is: %d", args["StepCount"].AsInt());
11457c804472Sopenharmony_ci}
11467c804472Sopenharmony_ci
11477c804472Sopenharmony_cibool StepCountCommand::IsSetArgValid() const
11487c804472Sopenharmony_ci{
11497c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("StepCount")) {
11507c804472Sopenharmony_ci        ELOG("Invalid number of arguments!");
11517c804472Sopenharmony_ci        return false;
11527c804472Sopenharmony_ci    }
11537c804472Sopenharmony_ci    if (!args["StepCount"].IsInt()) {
11547c804472Sopenharmony_ci        ELOG("StepCount is not int");
11557c804472Sopenharmony_ci        return false;
11567c804472Sopenharmony_ci    }
11577c804472Sopenharmony_ci
11587c804472Sopenharmony_ci    uint32_t temp = args["StepCount"].AsUInt();
11597c804472Sopenharmony_ci    if (!SharedData<uint32_t>::IsValid(SharedDataType::SUMSTEP_VALUE, temp)) {
11607c804472Sopenharmony_ci        ELOG("StepCountCommand invalid value: %d", temp);
11617c804472Sopenharmony_ci        return false;
11627c804472Sopenharmony_ci    }
11637c804472Sopenharmony_ci    return true;
11647c804472Sopenharmony_ci}
11657c804472Sopenharmony_ci
11667c804472Sopenharmony_ciInspectorJSONTree::InspectorJSONTree(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
11677c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
11687c804472Sopenharmony_ci{
11697c804472Sopenharmony_ci}
11707c804472Sopenharmony_ci
11717c804472Sopenharmony_civoid InspectorJSONTree::RunAction()
11727c804472Sopenharmony_ci{
11737c804472Sopenharmony_ci    ILOG("GetJsonTree run!");
11747c804472Sopenharmony_ci    std::string str = JsAppImpl::GetInstance().GetJSONTree();
11757c804472Sopenharmony_ci    if (str == "null") {
11767c804472Sopenharmony_ci        str = "{\"children\":\"empty json tree\"}";
11777c804472Sopenharmony_ci    }
11787c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateString(str));
11797c804472Sopenharmony_ci    ILOG("SendJsonTree end!");
11807c804472Sopenharmony_ci}
11817c804472Sopenharmony_ci
11827c804472Sopenharmony_ciInspectorDefault::InspectorDefault(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
11837c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
11847c804472Sopenharmony_ci{
11857c804472Sopenharmony_ci}
11867c804472Sopenharmony_ci
11877c804472Sopenharmony_civoid InspectorDefault::RunAction()
11887c804472Sopenharmony_ci{
11897c804472Sopenharmony_ci    ILOG("GetDefaultJsonTree run!");
11907c804472Sopenharmony_ci    std::string str = JsAppImpl::GetInstance().GetDefaultJSONTree();
11917c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateString(str));
11927c804472Sopenharmony_ci    ILOG("SendDefaultJsonTree end!");
11937c804472Sopenharmony_ci}
11947c804472Sopenharmony_ci
11957c804472Sopenharmony_ciExitCommand::ExitCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
11967c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
11977c804472Sopenharmony_ci{
11987c804472Sopenharmony_ci}
11997c804472Sopenharmony_ci
12007c804472Sopenharmony_civoid ExitCommand::RunAction()
12017c804472Sopenharmony_ci{
12027c804472Sopenharmony_ci    ILOG("ExitCommand run.");
12037c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
12047c804472Sopenharmony_ci    SendResult();
12057c804472Sopenharmony_ci    Interrupter::Interrupt();
12067c804472Sopenharmony_ci    ILOG("Ready to exit");
12077c804472Sopenharmony_ci}
12087c804472Sopenharmony_ci
12097c804472Sopenharmony_ciDeviceTypeCommand::DeviceTypeCommand(CommandLine::CommandType commandType,
12107c804472Sopenharmony_ci                                     const Json2::Value& arg,
12117c804472Sopenharmony_ci                                     const LocalSocket& socket)
12127c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
12137c804472Sopenharmony_ci{
12147c804472Sopenharmony_ci}
12157c804472Sopenharmony_ci
12167c804472Sopenharmony_civoid DeviceTypeCommand::RunSet() {}
12177c804472Sopenharmony_ci
12187c804472Sopenharmony_ciResolutionCommand::ResolutionCommand(CommandLine::CommandType commandType,
12197c804472Sopenharmony_ci                                     const Json2::Value& arg,
12207c804472Sopenharmony_ci                                     const LocalSocket& socket)
12217c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
12227c804472Sopenharmony_ci{
12237c804472Sopenharmony_ci}
12247c804472Sopenharmony_ci
12257c804472Sopenharmony_civoid ResolutionCommand::RunSet() {}
12267c804472Sopenharmony_ci
12277c804472Sopenharmony_ciBackClickedCommand::BackClickedCommand(CommandLine::CommandType commandType,
12287c804472Sopenharmony_ci                                       const Json2::Value& arg,
12297c804472Sopenharmony_ci                                       const LocalSocket& socket)
12307c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
12317c804472Sopenharmony_ci{
12327c804472Sopenharmony_ci}
12337c804472Sopenharmony_ci
12347c804472Sopenharmony_civoid BackClickedCommand::RunAction()
12357c804472Sopenharmony_ci{
12367c804472Sopenharmony_ci    MouseInputImpl::GetInstance().DispatchOsBackEvent();
12377c804472Sopenharmony_ci    ILOG("BackClickCommand run");
12387c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
12397c804472Sopenharmony_ci    ILOG("BackClickCommand end");
12407c804472Sopenharmony_ci}
12417c804472Sopenharmony_ci
12427c804472Sopenharmony_ciRestartCommand::RestartCommand(CommandLine::CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
12437c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
12447c804472Sopenharmony_ci{
12457c804472Sopenharmony_ci}
12467c804472Sopenharmony_ci
12477c804472Sopenharmony_civoid RestartCommand::RunAction()
12487c804472Sopenharmony_ci{
12497c804472Sopenharmony_ci    ILOG("RestartCommand start");
12507c804472Sopenharmony_ci    JsAppImpl::GetInstance().Restart();
12517c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
12527c804472Sopenharmony_ci    ILOG("RestartCommand end");
12537c804472Sopenharmony_ci}
12547c804472Sopenharmony_ci
12557c804472Sopenharmony_ciFastPreviewMsgCommand::FastPreviewMsgCommand(CommandType commandType, const Json2::Value& arg,
12567c804472Sopenharmony_ci    const LocalSocket& socket) : CommandLine(commandType, arg, socket)
12577c804472Sopenharmony_ci{
12587c804472Sopenharmony_ci}
12597c804472Sopenharmony_ci
12607c804472Sopenharmony_civoid FastPreviewMsgCommand::RunGet()
12617c804472Sopenharmony_ci{
12627c804472Sopenharmony_ci    Json2::Value resultContent = JsonReader::CreateObject();
12637c804472Sopenharmony_ci    std::string fastPreviewMsg = VirtualScreenImpl::GetInstance().GetFastPreviewMsg();
12647c804472Sopenharmony_ci    resultContent.Add("FastPreviewMsg", fastPreviewMsg.c_str());
12657c804472Sopenharmony_ci    SetResultToManager("args", resultContent, "MemoryRefresh");
12667c804472Sopenharmony_ci    ILOG("Get FastPreviewMsgCommand run finished.");
12677c804472Sopenharmony_ci}
12687c804472Sopenharmony_ci
12697c804472Sopenharmony_ciDropFrameCommand::DropFrameCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
12707c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
12717c804472Sopenharmony_ci{
12727c804472Sopenharmony_ci}
12737c804472Sopenharmony_ci
12747c804472Sopenharmony_cibool DropFrameCommand::IsSetArgValid() const
12757c804472Sopenharmony_ci{
12767c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("frequency") || !args["frequency"].IsInt()) {
12777c804472Sopenharmony_ci        ELOG("Invalid DropFrame of arguments!");
12787c804472Sopenharmony_ci        return false;
12797c804472Sopenharmony_ci    }
12807c804472Sopenharmony_ci    if (args["frequency"].AsInt() < 0) {
12817c804472Sopenharmony_ci        ELOG("DropFrame param frequency must greater than or equal to 0");
12827c804472Sopenharmony_ci        return false;
12837c804472Sopenharmony_ci    }
12847c804472Sopenharmony_ci    return true;
12857c804472Sopenharmony_ci}
12867c804472Sopenharmony_ci
12877c804472Sopenharmony_civoid DropFrameCommand::RunSet()
12887c804472Sopenharmony_ci{
12897c804472Sopenharmony_ci    ILOG("Set DropFrame frequency start.");
12907c804472Sopenharmony_ci    int frequency = args["frequency"].AsInt();
12917c804472Sopenharmony_ci    VirtualScreenImpl::GetInstance().SetDropFrameFrequency(frequency);
12927c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
12937c804472Sopenharmony_ci    ILOG("Set DropFrame frequency: %dms.", frequency);
12947c804472Sopenharmony_ci}
12957c804472Sopenharmony_ci
12967c804472Sopenharmony_cibool KeyPressCommand::IsActionArgValid() const
12977c804472Sopenharmony_ci{
12987c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("isInputMethod") || !args["isInputMethod"].IsBool()) {
12997c804472Sopenharmony_ci        ELOG("Param isInputMethod's value is invalid.");
13007c804472Sopenharmony_ci        return false;
13017c804472Sopenharmony_ci    }
13027c804472Sopenharmony_ci    bool isInputMethod = args["isInputMethod"].AsBool();
13037c804472Sopenharmony_ci    if (isInputMethod) {
13047c804472Sopenharmony_ci        return IsImeArgsValid();
13057c804472Sopenharmony_ci    } else {
13067c804472Sopenharmony_ci        return IsKeyArgsValid();
13077c804472Sopenharmony_ci    }
13087c804472Sopenharmony_ci}
13097c804472Sopenharmony_ci
13107c804472Sopenharmony_cibool KeyPressCommand::IsImeArgsValid() const
13117c804472Sopenharmony_ci{
13127c804472Sopenharmony_ci    if (!args.IsMember("codePoint") || !args["codePoint"].IsInt()) {
13137c804472Sopenharmony_ci        ELOG("Param codePoint's value is invalid.");
13147c804472Sopenharmony_ci        return false;
13157c804472Sopenharmony_ci    }
13167c804472Sopenharmony_ci    return true;
13177c804472Sopenharmony_ci}
13187c804472Sopenharmony_ci
13197c804472Sopenharmony_cibool KeyPressCommand::IsKeyArgsValid() const
13207c804472Sopenharmony_ci{
13217c804472Sopenharmony_ci    if (!args.IsMember("keyCode") || !args["keyCode"].IsInt() || !args["keyAction"].IsInt() ||
13227c804472Sopenharmony_ci        !args.IsMember("keyAction") || !args["keyAction"].IsInt() ||
13237c804472Sopenharmony_ci        !args.IsMember("pressedCodes") || !args["pressedCodes"].IsArray() ||
13247c804472Sopenharmony_ci        args["pressedCodes"].GetArraySize() < 1 || (args.IsMember("keyString") && !args["keyString"].IsString())) {
13257c804472Sopenharmony_ci        ELOG("Param keyEvent's value is invalid.");
13267c804472Sopenharmony_ci        return false;
13277c804472Sopenharmony_ci    }
13287c804472Sopenharmony_ci    if (!args.IsMember("keyString")) {
13297c804472Sopenharmony_ci        ILOG("Param keyString is lost, it will be empty string.");
13307c804472Sopenharmony_ci    }
13317c804472Sopenharmony_ci    if (args["keyAction"].AsInt() < minActionVal || args["keyAction"].AsInt() > maxActionVal) {
13327c804472Sopenharmony_ci        ELOG("Param keyAction's value is invalid,value range %d-%d.", minActionVal, maxActionVal);
13337c804472Sopenharmony_ci        return false;
13347c804472Sopenharmony_ci    }
13357c804472Sopenharmony_ci    int keyCode = args["keyCode"].AsInt();
13367c804472Sopenharmony_ci    if (keyCode > maxKeyVal || keyCode < minKeyVal) {
13377c804472Sopenharmony_ci        ELOG("Param pressedCode value is invalid,value range %d-%d.", minKeyVal, maxKeyVal);
13387c804472Sopenharmony_ci        return false;
13397c804472Sopenharmony_ci    }
13407c804472Sopenharmony_ci    Json2::Value arrayNum = args["pressedCodes"];
13417c804472Sopenharmony_ci    for (unsigned int i = 0; i < arrayNum.GetArraySize(); i++) {
13427c804472Sopenharmony_ci        if (!arrayNum.GetArrayItem(i).IsInt()) {
13437c804472Sopenharmony_ci            ELOG("Param pressedCodes's value is invalid.");
13447c804472Sopenharmony_ci            return false;
13457c804472Sopenharmony_ci        }
13467c804472Sopenharmony_ci        int pressedCode = arrayNum.GetArrayItem(i).AsInt();
13477c804472Sopenharmony_ci        if (pressedCode > maxKeyVal || pressedCode < minKeyVal) {
13487c804472Sopenharmony_ci            ELOG("Param pressedCode value is invalid,value range %d-%d.", minKeyVal, maxKeyVal);
13497c804472Sopenharmony_ci            return false;
13507c804472Sopenharmony_ci        }
13517c804472Sopenharmony_ci    }
13527c804472Sopenharmony_ci    return true;
13537c804472Sopenharmony_ci}
13547c804472Sopenharmony_ci
13557c804472Sopenharmony_ciKeyPressCommand::KeyPressCommand(CommandType commandType, const Json2::Value& arg,
13567c804472Sopenharmony_ci                                 const LocalSocket& socket)
13577c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
13587c804472Sopenharmony_ci{
13597c804472Sopenharmony_ci}
13607c804472Sopenharmony_ci
13617c804472Sopenharmony_civoid KeyPressCommand::RunAction()
13627c804472Sopenharmony_ci{
13637c804472Sopenharmony_ci    if (CommandParser::GetInstance().GetScreenMode() == CommandParser::ScreenMode::STATIC) {
13647c804472Sopenharmony_ci        return;
13657c804472Sopenharmony_ci    }
13667c804472Sopenharmony_ci    bool isInputMethod = args["isInputMethod"].AsBool();
13677c804472Sopenharmony_ci    if (isInputMethod) {
13687c804472Sopenharmony_ci        VirtualScreen::inputMethodCountPerMinute++;
13697c804472Sopenharmony_ci        unsigned int codePoint = args["codePoint"].AsInt();
13707c804472Sopenharmony_ci        KeyInputImpl::GetInstance().SetCodePoint(codePoint);
13717c804472Sopenharmony_ci        KeyInputImpl::GetInstance().DispatchOsInputMethodEvent();
13727c804472Sopenharmony_ci    } else {
13737c804472Sopenharmony_ci        VirtualScreen::inputKeyCountPerMinute++;
13747c804472Sopenharmony_ci        int32_t keyCode = args["keyCode"].AsInt();
13757c804472Sopenharmony_ci        int32_t keyAction = args["keyAction"].AsInt();
13767c804472Sopenharmony_ci        Json2::Value pressedCodes = args["pressedCodes"];
13777c804472Sopenharmony_ci        std::vector<int32_t> pressedCodesVec;
13787c804472Sopenharmony_ci        for (unsigned int i = 0; i < pressedCodes.GetArraySize(); i++) {
13797c804472Sopenharmony_ci            pressedCodesVec.push_back(pressedCodes.GetArrayItem(i).AsInt());
13807c804472Sopenharmony_ci        }
13817c804472Sopenharmony_ci        std::string keyString = "";
13827c804472Sopenharmony_ci        if (args.IsMember("keyString") && args["keyString"].IsString()) {
13837c804472Sopenharmony_ci            keyString = args["keyString"].AsString();
13847c804472Sopenharmony_ci        }
13857c804472Sopenharmony_ci        KeyInputImpl::GetInstance().SetKeyEvent(keyCode, keyAction, pressedCodesVec, keyString);
13867c804472Sopenharmony_ci        KeyInputImpl::GetInstance().DispatchOsKeyEvent();
13877c804472Sopenharmony_ci    }
13887c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
13897c804472Sopenharmony_ci    ILOG("KeyPressCommand run finished.");
13907c804472Sopenharmony_ci}
13917c804472Sopenharmony_ci
13927c804472Sopenharmony_cibool PointEventCommand::IsActionArgValid() const
13937c804472Sopenharmony_ci{
13947c804472Sopenharmony_ci    return IsArgsExist() && IsArgsValid();
13957c804472Sopenharmony_ci}
13967c804472Sopenharmony_ci
13977c804472Sopenharmony_cibool PointEventCommand::IsArgsExist() const
13987c804472Sopenharmony_ci{
13997c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("x") || !args.IsMember("y") ||
14007c804472Sopenharmony_ci        !args["x"].IsInt() || !args["y"].IsInt()) {
14017c804472Sopenharmony_ci        return false;
14027c804472Sopenharmony_ci    }
14037c804472Sopenharmony_ci    if (!args.IsMember("button") || !args.IsMember("action") ||
14047c804472Sopenharmony_ci        !args["button"].IsInt() || !args["action"].IsInt()) {
14057c804472Sopenharmony_ci        return false;
14067c804472Sopenharmony_ci    }
14077c804472Sopenharmony_ci    if (!args.IsMember("sourceType") || !args.IsMember("sourceTool") ||
14087c804472Sopenharmony_ci        !args["sourceType"].IsInt() || !args["sourceTool"].IsInt()) {
14097c804472Sopenharmony_ci        return false;
14107c804472Sopenharmony_ci    }
14117c804472Sopenharmony_ci    if (!args.IsMember("axisValues") || !args["axisValues"].IsArray()) {
14127c804472Sopenharmony_ci        return false;
14137c804472Sopenharmony_ci    }
14147c804472Sopenharmony_ci    return true;
14157c804472Sopenharmony_ci}
14167c804472Sopenharmony_ci
14177c804472Sopenharmony_cibool PointEventCommand::IsArgsValid() const
14187c804472Sopenharmony_ci{
14197c804472Sopenharmony_ci    int32_t pointX = args["x"].AsInt();
14207c804472Sopenharmony_ci    int32_t pointY = args["y"].AsInt();
14217c804472Sopenharmony_ci    int32_t button = args["button"].AsInt();
14227c804472Sopenharmony_ci    int32_t action = args["action"].AsInt();
14237c804472Sopenharmony_ci    int32_t sourceType = args["sourceType"].AsInt();
14247c804472Sopenharmony_ci    int32_t sourceTool = args["sourceTool"].AsInt();
14257c804472Sopenharmony_ci    if (pointX < 0 || pointX > VirtualScreenImpl::GetInstance().GetCurrentWidth()) {
14267c804472Sopenharmony_ci        ELOG("X coordinate range %d ~ %d", 0, VirtualScreenImpl::GetInstance().GetCurrentWidth());
14277c804472Sopenharmony_ci        return false;
14287c804472Sopenharmony_ci    }
14297c804472Sopenharmony_ci    if (pointY < 0 || pointY > VirtualScreenImpl::GetInstance().GetCurrentHeight()) {
14307c804472Sopenharmony_ci        ELOG("Y coordinate range %d ~ %d", 0, VirtualScreenImpl::GetInstance().GetCurrentHeight());
14317c804472Sopenharmony_ci        return false;
14327c804472Sopenharmony_ci    }
14337c804472Sopenharmony_ci    if (button < -1 || action < 0 || sourceType < 0 || sourceTool < 0) {
14347c804472Sopenharmony_ci        ELOG("action,sourceType,sourceTool must >= 0, button must >= -1");
14357c804472Sopenharmony_ci        return false;
14367c804472Sopenharmony_ci    }
14377c804472Sopenharmony_ci    Json2::Value axisArrayNum = args["axisValues"];
14387c804472Sopenharmony_ci    for (unsigned int i = 0; i < axisArrayNum.GetArraySize(); i++) {
14397c804472Sopenharmony_ci        if (!axisArrayNum.GetArrayItem(i).IsDouble()) {
14407c804472Sopenharmony_ci            ELOG("Param axisValues's value is invalid.");
14417c804472Sopenharmony_ci            return false;
14427c804472Sopenharmony_ci        }
14437c804472Sopenharmony_ci    }
14447c804472Sopenharmony_ci    return true;
14457c804472Sopenharmony_ci}
14467c804472Sopenharmony_ci
14477c804472Sopenharmony_ciPointEventCommand::PointEventCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
14487c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
14497c804472Sopenharmony_ci{
14507c804472Sopenharmony_ci}
14517c804472Sopenharmony_ci
14527c804472Sopenharmony_civoid PointEventCommand::RunAction()
14537c804472Sopenharmony_ci{
14547c804472Sopenharmony_ci    int type = 9;
14557c804472Sopenharmony_ci    EventParams param;
14567c804472Sopenharmony_ci    if (args.IsMember("pressedButtons") && args["pressedButtons"].IsArray()) {
14577c804472Sopenharmony_ci        Json2::Value pressedCodes = args["pressedButtons"];
14587c804472Sopenharmony_ci        for (unsigned int i = 0; i < pressedCodes.GetArraySize(); i++) {
14597c804472Sopenharmony_ci            Json2::Value val = pressedCodes.GetArrayItem(i);
14607c804472Sopenharmony_ci            if (!val.IsInt() || val.AsInt() < -1) {
14617c804472Sopenharmony_ci                continue;
14627c804472Sopenharmony_ci            }
14637c804472Sopenharmony_ci            param.pressedBtnsVec.insert(val.AsInt());
14647c804472Sopenharmony_ci        }
14657c804472Sopenharmony_ci    }
14667c804472Sopenharmony_ci    std::vector<double> axisVec; // 13 is array size
14677c804472Sopenharmony_ci    Json2::Value axisCodes = args["axisValues"];
14687c804472Sopenharmony_ci    for (unsigned int i = 0; i < axisCodes.GetArraySize(); i++) {
14697c804472Sopenharmony_ci        param.axisVec.push_back(axisCodes.GetArrayItem(i).AsDouble());
14707c804472Sopenharmony_ci    }
14717c804472Sopenharmony_ci    param.x = args["x"].AsDouble();
14727c804472Sopenharmony_ci    param.y = args["y"].AsDouble();
14737c804472Sopenharmony_ci    param.type = type;
14747c804472Sopenharmony_ci    param.button = args["button"].AsInt();
14757c804472Sopenharmony_ci    param.action = args["action"].AsInt();
14767c804472Sopenharmony_ci    param.sourceType = args["sourceType"].AsInt();
14777c804472Sopenharmony_ci    param.sourceTool = args["sourceTool"].AsInt();
14787c804472Sopenharmony_ci    param.name = "PointEvent";
14797c804472Sopenharmony_ci    SetEventParams(param);
14807c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
14817c804472Sopenharmony_ci}
14827c804472Sopenharmony_ci
14837c804472Sopenharmony_ciFoldStatusCommand::FoldStatusCommand(CommandType commandType, const Json2::Value& arg, const LocalSocket& socket)
14847c804472Sopenharmony_ci    : CommandLine(commandType, arg, socket)
14857c804472Sopenharmony_ci{
14867c804472Sopenharmony_ci}
14877c804472Sopenharmony_ci
14887c804472Sopenharmony_cibool FoldStatusCommand::IsSetArgValid() const
14897c804472Sopenharmony_ci{
14907c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("FoldStatus") || !args["FoldStatus"].IsString()) {
14917c804472Sopenharmony_ci        ELOG("Invalid FoldStatus of arguments!");
14927c804472Sopenharmony_ci        return false;
14937c804472Sopenharmony_ci    }
14947c804472Sopenharmony_ci    if (!args.IsMember("width") || !args["width"].IsInt() ||
14957c804472Sopenharmony_ci        !args.IsMember("height") || !args["height"].IsInt()) {
14967c804472Sopenharmony_ci        ELOG("Invalid width and height of arguments!");
14977c804472Sopenharmony_ci        return false;
14987c804472Sopenharmony_ci    }
14997c804472Sopenharmony_ci    if (args["width"].AsInt() < minWidth || args["width"].AsInt() > maxWidth ||
15007c804472Sopenharmony_ci        args["height"].AsInt() < minWidth || args["height"].AsInt() > maxWidth) {
15017c804472Sopenharmony_ci        ELOG("width or height is out of range %d-%d", minWidth, maxWidth);
15027c804472Sopenharmony_ci        return false;
15037c804472Sopenharmony_ci    }
15047c804472Sopenharmony_ci    if (args["FoldStatus"].AsString() == "fold" || args["FoldStatus"].AsString() == "unfold" ||
15057c804472Sopenharmony_ci        args["FoldStatus"].AsString() == "unknown" || args["FoldStatus"].AsString() == "half_fold") {
15067c804472Sopenharmony_ci        return true;
15077c804472Sopenharmony_ci    }
15087c804472Sopenharmony_ci    ELOG("FoldStatus param must be \"fold\" or \"unfold\" or \"unknown\" or \"half_fold\"");
15097c804472Sopenharmony_ci    return false;
15107c804472Sopenharmony_ci}
15117c804472Sopenharmony_ci
15127c804472Sopenharmony_civoid FoldStatusCommand::RunSet()
15137c804472Sopenharmony_ci{
15147c804472Sopenharmony_ci    std::string commandStatus = args["FoldStatus"].AsString();
15157c804472Sopenharmony_ci    int32_t width = args["width"].AsInt();
15167c804472Sopenharmony_ci    int32_t height = args["height"].AsInt();
15177c804472Sopenharmony_ci    std::string currentStatus = VirtualScreenImpl::GetInstance().GetFoldStatus();
15187c804472Sopenharmony_ci    if (commandStatus != currentStatus) {
15197c804472Sopenharmony_ci        JsAppImpl::GetInstance().FoldStatusChanged(commandStatus, width, height);
15207c804472Sopenharmony_ci    }
15217c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
15227c804472Sopenharmony_ci    ILOG("Set FoldStatus run finished, FoldStatus is: %s", args["FoldStatus"].AsString().c_str());
15237c804472Sopenharmony_ci}
15247c804472Sopenharmony_ci
15257c804472Sopenharmony_ciAvoidAreaCommand::AvoidAreaCommand(CommandType commandType, const Json2::Value& arg,
15267c804472Sopenharmony_ci    const LocalSocket& socket) : CommandLine(commandType, arg, socket)
15277c804472Sopenharmony_ci{
15287c804472Sopenharmony_ci}
15297c804472Sopenharmony_ci
15307c804472Sopenharmony_cibool AvoidAreaCommand::IsSetArgValid() const
15317c804472Sopenharmony_ci{
15327c804472Sopenharmony_ci    if (args.IsNull() || !args.IsMember("topRect") || !args.IsMember("bottomRect") ||
15337c804472Sopenharmony_ci        !args.IsMember("leftRect") || !args.IsMember("rightRect")) {
15347c804472Sopenharmony_ci        ELOG("AvoidAreaCommand missing arguments!");
15357c804472Sopenharmony_ci        return false;
15367c804472Sopenharmony_ci    }
15377c804472Sopenharmony_ci    if (!args["topRect"].IsObject() || !args["bottomRect"].IsObject() || !args["leftRect"].IsObject()
15387c804472Sopenharmony_ci        || !args["rightRect"].IsObject()) {
15397c804472Sopenharmony_ci        ELOG("Invalid values of arguments!");
15407c804472Sopenharmony_ci        return false;
15417c804472Sopenharmony_ci    }
15427c804472Sopenharmony_ci    Json2::Value topRect = args.GetValue("topRect");
15437c804472Sopenharmony_ci    Json2::Value bottomRect = args.GetValue("bottomRect");
15447c804472Sopenharmony_ci    Json2::Value leftRect = args.GetValue("leftRect");
15457c804472Sopenharmony_ci    Json2::Value rightRect = args.GetValue("rightRect");
15467c804472Sopenharmony_ci    if (!IsObjectValid(topRect) || !IsObjectValid(bottomRect) ||
15477c804472Sopenharmony_ci        !IsObjectValid(leftRect) || !IsObjectValid(rightRect)) {
15487c804472Sopenharmony_ci        ELOG("Invalid values of arguments!");
15497c804472Sopenharmony_ci        return false;
15507c804472Sopenharmony_ci    }
15517c804472Sopenharmony_ci    return true;
15527c804472Sopenharmony_ci}
15537c804472Sopenharmony_ci
15547c804472Sopenharmony_cibool AvoidAreaCommand::IsObjectValid(const Json2::Value& val) const
15557c804472Sopenharmony_ci{
15567c804472Sopenharmony_ci    if (val.IsNull() || !val.IsMember("posX") || !val["posY"].IsInt() ||
15577c804472Sopenharmony_ci        !val.IsMember("width") || !val.IsMember("height")) {
15587c804472Sopenharmony_ci        ELOG("AvoidAreaCommand missing arguments!");
15597c804472Sopenharmony_ci        return false;
15607c804472Sopenharmony_ci    }
15617c804472Sopenharmony_ci    if (!val["posX"].IsInt() || !val["posY"].IsInt() || !val["width"].IsUInt()
15627c804472Sopenharmony_ci        || !val["height"].IsUInt()) {
15637c804472Sopenharmony_ci        ELOG("Invalid values of arguments!");
15647c804472Sopenharmony_ci        return false;
15657c804472Sopenharmony_ci    }
15667c804472Sopenharmony_ci    if (val["posX"].AsInt() < 0 || val["posY"].AsInt() < 0 ||
15677c804472Sopenharmony_ci        val["width"].AsUInt() < 0 || val["height"].AsUInt() < 0) {
15687c804472Sopenharmony_ci        ELOG("Invalid values of arguments!");
15697c804472Sopenharmony_ci        return false;
15707c804472Sopenharmony_ci    }
15717c804472Sopenharmony_ci    return true;
15727c804472Sopenharmony_ci}
15737c804472Sopenharmony_ci
15747c804472Sopenharmony_civoid AvoidAreaCommand::RunSet()
15757c804472Sopenharmony_ci{
15767c804472Sopenharmony_ci    Json2::Value topRectObj = args.GetValue("topRect");
15777c804472Sopenharmony_ci    AvoidRect topRect = AvoidRect(topRectObj["posX"].AsInt(), topRectObj["posY"].AsInt(),
15787c804472Sopenharmony_ci        topRectObj["width"].AsUInt(), topRectObj["height"].AsUInt());
15797c804472Sopenharmony_ci    Json2::Value bottomRectObj = args.GetValue("bottomRect");
15807c804472Sopenharmony_ci    AvoidRect bottomRect = AvoidRect(bottomRectObj["posX"].AsInt(), bottomRectObj["posY"].AsInt(),
15817c804472Sopenharmony_ci        bottomRectObj["width"].AsUInt(), bottomRectObj["height"].AsUInt());
15827c804472Sopenharmony_ci    Json2::Value leftRectObj = args.GetValue("leftRect");
15837c804472Sopenharmony_ci    AvoidRect leftRect = AvoidRect(leftRectObj["posX"].AsInt(), leftRectObj["posY"].AsInt(),
15847c804472Sopenharmony_ci        leftRectObj["width"].AsUInt(), leftRectObj["height"].AsUInt());
15857c804472Sopenharmony_ci    Json2::Value rightRectObj = args.GetValue("rightRect");
15867c804472Sopenharmony_ci    AvoidRect rightRect = AvoidRect(rightRectObj["posX"].AsInt(), rightRectObj["posY"].AsInt(),
15877c804472Sopenharmony_ci        rightRectObj["width"].AsUInt(), rightRectObj["height"].AsUInt());
15887c804472Sopenharmony_ci    JsAppImpl::GetInstance().SetAvoidArea(AvoidAreas(topRect, leftRect, rightRect, bottomRect));
15897c804472Sopenharmony_ci    SetCommandResult("result", JsonReader::CreateBool(true));
15907c804472Sopenharmony_ci    ILOG("Set AvoidArea run finished");
15917c804472Sopenharmony_ci}
15927c804472Sopenharmony_ci
15937c804472Sopenharmony_ciAvoidAreaChangedCommand::AvoidAreaChangedCommand(CommandType commandType, const Json2::Value& arg,
15947c804472Sopenharmony_ci    const LocalSocket& socket) : CommandLine(commandType, arg, socket)
15957c804472Sopenharmony_ci{
15967c804472Sopenharmony_ci}
15977c804472Sopenharmony_ci
15987c804472Sopenharmony_civoid AvoidAreaChangedCommand::RunGet()
15997c804472Sopenharmony_ci{
16007c804472Sopenharmony_ci    SetResultToManager("args", args, "AvoidAreaChanged");
16017c804472Sopenharmony_ci    ILOG("Get AvoidAreaChangedCommand run finished.");
16027c804472Sopenharmony_ci}