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;
}
|