#! /usr/bin/perl -w

use strict;
use IO::Socket;

# TODO: Altitude support in output.
# TODO: Check longtitude vs latitude.

# init host and port
my $host = '127.0.0.1' ;
my $port = 2947 ;
#my $gpsdreq = "pvt\n" ;
#my $gpsdreq = "dmpvta\n" ;
my $gpsdreq = "o\n" ;
my $gpsdres ;
my $timestamp=time() ;

while (1) {
	my $sock = new IO::Socket::INET( PeerAddr => $host, PeerPort => $port, Proto => 'tcp');
	$sock or die "no socket: $!";

	$sock->send($gpsdreq) ;
	$sock->recv($gpsdres,128) ;
	chomp $gpsdres;
	close($sock);
	$gpsdres =~ s/[ ]+/ /g ;
	my ($info,$time,undef,$lat,$lon,undef,undef,undef,$head,$speed,undef,undef) = split(/ /,$gpsdres) ;
	open(FILE,">>$timestamp.log") or die "Can not open logfile\n" ;
	print FILE $gpsdres."\n" ;
	close FILE ;
	print "-----------------------\n" ;
	print "Time   : $time\n" ;
	print "Speed  : $speed\n" ;
	print "Lat    : $lat\n" ;
	print "Lon    : $lon\n" ;
	print "Heading: $head\n" ;
	print "-----------------------\n" ;

	sleep 1 ;
}


