class DeviceOperation:
    @staticmethod
    def getOperation(type):
        data = {
            # Operation 操作
            "0x10000": 'LOG_TYPE_SYSTEM_CTRL',  # 系统
            "0x10001": 'LOG_TYPE_BOOT',  # 系统关机
            "0x10002": 'LOG_TYPE_SHUTDOWN',  # 系统关机
            "0x10003": 'LOG_TYPE_REBOOT',  # 系统重启
            "0x10004": 'LOG_TYPE_FORMAT_SUCC',  # 格式化磁盘失败
            "0x10005": 'LOG_TYPE_FORMAT_FAIL',  # 格式化磁盘成功
            "0x10006": 'LOG_TYPE_UPGRADE_SUCC',  # 升级成功
            "0x10007": 'LOG_TYPE_UPGRADE_FAIL',  # 升级失败
            "0x10008": 'LOG_TYPE_CLEAR_ALARM',  # 清除报警
            "0x10009": 'LOG_TYPE_OPEN_ALARM',  # 开启报警
            "0x1000A": 'LOG_TYPE_MANUAL_START',  # 开启手动录像
            "0x1000B": 'LOG_TYPE_MANUAL_STOP',  # 停止手动录像
            "0x1000C": 'LOG_TYPE_PTZ_ENTER',  # 开始云台控制
            "0x1000D": 'LOG_TYPE_PTZ_CTRL',  # 云台操作
            "0x1000E": 'LOG_TYPE_PTZ_EXIT',  # 结束云台控制
            "0x1000F": 'LOG_TYPE_AUDIO_CH_CHANGE',  # 改变现场音频通道
            "0x10010": 'LOG_TYPE_VOLUME_ADJUST',  # 调节音量
            "0x10011": 'LOG_TYPE_MUTE_ENABLE',  # 开启静音
            "0x10012": 'LOG_TYPE_MUTE_DISENABLE',  # 关闭静音
            "0x10013": 'LOG_TYPE_DWELL_ENABLE',  # 开启轮循
            "0x10014": 'LOG_TYPE_DWELL_DISENABLE',  # 关闭轮循
            "0x10015": 'LOG_TYPE_LOG_IN',  # 登录
            "0x10016": 'LOG_TYPE_LOG_OFF',  # 登出
            "0x10017": 'LOG_TYPE_CHANGE_TIME',  # 修改系统时间
            "0x10018": 'LOG_TYPE_MANUAL_SNAP_SUCC',  # 手动抓图成功
            "0x10019": 'LOG_TYPE_MANUAL_SNAP_FAIL',  # 手动抓图失败

            # setup 系统配置
            "0x20000": 'LOG_TYPE_CONFIG',
            "0x20001": 'LOG_TYPE_CHGE_VIDEO_FORMAT',  # 改变视频制式
            "0x20002": 'LOG_TYPE_CHGE_VGA_RESOLUTION',  # 改变显示器分辨率
            "0x20003": 'LOG_TYPE_CHGE_LANGUAGE',  # 调整语言
            "0x20004": 'LOG_TYPE_CHGE_NET_USER_NUM',  # 调整网络用户数目
            "0x20005": 'LOG_TYPE_CHGE_TIME_ZONE',  # 调整时区
            "0x20006": 'LOG_TYPE_NTP_MANUAL',  # 手动网络校时
            "0x20007": 'LOG_TYPE_NTP_ON',  # 开启自动网络校时
            "0x20008": 'LOG_TYPE_NTP_OFF',  # 关闭自动网络校时
            "0x20009": 'LOG_TYPE_CHGE_NTP_SERVER',  # 修改网络时间服务器地址
            "0x2000A": 'LOG_TYPE_CHGE_DST',  # 调整夏令时设置
            "0x2000B": 'LOG_TYPE_PASSWD_ON',  # 开启操作密码
            "0x2000C": 'LOG_TYPE_PASSWD_OFF',  # 关闭操作密码
            "0x2000D": 'LOG_TYPE_CHGE_CAM_NAME',  # 调整通道名称
            "0x2000E": 'LOG_TYPE_MODIFY_COLOR',  # 调整图像色彩
            "0x2000F": 'LOG_TYPE_CHGE_HOST_MONITOR',  # 调整主监视器画面设置
            "0x20010": 'LOG_TYPE_CHGE_SPOT',  # 调整辅助输出画面设置
            "0x20011": 'LOG_TYPE_CHGE_OSD',  # 调整字符叠加设置
            "0x20012": 'LOG_TYPE_CHGE_LOCAL_ENCODE',  # 调整录像流编码参数
            "0x20013": 'LOG_TYPE_CHGE_REC_VIDEO_SWITCH',  # 调整录像开关设置
            "0x20014": 'LOG_TYPE_CHGE_REC_AUDIO_SWITCH',  # 调整录制音频开关设置
            "0x20015": 'LOG_TYPE_CHGE_REC_REDU_SWITCH',  # 调整冗余录像开关设置
            "0x20016": 'LOG_TYPE_CHGE_REC_PRE_TIME',  # 调整景前录像时间
            "0x20017": 'LOG_TYPE_CHGE_REC_POST_TIME',  # 调整景后录像时间
            "0x20018": 'LOG_TYPE_CHGE_REC_HOLD_TIME',  # 调整录像数据过期时间
            "0x20019": 'LOG_TYPE_CHGE_SCH_SCHEDULE',  # 调整定时录像计划
            "0x2001A": 'LOG_TYPE_CHGE_SCH_MOTION',  # 调整移动侦测录像计划
            "0x2001B": 'LOG_TYPE_CHGE_SCH_ALARM',  # 调整报警录像计划
            "0x2001C": 'LOG_TYPE_CHGE_SENSOR_SWITCH',  # 调整报警输入开关设置
            "0x2001D": 'LOG_TYPE_CHGE_SENSOR_TYPE',  # 调整报警输入设备类型
            "0x2001E": 'LOG_TYPE_CHGE_SENSOR_TRIGGER',  # 调整报警输入处理方式设置
            "0x2001F": 'LOG_TYPE_CHGE_SENSOR_SCH',  # 调整报警输入侦测计划
            "0x20020": 'LOG_TYPE_CHGE_MOTION_SWITCH',  # 调整移动侦测开关设置
            "0x20021": 'LOG_TYPE_CHGE_MOTION_SENS',  # 调整移动侦测灵敏度
            "0x20022": 'LOG_TYPE_CHGE_MOTION_AREA',  # 调整移动侦测区域设置
            "0x20023": 'LOG_TYPE_CHGE_MOTION_TRIGGER',  # 调整移动侦测处理方式
            "0x20024": 'LOG_TYPE_CHGE_MOTION_SCH',  # 调整移动侦测计划
            "0x20025": 'LOG_TYPE_CHGE_VL_TRIGGER',  # 调整视频丢失处理方式设置
            "0x20026": 'LOG_TYPE_CHGE_RELAY_SWITCH',  # 调整报警输出开关设置
            "0x20027": 'LOG_TYPE_CHGE_RELAY_SCH',  # 调整报警输出计划
            "0x20028": 'LOG_TYPE_BUZZER_ON',  # 开启声音报警设备
            "0x20029": 'LOG_TYPE_BUZZER_OFF',  # 关闭声音报警设备
            "0x2002A": 'LOG_TYPE_CHGE_BUZZER_SCH',  # 调整声音报警计划
            "0x2002B": 'LOG_TYPE_CHGE_HTTP_PORT',  # 修改HTTP服务器端口
            "0x2002C": 'LOG_TYPE_CHGE_SER_PORT',  # 修改网络服务器端口
            "0x2002D": 'LOG_TYPE_CHGE_IP',  # 设置网络地址
            "0x2002E": 'LOG_TYPE_DHCP_SUCC',  # 自动获取网络地址成功
            "0x2002F": 'LOG_TYPE_DHCP_FAIL',  # 自动获取网络地址失败
            "0x20030": 'LOG_TYPE_CHGE_PPPOE',  # 设置PPPoE
            "0x20031": 'LOG_TYPE_CHGE_DDNS',  # 设置DDNS
            "0x20032": 'LOG_TYPE_NET_STREAM_CFG',  # 调整网络流编码设置
            "0x20033": 'LOG_TYPE_CHGE_SERIAL',  # 调整云台串口设置
            "0x20034": 'LOG_TYPE_PRESET_MODIFY',  # 调整预置点
            "0x20035": 'LOG_TYPE_CRUISE_MODIFY',  # 调整巡航线
            "0x20036": 'LOG_TYPE_TRACK_MODIFY',  # 调整轨迹
            "0x20037": 'LOG_TYPE_USER_ADD',  # 增加用户
            "0x20038": 'LOG_TYPE_USER_MODIFY',  # 调整用户权限
            "0x20039": 'LOG_TYPE_USER_DELETE',  # 删除用户
            "0x2003A": 'LOG_TYPE_CHANGE_PASSWD',  # 修改用户密码
            "0x2003B": 'LOG_TYPE_LOAD_DEFAULT',  # 恢复默认配置
            "0x2003C": 'LOG_TYPE_IMPORT_CONFIG',  # 导入配置
            "0x2003D": 'LOG_TYPE_EXPORT_CONFIG',  # 导出配置
            "0x2003E": 'LOG_TYPE_CHGE_IMAGE_MASK',  # 图像遮挡
            "0x2003F": 'LOG_TYPE_RECYCLE_REC_ON',  # 开启循环录像
            "0x20040": 'LOG_TYPE_RECYCLE_REC_OFF',  # 关闭循环录像
            "0x20041": 'LOG_TYPE_CHGE_DISK_ALARM',  # 调整磁盘报警空间
            "0x20042": 'LOG_TYPE_CHGE_SEND_EMAIL',  # 设置Email 发送人信息
            "0x20043": 'LOG_TYPE_CHGE_RECV_EMAIL',  # 设置Email 接收人信息
            "0x20044": 'LOG_TYPE_CHGE_SNAP_SETTING',  # 调整抓图配置
            "0x20045": 'LOG_TYPE_CHGE_SCH_PIR',  # 调整人体红外感应录像计划
            "0x20046": 'LOG_TYPE_CHGE_PIR_SWITCH',  # 调整人体红外感应开关设置
            "0x20047": 'LOG_TYPE_CHGE_PIR_TRIGGER',  # 调整人体红外感应处理方式
            "0x20048": 'LOG_TYPE_CHGE_PIR_SCH',  # 调整人体红外感应计划

            # 录像回放(Playback)
            "0x40000": 'LOG_TYPE_PLAYBACK',  # 播放
            "0x40001": 'LOG_TYPE_PLAYBACK_PLAY',  # 播放
            "0x40002": 'LOG_TYPE_CHGE_PIR_SWITCH',  # 暂停
            "0x40003": 'LOG_TYPE_PLAYBACK_RESUME',  # 恢复播放
            "0x40004": 'LOG_TYPE_PLAYBACK_FF',  # 快进
            "0x40005": 'LOG_TYPE_PLAYBACK_REW',  # 快退
            "0x40006": 'LOG_TYPE_PLAYBACK_STOP',  # 停止
            "0x40007": 'LOG_TYPE_PLAYBACK_NEXT_SECTION',  # 下一段
            "0x40008": 'LOG_TYPE_PLAYBACK_PREV_SECTION',  # 上一段

            # 数据备份(Backup)
            "0x80000": 'LOG_TYPE_BACKUP',  #
            "0x80001": 'LOG_TYPE_BACKUP_START',  # 开始备份
            "0x80002": 'LOG_TYPE_BACKUP_COMPLETE',  # 备份完成
            "0x80003": 'LOG_TYPE_BACKUP_CANCEL',  # 放弃备份
            "0x80004": 'LOG_TYPE_BACKUP_FAIL',  # 备份失败

            # 录像检索（Search）
            "0x100000": 'LOG_TYPE_SEARCH',  # 按时间检索
            "0x100001": 'LOG_TYPE_SEARCH_TIME',  # 按时间检索
            "0x100002": 'LOG_TYPE_SEARCH_EVENT',  # 按事件检索
            "0x100003": 'LOG_TYPE_SEARCH_FILE_MAN',  # 文件管理
            "0x100004": 'LOG_TYPE_DELETE_FILE',  # 调整人体红外感应开关设置
            "0x100005": 'LOG_TYPE_LOCK_FILE',  # 锁定文件
            "0x100006": 'LOG_TYPE_UNLOCK_FILE',  # 解锁文件
            "0x100007": 'LOG_TYPE_DELETE_PICTURE',  # 删除图片
            "0x100008": 'LOG_TYPE_LOCK_PICTURE',  # 锁定图片
            "0x100009": 'LOG_TYPE_UNLOCK_PICTURE',  # 解锁图片

            # 查看信息(Check Infomantion)
            "0x200000": 'LOG_TYPE_VIEW_INFO',  # 查看系统信息
            "0x200001": 'LOG_TYPE_VIEW_SYSTEM',  # 查看系统信息
            "0x200002": 'LOG_TYPE_VIEW_EVENT',  # 查看事件
            "0x200003": 'LOG_TYPE_VIEW_LOG',  # 查看日志
            "0x200004": 'LOG_TYPE_VIEW_NETWORK',  # 查看网络状态
            "0x200005": 'LOG_TYPE_VIEW_ONLINE_USER',  # 查看在线用户
            "0x200006": 'LOG_TYPE_VIEW_EXPORT_LOG',  # 导出日志
            "0x200007": 'LOG_TYPE_VIEW_EXPORT_EVENT',  # 导出事件

            # 异常信息(Error)
            "0x400000": 'LOG_TYPE_ERROR_INFO',  # 网络地址冲突
            "0x400001": 'LOG_TYPE_IP_CONFLICT',  # 网络地址冲突
            "0x400002": 'LOG_TYPE_NETWORK_ERR',  # 网络异常
            "0x400003": 'LOG_TYPE_DDNS_ERR',  # DDNS错误
            "0x400004": 'LOG_TYPE_DISK_IO_ERR',  # 磁盘读写错误
            "0x400005": 'LOG_TYPE_UNKNOWN_OFF',  # 异常断电
            "0x400006": 'LOG_TYPE_UNKNOWN_ERR',  # 未知错误
            "0x400007": 'LOG_TYPE_ERR_9A9A9A9A',  #
            "0x400008": 'LOG_TYPE_ERR_9A000001',  #
            "0x400009": 'LOG_TYPE_ERR_9A000002',  #
            "0x40000A": 'LOG_TYE_DISK_WARNING',  # 磁盘衰减报警
            "0x40000B": 'LOG_TYE_DISK_DISCONNECT',  # 磁盘掉线报警
            "0x40000C": 'LOG_TYE_DISK_NOTFIND',  # 开机无硬盘

            # 事件信息 Event
            "0x800000": 'LOG_TYPE_EVENT',  # 事件信息
            "0x800001": 'LOG_TYPE_EVENT_MOTION',  # 调整人体红外感应开关设置
            "0x800002": 'LOG_TYPE_EVENT_SENSOR',  # 调整人体红外感应开关设置
            "0x800004": 'LOG_TYPE_EVENT_VIDEO_LOSS',  # 调整人体红外感应开关设置
            "0x800008": 'LOG_TYPE_EVENT_COVER',  # 调整人体红外感应开关设置
            "0x800010": 'LOG_TYPE_EVENT_PIR',  # 调整人体红外感应开关设置
        }
        try:
            res = data[type]
        except Exception as e:
            res = ''
        return res

    @staticmethod
    def getODla(search_class):
        data = {
            'Operation': ['0x10000', '0x10019'], #操作
            'Setup': ['0x20000', '0x20048'], #系统配置
            'Playback': ['0x40000', '0x40008'], #录像回放
            'Backup': ['0x80000', '0x80004'], #数据备份
            'Search': ['0x100001', '0x100009'], #录像检索
            'Check Infomantion': ['0x200000', '0x200007'], #查看信息
            'Error': ['0x400000', '0x40000C'], #异常信息
            'Event': ['0x800000', '0x800010'], #事件信息
        }

        return data[search_class]
