SysIo  1.9.0
Embedded Library and tools
GPS avec gpsd

Detailed Description

Ce module permet de gérer des récepteurs GPS gérés par gpsd http://www.catb.org/gpsd/ . Il utilise donc libgps.

Le serveur gpsd et libgps doivent être installés et configurés correctement...

Sous debian, il faut faire quelque chose comme ceci :

sudo apt-get install gpsd gpsd-clients libgps-dev
sudo nano /etc/default/gpsd
# modifier les lignes ci-dessous pour faire correspondre à la liaison série du GPS
DEVICES="/dev/ttyUSB0"
GPSD_OPTIONS="-b"
sudo service gpsd restart

Pour tester la bonne réception, on peut afficher les trames NMEA 0183 reçues:

gpspipe -r localhost

On peut aussi afficher les informations reçues sous forme plus exploitables avec cgps ou xgps.

Classes

class  xGps
 Classe permettant de manipuler un GPS Classe opaque pour l'utilisateur. More...
 

Functions

bool bGpsDataAvailable (struct xGps *gps)
 Indique que des données de position sont disponibles. More...
 
bool bGpsIsFix (struct xGps *gps)
 Indique si le GPS est fixé More...
 
char * cGpsAngleToStr (eGpsAngleFormat format, double f, char *str, size_t strsize)
 Convertit un angle en degrés décimaux en son équivalent humain. More...
 
const char * cGpsStrError (struct xGps *gps)
 Message d'erreur. More...
 
char * cGpsTimeToStr (eGpsTimeFormat format, timestamp_t t)
 Convertit un temps système en son équivalent humain. More...
 
double dGpsAltitude (struct xGps *gps)
 Altitude en mètres Valide uniquement en mode 3D. More...
 
double dGpsAltitudeError (struct xGps *gps)
 Erreur position verticale (Altitude) en mètres (+/-) More...
 
double dGpsClimb (struct xGps *gps)
 Vitesse verticale par rapport à la terre en mètres par seconde (m/s) More...
 
double dGpsClimbError (struct xGps *gps)
 Erreur de vitesse verticale en m/s (+/-) More...
 
double dGpsLatitude (struct xGps *gps)
 Latitude en degrés décimaux (+N/-S) More...
 
double dGpsLatitudeError (struct xGps *gps)
 Erreur position Y (Latitude) en mètres (+/-) More...
 
double dGpsLongitude (struct xGps *gps)
 Longitude en degrés décimaux (+E/-W) More...
 
double dGpsLongitudeError (struct xGps *gps)
 Erreur position X (Longitude) en mètres (+/-) More...
 
double dGpsSpeed (struct xGps *gps)
 Vitesse horizontale par rapport à la terre en mètres par seconde (m/s) More...
 
double dGpsSpeedError (struct xGps *gps)
 Erreur de vitesse horizontale en m/s (+/-) More...
 
double dGpsTimeError (struct xGps *gps)
 Erreur sur l'heure en secondes. More...
 
double dGpsTrack (struct xGps *gps)
 Cap/Route en degrés par rapport au Nord vrai. More...
 
double dGpsTrackError (struct xGps *gps)
 Erreur de cap en degrés (+/-) More...
 
eGpsMode eGpsFixMode (struct xGps *gps)
 Mode de positionnement (2D/3D) More...
 
eGpsStatus eGpsFixStatus (struct xGps *gps)
 Etat du GPS. More...
 
int iGpsError (struct xGps *gps)
 Code d'erreur. More...
 
int iGpsPrintData (struct xGps *gps, eGpsTimeFormat eTime, eGpsAngleFormat eDeg)
 Affiche les données essentielles du dernier fix. More...
 
int iGpsRead (struct xGps *gps, struct gps_data_t *data)
 Copie les données de position dans une structure gps_data_t. More...
 
int iGpsSetErrorCallback (struct xGps *gps, vGpsErrorCallback callback)
 Installe le gestionnaire d'erreur. More...
 
int iGpsSetFixCallback (struct xGps *gps, vGpsFixCallback callback)
 Installe le gestionnairede fix. More...
 
timestamp_t tGpsTime (struct xGps *gps)
 Heure de la position (fix time) More...
 
void vGpsClearErrorCallback (struct xGps *gps)
 Invalide le gestionnaire d'erreur. More...
 
void vGpsClearFixCallback (struct xGps *gps)
 Invalide le gestionnaire de fix. More...
 
