* Copyright (C) 2021 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 SERVICES_INCLUDE_GLOBAL_H
#define SERVICES_INCLUDE_GLOBAL_H
#include <errno.h>
#include <functional>
#include <sys/time.h>
#include <time.h>
#include "hilog/log.h"
namespace OHOS {
namespace MiscServices {
namespace ErrorCode {
enum {
ERROR_STATUS_UNKNOWN_TRANSACTION = -EBADMSG,
ERROR_EX_ILLEGAL_ARGUMENT = -3,
ERROR_EX_NULL_POINTER = -4,
ERROR_EX_ILLEGAL_STATE = -5,
ERROR_EX_PARCELABLE = -6,
ERROR_EX_UNSUPPORTED_OPERATION = -7,
ERROR_EX_SERVICE_SPECIFIC = -8,
NO_ERROR = 0,
ERROR_NULL_POINTER,
ERROR_BAD_PARAMETERS,
ERROR_SUBSCRIBE_KEYBOARD_EVENT,
ERROR_CONTROLLER_INVOKING_FAILED,
ERROR_PERSIST_CONFIG,
ERROR_KBD_HIDE_FAILED,
ERROR_PACKAGE_MANAGER,
ERROR_REMOTE_CLIENT_DIED,
ERROR_NOT_CURRENT_IME,
ERROR_NOT_IME,
ERROR_NOT_AI_APP_IME,
ERROR_ADD_DEATH_RECIPIENT_FAILED,
ERROR_STATUS_SYSTEM_PERMISSION,
ERROR_PARAMETER_CHECK_FAILED,
ERROR_KEYWORD_NOT_FOUND,
ERROR_ENABLE_IME,
ERROR_NOT_DEFAULT_IME,
ERROR_ENABLE_SECURITY_MODE,
ERROR_DISPATCH_KEY_EVENT,
ERROR_INVALID_PRIVATE_COMMAND_SIZE,
ERROR_PANEL_NOT_FOUND,
ERROR_WINDOW_MANAGER,
ERROR_GET_TEXT_CONFIG,
ERROR_SYSTEM_CMD_CHANNEL_ERROR,
ERROR_INVALID_PRIVATE_COMMAND,
ERROR_OS_ACCOUNT,
ERROR_TASK_MANAGER_PEND_FAILED,
ERROR_INVALID_PANEL_TYPE,
ERROR_INVALID_PANEL_FLAG,
ERROR_MSG_HANDLER_NOT_REGIST,
ERROR_SECURITY_MODE_OFF,
ERROR_MESSAGE_HANDLER,
ERROR_INVALID_ARRAY_BUFFER_SIZE,
ERROR_SERVICE_START_FAILED,
ERROR_JS_CB_NOT_REGISTER,
ERROR_DEAL_TIMEOUT,
ERROR_IPC_REMOTE_NULLPTR,
ERROR_USER_NOT_EXIST,
ERROR_USER_NOT_IN_FOREGROUND,
ERROR_CROSS_USER_OPERATION_DENIED,
ERROR_IMA_BEGIN,
ERROR_IME,
ERROR_OPERATE_PANEL,
ERROR_IMA_CHANNEL_NULLPTR,
ERROR_IMA_NULLPTR,
ERROR_IMA_DATA_CHANNEL_ABNORMAL,
ERROR_IMA_INVALID_IMMERSIVE_EFFECT,
ERROR_IMA_PRECONDITION_REQUIRED,
ERROR_IMA_END,
ERROR_IMC_BEGIN,
ERROR_CLIENT_NOT_EDITABLE,
ERROR_TEXT_PREVIEW_NOT_SUPPORTED,
ERROR_TEXT_LISTENER_ERROR,
ERROR_INVALID_RANGE,
ERROR_CLIENT_NOT_BOUND,
ERROR_IMC_NULLPTR,
ERROR_IMC_END,
ERROR_IMSA_BEGIN,
ERROR_PARSE_CONFIG_FILE,
ERROR_IME_START_INPUT_FAILED,
ERROR_STATUS_PERMISSION_DENIED,
ERROR_CLIENT_NOT_FOCUSED,
ERROR_CLIENT_NULL_POINTER,
ERROR_CLIENT_ADD_FAILED,
ERROR_CLIENT_NOT_FOUND,
ERROR_IME_NOT_STARTED,
ERROR_KBD_SHOW_FAILED,
ERROR_IMSA_INPUT_TYPE_NOT_FOUND,
ERROR_IMSA_DEFAULT_IME_NOT_FOUND,
ERROR_IMSA_CLIENT_INPUT_READY_FAILED,
ERROR_IMSA_MALLOC_FAILED,
ERROR_IMSA_NULLPTR,
ERROR_IMSA_USER_SESSION_NOT_FOUND,
ERROR_IMSA_GET_IME_INFO_FAILED,
ERROR_IMSA_IME_TO_START_NULLPTR,
ERROR_IMSA_REBOOT_OLD_IME_NOT_STOP,
ERROR_IMSA_IME_EVENT_CONVERT_FAILED,
ERROR_IMSA_IME_CONNECT_FAILED,
ERROR_IMSA_IME_DISCONNECT_FAILED,
ERROR_IMSA_IME_START_TIMEOUT,
ERROR_IMSA_IME_START_MORE_THAN_EIGHT_SECOND,
ERROR_IMSA_FORCE_STOP_IME_TIMEOUT,
ERROR_DEVICE_UNSUPPORTED,
ERROR_SCENE_UNSUPPORTED,
ERROR_PRIVATE_COMMAND_IS_EMPTY,
ERROR_IME_NOT_FOUND,
ERROR_OPERATE_SYSTEM_IME,
ERROR_SWITCH_IME,
ERROR_IME_HAS_STARTED,
ERROR_OPERATION_NOT_ALLOWED,
ERROR_REQUEST_RATE_EXCEEDED,
ERROR_INVALID_DISPLAYID,
ERROR_TRY_IME_START_FAILED,
ERROR_IMSA_APP_MGR_ERROR,
ERROR_SYSTEM_PANEL_ERROR,
ERROR_ACCOUNT_LOCALID_FAILED,
ERROR_IMSA_END,
};
};
namespace ImfCommonConst {
constexpr uint32_t IMF_INVALID_TOKENID = 0;
constexpr uint64_t DEFAULT_DISPLAY_ID = 0;
constexpr uint64_t DEFAULT_DISPLAY_GROUP_ID = 0;
constexpr uint64_t NOT_DEFAULT_DISPLAY_GROUP_ID = 10000;
constexpr int64_t INVALID_PID = -1;
constexpr int64_t INVALID_UID = -1;
constexpr uint32_t INVALID_WINDOW_ID = 0;
constexpr uint32_t COL_PROXY_IME = 5521;
constexpr uint32_t AI_PROXY_IME = 7101;
constexpr int32_t DEFAULT_USER_ID = -1;
constexpr int32_t START_USER_ID = 100;
};
static constexpr HiviewDFX::HiLogLabel g_SMALL_SERVICES_LABEL = { LOG_CORE, 0xD001C10, "ImsaKit" };
#define IMSA_HILOGD(fmt, ...) \
(void)HILOG_IMPL(LOG_CORE, LOG_DEBUG, OHOS::MiscServices::g_SMALL_SERVICES_LABEL.domain, \
OHOS::MiscServices::g_SMALL_SERVICES_LABEL.tag, "line: %{public}d, function: %{public}s," fmt, __LINE__, \
__FUNCTION__, ##__VA_ARGS__)
#define IMSA_HILOGE(fmt, ...) \
(void)HILOG_IMPL(LOG_CORE, LOG_ERROR, OHOS::MiscServices::g_SMALL_SERVICES_LABEL.domain, \
OHOS::MiscServices::g_SMALL_SERVICES_LABEL.tag, "line: %{public}d, function: %{public}s," fmt, __LINE__, \
__FUNCTION__, ##__VA_ARGS__)
#define IMSA_HILOGF(fmt, ...) \
(void)HILOG_IMPL(LOG_CORE, LOG_FATAL, OHOS::MiscServices::g_SMALL_SERVICES_LABEL.domain, \
OHOS::MiscServices::g_SMALL_SERVICES_LABEL.tag, "line: %{public}d, function: %{public}s," fmt, __LINE__, \
__FUNCTION__, ##__VA_ARGS__)
#define IMSA_HILOGI(fmt, ...) \
(void)HILOG_IMPL(LOG_CORE, LOG_INFO, OHOS::MiscServices::g_SMALL_SERVICES_LABEL.domain, \
OHOS::MiscServices::g_SMALL_SERVICES_LABEL.tag, "line: %{public}d, function: %{public}s," fmt, __LINE__, \
__FUNCTION__, ##__VA_ARGS__)
#define IMSA_HILOGW(fmt, ...) \
(void)HILOG_IMPL(LOG_CORE, LOG_WARN, OHOS::MiscServices::g_SMALL_SERVICES_LABEL.domain, \
OHOS::MiscServices::g_SMALL_SERVICES_LABEL.tag, "line: %{public}d, function: %{public}s," fmt, __LINE__, \
__FUNCTION__, ##__VA_ARGS__)
#define IMF_RETVAL_NOTHING
#define IMF_CALL_BASE(theCall, retVal) \
do { \
if ((theCall) != napi_ok) { \
IMSA_HILOGE("napi call failed, theCall: %{public}s", #theCall); \
return retVal; \
} \
} while (0)
#define IMF_CALL(theCall) IMF_CALL_BASE(theCall, nullptr)
#define IMF_CALL_RETURN_VOID(theCall) IMF_CALL_BASE(theCall, IMF_RETVAL_NOTHING)
using Function = std::function<bool()>;
bool BlockRetry(uint32_t interval, uint32_t maxRetryTimes, Function func);
using RetryFunction = std::function<bool(int32_t &)>;
bool BlockRetry(uint32_t interval, uint32_t maxRetryTimes, RetryFunction func, int32_t &ret);
}
}
#endif