[Firebug-cvs] fireboard/sensors/leadtek9546 ggaparse.c,1.1,1.2 leadtek_9546.h,1.7,1.8 nmea_parse.c,1
Brought to you by:
doolin
From: David M. D. <do...@us...> - 2004-08-30 21:37:57
|
Update of /cvsroot/firebug/fireboard/sensors/leadtek9546 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv440 Modified Files: ggaparse.c leadtek_9546.h nmea_parse.c nmea_parse.h nmea_parse_test.c Log Message: Moved some defines around, trying to fix a problem with the macros for nmea parsing. Index: nmea_parse_test.c =================================================================== RCS file: /cvsroot/firebug/fireboard/sensors/leadtek9546/nmea_parse_test.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** nmea_parse_test.c 30 Aug 2004 17:01:23 -0000 1.1 --- nmea_parse_test.c 30 Aug 2004 21:37:48 -0000 1.2 *************** *** 5,8 **** --- 5,10 ---- #include "nmea_parse.h" + #include "nmea_parse_private.h" + *************** *** 12,15 **** --- 14,19 ---- int passed = 0; + int r = 1; + char * gga_string = "$GPGGA,231622.994,3751.3086,N,12216.5235,W,1,09,1.1,-4.5,M,,,,0000*30"; GGA_Data * gga_data = nmea_gga_new(); //(GGA_Data*)malloc(sizeof(GGA_Data)); *************** *** 31,34 **** --- 35,44 ---- result = memcmp((const void*)gga_parsed,(const void*)(gga_data),sizeof(GGA_Data)); + + r *= (gga_data->num_sats==8); + r *= (gga_data->num_sats==9); + printf ("Result mults: %d\n",r); + + /* nmea_gga_print(gga_data); *************** *** 37,40 **** --- 47,52 ---- */ + + if (result == 0) { printf("Passed nmea_gga_parse\n"); Index: nmea_parse.c =================================================================== RCS file: /cvsroot/firebug/fireboard/sensors/leadtek9546/nmea_parse.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** nmea_parse.c 30 Aug 2004 17:02:58 -0000 1.1 --- nmea_parse.c 30 Aug 2004 21:37:48 -0000 1.2 *************** *** 4,7 **** --- 4,8 ---- #include "nmea_parse.h" + #include "nmea_parse_private.h" /** @brief This is a pretty small struct, should *************** *** 14,18 **** typedef struct nmea_types { char * nmea_type; ! unsigned char tag; } NMEA_Types; --- 15,19 ---- typedef struct nmea_types { char * nmea_type; ! uint8_t tag; } NMEA_Types; *************** *** 28,31 **** --- 29,33 ---- {"RMC", RMC}, {"VTG", VTG}, + {"MSS", MSS}, {NULL, 0 } }; *************** *** 45,49 **** * the nmea sentence. */ ! int nmea_get_type(const char * nmeastring) { --- 47,51 ---- * the nmea sentence. */ ! uint8_t nmea_get_type(const char * nmeastring) { Index: nmea_parse.h =================================================================== RCS file: /cvsroot/firebug/fireboard/sensors/leadtek9546/nmea_parse.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** nmea_parse.h 30 Aug 2004 17:02:58 -0000 1.1 --- nmea_parse.h 30 Aug 2004 21:37:48 -0000 1.2 *************** *** 1,3 **** --- 1,4 ---- + #ifndef NMEA_PARSE_H #define NMEA_PARSE_H *************** *** 24,27 **** --- 25,50 ---- */ + /** For various reasons, these have been defined in several + * different places. They should be defined either here, + * or in files specific to the particular GGA sentence under + * consideration. + */ + //#ifndef NMEA_EXTRACTION_MACROS + #define NMEA_EXTRACTION_MACROS + #define extract_num_sats_m(data) (10*(data[0]-'0') + (data[1]-'0')) + #define extract_hours_m(data) (10*(data[0]-'0') + (data[1]-'0')) + #define extract_minutes_m(data) (10*(data[2]-'0') + (data[3]-'0')) + #define extract_dec_sec_m(data) (10*(data[4]-'0') + (data[5]-'0') + 0.1*(data[7]-'0') \ + + 0.01*(data[8]-'0') \ + + 0.001*(data[9]-'0')) + #define extract_Lat_deg_m(data) (10*(data[0]-'0') + (data[1]-'0')) + #define extract_Lat_dec_min_m(data) (10*(data[2]-'0') + (data[3]-'0') + 0.1*(data[5]-'0') \ + + 0.01*(data[6]-'0') + 0.001*(data[7]-'0') + 0.0001*(data[8]-'0')) + #define extract_Long_deg_m(data) (100*(data[0]-'0') + 10*(data[1]-'0') + (data[2]-'0')) + #define extract_Long_dec_min_m(data) (10*(data[3]-'0') + (data[4]-'0') + 0.1*(data[6]-'0') \ + + 0.01*(data[7]-'0') + 0.001*(data[8]-'0') + 0.0001*(data[9]-'0')) + //#endif + + /** @brief These are the most common NMEA-0183 sentences * all of which are available on the LeadTek 9546. *************** *** 94,97 **** --- 117,121 ---- } GGA_Data; + typedef struct gll_data { NMEA_Data nd; *************** *** 171,216 **** - int nmea_get_type (const char * nmeastring); - - - GGA_Data * nmea_gga_new (void); - GLL_Data * nmea_gll_new (void); - GSA_Data * nmea_gsa_new (void); - GSV_Data * nmea_gsv_new (void); - RMC_Data * nmea_rmc_new (void); - VTG_Data * nmea_vtg_new (void); - MSS_Data * nmea_mss_new (void); - - void nmea_gga_delete (GGA_Data * gga_data); - void nmea_gll_delete (GLL_Data * gll_data); - void nmea_gsa_delete (GSA_Data * gsa_data); - void nmea_gsv_delete (GSV_Data * gsv_data); - void nmea_rmc_delete (RMC_Data * rmc_data); - void nmea_vtg_delete (VTG_Data * vtg_data); - void nmea_mss_delete (MSS_Data * mss_data); - - - GGA_Data * nmea_gga_parse (const char * gga_string); - GLL_Data * nmea_gll_parse (const char * gll_string); - GSA_Data * nmea_gsa_parse (const char * gsa_string); - GSV_Data * nmea_gsv_parse (const char * gsv_string); - RMC_Data * nmea_rmc_parse (const char * rmc_string); - VTG_Data * nmea_vtg_parse (const char * vtg_string); - MSS_Data * nmea_mss_parse (const char * mss_string); - - void nmea_gga_print (const GGA_Data * gga_data); - void nmea_gll_print (const GLL_Data * gll_data); - void nmea_gsa_print (const GSA_Data * gsa_data); - void nmea_gsv_print (const GSV_Data * gsv_data); - void nmea_mss_print (const MSS_Data * mss_data); - - int test_gga_parse (void); - int test_gll_parse (void); - int test_gsa_parse (void); - int test_gsv_parse (void); - int test_rmc_parse (void); - int test_vtg_parse (void); - int test_mss_parse (void); - - #endif /* NMEA_PARSE_H */ --- 195,197 ---- Index: ggaparse.c =================================================================== RCS file: /cvsroot/firebug/fireboard/sensors/leadtek9546/ggaparse.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ggaparse.c 30 Aug 2004 17:02:58 -0000 1.1 --- ggaparse.c 30 Aug 2004 21:37:48 -0000 1.2 *************** *** 226,234 **** ! data = &gga_string[7]; ggad->minutes = extract_minutes_m(data); ! data = &gga_string[7]; ggad->dec_sec = extract_dec_sec_m(data); --- 226,234 ---- ! //data = &gga_string[7]; ggad->minutes = extract_minutes_m(data); ! //data = &gga_string[7]; ggad->dec_sec = extract_dec_sec_m(data); *************** *** 238,242 **** ! data = &gga_string[18]; ggad->Lat_dec_min = extract_Lat_dec_min_m(data); --- 238,242 ---- ! //data = &gga_string[18]; ggad->Lat_dec_min = extract_Lat_dec_min_m(data); *************** *** 246,250 **** ! data = &gga_string[30]; ggad->Long_dec_min = extract_Long_dec_min_m(data); --- 246,250 ---- ! //data = &gga_string[30]; ggad->Long_dec_min = extract_Long_dec_min_m(data); Index: leadtek_9546.h =================================================================== RCS file: /cvsroot/firebug/fireboard/sensors/leadtek9546/leadtek_9546.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** leadtek_9546.h 30 Aug 2004 16:58:15 -0000 1.7 --- leadtek_9546.h 30 Aug 2004 21:37:48 -0000 1.8 *************** *** 169,172 **** --- 169,174 ---- // Some useful macros. + #ifndef NMEA_EXTRACTION_MACROS + #define NMEA_EXTRACTION_MACROS #define extract_num_sats_m(data) (10*(data[0]-'0') + (data[1]-'0')) #define extract_hours_m(data) (10*(data[0]-'0') + (data[1]-'0')) *************** *** 181,184 **** --- 183,187 ---- #define extract_Long_dec_min_m(data) (10*(data[3]-'0') + (data[4]-'0') + 0.1*(data[6]-'0') \ + 0.01*(data[7]-'0') + 0.001*(data[8]-'0') + 0.0001*(data[9]-'0')) + #endif typedef struct GGAMsg { |