diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2005-01-10 20:51:23 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2005-01-10 20:51:23 +0000 |
commit | 1a4dee48a88af1357a3122aa22e6debac0d85c30 (patch) | |
tree | f9db6016524b76f12b3451a6ff0effcb00f1ebe1 | |
parent | 87a7ba0b8e8cbc7808cf31fc76164c5b6d227401 (diff) | |
download | gpsd-1a4dee48a88af1357a3122aa22e6debac0d85c30.tar.gz |
Strange. Some deletes weren't committed. Possible svn bug?
-rw-r--r-- | configure.in | 147 | ||||
-rw-r--r-- | gps.ad | 8 | ||||
-rw-r--r-- | gps.c | 314 | ||||
-rw-r--r-- | gpsd.spec.in | 2 |
4 files changed, 1 insertions, 470 deletions
diff --git a/configure.in b/configure.in deleted file mode 100644 index 3e53743a..00000000 --- a/configure.in +++ /dev/null @@ -1,147 +0,0 @@ -AC_INIT -AM_INIT_AUTOMAKE(gpsd, 2.6) -AC_PREFIX_PROGRAM(gcc) -AM_CONFIG_HEADER(config.h) -AC_LANG([C]) - -AC_PROG_LN_S -AC_PROG_MAKE_SET -AC_PROG_INSTALL -AC_PROG_LIBTOOL -AC_C_BIGENDIAN - -if eval "test x$GCC = xyes"; then - CFLAGS="$CFLAGS -Wall -W -Wcast-align -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wreturn-type" - dnl -Wcast-qual -fi - -AC_CHECK_HEADERS(termios.h sys/termios.h sys/select.h strings.h sys/filio.h sys/time.h X11/xpm.h xpm.h getopt.h sys/modem.h) - -AC_CHECK_LIB(nsl, gethostbyname, LIBNSL="-lnsl") -AC_SUBST(LIBNSL) -AC_CHECK_LIB(socket, socket, LIBSOCKET="-lsocket") -AC_SUBST(LIBSOCKET) -AC_CHECK_LIB(m, rint, LIBM="-lm") -AC_SUBST(LIBM) -AC_CHECK_LIB(c, open, LIBC="-lc") -AC_SUBST(LIBC) - -AH_VERBATIM([_GNU_SOURCE], - [/* Macro for declaring function arguments unused. */ -#if defined(__GNUC__) -# define UNUSED __attribute__((unused)) /* Flag variable as unused */ -#else /* not __GNUC__ */ -# define UNUSED -#endif]) - -dnl Check for X libraries -AC_PATH_XTRA -LIBS="$LIBS $X_EXTRA_LIBS" -CFLAGS="$CFLAGS $X_CFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" -LDFLAGS="$LDFLAGS $X_LIBS" -AC_SUBST(X_LIBS) -AC_SUBST(X11_LIBS) -AC_SUBST(X_PRE_LIBS) - -dnl Check for some auxiliary X libraries we'll need -AC_CHECK_LIB(Xt, XtToolkitInitialize, XT_LIBS="-lXt",, - ${X_PRE_LIBS} ${X11_LIBS}) -AC_SUBST(XT_LIBS) -AC_CHECK_LIB(Xaw, XawInitializeWidgetSet, XAW_LIBS="-lXaw",, - ${X_PRE_LIBS} ${X11_LIBS}) -AC_SUBST(XAW_LIBS) -AC_CHECK_LIB(Xext, XShapeQueryVersion, XEXT_LIBS="-lXext",, - ${X_PRE_LIBS} ${X11_LIBS}) -AC_SUBST(XEXT_LIBS) -AC_CHECK_LIB(Xpm, XpmCreatePixmapFromXpmImage, - XPM_LIBS="-lXpm" - AC_DEFINE([HAVE_XPM],1,[Xpm available]),,${X_PRE_LIBS} ${X11_LIBS}) -AC_SUBST(XPM_LIBS) - -dnl Check for Motif widget libraries -XM_LIBS="" -XP_LIBS="" -if test "$motif_includes" != "no" && test "$motif_libraries" != "no" -then -dnl Motif 2.1 wants `-lXp' (X11R6.3 print server) -AC_CHECK_LIB(Xp, XpSelectInput, - XP_LIBS="-lXp" - AC_DEFINE([HAVE_XP],1,[Xp available]),, - ${X_PRE_LIBS} ${XPM_LIBS} ${XEXT_LIBS} ${XT_LIBS} ${XEXT_LIBS} ${X11_LIBS} ${LIBGEN}) -dnl -AC_CHECK_LIB(Xm, XmCreateOptionMenu, - XM_LIBS="-lXm" - AC_DEFINE([HAVE_MOTIF],1,[Motif available]),, - ${X_PRE_LIBS} ${XP_LIBS} ${XPM_LIBS} ${XEXT_LIBS} ${XT_LIBS} ${XEXT_LIBS} ${X11_LIBS} ${LIBGEN}) -fi -AC_SUBST(XP_LIBS) -AC_SUBST(XM_LIBS) -AM_CONDITIONAL([HAVE_MOTIF], [test "$XM_LIBS" != ""]) - -dnl check for FV-18 support -AC_ARG_ENABLE(fv18, - AC_HELP_STRING([--disable-fv18], - [disable San Jose Navigation FV-18 support]), - [ac_fv18=$enableval], [ac_fv18=yes]) -AC_MSG_CHECKING([for FV-18 support]) -if test x"$ac_fv18" = "xyes"; then - AC_MSG_RESULT([yes]) - AC_DEFINE([FV18_ENABLE], 1, [San Jose Navigation FV-18 support]) -else - AC_MSG_RESULT([no]) -fi - -dnl check for Tripmate support -AC_ARG_ENABLE(tripmate, - AC_HELP_STRING([--disable-tripmate], - [disable DeLorme TripMate support]), - [ac_tripmate=$enableval], [ac_tripmate=yes]) -AC_MSG_CHECKING([for Tripmate support]) -if test x"$ac_tripmate" = "xyes"; then - AC_MSG_RESULT([yes]) - AC_DEFINE([TRIPMATE_ENABLE], 1, [DeLorme TripMate support]) -else - AC_MSG_RESULT([no]) -fi - -dnl check for EarthMate support -AC_ARG_ENABLE(earthmate, - AC_HELP_STRING([--disable-earthmate], - [disable DeLorme EarthMate Zodiac support]), - [ac_earthmate=$enableval], [ac_earthmate=yes]) -AC_MSG_CHECKING([for EarthMate support]) -if test x"$ac_earthmate" = "xyes"; then - AC_MSG_RESULT([yes]) - AC_DEFINE([EARTHMATE_ENABLE], 1, [DeLorme EarthMate Zodiac support]) -else - AC_MSG_RESULT([no]) -fi - -dnl check for Logfile support -AC_ARG_ENABLE(logfile, - AC_HELP_STRING([--disable-logfile], - [disable Logfile driver support]), - [ac_logfile=$enableval], [ac_logfile=yes]) -AC_MSG_CHECKING([for Logfile support]) -if test x"$ac_logfile" = "xyes"; then - AC_MSG_RESULT([yes]) - AC_DEFINE([LOGFILE_ENABLE], 1, [Logfile driver support]) -else - AC_MSG_RESULT([no]) -fi - -AC_OUTPUT(Makefile gpsd.spec) - -dnl Output the configuration summary -echo "" -echo "==========================================" -echo "$PACKAGE $VERSION" -echo "------------------------------------------" -echo "FV-18 : $ac_fv18" -echo "Tripmate : $ac_tripmate" -echo "Earthmate : $ac_earthmate" -echo "Logfile : $ac_logfile" -echo "------------------------------------------" -echo "Configure finished, type 'make' to build." - diff --git a/gps.ad b/gps.ad deleted file mode 100644 index 051c7663..00000000 --- a/gps.ad +++ /dev/null @@ -1,8 +0,0 @@ -*gps_data.time.label.labelString: "Time " -*gps_data.latitude.label.labelString: "Lat. " -*gps_data.longitude.label.labelString: "Long. " -*gps_data.altitude.label.labelString: "Alt. " -*gps_data.fix_status.label.labelString:"Status" -*gps_data.quit.label.labelString: Quit -*speedunits: mph -*altunits: ft @@ -1,314 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <unistd.h> -#include <math.h> -#include <Xm/Xm.h> -#include <Xm/MwmUtil.h> -#include <Xm/PushB.h> -#include <Xm/Form.h> -#include <Xm/RowColumn.h> -#include <Xm/Label.h> -#include <Xm/TextF.h> -#include <Xm/List.h> -#include <Xm/DrawingA.h> -#include <Xm/Protocols.h> -#include <X11/Shell.h> - -#include "config.h" -#include "gps.h" -#include "display.h" - -static Widget lxbApp, form, left, right, quitbutton; -static Widget satellite_list, satellite_diagram, status; -static Widget rowColumn_11, rowColumn_12, rowColumn_13, rowColumn_14; -static Widget rowColumn_15, rowColumn_16, rowColumn_17, rowColumn_18; -static Widget text_1, text_2, text_3, text_4, text_5, text_6, text_7; -static Widget label_1, label_2, label_3, label_4, label_5, label_6, label_7; -static GC gc; - -static void quit_cb(void) -{ - exit(0); /* closes the GPS along with other fds */ -} - -static Pixel get_pixel(Widget w, char *resource_value) -{ - Colormap colormap; - Boolean status; - XColor exact, color; - - colormap = DefaultColormapOfScreen(DefaultScreenOfDisplay(XtDisplay(w))); - status = XAllocNamedColor(XtDisplay(w), colormap, resource_value, &color, &exact); - if (status == 0) { - fprintf(stderr, "Unknown color: %s", resource_value); - color.pixel = BlackPixelOfScreen(DefaultScreenOfDisplay(XtDisplay(w))); - }; - return (color.pixel); -} - -static void build_gui(Widget lxbApp) -{ - Arg args[100]; - XGCValues gcv; - Atom delw; - int i; - XmString string; - - /* the root application window */ - XtSetArg(args[0], XmNgeometry, "620x470"); - XtSetArg(args[1], XmNresizePolicy, XmRESIZE_NONE); - XtSetArg(args[2], XmNallowShellResize, False); - XtSetArg(args[3], XmNdeleteResponse, XmDO_NOTHING); - XtSetArg(args[4], XmNmwmFunctions, - MWM_FUNC_RESIZE | MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE); - XtSetValues(lxbApp, args, 5); - - /* a form to assist with geometry negotiation */ - form = XtVaCreateManagedWidget("form", xmFormWidgetClass, lxbApp, NULL); - /* the left half of the screen */ - left = XtVaCreateManagedWidget("left", xmRowColumnWidgetClass, form, - XmNleftAttachment, XmATTACH_FORM, - XmNtopAttachment, XmATTACH_FORM, - NULL); - /* the right half of the screen */ - right = XtVaCreateManagedWidget("right", xmRowColumnWidgetClass, form, - XmNleftAttachment, XmATTACH_WIDGET, - XmNleftWidget, left, - XmNtopAttachment, XmATTACH_FORM, - NULL); - /* the application status bar */ - status = XtVaCreateManagedWidget("status", xmTextFieldWidgetClass, form, - XmNcursorPositionVisible, False, - XmNeditable, False, - XmNmarginHeight, 1, - XmNhighlightThickness, 0, - XmNshadowThickness, 1, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - XmNtopAttachment, XmATTACH_WIDGET, - XmNtopWidget, left, - NULL); - /* satellite location and SNR data panel */ -#define FRAMEHEIGHT 220 -#define LEFTSIDE_WIDTH 205 - satellite_list = - XtVaCreateManagedWidget("satellite_list", xmListWidgetClass, left, - XmNbackground, get_pixel(lxbApp, "snow"), - XmNheight, FRAMEHEIGHT, - XmNwidth, LEFTSIDE_WIDTH, - XmNlistSizePolicy, XmCONSTANT, - XmNhighlightThickness, 0, - XmNlistSpacing, 4, - NULL); - /* the satellite diagram */ -#define SATDIAG_SIZE 400 - satellite_diagram = - XtVaCreateManagedWidget("satellite_diagram", - xmDrawingAreaWidgetClass, right, - XmNbackground, get_pixel(lxbApp, "snow"), - XmNheight, SATDIAG_SIZE, XmNwidth, SATDIAG_SIZE, - NULL); - gcv.foreground = BlackPixelOfScreen(XtScreen(satellite_diagram)); - gc = XCreateGC(XtDisplay(satellite_diagram), - RootWindowOfScreen(XtScreen(satellite_diagram)), GCForeground, &gcv); - register_canvas(satellite_diagram, gc); - XtAddCallback(satellite_diagram, XmNexposeCallback, (XtPointer)redraw, NULL); - /* the data display */ - XtSetArg(args[0], XmNorientation, XmHORIZONTAL); - rowColumn_11 = XtCreateManagedWidget("time", xmRowColumnWidgetClass, left, args, 1); - - rowColumn_12 = XtCreateManagedWidget("latitude", xmRowColumnWidgetClass, left, args, 1); - rowColumn_13 = XtCreateManagedWidget("longitude", xmRowColumnWidgetClass, left, args, 1); - rowColumn_14 = XtCreateManagedWidget("altitude", xmRowColumnWidgetClass, left, args, 1); - rowColumn_15 = XtCreateManagedWidget("speed", xmRowColumnWidgetClass, left, args, 1); - rowColumn_16 = XtCreateManagedWidget("track", xmRowColumnWidgetClass, left, args, 1); - rowColumn_17 = XtCreateManagedWidget("fix_status", xmRowColumnWidgetClass, left, args, 1); - rowColumn_18 = XtCreateManagedWidget("quit", xmRowColumnWidgetClass, left, args, 1); - - label_1 = XtCreateManagedWidget("Time ", xmLabelWidgetClass, rowColumn_11, args, 0); - label_2 = XtCreateManagedWidget("Latitide ", xmLabelWidgetClass, rowColumn_12, args, 0); - label_3 = XtCreateManagedWidget("Longitude", xmLabelWidgetClass, rowColumn_13, args, 0); - label_4 = XtCreateManagedWidget("Altitude ", xmLabelWidgetClass, rowColumn_14, args, 0); - label_5 = XtCreateManagedWidget("Speed ", xmLabelWidgetClass, rowColumn_15, args, 0); - label_6 = XtCreateManagedWidget("Course ", xmLabelWidgetClass, rowColumn_16, args, 0); - label_7 = XtCreateManagedWidget("Status ", xmLabelWidgetClass, rowColumn_17, args, 0); - - XtSetArg(args[0], XmNcursorPositionVisible, False); - XtSetArg(args[1], XmNeditable, False); - XtSetArg(args[2], XmNmarginHeight, 2); - XtSetArg(args[3], XmNhighlightThickness, 0); - XtSetArg(args[4], XmNshadowThickness, 1); - XtSetArg(args[5], XmNcolumns, 23); - text_1 = XtCreateManagedWidget("text_1", xmTextFieldWidgetClass, - rowColumn_11, args, 6); - text_2 = XtCreateManagedWidget("text_2", xmTextFieldWidgetClass, - rowColumn_12, args, 6); - text_3 = XtCreateManagedWidget("text_3", xmTextFieldWidgetClass, - rowColumn_13, args, 6); - text_4 = XtCreateManagedWidget("text_4", xmTextFieldWidgetClass, - rowColumn_14, args, 6); - text_5 = XtCreateManagedWidget("text_5", xmTextFieldWidgetClass, - rowColumn_15, args, 6); - text_6 = XtCreateManagedWidget("text_6", xmTextFieldWidgetClass, - rowColumn_16, args, 6); - text_7 = XtCreateManagedWidget("text_7", xmTextFieldWidgetClass, - rowColumn_17, args, 6); - - quitbutton = XtCreateManagedWidget("Quit", - xmPushButtonWidgetClass, rowColumn_18, args, 0); - XtAddCallback(quitbutton, XmNactivateCallback, (XtPointer)quit_cb, NULL); - - XtRealizeWidget(lxbApp); - delw = XmInternAtom(XtDisplay(lxbApp), "WM_DELETE_WINDOW", False); - XmAddWMProtocolCallback(lxbApp, delw, - (XtCallbackProc)quit_cb, (XtPointer)NULL); - - /* create empty list items to be replaced on update */ - string = XmStringCreateSimple(" "); - for (i = 0; i < MAXCHANNELS; i++) - XmListAddItem(satellite_list, string, i+1); - XmStringFree(string); -} - -static void handle_time_out(XtPointer client_data UNUSED, - XtIntervalId *ignored UNUSED) -/* runs when there is no data for a while */ -{ - XmTextFieldSetString(status, "no data arriving"); - XmTextFieldSetString(text_7, "UNKNOWN"); -} - -/* - * No dependencies on the session structure above this point. - */ - -static struct gps_data_t *gpsdata; -static time_t timer; /* time of last state change */ -static int state = 0; /* or MODE_NO_FIX=1, MODE_2D=2, MODE_3D=3 */ -XtAppContext app; -XtIntervalId timeout; - -static void handle_input(XtPointer client_data UNUSED, int *source UNUSED, - XtInputId *id UNUSED) -{ - gps_poll(gpsdata); -} - -static void update_panel(char *message) -/* runs on each sentence */ -{ - int i, newstate; - XmString string[12]; - char s[128], *sp; - - if (message[0]) - while (isspace(*(sp = message + strlen(message) - 1))) - *sp = '\0'; - XmTextFieldSetString(status, message); - 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 < gpsdata->satellites) { - sprintf(s, " %2d %02d %03d %02d %c", - gpsdata->PRN[i], - gpsdata->elevation[i], gpsdata->azimuth[i], - gpsdata->ss[i], gpsdata->used[i] ? 'Y' : 'N' - ); - } else - sprintf(s, " "); - string[i+1] = XmStringCreateSimple(s); - } - XmListReplaceItemsPos(satellite_list, string, sizeof(string), 1); - for (i = 0; i < MAXCHANNELS; i++) - XmStringFree(string[i]); - } - /* here are the value fields */ - XmTextFieldSetString(text_1, gpsdata->utc); - sprintf(s, "%f %c", fabsf(gpsdata->latitude), (gpsdata->latitude < 0) ? 'S' : 'N'); - XmTextFieldSetString(text_2, s); - sprintf(s, "%f %c", fabsf(gpsdata->longitude), (gpsdata->longitude < 0) ? 'W' : 'E'); - XmTextFieldSetString(text_3, s); - sprintf(s, "%f meters", gpsdata->altitude); - XmTextFieldSetString(text_4, s); - sprintf(s, "%f knots", gpsdata->speed); - XmTextFieldSetString(text_5, s); - sprintf(s, "%f degrees", gpsdata->track); - XmTextFieldSetString(text_6, s); - - if (!gpsdata->online) { - newstate = 0; - sprintf(s, "OFFLINE"); - } else { - newstate = gpsdata->mode; - switch (gpsdata->mode) { - case 2: - sprintf(s, "2D %sFIX",(gpsdata->status==STATUS_DGPS_FIX)?"DIFF ":""); - break; - case 3: - sprintf(s, "3D %sFIX",(gpsdata->status==STATUS_DGPS_FIX)?"DIFF ":""); - break; - default: - sprintf(s, "NO FIX"); - break; - } - } - if (newstate != state) { - timer = time(NULL); - state = newstate; - } - sprintf(s + strlen(s), " (%d secs)", (int) (time(NULL) - timer)); - XmTextFieldSetString(text_7, s); - draw_graphics(gpsdata); - - XtRemoveTimeOut(timeout); - timeout = XtAppAddTimeOut(app, 2000, handle_time_out, NULL); -} - -int main(int argc, char *argv[]) -{ - int option; - char *colon, *server = NULL, *port = DEFAULT_GPSD_PORT; - - while ((option = getopt(argc, argv, "?hv")) != -1) { - switch (option) { - case 'v': - printf("gps %s\n", VERSION); - exit(0); - case 'h': case '?': default: - fputs("usage: gps [-?hv] [server[:port]]\n", stderr); - exit(1); - } - } - if (optind < argc) { - server = strdup(argv[optind]); - colon = strchr(server, ':'); - if (colon != NULL) { - server[colon - server] = '\0'; - port = colon + 1; - } - } - - gpsdata = gps_open(server, port); - if (!gpsdata) { - perror("gps: no gpsd running or network error"); - exit(2); - } - - lxbApp = XtVaAppInitialize(&app, "gps.ad", NULL, 0, &argc,argv, NULL,NULL); - build_gui(lxbApp); - - timeout = XtAppAddTimeOut(app, 2000, handle_time_out, app); - - gps_set_raw_hook(gpsdata, update_panel); - gps_query(gpsdata, "w+x\n"); - - XtAppAddInput(app, gpsdata->gps_fd, - (XtPointer)XtInputReadMask, handle_input, NULL); - XtAppMainLoop(app); - - gps_close(gpsdata); - return 0; -} diff --git a/gpsd.spec.in b/gpsd.spec.in index ac0e1a4c..d9193f0b 100644 --- a/gpsd.spec.in +++ b/gpsd.spec.in @@ -123,7 +123,7 @@ if [ -d /etc/udev/rules.d/ ]; then rm /etc/udev/rules.d/80-gpsd.rules; fi - More compiler-warning cleanups. Added --speedunits option to xgpsspeed, --spedunits and --altunits options to xgps. Improved GPGSV parsing so it copes gracefully if we start in the middle of a sequence. Merged - Petter Reinholtdsen's fix for GPGSA lists with holes. In xgps, + Petter Reinholdtsen's fix for GPGSA lists with holes. In xgps, satellites used in the last fix are now dotted in the middle. * Sat Jan 01 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.6-1 |