In an ISR, I set a boolean Flag, i.e. self.connected, and then in a function I tight-loop waiting for this flag to be set:
Code: Select all
While not self.connected:
pass
do something when connected
Code: Select all
While not self.connected:
pass
do something when connected
Code: Select all
Class Peripheral:
...
def connect(self,mswait=2000):
if not self._connected:
self._central._connecting_peripherals[(self._addr_type, self._addr)] = self
self._central._ble.gap_connect(self._addr_type, self._addr)
now = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(),now) < mswait:
if self._connected: break
return self._connected
## Central Interrupt - Called
def connected(self):
self._connected = True
Technically that's a synchronous connect, but yes, definitely useful!
Code: Select all
h1 = j.Dev(b"\xcb\xd0\xc5\x0c'\xbd")
import time
while True:
h1.connect()
time.sleep(1)
h1.disconnect()
time.sleep(1)
Code: Select all
if event == _IRQ_PERIPHERAL_DISCONNECT:
if data[0] == 65535:
return print('@@@ERROR')
Code: Select all
connected 64
True
True
disconnected 64
connected 64
True
True
disconnected 64
connected 64
True
True
disconnected 64
@@@ERROR
False
False
connected 64
True
True
disconnected 64
connected 64