From fbb513a14e064ad363ee87c86c57cbec92190ac1 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Wed, 17 Apr 2024 21:14:20 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BA=A2=E5=A4=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 --- BUILD.gn | 3 + frameworks/napi/infrared_emitter/BUILD.gn | 67 +++++ .../include/js_register_module.h | 55 ++++ .../src/js_register_module.cpp | 284 ++++++++++++++++++ .../test/register_module_test.cpp | 65 ++++ .../include/input_manager_impl.h | 7 + .../event_handler/src/input_manager_impl.cpp | 36 +++ frameworks/proxy/events/src/input_manager.cpp | 36 +++ .../event/include/infrared_frequency_info.h | 32 ++ .../innerkits/proxy/include/input_manager.h | 26 ++ multimodalinput_mini.gni | 7 + .../include/i_multimodal_input_connect.h | 4 + .../multimodal_input_connect_manager.h | 5 + .../include/multimodal_input_connect_proxy.h | 27 ++ .../include/multimodal_input_connect_stub.h | 3 + .../multimodalinput_ipc_interface_code.h | 3 + .../src/multimodal_input_connect_manager.cpp | 39 +++ .../src/multimodal_input_connect_proxy.cpp | 116 +++++++ .../src/multimodal_input_connect_stub.cpp | 105 +++++++ service/module_loader/include/mmi_service.h | 12 + service/module_loader/src/mmi_service.cpp | 77 +++++ .../include/permission_helper.h | 16 + .../src/permission_helper.cpp | 58 ++++ 23 files changed, 1083 insertions(+) create mode 100644 frameworks/napi/infrared_emitter/BUILD.gn create mode 100644 frameworks/napi/infrared_emitter/include/js_register_module.h create mode 100644 frameworks/napi/infrared_emitter/src/js_register_module.cpp create mode 100644 frameworks/napi/infrared_emitter/test/register_module_test.cpp create mode 100644 interfaces/native/innerkits/event/include/infrared_frequency_info.h diff --git a/BUILD.gn b/BUILD.gn index 2c06ece5b..1fa272b7e 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -108,6 +108,9 @@ group("input_jsapi_group") { if (input_feature_short_key) { deps += [ "frameworks/napi/short_key:shortkey" ] } + if (input_feature_infrared_emitter) { + deps += [ "frameworks/napi/infrared_emitter:infraredemitter" ] + } } } diff --git a/frameworks/napi/infrared_emitter/BUILD.gn b/frameworks/napi/infrared_emitter/BUILD.gn new file mode 100644 index 000000000..fca277abb --- /dev/null +++ b/frameworks/napi/infrared_emitter/BUILD.gn @@ -0,0 +1,67 @@ +# Copyright (c) 2021-2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("../../../multimodalinput_mini.gni") +print("******************************************************************************************************") +print("******************************************************************************************************") +print("******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") +print("******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") +print("******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") +print("******************************************************************************************************") +print("******************************************************************************************************") + +config("infraredemitter_config") { + visibility = [ ":*" ] + include_dirs = [ + "${mmi_path}/input/interfaces/native/innerkits/event/include/", + "${mmi_path}/frameworks/napi/infrared_emitter/include", + "${mmi_path}/util/common/include", + "${mmi_path}/util/network/include", + ] +} + + +ohos_shared_library("infraredemitter") { + sources = infraredemitter_sources + stack_protector_ret = true + sanitize = { + integer_overflow = true + ubsan = true + boundary_sanitize = true + cfi = true + cfi_cross_dso = true + debug = false + } + + + configs = [ + "${mmi_path}:coverage_flags", + ":infraredemitter_config", + ] + + deps = [ + "${mmi_path}/frameworks/proxy:libmmi-client", + "${mmi_path}/util:libmmi-util", + ] + + external_deps = [ + "c_utils:utils", + "hilog:libhilog", + "napi:ace_napi", + ] + + relative_install_dir = "module/multimodalinput" + + part_name = "input" + subsystem_name = "multimodalinput" +} diff --git a/frameworks/napi/infrared_emitter/include/js_register_module.h b/frameworks/napi/infrared_emitter/include/js_register_module.h new file mode 100644 index 000000000..a76c2686c --- /dev/null +++ b/frameworks/napi/infrared_emitter/include/js_register_module.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +/**** + * + 【需求描述】: +支持如下接口: +1、获取设备支持的红外频率数据:参考命名 getCarrierFrequencies +输入:调用此接口 +处理:调用HDF红外服务的HDI接口,获取频率数据 +输出:返回给调用方设备支持的外频率数据 +2、设备是否有红外:参考命名 hasIrEmitter () +输入:调用此接口 +处理:判断HDF红外服务是否运行 +输出:红外服务运行了返回true,否则返回false +3、发送红外信号:参考命名 transmit (int frequency, int[] pattern) +输入:调用此接口 +处理:调用HDF红外服务的HDI接口,以频率 frequency, 发送pattern红外码 + + + * + * ****/ + +#ifndef JS_INFRARED_MANAGER_H +#define JS_INFRARED_MANAGER_H + + +#include "napi/native_api.h" +#include "napi/native_node_api.h" +#include "define_multimodal.h" +#include "nocopyable.h" +#include "utils/log.h" +#include "key_event.h" +#include "key_option.h" + +namespace OHOS { + namespace MMI { + + } // namespace MMI +} // namespace OHOS +#endif // JS_INFRARED_MANAGER_H \ No newline at end of file diff --git a/frameworks/napi/infrared_emitter/src/js_register_module.cpp b/frameworks/napi/infrared_emitter/src/js_register_module.cpp new file mode 100644 index 000000000..641ccbc51 --- /dev/null +++ b/frameworks/napi/infrared_emitter/src/js_register_module.cpp @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "js_register_module.h" +#include "input_manager.h" +#include + +//#include "input_manager.h" +#include "mmi_log.h" +#include "napi_constants.h" +#include "util_napi_error.h" +#include "util_napi.h" + +namespace OHOS { +namespace MMI { +namespace { + constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, MMI_LOG_DOMAIN, "JsInfraredRegister" }; +} + + +bool CheckType(const napi_env& env, const napi_value& value, const napi_valuetype& type) +{ + napi_valuetype valuetype = napi_undefined; + napi_typeof(env, value, &valuetype); + if (valuetype != type) { + return false; + } + return true; +} + +bool IsArray(const napi_env& env, const napi_value& value) +{ + bool isArray = false; + napi_status ret = napi_is_array(env, value, &isArray); + if (ret != napi_ok) { + return false; + } + return isArray; +} + +bool ParseInt64(const napi_env& env, const napi_value& value, int64_t& result) +{ + if (!CheckType(env, value, napi_number)) { + MMI_HILOGE("ParseInt64 type not number"); + THROWERR_API9(env, COMMON_PARAMETER_ERROR, "element of pattern", "Number"); + return false; + } + if (napi_get_value_int64(env, value, &result) != napi_ok) { + MMI_HILOGE("ParseInt64 cannot get value int64"); + return false; + } + return true; +} + +bool ParsePatternArray(const napi_env& env, const napi_value& value, std::vector& result) +{ + uint32_t length = 0; + if (!IsArray(env, value)) { + MMI_HILOGE(" ParsePatternArray second para not array"); + THROWERR_API9(env, COMMON_PARAMETER_ERROR, "pattern", "Array"); + return false; + } + napi_get_array_length(env, value, &length); + // MMI_HILOGE(" ParsePatternArray lengtyh of array; length:%{public}d", length); + + for (uint32_t i = 0; i < length; i++) { + napi_value valueArray = nullptr; + if (napi_get_element(env, value, i, &valueArray) != napi_ok) { + MMI_HILOGE("ParsePatternArray napi_get_element failed. index:%{public}d", i); + return false; + } + int64_t res = 0; + + if (!ParseInt64(env, valueArray, res)) { + MMI_HILOGE(" ParsePatternArray parse array fail. index:%{public}d", i); + return false; + } + // MMI_HILOGE("ParsePatternArray parse array[%{public}d] succeed. value:%{public}" PRIu64, i, res); + result.emplace_back(res); + } + return true; +}; + + + +bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info &info, int64_t & infraredFrequency, +std::vector & vecPattern) +{ +CALL_DEBUG_ENTER; +size_t argc = 2; +napi_value argv[2]; +CHKRF(napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr), GET_CB_INFO); +// MMI_HILOGE(" result from ParseTransmitInfraredJSParam argc :%{public}zu", argc); +if ( argc != 2) { + MMI_HILOGE("ParseTransmitInfraredJSParam Parameter number error"); + return false; +} + +if (!CheckType(env, argv[0], napi_number)) { + MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] type is invalid. "); + THROWERR_API9(env, COMMON_PARAMETER_ERROR, "infraredFrequency", "number"); + return false; +} + +CHKRF(napi_get_value_int64(env, argv[0], &infraredFrequency), "get number64 value error"); +// std::string context = std::to_string(infraredFrequency); +// MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] . :%{public}s", context.c_str()); +if(!ParsePatternArray(env, argv[1], vecPattern)) { + MMI_HILOGE("ParsePatternArray parse pattern array fail." ); + return false; +} +return true; +} + +static void ThrowError(napi_env env, int32_t code, std::string operateType) +{ + int32_t errorCode = -code; + MMI_HILOGE("Operate %{public}s requst error. returnCode:%{public}d", operateType.c_str(), code); + if (errorCode == COMMON_PERMISSION_CHECK_ERROR) { + THROWERR_API9(env, COMMON_PERMISSION_CHECK_ERROR, "Infrared", "ohos.permission.INFRARED_EMITTER"); + } else { + return; + } +} + + +napi_value CreateInfraredFrequencyItem(napi_env env, const InfraredFrequency &infraredFrequency) +{ + napi_value result; + napi_status status = napi_create_object(env, &result); + CHKRP(status, CREATE_OBJECT); + napi_value jsMax; + CHKRP(napi_create_int64(env, infraredFrequency.max_, &jsMax), "napi_create_int64:max"); + CHKRP(napi_set_named_property(env, result, "max", jsMax), SET_NAMED_PROPERTY); + napi_value jsMin; + CHKRP(napi_create_int64(env, infraredFrequency.min_, &jsMin), "napi_create_int64:min"); + CHKRP(napi_set_named_property(env, result, "min", jsMin), SET_NAMED_PROPERTY); + return result; +} + +static napi_value HasIrEmitter(napi_env env, napi_callback_info info) +{ + CALL_DEBUG_ENTER; + napi_value result = nullptr; + + napi_status status = napi_get_boolean(env, true, &result); + if (status != napi_ok) { + THROWERR_API9(env, COMMON_PARAMETER_ERROR, "type", "boolean"); + return nullptr; + } + return result; +} + +static napi_value GetInfraredFrequencies(napi_env env, napi_callback_info info) +{ + // MMI_HILOGI("***************************** GetInfraredFrequencies start para : " ); + CALL_DEBUG_ENTER; + napi_value result = nullptr; + CHKRP(napi_create_array(env, &result), CREATE_ARRAY); + std::vector requencys; + int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); + /********处理权限错误的问题 *******/ + if(0 > ret) { + MMI_HILOGE("GetInfraredFrequencies requst error. Permission Error. returnCode:%{public}d", ret); + ThrowError(env, ret, "GetInfraredFrequencies"); + return nullptr; + } + if(ret != RET_OK) { + if(COMMON_PERMISSION_CHECK_ERROR == ret) { + MMI_HILOGE("GetInfraredFrequencies requst error. Permission Error. Positive returnCode:%{public}d", ret); + ThrowError(env, ret, "GetInfraredFrequencies"); + return nullptr; + } + MMI_HILOGE("Parse GetInfraredFrequencies requst error. returnCode: %{public}d", ret); + return result; + } + int32_t size = requencys.size(); + std::string logPrint = "size:" + std::to_string(size) + ";\r\n"; + MMI_HILOGI(" result from GetInfraredFrequencies :%{public}s " , logPrint.c_str()); + for(int32_t i = 0; i < size; i++) + { + InfraredFrequency frequencyItem = requencys[i]; + logPrint = std::to_string(i) + "max:" + std::to_string(frequencyItem.max_) + ";min:" + + std::to_string(frequencyItem.min_) + ";\r\n"; + MMI_HILOGI("index:[%{}d]:%{public}s " ,i ,logPrint.c_str()); + } + + CHKRP(napi_create_array(env, &result), CREATE_ARRAY); + for(size_t i = 0; i < requencys.size(); i++) { + napi_value item = CreateInfraredFrequencyItem(env, requencys[i]); + if(item == nullptr) { + MMI_HILOGE("CreateInfraredFrequencyItem error"); + return nullptr; + } + //napi_set_element(env, result, i, item); + CHKRP(napi_set_element(env, result, i, item), SET_ELEMENT); + } + /********* print debug log, delete this while finish test ********/ + return result; +} + +static napi_value TransmitInfrared(napi_env env, napi_callback_info info) { + //MMI_HILOGI(" js_register_module.TransmitInfrared start para : " ); + CALL_DEBUG_ENTER; + napi_value result = nullptr; + int64_t number =-1; + std::vector pattern; + if(!ParseTransmitInfraredJSParam(env, info, number, pattern)) { + MMI_HILOGE("Parse TransmitInfrared JSParam error"); + THROWERR_CUSTOM(env, COMMON_PARAMETER_ERROR, "Parse TransmitInfrared JSParam error"); + return nullptr; + } + + int32_t size = static_cast(pattern.size()); + std::string context = "number:" + std::to_string(number) + "\r\n" + "; size=" + std::to_string(size) + ";\r\n"; + MMI_HILOGI("js_register_module.TransmitInfrared para size :%{public}s " , context.c_str()); + for(int32_t i = 0; i < size; i++) { + context = std::to_string(i) + ": pattern: " + std::to_string(pattern[i]) + ";\r\n"; + MMI_HILOGI("***************************** js_register_module TransmitInfrared para :%{public}s " , context.c_str()); + } + int32_t ret = InputManager::GetInstance()->TransmitInfrared(number, pattern); + /********处理权限错误的问题 *******/ + if(0 > ret) { + MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error. returnCode:%{public}d", ret); + ThrowError(env, ret, "TransmitInfrared"); + return nullptr; + } + if(ret != RET_OK) { + if(COMMON_PERMISSION_CHECK_ERROR == ret) { + MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error. Positive returnCode:%{public}d", ret); + ThrowError(env, ret, "TransmitInfrared"); + return nullptr; + } + MMI_HILOGE("TransmitInfrared requst error. returnCode:%{public}d", ret); + return nullptr; + } + CHKRP(napi_create_int32(env, 0, &result), CREATE_INT32); + return result; +} + + +EXTERN_C_START +static napi_value MmiInit(napi_env env, napi_value exports) +{ + CALL_DEBUG_ENTER; + napi_property_descriptor desc[] = { + DECLARE_NAPI_FUNCTION("hasIrEmitter", HasIrEmitter), + DECLARE_NAPI_FUNCTION("getInfraredFrequencies", GetInfraredFrequencies), + DECLARE_NAPI_FUNCTION("transmitInfrared", TransmitInfrared) + }; + NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); + return exports; +} +EXTERN_C_END + +static napi_module infraredModule = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = MmiInit, + .nm_modname = "multimodalInput.infraredEmitter", + .nm_priv = ((void*)0), + .reserved = { 0 }, +}; + +extern "C" __attribute__((constructor)) void RegisterModule(void) +{ + napi_module_register(&infraredModule); +} + +} +} \ No newline at end of file diff --git a/frameworks/napi/infrared_emitter/test/register_module_test.cpp b/frameworks/napi/infrared_emitter/test/register_module_test.cpp new file mode 100644 index 000000000..dc7cbbaca --- /dev/null +++ b/frameworks/napi/infrared_emitter/test/register_module_test.cpp @@ -0,0 +1,65 @@ + + + +namespace OHOS { +namespace MMI { +namespace { +using namespace testing::ext; +} // namespace +/********* 实现DTS的接口如何测试? *********/ +class RegisterModuleTest : public testing::Test { + public: + /***** 测试使用红外的频率(使用返回的第一个频率) ******/ + int64_t frequency_Max; + int64_t frequency_Min; +}; + + HWTEST_F(RegisterModuleTest, GetInfraredFrequenciesTest, TestSize.Level1) + { + std::vector requencys; + int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); + bool testResult = true; + int32_t size = requencys.size(); + EXPECT_GE(size, 1) + + frequency_Max = requencys[0].max_; + frequency_Min = requencys[0].min_; + + for(int32_t i =0; i< size; i++) { + InfraredFrequency fre = requencys[i]; + if(fre.max_ < fre.min_) { + testResult = false; + break; + } + } + EXPECT_EQ(break, true); + } + + /** + * @tc.name: EventDumpTest_CheckCount_001 + * @tc.desc: Event dump CheckCount + * @tc.type: FUNC + * @tc.require:AR000GJG6G + */ + HWTEST_F(RegisterModuleTest, TransmitInfraredTest, TestSize.Level1) + { + std::vector requencys; + int64_t dist = (frequency_Max - frequency_Min) / 10; + + for(int i = 0; i< 10; i++) { + requencys.push_back(dist * i + frequency_Min); + } + int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min ,requencys ); + EXPECT_EQ(ret, 0); + } + + HWTEST_F(RegisterModuleTest, HasIrEmitterTest, TestSize.Level1) + { + bool hasEmmited = false; + int32_t ret = InputManager::GetInstance()->HasIrEmitter(hasEmmited); + EXPECT_EQ(hasEmmited, true); + } + + +} // namespace MMI +} // namespace OHOS \ No newline at end of file diff --git a/frameworks/proxy/event_handler/include/input_manager_impl.h b/frameworks/proxy/event_handler/include/input_manager_impl.h index cecb0f296..8ae9c4049 100644 --- a/frameworks/proxy/event_handler/include/input_manager_impl.h +++ b/frameworks/proxy/event_handler/include/input_manager_impl.h @@ -44,6 +44,7 @@ #include "pointer_event.h" #include "pointer_style.h" #include "switch_event.h" +#include "infrared_frequency_info.h" namespace OHOS { namespace MMI { @@ -192,6 +193,12 @@ public: int32_t GetKeyState(std::vector &pressedKeys, std::map &specialKeysState); void Authorize(bool isAuthorize); int32_t CancelInjection(); + + int32_t HasIrEmitter(bool &hasIrEmitter); + int32_t GetInfraredFrequencies(std::vector& requencys); + int32_t TransmitInfrared(int64_t number, std::vector pattern); + + private: int32_t PackWindowInfo(NetPacket &pkt); int32_t PackWindowGroupInfo(NetPacket &pkt); diff --git a/frameworks/proxy/event_handler/src/input_manager_impl.cpp b/frameworks/proxy/event_handler/src/input_manager_impl.cpp index 41e6f4474..0ba807f98 100644 --- a/frameworks/proxy/event_handler/src/input_manager_impl.cpp +++ b/frameworks/proxy/event_handler/src/input_manager_impl.cpp @@ -2024,5 +2024,41 @@ int32_t InputManagerImpl::CancelInjection() } return RET_OK; } + + /** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t InputManagerImpl::HasIrEmitter(bool &hasIrEmitter) + { + CALL_INFO_TRACE; + return MultimodalInputConnMgr->HasIrEmitter(hasIrEmitter); + } + + /** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t InputManagerImpl::GetInfraredFrequencies(std::vector& requencys) + { + CALL_INFO_TRACE; + return MultimodalInputConnMgr->GetInfraredFrequencies(requencys); + } + /** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t InputManagerImpl::TransmitInfrared(int64_t number, std::vector pattern) + { + CALL_INFO_TRACE; + return MultimodalInputConnMgr->TransmitInfrared(number, pattern); + } } // namespace MMI } // namespace OHOS diff --git a/frameworks/proxy/events/src/input_manager.cpp b/frameworks/proxy/events/src/input_manager.cpp index 60ec78583..4fa567486 100644 --- a/frameworks/proxy/events/src/input_manager.cpp +++ b/frameworks/proxy/events/src/input_manager.cpp @@ -522,5 +522,41 @@ void InputManager::Authorize(bool isAuthorize) { InputMgrImpl.Authorize(isAuthorize); } + + /** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t InputManager::HasIrEmitter(bool &hasIrEmitter) + { + return InputMgrImpl.HasIrEmitter(hasIrEmitter); + } + + /** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t InputManager::GetInfraredFrequencies(std::vector& requencys) + { + return InputMgrImpl.GetInfraredFrequencies(requencys); + } + /** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t InputManager::TransmitInfrared(int64_t number, std::vector pattern) + { + return InputMgrImpl.TransmitInfrared(number, pattern); + } + + + } // namespace MMI } // namespace OHOS diff --git a/interfaces/native/innerkits/event/include/infrared_frequency_info.h b/interfaces/native/innerkits/event/include/infrared_frequency_info.h new file mode 100644 index 000000000..f80bed0b6 --- /dev/null +++ b/interfaces/native/innerkits/event/include/infrared_frequency_info.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef I_INFRARED_MANAGER +#define I_INFRARED_MANAGER + + +//#include "nocopyable.h" + +namespace OHOS { + namespace MMI { + + struct InfraredFrequency { + + int64_t max_ { 0 }; + int64_t min_ { 0 }; + }; + } // namespace MMI +} // namespace OHOS +#endif // I_INFRARED_MANAGER \ No newline at end of file diff --git a/interfaces/native/innerkits/proxy/include/input_manager.h b/interfaces/native/innerkits/proxy/include/input_manager.h index d72cec0df..79e897fc0 100644 --- a/interfaces/native/innerkits/proxy/include/input_manager.h +++ b/interfaces/native/innerkits/proxy/include/input_manager.h @@ -37,6 +37,7 @@ #include "key_option.h" #include "pointer_style.h" #include "window_info.h" +#include "infrared_frequency_info.h" namespace OHOS { namespace MMI { @@ -816,6 +817,31 @@ public: */ int32_t GetTouchpadRotateSwitch(bool &rotateSwitch); + /** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t HasIrEmitter(bool &hasIrEmitter); + + /** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t GetInfraredFrequencies(std::vector& requencys); + + /** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param pattern Pattern of signal transmission in alternate on/off mode, in microseconds. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t TransmitInfrared(int64_t number, std::vector pattern); + private: InputManager() = default; DISALLOW_COPY_AND_MOVE(InputManager); diff --git a/multimodalinput_mini.gni b/multimodalinput_mini.gni index ee1366aa6..819786b31 100644 --- a/multimodalinput_mini.gni +++ b/multimodalinput_mini.gni @@ -40,6 +40,7 @@ declare_args() { input_ext_feature_fingersense = false input_feature_fingerprint = false input_ext_feature_magiccursor = false + input_feature_infrared_emitter = true if (defined(global_parts_info) && defined(global_parts_info.resourceschedule_resource_schedule_service)) { @@ -118,6 +119,11 @@ declare_args() { "window_manager/src/input_windows_manager.cpp", ] + + infraredemitter_sources = [ + "src/js_register_module.cpp", + ] + inputdevice_sources = [ "src/js_event_target.cpp", "src/js_input_device_context.cpp", @@ -258,6 +264,7 @@ print("input_feature_joystick = ${input_feature_joystick}") print("input_feature_touchscreen = ${input_feature_touchscreen}") print("input_feature_input_device = ${input_feature_input_device}") print("input_feature_short_key = ${input_feature_short_key}") +print("input_feature_infrared_emitter = ${input_feature_infrared_emitter}") input_default_defines = [] diff --git a/service/connect_manager/include/i_multimodal_input_connect.h b/service/connect_manager/include/i_multimodal_input_connect.h index 09a96c840..61a028f77 100644 --- a/service/connect_manager/include/i_multimodal_input_connect.h +++ b/service/connect_manager/include/i_multimodal_input_connect.h @@ -32,6 +32,7 @@ #include "window_info.h" #include "nap_process.h" #include "multimodalinput_ipc_interface_code.h" +#include "infrared_frequency_info.h" namespace OHOS { namespace MMI { @@ -129,6 +130,9 @@ public: virtual int32_t GetKeyState(std::vector &pressedKeys, std::map &specialKeysState) = 0; virtual int32_t Authorize(bool isAuthorize) = 0; virtual int32_t CancelInjection() = 0; + virtual int32_t HasIrEmitter(bool &hasIrEmitter) =0; + virtual int32_t GetInfraredFrequencies( std::vector& requencys) =0; + virtual int32_t TransmitInfrared( int64_t number, std::vector pattern) =0; }; } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/include/multimodal_input_connect_manager.h b/service/connect_manager/include/multimodal_input_connect_manager.h index 504d4e101..da6973816 100644 --- a/service/connect_manager/include/multimodal_input_connect_manager.h +++ b/service/connect_manager/include/multimodal_input_connect_manager.h @@ -26,6 +26,7 @@ #include "i_input_service_watcher.h" #include "i_multimodal_input_connect.h" #include "multimodalinput_ipc_interface_code.h" +#include "infrared_frequency_info.h" namespace OHOS { namespace MMI { @@ -122,6 +123,10 @@ public: int32_t Authorize(bool isAuthorize); int32_t CancelInjection(); + int32_t HasIrEmitter( bool &hasIrEmitter); + int32_t GetInfraredFrequencies(std::vector& requencys); + int32_t TransmitInfrared(int64_t number, std::vector pattern); + void AddServiceWatcher(std::shared_ptr watcher); void RemoveServiceWatcher(std::shared_ptr watcher); diff --git a/service/connect_manager/include/multimodal_input_connect_proxy.h b/service/connect_manager/include/multimodal_input_connect_proxy.h index cbe2f858f..89166b143 100644 --- a/service/connect_manager/include/multimodal_input_connect_proxy.h +++ b/service/connect_manager/include/multimodal_input_connect_proxy.h @@ -25,6 +25,7 @@ #include "mmi_event_observer.h" #include "multimodalinput_ipc_interface_code.h" + namespace OHOS { namespace MMI { class MultimodalInputConnectProxy final : public IRemoteProxy { @@ -118,6 +119,32 @@ public: int32_t GetKeyState(std::vector &pressedKeys, std::map &specialKeysState) override; int32_t Authorize(bool isAuthorize) override; int32_t CancelInjection() override; + + /** + * @brief Get whether System has IrEmitter.1 + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t HasIrEmitter( bool &hasIrEmitter) override; + + /** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t GetInfraredFrequencies( std::vector& requencys) override; + + /** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t TransmitInfrared( int64_t number, std::vector pattern) override; + private: static inline BrokerDelegator delegator_; diff --git a/service/connect_manager/include/multimodal_input_connect_stub.h b/service/connect_manager/include/multimodal_input_connect_stub.h index 49dbdcb64..573575ee1 100644 --- a/service/connect_manager/include/multimodal_input_connect_stub.h +++ b/service/connect_manager/include/multimodal_input_connect_stub.h @@ -120,6 +120,9 @@ protected: int32_t StubGetKeyState(MessageParcel& data, MessageParcel& reply); int32_t StubAuthorize(MessageParcel& data, MessageParcel& reply); int32_t StubCancelInjection(MessageParcel& data, MessageParcel& reply); + int32_t StubHasIrEmitter(MessageParcel& data, MessageParcel& reply); + int32_t StubGetInfraredFrequencies(MessageParcel& data, MessageParcel& reply); + int32_t StubTransmitInfrared(MessageParcel& data, MessageParcel& reply); private: int32_t VerifyTouchPadSetting(void); }; diff --git a/service/connect_manager/include/multimodalinput_ipc_interface_code.h b/service/connect_manager/include/multimodalinput_ipc_interface_code.h index a60c8598e..e6deb014c 100644 --- a/service/connect_manager/include/multimodalinput_ipc_interface_code.h +++ b/service/connect_manager/include/multimodalinput_ipc_interface_code.h @@ -102,6 +102,9 @@ enum class MultimodalinputConnectInterfaceCode { GET_KEY_STATE = 80, NATIVE_AUTHORIZE = 81, NATIVE_CANCEL_INJECTION = 82, + NATIVE_INFRARED_OWN = 83, + NATIVE_INFRARED_FREQUENCY = 84, + NATIVE_CANCEL_TRANSMIT = 85, }; enum class MultimodalinputEventObserverCode { diff --git a/service/connect_manager/src/multimodal_input_connect_manager.cpp b/service/connect_manager/src/multimodal_input_connect_manager.cpp index 146ec7e1a..d318e156b 100644 --- a/service/connect_manager/src/multimodal_input_connect_manager.cpp +++ b/service/connect_manager/src/multimodal_input_connect_manager.cpp @@ -694,5 +694,44 @@ int32_t MultimodalInputConnectManager::CancelInjection() CHKPR(multimodalInputConnectService_, RET_ERR); return multimodalInputConnectService_->CancelInjection(); } + + + /** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter) + { + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->HasIrEmitter( hasIrEmitter); + } + + /** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t MultimodalInputConnectManager::GetInfraredFrequencies( std::vector& requencys) + { + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->GetInfraredFrequencies( requencys); + } + /** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector pattern) + { + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->TransmitInfrared( number, pattern); + } + + } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index 9b427c089..f453546db 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -23,6 +23,7 @@ #include "string_ex.h" #include "multimodalinput_ipc_interface_code.h" #include "input_scene_board_judgement.h" +#include "infrared_frequency_info.h" namespace OHOS { namespace MMI { @@ -1892,5 +1893,120 @@ int32_t MultimodalInputConnectProxy::CancelInjection() } return RET_OK; } + +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) +{ + CALL_DEBUG_ENTER; + MessageParcel data; + if (!data.WriteInterfaceToken(MultimodalInputConnectProxy::GetDescriptor())) { + MMI_HILOGE("Failed to write descriptor"); + return ERR_INVALID_VALUE; + } + // int32_t pid = GetCallingPid(); + int32_t pid = 0; + // /**写入pid**/ + WRITEINT32(data, pid, ERR_INVALID_VALUE); + MessageParcel reply; + MessageOption option; + sptr remote = Remote(); + CHKPR(remote, RET_ERR); + int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_OWN), + data, reply, option); + /*** hasIrEmitter ***/ + READBOOL(reply, hasIrEmitter, IPC_PROXY_DEAD_OBJECT_ERR); + if (ret != RET_OK) { + MMI_HILOGE("MultimodalInputConnectProxy::HasIrEmitter Send request fail, ret:%{public}d", ret); + } + return ret; +} + +/** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector& requencys) +{ + CALL_DEBUG_ENTER; + MessageParcel data; + if (!data.WriteInterfaceToken(MultimodalInputConnectProxy::GetDescriptor())) { + MMI_HILOGE("Failed to write descriptor"); + return ERR_INVALID_VALUE; + } + + + MessageParcel reply; + MessageOption option; + sptr remote = Remote(); + CHKPR(remote, RET_ERR); + int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), + data, reply, option); + if (ret != RET_OK) { + MMI_HILOGE("MultimodalInputConnectProxy::GetInfraredFrequencies Send request fail, ret:%{public}d", ret); + } + + int64_t number; + + READINT64(reply, number, IPC_PROXY_DEAD_OBJECT_ERR); + + int64_t min,max; + for (int32_t i = 0; i < number; i++) { + READINT64(reply, max); + READINT64(reply, min); + InfraredFrequency item; + item.max_ = max; + item.min_ = min; + requencys.push_back(item); + } + return ret; +} + + +/** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vector pattern) +{ + CALL_DEBUG_ENTER; + MessageParcel data; + if (!data.WriteInterfaceToken(MultimodalInputConnectProxy::GetDescriptor())) { + MMI_HILOGE("Failed to write descriptor"); + return ERR_INVALID_VALUE; + } + + WRITEINT64(data, number, ERR_INVALID_VALUE); + + /*******写入,数组大小 *******/ + WRITEINT32(data, static_cast(pattern.size()), ERR_INVALID_VALUE); + /******* Pattern of signal transmission in alternate on/off mode, in microseconds. **********/ + + for (const auto &item : pattern) { + WRITEINT64(data, item); + } + + MessageParcel reply; + MessageOption option; + sptr remote = Remote(); + CHKPR(remote, RET_ERR); + + int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), + data, reply, option); + if (ret != RET_OK) { + MMI_HILOGE("MultimodalInputConnectProxy::TransmitInfrared Send request fail, ret:%{public}d", ret); + } + return ret; +} + } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index 666872806..9eaabbc85 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -296,7 +296,16 @@ int32_t MultimodalInputConnectStub::OnRemoteRequest(uint32_t code, MessageParcel break; case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_INJECTION): return StubCancelInjection(data, reply); + break; + case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_OWN): + return StubHasIrEmitter(data, reply); break; + case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY): + return StubGetInfraredFrequencies(data, reply); + break; + case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT): + return StubTransmitInfrared(data, reply); + break; default: { MMI_HILOGE("Unknown code:%{public}u, go switch default", code); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -2067,5 +2076,101 @@ int32_t MultimodalInputConnectStub::StubCancelInjection(MessageParcel& data, Mes } return RET_OK; } + + + /** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ + +int32_t MultimodalInputConnectStub::StubHasIrEmitter(MessageParcel& data, MessageParcel& reply) +{ + MMI_HILOGE("StubHasIrEmitter for trace, delete this while finish. %d",__LINE__); + CALL_DEBUG_ENTER; + if (!PerHelper->VerifySystemApp()) { + MMI_HILOGE("Verify system APP failed"); + return ERROR_NOT_SYSAPI; + } + + bool hasIrEmitter = false; + int32_t ret = HasIrEmitter( hasIrEmitter); + if (ret != RET_OK) { + MMI_HILOGE("Call StubHasIrEmitter failed ret:%{public}d", ret); + return ret; + } + /**** ****/ + WRITEINT32(reply, ret); + WRITEBOOL(reply, hasIrEmitter, IPC_STUB_WRITE_PARCEL_ERR); + return RET_OK; +} + + +int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& data, MessageParcel& reply) +{ + CALL_DEBUG_ENTER; + if (!PerHelper->VerifySystemApp()) { + MMI_HILOGE("GetInfraredFrequencies Verify system APP failed"); + return ERROR_NOT_SYSAPI; + } + + if (!PerHelper->CheckInfraredEmmit()) { + MMI_HILOGE("MultimodalInputConnectStub::StubGetInfraredFrequencies permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); + return ERROR_NO_PERMISSION; + } + + std::vector requencys; + int32_t ret = GetInfraredFrequencies( requencys); + if (ret != RET_OK) { + MMI_HILOGE("Call StubGetInfraredFrequencies failed returnCode:%{public}d", ret); + return ret; + } + + WRITEINT64(reply, requencys.size()); + for(const auto &item : requencys) + { + WRITEINT64(reply, item.max_); + WRITEINT64(reply, item.min_); + } + return RET_OK; +} + + +int32_t MultimodalInputConnectStub::StubTransmitInfrared(MessageParcel& data, MessageParcel& reply) +{ + CALL_DEBUG_ENTER; + if (!PerHelper->VerifySystemApp()) { + MMI_HILOGE("StubTransmitInfrared Verify system APP failed"); + return ERROR_NOT_SYSAPI; + } + + if (!PerHelper->CheckInfraredEmmit()) { + MMI_HILOGE("StubTransmitInfrared permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); + return ERROR_NO_PERMISSION; + } + + int64_t number =0; + READINT64(data, number, IPC_PROXY_DEAD_OBJECT_ERR); + + int32_t pattern_len =0; + std::vector pattern; + READINT32(data, pattern_len, IPC_PROXY_DEAD_OBJECT_ERR); + + for(int32_t i =0; i < pattern_len; i++) { + int64_t value =0; + READINT64(data, value); + pattern.push_back(value); + } + int32_t ret = TransmitInfrared(number, pattern); + if (ret != RET_OK) { + MMI_HILOGE("Call StubTransmitInfrared failed returnCode:%{public}d", ret); + return ret; + } + /**** ****/ + WRITEINT32(reply, ret); + return RET_OK; +} + } // namespace MMI } // namespace OHOS diff --git a/service/module_loader/include/mmi_service.h b/service/module_loader/include/mmi_service.h index 9d947948b..b5e83bf67 100644 --- a/service/module_loader/include/mmi_service.h +++ b/service/module_loader/include/mmi_service.h @@ -32,6 +32,7 @@ #include "server_msg_handler.h" #include "uds_server.h" #include "nap_process.h" +#include "infrared_frequency_info.h" namespace OHOS { namespace MMI { @@ -134,6 +135,17 @@ public: int32_t CancelInjection() override; void OnAddSystemAbility(int32_t systemAbilityId, const std::string& deviceId) override; + int32_t HasIrEmitter( bool &hasIrEmitter) override; + int32_t GetInfraredFrequencies( std::vector& requencys) override; + int32_t TransmitInfrared(int64_t number, std::vector pattern) override; + + int32_t OnHasIrEmitter( bool &hasIrEmitter); + int32_t OnGetInfraredFrequencies(std::vector& requencys); + int32_t OnTransmitInfrared(int64_t number, std::vector pattern); + + + + #ifdef OHOS_BUILD_ENABLE_ANCO void InitAncoUds(); void StopAncoUds(); diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index 4a6e3dd8c..bc8171560 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2026,5 +2026,82 @@ int32_t MMIService::OnCancelInjection() { return sMsgHandler_.OnCancelInjection(); } + + +int32_t MMIService::HasIrEmitter(bool &hasIrEmitter) +{ + CALL_DEBUG_ENTER; + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnHasIrEmitter, this, std::ref(hasIrEmitter))); + if (ret != RET_OK) { + MMI_HILOGE("OnHasIrEmitter failed, ret:%{public}d", ret); + return RET_ERR; + } + return RET_OK; +} + +int32_t MMIService::GetInfraredFrequencies(std::vector& requencys) +{ + CALL_DEBUG_ENTER; + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnGetInfraredFrequencies, this, std::ref(requencys))); + if (ret != RET_OK) { + MMI_HILOGE("OnGetInfraredFrequencies failed, returnCode:%{public}d", ret); + return RET_ERR; + } + return RET_OK; + +} + +int32_t MMIService::TransmitInfrared(int64_t number, std::vector pattern) +{ + CALL_DEBUG_ENTER; + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnTransmitInfrared, this, number, pattern)); + if (ret != RET_OK) { + MMI_HILOGE("OnTransmitInfrared failed, returnCode:%{public}d", ret); + return RET_ERR; + } + return RET_OK; +} + +int32_t MMIService::OnHasIrEmitter( bool &hasIrEmitter) +{ + + /*** ***/ + return RET_OK; +} + +int32_t MMIService::OnGetInfraredFrequencies( std::vector& requencys) +{ + int32_t pid = GetCallingPid(); + /********get data from hdf ******/ + for(int i = 1; i < 20; i++) { + InfraredFrequency itemFrequency; + itemFrequency.max_ = 500*i; + itemFrequency.min_ = 100*i; + requencys.emplace_back(itemFrequency); + } + /*** construct requencys data as a string, and print the string to log ***/ + std::string context = ""; + int32_t size = static_cast(requencys.size()); + for(int32_t i = 0; i < size; i ++) { + context = context + "requencys[" + std::to_string(i) + + "]. max=" + std::to_string( requencys[i].max_) + ",min=" + std::to_string( requencys[i].min_) +";"; + } + MMI_HILOGI("MMIService::OnGetInfraredFrequencies data from hdf is. %{public}s " , context.c_str()); + return RET_OK; +} + +int32_t MMIService::OnTransmitInfrared( int64_t infraredFrequency, std::vector pattern) +{ + int32_t pid = GetCallingPid(); + std::string context = "infraredFrequency:" + std::to_string(infraredFrequency) + ";"; + int32_t size = static_cast(pattern.size()); + for(int32_t i = 0; i < size; i ++) { + context = context + "index:" + std::to_string( i) + ": pattern:" +std::to_string( pattern[i]) + ";"; + } + MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s \r\n" , context.c_str()); + /*** ***/ + return RET_OK; +} + } // namespace MMI } // namespace OHOS diff --git a/service/permission_helper/include/permission_helper.h b/service/permission_helper/include/permission_helper.h index 4ad116a6d..5510e9e06 100644 --- a/service/permission_helper/include/permission_helper.h +++ b/service/permission_helper/include/permission_helper.h @@ -37,9 +37,25 @@ public: int32_t GetTokenType(); bool CheckDispatchControl(); bool VerifySystemApp(); + bool CheckInfraredEmmit(); private: bool CheckHapPermission(uint32_t tokenId, uint32_t required); + + /*** + * tokenId: id of applicaiton + * permissionCode: code of permission for checked + * returnedValue: true: check successful; false: check failed + * ****/ + bool CheckHapPermission(uint32_t tokenId, std::string permissionCode); + + + /*** + * permissionCode: code of permission for checked + * returnedValue: true: check successful; false: check failed + * ****/ + bool CheckHapPermission(std::string permissionCode); + bool CheckMonitorPermission(uint32_t tokenId); bool CheckInterceptorPermission(uint32_t tokenId); bool CheckDispatchControlPermission(uint32_t tokenId); diff --git a/service/permission_helper/src/permission_helper.cpp b/service/permission_helper/src/permission_helper.cpp index 0d4305be3..7eb791bb1 100644 --- a/service/permission_helper/src/permission_helper.cpp +++ b/service/permission_helper/src/permission_helper.cpp @@ -68,6 +68,8 @@ bool PermissionHelper::CheckPermission(uint32_t required) } } + + bool PermissionHelper::CheckMonitor() { CALL_DEBUG_ENTER; @@ -118,6 +120,62 @@ bool PermissionHelper::CheckHapPermission(uint32_t tokenId, uint32_t required) return true; } +/*** + * add this funciton just because CheckHapPermission(int, String) and CheckHapPermission(string ) are private function. + * In fact I want add the previous two functions as public, but consider the privacy and security add them as private + * ***/ +bool PermissionHelper::CheckInfraredEmmit() { + std::string infraredEmmitPermissionCode = "ohos.permission.INFRARED_EMITTER"; + return CheckHapPermission(infraredEmmitPermissionCode); +} + +/*** + * tokenId: id of applicaiton + * permissionCode: code of permission for checked + * returnedValue: true: check successful; false: check failed + * permissionCode of InfraredEmitter Function: ohos.permission.INFRARED_EMITTER + * CheckHapPermission(pid, permissionCode) + * ****/ +bool PermissionHelper::CheckHapPermission(const std::string permissionCode) { + + CALL_DEBUG_ENTER; + auto tokenId = IPCSkeleton::GetCallingTokenID(); + return CheckHapPermission(tokenId, permissionCode); +} + + +/*** + * tokenId: id of applicaiton + * permissionCode: code of permission for checked + * returnedValue: true: check successful; false: check failed + * permissionCode of InfraredEmitter Function: ohos.permission.InfraredEmitter + * CheckHapPermission(pid, permissionCode) + * ****/ +bool PermissionHelper::CheckHapPermission(uint32_t tokenId, const std::string permissionCode) { + CALL_DEBUG_ENTER; + auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId); + if ((tokenType == OHOS::Security::AccessToken::TOKEN_HAP) || + (tokenType == OHOS::Security::AccessToken::TOKEN_NATIVE)) { + /*** check permission later ***/ + } else if (tokenType == OHOS::Security::AccessToken::TOKEN_SHELL) { + MMI_HILOGI("Token type is shell"); + return true; + } else { + MMI_HILOGE("Unsupported token type:%{public}d", tokenType); + return false; + } + + /*** check permission here ***/ + std::string context = "For CheckHapPermission. permissionCode" + permissionCode + "; applicationId:" + std::to_string(tokenId); + int32_t ret = OHOS::Security::AccessToken::AccessTokenKit::VerifyAccessToken(tokenId, permissionCode); + if (ret != OHOS::Security::AccessToken::PERMISSION_GRANTED) { + MMI_HILOGE("Check permission: %{public}s failed for applicationId:%{public}d, and ret:%{public}d", permissionCode.c_str(), tokenId, ret); + return false; + } + MMI_HILOGD("Check permission( %{public}s) permission success", permissionCode.c_str()); + return true; +} + bool PermissionHelper::CheckMonitorPermission(uint32_t tokenId) { static const std::string inputMonitor = "ohos.permission.INPUT_MONITORING"; -- Gitee From 4d5e7f5b23d8a8000ddf8420c60c67f54d042ab9 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Thu, 18 Apr 2024 16:47:28 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E6=A3=80=E8=A7=86=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=A3=80=E8=A7=86=E6=84=8F=E8=A7=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=90=8E=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 --- .../src/js_register_module.cpp | 146 +++++++----------- .../test/register_module_test.cpp | 88 +++++------ .../include/input_manager_impl.h | 2 +- .../event_handler/src/input_manager_impl.cpp | 6 +- frameworks/proxy/events/src/input_manager.cpp | 6 +- .../innerkits/proxy/include/input_manager.h | 2 +- .../include/i_multimodal_input_connect.h | 6 +- .../multimodal_input_connect_manager.h | 2 +- .../include/multimodal_input_connect_proxy.h | 8 +- .../src/multimodal_input_connect_manager.cpp | 12 +- .../src/multimodal_input_connect_proxy.cpp | 27 ++-- .../src/multimodal_input_connect_stub.cpp | 20 +-- service/module_loader/include/mmi_service.h | 4 +- service/module_loader/src/mmi_service.cpp | 26 ++-- 14 files changed, 150 insertions(+), 205 deletions(-) diff --git a/frameworks/napi/infrared_emitter/src/js_register_module.cpp b/frameworks/napi/infrared_emitter/src/js_register_module.cpp index 641ccbc51..c76c143b5 100644 --- a/frameworks/napi/infrared_emitter/src/js_register_module.cpp +++ b/frameworks/napi/infrared_emitter/src/js_register_module.cpp @@ -26,10 +26,11 @@ namespace OHOS { namespace MMI { namespace { - constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, MMI_LOG_DOMAIN, "JsInfraredRegister" }; +constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, MMI_LOG_DOMAIN, "JsInfraredRegister" }; +const uint32_t NUMBER_PARAMETERS = 2; +const uint32_t NUMBER_DEFAULT = 0; } - bool CheckType(const napi_env& env, const napi_value& value, const napi_valuetype& type) { napi_valuetype valuetype = napi_undefined; @@ -59,6 +60,7 @@ bool ParseInt64(const napi_env& env, const napi_value& value, int64_t& result) } if (napi_get_value_int64(env, value, &result) != napi_ok) { MMI_HILOGE("ParseInt64 cannot get value int64"); + THROWERR_API9(env, COMMON_PARAMETER_ERROR, "element of pattern", "Int64"); return false; } return true; @@ -68,74 +70,69 @@ bool ParsePatternArray(const napi_env& env, const napi_value& value, std::vector { uint32_t length = 0; if (!IsArray(env, value)) { - MMI_HILOGE(" ParsePatternArray second para not array"); + MMI_HILOGE("ParsePatternArray second para not array"); THROWERR_API9(env, COMMON_PARAMETER_ERROR, "pattern", "Array"); return false; } - napi_get_array_length(env, value, &length); - // MMI_HILOGE(" ParsePatternArray lengtyh of array; length:%{public}d", length); - + napi_get_array_length(env, value, &length); for (uint32_t i = 0; i < length; i++) { napi_value valueArray = nullptr; if (napi_get_element(env, value, i, &valueArray) != napi_ok) { MMI_HILOGE("ParsePatternArray napi_get_element failed. index:%{public}d", i); - return false; + return false; } - int64_t res = 0; - + int64_t res = 0; if (!ParseInt64(env, valueArray, res)) { - MMI_HILOGE(" ParsePatternArray parse array fail. index:%{public}d", i); + MMI_HILOGE("ParsePatternArray parse array fail. index:%{public}d", i); + THROWERR_API9(env, COMMON_PARAMETER_ERROR, "element of pattern", "Int64"); return false; } - // MMI_HILOGE("ParsePatternArray parse array[%{public}d] succeed. value:%{public}" PRIu64, i, res); result.emplace_back(res); } return true; }; - - -bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info &info, int64_t & infraredFrequency, -std::vector & vecPattern) +bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info &info, int64_t & infraredFrequency, + std::vector & vecPattern) { -CALL_DEBUG_ENTER; -size_t argc = 2; -napi_value argv[2]; -CHKRF(napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr), GET_CB_INFO); -// MMI_HILOGE(" result from ParseTransmitInfraredJSParam argc :%{public}zu", argc); -if ( argc != 2) { - MMI_HILOGE("ParseTransmitInfraredJSParam Parameter number error"); - return false; -} - -if (!CheckType(env, argv[0], napi_number)) { - MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] type is invalid. "); - THROWERR_API9(env, COMMON_PARAMETER_ERROR, "infraredFrequency", "number"); - return false; + CALL_DEBUG_ENTER; + size_t argc = NUMBER_DEFAULT; + napi_value argv[NUMBER_PARAMETERS]; + CHKRF(napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr), GET_CB_INFO); + /******* modify NUMBER_PARAMETERS as const *******/ + if ( argc != NUMBER_PARAMETERS) { + MMI_HILOGE("ParseTransmitInfraredJSParam Parameter number error"); + return false; + } + if (!CheckType(env, argv[0], napi_number)) { + MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] type is invalid. "); + THROWERR_API9(env, COMMON_PARAMETER_ERROR, "infraredFrequency", "number"); + return false; + } + CHKRF(napi_get_value_int64(env, argv[0], &infraredFrequency), "get number64 value error"); + if(!ParsePatternArray(env, argv[1], vecPattern)) { + MMI_HILOGE("ParsePatternArray parse pattern array fail." ); + return false; + } + return true; } - -CHKRF(napi_get_value_int64(env, argv[0], &infraredFrequency), "get number64 value error"); -// std::string context = std::to_string(infraredFrequency); -// MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] . :%{public}s", context.c_str()); -if(!ParsePatternArray(env, argv[1], vecPattern)) { - MMI_HILOGE("ParsePatternArray parse pattern array fail." ); - return false; -} -return true; -} static void ThrowError(napi_env env, int32_t code, std::string operateType) { int32_t errorCode = -code; + if(code > 0) { + errorCode = code; + } MMI_HILOGE("Operate %{public}s requst error. returnCode:%{public}d", operateType.c_str(), code); if (errorCode == COMMON_PERMISSION_CHECK_ERROR) { THROWERR_API9(env, COMMON_PERMISSION_CHECK_ERROR, "Infrared", "ohos.permission.INFRARED_EMITTER"); + } else if(COMMON_USE_SYSAPI_ERROR == errorCode) { + THROWERR_API9(env, COMMON_USE_SYSAPI_ERROR, "Infrared", "Non system applications use system API"); } else { return; } } - napi_value CreateInfraredFrequencyItem(napi_env env, const InfraredFrequency &infraredFrequency) { napi_value result; @@ -154,7 +151,6 @@ static napi_value HasIrEmitter(napi_env env, napi_callback_info info) { CALL_DEBUG_ENTER; napi_value result = nullptr; - napi_status status = napi_get_boolean(env, true, &result); if (status != napi_ok) { THROWERR_API9(env, COMMON_PARAMETER_ERROR, "type", "boolean"); @@ -165,92 +161,68 @@ static napi_value HasIrEmitter(napi_env env, napi_callback_info info) static napi_value GetInfraredFrequencies(napi_env env, napi_callback_info info) { - // MMI_HILOGI("***************************** GetInfraredFrequencies start para : " ); CALL_DEBUG_ENTER; napi_value result = nullptr; CHKRP(napi_create_array(env, &result), CREATE_ARRAY); std::vector requencys; int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); - /********处理权限错误的问题 *******/ - if(0 > ret) { - MMI_HILOGE("GetInfraredFrequencies requst error. Permission Error. returnCode:%{public}d", ret); - ThrowError(env, ret, "GetInfraredFrequencies"); - return nullptr; - } if(ret != RET_OK) { - if(COMMON_PERMISSION_CHECK_ERROR == ret) { - MMI_HILOGE("GetInfraredFrequencies requst error. Permission Error. Positive returnCode:%{public}d", ret); + /** error permission business. permissionCode is a negative value ***/ + if(RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { + MMI_HILOGE("GetInfraredFrequencies requst error. Permission Error or Not System APP. Positive returnCode:%{public}d", ret); ThrowError(env, ret, "GetInfraredFrequencies"); - return nullptr; } MMI_HILOGE("Parse GetInfraredFrequencies requst error. returnCode: %{public}d", ret); return result; } - int32_t size = requencys.size(); - std::string logPrint = "size:" + std::to_string(size) + ";\r\n"; - MMI_HILOGI(" result from GetInfraredFrequencies :%{public}s " , logPrint.c_str()); - for(int32_t i = 0; i < size; i++) - { + size_t size = requencys.size(); + std::string logPrint = "size:" + std::to_string(size) + ";"; + CHKRP(napi_create_array(env, &result), CREATE_ARRAY); + for(size_t i = 0; i < size; i++) { InfraredFrequency frequencyItem = requencys[i]; - logPrint = std::to_string(i) + "max:" + std::to_string(frequencyItem.max_) + ";min:" - + std::to_string(frequencyItem.min_) + ";\r\n"; - MMI_HILOGI("index:[%{}d]:%{public}s " ,i ,logPrint.c_str()); - } - - CHKRP(napi_create_array(env, &result), CREATE_ARRAY); - for(size_t i = 0; i < requencys.size(); i++) { + logPrint = logPrint + std::to_string(i) + "max:" + std::to_string(frequencyItem.max_) + ";min:" + + std::to_string(frequencyItem.min_) + ";"; napi_value item = CreateInfraredFrequencyItem(env, requencys[i]); if(item == nullptr) { MMI_HILOGE("CreateInfraredFrequencyItem error"); return nullptr; } - //napi_set_element(env, result, i, item); CHKRP(napi_set_element(env, result, i, item), SET_ELEMENT); } - /********* print debug log, delete this while finish test ********/ + MMI_HILOGD("js_register_module.GetInfraredFrequencies :%{public}s ", logPrint.c_str()); return result; } static napi_value TransmitInfrared(napi_env env, napi_callback_info info) { - //MMI_HILOGI(" js_register_module.TransmitInfrared start para : " ); CALL_DEBUG_ENTER; napi_value result = nullptr; - int64_t number =-1; + int64_t number = -1; std::vector pattern; if(!ParseTransmitInfraredJSParam(env, info, number, pattern)) { MMI_HILOGE("Parse TransmitInfrared JSParam error"); THROWERR_CUSTOM(env, COMMON_PARAMETER_ERROR, "Parse TransmitInfrared JSParam error"); return nullptr; } - int32_t size = static_cast(pattern.size()); - std::string context = "number:" + std::to_string(number) + "\r\n" + "; size=" + std::to_string(size) + ";\r\n"; - MMI_HILOGI("js_register_module.TransmitInfrared para size :%{public}s " , context.c_str()); + std::string context = "number:" + std::to_string(number) + "\n;" + "; size=" + std::to_string(size) + ";"; for(int32_t i = 0; i < size; i++) { - context = std::to_string(i) + ": pattern: " + std::to_string(pattern[i]) + ";\r\n"; - MMI_HILOGI("***************************** js_register_module TransmitInfrared para :%{public}s " , context.c_str()); - } - int32_t ret = InputManager::GetInstance()->TransmitInfrared(number, pattern); - /********处理权限错误的问题 *******/ - if(0 > ret) { - MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error. returnCode:%{public}d", ret); - ThrowError(env, ret, "TransmitInfrared"); - return nullptr; - } - if(ret != RET_OK) { - if(COMMON_PERMISSION_CHECK_ERROR == ret) { - MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error. Positive returnCode:%{public}d", ret); + context = context + std::to_string(i) + ": pattern: " + std::to_string(pattern[i]) + ";"; + } + MMI_HILOGD("js_register_module.TransmitInfrared para size :%{public}s " , context.c_str()); + int32_t ret = InputManager::GetInstance()->TransmitInfrared(number, pattern); + /******** permission error service *******/ + if(ret != RET_OK) { + if(RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { + MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error or Not System APP.. Positive returnCode:%{public}d", ret); ThrowError(env, ret, "TransmitInfrared"); - return nullptr; } - MMI_HILOGE("TransmitInfrared requst error. returnCode:%{public}d", ret); + MMI_HILOGE("js_register_module.TransmitInfrared requst error. returnCode:%{public}d", ret); return nullptr; - } + } CHKRP(napi_create_int32(env, 0, &result), CREATE_INT32); return result; } - EXTERN_C_START static napi_value MmiInit(napi_env env, napi_value exports) { diff --git a/frameworks/napi/infrared_emitter/test/register_module_test.cpp b/frameworks/napi/infrared_emitter/test/register_module_test.cpp index dc7cbbaca..184d2fe15 100644 --- a/frameworks/napi/infrared_emitter/test/register_module_test.cpp +++ b/frameworks/napi/infrared_emitter/test/register_module_test.cpp @@ -1,64 +1,58 @@ - - - namespace OHOS { namespace MMI { namespace { -using namespace testing::ext; +using namespace testing::ext; } // namespace /********* 实现DTS的接口如何测试? *********/ class RegisterModuleTest : public testing::Test { - public: + public: /***** 测试使用红外的频率(使用返回的第一个频率) ******/ int64_t frequency_Max; int64_t frequency_Min; }; - HWTEST_F(RegisterModuleTest, GetInfraredFrequenciesTest, TestSize.Level1) - { - std::vector requencys; - int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); - bool testResult = true; - int32_t size = requencys.size(); - EXPECT_GE(size, 1) - - frequency_Max = requencys[0].max_; - frequency_Min = requencys[0].min_; - - for(int32_t i =0; i< size; i++) { - InfraredFrequency fre = requencys[i]; - if(fre.max_ < fre.min_) { - testResult = false; - break; - } +HWTEST_F(RegisterModuleTest, GetInfraredFrequenciesTest, TestSize.Level1) +{ + std::vector requencys; + int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); + bool testResult = true; + int32_t size = requencys.size(); + EXPECT_GE(size, 1); + frequency_Max = requencys[0].max_; + frequency_Min = requencys[0].min_; + for(int32_t i =0; i< size; i++) { + InfraredFrequency fre = requencys[i]; + if(fre.max_ < fre.min_) { + testResult = false; + break; } - EXPECT_EQ(break, true); } - - /** - * @tc.name: EventDumpTest_CheckCount_001 - * @tc.desc: Event dump CheckCount - * @tc.type: FUNC - * @tc.require:AR000GJG6G - */ - HWTEST_F(RegisterModuleTest, TransmitInfraredTest, TestSize.Level1) - { - std::vector requencys; - int64_t dist = (frequency_Max - frequency_Min) / 10; - - for(int i = 0; i< 10; i++) { - requencys.push_back(dist * i + frequency_Min); - } - int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min ,requencys ); - EXPECT_EQ(ret, 0); - } - - HWTEST_F(RegisterModuleTest, HasIrEmitterTest, TestSize.Level1) - { - bool hasEmmited = false; - int32_t ret = InputManager::GetInstance()->HasIrEmitter(hasEmmited); - EXPECT_EQ(hasEmmited, true); + EXPECT_EQ(break, true); +} + +/** + * @tc.name: EventDumpTest_CheckCount_001 + * @tc.desc: Event dump CheckCount + * @tc.type: FUNC + * @tc.require:AR000GJG6G + */ +HWTEST_F(RegisterModuleTest, TransmitInfraredTest, TestSize.Level1) +{ + std::vector requencys; + int64_t dist = (frequency_Max - frequency_Min) / 10; + + for(int i = 0; i< 10; i++) { + requencys.push_back(dist * i + frequency_Min); } + int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min ,requencys ); + EXPECT_EQ(ret, 0); +} +HWTEST_F(RegisterModuleTest, HasIrEmitterTest, TestSize.Level1) +{ + bool hasEmmited = false; + int32_t ret = InputManager::GetInstance()->HasIrEmitter(hasEmmited); + EXPECT_EQ(hasEmmited, true); +} } // namespace MMI diff --git a/frameworks/proxy/event_handler/include/input_manager_impl.h b/frameworks/proxy/event_handler/include/input_manager_impl.h index 8ae9c4049..d01f8ba3a 100644 --- a/frameworks/proxy/event_handler/include/input_manager_impl.h +++ b/frameworks/proxy/event_handler/include/input_manager_impl.h @@ -196,7 +196,7 @@ public: int32_t HasIrEmitter(bool &hasIrEmitter); int32_t GetInfraredFrequencies(std::vector& requencys); - int32_t TransmitInfrared(int64_t number, std::vector pattern); + int32_t TransmitInfrared(int64_t number, std::vector& pattern); private: diff --git a/frameworks/proxy/event_handler/src/input_manager_impl.cpp b/frameworks/proxy/event_handler/src/input_manager_impl.cpp index 0ba807f98..d19969098 100644 --- a/frameworks/proxy/event_handler/src/input_manager_impl.cpp +++ b/frameworks/proxy/event_handler/src/input_manager_impl.cpp @@ -2031,7 +2031,7 @@ int32_t InputManagerImpl::CancelInjection() * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t InputManagerImpl::HasIrEmitter(bool &hasIrEmitter) + int32_t InputManagerImpl::HasIrEmitter(bool &hasIrEmitter) { CALL_INFO_TRACE; return MultimodalInputConnMgr->HasIrEmitter(hasIrEmitter); @@ -2043,7 +2043,7 @@ int32_t InputManagerImpl::CancelInjection() * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t InputManagerImpl::GetInfraredFrequencies(std::vector& requencys) + int32_t InputManagerImpl::GetInfraredFrequencies(std::vector& requencys) { CALL_INFO_TRACE; return MultimodalInputConnMgr->GetInfraredFrequencies(requencys); @@ -2055,7 +2055,7 @@ int32_t InputManagerImpl::CancelInjection() * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t InputManagerImpl::TransmitInfrared(int64_t number, std::vector pattern) + int32_t InputManagerImpl::TransmitInfrared(int64_t number, std::vector& pattern) { CALL_INFO_TRACE; return MultimodalInputConnMgr->TransmitInfrared(number, pattern); diff --git a/frameworks/proxy/events/src/input_manager.cpp b/frameworks/proxy/events/src/input_manager.cpp index 4fa567486..b23ef56d3 100644 --- a/frameworks/proxy/events/src/input_manager.cpp +++ b/frameworks/proxy/events/src/input_manager.cpp @@ -542,7 +542,7 @@ void InputManager::Authorize(bool isAuthorize) */ int32_t InputManager::GetInfraredFrequencies(std::vector& requencys) { - return InputMgrImpl.GetInfraredFrequencies(requencys); + return InputMgrImpl.GetInfraredFrequencies(requencys); } /** * @brief user IrEmitter with parameter number and pattern. @@ -551,9 +551,9 @@ void InputManager::Authorize(bool isAuthorize) * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t InputManager::TransmitInfrared(int64_t number, std::vector pattern) + int32_t InputManager::TransmitInfrared(int64_t number, std::vector& pattern) { - return InputMgrImpl.TransmitInfrared(number, pattern); + return InputMgrImpl.TransmitInfrared(number, pattern); } diff --git a/interfaces/native/innerkits/proxy/include/input_manager.h b/interfaces/native/innerkits/proxy/include/input_manager.h index 79e897fc0..e1e994d05 100644 --- a/interfaces/native/innerkits/proxy/include/input_manager.h +++ b/interfaces/native/innerkits/proxy/include/input_manager.h @@ -840,7 +840,7 @@ public: * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t TransmitInfrared(int64_t number, std::vector pattern); + int32_t TransmitInfrared(int64_t number, std::vector& pattern); private: InputManager() = default; diff --git a/service/connect_manager/include/i_multimodal_input_connect.h b/service/connect_manager/include/i_multimodal_input_connect.h index 61a028f77..e0948c71b 100644 --- a/service/connect_manager/include/i_multimodal_input_connect.h +++ b/service/connect_manager/include/i_multimodal_input_connect.h @@ -130,9 +130,9 @@ public: virtual int32_t GetKeyState(std::vector &pressedKeys, std::map &specialKeysState) = 0; virtual int32_t Authorize(bool isAuthorize) = 0; virtual int32_t CancelInjection() = 0; - virtual int32_t HasIrEmitter(bool &hasIrEmitter) =0; - virtual int32_t GetInfraredFrequencies( std::vector& requencys) =0; - virtual int32_t TransmitInfrared( int64_t number, std::vector pattern) =0; + virtual int32_t HasIrEmitter(bool &hasIrEmitter) = 0; + virtual int32_t GetInfraredFrequencies(std::vector& requencys) = 0; + virtual int32_t TransmitInfrared(int64_t number, std::vector& pattern) = 0; }; } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/include/multimodal_input_connect_manager.h b/service/connect_manager/include/multimodal_input_connect_manager.h index da6973816..d451a80e9 100644 --- a/service/connect_manager/include/multimodal_input_connect_manager.h +++ b/service/connect_manager/include/multimodal_input_connect_manager.h @@ -125,7 +125,7 @@ public: int32_t HasIrEmitter( bool &hasIrEmitter); int32_t GetInfraredFrequencies(std::vector& requencys); - int32_t TransmitInfrared(int64_t number, std::vector pattern); + int32_t TransmitInfrared(int64_t number, std::vector& pattern); void AddServiceWatcher(std::shared_ptr watcher); void RemoveServiceWatcher(std::shared_ptr watcher); diff --git a/service/connect_manager/include/multimodal_input_connect_proxy.h b/service/connect_manager/include/multimodal_input_connect_proxy.h index 89166b143..d10066ee1 100644 --- a/service/connect_manager/include/multimodal_input_connect_proxy.h +++ b/service/connect_manager/include/multimodal_input_connect_proxy.h @@ -126,7 +126,7 @@ public: * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t HasIrEmitter( bool &hasIrEmitter) override; + int32_t HasIrEmitter(bool &hasIrEmitter) override; /** * @brief Get InfraredFrequency of the IrEmitter in device. @@ -134,16 +134,16 @@ public: * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t GetInfraredFrequencies( std::vector& requencys) override; + int32_t GetInfraredFrequencies(std::vector& requencys) override; /** * @brief user IrEmitter with parameter number and pattern. * @param number Frequency of IrEmitter works . * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. + * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t TransmitInfrared( int64_t number, std::vector pattern) override; + int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; private: diff --git a/service/connect_manager/src/multimodal_input_connect_manager.cpp b/service/connect_manager/src/multimodal_input_connect_manager.cpp index d318e156b..b57d411d2 100644 --- a/service/connect_manager/src/multimodal_input_connect_manager.cpp +++ b/service/connect_manager/src/multimodal_input_connect_manager.cpp @@ -702,10 +702,10 @@ int32_t MultimodalInputConnectManager::CancelInjection() * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter) + int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter) { CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->HasIrEmitter( hasIrEmitter); + return multimodalInputConnectService_->HasIrEmitter(hasIrEmitter); } /** @@ -714,10 +714,10 @@ int32_t MultimodalInputConnectManager::CancelInjection() * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t MultimodalInputConnectManager::GetInfraredFrequencies( std::vector& requencys) + int32_t MultimodalInputConnectManager::GetInfraredFrequencies(std::vector& requencys) { CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->GetInfraredFrequencies( requencys); + return multimodalInputConnectService_->GetInfraredFrequencies(requencys); } /** * @brief user IrEmitter with parameter number and pattern. @@ -726,10 +726,10 @@ int32_t MultimodalInputConnectManager::CancelInjection() * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ - int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector pattern) + int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector& pattern) { CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->TransmitInfrared( number, pattern); + return multimodalInputConnectService_->TransmitInfrared(number, pattern); } diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index f453546db..7d2c07ed4 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -1907,7 +1907,7 @@ int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) if (!data.WriteInterfaceToken(MultimodalInputConnectProxy::GetDescriptor())) { MMI_HILOGE("Failed to write descriptor"); return ERR_INVALID_VALUE; - } + } // int32_t pid = GetCallingPid(); int32_t pid = 0; // /**写入pid**/ @@ -1919,11 +1919,12 @@ int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_OWN), data, reply, option); /*** hasIrEmitter ***/ - READBOOL(reply, hasIrEmitter, IPC_PROXY_DEAD_OBJECT_ERR); + READBOOL(reply, hasIrEmitter, IPC_PROXY_DEAD_OBJECT_ERR); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::HasIrEmitter Send request fail, ret:%{public}d", ret); + return ret; } - return ret; + return RET_OK; } /** @@ -1939,9 +1940,7 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector remote = Remote(); @@ -1950,12 +1949,10 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector pattern) +int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vector& pattern) { CALL_DEBUG_ENTER; MessageParcel data; @@ -1984,28 +1981,24 @@ int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vecto MMI_HILOGE("Failed to write descriptor"); return ERR_INVALID_VALUE; } - WRITEINT64(data, number, ERR_INVALID_VALUE); - - /*******写入,数组大小 *******/ + /******* write size of array to data *******/ WRITEINT32(data, static_cast(pattern.size()), ERR_INVALID_VALUE); /******* Pattern of signal transmission in alternate on/off mode, in microseconds. **********/ - for (const auto &item : pattern) { WRITEINT64(data, item); } - MessageParcel reply; MessageOption option; sptr remote = Remote(); CHKPR(remote, RET_ERR); - int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), data, reply, option); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::TransmitInfrared Send request fail, ret:%{public}d", ret); + return ret; } - return ret; + return RET_OK; } } // namespace MMI diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index 9eaabbc85..768c3c45b 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -2092,15 +2092,13 @@ int32_t MultimodalInputConnectStub::StubHasIrEmitter(MessageParcel& data, Messag if (!PerHelper->VerifySystemApp()) { MMI_HILOGE("Verify system APP failed"); return ERROR_NOT_SYSAPI; - } - + } bool hasIrEmitter = false; int32_t ret = HasIrEmitter( hasIrEmitter); if (ret != RET_OK) { MMI_HILOGE("Call StubHasIrEmitter failed ret:%{public}d", ret); return ret; } - /**** ****/ WRITEINT32(reply, ret); WRITEBOOL(reply, hasIrEmitter, IPC_STUB_WRITE_PARCEL_ERR); return RET_OK; @@ -2113,20 +2111,17 @@ int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& da if (!PerHelper->VerifySystemApp()) { MMI_HILOGE("GetInfraredFrequencies Verify system APP failed"); return ERROR_NOT_SYSAPI; - } - + } if (!PerHelper->CheckInfraredEmmit()) { MMI_HILOGE("MultimodalInputConnectStub::StubGetInfraredFrequencies permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); return ERROR_NO_PERMISSION; } - std::vector requencys; - int32_t ret = GetInfraredFrequencies( requencys); + int32_t ret = GetInfraredFrequencies(requencys); if (ret != RET_OK) { MMI_HILOGE("Call StubGetInfraredFrequencies failed returnCode:%{public}d", ret); return ret; } - WRITEINT64(reply, requencys.size()); for(const auto &item : requencys) { @@ -2143,20 +2138,16 @@ int32_t MultimodalInputConnectStub::StubTransmitInfrared(MessageParcel& data, Me if (!PerHelper->VerifySystemApp()) { MMI_HILOGE("StubTransmitInfrared Verify system APP failed"); return ERROR_NOT_SYSAPI; - } - + } if (!PerHelper->CheckInfraredEmmit()) { MMI_HILOGE("StubTransmitInfrared permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); return ERROR_NO_PERMISSION; - } - + } int64_t number =0; READINT64(data, number, IPC_PROXY_DEAD_OBJECT_ERR); - int32_t pattern_len =0; std::vector pattern; READINT32(data, pattern_len, IPC_PROXY_DEAD_OBJECT_ERR); - for(int32_t i =0; i < pattern_len; i++) { int64_t value =0; READINT64(data, value); @@ -2167,7 +2158,6 @@ int32_t MultimodalInputConnectStub::StubTransmitInfrared(MessageParcel& data, Me MMI_HILOGE("Call StubTransmitInfrared failed returnCode:%{public}d", ret); return ret; } - /**** ****/ WRITEINT32(reply, ret); return RET_OK; } diff --git a/service/module_loader/include/mmi_service.h b/service/module_loader/include/mmi_service.h index b5e83bf67..a2edd5d9f 100644 --- a/service/module_loader/include/mmi_service.h +++ b/service/module_loader/include/mmi_service.h @@ -137,11 +137,11 @@ public: int32_t HasIrEmitter( bool &hasIrEmitter) override; int32_t GetInfraredFrequencies( std::vector& requencys) override; - int32_t TransmitInfrared(int64_t number, std::vector pattern) override; + int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; int32_t OnHasIrEmitter( bool &hasIrEmitter); int32_t OnGetInfraredFrequencies(std::vector& requencys); - int32_t OnTransmitInfrared(int64_t number, std::vector pattern); + int32_t OnTransmitInfrared(int64_t number, std::vector& pattern); diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index bc8171560..746dcb56f 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2051,7 +2051,7 @@ int32_t MMIService::GetInfraredFrequencies(std::vector& reque } -int32_t MMIService::TransmitInfrared(int64_t number, std::vector pattern) +int32_t MMIService::TransmitInfrared(int64_t number, std::vector& pattern) { CALL_DEBUG_ENTER; int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnTransmitInfrared, this, number, pattern)); @@ -2064,42 +2064,38 @@ int32_t MMIService::TransmitInfrared(int64_t number, std::vector patter int32_t MMIService::OnHasIrEmitter( bool &hasIrEmitter) { - - /*** ***/ + /** defautl not support IR **/ + hasIrEmitter = false; return RET_OK; } -int32_t MMIService::OnGetInfraredFrequencies( std::vector& requencys) -{ - int32_t pid = GetCallingPid(); - /********get data from hdf ******/ +int32_t MMIService::OnGetInfraredFrequencies(std::vector& requencys) +{ + /** get data from hdf **/ for(int i = 1; i < 20; i++) { InfraredFrequency itemFrequency; itemFrequency.max_ = 500*i; itemFrequency.min_ = 100*i; requencys.emplace_back(itemFrequency); } - /*** construct requencys data as a string, and print the string to log ***/ std::string context = ""; int32_t size = static_cast(requencys.size()); for(int32_t i = 0; i < size; i ++) { context = context + "requencys[" + std::to_string(i) + - "]. max=" + std::to_string( requencys[i].max_) + ",min=" + std::to_string( requencys[i].min_) +";"; + "]. max=" + std::to_string(requencys[i].max_) + ",min=" + std::to_string(requencys[i].min_) +";"; } - MMI_HILOGI("MMIService::OnGetInfraredFrequencies data from hdf is. %{public}s " , context.c_str()); + MMI_HILOGD("MMIService::OnGetInfraredFrequencies data from hdf is. %{public}s " , context.c_str()); return RET_OK; } -int32_t MMIService::OnTransmitInfrared( int64_t infraredFrequency, std::vector pattern) +int32_t MMIService::OnTransmitInfrared(int64_t infraredFrequency, std::vector& pattern) { - int32_t pid = GetCallingPid(); std::string context = "infraredFrequency:" + std::to_string(infraredFrequency) + ";"; int32_t size = static_cast(pattern.size()); for(int32_t i = 0; i < size; i ++) { - context = context + "index:" + std::to_string( i) + ": pattern:" +std::to_string( pattern[i]) + ";"; + context = context + "index:" + std::to_string(i) + ": pattern:" +std::to_string(pattern[i]) + ";"; } - MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s \r\n" , context.c_str()); - /*** ***/ + MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s \n", context.c_str()); return RET_OK; } -- Gitee From 284ce10538cee7f7ea2a8af8eea516aa00ba4479 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 11:15:52 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E6=A0=B9=E6=8D=AEcodecheck=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: Iae227301973c001c154ebdb0293893f007f40fbc --- BUILD.gn | 2 +- .../include/js_register_module.h | 23 +++--- .../src/js_register_module.cpp | 60 ++++++++-------- .../test/register_module_test.cpp | 39 +++++++--- .../include/input_manager_impl.h | 1 - .../event_handler/src/input_manager_impl.cpp | 71 ++++++++++--------- frameworks/proxy/events/src/input_manager.cpp | 66 +++++++++-------- .../event/include/infrared_frequency_info.h | 9 +-- multimodalinput_mini.gni | 1 - .../include/multimodal_input_connect_proxy.h | 9 ++- .../src/multimodal_input_connect_manager.cpp | 71 +++++++++---------- .../src/multimodal_input_connect_proxy.cpp | 25 +++---- .../src/multimodal_input_connect_stub.cpp | 41 +++++------ service/module_loader/include/mmi_service.h | 9 +-- service/module_loader/src/mmi_service.cpp | 45 ++++++------ .../include/permission_helper.h | 6 +- .../src/permission_helper.cpp | 39 +++++----- 17 files changed, 254 insertions(+), 263 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 1fa272b7e..ec248d16b 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -109,7 +109,7 @@ group("input_jsapi_group") { deps += [ "frameworks/napi/short_key:shortkey" ] } if (input_feature_infrared_emitter) { - deps += [ "frameworks/napi/infrared_emitter:infraredemitter" ] + deps += [ "frameworks/napi/infrared_emitter:infraredemitter"] } } } diff --git a/frameworks/napi/infrared_emitter/include/js_register_module.h b/frameworks/napi/infrared_emitter/include/js_register_module.h index a76c2686c..39a9fc2c7 100644 --- a/frameworks/napi/infrared_emitter/include/js_register_module.h +++ b/frameworks/napi/infrared_emitter/include/js_register_module.h @@ -13,32 +13,27 @@ * limitations under the License. */ - - /**** - * - 【需求描述】: +* +*【需求描述】: 支持如下接口: -1、获取设备支持的红外频率数据:参考命名 getCarrierFrequencies +1、获取设备支持的红外频率数据:参考命名 getCarrierFrequencies 输入:调用此接口 处理:调用HDF红外服务的HDI接口,获取频率数据 输出:返回给调用方设备支持的外频率数据 -2、设备是否有红外:参考命名 hasIrEmitter () +2、设备是否有红外:参考命名 hasIrEmitter () 输入:调用此接口 处理:判断HDF红外服务是否运行 输出:红外服务运行了返回true,否则返回false -3、发送红外信号:参考命名 transmit (int frequency, int[] pattern) +3、发送红外信号:参考命名 transmit (int frequency, int[] pattern) 输入:调用此接口 -处理:调用HDF红外服务的HDI接口,以频率 frequency, 发送pattern红外码 - - - * - * ****/ +处理:调用HDF红外服务的HDI接口,以频率 frequency,发送pattern红外码 +* +*****/ #ifndef JS_INFRARED_MANAGER_H #define JS_INFRARED_MANAGER_H - #include "napi/native_api.h" #include "napi/native_node_api.h" #include "define_multimodal.h" @@ -48,7 +43,7 @@ #include "key_option.h" namespace OHOS { - namespace MMI { + namespace MMI { } // namespace MMI } // namespace OHOS diff --git a/frameworks/napi/infrared_emitter/src/js_register_module.cpp b/frameworks/napi/infrared_emitter/src/js_register_module.cpp index c76c143b5..bc0c1e838 100644 --- a/frameworks/napi/infrared_emitter/src/js_register_module.cpp +++ b/frameworks/napi/infrared_emitter/src/js_register_module.cpp @@ -17,7 +17,6 @@ #include "input_manager.h" #include -//#include "input_manager.h" #include "mmi_log.h" #include "napi_constants.h" #include "util_napi_error.h" @@ -74,11 +73,11 @@ bool ParsePatternArray(const napi_env& env, const napi_value& value, std::vector THROWERR_API9(env, COMMON_PARAMETER_ERROR, "pattern", "Array"); return false; } - napi_get_array_length(env, value, &length); + napi_get_array_length(env, value, &length); for (uint32_t i = 0; i < length; i++) { napi_value valueArray = nullptr; if (napi_get_element(env, value, i, &valueArray) != napi_ok) { - MMI_HILOGE("ParsePatternArray napi_get_element failed. index:%{public}d", i); + MMI_HILOGE("ParsePatternArray napi_get_element failed. index:%{public}d", i); return false; } int64_t res = 0; @@ -92,26 +91,26 @@ bool ParsePatternArray(const napi_env& env, const napi_value& value, std::vector return true; }; -bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info &info, int64_t & infraredFrequency, - std::vector & vecPattern) +bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info &info, int64_t & infraredFrequency, + std::vector & vecPattern) { CALL_DEBUG_ENTER; size_t argc = NUMBER_DEFAULT; napi_value argv[NUMBER_PARAMETERS]; CHKRF(napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr), GET_CB_INFO); /******* modify NUMBER_PARAMETERS as const *******/ - if ( argc != NUMBER_PARAMETERS) { + if (argc != NUMBER_PARAMETERS) { MMI_HILOGE("ParseTransmitInfraredJSParam Parameter number error"); return false; } if (!CheckType(env, argv[0], napi_number)) { - MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] type is invalid. "); + MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] type is invalid."); THROWERR_API9(env, COMMON_PARAMETER_ERROR, "infraredFrequency", "number"); return false; } CHKRF(napi_get_value_int64(env, argv[0], &infraredFrequency), "get number64 value error"); - if(!ParsePatternArray(env, argv[1], vecPattern)) { - MMI_HILOGE("ParsePatternArray parse pattern array fail." ); + if (!ParsePatternArray(env, argv[1], vecPattern)) { + MMI_HILOGE("ParsePatternArray parse pattern array fail."); return false; } return true; @@ -120,13 +119,13 @@ bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info static void ThrowError(napi_env env, int32_t code, std::string operateType) { int32_t errorCode = -code; - if(code > 0) { + if (code > 0) { errorCode = code; } - MMI_HILOGE("Operate %{public}s requst error. returnCode:%{public}d", operateType.c_str(), code); + MMI_HILOGE("Operate %{public}s requst error. returnCode:%{public}d", operateType.c_str(), code); if (errorCode == COMMON_PERMISSION_CHECK_ERROR) { THROWERR_API9(env, COMMON_PERMISSION_CHECK_ERROR, "Infrared", "ohos.permission.INFRARED_EMITTER"); - } else if(COMMON_USE_SYSAPI_ERROR == errorCode) { + } else if (COMMON_USE_SYSAPI_ERROR == errorCode) { THROWERR_API9(env, COMMON_USE_SYSAPI_ERROR, "Infrared", "Non system applications use system API"); } else { return; @@ -166,24 +165,24 @@ static napi_value GetInfraredFrequencies(napi_env env, napi_callback_info info) CHKRP(napi_create_array(env, &result), CREATE_ARRAY); std::vector requencys; int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); - if(ret != RET_OK) { + if (ret != RET_OK) { /** error permission business. permissionCode is a negative value ***/ - if(RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { - MMI_HILOGE("GetInfraredFrequencies requst error. Permission Error or Not System APP. Positive returnCode:%{public}d", ret); + if (RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { + MMI_HILOGE("js_register.GetFreq reqErr. Permi Err or Not System APP. Positive retCode:%{public}d", ret); ThrowError(env, ret, "GetInfraredFrequencies"); } - MMI_HILOGE("Parse GetInfraredFrequencies requst error. returnCode: %{public}d", ret); + MMI_HILOGE("Parse GetInfraredFrequencies requst error. returnCode: %{public}d", ret); return result; } size_t size = requencys.size(); std::string logPrint = "size:" + std::to_string(size) + ";"; CHKRP(napi_create_array(env, &result), CREATE_ARRAY); - for(size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; i++) { InfraredFrequency frequencyItem = requencys[i]; logPrint = logPrint + std::to_string(i) + "max:" + std::to_string(frequencyItem.max_) + ";min:" - + std::to_string(frequencyItem.min_) + ";"; + + std::to_string(frequencyItem.min_) + ";"; napi_value item = CreateInfraredFrequencyItem(env, requencys[i]); - if(item == nullptr) { + if (item == nullptr) { MMI_HILOGE("CreateInfraredFrequencyItem error"); return nullptr; } @@ -193,30 +192,31 @@ static napi_value GetInfraredFrequencies(napi_env env, napi_callback_info info) return result; } -static napi_value TransmitInfrared(napi_env env, napi_callback_info info) { +static napi_value TransmitInfrared(napi_env env, napi_callback_info info) +{ CALL_DEBUG_ENTER; napi_value result = nullptr; int64_t number = -1; - std::vector pattern; - if(!ParseTransmitInfraredJSParam(env, info, number, pattern)) { + std::vector pattern; + if (!ParseTransmitInfraredJSParam(env, info, number, pattern)) { MMI_HILOGE("Parse TransmitInfrared JSParam error"); THROWERR_CUSTOM(env, COMMON_PARAMETER_ERROR, "Parse TransmitInfrared JSParam error"); return nullptr; } int32_t size = static_cast(pattern.size()); - std::string context = "number:" + std::to_string(number) + "\n;" + "; size=" + std::to_string(size) + ";"; - for(int32_t i = 0; i < size; i++) { - context = context + std::to_string(i) + ": pattern: " + std::to_string(pattern[i]) + ";"; + std::string context = "number:" + std::to_string(number) + "\n;" + "; size=" + std::to_string(size) + ";"; + for (int32_t i = 0; i < size; i++) { + context = context + std::to_string(i) + ": pattern: " + std::to_string(pattern[i]) + ";"; } MMI_HILOGD("js_register_module.TransmitInfrared para size :%{public}s " , context.c_str()); int32_t ret = InputManager::GetInstance()->TransmitInfrared(number, pattern); - /******** permission error service *******/ - if(ret != RET_OK) { - if(RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { - MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error or Not System APP.. Positive returnCode:%{public}d", ret); + /******** permission error service *******/ + if (ret != RET_OK) { + if (RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { + MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error or Not System APP.. Positive returnCode:%{public}d", ret); ThrowError(env, ret, "TransmitInfrared"); } - MMI_HILOGE("js_register_module.TransmitInfrared requst error. returnCode:%{public}d", ret); + MMI_HILOGE("js_register_module.TransmitInfrared requst error. returnCode:%{public}d", ret); return nullptr; } CHKRP(napi_create_int32(env, 0, &result), CREATE_INT32); diff --git a/frameworks/napi/infrared_emitter/test/register_module_test.cpp b/frameworks/napi/infrared_emitter/test/register_module_test.cpp index 184d2fe15..699311fcd 100644 --- a/frameworks/napi/infrared_emitter/test/register_module_test.cpp +++ b/frameworks/napi/infrared_emitter/test/register_module_test.cpp @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + namespace OHOS { namespace MMI { namespace { @@ -16,18 +31,18 @@ HWTEST_F(RegisterModuleTest, GetInfraredFrequenciesTest, TestSize.Level1) std::vector requencys; int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); bool testResult = true; - int32_t size = requencys.size(); + int32_t size = requencys.size(); EXPECT_GE(size, 1); frequency_Max = requencys[0].max_; frequency_Min = requencys[0].min_; - for(int32_t i =0; i< size; i++) { + for (int32_t i = 0; i < size; i++) { InfraredFrequency fre = requencys[i]; - if(fre.max_ < fre.min_) { + if (fre.max_ < fre.min_) { testResult = false; break; } } - EXPECT_EQ(break, true); + EXPECT_EQ(testResult, true); } /** @@ -40,20 +55,24 @@ HWTEST_F(RegisterModuleTest, TransmitInfraredTest, TestSize.Level1) { std::vector requencys; int64_t dist = (frequency_Max - frequency_Min) / 10; + bool testResult = true; - for(int i = 0; i< 10; i++) { + for (int i = 0; i < 10; i++) { requencys.push_back(dist * i + frequency_Min); } - int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min ,requencys ); - EXPECT_EQ(ret, 0); + int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min, requencys); + if(0 != ret) { + testResult = true; + } + //EXPECT_NE(ret, 0); + EXPECT_EQ(testResult, true); } + HWTEST_F(RegisterModuleTest, HasIrEmitterTest, TestSize.Level1) { bool hasEmmited = false; int32_t ret = InputManager::GetInstance()->HasIrEmitter(hasEmmited); - EXPECT_EQ(hasEmmited, true); + EXPECT_EQ(hasEmmited, false); } - - } // namespace MMI } // namespace OHOS \ No newline at end of file diff --git a/frameworks/proxy/event_handler/include/input_manager_impl.h b/frameworks/proxy/event_handler/include/input_manager_impl.h index d01f8ba3a..c8fe1a90e 100644 --- a/frameworks/proxy/event_handler/include/input_manager_impl.h +++ b/frameworks/proxy/event_handler/include/input_manager_impl.h @@ -198,7 +198,6 @@ public: int32_t GetInfraredFrequencies(std::vector& requencys); int32_t TransmitInfrared(int64_t number, std::vector& pattern); - private: int32_t PackWindowInfo(NetPacket &pkt); int32_t PackWindowGroupInfo(NetPacket &pkt); diff --git a/frameworks/proxy/event_handler/src/input_manager_impl.cpp b/frameworks/proxy/event_handler/src/input_manager_impl.cpp index d19969098..de6a0e13b 100644 --- a/frameworks/proxy/event_handler/src/input_manager_impl.cpp +++ b/frameworks/proxy/event_handler/src/input_manager_impl.cpp @@ -2025,40 +2025,41 @@ int32_t InputManagerImpl::CancelInjection() return RET_OK; } - /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManagerImpl::HasIrEmitter(bool &hasIrEmitter) - { - CALL_INFO_TRACE; - return MultimodalInputConnMgr->HasIrEmitter(hasIrEmitter); - } - - /** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManagerImpl::GetInfraredFrequencies(std::vector& requencys) - { - CALL_INFO_TRACE; - return MultimodalInputConnMgr->GetInfraredFrequencies(requencys); - } - /** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManagerImpl::TransmitInfrared(int64_t number, std::vector& pattern) - { - CALL_INFO_TRACE; - return MultimodalInputConnMgr->TransmitInfrared(number, pattern); - } +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManagerImpl::HasIrEmitter(bool &hasIrEmitter) +{ + CALL_INFO_TRACE; + return MultimodalInputConnMgr->HasIrEmitter(hasIrEmitter); +} + +/** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManagerImpl::GetInfraredFrequencies(std::vector& requencys) +{ + CALL_INFO_TRACE; + return MultimodalInputConnMgr->GetInfraredFrequencies(requencys); +} + +/** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManagerImpl::TransmitInfrared(int64_t number, std::vector& pattern) +{ + CALL_INFO_TRACE; + return MultimodalInputConnMgr->TransmitInfrared(number, pattern); +} } // namespace MMI } // namespace OHOS diff --git a/frameworks/proxy/events/src/input_manager.cpp b/frameworks/proxy/events/src/input_manager.cpp index b23ef56d3..10e372e91 100644 --- a/frameworks/proxy/events/src/input_manager.cpp +++ b/frameworks/proxy/events/src/input_manager.cpp @@ -523,40 +523,38 @@ void InputManager::Authorize(bool isAuthorize) InputMgrImpl.Authorize(isAuthorize); } - /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManager::HasIrEmitter(bool &hasIrEmitter) - { - return InputMgrImpl.HasIrEmitter(hasIrEmitter); - } - - /** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManager::GetInfraredFrequencies(std::vector& requencys) - { - return InputMgrImpl.GetInfraredFrequencies(requencys); - } - /** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManager::TransmitInfrared(int64_t number, std::vector& pattern) - { - return InputMgrImpl.TransmitInfrared(number, pattern); - } - - +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManager::HasIrEmitter(bool &hasIrEmitter) +{ + return InputMgrImpl.HasIrEmitter(hasIrEmitter); +} + +/** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManager::GetInfraredFrequencies(std::vector& requencys) +{ + return InputMgrImpl.GetInfraredFrequencies(requencys); +} +/** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManager::TransmitInfrared(int64_t number, std::vector& pattern) +{ + return InputMgrImpl.TransmitInfrared(number, pattern); +} } // namespace MMI } // namespace OHOS diff --git a/interfaces/native/innerkits/event/include/infrared_frequency_info.h b/interfaces/native/innerkits/event/include/infrared_frequency_info.h index f80bed0b6..231066d57 100644 --- a/interfaces/native/innerkits/event/include/infrared_frequency_info.h +++ b/interfaces/native/innerkits/event/include/infrared_frequency_info.h @@ -16,16 +16,11 @@ #ifndef I_INFRARED_MANAGER #define I_INFRARED_MANAGER - -//#include "nocopyable.h" - namespace OHOS { - namespace MMI { - + namespace MMI { struct InfraredFrequency { - int64_t max_ { 0 }; - int64_t min_ { 0 }; + int64_t min_ { 0 }; }; } // namespace MMI } // namespace OHOS diff --git a/multimodalinput_mini.gni b/multimodalinput_mini.gni index 819786b31..365f279f8 100644 --- a/multimodalinput_mini.gni +++ b/multimodalinput_mini.gni @@ -119,7 +119,6 @@ declare_args() { "window_manager/src/input_windows_manager.cpp", ] - infraredemitter_sources = [ "src/js_register_module.cpp", ] diff --git a/service/connect_manager/include/multimodal_input_connect_proxy.h b/service/connect_manager/include/multimodal_input_connect_proxy.h index d10066ee1..d8eed27d9 100644 --- a/service/connect_manager/include/multimodal_input_connect_proxy.h +++ b/service/connect_manager/include/multimodal_input_connect_proxy.h @@ -130,7 +130,7 @@ public: /** * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . + * @param requencys take out the IrEmitter's Frequency. * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ @@ -138,14 +138,13 @@ public: /** * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. + * @param number Frequency of IrEmitter works. + * @param requencys pattern of IrEmitter works. + * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; - private: static inline BrokerDelegator delegator_; int32_t SetTouchpadBoolData(bool date, int32_t type); diff --git a/service/connect_manager/src/multimodal_input_connect_manager.cpp b/service/connect_manager/src/multimodal_input_connect_manager.cpp index b57d411d2..e5f26c195 100644 --- a/service/connect_manager/src/multimodal_input_connect_manager.cpp +++ b/service/connect_manager/src/multimodal_input_connect_manager.cpp @@ -695,43 +695,40 @@ int32_t MultimodalInputConnectManager::CancelInjection() return multimodalInputConnectService_->CancelInjection(); } +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter) +{ + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->HasIrEmitter(hasIrEmitter); +} - /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter) - { - CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->HasIrEmitter(hasIrEmitter); - } - - /** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t MultimodalInputConnectManager::GetInfraredFrequencies(std::vector& requencys) - { - CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->GetInfraredFrequencies(requencys); - } - /** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector& pattern) - { - CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->TransmitInfrared(number, pattern); - } - - +/** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectManager::GetInfraredFrequencies(std::vector& requencys) +{ + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->GetInfraredFrequencies(requencys); +} +/** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector& pattern) +{ + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->TransmitInfrared(number, pattern); +} } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index 7d2c07ed4..9e8656d77 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -1908,10 +1908,6 @@ int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) MMI_HILOGE("Failed to write descriptor"); return ERR_INVALID_VALUE; } - // int32_t pid = GetCallingPid(); - int32_t pid = 0; - // /**写入pid**/ - WRITEINT32(data, pid, ERR_INVALID_VALUE); MessageParcel reply; MessageOption option; sptr remote = Remote(); @@ -1945,15 +1941,16 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector remote = Remote(); CHKPR(remote, RET_ERR); - int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), - data, reply, option); + int32_t ret = remote->SendRequest(static_cast( + MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), data, reply, option); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::GetInfraredFrequencies Send request fail, ret:%{public}d", ret); return ret; } int64_t number; READINT64(reply, number, IPC_PROXY_DEAD_OBJECT_ERR); - int64_t min,max; + int64_t min = 0; + int64_t max = 0; for (int32_t i = 0; i < number; i++) { READINT64(reply, max); READINT64(reply, min); @@ -1965,16 +1962,15 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector& pattern) -{ +{ CALL_DEBUG_ENTER; MessageParcel data; if (!data.WriteInterfaceToken(MultimodalInputConnectProxy::GetDescriptor())) { @@ -1984,7 +1980,7 @@ int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vecto WRITEINT64(data, number, ERR_INVALID_VALUE); /******* write size of array to data *******/ WRITEINT32(data, static_cast(pattern.size()), ERR_INVALID_VALUE); - /******* Pattern of signal transmission in alternate on/off mode, in microseconds. **********/ + /******* Pattern of signal transmission in alternate on/off mode, in microseconds. **********/ for (const auto &item : pattern) { WRITEINT64(data, item); } @@ -1992,14 +1988,13 @@ int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vecto MessageOption option; sptr remote = Remote(); CHKPR(remote, RET_ERR); - int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), - data, reply, option); + int32_t ret = remote->SendRequest(static_cast( + MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), data, reply, option); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::TransmitInfrared Send request fail, ret:%{public}d", ret); return ret; } return RET_OK; } - } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index 768c3c45b..950ab33e9 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -296,7 +296,7 @@ int32_t MultimodalInputConnectStub::OnRemoteRequest(uint32_t code, MessageParcel break; case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_INJECTION): return StubCancelInjection(data, reply); - break; + break; case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_OWN): return StubHasIrEmitter(data, reply); break; @@ -305,7 +305,7 @@ int32_t MultimodalInputConnectStub::OnRemoteRequest(uint32_t code, MessageParcel break; case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT): return StubTransmitInfrared(data, reply); - break; + break; default: { MMI_HILOGE("Unknown code:%{public}u, go switch default", code); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -2077,24 +2077,21 @@ int32_t MultimodalInputConnectStub::StubCancelInjection(MessageParcel& data, Mes return RET_OK; } - - /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not,. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ int32_t MultimodalInputConnectStub::StubHasIrEmitter(MessageParcel& data, MessageParcel& reply) { - MMI_HILOGE("StubHasIrEmitter for trace, delete this while finish. %d",__LINE__); CALL_DEBUG_ENTER; if (!PerHelper->VerifySystemApp()) { MMI_HILOGE("Verify system APP failed"); return ERROR_NOT_SYSAPI; - } + } bool hasIrEmitter = false; - int32_t ret = HasIrEmitter( hasIrEmitter); + int32_t ret = HasIrEmitter(hasIrEmitter); if (ret != RET_OK) { MMI_HILOGE("Call StubHasIrEmitter failed ret:%{public}d", ret); return ret; @@ -2104,7 +2101,6 @@ int32_t MultimodalInputConnectStub::StubHasIrEmitter(MessageParcel& data, Messag return RET_OK; } - int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& data, MessageParcel& reply) { CALL_DEBUG_ENTER; @@ -2113,7 +2109,7 @@ int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& da return ERROR_NOT_SYSAPI; } if (!PerHelper->CheckInfraredEmmit()) { - MMI_HILOGE("MultimodalInputConnectStub::StubGetInfraredFrequencies permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); + MMI_HILOGE("MulmodalConStub::StubGetInfr permi check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); return ERROR_NO_PERMISSION; } std::vector requencys; @@ -2123,33 +2119,31 @@ int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& da return ret; } WRITEINT64(reply, requencys.size()); - for(const auto &item : requencys) - { + for (const auto &item : requencys) { WRITEINT64(reply, item.max_); WRITEINT64(reply, item.min_); } return RET_OK; } - int32_t MultimodalInputConnectStub::StubTransmitInfrared(MessageParcel& data, MessageParcel& reply) { CALL_DEBUG_ENTER; if (!PerHelper->VerifySystemApp()) { MMI_HILOGE("StubTransmitInfrared Verify system APP failed"); return ERROR_NOT_SYSAPI; - } + } if (!PerHelper->CheckInfraredEmmit()) { MMI_HILOGE("StubTransmitInfrared permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); return ERROR_NO_PERMISSION; } - int64_t number =0; + int64_t number = 0; READINT64(data, number, IPC_PROXY_DEAD_OBJECT_ERR); - int32_t pattern_len =0; + int32_t pattern_len = 0; std::vector pattern; READINT32(data, pattern_len, IPC_PROXY_DEAD_OBJECT_ERR); - for(int32_t i =0; i < pattern_len; i++) { - int64_t value =0; + for (int32_t i = 0; i < pattern_len; i++) { + int64_t value = 0; READINT64(data, value); pattern.push_back(value); } @@ -2161,6 +2155,5 @@ int32_t MultimodalInputConnectStub::StubTransmitInfrared(MessageParcel& data, Me WRITEINT32(reply, ret); return RET_OK; } - } // namespace MMI } // namespace OHOS diff --git a/service/module_loader/include/mmi_service.h b/service/module_loader/include/mmi_service.h index a2edd5d9f..583f954ac 100644 --- a/service/module_loader/include/mmi_service.h +++ b/service/module_loader/include/mmi_service.h @@ -135,16 +135,13 @@ public: int32_t CancelInjection() override; void OnAddSystemAbility(int32_t systemAbilityId, const std::string& deviceId) override; - int32_t HasIrEmitter( bool &hasIrEmitter) override; - int32_t GetInfraredFrequencies( std::vector& requencys) override; + int32_t HasIrEmitter(bool &hasIrEmitter) override; + int32_t GetInfraredFrequencies(std::vector& requencys) override; int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; - int32_t OnHasIrEmitter( bool &hasIrEmitter); + int32_t OnHasIrEmitter(bool &hasIrEmitter); int32_t OnGetInfraredFrequencies(std::vector& requencys); int32_t OnTransmitInfrared(int64_t number, std::vector& pattern); - - - #ifdef OHOS_BUILD_ENABLE_ANCO void InitAncoUds(); diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index 746dcb56f..7a80fd0c1 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2027,11 +2027,10 @@ int32_t MMIService::OnCancelInjection() return sMsgHandler_.OnCancelInjection(); } - int32_t MMIService::HasIrEmitter(bool &hasIrEmitter) { CALL_DEBUG_ENTER; - int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnHasIrEmitter, this, std::ref(hasIrEmitter))); + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnHasIrEmitter, this, std::ref(hasIrEmitter))); if (ret != RET_OK) { MMI_HILOGE("OnHasIrEmitter failed, ret:%{public}d", ret); return RET_ERR; @@ -2042,7 +2041,8 @@ int32_t MMIService::HasIrEmitter(bool &hasIrEmitter) int32_t MMIService::GetInfraredFrequencies(std::vector& requencys) { CALL_DEBUG_ENTER; - int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnGetInfraredFrequencies, this, std::ref(requencys))); + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnGetInfraredFrequencies, + this, std::ref(requencys))); if (ret != RET_OK) { MMI_HILOGE("OnGetInfraredFrequencies failed, returnCode:%{public}d", ret); return RET_ERR; @@ -2054,37 +2054,41 @@ int32_t MMIService::GetInfraredFrequencies(std::vector& reque int32_t MMIService::TransmitInfrared(int64_t number, std::vector& pattern) { CALL_DEBUG_ENTER; - int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnTransmitInfrared, this, number, pattern)); + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnTransmitInfrared, this, number, pattern)); if (ret != RET_OK) { MMI_HILOGE("OnTransmitInfrared failed, returnCode:%{public}d", ret); return RET_ERR; } - return RET_OK; + return RET_OK; } -int32_t MMIService::OnHasIrEmitter( bool &hasIrEmitter) +int32_t MMIService::OnHasIrEmitter(bool &hasIrEmitter) { /** defautl not support IR **/ hasIrEmitter = false; - return RET_OK; + return RET_OK; } int32_t MMIService::OnGetInfraredFrequencies(std::vector& requencys) { /** get data from hdf **/ - for(int i = 1; i < 20; i++) { + int const tempSizeOfData = 20; + /** stub code for test, delete the following while hdf is connected**/ + int const maxStandard = 550; + int const minStandard = 550; + for (int i = 1; i < tempSizeOfData; i++) { InfraredFrequency itemFrequency; - itemFrequency.max_ = 500*i; - itemFrequency.min_ = 100*i; + itemFrequency.max_ = maxStandard*i; + itemFrequency.min_ = minStandard*i; requencys.emplace_back(itemFrequency); } std::string context = ""; int32_t size = static_cast(requencys.size()); - for(int32_t i = 0; i < size; i ++) { - context = context + "requencys[" + std::to_string(i) + - "]. max=" + std::to_string(requencys[i].max_) + ",min=" + std::to_string(requencys[i].min_) +";"; - } - MMI_HILOGD("MMIService::OnGetInfraredFrequencies data from hdf is. %{public}s " , context.c_str()); + for (int32_t i = 0; i < size; i ++) { + context = context + "requencys[" + std::to_string(i) + "]. max=" + + std::to_string(requencys[i].max_) + ",min=" + std::to_string(requencys[i].min_) +";"; + } + MMI_HILOGD("MMIService::OnGetInfraredFrequencies data from hdf is. %{public}s ", context.c_str()); return RET_OK; } @@ -2092,12 +2096,11 @@ int32_t MMIService::OnTransmitInfrared(int64_t infraredFrequency, std::vector(pattern.size()); - for(int32_t i = 0; i < size; i ++) { - context = context + "index:" + std::to_string(i) + ": pattern:" +std::to_string(pattern[i]) + ";"; - } - MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s \n", context.c_str()); - return RET_OK; + for (int32_t i = 0; i < size; i ++) { + context = context + "index:" + std::to_string(i) + ": pattern:" +std::to_string(pattern[i]) + ";"; + } + MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s", context.c_str()); + return RET_OK; } - } // namespace MMI } // namespace OHOS diff --git a/service/permission_helper/include/permission_helper.h b/service/permission_helper/include/permission_helper.h index 5510e9e06..4766de765 100644 --- a/service/permission_helper/include/permission_helper.h +++ b/service/permission_helper/include/permission_helper.h @@ -41,21 +41,19 @@ public: private: bool CheckHapPermission(uint32_t tokenId, uint32_t required); - /*** + * this function is checked whether a oparate from APP has certial permissions * tokenId: id of applicaiton * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed * ****/ bool CheckHapPermission(uint32_t tokenId, std::string permissionCode); - - /*** + * this function is checked whether a oparate from APP has certial permissions * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed * ****/ bool CheckHapPermission(std::string permissionCode); - bool CheckMonitorPermission(uint32_t tokenId); bool CheckInterceptorPermission(uint32_t tokenId); bool CheckDispatchControlPermission(uint32_t tokenId); diff --git a/service/permission_helper/src/permission_helper.cpp b/service/permission_helper/src/permission_helper.cpp index 7eb791bb1..4b7f9013d 100644 --- a/service/permission_helper/src/permission_helper.cpp +++ b/service/permission_helper/src/permission_helper.cpp @@ -68,8 +68,6 @@ bool PermissionHelper::CheckPermission(uint32_t required) } } - - bool PermissionHelper::CheckMonitor() { CALL_DEBUG_ENTER; @@ -120,38 +118,42 @@ bool PermissionHelper::CheckHapPermission(uint32_t tokenId, uint32_t required) return true; } -/*** - * add this funciton just because CheckHapPermission(int, String) and CheckHapPermission(string ) are private function. - * In fact I want add the previous two functions as public, but consider the privacy and security add them as private +/*** + * add this funciton just because CheckHapPermission(int, String) and + * CheckHapPermission(string ) are private function. + * In fact this should be added as the previous two functions as public, + * but consider the privacy and security add them as private * ***/ -bool PermissionHelper::CheckInfraredEmmit() { +bool PermissionHelper::CheckInfraredEmmit() +{ std::string infraredEmmitPermissionCode = "ohos.permission.INFRARED_EMITTER"; return CheckHapPermission(infraredEmmitPermissionCode); } /*** - * tokenId: id of applicaiton + * this function is checked whether a oparate from APP has certial permissions + * tokenId: id of applicaiton * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed - * permissionCode of InfraredEmitter Function: ohos.permission.INFRARED_EMITTER - * CheckHapPermission(pid, permissionCode) + * permissionCode of InfraredEmitter Function: ohos.permission.INFRARED_EMITTER * ****/ -bool PermissionHelper::CheckHapPermission(const std::string permissionCode) { - +bool PermissionHelper::CheckHapPermission(const std::string permissionCode) +{ CALL_DEBUG_ENTER; auto tokenId = IPCSkeleton::GetCallingTokenID(); - return CheckHapPermission(tokenId, permissionCode); + return CheckHapPermission(tokenId, permissionCode); } - /*** + * this function is checked whether a oparate from APP has certial permissions * tokenId: id of applicaiton * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed - * permissionCode of InfraredEmitter Function: ohos.permission.InfraredEmitter - * CheckHapPermission(pid, permissionCode) + * permissionCode of InfraredEmitter Function: ohos.permission.InfraredEmitter + * CheckHapPermission(pid, permissionCode) * ****/ -bool PermissionHelper::CheckHapPermission(uint32_t tokenId, const std::string permissionCode) { +bool PermissionHelper::CheckHapPermission(uint32_t tokenId, const std::string permissionCode) +{ CALL_DEBUG_ENTER; auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId); if ((tokenType == OHOS::Security::AccessToken::TOKEN_HAP) || @@ -166,10 +168,11 @@ bool PermissionHelper::CheckHapPermission(uint32_t tokenId, const std::string pe } /*** check permission here ***/ - std::string context = "For CheckHapPermission. permissionCode" + permissionCode + "; applicationId:" + std::to_string(tokenId); + std::string context = "For CheckPerm. PermiCode" + permissionCode + ";appId:" + std::to_string(tokenId); int32_t ret = OHOS::Security::AccessToken::AccessTokenKit::VerifyAccessToken(tokenId, permissionCode); if (ret != OHOS::Security::AccessToken::PERMISSION_GRANTED) { - MMI_HILOGE("Check permission: %{public}s failed for applicationId:%{public}d, and ret:%{public}d", permissionCode.c_str(), tokenId, ret); + MMI_HILOGE("Check Permi: %{public}s fail for appId:%{public}d, and ret:%{public}d", + permissionCode.c_str(), tokenId, ret); return false; } MMI_HILOGD("Check permission( %{public}s) permission success", permissionCode.c_str()); -- Gitee From 404922b9fdd0955f246d8c01f1a09dd4624c3f71 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 11:25:28 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E6=A0=B9=E6=8D=AEcodecheck=20=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 --- BUILD.gn | 2 +- .../include/js_register_module.h | 23 +++--- .../src/js_register_module.cpp | 60 ++++++++-------- .../test/register_module_test.cpp | 39 +++++++--- .../include/input_manager_impl.h | 1 - .../event_handler/src/input_manager_impl.cpp | 71 ++++++++++--------- frameworks/proxy/events/src/input_manager.cpp | 66 +++++++++-------- .../event/include/infrared_frequency_info.h | 9 +-- multimodalinput_mini.gni | 1 - .../include/multimodal_input_connect_proxy.h | 9 ++- .../src/multimodal_input_connect_manager.cpp | 71 +++++++++---------- .../src/multimodal_input_connect_proxy.cpp | 25 +++---- .../src/multimodal_input_connect_stub.cpp | 41 +++++------ service/module_loader/include/mmi_service.h | 9 +-- service/module_loader/src/mmi_service.cpp | 45 ++++++------ .../include/permission_helper.h | 6 +- .../src/permission_helper.cpp | 39 +++++----- 17 files changed, 254 insertions(+), 263 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 1fa272b7e..ec248d16b 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -109,7 +109,7 @@ group("input_jsapi_group") { deps += [ "frameworks/napi/short_key:shortkey" ] } if (input_feature_infrared_emitter) { - deps += [ "frameworks/napi/infrared_emitter:infraredemitter" ] + deps += [ "frameworks/napi/infrared_emitter:infraredemitter"] } } } diff --git a/frameworks/napi/infrared_emitter/include/js_register_module.h b/frameworks/napi/infrared_emitter/include/js_register_module.h index a76c2686c..39a9fc2c7 100644 --- a/frameworks/napi/infrared_emitter/include/js_register_module.h +++ b/frameworks/napi/infrared_emitter/include/js_register_module.h @@ -13,32 +13,27 @@ * limitations under the License. */ - - /**** - * - 【需求描述】: +* +*【需求描述】: 支持如下接口: -1、获取设备支持的红外频率数据:参考命名 getCarrierFrequencies +1、获取设备支持的红外频率数据:参考命名 getCarrierFrequencies 输入:调用此接口 处理:调用HDF红外服务的HDI接口,获取频率数据 输出:返回给调用方设备支持的外频率数据 -2、设备是否有红外:参考命名 hasIrEmitter () +2、设备是否有红外:参考命名 hasIrEmitter () 输入:调用此接口 处理:判断HDF红外服务是否运行 输出:红外服务运行了返回true,否则返回false -3、发送红外信号:参考命名 transmit (int frequency, int[] pattern) +3、发送红外信号:参考命名 transmit (int frequency, int[] pattern) 输入:调用此接口 -处理:调用HDF红外服务的HDI接口,以频率 frequency, 发送pattern红外码 - - - * - * ****/ +处理:调用HDF红外服务的HDI接口,以频率 frequency,发送pattern红外码 +* +*****/ #ifndef JS_INFRARED_MANAGER_H #define JS_INFRARED_MANAGER_H - #include "napi/native_api.h" #include "napi/native_node_api.h" #include "define_multimodal.h" @@ -48,7 +43,7 @@ #include "key_option.h" namespace OHOS { - namespace MMI { + namespace MMI { } // namespace MMI } // namespace OHOS diff --git a/frameworks/napi/infrared_emitter/src/js_register_module.cpp b/frameworks/napi/infrared_emitter/src/js_register_module.cpp index c76c143b5..bc0c1e838 100644 --- a/frameworks/napi/infrared_emitter/src/js_register_module.cpp +++ b/frameworks/napi/infrared_emitter/src/js_register_module.cpp @@ -17,7 +17,6 @@ #include "input_manager.h" #include -//#include "input_manager.h" #include "mmi_log.h" #include "napi_constants.h" #include "util_napi_error.h" @@ -74,11 +73,11 @@ bool ParsePatternArray(const napi_env& env, const napi_value& value, std::vector THROWERR_API9(env, COMMON_PARAMETER_ERROR, "pattern", "Array"); return false; } - napi_get_array_length(env, value, &length); + napi_get_array_length(env, value, &length); for (uint32_t i = 0; i < length; i++) { napi_value valueArray = nullptr; if (napi_get_element(env, value, i, &valueArray) != napi_ok) { - MMI_HILOGE("ParsePatternArray napi_get_element failed. index:%{public}d", i); + MMI_HILOGE("ParsePatternArray napi_get_element failed. index:%{public}d", i); return false; } int64_t res = 0; @@ -92,26 +91,26 @@ bool ParsePatternArray(const napi_env& env, const napi_value& value, std::vector return true; }; -bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info &info, int64_t & infraredFrequency, - std::vector & vecPattern) +bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info &info, int64_t & infraredFrequency, + std::vector & vecPattern) { CALL_DEBUG_ENTER; size_t argc = NUMBER_DEFAULT; napi_value argv[NUMBER_PARAMETERS]; CHKRF(napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr), GET_CB_INFO); /******* modify NUMBER_PARAMETERS as const *******/ - if ( argc != NUMBER_PARAMETERS) { + if (argc != NUMBER_PARAMETERS) { MMI_HILOGE("ParseTransmitInfraredJSParam Parameter number error"); return false; } if (!CheckType(env, argv[0], napi_number)) { - MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] type is invalid. "); + MMI_HILOGE("ParseTransmitInfraredJSParam infraredFrequency parameter[0] type is invalid."); THROWERR_API9(env, COMMON_PARAMETER_ERROR, "infraredFrequency", "number"); return false; } CHKRF(napi_get_value_int64(env, argv[0], &infraredFrequency), "get number64 value error"); - if(!ParsePatternArray(env, argv[1], vecPattern)) { - MMI_HILOGE("ParsePatternArray parse pattern array fail." ); + if (!ParsePatternArray(env, argv[1], vecPattern)) { + MMI_HILOGE("ParsePatternArray parse pattern array fail."); return false; } return true; @@ -120,13 +119,13 @@ bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info static void ThrowError(napi_env env, int32_t code, std::string operateType) { int32_t errorCode = -code; - if(code > 0) { + if (code > 0) { errorCode = code; } - MMI_HILOGE("Operate %{public}s requst error. returnCode:%{public}d", operateType.c_str(), code); + MMI_HILOGE("Operate %{public}s requst error. returnCode:%{public}d", operateType.c_str(), code); if (errorCode == COMMON_PERMISSION_CHECK_ERROR) { THROWERR_API9(env, COMMON_PERMISSION_CHECK_ERROR, "Infrared", "ohos.permission.INFRARED_EMITTER"); - } else if(COMMON_USE_SYSAPI_ERROR == errorCode) { + } else if (COMMON_USE_SYSAPI_ERROR == errorCode) { THROWERR_API9(env, COMMON_USE_SYSAPI_ERROR, "Infrared", "Non system applications use system API"); } else { return; @@ -166,24 +165,24 @@ static napi_value GetInfraredFrequencies(napi_env env, napi_callback_info info) CHKRP(napi_create_array(env, &result), CREATE_ARRAY); std::vector requencys; int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); - if(ret != RET_OK) { + if (ret != RET_OK) { /** error permission business. permissionCode is a negative value ***/ - if(RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { - MMI_HILOGE("GetInfraredFrequencies requst error. Permission Error or Not System APP. Positive returnCode:%{public}d", ret); + if (RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { + MMI_HILOGE("js_register.GetFreq reqErr. Permi Err or Not System APP. Positive retCode:%{public}d", ret); ThrowError(env, ret, "GetInfraredFrequencies"); } - MMI_HILOGE("Parse GetInfraredFrequencies requst error. returnCode: %{public}d", ret); + MMI_HILOGE("Parse GetInfraredFrequencies requst error. returnCode: %{public}d", ret); return result; } size_t size = requencys.size(); std::string logPrint = "size:" + std::to_string(size) + ";"; CHKRP(napi_create_array(env, &result), CREATE_ARRAY); - for(size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; i++) { InfraredFrequency frequencyItem = requencys[i]; logPrint = logPrint + std::to_string(i) + "max:" + std::to_string(frequencyItem.max_) + ";min:" - + std::to_string(frequencyItem.min_) + ";"; + + std::to_string(frequencyItem.min_) + ";"; napi_value item = CreateInfraredFrequencyItem(env, requencys[i]); - if(item == nullptr) { + if (item == nullptr) { MMI_HILOGE("CreateInfraredFrequencyItem error"); return nullptr; } @@ -193,30 +192,31 @@ static napi_value GetInfraredFrequencies(napi_env env, napi_callback_info info) return result; } -static napi_value TransmitInfrared(napi_env env, napi_callback_info info) { +static napi_value TransmitInfrared(napi_env env, napi_callback_info info) +{ CALL_DEBUG_ENTER; napi_value result = nullptr; int64_t number = -1; - std::vector pattern; - if(!ParseTransmitInfraredJSParam(env, info, number, pattern)) { + std::vector pattern; + if (!ParseTransmitInfraredJSParam(env, info, number, pattern)) { MMI_HILOGE("Parse TransmitInfrared JSParam error"); THROWERR_CUSTOM(env, COMMON_PARAMETER_ERROR, "Parse TransmitInfrared JSParam error"); return nullptr; } int32_t size = static_cast(pattern.size()); - std::string context = "number:" + std::to_string(number) + "\n;" + "; size=" + std::to_string(size) + ";"; - for(int32_t i = 0; i < size; i++) { - context = context + std::to_string(i) + ": pattern: " + std::to_string(pattern[i]) + ";"; + std::string context = "number:" + std::to_string(number) + "\n;" + "; size=" + std::to_string(size) + ";"; + for (int32_t i = 0; i < size; i++) { + context = context + std::to_string(i) + ": pattern: " + std::to_string(pattern[i]) + ";"; } MMI_HILOGD("js_register_module.TransmitInfrared para size :%{public}s " , context.c_str()); int32_t ret = InputManager::GetInstance()->TransmitInfrared(number, pattern); - /******** permission error service *******/ - if(ret != RET_OK) { - if(RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { - MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error or Not System APP.. Positive returnCode:%{public}d", ret); + /******** permission error service *******/ + if (ret != RET_OK) { + if (RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { + MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error or Not System APP.. Positive returnCode:%{public}d", ret); ThrowError(env, ret, "TransmitInfrared"); } - MMI_HILOGE("js_register_module.TransmitInfrared requst error. returnCode:%{public}d", ret); + MMI_HILOGE("js_register_module.TransmitInfrared requst error. returnCode:%{public}d", ret); return nullptr; } CHKRP(napi_create_int32(env, 0, &result), CREATE_INT32); diff --git a/frameworks/napi/infrared_emitter/test/register_module_test.cpp b/frameworks/napi/infrared_emitter/test/register_module_test.cpp index 184d2fe15..699311fcd 100644 --- a/frameworks/napi/infrared_emitter/test/register_module_test.cpp +++ b/frameworks/napi/infrared_emitter/test/register_module_test.cpp @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + namespace OHOS { namespace MMI { namespace { @@ -16,18 +31,18 @@ HWTEST_F(RegisterModuleTest, GetInfraredFrequenciesTest, TestSize.Level1) std::vector requencys; int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); bool testResult = true; - int32_t size = requencys.size(); + int32_t size = requencys.size(); EXPECT_GE(size, 1); frequency_Max = requencys[0].max_; frequency_Min = requencys[0].min_; - for(int32_t i =0; i< size; i++) { + for (int32_t i = 0; i < size; i++) { InfraredFrequency fre = requencys[i]; - if(fre.max_ < fre.min_) { + if (fre.max_ < fre.min_) { testResult = false; break; } } - EXPECT_EQ(break, true); + EXPECT_EQ(testResult, true); } /** @@ -40,20 +55,24 @@ HWTEST_F(RegisterModuleTest, TransmitInfraredTest, TestSize.Level1) { std::vector requencys; int64_t dist = (frequency_Max - frequency_Min) / 10; + bool testResult = true; - for(int i = 0; i< 10; i++) { + for (int i = 0; i < 10; i++) { requencys.push_back(dist * i + frequency_Min); } - int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min ,requencys ); - EXPECT_EQ(ret, 0); + int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min, requencys); + if(0 != ret) { + testResult = true; + } + //EXPECT_NE(ret, 0); + EXPECT_EQ(testResult, true); } + HWTEST_F(RegisterModuleTest, HasIrEmitterTest, TestSize.Level1) { bool hasEmmited = false; int32_t ret = InputManager::GetInstance()->HasIrEmitter(hasEmmited); - EXPECT_EQ(hasEmmited, true); + EXPECT_EQ(hasEmmited, false); } - - } // namespace MMI } // namespace OHOS \ No newline at end of file diff --git a/frameworks/proxy/event_handler/include/input_manager_impl.h b/frameworks/proxy/event_handler/include/input_manager_impl.h index d01f8ba3a..c8fe1a90e 100644 --- a/frameworks/proxy/event_handler/include/input_manager_impl.h +++ b/frameworks/proxy/event_handler/include/input_manager_impl.h @@ -198,7 +198,6 @@ public: int32_t GetInfraredFrequencies(std::vector& requencys); int32_t TransmitInfrared(int64_t number, std::vector& pattern); - private: int32_t PackWindowInfo(NetPacket &pkt); int32_t PackWindowGroupInfo(NetPacket &pkt); diff --git a/frameworks/proxy/event_handler/src/input_manager_impl.cpp b/frameworks/proxy/event_handler/src/input_manager_impl.cpp index d19969098..de6a0e13b 100644 --- a/frameworks/proxy/event_handler/src/input_manager_impl.cpp +++ b/frameworks/proxy/event_handler/src/input_manager_impl.cpp @@ -2025,40 +2025,41 @@ int32_t InputManagerImpl::CancelInjection() return RET_OK; } - /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManagerImpl::HasIrEmitter(bool &hasIrEmitter) - { - CALL_INFO_TRACE; - return MultimodalInputConnMgr->HasIrEmitter(hasIrEmitter); - } - - /** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManagerImpl::GetInfraredFrequencies(std::vector& requencys) - { - CALL_INFO_TRACE; - return MultimodalInputConnMgr->GetInfraredFrequencies(requencys); - } - /** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManagerImpl::TransmitInfrared(int64_t number, std::vector& pattern) - { - CALL_INFO_TRACE; - return MultimodalInputConnMgr->TransmitInfrared(number, pattern); - } +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManagerImpl::HasIrEmitter(bool &hasIrEmitter) +{ + CALL_INFO_TRACE; + return MultimodalInputConnMgr->HasIrEmitter(hasIrEmitter); +} + +/** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManagerImpl::GetInfraredFrequencies(std::vector& requencys) +{ + CALL_INFO_TRACE; + return MultimodalInputConnMgr->GetInfraredFrequencies(requencys); +} + +/** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManagerImpl::TransmitInfrared(int64_t number, std::vector& pattern) +{ + CALL_INFO_TRACE; + return MultimodalInputConnMgr->TransmitInfrared(number, pattern); +} } // namespace MMI } // namespace OHOS diff --git a/frameworks/proxy/events/src/input_manager.cpp b/frameworks/proxy/events/src/input_manager.cpp index b23ef56d3..10e372e91 100644 --- a/frameworks/proxy/events/src/input_manager.cpp +++ b/frameworks/proxy/events/src/input_manager.cpp @@ -523,40 +523,38 @@ void InputManager::Authorize(bool isAuthorize) InputMgrImpl.Authorize(isAuthorize); } - /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManager::HasIrEmitter(bool &hasIrEmitter) - { - return InputMgrImpl.HasIrEmitter(hasIrEmitter); - } - - /** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManager::GetInfraredFrequencies(std::vector& requencys) - { - return InputMgrImpl.GetInfraredFrequencies(requencys); - } - /** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t InputManager::TransmitInfrared(int64_t number, std::vector& pattern) - { - return InputMgrImpl.TransmitInfrared(number, pattern); - } - - +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManager::HasIrEmitter(bool &hasIrEmitter) +{ + return InputMgrImpl.HasIrEmitter(hasIrEmitter); +} + +/** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManager::GetInfraredFrequencies(std::vector& requencys) +{ + return InputMgrImpl.GetInfraredFrequencies(requencys); +} +/** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t InputManager::TransmitInfrared(int64_t number, std::vector& pattern) +{ + return InputMgrImpl.TransmitInfrared(number, pattern); +} } // namespace MMI } // namespace OHOS diff --git a/interfaces/native/innerkits/event/include/infrared_frequency_info.h b/interfaces/native/innerkits/event/include/infrared_frequency_info.h index f80bed0b6..231066d57 100644 --- a/interfaces/native/innerkits/event/include/infrared_frequency_info.h +++ b/interfaces/native/innerkits/event/include/infrared_frequency_info.h @@ -16,16 +16,11 @@ #ifndef I_INFRARED_MANAGER #define I_INFRARED_MANAGER - -//#include "nocopyable.h" - namespace OHOS { - namespace MMI { - + namespace MMI { struct InfraredFrequency { - int64_t max_ { 0 }; - int64_t min_ { 0 }; + int64_t min_ { 0 }; }; } // namespace MMI } // namespace OHOS diff --git a/multimodalinput_mini.gni b/multimodalinput_mini.gni index 819786b31..365f279f8 100644 --- a/multimodalinput_mini.gni +++ b/multimodalinput_mini.gni @@ -119,7 +119,6 @@ declare_args() { "window_manager/src/input_windows_manager.cpp", ] - infraredemitter_sources = [ "src/js_register_module.cpp", ] diff --git a/service/connect_manager/include/multimodal_input_connect_proxy.h b/service/connect_manager/include/multimodal_input_connect_proxy.h index d10066ee1..d8eed27d9 100644 --- a/service/connect_manager/include/multimodal_input_connect_proxy.h +++ b/service/connect_manager/include/multimodal_input_connect_proxy.h @@ -130,7 +130,7 @@ public: /** * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . + * @param requencys take out the IrEmitter's Frequency. * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ @@ -138,14 +138,13 @@ public: /** * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. + * @param number Frequency of IrEmitter works. + * @param requencys pattern of IrEmitter works. + * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; - private: static inline BrokerDelegator delegator_; int32_t SetTouchpadBoolData(bool date, int32_t type); diff --git a/service/connect_manager/src/multimodal_input_connect_manager.cpp b/service/connect_manager/src/multimodal_input_connect_manager.cpp index b57d411d2..e5f26c195 100644 --- a/service/connect_manager/src/multimodal_input_connect_manager.cpp +++ b/service/connect_manager/src/multimodal_input_connect_manager.cpp @@ -695,43 +695,40 @@ int32_t MultimodalInputConnectManager::CancelInjection() return multimodalInputConnectService_->CancelInjection(); } +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter) +{ + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->HasIrEmitter(hasIrEmitter); +} - /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter) - { - CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->HasIrEmitter(hasIrEmitter); - } - - /** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t MultimodalInputConnectManager::GetInfraredFrequencies(std::vector& requencys) - { - CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->GetInfraredFrequencies(requencys); - } - /** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector& pattern) - { - CHKPR(multimodalInputConnectService_, RET_ERR); - return multimodalInputConnectService_->TransmitInfrared(number, pattern); - } - - +/** + * @brief Get InfraredFrequency of the IrEmitter in device. + * @param requencys take out the IrEmitter's Frequency . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectManager::GetInfraredFrequencies(std::vector& requencys) +{ + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->GetInfraredFrequencies(requencys); +} +/** + * @brief user IrEmitter with parameter number and pattern. + * @param number Frequency of IrEmitter works . + * @param requencys pattern of IrEmitter works . + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ +int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector& pattern) +{ + CHKPR(multimodalInputConnectService_, RET_ERR); + return multimodalInputConnectService_->TransmitInfrared(number, pattern); +} } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index 7d2c07ed4..9e8656d77 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -1908,10 +1908,6 @@ int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) MMI_HILOGE("Failed to write descriptor"); return ERR_INVALID_VALUE; } - // int32_t pid = GetCallingPid(); - int32_t pid = 0; - // /**写入pid**/ - WRITEINT32(data, pid, ERR_INVALID_VALUE); MessageParcel reply; MessageOption option; sptr remote = Remote(); @@ -1945,15 +1941,16 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector remote = Remote(); CHKPR(remote, RET_ERR); - int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), - data, reply, option); + int32_t ret = remote->SendRequest(static_cast( + MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), data, reply, option); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::GetInfraredFrequencies Send request fail, ret:%{public}d", ret); return ret; } int64_t number; READINT64(reply, number, IPC_PROXY_DEAD_OBJECT_ERR); - int64_t min,max; + int64_t min = 0; + int64_t max = 0; for (int32_t i = 0; i < number; i++) { READINT64(reply, max); READINT64(reply, min); @@ -1965,16 +1962,15 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector& pattern) -{ +{ CALL_DEBUG_ENTER; MessageParcel data; if (!data.WriteInterfaceToken(MultimodalInputConnectProxy::GetDescriptor())) { @@ -1984,7 +1980,7 @@ int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vecto WRITEINT64(data, number, ERR_INVALID_VALUE); /******* write size of array to data *******/ WRITEINT32(data, static_cast(pattern.size()), ERR_INVALID_VALUE); - /******* Pattern of signal transmission in alternate on/off mode, in microseconds. **********/ + /******* Pattern of signal transmission in alternate on/off mode, in microseconds. **********/ for (const auto &item : pattern) { WRITEINT64(data, item); } @@ -1992,14 +1988,13 @@ int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vecto MessageOption option; sptr remote = Remote(); CHKPR(remote, RET_ERR); - int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), - data, reply, option); + int32_t ret = remote->SendRequest(static_cast( + MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), data, reply, option); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::TransmitInfrared Send request fail, ret:%{public}d", ret); return ret; } return RET_OK; } - } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index 768c3c45b..950ab33e9 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -296,7 +296,7 @@ int32_t MultimodalInputConnectStub::OnRemoteRequest(uint32_t code, MessageParcel break; case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_INJECTION): return StubCancelInjection(data, reply); - break; + break; case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_OWN): return StubHasIrEmitter(data, reply); break; @@ -305,7 +305,7 @@ int32_t MultimodalInputConnectStub::OnRemoteRequest(uint32_t code, MessageParcel break; case static_cast(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT): return StubTransmitInfrared(data, reply); - break; + break; default: { MMI_HILOGE("Unknown code:%{public}u, go switch default", code); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -2077,24 +2077,21 @@ int32_t MultimodalInputConnectStub::StubCancelInjection(MessageParcel& data, Mes return RET_OK; } - - /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ - +/** + * @brief Get whether System has IrEmitter. + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not,. + * @return 0 if success; returns a non-0 value otherwise. + * @since 11 + */ int32_t MultimodalInputConnectStub::StubHasIrEmitter(MessageParcel& data, MessageParcel& reply) { - MMI_HILOGE("StubHasIrEmitter for trace, delete this while finish. %d",__LINE__); CALL_DEBUG_ENTER; if (!PerHelper->VerifySystemApp()) { MMI_HILOGE("Verify system APP failed"); return ERROR_NOT_SYSAPI; - } + } bool hasIrEmitter = false; - int32_t ret = HasIrEmitter( hasIrEmitter); + int32_t ret = HasIrEmitter(hasIrEmitter); if (ret != RET_OK) { MMI_HILOGE("Call StubHasIrEmitter failed ret:%{public}d", ret); return ret; @@ -2104,7 +2101,6 @@ int32_t MultimodalInputConnectStub::StubHasIrEmitter(MessageParcel& data, Messag return RET_OK; } - int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& data, MessageParcel& reply) { CALL_DEBUG_ENTER; @@ -2113,7 +2109,7 @@ int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& da return ERROR_NOT_SYSAPI; } if (!PerHelper->CheckInfraredEmmit()) { - MMI_HILOGE("MultimodalInputConnectStub::StubGetInfraredFrequencies permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); + MMI_HILOGE("MulmodalConStub::StubGetInfr permi check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); return ERROR_NO_PERMISSION; } std::vector requencys; @@ -2123,33 +2119,31 @@ int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& da return ret; } WRITEINT64(reply, requencys.size()); - for(const auto &item : requencys) - { + for (const auto &item : requencys) { WRITEINT64(reply, item.max_); WRITEINT64(reply, item.min_); } return RET_OK; } - int32_t MultimodalInputConnectStub::StubTransmitInfrared(MessageParcel& data, MessageParcel& reply) { CALL_DEBUG_ENTER; if (!PerHelper->VerifySystemApp()) { MMI_HILOGE("StubTransmitInfrared Verify system APP failed"); return ERROR_NOT_SYSAPI; - } + } if (!PerHelper->CheckInfraredEmmit()) { MMI_HILOGE("StubTransmitInfrared permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); return ERROR_NO_PERMISSION; } - int64_t number =0; + int64_t number = 0; READINT64(data, number, IPC_PROXY_DEAD_OBJECT_ERR); - int32_t pattern_len =0; + int32_t pattern_len = 0; std::vector pattern; READINT32(data, pattern_len, IPC_PROXY_DEAD_OBJECT_ERR); - for(int32_t i =0; i < pattern_len; i++) { - int64_t value =0; + for (int32_t i = 0; i < pattern_len; i++) { + int64_t value = 0; READINT64(data, value); pattern.push_back(value); } @@ -2161,6 +2155,5 @@ int32_t MultimodalInputConnectStub::StubTransmitInfrared(MessageParcel& data, Me WRITEINT32(reply, ret); return RET_OK; } - } // namespace MMI } // namespace OHOS diff --git a/service/module_loader/include/mmi_service.h b/service/module_loader/include/mmi_service.h index a2edd5d9f..583f954ac 100644 --- a/service/module_loader/include/mmi_service.h +++ b/service/module_loader/include/mmi_service.h @@ -135,16 +135,13 @@ public: int32_t CancelInjection() override; void OnAddSystemAbility(int32_t systemAbilityId, const std::string& deviceId) override; - int32_t HasIrEmitter( bool &hasIrEmitter) override; - int32_t GetInfraredFrequencies( std::vector& requencys) override; + int32_t HasIrEmitter(bool &hasIrEmitter) override; + int32_t GetInfraredFrequencies(std::vector& requencys) override; int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; - int32_t OnHasIrEmitter( bool &hasIrEmitter); + int32_t OnHasIrEmitter(bool &hasIrEmitter); int32_t OnGetInfraredFrequencies(std::vector& requencys); int32_t OnTransmitInfrared(int64_t number, std::vector& pattern); - - - #ifdef OHOS_BUILD_ENABLE_ANCO void InitAncoUds(); diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index 746dcb56f..7a80fd0c1 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2027,11 +2027,10 @@ int32_t MMIService::OnCancelInjection() return sMsgHandler_.OnCancelInjection(); } - int32_t MMIService::HasIrEmitter(bool &hasIrEmitter) { CALL_DEBUG_ENTER; - int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnHasIrEmitter, this, std::ref(hasIrEmitter))); + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnHasIrEmitter, this, std::ref(hasIrEmitter))); if (ret != RET_OK) { MMI_HILOGE("OnHasIrEmitter failed, ret:%{public}d", ret); return RET_ERR; @@ -2042,7 +2041,8 @@ int32_t MMIService::HasIrEmitter(bool &hasIrEmitter) int32_t MMIService::GetInfraredFrequencies(std::vector& requencys) { CALL_DEBUG_ENTER; - int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnGetInfraredFrequencies, this, std::ref(requencys))); + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnGetInfraredFrequencies, + this, std::ref(requencys))); if (ret != RET_OK) { MMI_HILOGE("OnGetInfraredFrequencies failed, returnCode:%{public}d", ret); return RET_ERR; @@ -2054,37 +2054,41 @@ int32_t MMIService::GetInfraredFrequencies(std::vector& reque int32_t MMIService::TransmitInfrared(int64_t number, std::vector& pattern) { CALL_DEBUG_ENTER; - int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnTransmitInfrared, this, number, pattern)); + int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnTransmitInfrared, this, number, pattern)); if (ret != RET_OK) { MMI_HILOGE("OnTransmitInfrared failed, returnCode:%{public}d", ret); return RET_ERR; } - return RET_OK; + return RET_OK; } -int32_t MMIService::OnHasIrEmitter( bool &hasIrEmitter) +int32_t MMIService::OnHasIrEmitter(bool &hasIrEmitter) { /** defautl not support IR **/ hasIrEmitter = false; - return RET_OK; + return RET_OK; } int32_t MMIService::OnGetInfraredFrequencies(std::vector& requencys) { /** get data from hdf **/ - for(int i = 1; i < 20; i++) { + int const tempSizeOfData = 20; + /** stub code for test, delete the following while hdf is connected**/ + int const maxStandard = 550; + int const minStandard = 550; + for (int i = 1; i < tempSizeOfData; i++) { InfraredFrequency itemFrequency; - itemFrequency.max_ = 500*i; - itemFrequency.min_ = 100*i; + itemFrequency.max_ = maxStandard*i; + itemFrequency.min_ = minStandard*i; requencys.emplace_back(itemFrequency); } std::string context = ""; int32_t size = static_cast(requencys.size()); - for(int32_t i = 0; i < size; i ++) { - context = context + "requencys[" + std::to_string(i) + - "]. max=" + std::to_string(requencys[i].max_) + ",min=" + std::to_string(requencys[i].min_) +";"; - } - MMI_HILOGD("MMIService::OnGetInfraredFrequencies data from hdf is. %{public}s " , context.c_str()); + for (int32_t i = 0; i < size; i ++) { + context = context + "requencys[" + std::to_string(i) + "]. max=" + + std::to_string(requencys[i].max_) + ",min=" + std::to_string(requencys[i].min_) +";"; + } + MMI_HILOGD("MMIService::OnGetInfraredFrequencies data from hdf is. %{public}s ", context.c_str()); return RET_OK; } @@ -2092,12 +2096,11 @@ int32_t MMIService::OnTransmitInfrared(int64_t infraredFrequency, std::vector(pattern.size()); - for(int32_t i = 0; i < size; i ++) { - context = context + "index:" + std::to_string(i) + ": pattern:" +std::to_string(pattern[i]) + ";"; - } - MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s \n", context.c_str()); - return RET_OK; + for (int32_t i = 0; i < size; i ++) { + context = context + "index:" + std::to_string(i) + ": pattern:" +std::to_string(pattern[i]) + ";"; + } + MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s", context.c_str()); + return RET_OK; } - } // namespace MMI } // namespace OHOS diff --git a/service/permission_helper/include/permission_helper.h b/service/permission_helper/include/permission_helper.h index 5510e9e06..4766de765 100644 --- a/service/permission_helper/include/permission_helper.h +++ b/service/permission_helper/include/permission_helper.h @@ -41,21 +41,19 @@ public: private: bool CheckHapPermission(uint32_t tokenId, uint32_t required); - /*** + * this function is checked whether a oparate from APP has certial permissions * tokenId: id of applicaiton * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed * ****/ bool CheckHapPermission(uint32_t tokenId, std::string permissionCode); - - /*** + * this function is checked whether a oparate from APP has certial permissions * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed * ****/ bool CheckHapPermission(std::string permissionCode); - bool CheckMonitorPermission(uint32_t tokenId); bool CheckInterceptorPermission(uint32_t tokenId); bool CheckDispatchControlPermission(uint32_t tokenId); diff --git a/service/permission_helper/src/permission_helper.cpp b/service/permission_helper/src/permission_helper.cpp index 7eb791bb1..4b7f9013d 100644 --- a/service/permission_helper/src/permission_helper.cpp +++ b/service/permission_helper/src/permission_helper.cpp @@ -68,8 +68,6 @@ bool PermissionHelper::CheckPermission(uint32_t required) } } - - bool PermissionHelper::CheckMonitor() { CALL_DEBUG_ENTER; @@ -120,38 +118,42 @@ bool PermissionHelper::CheckHapPermission(uint32_t tokenId, uint32_t required) return true; } -/*** - * add this funciton just because CheckHapPermission(int, String) and CheckHapPermission(string ) are private function. - * In fact I want add the previous two functions as public, but consider the privacy and security add them as private +/*** + * add this funciton just because CheckHapPermission(int, String) and + * CheckHapPermission(string ) are private function. + * In fact this should be added as the previous two functions as public, + * but consider the privacy and security add them as private * ***/ -bool PermissionHelper::CheckInfraredEmmit() { +bool PermissionHelper::CheckInfraredEmmit() +{ std::string infraredEmmitPermissionCode = "ohos.permission.INFRARED_EMITTER"; return CheckHapPermission(infraredEmmitPermissionCode); } /*** - * tokenId: id of applicaiton + * this function is checked whether a oparate from APP has certial permissions + * tokenId: id of applicaiton * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed - * permissionCode of InfraredEmitter Function: ohos.permission.INFRARED_EMITTER - * CheckHapPermission(pid, permissionCode) + * permissionCode of InfraredEmitter Function: ohos.permission.INFRARED_EMITTER * ****/ -bool PermissionHelper::CheckHapPermission(const std::string permissionCode) { - +bool PermissionHelper::CheckHapPermission(const std::string permissionCode) +{ CALL_DEBUG_ENTER; auto tokenId = IPCSkeleton::GetCallingTokenID(); - return CheckHapPermission(tokenId, permissionCode); + return CheckHapPermission(tokenId, permissionCode); } - /*** + * this function is checked whether a oparate from APP has certial permissions * tokenId: id of applicaiton * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed - * permissionCode of InfraredEmitter Function: ohos.permission.InfraredEmitter - * CheckHapPermission(pid, permissionCode) + * permissionCode of InfraredEmitter Function: ohos.permission.InfraredEmitter + * CheckHapPermission(pid, permissionCode) * ****/ -bool PermissionHelper::CheckHapPermission(uint32_t tokenId, const std::string permissionCode) { +bool PermissionHelper::CheckHapPermission(uint32_t tokenId, const std::string permissionCode) +{ CALL_DEBUG_ENTER; auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId); if ((tokenType == OHOS::Security::AccessToken::TOKEN_HAP) || @@ -166,10 +168,11 @@ bool PermissionHelper::CheckHapPermission(uint32_t tokenId, const std::string pe } /*** check permission here ***/ - std::string context = "For CheckHapPermission. permissionCode" + permissionCode + "; applicationId:" + std::to_string(tokenId); + std::string context = "For CheckPerm. PermiCode" + permissionCode + ";appId:" + std::to_string(tokenId); int32_t ret = OHOS::Security::AccessToken::AccessTokenKit::VerifyAccessToken(tokenId, permissionCode); if (ret != OHOS::Security::AccessToken::PERMISSION_GRANTED) { - MMI_HILOGE("Check permission: %{public}s failed for applicationId:%{public}d, and ret:%{public}d", permissionCode.c_str(), tokenId, ret); + MMI_HILOGE("Check Permi: %{public}s fail for appId:%{public}d, and ret:%{public}d", + permissionCode.c_str(), tokenId, ret); return false; } MMI_HILOGD("Check permission( %{public}s) permission success", permissionCode.c_str()); -- Gitee From eb33e18332360170818497eedfb2a2d66b74a78e Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 12:13:47 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E6=A0=B9=E6=8D=AEcodecheck=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E7=BB=93=E6=9E=9C=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I2b928b1a9d2191ee765f82c294bfefaff1449437 --- .../napi/infrared_emitter/src/js_register_module.cpp | 10 +++++----- .../infrared_emitter/test/register_module_test.cpp | 3 +-- frameworks/proxy/events/src/input_manager.cpp | 2 +- .../event/include/infrared_frequency_info.h | 6 +++--- .../include/multimodal_input_connect_manager.h | 2 +- .../src/multimodal_input_connect_proxy.cpp | 12 +++++++----- .../src/multimodal_input_connect_stub.cpp | 7 +++---- service/module_loader/src/mmi_service.cpp | 5 ++--- .../permission_helper/include/permission_helper.h | 4 ++-- service/permission_helper/src/permission_helper.cpp | 8 ++++---- 10 files changed, 29 insertions(+), 30 deletions(-) diff --git a/frameworks/napi/infrared_emitter/src/js_register_module.cpp b/frameworks/napi/infrared_emitter/src/js_register_module.cpp index bc0c1e838..dccdbee94 100644 --- a/frameworks/napi/infrared_emitter/src/js_register_module.cpp +++ b/frameworks/napi/infrared_emitter/src/js_register_module.cpp @@ -92,7 +92,7 @@ bool ParsePatternArray(const napi_env& env, const napi_value& value, std::vector }; bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info &info, int64_t & infraredFrequency, - std::vector & vecPattern) + std::vector & vecPattern) { CALL_DEBUG_ENTER; size_t argc = NUMBER_DEFAULT; @@ -144,7 +144,7 @@ napi_value CreateInfraredFrequencyItem(napi_env env, const InfraredFrequency &in CHKRP(napi_create_int64(env, infraredFrequency.min_, &jsMin), "napi_create_int64:min"); CHKRP(napi_set_named_property(env, result, "min", jsMin), SET_NAMED_PROPERTY); return result; -} +} static napi_value HasIrEmitter(napi_env env, napi_callback_info info) { @@ -192,7 +192,7 @@ static napi_value GetInfraredFrequencies(napi_env env, napi_callback_info info) return result; } -static napi_value TransmitInfrared(napi_env env, napi_callback_info info) +static napi_value TransmitInfrared(napi_env env, napi_callback_info info) { CALL_DEBUG_ENTER; napi_value result = nullptr; @@ -208,12 +208,12 @@ static napi_value TransmitInfrared(napi_env env, napi_callback_info info) for (int32_t i = 0; i < size; i++) { context = context + std::to_string(i) + ": pattern: " + std::to_string(pattern[i]) + ";"; } - MMI_HILOGD("js_register_module.TransmitInfrared para size :%{public}s " , context.c_str()); + MMI_HILOGD("js_register_module.TransmitInfrared para size :%{public}s", context.c_str()); int32_t ret = InputManager::GetInstance()->TransmitInfrared(number, pattern); /******** permission error service *******/ if (ret != RET_OK) { if (RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { - MMI_HILOGE("js_register_module.TransmitInfrared requst error. Permission Error or Not System APP.. Positive returnCode:%{public}d", ret); + MMI_HILOGE("js_register.Transmit req err. Per Er or Not Sys APP. Posi retCode:%{public}d", ret); ThrowError(env, ret, "TransmitInfrared"); } MMI_HILOGE("js_register_module.TransmitInfrared requst error. returnCode:%{public}d", ret); diff --git a/frameworks/napi/infrared_emitter/test/register_module_test.cpp b/frameworks/napi/infrared_emitter/test/register_module_test.cpp index 699311fcd..8fdb799f5 100644 --- a/frameworks/napi/infrared_emitter/test/register_module_test.cpp +++ b/frameworks/napi/infrared_emitter/test/register_module_test.cpp @@ -61,10 +61,9 @@ HWTEST_F(RegisterModuleTest, TransmitInfraredTest, TestSize.Level1) requencys.push_back(dist * i + frequency_Min); } int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min, requencys); - if(0 != ret) { + if (0 != ret) { testResult = true; } - //EXPECT_NE(ret, 0); EXPECT_EQ(testResult, true); } diff --git a/frameworks/proxy/events/src/input_manager.cpp b/frameworks/proxy/events/src/input_manager.cpp index 10e372e91..0444e25dd 100644 --- a/frameworks/proxy/events/src/input_manager.cpp +++ b/frameworks/proxy/events/src/input_manager.cpp @@ -529,7 +529,7 @@ void InputManager::Authorize(bool isAuthorize) * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ -int32_t InputManager::HasIrEmitter(bool &hasIrEmitter) +int32_t InputManager::HasIrEmitter(bool &hasIrEmitter) { return InputMgrImpl.HasIrEmitter(hasIrEmitter); } diff --git a/interfaces/native/innerkits/event/include/infrared_frequency_info.h b/interfaces/native/innerkits/event/include/infrared_frequency_info.h index 231066d57..281d5ca11 100644 --- a/interfaces/native/innerkits/event/include/infrared_frequency_info.h +++ b/interfaces/native/innerkits/event/include/infrared_frequency_info.h @@ -17,10 +17,10 @@ #define I_INFRARED_MANAGER namespace OHOS { - namespace MMI { + namespace MMI { struct InfraredFrequency { - int64_t max_ { 0 }; - int64_t min_ { 0 }; + int64_t max_ { 0 }; + int64_t min_ { 0 }; }; } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/include/multimodal_input_connect_manager.h b/service/connect_manager/include/multimodal_input_connect_manager.h index d451a80e9..efda8f565 100644 --- a/service/connect_manager/include/multimodal_input_connect_manager.h +++ b/service/connect_manager/include/multimodal_input_connect_manager.h @@ -123,7 +123,7 @@ public: int32_t Authorize(bool isAuthorize); int32_t CancelInjection(); - int32_t HasIrEmitter( bool &hasIrEmitter); + int32_t HasIrEmitter(bool &hasIrEmitter); int32_t GetInfraredFrequencies(std::vector& requencys); int32_t TransmitInfrared(int64_t number, std::vector& pattern); diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index 9e8656d77..0395823f2 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -1895,12 +1895,12 @@ int32_t MultimodalInputConnectProxy::CancelInjection() } /** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @brief Get whether System has IrEmitter + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not * @return 0 if success; returns a non-0 value otherwise. * @since 11 */ -int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) +int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) { CALL_DEBUG_ENTER; MessageParcel data; @@ -1942,7 +1942,8 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector remote = Remote(); CHKPR(remote, RET_ERR); int32_t ret = remote->SendRequest(static_cast( - MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), data, reply, option); + MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), + data, reply, option); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::GetInfraredFrequencies Send request fail, ret:%{public}d", ret); return ret; @@ -1989,7 +1990,8 @@ int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vecto sptr remote = Remote(); CHKPR(remote, RET_ERR); int32_t ret = remote->SendRequest(static_cast( - MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), data, reply, option); + MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), + data, reply, option); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::TransmitInfrared Send request fail, ret:%{public}d", ret); return ret; diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index 950ab33e9..8e2cc4012 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -2096,7 +2096,6 @@ int32_t MultimodalInputConnectStub::StubHasIrEmitter(MessageParcel& data, Messag MMI_HILOGE("Call StubHasIrEmitter failed ret:%{public}d", ret); return ret; } - WRITEINT32(reply, ret); WRITEBOOL(reply, hasIrEmitter, IPC_STUB_WRITE_PARCEL_ERR); return RET_OK; } @@ -2107,7 +2106,7 @@ int32_t MultimodalInputConnectStub::StubGetInfraredFrequencies(MessageParcel& da if (!PerHelper->VerifySystemApp()) { MMI_HILOGE("GetInfraredFrequencies Verify system APP failed"); return ERROR_NOT_SYSAPI; - } + } if (!PerHelper->CheckInfraredEmmit()) { MMI_HILOGE("MulmodalConStub::StubGetInfr permi check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); return ERROR_NO_PERMISSION; @@ -2136,10 +2135,10 @@ int32_t MultimodalInputConnectStub::StubTransmitInfrared(MessageParcel& data, Me if (!PerHelper->CheckInfraredEmmit()) { MMI_HILOGE("StubTransmitInfrared permission check failed. returnCode:%{public}d", ERROR_NO_PERMISSION); return ERROR_NO_PERMISSION; - } + } int64_t number = 0; READINT64(data, number, IPC_PROXY_DEAD_OBJECT_ERR); - int32_t pattern_len = 0; + int32_t pattern_len = 0; std::vector pattern; READINT32(data, pattern_len, IPC_PROXY_DEAD_OBJECT_ERR); for (int32_t i = 0; i < pattern_len; i++) { diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index 7a80fd0c1..3e1c4c2aa 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2042,13 +2042,12 @@ int32_t MMIService::GetInfraredFrequencies(std::vector& reque { CALL_DEBUG_ENTER; int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnGetInfraredFrequencies, - this, std::ref(requencys))); + this, std::ref(requencys))); if (ret != RET_OK) { MMI_HILOGE("OnGetInfraredFrequencies failed, returnCode:%{public}d", ret); return RET_ERR; } - return RET_OK; - + return RET_OK; } int32_t MMIService::TransmitInfrared(int64_t number, std::vector& pattern) diff --git a/service/permission_helper/include/permission_helper.h b/service/permission_helper/include/permission_helper.h index 4766de765..cefcdb38a 100644 --- a/service/permission_helper/include/permission_helper.h +++ b/service/permission_helper/include/permission_helper.h @@ -43,11 +43,11 @@ private: bool CheckHapPermission(uint32_t tokenId, uint32_t required); /*** * this function is checked whether a oparate from APP has certial permissions - * tokenId: id of applicaiton + * tokenId: id of applicaiton * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed * ****/ - bool CheckHapPermission(uint32_t tokenId, std::string permissionCode); + bool CheckHapPermission(uint32_t tokenId, std::string permissionCode); /*** * this function is checked whether a oparate from APP has certial permissions * permissionCode: code of permission for checked diff --git a/service/permission_helper/src/permission_helper.cpp b/service/permission_helper/src/permission_helper.cpp index 4b7f9013d..ea69dfac0 100644 --- a/service/permission_helper/src/permission_helper.cpp +++ b/service/permission_helper/src/permission_helper.cpp @@ -120,11 +120,11 @@ bool PermissionHelper::CheckHapPermission(uint32_t tokenId, uint32_t required) /*** * add this funciton just because CheckHapPermission(int, String) and - * CheckHapPermission(string ) are private function. - * In fact this should be added as the previous two functions as public, + * CheckHapPermission(string ) are private function + * In fact this should be added as the previous two functions as public * but consider the privacy and security add them as private * ***/ -bool PermissionHelper::CheckInfraredEmmit() +bool PermissionHelper::CheckInfraredEmmit() { std::string infraredEmmitPermissionCode = "ohos.permission.INFRARED_EMITTER"; return CheckHapPermission(infraredEmmitPermissionCode); @@ -172,7 +172,7 @@ bool PermissionHelper::CheckHapPermission(uint32_t tokenId, const std::string pe int32_t ret = OHOS::Security::AccessToken::AccessTokenKit::VerifyAccessToken(tokenId, permissionCode); if (ret != OHOS::Security::AccessToken::PERMISSION_GRANTED) { MMI_HILOGE("Check Permi: %{public}s fail for appId:%{public}d, and ret:%{public}d", - permissionCode.c_str(), tokenId, ret); + permissionCode.c_str(), tokenId, ret); return false; } MMI_HILOGD("Check permission( %{public}s) permission success", permissionCode.c_str()); -- Gitee From a3f438c47fcf57ee45e267e46ebf5d41a7715083 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 12:23:16 +0800 Subject: [PATCH 06/18] =?UTF-8?q?codecheck=20=E6=A3=80=E6=9F=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I71001234c014277ce7b59d95045d2009ba824ff3 --- .../connect_manager/src/multimodal_input_connect_proxy.cpp | 2 +- service/module_loader/src/mmi_service.cpp | 2 +- service/permission_helper/include/permission_helper.h | 2 +- service/permission_helper/src/permission_helper.cpp | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index 0395823f2..c882a4f72 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -1942,7 +1942,7 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector remote = Remote(); CHKPR(remote, RET_ERR); int32_t ret = remote->SendRequest(static_cast( - MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), + MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), data, reply, option); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::GetInfraredFrequencies Send request fail, ret:%{public}d", ret); diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index 3e1c4c2aa..6de8a7e34 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2047,7 +2047,7 @@ int32_t MMIService::GetInfraredFrequencies(std::vector& reque MMI_HILOGE("OnGetInfraredFrequencies failed, returnCode:%{public}d", ret); return RET_ERR; } - return RET_OK; + return RET_OK; } int32_t MMIService::TransmitInfrared(int64_t number, std::vector& pattern) diff --git a/service/permission_helper/include/permission_helper.h b/service/permission_helper/include/permission_helper.h index cefcdb38a..16044c042 100644 --- a/service/permission_helper/include/permission_helper.h +++ b/service/permission_helper/include/permission_helper.h @@ -47,7 +47,7 @@ private: * permissionCode: code of permission for checked * returnedValue: true: check successful; false: check failed * ****/ - bool CheckHapPermission(uint32_t tokenId, std::string permissionCode); + bool CheckHapPermission(uint32_t tokenId, std::string permissionCode); /*** * this function is checked whether a oparate from APP has certial permissions * permissionCode: code of permission for checked diff --git a/service/permission_helper/src/permission_helper.cpp b/service/permission_helper/src/permission_helper.cpp index ea69dfac0..70f0bdc98 100644 --- a/service/permission_helper/src/permission_helper.cpp +++ b/service/permission_helper/src/permission_helper.cpp @@ -146,9 +146,9 @@ bool PermissionHelper::CheckHapPermission(const std::string permissionCode) /*** * this function is checked whether a oparate from APP has certial permissions - * tokenId: id of applicaiton - * permissionCode: code of permission for checked - * returnedValue: true: check successful; false: check failed + * tokenId:id of applicaiton + * permissionCode:code of permission for checked + * returnedValue:true: check successful; false: check failed * permissionCode of InfraredEmitter Function: ohos.permission.InfraredEmitter * CheckHapPermission(pid, permissionCode) * ****/ -- Gitee From dad46518659341d42bd518c58820a5e2dba30cf4 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 13:51:06 +0800 Subject: [PATCH 07/18] =?UTF-8?q?codecheck=20=E6=A3=80=E6=9F=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I95570cab02c02de3daeb7967d2dcd1fd60ed2d0d --- service/module_loader/src/mmi_service.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index 6de8a7e34..67aea4843 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2042,7 +2042,7 @@ int32_t MMIService::GetInfraredFrequencies(std::vector& reque { CALL_DEBUG_ENTER; int32_t ret = delegateTasks_.PostSyncTask(std::bind(&MMIService::OnGetInfraredFrequencies, - this, std::ref(requencys))); + this, std::ref(requencys))); if (ret != RET_OK) { MMI_HILOGE("OnGetInfraredFrequencies failed, returnCode:%{public}d", ret); return RET_ERR; -- Gitee From 1dabd39c7be78834cf204537aa13a7cdc6d12563 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 14:12:25 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E6=8C=89=E7=85=A7=20gn=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=A0=BC=E5=BC=8F=E5=8C=96=E6=A3=80=E6=9F=A5=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E5=AF=B9gn=E6=96=87=E4=BB=B6=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I219aedb235a67448287d08afbbfe64c38bb858a0 --- BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD.gn b/BUILD.gn index ec248d16b..1fa272b7e 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -109,7 +109,7 @@ group("input_jsapi_group") { deps += [ "frameworks/napi/short_key:shortkey" ] } if (input_feature_infrared_emitter) { - deps += [ "frameworks/napi/infrared_emitter:infraredemitter"] + deps += [ "frameworks/napi/infrared_emitter:infraredemitter" ] } } } -- Gitee From c7dc2c4a990c12c839f20d76bb8cfc558933b2e9 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 14:27:03 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E6=A3=80=E6=9F=A5gn=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=EF=BC=8C=E6=8C=89=E8=A6=81=E6=B1=82=E5=86=8D=E5=81=9A=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E5=90=8E=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I51a74ef3f4fbd4280ead6b985226332b5b5d3507 --- frameworks/napi/infrared_emitter/BUILD.gn | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/frameworks/napi/infrared_emitter/BUILD.gn b/frameworks/napi/infrared_emitter/BUILD.gn index fca277abb..65f78d37f 100644 --- a/frameworks/napi/infrared_emitter/BUILD.gn +++ b/frameworks/napi/infrared_emitter/BUILD.gn @@ -12,13 +12,20 @@ # limitations under the License. import("../../../multimodalinput_mini.gni") -print("******************************************************************************************************") -print("******************************************************************************************************") -print("******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") -print("******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") -print("******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") -print("******************************************************************************************************") -print("******************************************************************************************************") +print( + "******************************************************************************************************") +print( + "******************************************************************************************************") +print( + "******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") +print( + "******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") +print( + "******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") +print( + "******************************************************************************************************") +print( + "******************************************************************************************************") config("infraredemitter_config") { visibility = [ ":*" ] @@ -30,7 +37,6 @@ config("infraredemitter_config") { ] } - ohos_shared_library("infraredemitter") { sources = infraredemitter_sources stack_protector_ret = true @@ -43,7 +49,6 @@ ohos_shared_library("infraredemitter") { debug = false } - configs = [ "${mmi_path}:coverage_flags", ":infraredemitter_config", -- Gitee From 9ddfca401cf4ccfcde29733c524507d77745b9e9 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 14:40:09 +0800 Subject: [PATCH 10/18] =?UTF-8?q?gn=E6=96=87=E4=BB=B6=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96=E6=A3=80=E6=9F=A5=E7=BB=93=E6=9E=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I8b9690a252c419eb6e4e46d749f8fcd6b17b87d7 --- multimodalinput_mini.gni | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/multimodalinput_mini.gni b/multimodalinput_mini.gni index 365f279f8..084c650b3 100644 --- a/multimodalinput_mini.gni +++ b/multimodalinput_mini.gni @@ -119,9 +119,7 @@ declare_args() { "window_manager/src/input_windows_manager.cpp", ] - infraredemitter_sources = [ - "src/js_register_module.cpp", - ] + infraredemitter_sources = [ "src/js_register_module.cpp" ] inputdevice_sources = [ "src/js_event_target.cpp", @@ -202,6 +200,8 @@ declare_args() { libmmi_virtual_device_sources = [ "src/virtual_device.cpp", "src/virtual_finger.cpp", + "src/virtual_fingerprint_key.cpp", + "src/virtual_fingerprint_mouse.cpp", "src/virtual_gamepad.cpp", "src/virtual_joystick.cpp", "src/virtual_keyboard.cpp", @@ -227,8 +227,6 @@ declare_args() { "src/virtual_trackpad.cpp", "src/virtual_trackpad_mouse.cpp", "src/virtual_trackpad_sys_ctrl.cpp", - "src/virtual_fingerprint_key.cpp", - "src/virtual_fingerprint_mouse.cpp", ] libmmi_util_sources = [ -- Gitee From 246f012887e8153d157d6431a4c51cc483e731d5 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 15:21:52 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I05e341d4c4241e56ce03032ba1b494731883e213 --- frameworks/napi/infrared_emitter/test/register_module_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/napi/infrared_emitter/test/register_module_test.cpp b/frameworks/napi/infrared_emitter/test/register_module_test.cpp index 8fdb799f5..f6722428e 100644 --- a/frameworks/napi/infrared_emitter/test/register_module_test.cpp +++ b/frameworks/napi/infrared_emitter/test/register_module_test.cpp @@ -62,7 +62,7 @@ HWTEST_F(RegisterModuleTest, TransmitInfraredTest, TestSize.Level1) } int32_t ret = InputManager::GetInstance()->TransmitInfrared(frequency_Min, requencys); if (0 != ret) { - testResult = true; + testResult = false; } EXPECT_EQ(testResult, true); } -- Gitee From 138c37c1ae3a4d192738a3371e05232b02f5048c Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 20:08:26 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E6=A0=B9=E6=8D=AEmayunteng=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=84=8F=E8=A7=81=E5=AF=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=86=8D=E6=AC=A1=E4=BF=AE=E6=94=B9=E5=90=8E?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I14ff4b97edf5c42edcb244ed1c28e5fdf603a2c5 --- frameworks/napi/infrared_emitter/BUILD.gn | 18 +++---------- .../include/js_register_module.h | 27 +++---------------- .../src/js_register_module.cpp | 7 ++--- .../test/register_module_test.cpp | 10 ++++--- .../include/input_manager_impl.h | 2 +- .../event_handler/src/input_manager_impl.cpp | 19 ------------- frameworks/proxy/events/src/input_manager.cpp | 19 ------------- .../event/include/infrared_frequency_info.h | 14 +++++----- .../innerkits/proxy/include/input_manager.h | 10 +++---- multimodalinput_mini.gni | 2 +- .../multimodal_input_connect_manager.h | 2 -- .../include/multimodal_input_connect_proxy.h | 23 ---------------- .../src/multimodal_input_connect_manager.cpp | 20 +------------- .../src/multimodal_input_connect_proxy.cpp | 22 --------------- .../src/multimodal_input_connect_stub.cpp | 6 ----- service/module_loader/include/mmi_service.h | 4 +-- service/module_loader/src/mmi_service.cpp | 13 ++++----- 17 files changed, 37 insertions(+), 181 deletions(-) diff --git a/frameworks/napi/infrared_emitter/BUILD.gn b/frameworks/napi/infrared_emitter/BUILD.gn index 65f78d37f..da3856d39 100644 --- a/frameworks/napi/infrared_emitter/BUILD.gn +++ b/frameworks/napi/infrared_emitter/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2022 Huawei Device Co., Ltd. +# Copyright (c) 2024 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -12,20 +12,8 @@ # limitations under the License. import("../../../multimodalinput_mini.gni") -print( - "******************************************************************************************************") -print( - "******************************************************************************************************") -print( - "******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") -print( - "******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") -print( - "******input_feature_infrared_emitter = ${input_feature_infrared_emitter}") -print( - "******************************************************************************************************") -print( - "******************************************************************************************************") + +print("input_feature_infrared_emitter = ${input_feature_infrared_emitter}") config("infraredemitter_config") { visibility = [ ":*" ] diff --git a/frameworks/napi/infrared_emitter/include/js_register_module.h b/frameworks/napi/infrared_emitter/include/js_register_module.h index 39a9fc2c7..5b1720cac 100644 --- a/frameworks/napi/infrared_emitter/include/js_register_module.h +++ b/frameworks/napi/infrared_emitter/include/js_register_module.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -13,38 +13,19 @@ * limitations under the License. */ -/**** -* -*【需求描述】: -支持如下接口: -1、获取设备支持的红外频率数据:参考命名 getCarrierFrequencies -输入:调用此接口 -处理:调用HDF红外服务的HDI接口,获取频率数据 -输出:返回给调用方设备支持的外频率数据 -2、设备是否有红外:参考命名 hasIrEmitter () -输入:调用此接口 -处理:判断HDF红外服务是否运行 -输出:红外服务运行了返回true,否则返回false -3、发送红外信号:参考命名 transmit (int frequency, int[] pattern) -输入:调用此接口 -处理:调用HDF红外服务的HDI接口,以频率 frequency,发送pattern红外码 -* -*****/ - #ifndef JS_INFRARED_MANAGER_H #define JS_INFRARED_MANAGER_H +#include "define_multimodal.h" #include "napi/native_api.h" #include "napi/native_node_api.h" -#include "define_multimodal.h" #include "nocopyable.h" #include "utils/log.h" #include "key_event.h" #include "key_option.h" namespace OHOS { - namespace MMI { - - } // namespace MMI +namespace MMI { +} // namespace MMI } // namespace OHOS #endif // JS_INFRARED_MANAGER_H \ No newline at end of file diff --git a/frameworks/napi/infrared_emitter/src/js_register_module.cpp b/frameworks/napi/infrared_emitter/src/js_register_module.cpp index dccdbee94..abb512fb3 100644 --- a/frameworks/napi/infrared_emitter/src/js_register_module.cpp +++ b/frameworks/napi/infrared_emitter/src/js_register_module.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -14,9 +14,9 @@ */ #include "js_register_module.h" -#include "input_manager.h" #include +#include "input_manager.h" #include "mmi_log.h" #include "napi_constants.h" #include "util_napi_error.h" @@ -98,7 +98,6 @@ bool ParseTransmitInfraredJSParam(const napi_env& env, const napi_callback_info size_t argc = NUMBER_DEFAULT; napi_value argv[NUMBER_PARAMETERS]; CHKRF(napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr), GET_CB_INFO); - /******* modify NUMBER_PARAMETERS as const *******/ if (argc != NUMBER_PARAMETERS) { MMI_HILOGE("ParseTransmitInfraredJSParam Parameter number error"); return false; @@ -166,7 +165,6 @@ static napi_value GetInfraredFrequencies(napi_env env, napi_callback_info info) std::vector requencys; int32_t ret = InputManager::GetInstance()->GetInfraredFrequencies(requencys); if (ret != RET_OK) { - /** error permission business. permissionCode is a negative value ***/ if (RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { MMI_HILOGE("js_register.GetFreq reqErr. Permi Err or Not System APP. Positive retCode:%{public}d", ret); ThrowError(env, ret, "GetInfraredFrequencies"); @@ -210,7 +208,6 @@ static napi_value TransmitInfrared(napi_env env, napi_callback_info info) } MMI_HILOGD("js_register_module.TransmitInfrared para size :%{public}s", context.c_str()); int32_t ret = InputManager::GetInstance()->TransmitInfrared(number, pattern); - /******** permission error service *******/ if (ret != RET_OK) { if (RET_OK > ret || COMMON_PERMISSION_CHECK_ERROR == ret || ERROR_NOT_SYSAPI == ret) { MMI_HILOGE("js_register.Transmit req err. Per Er or Not Sys APP. Posi retCode:%{public}d", ret); diff --git a/frameworks/napi/infrared_emitter/test/register_module_test.cpp b/frameworks/napi/infrared_emitter/test/register_module_test.cpp index f6722428e..028fedd46 100644 --- a/frameworks/napi/infrared_emitter/test/register_module_test.cpp +++ b/frameworks/napi/infrared_emitter/test/register_module_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -18,14 +18,18 @@ namespace MMI { namespace { using namespace testing::ext; } // namespace -/********* 实现DTS的接口如何测试? *********/ class RegisterModuleTest : public testing::Test { public: - /***** 测试使用红外的频率(使用返回的第一个频率) ******/ int64_t frequency_Max; int64_t frequency_Min; }; +/** + * @tc.name: GetInfraredFrequenciesTest + * @tc.desc: Event dump CheckCount + * @tc.type: FUNC + * @tc.require:AR000GJG6G + */ HWTEST_F(RegisterModuleTest, GetInfraredFrequenciesTest, TestSize.Level1) { std::vector requencys; diff --git a/frameworks/proxy/event_handler/include/input_manager_impl.h b/frameworks/proxy/event_handler/include/input_manager_impl.h index c8fe1a90e..3f49dcdc9 100644 --- a/frameworks/proxy/event_handler/include/input_manager_impl.h +++ b/frameworks/proxy/event_handler/include/input_manager_impl.h @@ -193,7 +193,7 @@ public: int32_t GetKeyState(std::vector &pressedKeys, std::map &specialKeysState); void Authorize(bool isAuthorize); int32_t CancelInjection(); - + int32_t HasIrEmitter(bool &hasIrEmitter); int32_t GetInfraredFrequencies(std::vector& requencys); int32_t TransmitInfrared(int64_t number, std::vector& pattern); diff --git a/frameworks/proxy/event_handler/src/input_manager_impl.cpp b/frameworks/proxy/event_handler/src/input_manager_impl.cpp index de6a0e13b..339633ed7 100644 --- a/frameworks/proxy/event_handler/src/input_manager_impl.cpp +++ b/frameworks/proxy/event_handler/src/input_manager_impl.cpp @@ -2025,37 +2025,18 @@ int32_t InputManagerImpl::CancelInjection() return RET_OK; } -/** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t InputManagerImpl::HasIrEmitter(bool &hasIrEmitter) { CALL_INFO_TRACE; return MultimodalInputConnMgr->HasIrEmitter(hasIrEmitter); } -/** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency. - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t InputManagerImpl::GetInfraredFrequencies(std::vector& requencys) { CALL_INFO_TRACE; return MultimodalInputConnMgr->GetInfraredFrequencies(requencys); } -/** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t InputManagerImpl::TransmitInfrared(int64_t number, std::vector& pattern) { CALL_INFO_TRACE; diff --git a/frameworks/proxy/events/src/input_manager.cpp b/frameworks/proxy/events/src/input_manager.cpp index 0444e25dd..1d29b86ce 100644 --- a/frameworks/proxy/events/src/input_manager.cpp +++ b/frameworks/proxy/events/src/input_manager.cpp @@ -523,35 +523,16 @@ void InputManager::Authorize(bool isAuthorize) InputMgrImpl.Authorize(isAuthorize); } -/** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not. - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t InputManager::HasIrEmitter(bool &hasIrEmitter) { return InputMgrImpl.HasIrEmitter(hasIrEmitter); } -/** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency. - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t InputManager::GetInfraredFrequencies(std::vector& requencys) { return InputMgrImpl.GetInfraredFrequencies(requencys); } -/** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t InputManager::TransmitInfrared(int64_t number, std::vector& pattern) { return InputMgrImpl.TransmitInfrared(number, pattern); diff --git a/interfaces/native/innerkits/event/include/infrared_frequency_info.h b/interfaces/native/innerkits/event/include/infrared_frequency_info.h index 281d5ca11..162563ddd 100644 --- a/interfaces/native/innerkits/event/include/infrared_frequency_info.h +++ b/interfaces/native/innerkits/event/include/infrared_frequency_info.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -17,11 +17,11 @@ #define I_INFRARED_MANAGER namespace OHOS { - namespace MMI { - struct InfraredFrequency { - int64_t max_ { 0 }; - int64_t min_ { 0 }; - }; - } // namespace MMI +namespace MMI { +struct InfraredFrequency { + int64_t max_ { 0 }; + int64_t min_ { 0 }; +}; +} // namespace MMI } // namespace OHOS #endif // I_INFRARED_MANAGER \ No newline at end of file diff --git a/interfaces/native/innerkits/proxy/include/input_manager.h b/interfaces/native/innerkits/proxy/include/input_manager.h index e1e994d05..926527bcd 100644 --- a/interfaces/native/innerkits/proxy/include/input_manager.h +++ b/interfaces/native/innerkits/proxy/include/input_manager.h @@ -819,17 +819,17 @@ public: /** * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . + * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not. * @return 0 if success; returns a non-0 value otherwise. - * @since 11 + * @since 12 */ int32_t HasIrEmitter(bool &hasIrEmitter); /** * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . + * @param requencys take out the IrEmitter's Frequency. * @return 0 if success; returns a non-0 value otherwise. - * @since 11 + * @since 12 */ int32_t GetInfraredFrequencies(std::vector& requencys); @@ -838,7 +838,7 @@ public: * @param number Frequency of IrEmitter works . * @param pattern Pattern of signal transmission in alternate on/off mode, in microseconds. * @return 0 if success; returns a non-0 value otherwise. - * @since 11 + * @since 12 */ int32_t TransmitInfrared(int64_t number, std::vector& pattern); diff --git a/multimodalinput_mini.gni b/multimodalinput_mini.gni index 084c650b3..8b20122b8 100644 --- a/multimodalinput_mini.gni +++ b/multimodalinput_mini.gni @@ -40,7 +40,7 @@ declare_args() { input_ext_feature_fingersense = false input_feature_fingerprint = false input_ext_feature_magiccursor = false - input_feature_infrared_emitter = true + input_feature_infrared_emitter = false if (defined(global_parts_info) && defined(global_parts_info.resourceschedule_resource_schedule_service)) { diff --git a/service/connect_manager/include/multimodal_input_connect_manager.h b/service/connect_manager/include/multimodal_input_connect_manager.h index efda8f565..04018628f 100644 --- a/service/connect_manager/include/multimodal_input_connect_manager.h +++ b/service/connect_manager/include/multimodal_input_connect_manager.h @@ -122,11 +122,9 @@ public: int32_t GetKeyState(std::vector &pressedKeys, std::map &specialKeysState); int32_t Authorize(bool isAuthorize); int32_t CancelInjection(); - int32_t HasIrEmitter(bool &hasIrEmitter); int32_t GetInfraredFrequencies(std::vector& requencys); int32_t TransmitInfrared(int64_t number, std::vector& pattern); - void AddServiceWatcher(std::shared_ptr watcher); void RemoveServiceWatcher(std::shared_ptr watcher); diff --git a/service/connect_manager/include/multimodal_input_connect_proxy.h b/service/connect_manager/include/multimodal_input_connect_proxy.h index d8eed27d9..62a92487d 100644 --- a/service/connect_manager/include/multimodal_input_connect_proxy.h +++ b/service/connect_manager/include/multimodal_input_connect_proxy.h @@ -25,7 +25,6 @@ #include "mmi_event_observer.h" #include "multimodalinput_ipc_interface_code.h" - namespace OHOS { namespace MMI { class MultimodalInputConnectProxy final : public IRemoteProxy { @@ -119,30 +118,8 @@ public: int32_t GetKeyState(std::vector &pressedKeys, std::map &specialKeysState) override; int32_t Authorize(bool isAuthorize) override; int32_t CancelInjection() override; - - /** - * @brief Get whether System has IrEmitter.1 - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t HasIrEmitter(bool &hasIrEmitter) override; - - /** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency. - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t GetInfraredFrequencies(std::vector& requencys) override; - - /** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works. - * @param requencys pattern of IrEmitter works. - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; private: diff --git a/service/connect_manager/src/multimodal_input_connect_manager.cpp b/service/connect_manager/src/multimodal_input_connect_manager.cpp index e5f26c195..863d25e62 100644 --- a/service/connect_manager/src/multimodal_input_connect_manager.cpp +++ b/service/connect_manager/src/multimodal_input_connect_manager.cpp @@ -695,36 +695,18 @@ int32_t MultimodalInputConnectManager::CancelInjection() return multimodalInputConnectService_->CancelInjection(); } -/** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not, . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t MultimodalInputConnectManager::HasIrEmitter(bool &hasIrEmitter) { CHKPR(multimodalInputConnectService_, RET_ERR); return multimodalInputConnectService_->HasIrEmitter(hasIrEmitter); } -/** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t MultimodalInputConnectManager::GetInfraredFrequencies(std::vector& requencys) { CHKPR(multimodalInputConnectService_, RET_ERR); return multimodalInputConnectService_->GetInfraredFrequencies(requencys); } -/** - * @brief user IrEmitter with parameter number and pattern. - * @param number Frequency of IrEmitter works . - * @param requencys pattern of IrEmitter works . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ + int32_t MultimodalInputConnectManager::TransmitInfrared(int64_t number, std::vector& pattern) { CHKPR(multimodalInputConnectService_, RET_ERR); diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index c882a4f72..20fbdafc3 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -1894,12 +1894,6 @@ int32_t MultimodalInputConnectProxy::CancelInjection() return RET_OK; } -/** - * @brief Get whether System has IrEmitter - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) { CALL_DEBUG_ENTER; @@ -1914,7 +1908,6 @@ int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) CHKPR(remote, RET_ERR); int32_t ret = remote->SendRequest(static_cast(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_OWN), data, reply, option); - /*** hasIrEmitter ***/ READBOOL(reply, hasIrEmitter, IPC_PROXY_DEAD_OBJECT_ERR); if (ret != RET_OK) { MMI_HILOGE("MultimodalInputConnectProxy::HasIrEmitter Send request fail, ret:%{public}d", ret); @@ -1923,12 +1916,6 @@ int32_t MultimodalInputConnectProxy::HasIrEmitter(bool &hasIrEmitter) return RET_OK; } -/** - * @brief Get InfraredFrequency of the IrEmitter in device. - * @param requencys take out the IrEmitter's Frequency . - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector& requencys) { CALL_DEBUG_ENTER; @@ -1963,13 +1950,6 @@ int32_t MultimodalInputConnectProxy::GetInfraredFrequencies(std::vector& pattern) { CALL_DEBUG_ENTER; @@ -1979,9 +1959,7 @@ int32_t MultimodalInputConnectProxy::TransmitInfrared(int64_t number, std::vecto return ERR_INVALID_VALUE; } WRITEINT64(data, number, ERR_INVALID_VALUE); - /******* write size of array to data *******/ WRITEINT32(data, static_cast(pattern.size()), ERR_INVALID_VALUE); - /******* Pattern of signal transmission in alternate on/off mode, in microseconds. **********/ for (const auto &item : pattern) { WRITEINT64(data, item); } diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index 8e2cc4012..a691d86da 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -2077,12 +2077,6 @@ int32_t MultimodalInputConnectStub::StubCancelInjection(MessageParcel& data, Mes return RET_OK; } -/** - * @brief Get whether System has IrEmitter. - * @param hasIrEmitter the para takes the value which Indicates the device has IrEmitter or not,. - * @return 0 if success; returns a non-0 value otherwise. - * @since 11 - */ int32_t MultimodalInputConnectStub::StubHasIrEmitter(MessageParcel& data, MessageParcel& reply) { CALL_DEBUG_ENTER; diff --git a/service/module_loader/include/mmi_service.h b/service/module_loader/include/mmi_service.h index 583f954ac..43c11789d 100644 --- a/service/module_loader/include/mmi_service.h +++ b/service/module_loader/include/mmi_service.h @@ -134,11 +134,9 @@ public: int32_t Authorize(bool isAuthorize) override; int32_t CancelInjection() override; void OnAddSystemAbility(int32_t systemAbilityId, const std::string& deviceId) override; - int32_t HasIrEmitter(bool &hasIrEmitter) override; int32_t GetInfraredFrequencies(std::vector& requencys) override; - int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; - + int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; int32_t OnHasIrEmitter(bool &hasIrEmitter); int32_t OnGetInfraredFrequencies(std::vector& requencys); int32_t OnTransmitInfrared(int64_t number, std::vector& pattern); diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index 67aea4843..988954e7c 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2063,27 +2063,24 @@ int32_t MMIService::TransmitInfrared(int64_t number, std::vector& patte int32_t MMIService::OnHasIrEmitter(bool &hasIrEmitter) { - /** defautl not support IR **/ hasIrEmitter = false; return RET_OK; } int32_t MMIService::OnGetInfraredFrequencies(std::vector& requencys) { - /** get data from hdf **/ int const tempSizeOfData = 20; - /** stub code for test, delete the following while hdf is connected**/ int const maxStandard = 550; int const minStandard = 550; for (int i = 1; i < tempSizeOfData; i++) { InfraredFrequency itemFrequency; - itemFrequency.max_ = maxStandard*i; - itemFrequency.min_ = minStandard*i; + itemFrequency.max_ = maxStandard * i; + itemFrequency.min_ = minStandard * i; requencys.emplace_back(itemFrequency); } std::string context = ""; int32_t size = static_cast(requencys.size()); - for (int32_t i = 0; i < size; i ++) { + for (int32_t i = 0; i < size; i++) { context = context + "requencys[" + std::to_string(i) + "]. max=" + std::to_string(requencys[i].max_) + ",min=" + std::to_string(requencys[i].min_) +";"; } @@ -2095,8 +2092,8 @@ int32_t MMIService::OnTransmitInfrared(int64_t infraredFrequency, std::vector(pattern.size()); - for (int32_t i = 0; i < size; i ++) { - context = context + "index:" + std::to_string(i) + ": pattern:" +std::to_string(pattern[i]) + ";"; + for (int32_t i = 0; i < size; i++) { + context = context + "index:" + std::to_string(i) + ": pattern:" + std::to_string(pattern[i]) + ";"; } MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s", context.c_str()); return RET_OK; -- Gitee From a0debe4bd171733ab8b3ed44e572e8f212be3f19 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 20:20:31 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E6=A0=B9=E6=8D=AEmayunteng=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=84=8F=E8=A7=81=E5=AF=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=86=8D=E6=AC=A1=E4=BF=AE=E6=94=B9=E5=90=8E?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I84b9db66777f26d455b6928d6fa93dd0c988fb58 --- service/module_loader/include/mmi_service.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/module_loader/include/mmi_service.h b/service/module_loader/include/mmi_service.h index 43c11789d..cf538d1e8 100644 --- a/service/module_loader/include/mmi_service.h +++ b/service/module_loader/include/mmi_service.h @@ -136,7 +136,7 @@ public: void OnAddSystemAbility(int32_t systemAbilityId, const std::string& deviceId) override; int32_t HasIrEmitter(bool &hasIrEmitter) override; int32_t GetInfraredFrequencies(std::vector& requencys) override; - int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; + int32_t TransmitInfrared(int64_t number, std::vector& pattern) override; int32_t OnHasIrEmitter(bool &hasIrEmitter); int32_t OnGetInfraredFrequencies(std::vector& requencys); int32_t OnTransmitInfrared(int64_t number, std::vector& pattern); -- Gitee From faff6f6854ec70e7c9d53cfcb8b5e6b6cc7d81c2 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 22:10:27 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BA=A2=E5=A4=96?= =?UTF-8?q?=E7=9A=84HDF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: I3df894ddeb3fbb06120586566e6ffd33f8d37107 --- bundle.json | 4 +- multimodalinput_mini.gni | 3 +- service/BUILD.gn | 17 +++- .../include/infrared_emitter_controller.h | 48 +++++++++ .../src/infrared_emitter_controller.cpp | 97 +++++++++++++++++++ service/module_loader/src/mmi_service.cpp | 26 +++-- test/unittest/interfaces/BUILD.gn | 52 +--------- .../interfaces/kits/input_native_test.cpp | 45 ++++++++- 8 files changed, 227 insertions(+), 65 deletions(-) create mode 100644 service/infrared_emitter/include/infrared_emitter_controller.h create mode 100644 service/infrared_emitter/src/infrared_emitter_controller.cpp diff --git a/bundle.json b/bundle.json index 0f953cf91..11e13f7cf 100644 --- a/bundle.json +++ b/bundle.json @@ -73,7 +73,9 @@ "relational_store", "faultloggerd", "ffrt", - "graphic_2d_ext" + "graphic_2d_ext", + "drivers_interface_tros_extra", + "hdf_core" ], "third_party": [ "cJSON", diff --git a/multimodalinput_mini.gni b/multimodalinput_mini.gni index 8b20122b8..fa9f2aa3f 100644 --- a/multimodalinput_mini.gni +++ b/multimodalinput_mini.gni @@ -40,7 +40,7 @@ declare_args() { input_ext_feature_fingersense = false input_feature_fingerprint = false input_ext_feature_magiccursor = false - input_feature_infrared_emitter = false + input_feature_infrared_emitter = true if (defined(global_parts_info) && defined(global_parts_info.resourceschedule_resource_schedule_service)) { @@ -329,6 +329,7 @@ if (input_ext_feature_anco) { "${mmi_ext_path}/anco_uds_manager/src/anco_uds_manager.cpp", "${mmi_ext_path}/anco_uds_manager/src/input_windows_manager_ext.cpp", "${mmi_ext_path}/anco_uds_manager/src/mmi_service_ext.cpp", + "${mmi_path}/service/infrared_emitter/src/infrared_emitter_controller.cpp", ] } diff --git a/service/BUILD.gn b/service/BUILD.gn index aad627579..d736e0ae8 100644 --- a/service/BUILD.gn +++ b/service/BUILD.gn @@ -87,11 +87,14 @@ config("libmmi_server_config") { ] if (input_feature_fingerprint) { - include_dirs += ["fingerprint_event_processor/include"] + include_dirs += [ "fingerprint_event_processor/include" ] } if (input_ext_feature_anco) { - include_dirs += [ "${mmi_ext_path}/anco_uds_manager/include" ] + include_dirs += [ + "${mmi_ext_path}/anco_uds_manager/include", + "${mmi_service_path}/infrared_emitter/include", + ] } if (input_ext_feature_magiccursor) { @@ -184,7 +187,8 @@ ohos_shared_library("libmmi-server") { } } if (input_feature_fingerprint) { - sources += ["fingerprint_event_processor/src/fingerprint_event_processor.cpp"] + sources += + [ "fingerprint_event_processor/src/fingerprint_event_processor.cpp" ] } if (input_feature_joystick) { sources += [ "touch_event_normalize/src/joystick_transform_processor.cpp" ] @@ -232,6 +236,13 @@ ohos_shared_library("libmmi-server") { external_deps += [ "resource_schedule_service:ressched_client" ] } + if (input_ext_feature_anco) { + external_deps += [ + "drivers_interface_rtos_extra:libconsumerir_proxy_1.0", + "hdf_core:libhdi", + ] + } + external_deps += [ "ability_base:want", "ability_base:zuri", diff --git a/service/infrared_emitter/include/infrared_emitter_controller.h b/service/infrared_emitter/include/infrared_emitter_controller.h new file mode 100644 index 000000000..1e0e87499 --- /dev/null +++ b/service/infrared_emitter/include/infrared_emitter_controller.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INFRARED_EMMITTER_CONTROLLER_H +#define INFRARED_EMMITTER_CONTROLLER_H + +#include "infrared_frequency_info.h" + +#include "nocopyable.h" +#include "v1_0/consumer_ir.h" +#include "v1_0/types.h" + +namespace OHOS { +namespace MMI { +class InfraredEmitterController { +public: + /** + * @brief Obtains an InfraredEmitterController instance. + * @return Returns the pointer to the InfraredEmitterController instance. + * @since 12 + */ + static InfraredEmitterController *GetInstance(); + virtual ~InfraredEmitterController() = default; + void InitInfraredEmitter(); + bool Transmit(int64_t carrierFreq, std::vector pattern); + bool GetFrequencies(std::vector &frequencyInfo); + +private: + InfraredEmitterController() =default; + DISALLOW_COPY_AND_MOVE(InfraredEmitterController); + static InfraredEmitterController *instance_; + sptr irInterface_ {nullptr}; +}; +} +} +#endif // INFRARED_EMMITTER_CONTROLLER_H \ No newline at end of file diff --git a/service/infrared_emitter/src/infrared_emitter_controller.cpp b/service/infrared_emitter/src/infrared_emitter_controller.cpp new file mode 100644 index 000000000..5a1feb1e2 --- /dev/null +++ b/service/infrared_emitter/src/infrared_emitter_controller.cpp @@ -0,0 +1,97 @@ +#include "infrared_emitter_controller.h" + +#include "mmi_log.h" + +namespace OHOS { +namespace MMI { +namespace { +constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, MMI_LOG_DOMAIN, "InfraredEmitterController" }; +} // namespace +using namespace OHOS::HDI::Consumerir::V1_0; +InfraredEmitterController *InfraredEmitterController::instance_ = new (std::nothrow) InfraredEmitterController(); +InfraredEmitterController *InfraredEmitterController::GetInstance() +{ + return instance_; +} + +void InfraredEmitterController::InitInfraredEmitter() +{ + CALL_DEBUG_ENTER; + MMI_HILOGI("infrared emitter call ConsumerIr::Get()"); + irInterface_ = ConsumerIr::Get(); + if (irInterface_ == nullptr) { + MMI_HILOGE("infrared emitter init"); + return; + } + MMI_HILOGI("infrared emitter init ok"); +} + +bool InfraredEmitterController::Transmit(int64_t carrierFreq, std::vector pattern) +{ + CALL_DEBUG_ENTER; + if (!irInterface_) { + MMI_HILOGE("infrared emitter not init"); + return false; + } + + int32_t tempCarrierFreq tempCarrierFreq; + tempCarrierFreq = carrierFreq; + std::vector tempPattern; + std::string context = "infraredFrequency:" + std::to_string(tempCarrierFreq) + ";"; + for (size_t i = 0; i < pattern.size(); i++) + { + int32_t per = pattern[i]; + context = context + "index:" + std::to_string(i) + ": pattern:" + std::to_string(per) + ";"; + tempPattern.push_back(per); + } + MMI_HILOGI("irInterface_->Transmit params:%{public}s", context.c_str()); + + bool outRet = false; + int32_t ret = irInterface_->Transmit(tempCarrierFreq, tempPattern, outRet); + MMI_HILOGI("irInterface_->Transmit ret:%{public}d", ret); + if (ret < HDF_SUCCESS) { + MMI_HILOGE("infrared emitter transmit %{public}d", ret); + return false; + } + if (!outRet) { + MMI_HILOGE("infrared emitter transmit out false"); + return false; + } + return true; +} + +bool InfraredEmitterController::GetFrequencies(std::vector &frequencyInfo) +{ + CALL_DEBUG_ENTER; + if (!irInterface_) { + MMI_HILOGE("infrared emitter not init"); + return false; + } + bool outRet = false; + std::vector outRange; + MMI_HILOGI("irInterface_->GetCarrierFreqs"); + int32_t ret = irInterface_->GetCarrierFreqs(outRet, outRange); + MMI_HILOGI("irInterface_->GetCarrierFreqs ret:%{public}d", ret); + if (ret < HDF_SUCCESS) { + MMI_HILOGE("infrared emitter GetCarrierFreqs %{public}d", ret); + return false; + } + if (!outRet) { + MMI_HILOGE("infrared emitter GetCarrierFreqs out false"); + return false; + } + std::string context = "size:" + std::to_string(outRange.size()) + ";"; + for (size_t i = 0; i < outRange.size(); i++) + { + InfraredFrequency item; + context = context + "index:" + std::to_string(i) + ": per.max:" + std::to_string(outRange[i].max) + + ": per.min:" + std::to_string(outRange[i].min) + ";"; + item.max_ = outRange[i].max; + item.min_ = outRange[i].min; + frequencyInfo.pushback(item); + } + return true; +} +} // namespace MMI +} // namespace OHOS + diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index 988954e7c..d992b22c6 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -56,6 +56,7 @@ #include "display_event_monitor.h" #include "fingersense_wrapper.h" #include "multimodal_input_preferences_manager.h" +#include "infrared_emitter_controller.h" namespace OHOS { namespace MMI { @@ -247,7 +248,14 @@ int32_t MMIService::Init() NapProcess::GetInstance()->Init(*this); MMI_HILOGD("ANRManager Init"); ANRMgr->Init(*this); - MMI_HILOGD("PointerDrawingManager Init"); +#ifdef OHOS_BUILD_ENABLE_ANCO + MMI_HILOGI("InitInfraredEmitter Init"); + InfraredEmitterController::GetInstance()->InitInfraredEmitter(); +#else + MMI_HILOGI("InfraredEmitter not supported"); +#endif + + MMI_HILOGI("PointerDrawingManager Init"); #ifdef OHOS_BUILD_ENABLE_POINTER if (!IPointerDrawingManager::GetInstance()->Init()) { MMI_HILOGE("Pointer draw init failed"); @@ -2069,15 +2077,9 @@ int32_t MMIService::OnHasIrEmitter(bool &hasIrEmitter) int32_t MMIService::OnGetInfraredFrequencies(std::vector& requencys) { - int const tempSizeOfData = 20; - int const maxStandard = 550; - int const minStandard = 550; - for (int i = 1; i < tempSizeOfData; i++) { - InfraredFrequency itemFrequency; - itemFrequency.max_ = maxStandard * i; - itemFrequency.min_ = minStandard * i; - requencys.emplace_back(itemFrequency); - } + #ifdef OHOS_BUILD_ENABLE_ANCO + InfraredEmitterController::GetInstance()->GetFrequencies(requencys); + #endif std::string context = ""; int32_t size = static_cast(requencys.size()); for (int32_t i = 0; i < size; i++) { @@ -2095,6 +2097,10 @@ int32_t MMIService::OnTransmitInfrared(int64_t infraredFrequency, std::vectorOnTransmitInfrared(infraredFrequency, pattern); + #endif + MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s", context.c_str()); return RET_OK; } diff --git a/test/unittest/interfaces/BUILD.gn b/test/unittest/interfaces/BUILD.gn index bab08f02f..00ca7f0e6 100644 --- a/test/unittest/interfaces/BUILD.gn +++ b/test/unittest/interfaces/BUILD.gn @@ -1,49 +1,3 @@ -# Copyright (c) 2021-2024 Huawei Device Co., Ltd. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import("//build/ohos.gni") -import("//build/test.gni") -import("//foundation/multimodalinput/input/multimodalinput_mini.gni") - -module_output_path = "multimodalinput/mmi_unit_out" - -ohos_unittest("InputNativeTest") { - module_out_path = module_output_path - - include_dirs = [ "${mmi_path}/interfaces/kits/c/input" ] - - sources = - [ "${mmi_path}/test/unittest/interfaces/kits/input_native_test.cpp" ] - - configs = [ - "${mmi_path}:coverage_flags", - "${mmi_path}/frameworks/proxy:libmmi_test_util", - ] - - deps = [ - "${mmi_path}/frameworks/native/input:oh_input_manager", - "${mmi_path}/frameworks/proxy:libmmi-client", - "${mmi_path}/util:libmmi-util", - "//third_party/googletest:gmock_main", - "//third_party/googletest:gtest_main", - ] - - external_deps = [ - "c_utils:utils", - "hilog:libhilog", - "image_framework:image_native", - ] - - subsystem_name = "multimodalinput" - part_name = "input" -} +ERROR at :30:23: Expected comma between items. + "${mmi_path}/interfaces/native/innerkits/event/include" ] + ^------------------------------------------------------ diff --git a/test/unittest/interfaces/kits/input_native_test.cpp b/test/unittest/interfaces/kits/input_native_test.cpp index 80d99b3f7..3c5497daf 100644 --- a/test/unittest/interfaces/kits/input_native_test.cpp +++ b/test/unittest/interfaces/kits/input_native_test.cpp @@ -19,7 +19,9 @@ #include "key_event.h" #include "oh_input_manager.h" #include "oh_key_code.h" - +#ifdef OHOS_BUILD_ENABLE_ANCO + #include "infrared_emitter_controller.h" +#endif namespace OHOS { namespace MMI { namespace { @@ -479,5 +481,46 @@ HWTEST_F(InputNativeTest, InputNativeTest_TouchEventActionTime_001, TestSize.Lev OH_Input_DestroyTouchEvent(&touchEvent); EXPECT_EQ(touchEvent, nullptr); } + +/** + * @tc.name: InputNativeTest_IR_001 + * @tc.desc: Verify the IR GetFrequencies + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(InputNativeTest, InputNativeTest_IR_001, TestSize.Level1) +{ + +#ifdef OHOS_BUILD_ENABLE_ANCO + InfraredEmitter::GetInstance()->InitInfraredEmitter(); + std::vector frequencyInfo; + bool bRet = InfraredEmitter::GetInstance()->GetFrequencies(frequencyInfo); + ASSERT_EQ(bRet, true); + bool bSizeBiggerZero = frequencyInfo.size(); + ASSERT_EQ(bSizeBiggerZero, true); +#else + ASSERT_EQ("no support", "no support"); +#endif // OHOS_BUILD_ENABLE_ANCO +} + +/** + * @tc.name: InputNativeTest_IR_002 + * @tc.desc: Verify the set and get of touchEvent actionTime + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(InputNativeTest, InputNativeTest_IR_002, TestSize.Level1) +{ +#ifdef OHOS_BUILD_ENABLE_ANCO + InfraredEmitter::GetInstance()->InitInfraredEmitter(); + int64_t carrierFreq = 3800; + std::vector pattern = {0x01, 0x02, 0x03}; + std::vector frequencyInfo; + bool bRet = InfraredEmitter::GetInstance()->Transmit(carrierFreq, pattern); + ASSERT_EQ(bRet, true); +#else + ASSERT_EQ("no support", "no support"); +#endif // OHOS_BUILD_ENABLE_ANCO +} } // namespace MMI } // namespace OHOS -- Gitee From f0ca69533a0092b441db8fc43752588afb7a4c5c Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 22:38:53 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81,?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=80=E4=B8=AA=E5=88=AB=E4=BA=BA=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: Iba821ed04facfc69e22b248a8712e2835913dcce --- .../test/input_device_manager_test.cpp | 13 ------------- service/module_loader/src/mmi_service.cpp | 2 +- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/service/device_manager/test/input_device_manager_test.cpp b/service/device_manager/test/input_device_manager_test.cpp index 796d8c0a7..c9a5d1f5c 100644 --- a/service/device_manager/test/input_device_manager_test.cpp +++ b/service/device_manager/test/input_device_manager_test.cpp @@ -139,19 +139,6 @@ HWTEST_F(InputDeviceManagerTest, HasTouchDevice_Test_001, TestSize.Level1) EXPECT_FALSE(ret); } -/** - * @tc.name: ParseDeviceId_Test_001 - * @tc.desc: Test the function ParseDeviceId - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(InputDeviceManagerTest, ParseDeviceId_Test_001, TestSize.Level1) -{ - InputDeviceManager inputDevice; - std::string sysName = "test"; - int32_t ret = inputDevice.ParseDeviceId(sysName); - EXPECT_EQ(ret, RET_ERR); -} /** * @tc.name: ScanPointerDevice_Test_001 diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index d992b22c6..b8ace2c5e 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -2098,7 +2098,7 @@ int32_t MMIService::OnTransmitInfrared(int64_t infraredFrequency, std::vectorOnTransmitInfrared(infraredFrequency, pattern); + InfraredEmitterController::GetInstance()->Transmit(infraredFrequency, pattern); #endif MMI_HILOGI("MMIService::OnTransmitInfrared para. %{public}s", context.c_str()); -- Gitee From 8d3677097fd9dd9a7484282cbd71b51638f51c08 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 22:49:58 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgn=E6=96=87=E4=BB=B6,?= =?UTF-8?q?=E7=BC=BA=E5=B0=91=E4=B8=80=E4=B8=AA=E9=80=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: Idcb1d9400dd8e69ac742679867c5a81de4d1db7f --- test/unittest/interfaces/BUILD.gn | 67 +++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/test/unittest/interfaces/BUILD.gn b/test/unittest/interfaces/BUILD.gn index 00ca7f0e6..3f509052a 100644 --- a/test/unittest/interfaces/BUILD.gn +++ b/test/unittest/interfaces/BUILD.gn @@ -1,3 +1,64 @@ -ERROR at :30:23: Expected comma between items. - "${mmi_path}/interfaces/native/innerkits/event/include" ] - ^------------------------------------------------------ +# Copyright (c) 2021-2024 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") +import("//build/test.gni") +import("//foundation/multimodalinput/input/multimodalinput_mini.gni") + +module_output_path = "multimodalinput/mmi_unit_out" + +ohos_unittest("InputNativeTest") { + module_out_path = module_output_path + defines = [] + include_dirs = [ "${mmi_path}/interfaces/kits/c/input" ] + if (input_ext_feature_anco) { + defines += [ "OHOS_BUILD_ENABLE_ANCO" ] + } + if (input_ext_feature_anco) { + include_dirs += [ + "${mmi_path}/service/infrared_emitter/include", + "${mmi_path}/interfaces/native/innerkits/event/include", + ] + } + + sources = + [ "${mmi_path}/test/unittest/interfaces/kits/input_native_test.cpp" ] + + configs = [ + "${mmi_path}:coverage_flags", + "${mmi_path}/frameworks/proxy:libmmi_test_util", + ] + + deps = [ + "${mmi_path}/frameworks/native/input:oh_input_manager", + "${mmi_path}/frameworks/proxy:libmmi-client", + "${mmi_path}/util:libmmi-util", + "//third_party/googletest:gmock_main", + "//third_party/googletest:gtest_main", + ] + + if (input_ext_feature_anco) { + external_deps += [ + "drivers_interface_rtos_extra:libconsumerir_proxy_1.0", + "hdf_core:libhdi", + ] + } + external_deps = [ + "c_utils:utils", + "hilog:libhilog", + "image_framework:image_native", + ] + + subsystem_name = "multimodalinput" + part_name = "input" +} -- Gitee From 86c2b92752414f16b9b53937736d862f356377d5 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 23:01:28 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=89=88=E6=9D=83?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 Change-Id: Ib638a4ac3d670369d79e9705a669b3c8c04f060c --- .../src/infrared_emitter_controller.cpp | 27 +++++++++++++------ service/module_loader/src/mmi_service.cpp | 2 ++ .../interfaces/kits/input_native_test.cpp | 2 -- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/service/infrared_emitter/src/infrared_emitter_controller.cpp b/service/infrared_emitter/src/infrared_emitter_controller.cpp index 5a1feb1e2..d81532d58 100644 --- a/service/infrared_emitter/src/infrared_emitter_controller.cpp +++ b/service/infrared_emitter/src/infrared_emitter_controller.cpp @@ -1,5 +1,19 @@ -#include "infrared_emitter_controller.h" +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "infrared_emitter_controller.h" #include "mmi_log.h" namespace OHOS { @@ -34,12 +48,10 @@ bool InfraredEmitterController::Transmit(int64_t carrierFreq, std::vector tempPattern; std::string context = "infraredFrequency:" + std::to_string(tempCarrierFreq) + ";"; - for (size_t i = 0; i < pattern.size(); i++) - { + for (size_t i = 0; i < pattern.size(); i++) { int32_t per = pattern[i]; context = context + "index:" + std::to_string(i) + ": pattern:" + std::to_string(per) + ";"; tempPattern.push_back(per); @@ -81,13 +93,12 @@ bool InfraredEmitterController::GetFrequencies(std::vector &f return false; } std::string context = "size:" + std::to_string(outRange.size()) + ";"; - for (size_t i = 0; i < outRange.size(); i++) - { + for (size_t i = 0; i < outRange.size(); i++) { InfraredFrequency item; context = context + "index:" + std::to_string(i) + ": per.max:" + std::to_string(outRange[i].max) + ": per.min:" + std::to_string(outRange[i].min) + ";"; item.max_ = outRange[i].max; - item.min_ = outRange[i].min; + item.min_ = outRange[i].min; frequencyInfo.pushback(item); } return true; diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index b8ace2c5e..584866ee2 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -56,7 +56,9 @@ #include "display_event_monitor.h" #include "fingersense_wrapper.h" #include "multimodal_input_preferences_manager.h" +#ifdef OHOS_BUILD_ENABLE_ANCO #include "infrared_emitter_controller.h" +#endif namespace OHOS { namespace MMI { diff --git a/test/unittest/interfaces/kits/input_native_test.cpp b/test/unittest/interfaces/kits/input_native_test.cpp index 3c5497daf..ac0f5ccf8 100644 --- a/test/unittest/interfaces/kits/input_native_test.cpp +++ b/test/unittest/interfaces/kits/input_native_test.cpp @@ -32,7 +32,6 @@ class InputNativeTest : public testing::Test { public: static void SetUpTestCase(void) {} static void TearDownTestCase(void) {} - void SetUp() {} void TearDown() {} }; @@ -490,7 +489,6 @@ HWTEST_F(InputNativeTest, InputNativeTest_TouchEventActionTime_001, TestSize.Lev */ HWTEST_F(InputNativeTest, InputNativeTest_IR_001, TestSize.Level1) { - #ifdef OHOS_BUILD_ENABLE_ANCO InfraredEmitter::GetInstance()->InitInfraredEmitter(); std::vector frequencyInfo; -- Gitee From f32255c316e7a482941202f5689bbbea3e7619f3 Mon Sep 17 00:00:00 2001 From: Dragon51 Date: Fri, 19 Apr 2024 23:15:41 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dragon51 --- service/infrared_emitter/src/infrared_emitter_controller.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/infrared_emitter/src/infrared_emitter_controller.cpp b/service/infrared_emitter/src/infrared_emitter_controller.cpp index d81532d58..625131dfc 100644 --- a/service/infrared_emitter/src/infrared_emitter_controller.cpp +++ b/service/infrared_emitter/src/infrared_emitter_controller.cpp @@ -96,7 +96,7 @@ bool InfraredEmitterController::GetFrequencies(std::vector &f for (size_t i = 0; i < outRange.size(); i++) { InfraredFrequency item; context = context + "index:" + std::to_string(i) + ": per.max:" + std::to_string(outRange[i].max) + - ": per.min:" + std::to_string(outRange[i].min) + ";"; + ": per.min:" + std::to_string(outRange[i].min) + ";;"; item.max_ = outRange[i].max; item.min_ = outRange[i].min; frequencyInfo.pushback(item); -- Gitee