zxcwhale / NmeaParser

NMEA protocol demo
MIT License
20 stars 12 forks source link

2 locations assign navdata->is_fixed, which one is ok? #1

Open FlyingRunSnail opened 4 years ago

FlyingRunSnail commented 4 years ago

2 locations assign navdata->is_fixed, which one is ok?

FlyingRunSnail commented 4 years ago

2 locations assign navdata->is_fixed, which one is ok?

193 / 194 Parse GGA, store the parsed data in navigation data 195 @tzer: current tokenizer 196 @navdata: navigation data 197 / 198 void parse_gga(struct nmea_tokenizer tzer, struct nav_data navdata) 199 { 200 struct token tok_time = nmea_tokenizer_get(tzer, 1); 201 struct token tok_latitude = nmea_tokenizer_get(tzer, 2); 202 struct token tok_latitudeHemi = nmea_tokenizer_get(tzer, 3); 203 struct token tok_longitude = nmea_tokenizer_get(tzer, 4); 204 struct token tok_longitudeHemi = nmea_tokenizer_get(tzer, 5); 205 struct token tok_fixQuality = nmea_tokenizer_get(tzer, 6); 206 struct token tok_svNumInUse = nmea_tokenizer_get(tzer, 7); 207 struct token tok_hdop = nmea_tokenizer_get(tzer, 8); 208 struct token tok_altitude = nmea_tokenizer_get(tzer, 9); 209 210 navdata->is_fixed = is_quality_fixed(tok_fixQuality.p[0]); 211 if (navdata->is_fixed) { 212 navdata->time = convert_gnss_time(tok_time); 213 navdata->lat = convert_latitude(tok_latitude, tok_latitudeHemi.p[0]); 214 navdata->lon = convert_longitude(tok_longitude, tok_longitudeHemi.p[0]); 215 navdata->sv_inuse = str2int(tok_svNumInUse.p, tok_svNumInUse.end); 216 navdata->hdop = str2float(tok_hdop.p, tok_hdop.end); 217 navdata->alt = str2float(tok_altitude.p, tok_altitude.end); 218 } 219 } 221 / 222 Parse RMC, store the parsed data in navigation data 223 @tzer: current tokenizer 224 @navdata: navigation data 225 / 226 void parse_rmc(struct nmea_tokenizer tzer, struct nav_data navdata) { 227 struct token tok_time = nmea_tokenizer_get(tzer,1); 228 struct token tok_dataValid = nmea_tokenizer_get(tzer,2); 229 struct token tok_latitude = nmea_tokenizer_get(tzer,3); 230 struct token tok_latitudeHemi = nmea_tokenizer_get(tzer,4); 231 struct token tok_longitude = nmea_tokenizer_get(tzer,5); 232 struct token tok_longitudeHemi = nmea_tokenizer_get(tzer,6); 233 struct token tok_speed = nmea_tokenizer_get(tzer,7); 234 struct token tok_heading = nmea_tokenizer_get(tzer,8); 235 struct token tok_date = nmea_tokenizer_get(tzer,9); 236 struct token tok_fixMode = nmea_tokenizer_get(tzer,12); 237 238 navdata->is_fixed = is_mode_fixed(tok_fixMode.p[0]); 239 if (navdata->is_fixed) { 240 navdata->time = convert_gnss_time(tok_time); 241 navdata->lat = convert_latitude(tok_latitude, tok_latitudeHemi.p[0]); 242 navdata->lon = convert_longitude(tok_longitude, tok_longitudeHemi.p[0]); 243 navdata->speed = str2float(tok_speed.p, tok_speed.end); 244 navdata->heading = str2float(tok_heading.p, tok_heading.end); 245 } 246 247 if (tok_dataValid.p[0] == 'A') 248 navdata->date = convert_gnss_date(tok_date); 249 }