Skip to content

Commit f5f3e13

Browse files
Tapasztó LejlaTapasztó Lejla
Tapasztó Lejla
authored and
Tapasztó Lejla
committed
hardwear RST on driver close
1 parent 4b1e508 commit f5f3e13

File tree

4 files changed

+24
-14
lines changed

4 files changed

+24
-14
lines changed

libAnt/driver.py

+12-9
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import usb
88

99
from libAnt.constants import MESSAGE_TX_SYNC
10-
from libAnt.message import Message
10+
from libAnt.message import Message, SystemResetMessage
1111

1212

1313
class DriverException(Exception):
@@ -40,7 +40,8 @@ def open(self) -> None:
4040

4141
def close(self) -> None:
4242
with self._lock:
43-
self._close()
43+
if self._isOpen:
44+
self._close()
4445

4546
def reOpen(self) -> None:
4647
with self._lock:
@@ -152,17 +153,15 @@ def __init__(self, vid, pid):
152153
self._packetSize = 0x20
153154
self._queue = None
154155
self._loop = None
156+
self._driver_open = False
155157

156158
def __str__(self):
157159
if self.isOpen():
158160
return str(self._dev)
159161
return "Closed"
160162

161163
def _isOpen(self) -> bool:
162-
if self._dev is not None:
163-
if self._loop is not None:
164-
return self._loop.is_alive()
165-
return False
164+
return self._driver_open
166165

167166
def _open(self) -> None:
168167
print('USB OPEN START')
@@ -207,6 +206,7 @@ def _open(self) -> None:
207206
self._queue = Queue()
208207
self._loop = USBLoop(self._epIn, self._packetSize, self._queue)
209208
self._loop.start()
209+
self._driver_open = True
210210
print('USB OPEN SUCCESS')
211211
except IOError as e:
212212
self._close()
@@ -219,10 +219,13 @@ def _close(self) -> None:
219219
self._loop.stop()
220220
self._loop.join()
221221
self._loop = None
222-
print('USB releasing...')
223-
#usb.util.release_interface(self._dev, self._interfaceNumber)
224-
usb.util.dispose_resources(self._dev)
222+
try:
223+
self._dev.reset()
224+
usb.util.dispose_resources(self._dev)
225+
except:
226+
pass
225227
self._dev = self._epOut = self._epIn = None
228+
self._driver_open = False
226229
print('USB CLOSE END')
227230

228231
def _read(self, count: int) -> bytes:

libAnt/message.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def __init__(self):
8282

8383

8484
class SetNetworkKeyMessage(Message):
85-
def __init__(self, channel: int, key: bytes):
85+
def __init__(self, channel: int, key: bytes = ANTPLUS_NETWORK_KEY):
8686
content = bytearray([channel])
8787
content.extend(key)
8888
super().__init__(MESSAGE_NETWORK_KEY, bytes(content))

libAnt/node.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ def run(self):
3737
while not self.stopped():
3838
try:
3939
with self._driver as d:
40-
# Init
40+
# Startup
41+
rst = SystemResetMessage()
42+
self._waiters.append(rst)
43+
d.write(rst)
4144
for m in self._initMessages:
4245
self._waiters.append(m)
4346
d.write(m)

test.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
from time import sleep
33

44
from libAnt.driver import USBDriver
5-
from libAnt.node import Node
5+
from libAnt.message import SetNetworkKeyMessage
6+
from libAnt.node import Node, SystemResetMessage
7+
68

79
def callback(msg):
810
print(msg)
@@ -12,7 +14,9 @@ def callback(msg):
1214
def eCallback(e):
1315
print('Error: ' + str(e))
1416

15-
with Node(USBDriver(vid=0x0FCF, pid=0x1008), 'MyNode') as n:
17+
18+
driver = USBDriver(vid=0x0FCF, pid=0x1008)
19+
with Node(driver, 'MyNode') as n:
1620
n.enableRxScanMode()
1721
n.start(callback, eCallback)
18-
sleep(5)
22+
sleep(10)

0 commit comments

Comments
 (0)