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}