daemon/binding/python: retry connect for 3 seconds

This commit is contained in:
Matthias Ringwald 2018-11-20 16:30:10 +01:00
parent b1f6df3b39
commit a43b5e8717
2 changed files with 16 additions and 7 deletions

View File

@ -2,6 +2,7 @@ import socket
import struct
import btstack.command_builder
import btstack.event_factory
import time
BTSTACK_SERVER_HOST = "localhost"
BTSTACK_SERVER_TCP_PORT = 13333
@ -27,8 +28,16 @@ class BTstackClient(btstack.command_builder.CommandBuilder):
print("[+] Connect to server on port %u" % BTSTACK_SERVER_TCP_PORT)
self.btstack_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.btstack_server_socket.connect((BTSTACK_SERVER_HOST, BTSTACK_SERVER_TCP_PORT))
# TODO: handle connection failure - e.g. retry for max 5 seconds every seconde
timeout = time.time() + 3
while True:
try:
self.btstack_server_socket.connect((BTSTACK_SERVER_HOST, BTSTACK_SERVER_TCP_PORT))
return True
except socket.error as e:
if time.time() > timeout:
print ("[!] Connection error: %s" % e)
return False
def register_packet_handler(self, callback):
print("[+] Register packet handler")

View File

@ -20,12 +20,12 @@ btstack_server.load()
# btstack_server.set_storage_path("/tmp")
btstack_server.run_tcp()
# Client for BTstack Server
btstack_client = btstack_client.BTstackClient()
# connect to slient, register for HCI packets and power up
btstack_client.connect()
btstack_client.register_packet_handler(packet_handler)
btstack_client.btstack_set_power_mode(1)
btstack_client.run()
ok = btstack_client.connect()
if ok:
btstack_client.register_packet_handler(packet_handler)
btstack_client.btstack_set_power_mode(1)
btstack_client.run()