SysIo  1.9.0
Embedded Library and tools
gps.h
1 
8 #ifndef _SYSIO_GPS_H_
9 #define _SYSIO_GPS_H_
10 #include <sysio/defs.h>
11 #ifdef __cplusplus
12  extern "C" {
13 #endif
14 /* ========================================================================== */
15 #include <gps.h>
16 #include <math.h>
17 
102 /* macros =================================================================== */
106 #define GPS_ISNAN(x) ((x) != (x))
107 
108 /* constants ================================================================ */
113 typedef enum {
114  eGpsNoError = 0,
115  eGpsArgumentError = -1,
116  eGpsReadError = -2,
117  eGpsFixError = -3,
118  eGpsMemoryError = -4,
119  eGpsServerError = -5,
120  eGpsThreadError = -6
121 } eGpsError;
122 
127 typedef enum {
128  eDegDd = 0,
129  eDegDdMmSs = (1<<0),
130  eDegDdMm = (1<<1),
131  eDegAprsLat = (1<<2),
132  eDegAprsLong = (1<<3),
135 
140 typedef enum {
145 
150 typedef enum {
151  eModeNotSeen = MODE_NOT_SEEN,
152  eModeNoFix = MODE_NO_FIX,
153  eMode2d = MODE_2D,
154  eMode3d = MODE_3D
155 } eGpsMode;
156 
157 #ifndef STATUS_DGPS_FIX
158 #define STATUS_DGPS_FIX 2
159 #endif
160 
165 typedef enum {
166  eStatusNoFix = STATUS_NO_FIX,
167  eStatusFix = STATUS_FIX,
168  eStatsDgpsFix = STATUS_DGPS_FIX
169 } eGpsStatus;
170 
171 /* structures =============================================================== */
177 struct xGps;
178 
179 /* types ==================================================================== */
188 typedef void (* vGpsFixCallback) (struct xGps * gps);
189 
199 typedef void (* vGpsErrorCallback) (int error);
200 
201 /* internal public functions ================================================ */
209 struct xGps * xGpsNew (char * server, char * port);
210 
216 void vGpsDelete (struct xGps * gps);
217 
224 bool bGpsDataAvailable (struct xGps * gps);
225 
232 int iGpsError (struct xGps * gps);
233 
240 const char * cGpsStrError (struct xGps * gps);
241 
250 bool bGpsIsFix (struct xGps * gps);
251 
258 eGpsStatus eGpsFixStatus (struct xGps * gps);
259 
266 eGpsMode eGpsFixMode (struct xGps * gps);
267 
274 timestamp_t tGpsTime (struct xGps * gps);
275 
283 char * cGpsTimeToStr (eGpsTimeFormat format, timestamp_t t);
284 
291 double dGpsTimeError (struct xGps * gps);
292 
299 double dGpsLatitude (struct xGps * gps);
300 
307 double dGpsLatitudeError (struct xGps * gps);
308 
315 double dGpsLongitude (struct xGps * gps);
316 
322 double dGpsLongitudeError (struct xGps * gps);
323 
333 char * cGpsAngleToStr (eGpsAngleFormat format, double f, char * str, size_t strsize);
334 
341 double dGpsAltitude (struct xGps * gps);
342 
348 double dGpsAltitudeError (struct xGps * gps);
349 
355 double dGpsTrack (struct xGps * gps);
356 
363 double dGpsTrackError (struct xGps * gps);
364 
371 double dGpsSpeed (struct xGps * gps);
372 
379 double dGpsSpeedError (struct xGps * gps);
380 
387 double dGpsClimb (struct xGps * gps);
388 
395 double dGpsClimbError (struct xGps * gps);
396 
405 int iGpsPrintData (struct xGps * gps, eGpsTimeFormat eTime, eGpsAngleFormat eDeg);
406 
415 int iGpsRead (struct xGps * gps, struct gps_data_t * data);
416 
423 int iGpsSetFixCallback (struct xGps * gps, vGpsFixCallback callback);
424 
429 void vGpsClearFixCallback(struct xGps * gps);
430 
437 int iGpsSetErrorCallback (struct xGps * gps, vGpsErrorCallback callback);
438 
444 void vGpsClearErrorCallback(struct xGps * gps);
445 
450 /* ========================================================================== */
451 #ifdef __cplusplus
452  }
453 #endif
454 #endif /* _SYSIO_GPS_H_ defined */
eGpsMode eGpsFixMode(struct xGps *gps)
Mode de positionnement (2D/3D)
Fixé en 3 dimensions (latitude/longitude/altitude)
Definition: gps.h:154
char * cGpsAngleToStr(eGpsAngleFormat format, double f, char *str, size_t strsize)
Convertit un angle en degrés décimaux en son équivalent humain.
Fixé avec GPS différentiel.
Definition: gps.h:168
eGpsError
Liste des erreurs.
Definition: gps.h:113
Fixé en 2 dimensions (latitude/longitude)
Definition: gps.h:153
double dGpsLongitude(struct xGps *gps)
Longitude en degrés décimaux (+E/-W)
DD MM&#39; SS.sss".
Definition: gps.h:129
void vGpsClearFixCallback(struct xGps *gps)
Invalide le gestionnaire de fix.
eGpsTimeFormat
Liste des formats d&#39;affichage de date/heure.
Definition: gps.h:140
const char * cGpsStrError(struct xGps *gps)
Message d&#39;erreur.
double dGpsClimb(struct xGps *gps)
Vitesse verticale par rapport à la terre en mètres par seconde (m/s)
double dGpsAltitudeError(struct xGps *gps)
Erreur position verticale (Altitude) en mètres (+/-)
void(* vGpsErrorCallback)(int error)
Fonction de gestion des erreurs.
Definition: gps.h:199
double dGpsTimeError(struct xGps *gps)
Erreur sur l&#39;heure en secondes.
char * cGpsTimeToStr(eGpsTimeFormat format, timestamp_t t)
Convertit un temps système en son équivalent humain.
int iGpsError(struct xGps *gps)
Code d&#39;erreur.
double dGpsAltitude(struct xGps *gps)
Altitude en mètres Valide uniquement en mode 3D.
void vGpsDelete(struct xGps *gps)
Fermeture et destruction d&#39;un GPS.
void vGpsClearErrorCallback(struct xGps *gps)
Invalide le gestionnaire d&#39;erreur.
eGpsAngleFormat
Liste des formats d&#39;affichage de laltitude/longitude.
Definition: gps.h:127
double dGpsLongitudeError(struct xGps *gps)
Erreur position X (Longitude) en mètres (+/-)
eGpsStatus eGpsFixStatus(struct xGps *gps)
Etat du GPS.
Fixé sans GPS différentiel.
Definition: gps.h:167
DD MM.mmmm&#39;.
Definition: gps.h:130
for iGpsPrintData() only
Definition: gps.h:133
double dGpsTrack(struct xGps *gps)
Cap/Route en degrés par rapport au Nord vrai.
bool bGpsIsFix(struct xGps *gps)
Indique si le GPS est fixé
DDMM.mmX: X -> N(+) ou S(-)
Definition: gps.h:131
Mode pas encore disponible.
Definition: gps.h:151
int iGpsRead(struct xGps *gps, struct gps_data_t *data)
Copie les données de position dans une structure gps_data_t.
eGpsStatus
Différents états du récepteur GPS.
Definition: gps.h:165
bool bGpsDataAvailable(struct xGps *gps)
Indique que des données de position sont disponibles.
timestamp_t tGpsTime(struct xGps *gps)
Heure de la position (fix time)
double dGpsSpeed(struct xGps *gps)
Vitesse horizontale par rapport à la terre en mètres par seconde (m/s)
Non fixé
Definition: gps.h:166
DD.dddddd.
Definition: gps.h:128
double dGpsLatitude(struct xGps *gps)
Latitude en degrés décimaux (+N/-S)
void(* vGpsFixCallback)(struct xGps *gps)
Fonction de gestion des événements de fix.
Definition: gps.h:188
Heure universelle GMT.
Definition: gps.h:142
Heure au format APRS (GMT)
Definition: gps.h:143
int iGpsSetFixCallback(struct xGps *gps, vGpsFixCallback callback)
Installe le gestionnairede fix.
double dGpsClimbError(struct xGps *gps)
Erreur de vitesse verticale en m/s (+/-)
double dGpsSpeedError(struct xGps *gps)
Erreur de vitesse horizontale en m/s (+/-)
DDDMM.mmX: X -> E(+) ou W(-)
Definition: gps.h:132
int iGpsPrintData(struct xGps *gps, eGpsTimeFormat eTime, eGpsAngleFormat eDeg)
Affiche les données essentielles du dernier fix.
Classe permettant de manipuler un GPS Classe opaque pour l&#39;utilisateur.
double dGpsLatitudeError(struct xGps *gps)
Erreur position Y (Latitude) en mètres (+/-)
struct xGps * xGpsNew(char *server, char *port)
Création d&#39;un GPS.
int iGpsSetErrorCallback(struct xGps *gps, vGpsErrorCallback callback)
Installe le gestionnaire d&#39;erreur.
eGpsMode
Liste des modes du GPS.
Definition: gps.h:150
Heure locale.
Definition: gps.h:141
double dGpsTrackError(struct xGps *gps)
Erreur de cap en degrés (+/-)
Non fixé
Definition: gps.h:152