62 lines
1.3 KiB
C
62 lines
1.3 KiB
C
|
|
||
|
/* dwgps.h */
|
||
|
|
||
|
#ifndef DWGPS_H
|
||
|
#define DWGPS_H 1
|
||
|
|
||
|
|
||
|
#include <time.h>
|
||
|
#include "config.h" /* for struct misc_config_s */
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Values for fix, equivalent to values from libgps.
|
||
|
* -2 = not initialized.
|
||
|
* -1 = error communicating with GPS receiver.
|
||
|
* 0 = nothing heard yet.
|
||
|
* 1 = had signal but lost it.
|
||
|
* 2 = 2D.
|
||
|
* 3 = 3D.
|
||
|
*
|
||
|
* Undefined float & double values are set to G_UNKNOWN.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
enum dwfix_e { DWFIX_NOT_INIT= -2, DWFIX_ERROR= -1, DWFIX_NOT_SEEN=0, DWFIX_NO_FIX=1, DWFIX_2D=2, DWFIX_3D=3 };
|
||
|
|
||
|
typedef enum dwfix_e dwfix_t;
|
||
|
|
||
|
typedef struct dwgps_info_s {
|
||
|
time_t timestamp; /* When last updated. System time. */
|
||
|
dwfix_t fix; /* Quality of position fix. */
|
||
|
double dlat; /* Latitude. Valid if fix >= 2. */
|
||
|
double dlon; /* Longitude. Valid if fix >= 2. */
|
||
|
float speed_knots; /* libgps uses meters/sec but we use GPS usual knots. */
|
||
|
float track; /* What is difference between track and course? */
|
||
|
float altitude; /* meters above mean sea level. Valid if fix == 3. */
|
||
|
} dwgps_info_t;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void dwgps_init (struct misc_config_s *pconfig, int debug);
|
||
|
|
||
|
void dwgps_clear (dwgps_info_t *gpsinfo);
|
||
|
|
||
|
dwfix_t dwgps_read (dwgps_info_t *gpsinfo);
|
||
|
|
||
|
void dwgps_print (char *msg, dwgps_info_t *gpsinfo);
|
||
|
|
||
|
void dwgps_term (void);
|
||
|
|
||
|
void dwgps_set_data (dwgps_info_t *gpsinfo);
|
||
|
|
||
|
|
||
|
#endif /* DWGPS_H 1 */
|
||
|
|
||
|
/* end dwgps.h */
|
||
|
|
||
|
|
||
|
|