aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/armdebug/nxt-python-fantom/nxt/locator.py
diff options
context:
space:
mode:
Diffstat (limited to 'AT91SAM7S256/armdebug/nxt-python-fantom/nxt/locator.py')
-rw-r--r--AT91SAM7S256/armdebug/nxt-python-fantom/nxt/locator.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/AT91SAM7S256/armdebug/nxt-python-fantom/nxt/locator.py b/AT91SAM7S256/armdebug/nxt-python-fantom/nxt/locator.py
new file mode 100644
index 0000000..4adc680
--- /dev/null
+++ b/AT91SAM7S256/armdebug/nxt-python-fantom/nxt/locator.py
@@ -0,0 +1,57 @@
+# nxt.locator module -- Locate LEGO Minstorms NXT bricks via USB or Bluetooth
+# Copyright (C) 2006, 2007 Douglas P Lau
+# Copyright (C) 2009 Marcus Wanner
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+class BrickNotFoundError(Exception):
+ pass
+
+class NoBackendError(Exception):
+ pass
+
+def find_bricks(host=None, name=None, silent=False):
+ """Used by find_one_brick to look for bricks ***ADVANCED USERS ONLY***"""
+
+ try:
+ import usbsock
+ usb_available = True
+ socks = usbsock.find_bricks(host, name)
+ for s in socks:
+ yield s
+ except ImportError:
+ usb_available = False
+ import sys
+ if not silent: print >>sys.stderr, "USB module unavailable, not searching there"
+
+ try:
+ import bluesock
+ try:
+ socks = bluesock.find_bricks(host, name)
+ for s in socks:
+ yield s
+ except (bluesock.bluetooth.BluetoothError, IOError): #for cases such as no adapter, bluetooth throws IOError, not BluetoothError
+ pass
+ except ImportError:
+ import sys
+ if not silent: print >>sys.stderr, "Bluetooth module unavailable, not searching there"
+ if not usb_available:
+ raise NoBackendError("Neither USB nor Bluetooth could be used! Did you install PyUSB or PyBluez?")
+
+
+def find_one_brick(host=None, name=None, silent=False):
+ """Use to find one brick. After it returns a usbsock object or a bluesock
+object, it automatically connects to it. The host and name args limit
+the search to a given MAC or brick name. Set silent to True to stop
+nxt-python from printing anything during the search."""
+ for s in find_bricks(host, name, silent):
+ return s.connect()
+ raise BrickNotFoundError