void vGpsDelete (struct xGps *gps)
 Fermeture et destruction d'un GPS. More...
 
struct xGpsxGpsNew (char *server, char *port)
 Création d'un GPS. More...
 

Macros

#define GPS_ISNAN(x)   ((x) != (x))
 Permet de tester si une valeur de type double est NaN (incorrecte)
 
#define STATUS_DGPS_FIX   2
 

Typedefs

typedef void(* vGpsErrorCallback) (int error)
 Fonction de gestion des erreurs. More...
 
typedef void(* vGpsFixCallback) (struct xGps *gps)
 Fonction de gestion des événements de fix. More...
 

Enumerations

enum  eGpsAngleFormat {
  eDegDd = 0, eDegDdMmSs = (1<<0), eDegDdMm = (1<<1), eDegAprsLat = (1<<2),
  eDegAprsLong = (1<<3), eDegAprs = eDegAprsLat | eDegAprsLong
}
 Liste des formats d'affichage de laltitude/longitude. More...
 
enum  eGpsError {
  eGpsNoError = 0, eGpsArgumentError = -1, eGpsReadError = -2, eGpsFixError = -3,
  eGpsMemoryError = -4, eGpsServerError = -5, eGpsThreadError = -6
}
 Liste des erreurs.
 
enum  eGpsMode { eModeNotSeen = MODE_NOT_SEEN, eModeNoFix = MODE_NO_FIX, eMode2d = MODE_2D, eMode3d = MODE_3D }
 Liste des modes du GPS. More...
 
enum  eGpsStatus { eStatusNoFix = STATUS_NO_FIX, eStatusFix = STATUS_FIX, eStatsDgpsFix = STATUS_DGPS_FIX }
 Différents états du récepteur GPS. More...
 
enum  eGpsTimeFormat { eTimeLocal, eTimeUtc, eTimeAprs }
 Liste des formats d'affichage de date/heure. More...
 

Typedef Documentation

typedef void(* vGpsErrorCallback) (int error)

#include <gps.h>

Fonction de gestion des erreurs.

Ce type de fonction est définie par l'utilisateur et installée à l'aide de iGpsSetErrorCallback().
La fonction installée sera appelée à chaque erreur lors du processus de réception. Elle est exécutée dans un autre thread que le programme appelant.

Definition at line 199 of file gps.h.

typedef void(* vGpsFixCallback) (struct xGps *gps)

#include <gps.h>

Fonction de gestion des événements de fix.

Ce type de fonction est définie par l'utilisateur et installée à l'aide de iGpsSetFixCallback().
La fonction installée sera appelée à chaque message fix correctemen formaté. Elle est exécutée dans un autre thread que le programme appelant.

Definition at line 188 of file gps.h.

Enumeration Type Documentation

#include <gps.h>

Liste des formats d'affichage de laltitude/longitude.

Enumerator
eDegDd 

DD.dddddd.

eDegDdMmSs 

DD MM' SS.sss".

eDegDdMm 

DD MM.mmmm'.

eDegAprsLat 

DDMM.mmX: X -> N(+) ou S(-)

eDegAprsLong 

DDDMM.mmX: X -> E(+) ou W(-)

eDegAprs 

for iGpsPrintData() only

Definition at line 127 of file gps.h.

