9 from ctrlxdatalayer.clib_bulk
import (C_DLR_BULK, C_BulkRequest,
11 from ctrlxdatalayer.clib_variant
import C_DLR_VARIANT
19 __slots__ = [
'__address',
'__data']
21 def __init__(self, addr: str, data: Variant):
23 init Request parameters
25 self.
__address__address = addr.encode(
'utf-8')
26 self.
__data__data =
None if data
is None else data.get_handle()
30 use the python context manager
34 def __exit__(self, exc_type, exc_val, exc_tb):
36 use the python context manager
51 str: Address of the request
60 C_DLR_VARIANT: Input data of the request
65 def _bulkDelete(bulk: C_DLR_BULK):
69 bulk (C_DLR_BULK): Reference to the bulk
71 ctrlxdatalayer.clib.libcomm_datalayer.DLR_bulkDelete(bulk)
74 def _bulkCreate(size: int) -> C_DLR_BULK:
78 size (int): size of bulk requests
81 C_DLR_BULK: Reference to the bulk
83 return ctrlxdatalayer.clib.libcomm_datalayer.DLR_bulkCreate(
84 ctypes.c_size_t(size))
87 def _bulkSetRequestAddress(bulk: C_DLR_BULK, i: int, addr: bytes) -> Result:
88 """_bulkSetRequestAddress
91 bulk (C_DLR_BULK): Reference to the bulk
96 Result: status of function call
98 return Result(ctrlxdatalayer.clib.libcomm_datalayer.DLR_bulkSetRequestAddress(
99 bulk, ctypes.c_size_t(i), addr))
102 def _bulkSetRequestData(bulk: C_DLR_BULK, i: int, data: C_DLR_VARIANT):
103 """_bulkSetRequestData
106 bulk (C_DLR_BULK): Reference to the bulk
108 data (C_DLR_VARIANT): Argument of read of write data
111 Result: status of function call
113 return Result(ctrlxdatalayer.clib.libcomm_datalayer.DLR_bulkSetRequestData(
114 bulk, ctypes.c_size_t(i), data))
121 __slots__ = [
'__bulk']
123 def __init__(self, reqs: typing.List[_Request]):
128 reqs (typing.List[_Request]): List of request
135 use the python context manager
139 def __exit__(self, exc_type, exc_val, exc_tb):
141 use the python context manager
149 if self.
__bulk__bulk
is None:
151 _bulkDelete(self.
__bulk__bulk)
158 clib_client.C_DLR_BULK: handle value of bulk
162 def __create(self, reqs: typing.List[_Request]):
166 reqs (typing.List[_Request]): List of request
169 clib_client.C_DLR_BULK: handle value of bulk
172 bulk = _bulkCreate(req_len)
176 result = _bulkSetRequestAddress(bulk, i, r.get_address())
177 if result != Result.OK:
178 print(f
"set address error {result}")
180 if r.get_data()
is not None:
181 result = _bulkSetRequestData(bulk, i, r.get_data())
182 if result != Result.OK:
183 print(f
"set data error {result}")
189 def _createBulkRequest(count: int):
190 """def _createBulkRequest(count: int):
193 count (int): size of bulk requests
196 ctypes.POINTER(C_VecBulkRequest): Reference to the bulk request
198 return ctrlxdatalayer.clib.libcomm_datalayer.DLR_createBulkRequest(ctypes.c_size_t(count))
201 def _deleteBulkRequest(bulk_req):
202 """def _deleteBulkRequest(count: int):
205 ctypes.POINTER(C_VecBulkRequest): Reference to the bulk request
207 ctrlxdatalayer.clib.libcomm_datalayer.DLR_deleteBulkRequest(bulk_req)
214 __slots__ = [
'__bulk_request']
216 def __init__(self, reqs: typing.List[_Request]):
221 reqs (typing.List[_Request]): List of request
223 self.__bulk_request =
None
228 use the python context manager
232 def __exit__(self, exc_type, exc_val, exc_tb):
234 use the python context manager
249 ctypes.POINTER: pointer of C_VecBulkRequest
253 def __create(self, reqs: typing.List[_Request]):
257 reqs (typing.List[_Request]): List of request
260 clib_client.C_DLR_BULK: handle value of bulk
263 bulkreq = _createBulkRequest(req_len)
264 ptr = ctypes.cast(bulkreq[0].request, ctypes.POINTER(
265 C_BulkRequest*req_len))
268 ptr[0][i].address = r.get_address()
269 if r.get_data()
is not None:
ctypes.POINTER(C_VecBulkRequest) get_bulk_request(self)
get_bulk_request
def __exit__(self, exc_type, exc_val, exc_tb)
use the python context manager
def __init__(self, typing.List[_Request] reqs)
init
def __enter__(self)
use the python context manager
def __create(self, typing.List[_Request] reqs)
C_DLR_BULK get_handle(self)
get_handle
def __exit__(self, exc_type, exc_val, exc_tb)
use the python context manager
def __init__(self, str addr, Variant data)
init Request parameters
def __enter__(self)
use the python context manager
bytes get_address(self)
get_address
C_DLR_VARIANT get_data(self)
get_data