更新UCD-API库及文档
This commit is contained in:
@@ -1,14 +1,18 @@
|
||||
import warnings
|
||||
from enum import IntEnum
|
||||
|
||||
from UniTAP.libs.lib_tsi.tsi_private_types import *
|
||||
from _ctypes import Structure
|
||||
|
||||
import UniTAP.libs.lib_tsi.tsi_private_types as p_ci
|
||||
import UniTAP.libs.lib_tsi.tsi_types as ci
|
||||
from UniTAP.libs.lib_helper import OS_Requirements, lib_method_wrapper
|
||||
from ctypes import c_char_p, c_uint32, c_void_p, c_int32, POINTER, create_string_buffer, byref, \
|
||||
sizeof, c_uint64, c_ubyte, c_bool
|
||||
sizeof, c_uint64, c_ubyte, c_bool, c_uint
|
||||
|
||||
from UniTAP.utils import tsi_logging as logging
|
||||
|
||||
CTYPES_TYPE_LIST = [c_char_p, c_uint32, c_void_p, c_int32, c_uint64, c_ubyte, c_bool]
|
||||
|
||||
|
||||
callback = None
|
||||
|
||||
|
||||
@@ -21,6 +25,14 @@ class Singleton(type):
|
||||
return cls._instances[cls]
|
||||
|
||||
|
||||
class TSIInitializationFailed(Exception):
|
||||
"""
|
||||
Redefinition of base exception.
|
||||
Define error of 'TSI library initialization failed'.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class TSIWrapper(metaclass=Singleton):
|
||||
_TSI_CURRENT_VERSION = 12
|
||||
|
||||
@@ -63,100 +75,104 @@ class TSIWrapper(metaclass=Singleton):
|
||||
def initialize(self):
|
||||
|
||||
self._TSIX_Init = lib_method_wrapper(self.lib.TSIX_Init, [POINTER(TSI_INIT_CONFIGURATION)],
|
||||
TSI_RESULT)
|
||||
self._TSI_Init = lib_method_wrapper(self.lib.TSI_Init, [c_uint32], TSI_RESULT)
|
||||
self._TSI_Clean = lib_method_wrapper(self.lib.TSI_Clean, [], TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSI_Init = lib_method_wrapper(self.lib.TSI_Init, [c_uint32], ci.TSI_RESULT)
|
||||
self._TSI_Clean = lib_method_wrapper(self.lib.TSI_Clean, [], ci.TSI_RESULT)
|
||||
self._TSI_DEV_GetDeviceCount = lib_method_wrapper(self.lib.TSIX_DEV_GetDeviceCount, [],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_DEV_GetDeviceName = lib_method_wrapper(self.lib.TSIX_DEV_GetDeviceName,
|
||||
[TSI_DEVICE_ID, c_char_p, c_uint32],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_DEVICE_ID, c_char_p, c_uint32],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_DEV_OpenDevice = lib_method_wrapper(self.lib.TSIX_DEV_OpenDevice,
|
||||
[TSI_DEVICE_ID, POINTER(TSI_RESULT)],
|
||||
TSI_HANDLE)
|
||||
[ci.TSI_DEVICE_ID, POINTER(ci.TSI_RESULT)],
|
||||
ci.TSI_HANDLE)
|
||||
self._TSIX_DEV_SelectRole = lib_method_wrapper(self.lib.TSIX_DEV_SelectRole,
|
||||
[TSI_HANDLE, c_int32],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE, c_int32],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_DEV_RescanDevices = lib_method_wrapper(self.lib.TSIX_DEV_RescanDevices,
|
||||
[c_int32, c_int32, c_int32],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_DEV_GetDeviceRoleName = lib_method_wrapper(self.lib.TSIX_DEV_GetDeviceRoleName,
|
||||
[TSI_HANDLE, c_int32, c_char_p,
|
||||
[ci.TSI_HANDLE, c_int32, c_char_p,
|
||||
c_uint32],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_DEV_GetDeviceRoleCount = lib_method_wrapper(self.lib.TSIX_DEV_GetDeviceRoleCount,
|
||||
[TSI_HANDLE, ],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE, ],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_DEV_CloseDevice = lib_method_wrapper(self.lib.TSIX_DEV_CloseDevice,
|
||||
[TSI_HANDLE, ],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE, ],
|
||||
ci.TSI_RESULT)
|
||||
self._TSI2_TS_SetConfigItem = lib_method_wrapper(self.lib.TSI2_TS_SetConfigItem,
|
||||
[TSI_HANDLE, TSI_LOGICAL_PORT,
|
||||
TSI_CONFIG_ID,
|
||||
[ci.TSI_HANDLE, ci.TSI_TEST_ID,
|
||||
ci.TSI_CONFIG_ID,
|
||||
c_void_p, c_uint32],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_TS_SetConfigItem = lib_method_wrapper(self.lib.TSIX_TS_SetConfigItem,
|
||||
[TSI_HANDLE, TSI_CONFIG_ID, c_void_p,
|
||||
[ci.TSI_HANDLE, ci.TSI_CONFIG_ID, c_void_p,
|
||||
c_uint32],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSI2_TS_GetConfigItem = lib_method_wrapper(self.lib.TSI2_TS_GetConfigItem,
|
||||
[TSI_HANDLE, TSI_LOGICAL_PORT,
|
||||
TSI_CONFIG_ID,
|
||||
[ci.TSI_HANDLE, ci.TSI_TEST_ID,
|
||||
ci.TSI_CONFIG_ID,
|
||||
c_void_p, c_uint32],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_TS_GetConfigItem = lib_method_wrapper(self.lib.TSIX_TS_GetConfigItem,
|
||||
[TSI_HANDLE, TSI_CONFIG_ID, c_void_p,
|
||||
[ci.TSI_HANDLE, ci.TSI_CONFIG_ID, c_void_p,
|
||||
c_uint32],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSI_MISC_GetErrorDescription = lib_method_wrapper(
|
||||
self.lib.TSI_MISC_GetErrorDescription,
|
||||
[TSI_RESULT, c_char_p, c_uint32],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_RESULT, c_char_p, c_uint32],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_PORT_Select = lib_method_wrapper(self.lib.TSIX_PORT_Select,
|
||||
[TSI_HANDLE, TSI_LOGICAL_PORT],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE, ci.TSI_TEST_ID],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_PORT_Deselect = lib_method_wrapper(self.lib.TSIX_PORT_Deselect,
|
||||
[TSI_HANDLE, TSI_LOGICAL_PORT],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE, ci.TSI_TEST_ID],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_TS_RunTest = lib_method_wrapper(self.lib.TSIX_TS_RunTest,
|
||||
[TSI_HANDLE, TSI_TEST_ID],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE, ci.TSI_TEST_ID],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_TS_AbortTests = lib_method_wrapper(self.lib.TSIX_TS_AbortTests,
|
||||
[TSI_HANDLE],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_PORT_GetTestCount = lib_method_wrapper(self.lib.TSIX_PORT_GetTestCount,
|
||||
[TSI_HANDLE, TSI_LOGICAL_PORT],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE, ci.TSI_TEST_ID],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_PORT_GetTestInfo = lib_method_wrapper(self.lib.TSIX_PORT_GetTestInfo,
|
||||
[TSI_HANDLE, TSI_LOGICAL_PORT, c_int32,
|
||||
POINTER(TSI_TEST_ID),
|
||||
[ci.TSI_HANDLE, p_ci.TSI_LOGICAL_PORT, c_int32,
|
||||
POINTER(ci.TSI_TEST_ID),
|
||||
POINTER(c_int32), c_char_p, c_uint32],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_STLOG_WaitMessage = lib_method_wrapper(self.lib.TSIX_STLOG_WaitMessage,
|
||||
[TSI_HANDLE, c_int32],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_HANDLE, c_int32],
|
||||
ci.TSI_RESULT)
|
||||
self._TSIX_STLOG_GetMessageData = lib_method_wrapper(self.lib.TSIX_STLOG_GetMessageData,
|
||||
[TSI_HANDLE, c_char_p, c_uint32,
|
||||
[ci.TSI_HANDLE, c_char_p, c_uint32,
|
||||
POINTER(c_uint32)],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSI_CreateEventParser = lib_method_wrapper(self.lib.TSI_CreateEventParser,
|
||||
[POINTER(TSI_RESULT), c_uint32],
|
||||
TSI_PARSER)
|
||||
[POINTER(ci.TSI_RESULT), c_uint32],
|
||||
ci.TSI_PARSER)
|
||||
self._TSI_RemoveEventParser = lib_method_wrapper(self.lib.TSI_RemoveEventParser,
|
||||
[TSI_PARSER, ],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_PARSER, ],
|
||||
ci.TSI_RESULT)
|
||||
self._TSI_GetParsedEventData = lib_method_wrapper(self.lib.TSI_GetParsedEventData,
|
||||
[TSI_PARSER, POINTER(c_ubyte), c_int32,
|
||||
[ci.TSI_PARSER, POINTER(c_ubyte), c_int32,
|
||||
POINTER(c_uint64), c_char_p, c_int32,
|
||||
c_char_p,
|
||||
c_int32, c_char_p, c_int32, c_char_p,
|
||||
c_int32],
|
||||
TSI_RESULT)
|
||||
ci.TSI_RESULT)
|
||||
self._TSI_DEV_SetSearchMask = lib_method_wrapper(self.lib.TSI_DEV_SetSearchMask,
|
||||
[TSI_DEVICE_CAPS, TSI_DEVICE_CAPS],
|
||||
TSI_RESULT)
|
||||
[ci.TSI_DEVICE_CAPS, ci.TSI_DEVICE_CAPS],
|
||||
ci.TSI_RESULT)
|
||||
result = self.__TSIX_Init()
|
||||
|
||||
return self.__TSIX_Init() if logging.is_enabled() else self.__TSI_Init()
|
||||
if result < ci.TSI_SUCCESS:
|
||||
raise TSIInitializationFailed(f"TSI initialization failed with error code {result}")
|
||||
|
||||
return result
|
||||
|
||||
def deinitialize(self):
|
||||
return self.__TSI_Clean()
|
||||
@@ -170,8 +186,8 @@ class TSIWrapper(metaclass=Singleton):
|
||||
logging.log((level + 1) * 10, message.decode())
|
||||
except Exception as exc:
|
||||
warnings.warn(f"[UniTAP] Logger function receive exception: {exc}")
|
||||
|
||||
callback = TSI_USER_LOG_FUNCTION(ofp_impl)
|
||||
|
||||
callback = ci.TSI_USER_LOG_FUNCTION(ofp_impl)
|
||||
|
||||
def __TSIX_Init(self):
|
||||
global callback
|
||||
@@ -179,7 +195,7 @@ class TSIWrapper(metaclass=Singleton):
|
||||
config = TSI_INIT_CONFIGURATION()
|
||||
config.size = sizeof(config)
|
||||
config.version = self._TSI_CURRENT_VERSION
|
||||
config.function = callback
|
||||
config.function = callback if logging.is_enabled() else ci.TSI_USER_LOG_FUNCTION(0)
|
||||
|
||||
return self._TSIX_Init(byref(config))
|
||||
|
||||
@@ -193,12 +209,12 @@ class TSIWrapper(metaclass=Singleton):
|
||||
return self._TSI_DEV_GetDeviceCount()
|
||||
|
||||
def TSIX_DEV_GetDeviceName(self, device_id: int):
|
||||
_device_name = create_string_buffer(TSI_NAME_SIZE)
|
||||
result = self._TSIX_DEV_GetDeviceName(device_id, _device_name, TSI_NAME_SIZE)
|
||||
_device_name = create_string_buffer(ci.TSI_NAME_SIZE)
|
||||
result = self._TSIX_DEV_GetDeviceName(device_id, _device_name, ci.TSI_NAME_SIZE)
|
||||
return result, from_cstr(_device_name)
|
||||
|
||||
def TSIX_DEV_OpenDevice(self, device_id: int):
|
||||
result = c_int32(TSI_SUCCESS)
|
||||
result = c_int32(ci.TSI_SUCCESS)
|
||||
device = self._TSIX_DEV_OpenDevice(c_uint32(device_id), byref(result))
|
||||
return device
|
||||
|
||||
@@ -260,8 +276,11 @@ class TSIWrapper(metaclass=Singleton):
|
||||
_data = data_type(data.value)
|
||||
result = self._TSI2_TS_SetConfigItem(device_handle, config_id, byref(_data),
|
||||
sizeof(_data))
|
||||
elif issubclass(type(data), Structure):
|
||||
result = self._TSIX_TS_SetConfigItem(device_handle, config_id, byref(data),
|
||||
sizeof(data))
|
||||
else:
|
||||
result = TSI_ERROR_NOT_IMPLEMENTED
|
||||
result = ci.TSI_ERROR_NOT_IMPLEMENTED
|
||||
|
||||
return result
|
||||
|
||||
@@ -286,8 +305,11 @@ class TSIWrapper(metaclass=Singleton):
|
||||
sizeof(_data))
|
||||
elif type(data) == list or type(data) == bytearray:
|
||||
_data = (data_type * data_count)(*data)
|
||||
result = self._TSIX_TS_SetConfigItem(device_handle, config_id, byref(_data),
|
||||
sizeof(_data))
|
||||
if config_id == ci.TSI_MEMORY_LAYOUT:
|
||||
result = self._TSIX_TS_SetConfigItem(device_handle, config_id, byref(_data), data_count)
|
||||
else:
|
||||
result = self._TSIX_TS_SetConfigItem(device_handle, config_id, byref(_data), sizeof(_data))
|
||||
|
||||
elif type(data) == str:
|
||||
_data = create_string_buffer(data_count)
|
||||
_data.value = str.encode(data)
|
||||
@@ -304,7 +326,7 @@ class TSIWrapper(metaclass=Singleton):
|
||||
result = self._TSIX_TS_SetConfigItem(device_handle, config_id, byref(data),
|
||||
sizeof(data))
|
||||
else:
|
||||
result = TSI_ERROR_NOT_IMPLEMENTED
|
||||
result = ci.TSI_ERROR_NOT_IMPLEMENTED
|
||||
|
||||
return result
|
||||
|
||||
@@ -361,22 +383,22 @@ class TSIWrapper(metaclass=Singleton):
|
||||
|
||||
return result, from_cstr(err_msg)
|
||||
|
||||
def TSIX_PORT_Select(self, device: TSI_HANDLE, port):
|
||||
def TSIX_PORT_Select(self, device: ci.TSI_HANDLE, port):
|
||||
return self._TSIX_PORT_Select(device, port)
|
||||
|
||||
def TSIX_PORT_Deselect(self, device: TSI_HANDLE, port):
|
||||
def TSIX_PORT_Deselect(self, device: ci.TSI_HANDLE, port):
|
||||
return self._TSIX_PORT_Deselect(device, port)
|
||||
|
||||
def TSIX_TS_RunTest(self, device: TSI_HANDLE, test_id: int):
|
||||
def TSIX_TS_RunTest(self, device: ci.TSI_HANDLE, test_id: int):
|
||||
return self._TSIX_TS_RunTest(device, c_uint32(test_id))
|
||||
|
||||
def TSIX_TS_AbortTests(self, device: TSI_HANDLE):
|
||||
def TSIX_TS_AbortTests(self, device: ci.TSI_HANDLE):
|
||||
return self._TSIX_TS_AbortTests(device)
|
||||
|
||||
def TSIX_PORT_GetTestCount(self, device: TSI_HANDLE, port: TSI_LOGICAL_PORT):
|
||||
def TSIX_PORT_GetTestCount(self, device: ci.TSI_HANDLE, port: ci.TSI_TEST_ID):
|
||||
return self._TSIX_PORT_GetTestCount(device, port)
|
||||
|
||||
def TSIX_PORT_GetTestInfo(self, device: TSI_HANDLE, port: TSI_LOGICAL_PORT, test_index: int):
|
||||
def TSIX_PORT_GetTestInfo(self, device: ci.TSI_HANDLE, port: ci.TSI_TEST_ID, test_index: int):
|
||||
msg_size = c_uint32(1024)
|
||||
test_id = c_uint32(0)
|
||||
msg_buffer = create_string_buffer(msg_size.value)
|
||||
@@ -386,10 +408,10 @@ class TSIWrapper(metaclass=Singleton):
|
||||
msg_buffer, msg_size)
|
||||
return test_id.value, test_flags.value, from_cstr(msg_buffer)
|
||||
|
||||
def TSIX_STLOG_WaitMessage(self, device: TSI_HANDLE, max_wait: int):
|
||||
def TSIX_STLOG_WaitMessage(self, device: ci.TSI_HANDLE, max_wait: int):
|
||||
return self._TSIX_STLOG_WaitMessage(device, c_int32(max_wait))
|
||||
|
||||
def TSIX_STLOG_GetMessageData(self, device: TSI_HANDLE):
|
||||
def TSIX_STLOG_GetMessageData(self, device: ci.TSI_HANDLE):
|
||||
msg_size = c_uint32(1024)
|
||||
out_size = c_uint32(0)
|
||||
msg_buffer = create_string_buffer(msg_size.value)
|
||||
@@ -399,7 +421,7 @@ class TSIWrapper(metaclass=Singleton):
|
||||
return result, from_cstr(msg_buffer), out_size.value
|
||||
|
||||
def TSI_CreateEventParser(self, timestamp_res: int = 100):
|
||||
result = c_int32(TSI_SUCCESS)
|
||||
result = c_int32(ci.TSI_SUCCESS)
|
||||
return self._TSI_CreateEventParser(byref(result), c_uint32(timestamp_res))
|
||||
|
||||
def TSI_RemoveEventParser(self, parser):
|
||||
@@ -428,14 +450,14 @@ class TSIWrapper(metaclass=Singleton):
|
||||
|
||||
if to_dict:
|
||||
return result, \
|
||||
{
|
||||
'timestamp': timestamp.value,
|
||||
'type': from_cstr(typeStr),
|
||||
'brief': from_cstr(briefStr),
|
||||
'content': from_cstr(contentStr),
|
||||
'source': from_cstr(eventSourceStr),
|
||||
'data': data[12:]
|
||||
}
|
||||
{
|
||||
'timestamp': timestamp.value,
|
||||
'type': from_cstr(typeStr),
|
||||
'brief': from_cstr(briefStr),
|
||||
'content': from_cstr(contentStr),
|
||||
'source': from_cstr(eventSourceStr),
|
||||
'data': data[12:]
|
||||
}
|
||||
else:
|
||||
return result, timestamp.value, from_cstr(typeStr), from_cstr(briefStr), from_cstr(
|
||||
contentStr), from_cstr(
|
||||
@@ -467,19 +489,21 @@ class TSI_INIT_CONFIGURATION(Structure):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.size = 0
|
||||
self.version = 0
|
||||
self.function = TSI_USER_LOG_FUNCTION()
|
||||
self.function = ci.TSI_USER_LOG_FUNCTION()
|
||||
|
||||
_fields_ = [
|
||||
("size", c_uint),
|
||||
("version", c_uint),
|
||||
("function", TSI_USER_LOG_FUNCTION),
|
||||
("function", ci.TSI_USER_LOG_FUNCTION),
|
||||
]
|
||||
|
||||
|
||||
def get_config_item_name(config_item) -> str:
|
||||
items = globals().items()
|
||||
variable_name = [k for k, v in items if v == config_item][0]
|
||||
return variable_name
|
||||
for module in (ci, p_ci):
|
||||
for k, v in vars(module).items():
|
||||
if v == config_item:
|
||||
return k
|
||||
raise Exception(f"Item {config_item} not found in tsi.py and private_types_tsi.py")
|
||||
|
||||
|
||||
def from_cstr(src_str):
|
||||
@@ -494,10 +518,10 @@ def to_cstr(src_str):
|
||||
|
||||
|
||||
def show_error(error_code):
|
||||
if error_code >= TSI_SUCCESS:
|
||||
if error_code >= ci.TSI_SUCCESS:
|
||||
return False
|
||||
result = TSI_MISC_GetErrorDescription(error_code)
|
||||
if result[0] < TSI_SUCCESS:
|
||||
if result[0] < ci.TSI_SUCCESS:
|
||||
val = f"Error {str(error_code)}: (No description available)\n"
|
||||
else:
|
||||
val = f"Error {str(error_code)}: {str(result[1])}\n"
|
||||
@@ -576,7 +600,7 @@ def TSI_MISC_GetErrorDescription(error):
|
||||
return TSIWrapper().TSI_MISC_GetErrorDescription(error)
|
||||
|
||||
|
||||
def TSIX_PORT_Select(device: TSI_HANDLE, port):
|
||||
def TSIX_PORT_Select(device: ci.TSI_HANDLE, port):
|
||||
return TSIWrapper().TSIX_PORT_Select(device, port)
|
||||
|
||||
|
||||
@@ -584,27 +608,27 @@ def TSIX_PORT_Deselect(device, port):
|
||||
return TSIWrapper().TSIX_PORT_Deselect(device, port)
|
||||
|
||||
|
||||
def TSIX_TS_RunTest(device: TSI_HANDLE, test_id: int):
|
||||
def TSIX_TS_RunTest(device: ci.TSI_HANDLE, test_id: int):
|
||||
return TSIWrapper().TSIX_TS_RunTest(device, test_id)
|
||||
|
||||
|
||||
def TSIX_TS_AbortTests(device: TSI_HANDLE):
|
||||
def TSIX_TS_AbortTests(device: ci.TSI_HANDLE):
|
||||
return TSIWrapper().TSIX_TS_AbortTests(device)
|
||||
|
||||
|
||||
def TSIX_PORT_GetTestCount(device: TSI_HANDLE, port: TSI_LOGICAL_PORT):
|
||||
def TSIX_PORT_GetTestCount(device: ci.TSI_HANDLE, port: ci.TSI_TEST_ID):
|
||||
return TSIWrapper().TSIX_PORT_GetTestCount(device, port)
|
||||
|
||||
|
||||
def TSIX_PORT_GetTestInfo(device: TSI_HANDLE, port: TSI_LOGICAL_PORT, test_index: int):
|
||||
def TSIX_PORT_GetTestInfo(device: ci.TSI_HANDLE, port: ci.TSI_TEST_ID, test_index: int):
|
||||
return TSIWrapper().TSIX_PORT_GetTestInfo(device, port, test_index)
|
||||
|
||||
|
||||
def TSIX_STLOG_WaitMessage(device: TSI_HANDLE, max_wait: int):
|
||||
def TSIX_STLOG_WaitMessage(device: ci.TSI_HANDLE, max_wait: int):
|
||||
return TSIWrapper().TSIX_STLOG_WaitMessage(device, max_wait)
|
||||
|
||||
|
||||
def TSIX_STLOG_GetMessageData(device: TSI_HANDLE):
|
||||
def TSIX_STLOG_GetMessageData(device: ci.TSI_HANDLE):
|
||||
return TSIWrapper().TSIX_STLOG_GetMessageData(device)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user