diff options
-rw-r--r-- | HACKING | 3 | ||||
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | contrib/README | 6 | ||||
-rw-r--r-- | contrib/sirf.box | 492 | ||||
-rw-r--r-- | sirfmon.c | 92 | ||||
-rw-r--r-- | xgps.c | 4 |
6 files changed, 58 insertions, 543 deletions
@@ -166,7 +166,4 @@ how we detect SiRF chips (see step 5 under autoconfiguration above). And more... If you're looking for things to hack on, first see the TODO file. -Then, there is some C code in the contrib/ directory that has some -potentially useful techniques in it. Picking a good one to integrate -into gpsd might be a useful thing. @@ -1,7 +1,3 @@ -** Display EPE and DOP in xgps - -We should show posiion uncertainty as well as position in the test client. - ** Detect a Garmin USB device According to Hermann Kneissel: diff --git a/contrib/README b/contrib/README deleted file mode 100644 index 404f8571..00000000 --- a/contrib/README +++ /dev/null @@ -1,6 +0,0 @@ -This directory contains various pieces of code for talking to GPSses -that have been contributed to gpsd. - -Someday, ideas from this code might make it into gpsd. If you are looking -for things to hack on, picking a useful idea from here and integrating -it would be a good place to start. diff --git a/contrib/sirf.box b/contrib/sirf.box deleted file mode 100644 index 1a2080e7..00000000 --- a/contrib/sirf.box +++ /dev/null @@ -1,492 +0,0 @@ -From lmendez19@austin.rr.com Tue Aug 31 14:03:34 2004 -Return-Path: <lmendez19@austin.rr.com> -Received: from localhost (localhost [127.0.0.1]) - by snark.thyrsus.com (8.12.11/8.12.11) with ESMTP id i7VI3XHC030622 - for <esr@localhost>; Tue, 31 Aug 2004 14:03:34 -0400 -Received: from grelber.thyrsus.com [192.168.1.31] - by localhost with IMAP (fetchmail-6.2.5) - for esr@localhost (single-drop); Tue, 31 Aug 2004 14:03:34 -0400 (EDT) -Received: from ms-smtp-02-eri0.texas.rr.com (ms-smtp-02.texas.rr.com [24.93.47.41]) - by grelber.thyrsus.com (8.12.11/8.12.11) with ESMTP id i7VI2AsC018087 - for <esr@thyrsus.com>; Tue, 31 Aug 2004 14:02:10 -0400 -Received: from jedi (cs679161-75.austin.rr.com [67.9.161.75]) - by ms-smtp-02-eri0.texas.rr.com (8.12.10/8.12.7) with SMTP id i7VHwfHv022431 - for <esr@thyrsus.com>; Tue, 31 Aug 2004 12:58:43 -0500 (CDT) -Message-ID: <000f01c48f84$2cfeaf00$0500a8c0@jedi> -From: "Lonnie Mendez" <lmendez19@austin.rr.com> -To: <esr@thyrsus.com> -References: <20040831110333.GE16228@us.netrek.org> <20040831164431.GB14818@thyrsus.com> -Subject: Re: [Gpsd-dev] CS7 or CS8 -Date: Tue, 31 Aug 2004 12:58:50 -0500 -MIME-Version: 1.0 -Content-Type: multipart/mixed; - boundary="----=_NextPart_000_000C_01C48F5A.42AFE9B0" -X-Priority: 3 -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook Express 6.00.2900.2180 -X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 -X-Virus-Scanned: Symantec AntiVirus Scan Engine -X-Bogosity: No, tests=bogofilter, spamicity=0.000000, version=0.16.4 -X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on snark.thyrsus.com -X-Spam-Level: -X-Spam-Status: No, hits=-3.8 required=5.0 tests=BAYES_00,FROM_ENDS_IN_NUMS, - RCVD_IN_SORBS autolearn=no version=2.63 -Status: RO -Content-Length: 33325 -Lines: 454 - -This is a multi-part message in MIME format. - -------=_NextPart_000_000C_01C48F5A.42AFE9B0 -Content-Type: text/plain; - format=flowed; - charset="iso-8859-1"; - reply-type=original -Content-Transfer-Encoding: 7bit - - I just got back from having surgery, so please forgive my english..etc. - - I have some code I've been using to message around with my usb earthmate -in sirf binary protocol mode.... I thought it might be of some use for you -and the project. The code is definitely not a good example in programming -style and tactics, but it should allow for messing around with the device -and enabling/disabling nmea messages, setting power rate, etc (ephemeris and -almanac not supported). Since I have not used this in soo long and have no -plans for using it later, I might as well contribute it... another example -of sirf handling would be the Janszoon sirf library, which uses wgs84 for -lla to xyz datum calculations. It can be found at freshmeat.net. The sirf -lib is attached to this message. I can imagine, if this were to be made -functional, using it for obtaining sirf data for the gpstk library would be -the most practical use...as they spent well over a million dollars to -develop the library! - -Datasheet for SiRF binary protocol I used here (General Downloads->GPS): -http://www.rayming.com/downloads.asp#7 - -Best regards, - Lonnie Mendez - - - -------=_NextPart_000_000C_01C48F5A.42AFE9B0 -Content-Type: application/octet-stream; - name="libsirf-devel-0.1.tar.bz2" -Content-Transfer-Encoding: base64 -Content-Disposition: attachment; - filename="libsirf-devel-0.1.tar.bz2" - -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 - -------=_NextPart_000_000C_01C48F5A.42AFE9B0-- - @@ -75,7 +75,7 @@ int sendpkt (unsigned char *buf,int len); int readpkt (unsigned char *buf); static struct termios ttyset; -static WINDOW *sat_win; +static WINDOW *fix_win, *sat_win, *right_win; #define NO_PACKET 0 #define SIRF_PACKET 1 @@ -249,34 +249,51 @@ int main (int argc, char **argv) scrollok(stdscr,TRUE); setscrreg(DEBUGWIN,LINES - 1); - sat_win = subwin(stdscr, 13, 30, 9, 0); + fix_win = subwin(stdscr, 5, 78, 1, 0); + sat_win = subwin(stdscr, 13, 30, 9, 0); + right_win = subwin(stdscr, 13, 47, 9, 31); + + wborder(fix_win, 0, 0, 0, 0, 0, 0, 0, 0), + wattrset(fix_win, A_BOLD); + wmove(fix_win, 0,1); + mvwprintw(fix_win, 0, 12, " X "); + mvwprintw(fix_win, 0, 21, " Y "); + mvwprintw(fix_win, 0, 30, " Z "); + mvwprintw(fix_win, 0, 43, " North "); + mvwprintw(fix_win, 0, 54, " East "); + mvwprintw(fix_win, 0, 67, " Alt "); + + // wprintw(fix_win, " X Y Z North East Alt"); + wmove(fix_win, 1,1); + wprintw(fix_win, "Pos: m deg m"); + wmove(fix_win, 2,1); + wprintw(fix_win, "Vel: m/s m/s"); + wmove(fix_win, 3,1); + wprintw(fix_win, "Time: UTC: Heading: deg m/s"); + wattrset(fix_win, A_NORMAL); attrset(A_BOLD); - move(1,1); - printw(" X Y Z North East Alt"); - move(2,1); - printw("Pos: m deg m"); - move(3,1); - printw("Vel: m/s m/s"); - move(4,1); - printw("Time: UTC: Heading: deg m/s"); move(6,1); printw("DOP: M1: M2: Fix: "); move(7,1); printw("Max: Lat: Avg: MS:"); move(17, 40); - printw("RS232:"); - move(18, 40); - printw("Version:"); attrset(A_NORMAL); + wattrset(right_win, A_BOLD); + mvwprintw(right_win, 1, 1, "RS232:"); + mvwprintw(right_win, 2, 1, "Version:"); + wattrset(right_win, A_NORMAL); + wborder(right_win, 0, 0, 0, 0, 0, 0, 0, 0), + wattrset(sat_win, A_BOLD); wprintw(sat_win, "Ch SV Az El Stat C/N"); for (i = 0; i < 12; i++) { mvwprintw(sat_win, i+1, 0, "%2d",i); } wattrset(sat_win, A_NORMAL); - mvprintw(17, 50, "%4d N %d", bps, stopbits); + + mvwprintw(right_win, 1, 10, "%4d N %d", bps, stopbits); move(DEBUGWIN,0); getyx(stdscr,debugy,debugx); @@ -295,6 +312,8 @@ int main (int argc, char **argv) clrtoeol(); refresh(); wrefresh(sat_win); + wrefresh(right_win); + wrefresh(fix_win); FD_SET(0,&select_set); FD_SET(LineFd,&select_set); @@ -312,6 +331,8 @@ int main (int argc, char **argv) clrtoeol(); refresh(); wrefresh(sat_win); + wrefresh(right_win); + wrefresh(fix_win); if ((p = strchr(line,'\r')) != NULL) *p = '\0'; @@ -433,10 +454,10 @@ int len; switch (buf[0]) { case 0x02: /* Measured Navigation Data */ - move(2,6); - printw("%8d %8d %8d",getl(1),getl(5),getl(9)); - move(3,6); - printw("%8.1f %8.1f %8.1f", + wmove(fix_win, 1,6); + wprintw(fix_win, "%8d %8d %8d",getl(1),getl(5),getl(9)); + wmove(fix_win, 2,6); + wprintw(fix_win, "%8.1f %8.1f %8.1f", (float)getw(13)/8,(float)getw(15)/8,(float)getw(17)/8); decode_ecef((double)getl(1),(double)getl(5),(double)getl(9), (float)getw(13)/8,(float)getw(15)/8,(float)getw(17)/8); @@ -511,8 +532,7 @@ int len; break; case 0x06: /* firmware version */ - move(18,50); - printw("%s",buf + 1); + mvwprintw(right_win, 2, 10, "%s",buf + 1); break; case 0x07: @@ -688,10 +708,10 @@ void decode_time(int week, int tow) m = (m - s) / 6000; - move(4,7); - printw("%4d+%9.2f", week, (double)tow/100); - move(4, 29); - printw("%d %02d:%02d:%05.2f", day, h,m,(float)s/100); + wmove(fix_win, 3,7); + wprintw(fix_win, "%4d+%9.2f", week, (double)tow/100); + wmove(fix_win, 3, 29); + wprintw(fix_win, "%d %02d:%02d:%05.2f", day, h,m,(float)s/100); } void @@ -720,20 +740,20 @@ double x,y,z,vx,vy,vz; if (heading < 0) heading += 6.283185307; - move(2,40); - printw("%9.5f %9.5f",57.29577795*phi,57.29577795*lambda); - move(2,63); - printw("%8d",(int)h); + wmove(fix_win, 1,40); + wprintw(fix_win, "%9.5f %9.5f",57.29577795*phi,57.29577795*lambda); + wmove(fix_win, 1,63); + wprintw(fix_win, "%8d",(int)h); - move(3,40); - printw("%9.1f %9.1f",vnorth,veast); - move(3,63); - printw("%8.1f",vup); + wmove(fix_win, 2,40); + wprintw(fix_win, "%9.1f %9.1f",vnorth,veast); + wmove(fix_win, 2,63); + wprintw(fix_win, "%8.1f",vup); - move(4,54); - printw("%5.1f",57.29577795*heading); - move(4,63); - printw("%8.1f",speed); + wmove(fix_win, 3,54); + wprintw(fix_win, "%5.1f",57.29577795*heading); + wmove(fix_win, 3,63); + wprintw(fix_win, "%8.1f",speed); if (logfile != NULL) fprintf(logfile,"%d\t%d\t%d\t%d\t%f\t%f\t%.2f\n", @@ -246,12 +246,12 @@ static void update_panel(char *message) while (isspace(*(sp = message + strlen(message) - 1))) *sp = '\0'; XmTextFieldSetString(status, message); - string[0] = XmStringCreateSimple("PRN: Elev: Azim: SNR: Used:"); + string[0] = XmStringCreateSimple("PRN: Elev: Azim: SNR: Used:"); /* This is for the satellite status display */ if (SEEN(gpsdata->satellite_stamp)) { for (i = 0; i < MAXCHANNELS; i++) { if (i < (unsigned int)gpsdata->satellites) { - sprintf(s, " %2d %02d %03d %02d %c", + sprintf(s, " %3d %02d %03d %02d %c", gpsdata->PRN[i], gpsdata->elevation[i], gpsdata->azimuth[i], gpsdata->ss[i], gpsdata->used[i] ? 'Y' : 'N' |