#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (c) 2026 Huawei Technologies Co., Ltd.
# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
# CANN Open Software License Agreement Version 2.0 (the "License").
# Please refer to the License for details. You may not use this file except in compliance with the License.
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
# See LICENSE in the root of the software repository for the full text of the License.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Declaration info from rts header
"""
from enum import Enum

RT_PROF_MAX_DEV_NUM = 64
RT_PROF_PATH_LEN_MAX = 1023
RT_PROF_PARAM_LEN_MAX = 4095


rt_binary_magic_dict = {
    "RT_DEV_BINARY_MAGIC_PLAIN": 0xabceed50,
    "RT_DEV_BINARY_MAGIC_PLAIN_AICPU": 0xabceed51,
    "RT_DEV_BINARY_MAGIC_PLAIN_AIVEC": 0xabceed52,
    "RT_DEV_BINARY_MAGIC_ELF": 0x43554245,
    "RT_DEV_BINARY_MAGIC_ELF_AICPU": 0x41415243,
    "RT_DEV_BINARY_MAGIC_ELF_AIVEC": 0x41415246,
    "RT_DEV_BINARY_MAGIC_ELF_AICUBE": 0x41494343,
}


class RTS_MEMORY_TYPE(Enum):
    """
    Device memory Type
    """
    RT_MEMORY_DEFAULT = 0
    RT_MEMORY_HBM = 2
    RT_MEMORY_DDR = 4
    RT_MEMORY_SPM = 8
    RT_MEMORY_P2P_HBM = 0x10
    RT_MEMORY_P2P_DDR = 0x11
    RT_MEMORY_DDR_NC = 0x20
    RT_MEMORY_TS_4G = 0x40
    RT_MEMORY_TS = 0x80
    RT_MEMORY_RESERVED = 0x100
    RT_MEMORY_L1 = 0x10000
    RT_MEMORY_L2 = 0x20000


class MsprofCommandHandleType(Enum):
    """
    RTS Profiling Switch type
    """
    PROF_COMMANDHANDLE_TYPE_INIT = 0
    PROF_COMMANDHANDLE_TYPE_START = 1
    PROF_COMMANDHANDLE_TYPE_STOP = 2
    PROF_COMMANDHANDLE_TYPE_FINALIZE = 3
    PROF_COMMANDHANDLE_TYPE_MODEL_SUBSCRIBE = 4
    PROF_COMMANDHANDLE_TYPE_MODEL_UNSUBSCRIBE = 5


class RtLimitType(Enum):
    LOW_POWER_TIMEOUT = 0  # Power Off timeout
    SIMT_WARP_STACK_SIZE = 1  # SIMT DCU stack size
    SIMT_DVG_WARP_STACK_SIZE = 2  # SIMT DVG stack size


rt_memory_policy = {
    "RT_MEMORY_POLICY_NONE": 0x0,
    "RT_MEMORY_POLICY_HUGE_PAGE_FIRST": 0x400,
    "RT_MEMORY_POLICY_HUGE_PAGE_ONLY": 0x800,
    "RT_MEMORY_POLICY_DEFAULT_PAGE_ONLY": 0x1000,
    "RT_MEMORY_POLICY_HUGE_PAGE_FIRST_P2P": 0x2000,
    "RT_MEMORY_POLICY_HUGE_PAGE_ONLY_P2P": 0x4000,
    "RT_MEMORY_POLICY_DEFAULT_PAGE_ONLY_P2P": 0x8000,
}

rt_memcpy_kind = {
    "RT_MEMCPY_HOST_TO_HOST": 0,  # host to host
    "RT_MEMCPY_HOST_TO_DEVICE": 1,  # host to device
    "RT_MEMCPY_DEVICE_TO_HOST": 2,  # device to host
    "RT_MEMCPY_DEVICE_TO_DEVICE": 3,  # device to device, 1P && P2P
    "RT_MEMCPY_MANAGED": 4,  # managed memory
    "RT_MEMCPY_ADDR_DEVICE_TO_DEVICE": 5,
    "RT_MEMCPY_HOST_TO_DEVICE_EX": 6,  # host  to device ex (only used for 8 bytes)
    "RT_MEMCPY_DEVICE_TO_HOST_EX": 7,  # device to host ex
    "RT_MEMCPY_RESERVED": 8,
}


rt_context_mode = {
    "RT_CTX_NORMAL_MODE": 0,
    "RT_CTX_GEN_MODE": 1
}


class RtFloatOverflowMode(Enum):
    RT_OVERFLOW_MODE_SATURATION = 0
    RT_OVERFLOW_MODE_INFNAN = 1
    RT_OVERFLOW_MODE_UNDEF = 2


rt_error_type_dict = {
    0x00000000: "UNKNOWN",
    0x00010000: "DEVICE",
    0x00020000: "DRV",
    0x00030000: "STREAM",
    0x00040000: "MODEL",
    0x00050000: "EVENT",
    0x00060000: "NOTIFY",
    0x00070000: "CONTEXT",
    0x00080000: "KERNEL",
    0x00090000: "PROGRAM",
    0x000a0000: "MODULE",
    0x000b0000: "INSTANCE",
    0x000c0000: "API",
    0x000d0000: "DATADUMP",
    0x000e0000: "PROF",
    0x000f0000: "PCTRACE",
    0x00100000: "TASK",
    0x00110000: "COMMON",
    0x00120000: "DEBUG",
    0x00130000: "ENGINE",
    0x00140000: "LABEL",
    0x00150000: "TSFW",
    0x00160000: "SUBSCRIBE",
    0x00170000: "GROUP",
    0x00FF0000: "RESERVED",
}

rt_raw_error_code_dict = {
    0x00000000: ("RT_ERROR_UNKNOWN_UNKNOWN0",
                 "RT_ERROR_UNKNOWN_UNKNOWN1",
                 "RT_ERROR_UNKNOWN_UNKNOWN2",
                 "RT_ERROR_UNKNOWN_UNKNOWN3",
                 "RT_ERROR_UNKNOWN_UNKNOWN4",
                 "RT_ERROR_UNKNOWN_UNKNOWN5",
                 "RT_ERROR_UNKNOWN_UNKNOWN6",
                 "RT_ERROR_UNKNOWN_UNKNOWN7",
                 "RT_ERROR_UNKNOWN_UNKNOWN8",
                 "RT_ERROR_UNKNOWN_UNKNOWN9",
                 "RT_ERROR_UNKNOWN_UNKNOWNA",
                 "RT_ERROR_UNKNOWN_UNKNOWNB",
                 "RT_ERROR_UNKNOWN_UNKNOWNC",
                 "RT_ERROR_UNKNOWN_UNKNOWND",
                 "RT_ERROR_UNKNOWN_UNKNOWNE",
                 "RT_ERROR_UNKNOWN_UNKNOWNF"),
    0x00010000: ("RT_ERROR_DEVICE_BASE",
                 "RT_ERROR_DEVICE_NULL",
                 "RT_ERROR_DEVICE_NEW",
                 "RT_ERROR_DEVICE_ID",
                 "RT_ERROR_DEVICE_CHIPTYPE",
                 "RT_ERROR_DEVICE_DEPLOY",
                 "RT_ERROR_DEVICE_RETAIN",
                 "RT_ERROR_DEVICE_PLATFORM",
                 "RT_ERROR_DEVICE_LOADER",
                 "RT_ERROR_DEVICE_LIMIT",
                 "RT_ERROR_DEVICE_PROC_HANG_OUT",
                 "RT_ERROR_DEVICE_POWER_UP_FAIL",
                 "RT_ERROR_DEVICE_POWER_DOWN_FAIL",
                 "RT_ERROR_DEVICE_INVALID",),
    0x00020000: ("RT_ERROR_DRV_BASE",
                 "RT_ERROR_DRV_NULL",
                 "RT_ERROR_DRV_NEW",
                 "RT_ERROR_DRV_MEMORY",
                 "RT_ERROR_DRV_INPUT",
                 "RT_ERROR_DRV_PTRNULL",
                 "RT_ERROR_DRV_OPEN_AICPU",
                 "RT_ERROR_DRV_CLOSE_AICPU",
                 "RT_ERROR_DRV_SYM_AICPU",
                 "RT_ERROR_DRV_OPEN_TSD",
                 "RT_ERROR_DRV_CLOSE_TSD",
                 "RT_ERROR_DRV_SYM_TSD",
                 "RT_ERROR_DRV_SOURCE",
                 "RT_ERROR_DRV_REPORT",
                 "RT_ERROR_DRV_COMMAND",
                 "RT_ERROR_DRV_OCCUPY",
                 "RT_ERROR_DRV_ERR",),
    0x00030000: ("RT_ERROR_STREAM_BASE",
                 "RT_ERROR_STREAM_NULL",
                 "RT_ERROR_STREAM_NEW",
                 "RT_ERROR_STREAM_CONTEXT",
                 "RT_ERROR_STREAM_INVALID",
                 "RT_ERROR_STREAM_MODEL",
                 "RT_ERROR_STREAM_FUSION",
                 "RT_ERROR_STREAM_FULL",
                 "RT_ERROR_STREAM_EMPTY",
                 "RT_ERROR_STREAM_NOT_COMPLETE",
                 "RT_ERROR_STREAM_SYNC",
                 "RT_ERROR_STREAM_NO_CB_REG",
                 "RT_ERROR_STREAM_DUPLICATE",
                 "RT_ERROR_STREAM_NOT_EXIST",
                 "RT_ERROR_SQ_NO_EXIST_SQ_TO_REUSE",
                 "RT_ERROR_SQID_FULL",),
    0x00040000: ("RT_ERROR_MODEL_BASE",
                 "RT_ERROR_MODEL_NULL",
                 "RT_ERROR_MODEL_NEW",
                 "RT_ERROR_MODEL_CONTEXT",
                 "RT_ERROR_MODEL_ENDGRAPH",
                 "RT_ERROR_MODEL_STREAM",
                 "RT_ERROR_MODEL_EXECUTOR",
                 "RT_ERROR_MODEL_SETUP",
                 "RT_ERROR_MODEL_ID",
                 "RT_ERROR_MODEL_EXE_FAILED",
                 "RT_ERROR_END_OF_SEQUENCE",),
    0x00050000: ("RT_ERROR_EVENT_BASE",
                 "RT_ERROR_EVENT_NULL",
                 "RT_ERROR_EVENT_NEW",
                 "RT_ERROR_EVENT_RECORDER_NULL",
                 "RT_ERROR_EVENT_TIMESTAMP_INVALID",
                 "RT_ERROR_EVENT_TIMESTAMP_REVERSAL",
                 "RT_ERROR_EVENT_NOT_COMPLETE",),
    0x00060000: ("RT_ERROR_NOTIFY_BASE",
                 "RT_ERROR_NOTIFY_NULL",
                 "RT_ERROR_NOTIFY_NEW",
                 "RT_ERROR_NOTIFY_TYPE",
                 "RT_ERROR_NOTIFY_NOT_COMPLETE",),
    0x00070000: ("RT_ERROR_CONTEXT_BASE",
                 "RT_ERROR_CONTEXT_NULL",
                 "RT_ERROR_CONTEXT_NEW",
                 "RT_ERROR_CONTEXT_DEL",
                 "RT_ERROR_CONTEXT_DEFAULT_STREAM_NULL",
                 "RT_ERROR_CONTEXT_ONLINE_STREAM_NULL",),
    0x00080000: ("RT_ERROR_KERNEL_BASE",
                 "RT_ERROR_KERNEL_NULL",
                 "RT_ERROR_KERNEL_NEW",
                 "RT_ERROR_KERNEL_LOOKUP",
                 "RT_ERROR_KERNEL_NAME",
                 "RT_ERROR_KERNEL_TYPE",
                 "RT_ERROR_KERNEL_OFFSET",
                 "RT_ERROR_KERNEL_DUPLICATE",
                 "RT_ERROR_KERNEL_UNREGISTERING"),
    0x00090000: ("RT_ERROR_PROGRAM_BASE",
                 "RT_ERROR_PROGRAM_NULL",
                 "RT_ERROR_PROGRAM_NEW",
                 "RT_ERROR_PROGRAM_DATA",
                 "RT_ERROR_PROGRAM_SIZE",
                 "RT_ERROR_PROGRAM_MEM_TYPE",
                 "RT_ERROR_PROGRAM_MACHINE_TYPE",
                 "RT_ERROR_PROGRAM_USEOUT"),
    0x000a0000: ("RT_ERROR_MODULE_BASE",
                 "RT_ERROR_MODULE_NULL",
                 "RT_ERROR_MODULE_NEW",),
    0x000b0000: ("RT_ERROR_INSTANCE_BASE",
                 "RT_ERROR_INSTANCE_NULL",
                 "RT_ERROR_INSTANCE_NEW",
                 "RT_ERROR_INSTANCE_VERSION",),
    0x000c0000: ("RT_ERROR_API_BASE",
                 "RT_ERROR_API_NULL",
                 "RT_ERROR_API_NEW",),
    0x000d0000: ("RT_ERROR_DATADUMP_BASE",
                 "RT_ERROR_DATADUMP_NULL",
                 "RT_ERROR_DATADUMP_NEW",
                 "RT_ERROR_DATADUMP_TIME",
                 "RT_ERROR_DATADUMP_FILE",
                 "RT_ERROR_DATADUMP_ADDRESS",
                 "RT_ERROR_DATADUMP_LOAD_FAILED",
                 "RT_ERROR_DUMP_ADDR_SET_FAILED"),
    0x000e0000: ("RT_ERROR_PROF_BASE",
                 "RT_ERROR_PROF_NULL",
                 "RT_ERROR_PROF_NEW",
                 "RT_ERROR_PROF_START",
                 "RT_ERROR_PROF_DEVICE_MEM",
                 "RT_ERROR_PROF_HOST_MEM",
                 "RT_ERROR_PROF_SET_DIR",
                 "RT_ERROR_PROF_OPER",
                 "RT_ERROR_PROF_FULL",
                 "RT_ERROR_PROF_NAME",),
    0x000f0000: ("RT_ERROR_PCTRACE_BASE",
                 "RT_ERROR_PCTRACE_NULL",
                 "RT_ERROR_PCTRACE_NEW",
                 "RT_ERROR_PCTRACE_TIME",
                 "RT_ERROR_PCTRACE_FILE",),
    0x00100000: ("RT_ERROR_TASK_BASE",
                 "RT_ERROR_TASK_NULL",
                 "RT_ERROR_TASK_NEW",
                 "RT_ERROR_TASK_TYPE",
                 "RT_ERROR_TASK_ALLOCATOR",),
    0x00110000: ("RT_ERROR_COMMON_BASE",
                 "RT_ERROR_INVALID_VALUE,",
                 "RT_ERROR_MEMORY_ADDRESS_UNALIGNED",
                 "RT_ERROR_SEC_HANDLE",
                 "RT_ERROR_OS_HANDLE",
                 "RT_ERROR_MUTEX_LOCK",
                 "RT_ERROR_MUTEX_UNLOCK",
                 "RT_ERROR_CALLOC",
                 "RT_ERROR_POOL_RESOURCE",
                 "RT_ERROR_TRANS_ARGS",
                 "RT_ERROR_METADATA",
                 "RT_ERROR_LOST_HEARTBEAT",
                 "RT_ERROR_REPORT_TIMEOUT",
                 "RT_ERROR_FEATURE_NOT_SUPPORT",
                 "RT_ERROR_MEMORY_ALLOCATION",
                 "RT_ERROR_MEMORY_FREE,",
                 "RT_ERROR_INVALID_MEMORY_TYPE"),
    0x00120000: ("RT_ERROR_DEBUG_BASE",
                 "RT_ERROR_DEBUG_NULL",
                 "RT_ERROR_DEBUG_NEW",
                 "RT_ERROR_DEBUG_SIGNAL",
                 "RT_ERROR_DEBUG_OPEN",
                 "RT_ERROR_DEBUG_WRITE",
                 "RT_ERROR_DEBUG_REGISTER_FAILED",
                 "RT_ERROR_DEBUG_UNREGISTER_FAILED",),
    0x00130000: ("RT_ERROR_ENGINE_BASE",
                 "RT_ERROR_ENGINE_NULL",
                 "RT_ERROR_ENGINE_NEW",
                 "RT_ERROR_ENGINE_THREAD",),
    0x00140000: ("RT_ERROR_LABEL_BASE",
                 "RT_ERROR_LABEL_NULL",
                 "RT_ERROR_LABEL_NEW",
                 "RT_ERROR_LABEL_CONTEXT",
                 "RT_ERROR_LABEL_STREAM",
                 "RT_ERROR_LABEL_MODEL",
                 "RT_ERROR_LABEL_ALLOCATOR",
                 "RT_ERROR_LABEL_FREE",
                 "RT_ERROR_LABEL_SET",
                 "RT_ERROR_LABEL_ID",),
    0x00150000: ("RT_ERROR_TSFW_BASE",
                 "RT_ERROR_TSFW_UNKNOWN",
                 "RT_ERROR_TSFW_NULL_PTR",
                 "RT_ERROR_TSFW_ILLEGAL_AI_CORE_ID",
                 "RT_ERROR_TSFW_ILLEGAL_PARAM",
                 "RT_ERROR_TSFW_TASK_CMD_QUEUE_FULL",
                 "RT_ERROR_TSFW_TASK_CMD_QUEUE_EMPTY",
                 "RT_ERROR_TSFW_TASK_REPORT_QUEUE_FULL",
                 "RT_ERROR_TSFW_TASK_REPORT_QUEUE_EMPTY",
                 "RT_ERROR_TSFW_TASK_NODE_BUFF_ALL_OCCUPIED",
                 "RT_ERROR_TSFW_TASK_NODE_BUFF_ALL_FREED",
                 "RT_ERROR_TSFW_L2_MEM_INSUFFICIENT_SPACE",
                 "RT_ERROR_TSFW_L2_MALLOC_FAILED",
                 "RT_ERROR_TSFW_DMA_CHANNEL_ALL_OCCUPIED",
                 "RT_ERROR_TSFW_MEMCPY_OP_FAILED",
                 "RT_ERROR_TSFW_BS_SLOT_ALL_OCCUPIED",
                 "RT_ERROR_TSFW_TBS_SLOT_REPEAT_FREE",
                 "RT_ERROR_TSFW_PRIORITY_TASK_LIST_FULL",
                 "RT_ERROR_TSFW_PRIORITY_TASK_LIST_EMPTY",
                 "RT_ERROR_TSFW_NO_STREAM_LIST_NEED_TO_BE_PROCESSED",
                 "RT_ERROR_TSFW_REPEAT_MARK_STREAM_NEED_SERVICE",
                 "RT_ERROR_TSFW_SYS_DMA_CHANNEL_ALL_OCCUPIED",
                 "RT_ERROR_TSFW_NO_HBML2TASKNODE_FOUND",
                 "RT_ERROR_TSFW_SQNODE_NODE_SLOT_ALL_OCCUPIED",
                 "RT_ERROR_TSFW_CQNODE_NODE_SLOT_ALL_OCCUPIED",
                 "RT_ERROR_TSFW_SQNODE_NOT_ENOUGH",
                 "RT_ERROR_TSFW_SQNODE_SLOT_REPEAT_FREE",
                 "RT_ERROR_TSFW_CQNODE_SLOT_REPEAT_FREE",
                 "RT_ERROR_TSFW_CQ_REPORT_FAILED",
                 "RT_ERROR_TSFW_SYS_DMA_RESET_SUCCESS",
                 "RT_ERROR_TSFW_SYS_DMA_RESET_FAILED",
                 "RT_ERROR_TSFW_SYS_DMA_TRANSFER_FAILED",
                 "RT_ERROR_TSFW_SYS_DMA_MEMADDRALIGN_FAILED",
                 "RT_ERROR_TSFW_SYS_DMA_ERROR_QUEUE_FULL",
                 "RT_ERROR_TSFW_SYS_DMA_ERROR_QUEUE_EMPTY",
                 "RT_ERROR_TSFW_TIMER_EVENT_FULL",
                 "RT_ERROR_TSFW_TASK_L2_DESC_ENTRY_NOT_ENOUGH",
                 "RT_ERROR_TSFW_AICORE_TIMEOUT",
                 "RT_ERROR_TSFW_AICORE_EXCEPTION",
                 "RT_ERROR_TSFW_AICORE_TRAP_EXCEPTION",
                 "RT_ERROR_TSFW_AICPU_TIMEOUT",
                 "RT_ERROR_TSFW_SDMA_L2_TO_DDR_MALLOC_FAIL",
                 "RT_ERROR_TSFW_AICPU_EXCEPTION",
                 "RT_ERROR_TSFW_AICPU_DATADUMP_RSP_ERR",
                 "RT_ERROR_TSFW_AICPU_MODEL_RSP_ERR",
                 "RT_ERROR_TSFW_REPEAT_ACTIVE_MODEL_STREAM",
                 "RT_ERROR_TSFW_REPEAT_NOTIFY_WAIT",
                 "RT_ERROR_TSFW_DEBUG_INVALID_SQCQ",
                 "RT_ERROR_TSFW_DEBUG_WRONG_COMMAND_TYPE",
                 "RT_ERROR_TSFW_DEBUG_CMD_PROCESS",
                 "RT_ERROR_TSFW_DEBUG_INVALID_DEVICE_STATUS",
                 "RT_ERROR_TSFW_DEBUG_NOT_IN_DEBUG_STATUS",
                 "RT_ERROR_TSFW_DEBUG_INVALID_TASK_STATUS",
                 "RT_ERROR_TSFW_DEBUG_TASK_EMPTY",
                 "RT_ERROR_TSFW_DEBUG_TASK_FULL",
                 "RT_ERROR_TSFW_DEBUG_TASK_NOT_EXIST",
                 "RT_ERROR_TSFW_DEBUG_AI_CORE_FULL",
                 "RT_ERROR_TSFW_DEBUG_AI_CORE_NOT_EXIST",
                 "RT_ERROR_TSFW_DEBUG_AI_CORE_EXCEPTION",
                 "RT_ERROR_TSFW_DEBUG_AI_CORE_TIMEOUT",
                 "RT_ERROR_TSFW_DEBUG_BREAKPOINT_FULL",
                 "RT_ERROR_TSFW_DEBUG_READ_ERROR",
                 "RT_ERROR_TSFW_DEBUG_WRITE_FAIL",
                 "RT_ERROR_TSFW_QUEUE_FULL",
                 "RT_ERROR_TSFW_QUEUE_EMPTY",
                 "RT_ERROR_TSFW_QUEUE_ALLOC_MEM_FAIL",
                 "RT_ERROR_TSFW_QUEUE_DATA_SIZE_UNMATCH",
                 "RT_ERROR_TSFW_PCIE_DMA_INVALID_CPY_TYPE",
                 "RT_ERROR_TSFW_INVALID_CPY_DIR",
                 "RT_ERROR_TSFW_PCIE_DMA_INVALID_CQ_DES",
                 "RT_ERROR_TSFW_PCIE_DMA_CPY_ERR",
                 "RT_ERROR_TSFW_PCIE_DMA_LNK_CHN_BUSY",
                 "RT_ERROR_TSFW_PROFILE_BUFF_FULL",
                 "RT_ERROR_TSFW_PROFILE_MODE_CONFLICT",
                 "RT_ERROR_TSFW_PROFILE_OTHER_PID_ON",
                 "RT_ERROR_TSFW_SCHD_AIC_TASK_PRELOAD_FAILED",
                 "RT_ERROR_TSFW_TSCPU_CLOSE_FAILED",
                 "RT_ERROR_TSFW_EXPECT_FAIL",
                 "RT_ERROR_TSFW_REPEAT_MODEL_STREAM",
                 "RT_ERROR_TSFW_STREAM_MODEL_UNBIND",
                 "RT_ERROR_TSFW_MODEL_EXE_FAILED",
                 "RT_ERROR_TSFW_IPC_SEND_FAILED",
                 "RT_ERROR_TSFW_IPC_PROC_REG_FAILED",
                 "RT_ERROR_TSFW_STREAM_FULL",
                 "RT_ERROR_TSFW_END_OF_SEQUENCE",
                 "RT_ERROR_TSFW_SWITCH_STREAM_LABEL",
                 "RT_ERROR_TSFW_TRANS_SQE_FAIL",
                 "RT_ERROR_TSFW_RESERVED",),
    0x00160000: ("RT_ERROR_SUBSCRIBE_BASE",
                 "RT_ERROR_SUBSCRIBE_NULL",
                 "RT_ERROR_SUBSCRIBE_NEW",
                 "RT_ERROR_SUBSCRIBE_STREAM",
                 "RT_ERROR_SUBSCRIBE_THREAD",
                 "RT_ERROR_SUBSCRIBE_GROUP",),
    0x00170000: ("RT_ERROR_GROUP_BASE",
                 "RT_ERROR_GROUP_NOT_SET",
                 "RT_ERROR_GROUP_NOT_CREATE"),
    0x00FF0000: ("RT_ERROR_RESERVED",),
}

rt_acl_error_code_dict = {
    0: "ACL_RT_SUCCESS",
    107000: "ACL_ERROR_RT_PARAM_INVALID",
    107001: "ACL_ERROR_RT_INVALID_DEVICEID",
    107002: "ACL_ERROR_RT_CONTEXT_NULL",
    107003: "ACL_ERROR_RT_STREAM_CONTEXT",
    107004: "ACL_ERROR_RT_MODEL_CONTEXT",
    107005: "ACL_ERROR_RT_STREAM_MODEL",
    107006: "ACL_ERROR_RT_EVENT_TIMESTAMP_INVALID",
    107007: "ACL_ERROR_RT_EVENT_TIMESTAMP_REVERSAL",
    107008: "ACL_ERROR_RT_KERNEL_LOOKUP",
    107009: "ACL_ERROR_RT_KERNEL_DUPLICATE",
    107010: "ACL_ERROR_RT_ADDR_UNALIGNED",
    107011: "ACL_ERROR_RT_FILE_OPEN",
    107012: "ACL_ERROR_RT_FILE_WRITE",
    107013: "ACL_ERROR_RT_DEBUG_REGISTER_FAIL",
    107014: "ACL_ERROR_RT_DEBUG_UNREGISTER_FAIL",
    107015: "ACL_ERROR_RT_LABEL_CONTEXT",
    107016: "ACL_ERROR_RT_STREAM_SUBSCRIBE",
    107017: "ACL_ERROR_RT_INVALID_HANDLE",
    107018: "ACL_ERROR_RT_INVALID_MALLOC_TYPE",
    # 20
    207000: "ACL_ERROR_RT_FEATURE_NOT_SUPPORT",
    207001: "ACL_ERROR_RT_MEMORY_ALLOCATION",
    207002: "ACL_ERROR_RT_MEMORY_FREE",
    207003: "ACL_ERROR_RT_AICORE_OVER_FLOW",
    207004: "ACL_ERROR_RT_NO_DEVICE",
    207005: "ACL_ERROR_RT_RESOURCE_ALLOC_FAIL",
    207006: "ACL_ERROR_RT_NO_PERMISSION",
    207007: "ACL_ERROR_RT_NO_EVENT_RESOURCE",
    207008: "ACL_ERROR_RT_NO_STREAM_RESOURCE",
    207009: "ACL_ERROR_RT_NO_NOTIFY_RESOURCE",
    207010: "ACL_ERROR_RT_NO_MODEL_RESOURCE",
    # 50
    507000: "ACL_ERROR_RT_INTERNAL_ERROR",
    507001: "ACL_ERROR_RT_TS_ERROR",
    507002: "ACL_ERROR_RT_STREAM_TASK_FULL",
    507003: "ACL_ERROR_RT_STREAM_TASK_EMPTY",
    507004: "ACL_ERROR_RT_STREAM_NOT_COMPLETE",
    507005: "ACL_ERROR_RT_END_OF_SEQUENCE",
    507006: "ACL_ERROR_RT_EVENT_NOT_COMPLETE",
    507007: "ACL_ERROR_RT_CONTEXT_RELEASE_ERROR",
    507008: "ACL_ERROR_RT_SOC_VERSION",
    507009: "ACL_ERROR_RT_TASK_TYPE_NOT_SUPPORT",
    507010: "ACL_ERROR_RT_LOST_HEARTBEAT",
    507011: "ACL_ERROR_RT_MODEL_EXECUTE",
    507012: "ACL_ERROR_RT_REPORT_TIMEOUT",
    507013: "ACL_ERROR_RT_SYS_DMA",
    507014: "ACL_ERROR_RT_AICORE_TIMEOUT",
    507015: "ACL_ERROR_RT_AICORE_EXCEPTION",
    507016: "ACL_ERROR_RT_AICORE_TRAP_EXCEPTION",
    507017: "ACL_ERROR_RT_AICPU_TIMEOUT",
    507018: "ACL_ERROR_RT_SDMA",
    507019: "ACL_ERROR_RT_AICPU_EXCEPTION",
    507020: "ACL_ERROR_RT_AICPU_DATADUMP_RSP_ERR",
    507021: "ACL_ERROR_RT_AICPU_MODEL_RSP_ERR",
    507022: "ACL_ERROR_RT_PROFILING_ERROR",
    507023: "ACL_ERROR_RT_IPC_ERROR",
    507024: "ACL_ERROR_RT_MODEL_ABORT_NORMAL",
    507025: "ACL_ERROR_RT_KERNEL_REGISTERING",
    507026: "ACL_ERROR_RT_RINGBUFFER_NOT_INIT",
    507027: "ACL_ERROR_RT_RINGBUFFER_NO_DATA",
    507028: "ACL_ERROR_RT_KERNEL_DUPLICATE",
    507029: "ACL_ERROR_RT_DEBUG_REGISTER_FAIL",
    507030: "ACL_ERROR_RT_DEBUG_UNREGISTER_FAIL",
    507031: "ACL_ERROR_RT_LABEL_CONTEXT",
    507032: "ACL_ERROR_RT_PROGRAM_USE_OUT",
    507033: "ACL_ERROR_RT_DEV_SETUP_ERROR",
    507034: "ACL_ERROR_RT_VECTOR_CORE_TIMEOUT",
    507035: "ACL_ERROR_RT_VECTOR_CORE_EXCEPTION",
    507036: "ACL_ERROR_RT_VECTOR_CORE_TRAP_EXCEPTION",
    507037: "ACL_ERROR_RT_CDQ_BATCH_ABNORMAL",
    507038: "ACL_ERROR_RT_DIE_MODE_CHANGE_ERROR",
    507039: "ACL_ERROR_RT_DIE_SET_ERROR",
    507040: "ACL_ERROR_RT_INVALID_DIEID",
    507041: "ACL_ERROR_RT_DIE_MODE_NOT_SET",
    507042: "ACL_ERROR_RT_AICORE_TRAP_READ_OVERFLOW",
    507043: "ACL_ERROR_RT_AICORE_TRAP_WRITE_OVERFLOW",
    507044: "ACL_ERROR_RT_VECTOR_CORE_TRAP_READ_OVERFLOW",
    507045: "ACL_ERROR_RT_VECTOR_CORE_TRAP_WRITE_OVERFLOW",
    507046: "ACL_ERROR_RT_STREAM_SYNC_TIMEOUT",
    507047: "ACL_ERROR_RT_EVENT_SYNC_TIMEOUT",
    507048: "ACL_ERROR_RT_FFTS_PLUS_TIMEOUT",
    507049: "ACL_ERROR_RT_FFTS_PLUS_EXCEPTION",
    507050: "ACL_ERROR_RT_FFTS_PLUS_TRAP_EXCEPTION",
    507051: "ACL_ERROR_RT_SEND_MSG",
    507052: "ACL_ERROR_RT_COPY_DATA",
    507053: "ACL_ERROR_RT_DEVICE_MTE_ERROR",
    507899: "ACL_ERROR_RT_DRV_INTERNAL_ERROR",
    507900: "ACL_ERROR_RT_AICPU_INTERNAL_ERROR",
    507901: "ACL_ERROR_RT_SOCKET_CLOSE"
}