summaryrefslogtreecommitdiff
path: root/gpsfake
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2005-06-22 17:12:03 +0000
committerEric S. Raymond <esr@thyrsus.com>2005-06-22 17:12:03 +0000
commit78b24c3dcb50fdfa39779f9594b647b7f1f97638 (patch)
tree8cf8814cd4da668f8ea661348579ce03c13cc7e3 /gpsfake
parentf4d9c4b450e81bc65e3c3e14bdad128675fcf94a (diff)
downloadgpsd-78b24c3dcb50fdfa39779f9594b647b7f1f97638.tar.gz
Gather more gpsfake logic into classes.
Diffstat (limited to 'gpsfake')
-rwxr-xr-xgpsfake59
1 files changed, 29 insertions, 30 deletions
diff --git a/gpsfake b/gpsfake
index 33094fb1..589ab0a8 100755
--- a/gpsfake
+++ b/gpsfake
@@ -104,26 +104,11 @@ class TestLoad:
else:
raise PacketError("unknown packet type, leader %s, (0x%x)" % (first, ord(first)))
-def fakehook(linenumber, fakegps):
- if linenumber % len(fakegps.testload.sentences) == 0:
- if pipe and linenumber > 0:
- return False
- if not pipe:
- sys.stderr.write("gpsfake: log cycle begins.\n")
- time.sleep(cycle)
- if linedump:
- if fakegps.testload.textual:
- ml = fakegps.testload.sentences[linenumber % len(fakegps.testload.sentences)].strip()
- else:
- ml = ""
- print fakegps.testload.legend % (linenumber % len(fakegps.testload.sentences) + 1) + ml
- if pipe:
- baton.twirl()
- return True
-
class FakeGPS:
- "Class encapsulating a pty with a gest load attached to it."
+ "Class encapsulating a pty with a test load attached to it."
def __init__(self, logfp, rate):
+ if type(logfp) == type(""):
+ logfp = open(logfp, "r");
self.testload = TestLoad(logfp)
(self.master_fd, self.slave_fd) = pty.openpty()
self.slave = os.ttyname(self.slave_fd)
@@ -160,6 +145,24 @@ class FakeGPS:
return True
# Main sequence
+
+def fakehook(linenumber, fakegps):
+ if linenumber % len(fakegps.testload.sentences) == 0:
+ if pipe and linenumber > 0:
+ return False
+ if not pipe:
+ sys.stderr.write("gpsfake: log cycle begins.\n")
+ time.sleep(cycle)
+ if linedump:
+ if fakegps.testload.textual:
+ ml = fakegps.testload.sentences[linenumber % len(fakegps.testload.sentences)].strip()
+ else:
+ ml = ""
+ print fakegps.testload.legend % (linenumber % len(fakegps.testload.sentences) + 1) + ml
+ if pipe:
+ baton.twirl()
+ return True
+
(options, arguments) = getopt.getopt(sys.argv[1:], "c:D:ghlo:ps:v")
cycle = 1
gdb = False
@@ -200,29 +203,25 @@ except AttributeError:
# First step: grab packets from the specified input source
# and turn them into an internal sentence list. Croak if this fails.
try:
- logfp = open(logfile, "r")
-except IOError, OSError:
- sys.stderr.write("gsfake: no such file, or file unreadable\n")
- raise SystemExit, 1
-if verbose:
- sys.stderr.write("gpsfake: interpreting as %s packets\n" % testload.packtype)
-
-# Second step: Prepare to launch the daemon, creating the pty to feed it with.
-try:
- fakegps = FakeGPS(logfp, rate)
+ fakegps = FakeGPS(logfile, rate)
except PacketError, e:
- sys.stderr.write(`e.msg` + "\n")
+ sys.stderr.write("gsfake: " + e.msg + "\n")
+ raise SystemExit, 1
+except IOError:
+ sys.stderr.write("gsfake: no such file as %s or file unreadable\n"%logfile)
raise SystemExit, 1
except OSError:
sys.stderr.write("gpsfake: can't open pty.\n")
raise SystemExit, 1
+if verbose:
+ sys.stderr.write("gpsfake: interpreting as %s packets\n" % testload.packtype)
pidfile = "/tmp/gpsfake_pid-%s" % os.getpid()
spawncmd = "gpsd -N -P %s %s %s" % (pidfile, doptions, fakegps.slave)
spawncmd = spawncmd.strip()
if gdb:
spawncmd = "gdb --args " + spawncmd
-# Third step: Launch the daemon and the thread to monitor it
+# Next step: Launch the daemon and the thread to monitor it
child = os.fork()
if child:
# Parent side