[Firebug-cvs] fireboard/beta/tos/sensorboards/mts400/GPS NMEA.h,1.2,1.3 NMEAM.nc,1.2,1.3
Brought to you by:
doolin
From: David M. D. <do...@us...> - 2005-05-27 20:28:24
|
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; } |