---
name: "Net::GPSD3"
section: "3pm"
platform: "linux"
package: "libnet-gpsd3-perl"
version: "0.19-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Net::GPSD3"
---

# Net::GPSD3(3pm)

Interface to the gpsd server daemon protocol versions 3 (JSON).

## NAME

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

## SYNOPSIS

### Watch Interface

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

One Liner

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

### Poll Interface

```
  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
```

### POE Interface

See Net::GPSD3::POE

## 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.

## 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
```

## 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\_handler

### socket

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.

## 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
```

## SUPPORT

DavisNetworks.com supports all Perl applications including this package.

Try gpsd-dev email list

## AUTHOR

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

## COPYRIGHT

This program is free software licensed under the...

```
  The BSD License
```

The full text of the license can be found in the LICENSE file included with this module.

## SEE ALSO

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