mirror of
https://github.com/espressif/openthread.git
synced 2026-07-29 07:07:47 +00:00
Add timeout parameter to NodeAPI's ping function (#1440)
* Added timeout variable to API's ping function (WIN only).
This commit is contained in:
committed by
Jonathan Hui
parent
5cd94ef937
commit
83918bc76f
@@ -328,7 +328,7 @@ OTNODEAPI const char* OTCALL otNodeScan(otNode* aNode);
|
||||
/**
|
||||
* Performs an scan for the node
|
||||
*/
|
||||
OTNODEAPI uint32_t OTCALL otNodePing(otNode* aNode, const char *aAddr, uint16_t aSize, uint32_t aMinReplies);
|
||||
OTNODEAPI uint32_t OTCALL otNodePing(otNode* aNode, const char *aAddr, uint16_t aSize, uint32_t aMinReplies, uint16_t aTimeout);
|
||||
|
||||
/**
|
||||
* Sets the router selection jitter value for a node
|
||||
|
||||
@@ -1728,7 +1728,7 @@ OTNODEAPI const char* OTCALL otNodeScan(otNode* aNode)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
OTNODEAPI uint32_t OTCALL otNodePing(otNode* aNode, const char *aAddr, uint16_t aSize, uint32_t aMinReplies)
|
||||
OTNODEAPI uint32_t OTCALL otNodePing(otNode* aNode, const char *aAddr, uint16_t aSize, uint32_t aMinReplies, uint16_t aTimeout)
|
||||
{
|
||||
otLogFuncEntryMsg("[%d] %s (%d bytes)", aNode->mId, aAddr, aSize);
|
||||
printf("%d: ping %s (%d bytes)\r\n", aNode->mId, aAddr, aSize);
|
||||
@@ -1846,7 +1846,8 @@ OTNODEAPI uint32_t OTCALL otNodePing(otNode* aNode, const char *aAddr, uint16_t
|
||||
{
|
||||
//printf("waiting for completion event...\r\n");
|
||||
// Wait for the receive to complete
|
||||
result = WSAWaitForMultipleEvents(1, &Overlapped.hEvent, TRUE, (DWORD)(5000 - (GetTickCount64() - StartTick)), TRUE);
|
||||
ULONGLONG elapsed = (GetTickCount64() - StartTick);
|
||||
result = WSAWaitForMultipleEvents(1, &Overlapped.hEvent, TRUE, (DWORD)(aTimeout - min(aTimeout, elapsed)), TRUE);
|
||||
if (result == WSA_WAIT_TIMEOUT)
|
||||
{
|
||||
//printf("recv timeout\r\n");
|
||||
|
||||
@@ -217,8 +217,8 @@ class Node:
|
||||
def scan(self):
|
||||
return self.interface.scan()
|
||||
|
||||
def ping(self, ipaddr, num_responses=1, size=None):
|
||||
return self.interface.ping(ipaddr, num_responses, size)
|
||||
def ping(self, ipaddr, num_responses=1, size=None, timeout=5000):
|
||||
return self.interface.ping(ipaddr, num_responses, size, timeout)
|
||||
|
||||
def set_router_selection_jitter(self, jitter):
|
||||
self.interface.set_router_selection_jitter(jitter)
|
||||
|
||||
@@ -235,10 +235,11 @@ class otApi:
|
||||
def scan(self):
|
||||
return self.Api.otNodeScan(self.otNode).decode("utf-8").split("\n")
|
||||
|
||||
def ping(self, ipaddr, num_responses=1, size=None):
|
||||
def ping(self, ipaddr, num_responses=1, size=None, timeout=5000):
|
||||
if size == None:
|
||||
size = 100
|
||||
numberOfResponders = self.Api.otNodePing(self.otNode, ipaddr.encode('utf-8'), ctypes.c_ushort(size), ctypes.c_uint(num_responses))
|
||||
numberOfResponders = self.Api.otNodePing(self.otNode, ipaddr.encode('utf-8'), ctypes.c_ushort(size),
|
||||
ctypes.c_uint(num_responses), ctypes.c_uint16(timeout))
|
||||
return numberOfResponders >= num_responses
|
||||
|
||||
def set_router_selection_jitter(self, jitter):
|
||||
@@ -533,7 +534,8 @@ class otApi:
|
||||
self.Api.otNodePing.argtypes = [ctypes.c_void_p,
|
||||
ctypes.c_char_p,
|
||||
ctypes.c_ushort,
|
||||
ctypes.c_uint]
|
||||
ctypes.c_uint,
|
||||
ctypes.c_uint16]
|
||||
self.Api.otNodePing.restype = ctypes.c_uint
|
||||
|
||||
self.Api.otNodeSetRouterSelectionJitter.argtypes = [ctypes.c_void_p,
|
||||
|
||||
@@ -429,7 +429,7 @@ class otCli:
|
||||
|
||||
return results
|
||||
|
||||
def ping(self, ipaddr, num_responses=1, size=None):
|
||||
def ping(self, ipaddr, num_responses=1, size=None, timeout=5000):
|
||||
cmd = 'ping ' + ipaddr
|
||||
if size != None:
|
||||
cmd += ' ' + str(size)
|
||||
|
||||
Reference in New Issue
Block a user