summaryrefslogtreecommitdiff
path: root/gpscat
diff options
context:
space:
mode:
authorGreg Troxel <gdt@ir.bbn.com>2009-12-02 15:47:06 +0000
committerGreg Troxel <gdt@ir.bbn.com>2009-12-02 15:47:06 +0000
commit96d59fdac2b9eee55171ade78a729331a9f92197 (patch)
treea62c813a44d9e3e3ba218750adba8b017bbd77a1 /gpscat
parent36d56a924abac976402b0ef0b72703009ab649b6 (diff)
downloadgpsd-96d59fdac2b9eee55171ade78a729331a9f92197.tar.gz
Substitute $PYTHON instead of assuming 'python' is python.
Now 'make check' runs on NetbSD, and $(prefix)/bin/gpsfake works.
Diffstat (limited to 'gpscat')
-rwxr-xr-xgpscat129
1 files changed, 0 insertions, 129 deletions
diff --git a/gpscat b/gpscat
deleted file mode 100755
index 155abe70..00000000
--- a/gpscat
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/env python
-#
-# Display GPS output. Hexify it if necessary.
-#
-import os, sys, termios, select, getopt, curses.ascii
-import gpspacket
-
-# The spec says 82, but some receivers (TN-200, GSW 2.3.2) output 86 characters
-NMEA_MAX = 86
-
-# Lowest debug level at which packet getter begins to emit messages, minus one
-BASELEVEL = gpspacket.LOG_IO
-
-highhalf_latch = True
-
-def hexdump(str):
- dmp = ""
- for (i, ch) in enumerate(str):
- if curses.ascii.isprint(ord(ch)) or curses.ascii.isspace(ord(ch)):
- dmp += ch
- else:
- dmp += "\\x%02x" % ord(ch)
- return dmp
-
-debuglevel = 0
-
-def reporter(errlevel, msg):
- if errlevel <= debuglevel:
- sys.stdout.write(msg)
-
-if __name__ == '__main__':
- buf = ""
- try:
- try:
- (options, arguments) = getopt.getopt(sys.argv[1:], "hps:tv:V")
- except getopt.GetoptError, msg:
- print "gpscat: " + str(msg)
- raise SystemExit, 1
-
- speed = None
- parity = None
- stopbits = None
- rawmode = True
- typeflag = False
- for (switch, val) in options:
- if switch == '-p':
- rawmode = False
- elif switch == '-s':
- if val[-2] in ('N', 'E', 'O'):
- parity = val[-2]
- stopbits = int(val[-1])
- val = val[:-2]
- speed = int(val)
- elif switch == '-t':
- typeflag = True
- rawmode = False
- elif switch == '-v':
- debuglevel = BASELEVEL + int(val)
- elif switch == '-h':
- sys.stderr.write("usage: gpscat [-s speed] serial-port\n")
- raise SystemExit, 0
- elif switch == '-V':
- sys.stderr.write("gpscat at svn revision $Rev$\n")
- raise SystemExit, 0
-
- tty = os.open(arguments[0], os.O_RDWR)
- if speed != None:
- (iflag, oflag, cflag, lflag, ispeed, ospeed, cc) = termios.tcgetattr(tty)
- try:
- ispeed = ospeed = eval("termios.B%d" % speed)
- except AttributeError:
- sys.stderr.write("gpscat: unknown baud rate %d\n" % speed)
- raise SystemExit, 1
- if stopbits:
- cflag &= ~termios.CSIZE
- cflag |= (termios.CS8, termios.CS7)[stopbits-1]
- if parity:
- if parity == 'N':
- iflag &= ~termios.PARENB
- iflag &= ~termios.INPCK
- elif parity == 'O':
- iflag |= termios.INPCK
- cflag |= termios.PARENB
- cflag |= termios.PARODD
- elif parity == 'E':
- iflag |= termios.INPCK
- cflag |= termios.PARENB
- cflag &= ~termios.PARODD
- termios.tcsetattr(tty, termios.TCSANOW,
- [iflag, oflag, cflag, lflag, ispeed, ospeed, cc])
-
- poller = select.poll()
- poller.register(tty, select.POLLIN)
-
- buf = ""
- if not rawmode:
- getter = gpspacket.new()
- gpspacket.register_report(reporter)
- seqno = 0
- while True:
- (fd, event) = poller.poll()[0]
- if fd == tty and event == select.POLLIN:
- if rawmode:
- buf += os.read(tty, NMEA_MAX)
- sys.stdout.write(hexdump(buf))
- buf = ""
- else:
- (length, ptype, packet) = getter.get(tty)
- seqno += 1
- # Don't crap out if the first packet is bad, we might
- # be seeing an incomplete read from a tty.
- if ptype == gpspacket.BAD_PACKET and seqno >= 2:
- if debuglevel >= BASELEVEL:
- sys.stdout.write("gpscat: terminating on bad packet\n")
- break
- elif length == 0:
- break
- if typeflag:
- sys.stdout.write(`ptype` + " (" + `length` + "): " + hexdump(packet))
- sys.stdout.write("\n")
- else:
- sys.stdout.write(hexdump(packet) + "\n")
- except KeyboardInterrupt:
- if rawmode:
- sys.stdout.write("\n")
- raise SystemExit, 0
-
-
-