127  {
128  eDegDd = 0,
129  eDegDdMmSs = (1<<0),
130  eDegDdMm = (1<<1),
131  eDegAprsLat = (1<<2),
132  eDegAprsLong = (1<<3),
DD MM&#39; SS.sss".
Definition: gps.h:129
eGpsAngleFormat
Liste des formats d&#39;affichage de laltitude/longitude.
Definition: gps.h:127
DD MM.mmmm&#39;.
Definition: gps.h:130
for iGpsPrintData() only
Definition: gps.h:133
DDMM.mmX: X -> N(+) ou S(-)
Definition: gps.h:131
DD.dddddd.
Definition: gps.h:128
DDDMM.mmX: X -> E(+) ou W(-)
Definition: gps.h:132
enum eGpsMode

#include <gps.h>

Liste des modes du GPS.

Enumerator
eModeNotSeen 

Mode pas encore disponible.

eModeNoFix 

Non fixé

eMode2d 

Fixé en 2 dimensions (latitude/longitude)

eMode3d 

Fixé en 3 dimensions (latitude/longitude/altitude)

Definition at line 150 of file gps.h.

150  {
151  eModeNotSeen = MODE_NOT_SEEN,
152  eModeNoFix = MODE_NO_FIX,
153  eMode2d = MODE_2D,
154  eMode3d = MODE_3D
155 } eGpsMode;
Fixé en 3 dimensions (latitude/longitude/altitude)
Definition: gps.h:154
Fixé en 2 dimensions (latitude/longitude)
Definition: gps.h:153
Mode pas encore disponible.
Definition: gps.h:151
eGpsMode
Liste des modes du GPS.
Definition: gps.h:150
Non fixé
Definition: gps.h:152
enum eGpsStatus

#include <gps.h>

Différents états du récepteur GPS.

Enumerator
eStatusNoFix 

Non fixé

eStatusFix 

Fixé sans GPS différentiel.

eStatsDgpsFix 

Fixé avec GPS différentiel.

Definition at line 165 of file gps.h.

165  {
166  eStatusNoFix = STATUS_NO_FIX,
167  eStatusFix = STATUS_FIX,
168  eStatsDgpsFix = STATUS_DGPS_FIX
169 } eGpsStatus;
Fixé avec GPS différentiel.
Definition: gps.h:168
Fixé sans GPS différentiel.
Definition: gps.h:167
eGpsStatus
Différents états du récepteur GPS.
Definition: gps.h:165
Non fixé
Definition: gps.h:166

#include <gps.h>

Liste des formats d'affichage de date/heure.

Enumerator
eTimeLocal 

Heure locale.

eTimeUtc 

Heure universelle GMT.

eTimeAprs 

Heure au format APRS (GMT)

Definition at line 140 of file gps.h.

140  {
141  eTimeLocal,
142  eTimeUtc,
143  eTimeAprs
eGpsTimeFormat
Liste des formats d&#39;affichage de date/heure.
Definition: gps.h:140
Heure universelle GMT.
Definition: gps.h:142
Heure au format APRS (GMT)
Definition: gps.h:143
Heure locale.
Definition: gps.h:141

Function Documentation

bool bGpsDataAvailable ( struct xGps gps)

#include <gps.h>

Indique que des données de position sont disponibles.

Parameters
gpspointeur sur objet GPS
Returns
true si données disponibles
Examples:
gps/poll/sysio_demo_gps_poll.c.
bool bGpsIsFix ( struct xGps gps)

#include <gps.h>

Indique si le GPS est fixé

Cela indique que le GPS a réussi à calculer une position à partir des données reçues des satellites.

Parameters
gpspointeur sur objet GPS
Returns
true si fixé
Examples:
gps/callback/sysio_demo_gps_callback.c, and gps/poll/sysio_demo_gps_poll.c.
char* cGpsAngleToStr ( eGpsAngleFormat  format,
double  f,
char *  str,
size_t  strsize 
)

#include <gps.h>

Convertit un angle en degrés décimaux en son équivalent humain.

Parameters
formatformat choisi
fvaleur à convertir
strbuffer sur la chaine de caractère résultat
strsizetaille du buffer str
Returns
pointeur sur la chaîne de catactères résulat
const char* cGpsStrError ( struct xGps gps)

#include <gps.h>

Message d'erreur.

Parameters
gpspointeur sur objet GPS, peut être NULL (cas où xGpsNew() a échouée)
Returns
message d'erreur de la dernière erreur
char* cGpsTimeToStr ( eGpsTimeFormat  format,
timestamp_t  t 
)

#include <gps.h>

Convertit un temps système en son équivalent humain.

Parameters
format
ttemps en microsecondes depuis le 1er janvier 1970
Returns
pointeur sur la chaîne de catactères résulat
Examples:
gps/callback/sysio_demo_gps_callback.c, and gps/poll/sysio_demo_gps_poll.c.
double dGpsAltitude ( struct xGps gps)

#include <gps.h>

Altitude en mètres Valide uniquement en mode 3D.

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsAltitudeError ( struct xGps gps)

#include <gps.h>

Erreur position verticale (Altitude) en mètres (+/-)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsClimb ( struct xGps gps)

#include <gps.h>

Vitesse verticale par rapport à la terre en mètres par seconde (m/s)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsClimbError ( struct xGps gps)

#include <gps.h>

Erreur de vitesse verticale en m/s (+/-)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsLatitude ( struct xGps gps)

#include <gps.h>

Latitude en degrés décimaux (+N/-S)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
Examples:
gps/callback/sysio_demo_gps_callback.c, and gps/poll/sysio_demo_gps_poll.c.
double dGpsLatitudeError ( struct xGps gps)

#include <gps.h>

Erreur position Y (Latitude) en mètres (+/-)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsLongitude ( struct xGps gps)

#include <gps.h>

Longitude en degrés décimaux (+E/-W)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
Examples:
gps/callback/sysio_demo_gps_callback.c, and gps/poll/sysio_demo_gps_poll.c.
double dGpsLongitudeError ( struct xGps gps)

#include <gps.h>

Erreur position X (Longitude) en mètres (+/-)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsSpeed ( struct xGps gps)

#include <gps.h>

Vitesse horizontale par rapport à la terre en mètres par seconde (m/s)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsSpeedError ( struct xGps gps)

#include <gps.h>

Erreur de vitesse horizontale en m/s (+/-)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsTimeError ( struct xGps gps)

#include <gps.h>

Erreur sur l'heure en secondes.

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsTrack ( struct xGps gps)

#include <gps.h>

Cap/Route en degrés par rapport au Nord vrai.

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
double dGpsTrackError ( struct xGps gps)

#include <gps.h>

Erreur de cap en degrés (+/-)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, NaN si pas disponible
eGpsMode eGpsFixMode ( struct xGps gps)

#include <gps.h>

Mode de positionnement (2D/3D)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée
eGpsStatus eGpsFixStatus ( struct xGps gps)

#include <gps.h>

Etat du GPS.

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée
int iGpsError ( struct xGps gps)

#include <gps.h>

Code d'erreur.

Parameters
gpspointeur sur objet GPS, peut être NULL (cas où xGpsNew() a échouée)
Returns
code de la dernière erreur
Examples:
gps/poll/sysio_demo_gps_poll.c.
int iGpsPrintData ( struct xGps gps,
eGpsTimeFormat  eTime,
eGpsAngleFormat  eDeg 
)

#include <gps.h>

Affiche les données essentielles du dernier fix.

Parameters
gpspointeur sur objet GPS
eTime
eDeg
Returns
int iGpsRead ( struct xGps gps,
struct gps_data_t *  data 
)

#include <gps.h>

Copie les données de position dans une structure gps_data_t.

Voir page man 3 de libgps pour utilisation

Parameters
gpspointeur sur objet GPS
data
Returns
0 ou code d'erreur eGpsError
int iGpsSetErrorCallback ( struct xGps gps,
vGpsErrorCallback  callback 
)

#include <gps.h>

Installe le gestionnaire d'erreur.

Parameters
gpspointeur sur objet GPS
callback
Returns
0 ou code d'erreur eGpsError
Examples:
gps/callback/sysio_demo_gps_callback.c.
int iGpsSetFixCallback ( struct xGps gps,
vGpsFixCallback  callback 
)

#include <gps.h>

Installe le gestionnairede fix.

Parameters
gpspointeur sur objet GPS
callback
Returns
0 ou code d'erreur eGpsError
Examples:
gps/callback/sysio_demo_gps_callback.c.
timestamp_t tGpsTime ( struct xGps gps)

#include <gps.h>

Heure de la position (fix time)

Parameters
gpspointeur sur objet GPS
Returns
la valeur demandée, -1 si pas disponible
Examples:
gps/callback/sysio_demo_gps_callback.c, and gps/poll/sysio_demo_gps_poll.c.
void vGpsClearErrorCallback ( struct xGps gps)

#include <gps.h>

Invalide le gestionnaire d'erreur.

Parameters
gpspointeur sur objet GPS
void vGpsClearFixCallback ( struct xGps gps)

#include <gps.h>

Invalide le gestionnaire de fix.

Parameters
gpspointeur sur objet GPS
void vGpsDelete ( struct xGps gps)

#include <gps.h>

Fermeture et destruction d'un GPS.

Parameters
gpspointeur sur objet GPS
Examples:
gps/callback/sysio_demo_gps_callback.c, and gps/poll/sysio_demo_gps_poll.c.
struct xGps* xGpsNew ( char *  server,
char *  port 
)

#include <gps.h>

Création d'un GPS.

Parameters
serveradresse IP ou hostname du serveur (localhost généralement)
portport du serveur (DEFAULT_GPSD_PORT généralement)
Returns
pointeur sur le gps initialisé, NULL si erreur
Examples:
gps/callback/sysio_demo_gps_callback.c, and gps/poll/sysio_demo_gps_poll.c.