logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Net::GPSD3 - Interface to the gpsd server daemon protocol versions 3 (JSON).

Author

         Michael R. Davis
         CPAN ID: MRDVT
         STOP, LLC
         domain=>michaelrdavis,tld=>com,account=>perl
         http://www.stopllc.com/

Bugs

       Log on RT and Send to gpsd-dev email list

       There are no two GPS devices that are alike.  Each GPS device has a different GPSD signature as well. If
       your GPS device does not work out of the box with this package, please send me a log of your devices JSON
       sentences.

         echo '?POLL;' | nc 127.0.0.1 2947

         echo '?WATCH={"enable":true,"json":true};' | socat -t10 stdin stdout | nc 127.0.0.1 2947

Constructor

new
       Returns a new Net::GPSD3 object.

         my $gpsd=Net::GPSD3->new;
         my $gpsd=Net::GPSD3->new(host=>"127.0.0.1", port=>2947); #defaults

Description

       Net::GPSD3 provides an object client interface to the gpsd server daemon utilizing the version 3
       protocol. gpsd is an open source GPS daemon from http://www.catb.org/gpsd/  Support for Version 3 of the
       protocol (JSON) was added to the daemon in version 2.90.  If your daemon is before 2.90 (protocol 2.X),
       please use the Net::GPSD package.

Methods

host
       Sets or returns the current gpsd host.

        my $host=$obj->host;

   port
       Sets or returns the current gpsd TCP port.

        my $port=$obj->port;

   poll
       Sends a Poll request to the gpsd server and returns a Net::GPSD3::Return::POLL object. The method also
       populates the cache object with the Net::GPSD3::Return::VERISON and Net::GPSD3::Return::DEVICES objects.

         my $poll=$gpsd->poll; #isa Net::GPSD3::Return::POLL object

       Note: In order to use the poll method consistently you should run the GPSD daemon as a service.  You may
       also need to run the daemon with the "-n" option.

   watch
       Calls all handlers that are registered in the handler method.

         $gpsd->watch;  #will not return unless something goes wrong.

   addHandler
       Adds handlers to the handler list.

         $gpsd->addHandler(\&myHandler);
         $gpsd->addHandler(\&myHandler1, \&myHandler2);

       A handler is a sub reference where the first argument is a Net::GPSD3::Return::* object.

   handlers
       List of handlers that are called in order to process objects from the gpsd wathcer stream.

         my @handler=$gpsd->handlers; #()
         my $handler=$gpsd->handlers; #[]

   cache
       Returns the Net::GPSD3::Cache caching object.

Methods Internal

default_handlersocket
       Returns the cached IO::Socket::INET6 object

         my $socket=$gpsd->socket;  #try to reconnect on failure

   json
       Returns the cached JSON::XS object

   decode
       Returns a perl data structure given a JSON formated string.

         my %data=$gpsd->decode($string); #()
         my $data=$gpsd->decode($string); #{}

   encode
       Returns a JSON string from a perl data structure

   constructor
       Constructs a class object by lazy loading the classes.

         my $obj=$gpsd->constructor(%$data);
         my $obj=$gpsd->constructor(class=>"DEVICE",
                                    string=>'{...}',
                                    ...);

       Returns and object in the Net::GPSD3::Return::* namespace.

Name

       Net::GPSD3 - Interface to the gpsd server daemon protocol versions 3 (JSON).

See Also

       Net::GPSD, Net::GPSD3::POE, GPS::Point, JSON::XS, IO::Socket::INET6, DateTime

perl v5.34.0                                       2022-06-16                                    Net::GPSD3(3pm)

Support

       DavisNetworks.com supports all Perl applications including this package.

       Try gpsd-dev email list

Synopsis

WatchInterface
         use Net::GPSD3;
         my $gpsd=Net::GPSD3->new;
         $gpsd->watch;

       One Liner

         perl -MNet::GPSD3 -e 'Net::GPSD3->new->watch'

   PollInterface
         use Net::GPSD3;
         use Data::Dumper qw{Dumper};
         my $gpsd=Net::GPSD3->new;
         my $poll=$gpsd->poll;
         print Dumper($poll);

       One Liner

         perl -MNet::GPSD3 -e 'printf "Protocol: %s\n", Net::GPSD3->new->poll->parent->cache->VERSION->protocol;'

         Protocol: 3.4

   POEInterface
       See Net::GPSD3::POE

See Also