[Firebug-cvs] fireboard/beta/tos/sensorboards/mts400/GPS NMEAM.nc,1.3,1.4
Brought to you by:
doolin
From: David M. D. <do...@us...> - 2005-05-28 00:37:47
|
Update of /cvsroot/firebug/fireboard/beta/tos/sensorboards/mts400/GPS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20695/sensorboards/mts400/GPS Modified Files: NMEAM.nc Log Message: GSV parsing now implemented. Index: NMEAM.nc =================================================================== RCS file: /cvsroot/firebug/fireboard/beta/tos/sensorboards/mts400/GPS/NMEAM.nc,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** NMEAM.nc 27 May 2005 20:28:16 -0000 1.3 --- NMEAM.nc 28 May 2005 00:37:14 -0000 1.4 *************** *** 167,175 **** ! return FAIL; } command result_t NMEA.gsv_parse (GSV_Data * gsv_data, const char * gsv_string) { ! return FAIL; } --- 167,218 ---- ! return SUCCESS; } + + + #define char_to_int_m(foo) (*foo-'0') + #define extract_sats_in_view_m(foo) (10*(foo[0]-'0') + (foo[1]-'0')) + #define extract_sat_number_m(foo) (10*(foo[0]-'0') + (foo[1]-'0')) + #define extract_azimuth_m(foo) (100*(foo[0]-'0') + 10*(foo[1]-'0') + (foo[2]-'0')) + command result_t NMEA.gsv_parse (GSV_Data * gsv_data, const char * gsv_string) { ! ! const char * p = gsv_string; ! int i; ! uint8_t num_sats,mess_num; ! uint8_t numchannels; ! ! find_next_field_m(p); ! gsv_data->num_messages = char_to_int_m(p); ! ! find_next_field_m(p); ! mess_num = char_to_int_m(p); ! gsv_data->message_number = mess_num; ! ! find_next_field_m(p); ! num_sats = extract_sats_in_view_m(p); ! gsv_data->satellites_in_view = num_sats; ! ! // This is convenient for determining how many ! // channels to parse. ! if (mess_num*4 < num_sats) { ! numchannels = 4; ! } else { ! numchannels = num_sats % 4; ! } ! ! for (i=0; i<numchannels; i++) { ! ! find_next_field_m(p); ! gsv_data->channel[i].sat_id = extract_sat_number_m(p); ! find_next_field_m(p); ! gsv_data->channel[i].elevation = extract_sat_number_m(p); ! find_next_field_m(p); ! gsv_data->channel[i].azimuth = extract_azimuth_m(p); ! find_next_field_m(p); ! gsv_data->channel[i].SNR = extract_sat_number_m(p); ! } ! return SUCCESS; } |