Skip to content

Commit c5754b8

Browse files
author
Sun Jiayun
committed
add client Call method to support VIOCE service api
1 parent 60e8358 commit c5754b8

2 files changed

Lines changed: 58 additions & 1 deletion

File tree

unitree_sdk2py/rpc/client.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,28 @@ def _CallNoReply(self, apiId: int, parameter: str):
5656
else:
5757
return RPC_ERR_CLIENT_API_NOT_REG
5858

59+
def _CallRequestWithParamAndBin(self, apiId: int, requestParamter: str,
60+
requestBinary: list):
61+
ret, proirity, leaseId = self.__CheckApi(apiId)
62+
if ret == 0:
63+
return self._CallRequestWithParamAndBinBase(apiId, requestParamter,
64+
requestBinary, proirity,
65+
leaseId)
66+
else:
67+
return RPC_ERR_CLIENT_API_NOT_REG, None
68+
69+
def _CallRequestWithParamAndBinNoReply(self, apiId: int, requestParamter: str,
70+
requestBinary: list):
71+
ret, proirity, leaseId = self.__CheckApi(apiId)
72+
if ret == 0:
73+
return self._CallRequestWithParamAndBinNoReplyBase(apiId,
74+
requestParamter,
75+
requestBinary,
76+
proirity,
77+
leaseId)
78+
else:
79+
return RPC_ERR_CLIENT_API_NOT_REG
80+
5981
def _CallBinary(self, apiId: int, parameter: list):
6082
ret, proirity, leaseId = self.__CheckApi(apiId)
6183
if ret == 0:

unitree_sdk2py/rpc/client_base.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,42 @@ def _CallNoReplyBase(self, apiId: int, parameter: str, proirity: int, leaseId: i
5555
return 0
5656
else:
5757
return RPC_ERR_CLIENT_SEND
58-
58+
59+
def _CallRequestWithParamAndBinBase(self, apiId: int, requestParamter: str,
60+
requestBinary: list, proirity: int = 0,
61+
leaseId: int = 0):
62+
header = self.__SetHeader(apiId, leaseId, proirity, False)
63+
request = Request(header, requestParamter, requestBinary)
64+
65+
future = self.__stub.SendRequest(request, self.__timeout)
66+
if future is None:
67+
return RPC_ERR_CLIENT_SEND, None
68+
69+
result = future.GetResult(self.__timeout)
70+
71+
if result.code != FutureResult.FUTURE_SUCC:
72+
self.__stub.RemoveFuture(request.header.identity.id)
73+
code = RPC_ERR_CLIENT_API_TIMEOUT if result.code == FutureResult.FUTUTE_ERR_TIMEOUT else RPC_ERR_UNKNOWN
74+
return code, None
75+
76+
response = result.value
77+
78+
if response.header.identity.api_id != apiId:
79+
return RPC_ERR_CLIENT_API_NOT_MATCH, None
80+
else:
81+
return response.header.status.code, response.data
82+
83+
def _CallRequestWithParamAndBinNoReplyBase(self, apiId: int, requestParamter: str,
84+
requestBinary: list, proirity: int,
85+
leaseId: int):
86+
header = self.__SetHeader(apiId, leaseId, proirity, True)
87+
request = Request(header, requestParamter, request_binary)
88+
89+
if self.__stub.Send(request, self.__timeout):
90+
return 0
91+
else:
92+
return RPC_ERR_CLIENT_SEND
93+
5994
def _CallBinaryBase(self, apiId: int, parameter: list, proirity: int, leaseId: int):
6095
header = self.__SetHeader(apiId, leaseId, proirity, False)
6196
request = Request(header, "", parameter)

0 commit comments

Comments
 (0)