@@ -5,9 +5,9 @@ use chrono::{NaiveDate, NaiveTime};
55use nom;
66use nom:: { digit, AsChar , IError , IResult } ;
77
8+ use FixType ;
89use GnssType ;
910use Satellite ;
10- use FixType ;
1111use SentenceType ;
1212
1313pub struct NmeaSentence < ' a > {
@@ -69,8 +69,12 @@ named!(
6969 do_parse_nmea_sentence<NmeaSentence >,
7070 map_res!(
7171 do_parse!(
72- char !( '$' ) >> talker_id: take!( 2 ) >> message_id: take!( 3 ) >> char !( ',' )
73- >> data: take_until!( "*" ) >> cs: parse_checksum
72+ char !( '$' )
73+ >> talker_id: take!( 2 )
74+ >> message_id: take!( 3 )
75+ >> char !( ',' )
76+ >> data: take_until!( "*" )
77+ >> cs: parse_checksum
7478 >> ( talker_id, message_id, data, cs)
7579 ) ,
7680 construct_sentence
@@ -128,9 +132,12 @@ named!(
128132 parse_gsv_sat_info<Satellite >,
129133 map_res!(
130134 do_parse!(
131- prn: map_res!( digit, parse_num:: <u32 >) >> char !( ',' )
132- >> elevation: opt!( map_res!( digit, parse_num:: <i32 >) ) >> char !( ',' )
133- >> azimuth: opt!( map_res!( digit, parse_num:: <i32 >) ) >> char !( ',' )
135+ prn: map_res!( digit, parse_num:: <u32 >)
136+ >> char !( ',' )
137+ >> elevation: opt!( map_res!( digit, parse_num:: <i32 >) )
138+ >> char !( ',' )
139+ >> azimuth: opt!( map_res!( digit, parse_num:: <i32 >) )
140+ >> char !( ',' )
134141 >> signal_noise: opt!( map_res!( complete!( digit) , parse_num:: <i32 >) )
135142 >> dbg!( alt!( eof!( ) | tag!( "," ) ) )
136143 >> ( prn, elevation, azimuth, signal_noise)
@@ -163,9 +170,12 @@ named!(
163170 do_parse_gsv<GsvData >,
164171 map_res!(
165172 do_parse!(
166- number_of_sentences: map_res!( digit, parse_num:: <u16 >) >> char !( ',' )
167- >> sentence_index: map_res!( digit, parse_num:: <u16 >) >> char !( ',' )
168- >> total_number_of_sats: map_res!( digit, parse_num:: <u16 >) >> char !( ',' )
173+ number_of_sentences: map_res!( digit, parse_num:: <u16 >)
174+ >> char !( ',' )
175+ >> sentence_index: map_res!( digit, parse_num:: <u16 >)
176+ >> char !( ',' )
177+ >> total_number_of_sats: map_res!( digit, parse_num:: <u16 >)
178+ >> char !( ',' )
169179 >> sat0: opt!( complete!( parse_gsv_sat_info) )
170180 >> sat1: opt!( complete!( parse_gsv_sat_info) )
171181 >> sat2: opt!( complete!( parse_gsv_sat_info) )
@@ -177,7 +187,7 @@ named!(
177187 sat0,
178188 sat1,
179189 sat2,
180- sat3
190+ sat3,
181191 )
182192 ) ,
183193 construct_gsv_data
@@ -319,7 +329,8 @@ named!(
319329 parse_hms<NaiveTime >,
320330 map_res!(
321331 do_parse!(
322- hour: map_res!( take!( 2 ) , parse_num:: <u32 >) >> min: map_res!( take!( 2 ) , parse_num:: <u32 >)
332+ hour: map_res!( take!( 2 ) , parse_num:: <u32 >)
333+ >> min: map_res!( take!( 2 ) , parse_num:: <u32 >)
323334 >> sec: map_res!( take_until!( "," ) , parse_float_num:: <f64 >)
324335 >> ( hour, min, sec)
325336 ) ,
@@ -363,10 +374,13 @@ named!(
363374 map_res!(
364375 do_parse!(
365376 lat_deg: map_res!( take!( 2 ) , parse_num:: <u8 >)
366- >> lat_min: map_res!( float_number, parse_float_num:: <f64 >) >> char !( ',' )
367- >> lat_dir: one_of!( "NS" ) >> char !( ',' )
377+ >> lat_min: map_res!( float_number, parse_float_num:: <f64 >)
378+ >> char !( ',' )
379+ >> lat_dir: one_of!( "NS" )
380+ >> char !( ',' )
368381 >> lon_deg: map_res!( take!( 3 ) , parse_num:: <u8 >)
369- >> lon_min: map_res!( float_number, parse_float_num:: <f64 >) >> char !( ',' )
382+ >> lon_min: map_res!( float_number, parse_float_num:: <f64 >)
383+ >> char !( ',' )
370384 >> lon_dir: one_of!( "EW" )
371385 >> ( lat_deg, lat_min, lat_dir, lon_deg, lon_min, lon_dir)
372386 ) ,
@@ -409,8 +423,12 @@ named!(
409423 do_parse_gga<GgaData >,
410424 map_res!(
411425 do_parse!(
412- time: opt!( complete!( parse_hms) ) >> char !( ',' ) >> lat_lon: parse_lat_lon >> char !( ',' )
413- >> fix_quality: dbg!( one_of!( "012345678" ) ) >> char !( ',' )
426+ time: opt!( complete!( parse_hms) )
427+ >> char !( ',' )
428+ >> lat_lon: parse_lat_lon
429+ >> char !( ',' )
430+ >> fix_quality: dbg!( one_of!( "012345678" ) )
431+ >> char !( ',' )
414432 >> tracked_sats: opt!( complete!( map_res!( digit, parse_num:: <u32 >) ) )
415433 >> char !( ',' )
416434 >> hdop: opt!( complete!( map_res!( float_number, parse_float_num:: <f32 >) ) )
@@ -432,7 +450,7 @@ named!(
432450 tracked_sats,
433451 hdop,
434452 altitude,
435- geoid_height
453+ geoid_height,
436454 )
437455 ) ,
438456 |data: (
@@ -442,7 +460,7 @@ named!(
442460 Option <u32 >,
443461 Option <f32 >,
444462 Option <f32 >,
445- Option <f32 >
463+ Option <f32 >,
446464 ) |
447465 -> std:: result:: Result <GgaData , & ' static str > {
448466 Ok ( GgaData {
@@ -557,8 +575,10 @@ named!(
557575 parse_date<NaiveDate >,
558576 map_res!(
559577 do_parse!(
560- day: map_res!( take!( 2 ) , parse_num:: <u8 >) >> month: map_res!( take!( 2 ) , parse_num:: <u8 >)
561- >> year: map_res!( take!( 2 ) , parse_num:: <u8 >) >> ( day, month, year)
578+ day: map_res!( take!( 2 ) , parse_num:: <u8 >)
579+ >> month: map_res!( take!( 2 ) , parse_num:: <u8 >)
580+ >> year: map_res!( take!( 2 ) , parse_num:: <u8 >)
581+ >> ( day, month, year)
562582 ) ,
563583 |data: ( u8 , u8 , u8 ) | -> Result <NaiveDate , & ' static str > {
564584 let ( day, month, year) = ( u32 :: from( data. 0 ) , u32 :: from( data. 1 ) , i32 :: from( data. 2 ) ) ;
@@ -577,8 +597,12 @@ named!(
577597 do_parse_rmc<RmcData >,
578598 map_res!(
579599 do_parse!(
580- time: opt!( complete!( parse_hms) ) >> char !( ',' ) >> status_of_fix: one_of!( "ADV" )
581- >> char !( ',' ) >> lat_lon: parse_lat_lon >> char !( ',' )
600+ time: opt!( complete!( parse_hms) )
601+ >> char !( ',' )
602+ >> status_of_fix: one_of!( "ADV" )
603+ >> char !( ',' )
604+ >> lat_lon: parse_lat_lon
605+ >> char !( ',' )
582606 >> speed_over_ground:
583607 opt!( complete!( map_res!( float_number, parse_float_num:: <f32 >) ) )
584608 >> char !( ',' )
@@ -590,7 +614,7 @@ named!(
590614 lat_lon,
591615 speed_over_ground,
592616 true_course,
593- date
617+ date,
594618 )
595619 ) ,
596620 |data: (
@@ -599,7 +623,7 @@ named!(
599623 Option <( f64 , f64 ) >,
600624 Option <f32 >,
601625 Option <f32 >,
602- Option <NaiveDate >
626+ Option <NaiveDate >,
603627 ) |
604628 -> Result <RmcData , & ' static str > {
605629 Ok ( RmcData {
@@ -739,9 +763,12 @@ type GsaTail = (Vec<Option<u32>>, Option<f32>, Option<f32>, Option<f32>);
739763named ! (
740764 do_parse_gsa_tail<GsaTail >,
741765 do_parse!(
742- prns: gsa_prn_fields_parse >> pdop: map_res!( float_number, parse_float_num:: <f32 >)
743- >> char !( ',' ) >> hdop: map_res!( float_number, parse_float_num:: <f32 >)
744- >> char !( ',' ) >> vdop: map_res!( float_number, parse_float_num:: <f32 >)
766+ prns: gsa_prn_fields_parse
767+ >> pdop: map_res!( float_number, parse_float_num:: <f32 >)
768+ >> char !( ',' )
769+ >> hdop: map_res!( float_number, parse_float_num:: <f32 >)
770+ >> char !( ',' )
771+ >> vdop: map_res!( float_number, parse_float_num:: <f32 >)
745772 >> ( prns, Some ( pdop) , Some ( hdop) , Some ( vdop) )
746773 )
747774) ;
@@ -762,7 +789,10 @@ named!(
762789 do_parse_gsa<GsaData >,
763790 map_res!(
764791 do_parse!(
765- mode1: one_of!( "MA" ) >> char !( ',' ) >> mode2: one_of!( "123" ) >> char !( ',' )
792+ mode1: one_of!( "MA" )
793+ >> char !( ',' )
794+ >> mode2: one_of!( "123" )
795+ >> char !( ',' )
766796 >> tail: alt_complete!( do_parse_empty_gsa_tail | do_parse_gsa_tail)
767797 >> ( mode1, mode2, tail)
768798 ) ,
@@ -948,9 +978,13 @@ named!(
948978 map_res!(
949979 do_parse!(
950980 true_course: opt!( map_res!( complete!( float_number) , parse_float_num:: <f32 >) )
951- >> char !( ',' ) >> opt!( complete!( char !( 'T' ) ) ) >> char !( ',' )
981+ >> char !( ',' )
982+ >> opt!( complete!( char !( 'T' ) ) )
983+ >> char !( ',' )
952984 >> magn_course: opt!( map_res!( complete!( float_number) , parse_float_num:: <f32 >) )
953- >> char !( ',' ) >> opt!( complete!( char !( 'M' ) ) ) >> char !( ',' )
985+ >> char !( ',' )
986+ >> opt!( complete!( char !( 'M' ) ) )
987+ >> char !( ',' )
954988 >> knots_ground_speed:
955989 opt!( map_res!( complete!( float_number) , parse_float_num:: <f32 >) )
956990 >> char !( ',' ) >> opt!( complete!( char !( 'N' ) ) )
0 commit comments