Update of /cvsroot/firebug/fireboard/beta/tos/sensorboards/mts400/GPS
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14185/sensorboards/mts400/GPS
Modified Files:
NMEA.h NMEAM.nc
Log Message:
Added gsa parsing.
Index: NMEA.h
===================================================================
RCS file: /cvsroot/firebug/fireboard/beta/tos/sensorboards/mts400/GPS/NMEA.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** NMEA.h 27 May 2005 00:38:32 -0000 1.2
--- NMEA.h 27 May 2005 20:28:16 -0000 1.3
***************
*** 125,128 ****
--- 125,132 ----
} GGA_Data;
+ enum {
+ AM_GGA_DATA = 233
+ };
+
typedef struct gll_data {
Index: NMEAM.nc
===================================================================
RCS file: /cvsroot/firebug/fireboard/beta/tos/sensorboards/mts400/GPS/NMEAM.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** NMEAM.nc 27 May 2005 00:38:32 -0000 1.2
--- NMEAM.nc 27 May 2005 20:28:16 -0000 1.3
***************
*** 131,135 ****
--- 131,170 ----
}
+
+ #define extract_mode2_m(data) (data[0] - '0')
+ #define find_next_field_m(foo) while (*foo != ',')foo++;foo++
+ #define extract_sat_number_m(foo) (10*(foo[0]-'0') + (foo[1]-'0'))
+ #define extract_DOP_m(foo) ((foo[0]-'0') + (0.1*(foo[2]-'0')))
+ // TODO: Write some test code for this.
command result_t NMEA.gsa_parse (GSA_Data * gsa_data, const char * gsa_string) {
+
+ int i;
+ const char * p = gsa_string;
+
+ find_next_field_m(p);
+ gsa_data->mode1 = *p;
+
+ find_next_field_m(p);
+ gsa_data->mode2 = *p - '0';
+
+
+ for (i=0; i<12; i++) {
+ find_next_field_m(p);
+ //printf("current char: %c\n",*p);
+ if (*p != ',') {
+ gsa_data->sat_used[i] = extract_sat_number_m(p);
+ } else {
+ gsa_data->sat_used[i] = 0;
+ }
+ }
+
+ find_next_field_m(p);
+ gsa_data->PDOP = extract_DOP_m(p);
+ find_next_field_m(p);
+ gsa_data->HDOP = extract_DOP_m(p);
+ find_next_field_m(p);
+ gsa_data->VDOP = extract_DOP_m(p);
+
+
return FAIL;
}
|