AnyEvent-GPSD
view release on metacpan or search on metacpan
=head1 NAME
AnyEvent::GPSD - event based interface to GPSD
=head1 SYNOPSIS
use AnyEvent::GPSD;
=head1 DESCRIPTION
This module is an L<AnyEvent> user, you need to make sure that you use and
run a supported event loop.
This module implements an interface to GPSD (http://gpsd.berlios.de/).
You need to consult the GPSD protocol desription in the manpage to make
better sense of this module.
=head2 METHODS
=over 4
=cut
package AnyEvent::GPSD;
use strict;
no warnings;
use Carp ();
use Errno ();
use Scalar::Util ();
use Geo::Forward ();
use AnyEvent ();
use AnyEvent::Util ();
use AnyEvent::Socket ();
use AnyEvent::Handle ();
our $VERSION = '1.0';
=item $gps = new AnyEvent::GPSD [key => value...]
Creates a (virtual) connection to the GPSD. If the C<"hostname:port">
argument is missing then C<localhost:2947> will be used.
If the connection cannot be established, then it will retry every
second. Otherwise, the connection is put into watcher mode.
You can specify various configuration parameters, most of them callbacks:
=over 4
=item host => $hostname
The host to connect to, default is C<locahost>.
=item port => $port
The port to connect to, default is C<2947>.
=item min_speed => $speed_in_m_per_s
Sets the mininum speed (default: 0) that is considered real for the
purposes of replay compression or estimate. Speeds below this value will
be considered 0.
=item on_error => $cb->($gps)
Called on every connection or protocol failure, reason is in C<$!>
(protocl errors are signalled via EBADMSG). Can be used to bail out if you
are not interested in retries.
=item on_connect => $cb->($gps)
Nornormally used: Called on every successful connection establish.
=item on_response => $cb->($gps, $type, $data, $time)
Not normally used: Called on every response received from GPSD. C<$type>
is the single letter type and C<$data> is the data portion, if
any. C<$time> is the timestamp that this message was received at.
=item on_satellite_info => $cb->($gps, {satellite-info}...)
Called each time the satellite info changes, also on first connect. Each
C<satellite-info> hash contains at least the following members (mnemonic:
all keys have three letters):
C<prn> holds the satellite PRN (1..32 GPS, anything higher is
wASS/EGNOS/MCAS etc, see L<GPS::PRN>).
C<ele>, C<azi> contain the elevation (0..90) and azimuth (0..359) of the satellite.
C<snr> contains the signal strength in decibals (28+ is usually the
minimum value for a good fix).
C<fix> contains either C<1> to indicate that this satellite was used for
the last position fix, C<0> otherwise. EGNOS/WAAS etc. satellites will
always show as C<0>, even if their correction info was used.
The passed hash references are read-only.
=item on_fix => $cb->({point})
Called regularly (usually about once/second), even when there is no
connection to the GPSD (so is useful to update your idea of the current
position). The passed hash reference must I<not> be modified in any way.
If C<mode> is C<2> or C<3>, then the C<{point}> hash contains at least the
( run in 1.068 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )