[Thumbgps-devel] Article -- Macx-1: GPS receiver with standard USB connector and PPS support
Eric S. Raymond
esr at thyrsus.com
Thu May 10 02:31:25 EDT 2012
Dave Hart <davehart_gmail_exchange_tee at davehart.net>:
> While I appreciate GPSD's flexibility, I advise against exercising it
> needlessly. All of the PPSAPI implementations which support serial
> port control line input that I'm aware of want to see it on the
> carrier detect line. If you know you'll only ever care about using
> the hardware with GPSD, any control line will do for PPS, but to use
> it directly with ntpd, the PPSAPI implementations dictate using the
> DCD line.
>
> I had a vague recollection GPSD could use PPSAPI where it's available.
> If that's true, when GPSD is using PPSAPI, isn't it restricted to
> using carrier detect in practice?
Which line the PPS arrives on is a hardware feature of the GPS completely
decoupled from anything PPSAPI has any control over.
There's no code-complexity cost for being flexible. Here's what the
code looks like:
#define PPS_LINE_TIOC (TIOCM_CD|TIOCM_CAR|TIOCM_RI|TIOCM_CTS)
/*
* Wait for status change on any handshake line. The only assumption here
* is that no GPS lights up more than one of these pins. By waiting on
* all of them we remove a configuration switch.
*/
while (1) {
int ok = 0;
char *log = NULL;
char *log1 = NULL;
if (ioctl(session->gpsdata.gps_fd, TIOCMIWAIT, PPS_LINE_TIOC) != 0) {
gpsd_report(LOG_ERROR, "PPS ioctl(TIOCMIWAIT) failed: %d %.40s\n"
, errno, strerror(errno));
break;
}
That definition of PPS_LINE_TIOC is quite literally the only place in
GPSD where the identity of the PPS pin matters. It used to not include
TIOCM_CTS, but we got a bug report from someone using sonething called
an "Xtreme104 12 port serial board" which actually mungs all the
handshake lines into CTS.
--
<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>
More information about the Thumbgps-devel
mailing list