[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