aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/armdebug/nxt-python-fantom/nxt/locator.py
diff options
context:
space:
mode:
authorTat-Chee Wan (USM)2011-03-01 17:01:37 +0800
committerTat-Chee Wan (USM)2011-03-01 17:01:37 +0800
commita85e78c4532ad1e9d7c8282334280db5e700b7f0 (patch)
treecfcbf734bb146b8531304e912d91114e914ff831 /AT91SAM7S256/armdebug/nxt-python-fantom/nxt/locator.py
parenteae3f8bdb3de377d5e303bffb84238f0d86beee2 (diff)
parent2234d3c1cae095a3a450e7c5bbf0c7b89bb6c346 (diff)
Merge branch 'master' of ssh://svc.cs.usm.my/~/gitrepo-bare/armdebug
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