nmea.h
Go to the documentation of this file.00001
00041 #ifndef NET_NMEA_H
00042 #define NET_NMEA_H
00043
00044 #include "cfg/cfg_nmea.h"
00045
00046 #include <net/nmeap/inc/nmeap.h>
00047
00048 #include <io/kfile.h>
00049
00050 #include <time.h>
00051
00052
00053
00054
00055 #define NMEA_GPGGA 1 // GGA MESSAGE ID
00056 #define NMEA_GPRMC 2 // RMC MESSAGE ID
00057 #define NMEA_GPVTG 3 // VTG MESSAGE ID
00058 #define NMEA_GPGSV 4 // GSV MESSAGE ID
00059
00060
00061 typedef int32_t udegree_t;
00062 typedef int32_t mdegree_t;
00063 typedef int16_t degree_t;
00064
00065
00075 typedef struct NmeaGga
00076 {
00077 udegree_t latitude;
00078 udegree_t longitude;
00079 int32_t altitude;
00080 time_t time;
00081 uint16_t satellites;
00082 uint16_t quality;
00083 uint16_t hdop;
00084 int16_t geoid;
00085 } NmeaGga;
00086
00094 typedef struct NmeaRmc
00095 {
00096 time_t time;
00097 char warn;
00098 udegree_t latitude;
00099 udegree_t longitude;
00100 uint16_t speed;
00101 degree_t course;
00102 degree_t mag_var;
00103 } NmeaRmc;
00104
00108 typedef struct NmeaVtg
00109 {
00110 degree_t track_good;
00111 uint16_t knot_speed;
00112 uint16_t km_speed;
00113 } NmeaVtg;
00114
00118 struct SvInfo
00119 {
00120 uint16_t sv_prn;
00121 degree_t elevation;
00122 degree_t azimut;
00123 uint16_t snr;
00124 };
00125
00126 typedef struct NmeaGsv
00127 {
00128 uint16_t tot_message;
00129 uint16_t message_num;
00130 uint16_t tot_svv;
00131 struct SvInfo info[4];
00132 } NmeaGsv;
00133
00134 void nmea_poll(nmeap_context_t *context, KFile *channel);
00135
00136 int nmea_gpgsv(nmeap_context_t *context, nmeap_sentence_t *sentence);
00137 int nmea_gpvtg(nmeap_context_t *context, nmeap_sentence_t *sentence);
00138 int nmea_gprmc(nmeap_context_t *context, nmeap_sentence_t *sentence);
00139 int nmea_gpgga(nmeap_context_t *context, nmeap_sentence_t *sentence);
00140
00141
00142 void gpgga_callout(nmeap_context_t *context, void *data, void *user_data);
00143 void gprmc_callout(nmeap_context_t *context, void *data, void *user_data);
00144 void gpgsv_callout(nmeap_context_t *context, void *data, void *user_data);
00145 void gpvtg_callout(nmeap_context_t *context, void *data, void *user_data);
00146
00147 int nmea_testSetup(void);
00148 int nmea_testTearDown(void);
00149 int nmea_testRun(void);
00150
00151 #endif