Gypsy Reference Manual | ||||
---|---|---|---|---|
GypsyAccuracy; #define GYPSY_ACCURACY_DBUS_SERVICE #define GYPSY_ACCURACY_DBUS_INTERFACE enum GypsyAccuracyFields; GypsyAccuracy* gypsy_accuracy_new (const char *object_path); GypsyAccuracyFields gypsy_accuracy_get_accuracy (GypsyAccuracy *accuracy, double *pdop, double *hdop, double *vdop, GError **error);
GypsyAccuracy is used whenever the client program wishes to know about GPS accuracy changes. It can report the current accuracy, and has a signal to notify listeners to changes. The accuracy consists of positional accuracy, horizontal accuracy (on the latitude/longitude plane) and vertical (altitudinal) accuracy.
A GypsyAccuracy object is created using gypsy_accuracy_new()
using the
D-Bus path of the GPS device. This path is returned from the
gypsy_control_create()
function. The client can then find out about the
course with gypsy_accuracy_get_accuracy()
.
As the accuracy information changes GypsyAccuracy will emit the accuracy-changed signal. This signal contains the accuracy information if gypsy-daemon knows it. It has a fields paramater which is a bitmask of GypsyAccuracyFields which indicates which of the position, horizontal or vertical contains valid information.
GypsyAccuracy *accuracy; GError *error = NULL; . . . / * path comes from the gypsy_control_create() function * / accuracy = gypsy_accuracy_new (path); g_signal_connect (accuracy, "accuracy-changed", G_CALLBACK (accuracy_changed), NULL); . . . static void accuracy_changed (GypsyAccuracy *accuracy, GypsyAccuracyFields fields, double position, double horizontal, double vertical, gpointer userdata) { g_print ("horizontal: %f\n", (fields & GYPSY_ACCURACY_FIELDS_HORIZONTAL) ? horizontal : -1.0); }
typedef struct _GypsyAccuracy GypsyAccuracy;
There are no public fields in GypsyAccuracy.
#define GYPSY_ACCURACY_DBUS_SERVICE "org.freedesktop.Gypsy"
A define containing the address of the Accuracy service
#define GYPSY_ACCURACY_DBUS_INTERFACE "org.freedesktop.Gypsy.Accuracy"
A define containing the name of the Accuracy interface
typedef enum { GYPSY_ACCURACY_FIELDS_NONE = 0, GYPSY_ACCURACY_FIELDS_POSITION = 1 << 0, GYPSY_ACCURACY_FIELDS_HORIZONTAL = 1 << 1, GYPSY_ACCURACY_FIELDS_VERTICAL = 1 << 2, } GypsyAccuracyFields;
A bitmask telling which fields in the accuracy_changed callback are valid
GypsyAccuracy* gypsy_accuracy_new (const char *object_path);
Creates a new GypsyAccuracy object that listens for accuracy changes
from the GPS found at object_path
.
object_path : |
Object path to the GPS device |
Returns : | A GypsyAccuracy object |
GypsyAccuracyFields gypsy_accuracy_get_accuracy (GypsyAccuracy *accuracy, double *pdop, double *hdop, double *vdop, GError **error);
Obtains the current accuracy, if known, from the GPS device. pdop
, hdop
and vdop
can be NULL if the result is not required.
accuracy : |
A GypsyAccuracy |
pdop : |
Pointer to store the position DOP |
hdop : |
Pointer to store the horizonal DOP |
vdop : |
Pointer to store the vertical DOP |
error : |
Pointer to store a GError |
Returns : | Bitmask of GypsyAccuracyFields indicating what fields were set |
void user_function (GypsyAccuracy *fields, gint pdop, gdouble hdop, gdouble vdop, gdouble arg4, gpointer user_data) : Run First / No Recursion
The ::accuracy-changed signal is emitted when the GPS device
indicates that one or more of the accuracy fields has changed.
The fields which have changed will be indicated in the fields
bitmask.
fields : |
A bitmask of GypsyAccuracyFields indicating which of the following fields are valid |
pdop : |
The new position DOP |
hdop : |
The new horizonal DOP |
vdop : |
The new vertical DOP |
user_data : |
user data set when the signal handler was connected. |