Files
pqAutomationApp/UniTAP/dev/modules/opf/handlers/base.py
xinzhu.yin c157e774e5 1.1.0版本
2026-04-16 16:51:05 +08:00

52 lines
1.7 KiB
Python

import abc
from typing import Callable
from enum import IntEnum
from .opf_functions import OPFFunctions, logging, OPFDialogAnswer
from UniTAP.dev.modules.opf.parsers import OPFParametersParser
class WrongOPFFunctionSignature(Exception):
pass
class OpfHandlerBase:
"""
Class `OpfHandlerBase` allows working with functions that helps to do required actions during DUT tests.
- Use DSC content library `set_dsc_content_library`. If DSC image does not exist, it will be generated.
"""
__FUNCTIONS_MAP = {
19: OPFFunctions.opf_19_handler,
103: OPFFunctions.opf_103_handler,
}
def __init__(self):
self.__parser = OPFParametersParser()
self.__tx = None
self.__rx = None
self.__callback_before_handling = {}
self._dsc_content_library_path = ""
def _set_roles(self, role_tx, role_rx):
self.__tx = role_tx
self.__rx = role_rx
def set_dsc_content_library(self, dsc_content_library_path: str = ""):
"""
Set new path to DSC content library folder.
If path is empty, content library will not use (all images will be generated into OPF functions without saving).
Arguments:
dsc_content_library_path (`str`) - full path to DSC content library folder.
"""
self._dsc_content_library_path = dsc_content_library_path
def handle(self, opf_id, reply_answer, *args) -> OPFDialogAnswer:
opf_params = self.__parser.parse(opf_id, *args)
OPFFunctions.dsc_content_library_path = self._dsc_content_library_path
return reply_answer(self.__FUNCTIONS_MAP.get(opf_id)(self.__tx, self.__rx, *opf_params))
def _is_opf_processed(self, opf_id: int):
return self.__FUNCTIONS_MAP.get(opf_id) is not None