本文整理汇总了Python中gdb_websocket.GDBWebSocket.setBlocking方法的典型用法代码示例。如果您正苦于以下问题:Python GDBWebSocket.setBlocking方法的具体用法?Python GDBWebSocket.setBlocking怎么用?Python GDBWebSocket.setBlocking使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gdb_websocket.GDBWebSocket
的用法示例。
在下文中一共展示了GDBWebSocket.setBlocking方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GDBServer
# 需要导入模块: from gdb_websocket import GDBWebSocket [as 别名]
# 或者: from gdb_websocket.GDBWebSocket import setBlocking [as 别名]
class GDBServer(threading.Thread):
"""
This class start a GDB server listening a gdb connection on a specific port.
It implements the RSP (Remote Serial Protocol).
"""
def __init__(self, board, port_urlWSS, options = {}):
threading.Thread.__init__(self)
self.board = board
self.target = board.target
self.flash = board.flash
self.abstract_socket = None
self.wss_server = None
self.port = 0
if isinstance(port_urlWSS, str) == True:
self.wss_server = port_urlWSS
else:
self.port = port_urlWSS
self.break_at_hardfault = bool(options.get('break_at_hardfault', True))
self.packet_size = 2048
self.flashData = list()
self.flashOffset = None
self.conn = None
self.lock = threading.Lock()
self.shutdown_event = threading.Event()
self.detach_event = threading.Event()
self.quit = False
if self.wss_server == None:
self.abstract_socket = GDBSocket(self.port, self.packet_size)
else:
self.abstract_socket = GDBWebSocket(self.wss_server)
self.setDaemon(True)
self.start()
def restart(self):
if self.isAlive():
self.detach_event.set()
def stop(self):
if self.isAlive():
self.shutdown_event.set()
while self.isAlive():
pass
logging.info("GDB server thread killed")
self.board.uninit()
def setBoard(self, board, stop = True):
self.lock.acquire()
if stop:
self.restart()
self.board = board
self.target = board.target
self.flash = board.flash
self.lock.release()
return
def run(self):
while True:
new_command = False
data = ""
logging.info('GDB server started at port:%d',self.port)
self.shutdown_event.clear()
self.detach_event.clear()
while not self.shutdown_event.isSet() and not self.detach_event.isSet():
connected = self.abstract_socket.connect()
if connected != None:
break
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
logging.info("One client connected!")
while True:
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
# read command
while True:
if (new_command == True):
new_command = False
break
try:
if self.shutdown_event.isSet() or self.detach_event.isSet():
break
self.abstract_socket.setBlocking(0)
data += self.abstract_socket.read()
if data.index("$") >= 0 and data.index("#") >= 0:
break
except (ValueError, socket.error):
pass
#.........这里部分代码省略.........
示例2: GDBServer
# 需要导入模块: from gdb_websocket import GDBWebSocket [as 别名]
# 或者: from gdb_websocket.GDBWebSocket import setBlocking [as 别名]
class GDBServer(threading.Thread):
"""
This class start a GDB server listening a gdb connection on a specific port.
It implements the RSP (Remote Serial Protocol).
"""
def __init__(self, board, port_urlWSS):
threading.Thread.__init__(self)
self.board = board
self.target = board.target
self.flash = board.flash
self.abstract_socket = None
self.wss_server = None
self.port = 0
if isinstance(port_urlWSS, str) == True:
self.wss_server = port_urlWSS
else:
self.port = port_urlWSS
self.packet_size = 2048
self.flashData = list()
self.flash_watermark = 0
self.conn = None
self.lock = threading.Lock()
self.shutdown_event = threading.Event()
self.detach_event = threading.Event()
self.quit = False
if self.wss_server == None:
self.abstract_socket = GDBSocket(self.port, self.packet_size)
else:
self.abstract_socket = GDBWebSocket(self.wss_server)
self.start()
def restart(self):
if self.isAlive():
self.detach_event.set()
def stop(self):
if self.isAlive():
self.shutdown_event.set()
while self.isAlive():
pass
logging.info("GDB server thread killed")
self.board.uninit()
def setBoard(self, board, stop = True):
self.lock.acquire()
if stop:
self.restart()
self.board = board
self.target = board.target
self.flash = board.flash
self.lock.release()
return
def run(self):
while True:
new_command = False
data = ""
logging.info('GDB server started')
self.shutdown_event.clear()
self.detach_event.clear()
while not self.shutdown_event.isSet() and not self.detach_event.isSet():
connected = self.abstract_socket.connect()
if connected != None:
break
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
logging.info("One client connected!")
while True:
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
# read command
while True:
if (new_command == True):
new_command = False
break
try:
if self.shutdown_event.isSet() or self.detach_event.isSet():
break
self.abstract_socket.setBlocking(0)
data += self.abstract_socket.read()
if data.index("$") >= 0 and data.index("#") >= 0:
break
except (ValueError, socket.error):
pass
if self.shutdown_event.isSet():
return
#.........这里部分代码省略.........
示例3: GDBServer
# 需要导入模块: from gdb_websocket import GDBWebSocket [as 别名]
# 或者: from gdb_websocket.GDBWebSocket import setBlocking [as 别名]
#.........这里部分代码省略.........
if connected != None:
break
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
logging.info("One client connected!")
while True:
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
# read command
while True:
if (new_command == True):
new_command = False
break
# Reduce CPU usage by sleep()ing once we know that the
# debugger doesn't have a queue of commands that we should
# execute as quickly as possible.
if time() - self.timeOfLastPacket > 0.5:
sleep(0.1)
try:
if self.shutdown_event.isSet() or self.detach_event.isSet():
break
self.abstract_socket.setBlocking(0)
data += self.abstract_socket.read().decode()
if data.index("$") >= 0 and data.index("#") >= 0:
break
except (ValueError, socket.error):
pass
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
self.abstract_socket.setBlocking(1)
data = data[data.index("$"):]
self.lock.acquire()
if len(data) != 0:
# decode and prepare resp
[resp, ack, detach] = self.handleMsg(data)
if resp is not None:
# ack
if ack:
resp = "+" + resp
# send resp
self.abstract_socket.write(resp.encode())
# wait a '+' from the client
try:
data = self.abstract_socket.read().decode()
if data[0] != '+':
示例4: GDBServer
# 需要导入模块: from gdb_websocket import GDBWebSocket [as 别名]
# 或者: from gdb_websocket.GDBWebSocket import setBlocking [as 别名]
#.........这里部分代码省略.........
if connected != None:
break
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
logging.info("One client connected!")
while True:
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
# read command
while True:
if (new_command == True):
new_command = False
break
# Reduce CPU usage by sleep()ing once we know that the
# debugger doesn't have a queue of commands that we should
# execute as quickly as possible.
if time() - self.timeOfLastPacket > 0.5:
sleep(0.1)
try:
if self.shutdown_event.isSet() or self.detach_event.isSet():
break
self.abstract_socket.setBlocking(0)
data += self.abstract_socket.read()
if data.index("$") >= 0 and data.index("#") >= 0:
break
except (ValueError, socket.error):
pass
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
self.abstract_socket.setBlocking(1)
data = data[data.index("$"):]
self.lock.acquire()
if len(data) != 0:
# decode and prepare resp
[resp, ack, detach] = self.handleMsg(data)
# Clear out data
data = ""
if resp is not None:
# ack
if ack and self.send_acks:
resp = "+" + resp
# send resp
self.abstract_socket.write(resp)
if self.send_acks:
示例5: GDBServer
# 需要导入模块: from gdb_websocket import GDBWebSocket [as 别名]
# 或者: from gdb_websocket.GDBWebSocket import setBlocking [as 别名]
class GDBServer(threading.Thread):
"""
This class start a GDB server listening a gdb connection on a specific port.
It implements the RSP (Remote Serial Protocol).
"""
def __init__(self, board, port_urlWSS):
threading.Thread.__init__(self)
self.board = board
self.target = board.target
self.flash = board.flash
self.abstract_socket = None
self.wss_server = None
self.port = 0
if isinstance(port_urlWSS, str) == True:
self.wss_server = port_urlWSS
else:
self.port = port_urlWSS
self.packet_size = 2048
self.flashData = list()
self.conn = None
self.lock = threading.Lock()
self.shutdown_event = threading.Event()
self.detach_event = threading.Event()
self.quit = False
if self.wss_server == None:
self.abstract_socket = GDBSocket(self.port, self.packet_size)
else:
self.abstract_socket = GDBWebSocket(self.wss_server)
self.setDaemon(True)
self.start()
def restart(self):
if self.isAlive():
self.detach_event.set()
def stop(self):
if self.isAlive():
self.shutdown_event.set()
while self.isAlive():
pass
logging.info("GDB server thread killed")
self.board.uninit()
def setBoard(self, board, stop=True):
self.lock.acquire()
if stop:
self.restart()
self.board = board
self.target = board.target
self.flash = board.flash
self.lock.release()
return
def run(self):
while True:
new_command = False
data = ""
logging.info("GDB server started")
self.shutdown_event.clear()
self.detach_event.clear()
while not self.shutdown_event.isSet() and not self.detach_event.isSet():
connected = self.abstract_socket.connect()
if connected != None:
break
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
logging.info("One client connected!")
while True:
if self.shutdown_event.isSet():
return
if self.detach_event.isSet():
continue
# read command
while True:
if new_command == True:
new_command = False
break
try:
if self.shutdown_event.isSet() or self.detach_event.isSet():
break
self.abstract_socket.setBlocking(0)
data += self.abstract_socket.read()
if data.index("$") >= 0 and data.index("#") >= 0:
break
except (ValueError, socket.error):
pass
if self.shutdown_event.isSet():
#.........这里部分代码省略.........