Ticket #21007: ticket_21007_4.patch
| File ticket_21007_4.patch, 44.5 KB (added by , 14 months ago) |
|---|
-
new file nodist/data/btnmea_GST.nmea
diff --git a/nodist/data/btnmea_GST.nmea b/nodist/data/btnmea_GST.nmea new file mode 100644 index 000000000..d8834caab
- + 1 $GNRMC,094358.60,A,4741.0296044,N,00245.8808349,W,6.478,170.28,090824,,,R,V*06 2 $GNGGA,094358.60,4741.0296044,N,00245.8808349,W,4,12,0.52,43.294,M,49.023,M,1.6,0000*47 3 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,0.94,0.52,0.78,1*0C 4 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,0.94,0.52,0.78,2*08 5 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,0.94,0.52,0.78,3*09 6 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,0.94,0.52,0.78,4*0C 7 $GNGSA,A,3,,,,,,,,,,,,,0.94,0.52,0.78,5*00 8 $GPGSV,3,1,11,02,79,062,46,03,56,231,45,08,24,159,46,14,24,267,30,1*6F 9 $GPGSV,3,2,11,17,32,310,47,19,07,317,36,21,63,091,48,22,25,293,44,1*61 10 $GPGSV,3,3,11,32,24,047,39,36,30,146,45,49,35,170,45,1*52 11 $GPGSV,2,1,07,03,56,231,44,04,07,178,24,08,24,159,41,14,24,267,26,6*6E 12 $GPGSV,2,2,07,17,32,310,42,28,00,085,14,32,24,047,40,6*55 13 $GPGSV,1,1,01,40,13,115,,0*57 14 $GLGSV,2,1,08,67,42,041,47,68,68,138,50,69,25,189,36,74,11,282,34,1*7C 15 $GLGSV,2,2,08,75,13,334,44,82,29,112,47,83,68,072,37,84,34,314,39,1*77 16 $GLGSV,2,1,07,67,42,041,45,68,68,138,43,69,25,189,36,75,13,334,39,3*73 17 $GLGSV,2,2,07,82,29,112,42,83,68,072,42,84,34,314,35,3*45 18 $GAGSV,3,1,10,03,22,044,40,07,25,162,45,08,45,101,43,13,67,070,47,2*7F 19 $GAGSV,3,2,10,14,33,159,46,15,16,095,33,21,15,222,26,26,51,294,48,2*71 20 $GAGSV,3,3,10,31,13,325,37,33,04,282,28,2*71 21 $GAGSV,3,1,09,03,22,044,41,07,25,162,43,08,45,101,44,13,67,070,45,7*70 22 $GAGSV,3,2,09,14,33,159,47,15,16,095,32,21,15,222,34,26,51,294,44,7*73 23 $GAGSV,3,3,09,31,13,325,35,7*48 24 $GBGSV,2,1,08,06,12,062,27,14,33,049,46,16,13,059,30,27,65,299,47,1*7E 25 $GBGSV,2,2,08,28,64,132,47,30,15,306,32,33,57,068,46,41,56,182,47,1*76 26 $GBGSV,1,1,03,06,12,062,30,14,33,049,48,16,13,059,28,B*33 27 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 28 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 29 $GQGSV,1,1,00,0*64 30 $GNGST,094358.60,17,0.015,0.012,27,0.010,0.010,0.010*49 31 $GNRMC,094359.60,A,4741.0278355,N,00245.8803866,W,6.430,170.66,090824,,,R,V*0F 32 $GNGGA,094359.60,4741.0278355,N,00245.8803866,W,4,12,0.52,43.292,M,49.023,M,1.6,0000*4E 33 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,0.94,0.52,0.78,1*0C 34 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,0.94,0.52,0.78,2*08 35 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,0.94,0.52,0.78,3*09 36 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,0.94,0.52,0.78,4*0C 37 $GNGSA,A,3,,,,,,,,,,,,,0.94,0.52,0.78,5*00 38 $GPGSV,3,1,11,02,79,062,47,03,57,232,46,08,24,159,45,14,24,267,26,1*6B 39 $GPGSV,3,2,11,17,32,310,45,19,07,317,40,21,63,091,48,22,25,293,31,1*60 40 $GPGSV,3,3,11,32,24,047,39,36,30,146,45,49,35,170,45,1*52 41 $GPGSV,2,1,07,03,57,232,44,04,07,178,22,08,24,159,43,14,24,267,31,6*6E 42 $GPGSV,2,2,07,17,32,310,43,28,00,085,13,32,24,047,34,6*50 43 $GPGSV,1,1,01,40,13,115,,0*57 44 $GLGSV,2,1,08,67,42,041,48,68,68,138,50,69,25,189,38,74,11,282,29,1*71 45 $GLGSV,2,2,08,75,13,334,45,82,29,112,46,83,68,072,37,84,34,314,37,1*79 46 $GLGSV,2,1,07,67,42,041,44,68,68,138,44,69,25,189,27,75,13,334,41,3*7A 47 $GLGSV,2,2,07,82,29,112,43,83,68,072,42,84,34,314,37,3*46 48 $GAGSV,3,1,10,03,22,044,35,07,25,162,46,08,45,101,43,13,67,070,47,2*7E 49 $GAGSV,3,2,10,14,33,159,46,15,16,095,34,21,15,222,26,26,51,294,48,2*76 50 $GAGSV,3,3,10,31,13,325,39,33,04,282,28,2*7F 51 $GAGSV,3,1,09,03,22,044,33,07,25,162,43,08,45,101,43,13,67,070,44,7*73 52 $GAGSV,3,2,09,14,33,159,47,15,16,095,32,21,15,222,29,26,51,294,43,7*78 53 $GAGSV,3,3,09,31,13,325,37,7*4A 54 $GBGSV,2,1,08,06,12,062,27,14,33,049,46,16,13,059,30,27,65,299,47,1*7E 55 $GBGSV,2,2,08,28,64,132,47,30,15,306,42,33,57,068,47,41,56,182,46,1*71 56 $GBGSV,1,1,03,06,12,062,30,14,33,049,47,16,13,059,28,B*3C 57 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 58 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 59 $GQGSV,1,1,00,0*64 60 $GNGST,094359.60,20,0.018,0.014,33,0.010,0.010,0.012*40 61 $GNRMC,094359.60,A,4741.0278355,N,00245.8803866,W,6.430,170.66,090824,,,R,V*0F 62 $GNGGA,094359.60,4741.0278355,N,00245.8803866,W,4,12,0.52,43.292,M,49.023,M,1.6,0000*4E 63 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,0.94,0.52,0.78,1*0C 64 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,0.94,0.52,0.78,2*08 65 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,0.94,0.52,0.78,3*09 66 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,0.94,0.52,0.78,4*0C 67 $GNGSA,A,3,,,,,,,,,,,,,0.94,0.52,0.78,5*00 68 $GPGSV,3,1,11,02,79,062,47,03,57,232,46,08,24,159,45,14,24,267,26,1*6B 69 $GPGSV,3,2,11,17,32,310,45,19,07,317,40,21,63,091,48,22,25,293,31,1*60 70 $GPGSV,3,3,11,32,24,047,39,36,30,146,45,49,35,170,45,1*52 71 $GPGSV,2,1,07,03,57,232,44,04,07,178,22,08,24,159,43,14,24,267,31,6*6E 72 $GPGSV,2,2,07,17,32,310,43,28,00,085,13,32,24,047,34,6*50 73 $GPGSV,1,1,01,40,13,115,,0*57 74 $GLGSV,2,1,08,67,42,041,48,68,68,138,50,69,25,189,38,74,11,282,29,1*71 75 $GLGSV,2,2,08,75,13,334,45,82,29,112,46,83,68,072,37,84,34,314,37,1*79 76 $GLGSV,2,1,07,67,42,041,44,68,68,138,44,69,25,189,27,75,13,334,41,3*7A 77 $GLGSV,2,2,07,82,29,112,43,83,68,072,42,84,34,314,37,3*46 78 $GAGSV,3,1,10,03,22,044,35,07,25,162,46,08,45,101,43,13,67,070,47,2*7E 79 $GAGSV,3,2,10,14,33,159,46,15,16,095,34,21,15,222,26,26,51,294,48,2*76 80 $GAGSV,3,3,10,31,13,325,39,33,04,282,28,2*7F 81 $GAGSV,3,1,09,03,22,044,33,07,25,162,43,08,45,101,43,13,67,070,44,7*73 82 $GAGSV,3,2,09,14,33,159,47,15,16,095,32,21,15,222,29,26,51,294,43,7*78 83 $GAGSV,3,3,09,31,13,325,37,7*4A 84 $GBGSV,2,1,08,06,12,062,27,14,33,049,46,16,13,059,30,27,65,299,47,1*7E 85 $GBGSV,2,2,08,28,64,132,47,30,15,306,42,33,57,068,47,41,56,182,46,1*71 86 $GBGSV,1,1,03,06,12,062,30,14,33,049,47,16,13,059,28,B*3C 87 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 88 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 89 $GQGSV,1,1,00,0*64 90 $GNGST,094359.60,20,0.018,0.014,33,0.010,0.010,0.012*40 91 $GNRMC,094400.60,A,4741.0262091,N,00245.8799730,W,5.629,170.54,090824,,,R,V*0C 92 $GNGGA,094400.60,4741.0262091,N,00245.8799730,W,4,12,0.57,43.293,M,49.023,M,1.6,0000*41 93 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,1.00,0.57,0.83,1*01 94 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,1.00,0.57,0.83,2*05 95 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,1.00,0.57,0.83,3*04 96 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,1.00,0.57,0.83,4*01 97 $GNGSA,A,3,,,,,,,,,,,,,1.00,0.57,0.83,5*0D 98 $GPGSV,3,1,11,02,79,062,46,03,57,232,45,08,24,159,44,14,24,267,35,1*6A 99 $GPGSV,3,2,11,17,32,310,45,19,07,317,44,21,63,091,47,22,25,293,32,1*68 100 $GPGSV,3,3,11,32,24,047,39,36,30,146,44,49,35,170,45,1*53 101 $GPGSV,2,1,07,03,57,232,44,04,08,178,21,08,24,159,43,14,24,267,35,6*66 102 $GPGSV,2,2,07,17,32,310,44,28,00,085,12,32,24,047,37,6*55 103 $GPGSV,1,1,01,40,13,115,,0*57 104 $GLGSV,2,1,08,67,42,041,50,68,68,138,50,69,25,189,36,74,11,282,28,1*77 105 $GLGSV,2,2,08,75,13,334,46,82,29,112,47,83,68,072,36,84,34,314,36,1*7B 106 $GLGSV,2,1,07,67,42,041,45,68,68,138,44,69,25,189,38,75,13,334,42,3*76 107 $GLGSV,2,2,07,82,29,112,42,83,68,072,42,84,34,314,37,3*47 108 $GAGSV,3,1,10,03,22,044,41,07,25,162,46,08,45,101,43,13,67,070,47,2*7D 109 $GAGSV,3,2,10,14,33,159,47,15,16,095,40,21,15,222,27,26,51,294,49,2*74 110 $GAGSV,3,3,10,31,13,325,41,33,04,282,28,2*70 111 $GAGSV,3,1,09,03,22,044,35,07,25,162,45,08,45,101,41,13,67,070,45,7*70 112 $GAGSV,3,2,09,14,33,159,45,15,16,095,35,21,15,222,31,26,51,294,43,7*74 113 $GAGSV,3,3,09,31,13,325,39,7*44 114 $GBGSV,2,1,08,06,12,062,26,14,33,049,47,16,13,059,28,27,65,299,46,1*76 115 $GBGSV,2,2,08,28,64,132,47,30,15,306,34,33,57,068,47,41,56,182,46,1*70 116 $GBGSV,1,1,03,06,12,062,30,14,33,049,48,16,13,059,35,B*3F 117 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 118 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 119 $GQGSV,1,1,00,0*64 120 $GNGST,094400.60,7.2,0.015,0.012,35,0.010,0.010,0.011*6C 121 $GNRMC,094401.60,A,4741.0248356,N,00245.8796464,W,4.742,171.25,090824,,,R,V*0A 122 $GNGGA,094401.60,4741.0248356,N,00245.8796464,W,4,12,0.55,43.273,M,49.023,M,1.6,0000*41 123 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,0.98,0.55,0.81,1*01 124 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,0.98,0.55,0.81,2*05 125 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,0.98,0.55,0.81,3*04 126 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,0.98,0.55,0.81,4*01 127 $GNGSA,A,3,,,,,,,,,,,,,0.98,0.55,0.81,5*0D 128 $GPGSV,3,1,11,02,79,062,46,03,57,232,45,08,24,159,46,14,24,267,38,1*65 129 $GPGSV,3,2,11,17,32,310,37,19,07,317,42,21,63,091,48,22,25,293,27,1*60 130 $GPGSV,3,3,11,32,24,047,38,36,30,146,37,49,35,170,44,1*57 131 $GPGSV,2,1,07,03,57,232,43,04,08,178,21,08,24,159,42,14,24,267,35,6*60 132 $GPGSV,2,2,07,17,32,310,38,28,00,085,13,32,24,047,37,6*5F 133 $GPGSV,1,1,01,40,13,115,,0*57 134 $GLGSV,2,1,08,67,42,041,49,68,68,138,50,69,25,189,30,74,11,282,27,1*76 135 $GLGSV,2,2,08,75,13,334,48,82,29,112,46,83,68,072,36,84,34,314,36,1*74 136 $GLGSV,2,1,07,67,42,041,44,68,68,138,44,69,25,189,34,75,13,334,41,3*78 137 $GLGSV,2,2,07,82,29,112,40,83,68,072,42,84,34,314,35,3*47 138 $GAGSV,3,1,10,03,22,044,41,07,25,162,46,08,45,101,43,13,67,070,47,2*7D 139 $GAGSV,3,2,10,14,33,159,47,15,16,095,31,21,15,222,26,26,51,294,48,2*72 140 $GAGSV,3,3,10,31,13,325,38,33,04,282,27,2*71 141 $GAGSV,3,1,09,03,22,044,31,07,25,162,43,08,45,101,42,13,67,070,46,7*72 142 $GAGSV,3,2,09,14,33,159,46,15,16,095,28,21,15,222,31,26,51,294,45,7*7D 143 $GAGSV,3,3,09,31,13,325,39,7*44 144 $GBGSV,2,1,08,06,12,062,32,14,33,049,48,16,13,059,36,27,65,299,46,1*73 145 $GBGSV,2,2,08,28,64,132,48,30,15,306,25,33,57,068,46,41,56,182,46,1*7E 146 $GBGSV,1,1,03,06,12,062,33,14,33,049,49,16,13,059,35,B*3D 147 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 148 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 149 $GQGSV,1,1,00,0*64 150 $GNGST,094401.60,16,0.013,0.010,36,0.010,0.010,0.010*47 151 $GNRMC,094402.60,A,4741.0236410,N,00245.8793386,W,4.374,171.80,090824,,,R,V*05 152 $GNGGA,094402.60,4741.0236410,N,00245.8793386,W,4,12,0.55,43.255,M,49.023,M,0.6,0000*45 153 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,0.98,0.55,0.81,1*01 154 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,0.98,0.55,0.81,2*05 155 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,0.98,0.55,0.81,3*04 156 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,0.98,0.55,0.81,4*01 157 $GNGSA,A,3,,,,,,,,,,,,,0.98,0.55,0.81,5*0D 158 $GPGSV,3,1,11,02,79,062,46,03,57,232,33,08,24,159,45,14,24,267,36,1*69 159 $GPGSV,3,2,11,17,32,310,36,19,07,317,34,21,63,091,48,22,25,293,36,1*60 160 $GPGSV,3,3,11,32,24,047,37,36,30,146,40,49,35,170,45,1*59 161 $GPGSV,2,1,07,03,57,232,32,04,08,178,22,08,24,159,43,14,24,267,40,6*66 162 $GPGSV,2,2,07,17,32,310,37,28,00,085,13,32,24,047,35,6*52 163 $GPGSV,1,1,01,40,13,115,,0*57 164 $GLGSV,3,1,09,67,42,041,47,68,68,138,50,69,25,189,43,74,11,282,27,1*7C 165 $GLGSV,3,2,09,75,13,334,47,77,,,20,82,29,112,46,83,68,072,36,1*41 166 $GLGSV,3,3,09,84,34,314,33,1*4C 167 $GLGSV,2,1,07,67,42,041,43,68,68,138,45,69,25,189,24,75,13,334,40,3*7E 168 $GLGSV,2,2,07,82,29,112,43,83,68,072,42,84,34,314,31,3*40 169 $GAGSV,3,1,10,03,22,044,40,07,25,162,44,08,45,101,45,13,67,070,47,2*78 170 $GAGSV,3,2,10,14,33,159,47,15,16,095,24,21,15,222,25,26,51,294,49,2*74 171 $GAGSV,3,3,10,31,13,325,41,33,04,282,28,2*70 172 $GAGSV,3,1,09,03,22,044,26,07,25,162,45,08,45,101,45,13,67,070,46,7*75 173 $GAGSV,3,2,09,14,33,159,46,15,16,095,28,21,15,222,30,26,51,294,45,7*7C 174 $GAGSV,3,3,09,31,13,325,41,7*4B 175 $GBGSV,2,1,08,06,12,062,35,14,33,049,47,16,13,059,33,27,65,299,47,1*7F 176 $GBGSV,2,2,08,28,64,132,47,30,15,306,30,33,57,068,47,41,56,182,46,1*74 177 $GBGSV,1,1,03,06,12,062,30,14,33,049,46,16,13,059,33,B*37 178 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 179 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 180 $GQGSV,1,1,00,0*64 181 $GNGST,094402.60,23,0.018,0.013,36,0.010,0.010,0.012*48 182 $GNRMC,094403.60,A,4741.0225078,N,00245.8790916,W,3.826,170.91,090824,,,R,V*06 183 $GNGGA,094403.60,4741.0225078,N,00245.8790916,W,4,12,0.55,43.246,M,49.023,M,1.6,0000*4F 184 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,0.98,0.55,0.81,1*01 185 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,0.98,0.55,0.81,2*05 186 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,0.98,0.55,0.81,3*04 187 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,0.98,0.55,0.81,4*01 188 $GNGSA,A,3,,,,,,,,,,,,,0.98,0.55,0.81,5*0D 189 $GPGSV,3,1,11,02,79,062,47,03,57,232,33,08,24,159,47,14,24,267,33,1*6F 190 $GPGSV,3,2,11,17,32,310,37,19,07,317,28,21,63,091,48,22,25,293,27,1*6C 191 $GPGSV,3,3,11,32,24,047,36,36,30,146,39,49,35,170,45,1*56 192 $GPGSV,2,1,07,03,57,232,32,04,08,178,22,08,24,159,42,14,24,267,32,6*62 193 $GPGSV,2,2,07,17,32,310,34,28,00,085,12,32,24,047,35,6*50 194 $GPGSV,1,1,01,40,13,115,,0*57 195 $GLGSV,3,1,09,67,42,041,49,68,68,138,51,69,25,189,38,74,11,282,33,1*7A 196 $GLGSV,3,2,09,75,13,334,47,77,,,21,82,29,112,45,83,68,072,38,1*4D 197 $GLGSV,3,3,09,84,34,314,33,1*4C 198 $GLGSV,2,1,07,67,42,041,42,68,68,138,44,69,25,189,26,75,13,334,42,3*7E 199 $GLGSV,2,2,07,82,29,112,44,83,68,072,42,84,34,314,31,3*47 200 $GAGSV,3,1,10,03,22,044,39,07,25,162,46,08,45,101,46,13,67,070,45,2*75 201 $GAGSV,3,2,10,14,33,159,48,15,16,095,30,21,15,222,31,26,51,294,47,2*75 202 $GAGSV,3,3,10,31,13,325,38,33,04,282,27,2*71 203 $GAGSV,3,1,09,03,22,044,35,07,25,162,46,08,45,101,45,13,67,070,46,7*74 204 $GAGSV,3,2,09,14,33,159,43,15,16,095,28,21,15,222,34,26,51,294,44,7*7C 205 $GAGSV,3,3,09,31,13,325,37,7*4A 206 $GBGSV,2,1,08,06,12,062,33,14,33,049,47,16,13,059,37,27,65,299,46,1*7C 207 $GBGSV,2,2,08,28,64,132,48,30,15,306,37,33,57,068,47,41,56,182,45,1*7F 208 $GBGSV,1,1,03,06,12,062,36,14,33,049,49,16,13,059,31,B*3C 209 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 210 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 211 $GQGSV,1,1,00,0*64 212 $GNGST,094403.60,23,0.014,0.011,55,0.010,0.010,0.010*40 213 $GNRMC,094404.60,A,4741.0216037,N,00245.8788593,W,2.720,171.68,090824,,,R,V*0D 214 $GNGGA,094404.60,4741.0216037,N,00245.8788593,W,4,12,0.54,43.238,M,49.023,M,1.6,0000*43 215 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,0.99,0.54,0.83,1*03 216 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,0.99,0.54,0.83,2*07 217 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,0.99,0.54,0.83,3*06 218 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,0.99,0.54,0.83,4*03 219 $GNGSA,A,3,,,,,,,,,,,,,0.99,0.54,0.83,5*0F 220 $GPGSV,3,1,11,02,79,062,47,03,57,232,38,08,23,159,42,14,24,267,33,1*66 221 $GPGSV,3,2,11,17,32,310,28,19,07,317,32,21,63,091,48,22,25,293,27,1*69 222 $GPGSV,3,3,11,32,24,047,37,36,30,146,37,49,35,170,45,1*59 223 $GPGSV,2,1,07,03,57,232,28,04,08,178,22,08,23,159,40,14,24,267,37,6*69 224 $GPGSV,2,2,07,17,32,310,34,28,00,085,13,32,24,047,31,6*55 225 $GPGSV,1,1,01,40,13,115,,0*57 226 $GLGSV,3,1,09,67,42,041,46,68,68,138,49,69,25,189,38,74,11,282,27,1*79 227 $GLGSV,3,2,09,75,13,334,46,77,,,21,82,29,112,42,83,68,072,39,1*4A 228 $GLGSV,3,3,09,84,34,314,32,1*4D 229 $GLGSV,2,1,07,67,42,041,46,68,68,138,45,69,25,189,32,75,13,334,45,3*79 230 $GLGSV,2,2,07,82,29,112,39,83,68,072,41,84,34,314,34,3*4B 231 $GAGSV,3,1,10,03,22,044,28,07,25,162,44,08,45,101,47,13,67,070,46,2*75 232 $GAGSV,3,2,10,14,33,159,48,15,16,095,29,21,15,222,25,26,51,294,29,2*70 233 $GAGSV,3,3,10,31,13,325,32,33,04,282,24,2*78 234 $GAGSV,3,1,09,03,22,044,32,07,25,162,44,08,45,101,46,13,67,070,47,7*73 235 $GAGSV,3,2,09,14,33,159,45,15,16,095,27,21,15,222,30,26,51,294,32,7*70 236 $GAGSV,3,3,09,31,13,325,30,7*4D 237 $GBGSV,2,1,08,06,12,062,28,14,33,049,48,16,13,059,28,27,65,299,44,1*75 238 $GBGSV,2,2,08,28,64,132,47,30,15,306,36,33,57,068,47,41,56,182,46,1*72 239 $GBGSV,1,1,03,06,12,062,30,14,33,049,51,16,13,059,35,B*37 240 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 241 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 242 $GQGSV,1,1,00,0*64 243 $GNGST,094404.60,28,0.026,0.022,83,0.010,0.010,0.016*40 244 $GNRMC,094405.60,A,4741.0211014,N,00245.8787618,W,1.248,174.53,090824,,,R,V*00 245 $GNGGA,094405.60,4741.0211014,N,00245.8787618,W,4,12,0.58,43.252,M,49.023,M,1.6,0000*4B 246 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,1.04,0.58,0.87,1*0E 247 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,1.04,0.58,0.87,2*0A 248 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,1.04,0.58,0.87,3*0B 249 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,1.04,0.58,0.87,4*0E 250 $GNGSA,A,3,,,,,,,,,,,,,1.04,0.58,0.87,5*02 251 $GPGSV,3,1,11,02,79,062,48,03,57,232,36,08,23,159,42,14,24,267,31,1*65 252 $GPGSV,3,2,11,17,32,310,33,19,07,317,32,21,63,091,47,22,25,293,33,1*69 253 $GPGSV,3,3,11,32,24,047,36,36,30,146,39,49,35,170,45,1*56 254 $GPGSV,2,1,07,03,57,232,33,04,08,178,21,08,23,159,36,14,24,267,34,6*62 255 $GPGSV,2,2,07,17,32,310,31,28,00,085,13,32,24,047,36,6*57 256 $GPGSV,1,1,01,40,13,115,,0*57 257 $GLGSV,3,1,09,67,42,041,47,68,68,138,49,69,25,189,34,74,11,282,27,1*74 258 $GLGSV,3,2,09,75,13,334,49,77,,,20,82,29,112,37,83,68,072,39,1*46 259 $GLGSV,3,3,09,84,34,314,30,1*4F 260 $GLGSV,2,1,07,67,42,041,43,68,68,138,45,69,25,189,30,75,13,334,43,3*78 261 $GLGSV,2,2,07,82,29,112,40,83,68,072,41,84,34,314,30,3*41 262 $GAGSV,3,1,10,03,22,044,38,07,25,162,41,08,45,101,46,13,67,070,46,2*70 263 $GAGSV,3,2,10,14,33,159,49,15,16,095,27,21,15,222,31,26,51,294,35,2*77 264 $GAGSV,3,3,10,31,13,325,32,33,04,282,25,2*79 265 $GAGSV,3,1,09,03,22,044,42,07,25,162,42,08,45,101,42,13,67,070,45,7*74 266 $GAGSV,3,2,09,14,33,159,44,15,16,095,25,21,15,222,28,26,51,294,32,7*7A 267 $GAGSV,3,3,09,31,13,325,34,7*49 268 $GBGSV,2,1,08,06,12,062,32,14,33,049,48,16,13,059,27,27,65,299,45,1*70 269 $GBGSV,2,2,08,28,64,132,47,30,15,306,37,33,57,068,45,41,56,182,45,1*72 270 $GBGSV,1,1,03,06,12,062,36,14,33,049,49,16,13,059,30,B*3D 271 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 272 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 273 $GQGSV,1,1,00,0*64 274 $GNGST,094405.60,15,0.021,0.015,86,0.010,0.010,0.011*4E 275 $GNRMC,094406.60,A,4741.0208498,N,00245.8787057,W,0.840,173.75,090824,,,R,V*06 276 $GNGGA,094406.60,4741.0208498,N,00245.8787057,W,4,12,0.53,43.270,M,49.023,M,0.6,0000*47 277 $GNGSA,A,3,02,03,32,14,17,08,21,22,,,,,0.95,0.53,0.79,1*0D 278 $GNGSA,A,3,82,75,69,84,83,67,68,,,,,,0.95,0.53,0.79,2*09 279 $GNGSA,A,3,31,03,07,08,13,15,21,26,,,,,0.95,0.53,0.79,3*08 280 $GNGSA,A,3,30,14,27,06,16,41,33,28,,,,,0.95,0.53,0.79,4*0D 281 $GNGSA,A,3,,,,,,,,,,,,,0.95,0.53,0.79,5*01 282 $GPGSV,3,1,11,02,79,062,47,03,57,232,40,08,23,159,40,14,24,267,30,1*68 283 $GPGSV,3,2,11,17,32,310,35,19,07,317,39,21,63,091,46,22,25,293,27,1*60 284 $GPGSV,3,3,11,32,24,047,43,36,30,146,40,49,35,170,45,1*5A 285 $GPGSV,2,1,07,03,57,232,33,04,08,178,23,08,23,159,35,14,24,267,34,6*63 286 $GPGSV,2,2,07,17,32,310,27,28,00,085,14,32,24,047,44,6*52 287 $GPGSV,1,1,01,40,13,115,,0*57 288 $GLGSV,3,1,09,67,42,041,46,68,68,138,50,69,25,189,38,74,11,282,32,1*75 289 $GLGSV,3,2,09,75,13,334,49,77,,,19,82,29,112,34,83,68,072,38,1*4E 290 $GLGSV,3,3,09,84,34,314,30,1*4F 291 $GLGSV,2,1,07,67,42,041,42,68,68,138,45,69,25,189,30,75,13,334,45,3*7F 292 $GLGSV,2,2,07,82,29,112,42,83,68,072,42,84,34,314,29,3*48 293 $GAGSV,3,1,10,03,22,044,32,07,25,162,41,08,45,101,45,13,67,070,46,2*79 294 $GAGSV,3,2,10,14,33,159,49,15,16,095,32,21,15,222,29,26,51,294,29,2*77 295 $GAGSV,3,3,10,31,13,325,32,33,04,282,25,2*79 296 $GAGSV,3,1,09,03,22,044,42,07,25,162,39,08,45,101,47,13,67,070,46,7*7E 297 $GAGSV,3,2,09,14,33,159,47,15,16,095,25,21,15,222,22,26,51,294,27,7*77 298 $GAGSV,3,3,09,31,13,325,33,7*4E 299 $GBGSV,2,1,08,06,12,062,27,14,33,049,47,16,13,059,35,27,65,299,44,1*79 300 $GBGSV,2,2,08,28,64,132,47,30,15,306,36,33,57,068,47,41,56,182,45,1*71 301 $GBGSV,1,1,02,06,12,062,38,14,33,049,51,B*01 302 $GBGSV,2,1,06,05,12,110,,09,09,079,,36,02,308,,39,14,048,,0*75 303 $GBGSV,2,2,06,42,09,041,,43,04,128,,0*73 304 $GQGSV,1,1,00,0*64 305 $GNGST,094406.60,21,0.018,0.014,88,0.010,0.010,0.010*4E -
src/org/openstreetmap/josm/data/gpx/GpxConstants.java
diff --git a/src/org/openstreetmap/josm/data/gpx/GpxConstants.java b/src/org/openstreetmap/josm/data/gpx/GpxConstants.java index c528bb8da..543cdfebc 100644
a b public interface GpxConstants { 178 178 /** Represents a differential GPS station. 0 <= value <= 1023 */ 179 179 String PT_DGPSID = "dgpsid"; 180 180 181 /** Standard horizontal major deviation */ 182 String PT_STD_HDEV = "stdhdev"; 183 184 /** Standard vertical major deviation */ 185 String PT_STD_VDEV = "stdvdev"; 186 181 187 /** 182 188 * Ordered list of all possible waypoint keys. 183 189 */ 184 190 List<String> WPT_KEYS = Collections.unmodifiableList(Arrays.asList(PT_ELE, PT_TIME, PT_MAGVAR, PT_GEOIDHEIGHT, 185 191 GPX_NAME, GPX_CMT, GPX_DESC, GPX_SRC, META_LINKS, PT_SYM, PT_TYPE, 186 PT_FIX, PT_SAT, PT_HDOP, PT_VDOP, PT_PDOP, PT_AGEOFDGPSDATA, PT_DGPSID ));192 PT_FIX, PT_SAT, PT_HDOP, PT_VDOP, PT_PDOP, PT_AGEOFDGPSDATA, PT_DGPSID, PT_STD_HDEV, PT_STD_VDEV)); 187 193 188 194 /** 189 195 * Ordered list of all possible route and track keys. -
src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java index 3f7081f17..606668b9f 100644
a b public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP 91 91 /** paint large dots for points **/ 92 92 private boolean large; 93 93 private int largesize; 94 private boolean hdopCircle; 94 private boolean drawCircle; 95 private int circleDataSource; 95 96 /** paint direction arrow with alternate math. may be faster **/ 96 97 private boolean arrowsFast; 97 98 /** don't draw arrows nearer to each other than this **/ … … public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP 137 138 private ColorScale dateScale; 138 139 private ColorScale directionScale; 139 140 140 /** Opacity for hdoppoints **/141 private int hdopAlpha;141 /** Opacity for circle points **/ 142 private int circleAlpha; 142 143 143 144 // lookup array to draw arrows without doing any math 144 145 private static final int ll0 = 9; … … public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP 242 243 private double maxTime; 243 244 244 245 private void setupColors() { 245 hdopAlpha = Config.getPref().getInt("hdop.color.alpha", -1); 246 //TODO rename hdop.color.alpha to circle.color.alpha with data.preferences.java.getUpdatePrefKeys? 247 circleAlpha = Config.getPref().getInt("hdop.color.alpha", -1); 246 248 velocityScale = ColorScale.createHSBScale(256); 247 249 /* Colors (without custom alpha channel, if given) for HDOP painting. */ 248 250 hdopScale = ColorScale.createHSBScale(256).makeReversed().addTitle(tr("HDOP")); … … public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP 379 381 } 380 382 large = optBool("points.large"); 381 383 largesize = optInt("points.large.size"); 382 hdopCircle = optBool("points.hdopcircle"); 384 drawCircle = optBool("points.hdopcircle"); 385 circleDataSource = optInt("points.circle.data.source"); 383 386 colored = getColorMode(); 384 387 velocityTune = optInt("colormode.velocity.tune"); 385 388 colorModeDynamic = optBool("colormode.dynamic-range"); … … public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP 856 859 } 857 860 858 861 /**************************************************************** 859 ********** STEP 3d - DRAW LARGE POINTS AND HDOP CIRCLE*********862 ********** STEP 3d - DRAW LARGE POINTS AND CIRCLES ********* 860 863 ****************************************************************/ 861 864 private void drawPointsStep3d(Graphics2D g, MapView mv, List<WayPoint> visibleSegments) { 862 if (large || hdopCircle) {865 if (large || drawCircle) { 863 866 final int halfSize = largesize / 2; 864 867 for (WayPoint trkPnt : visibleSegments) { 865 868 LatLon c = trkPnt.getCoor(); … … public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP 868 871 } 869 872 Point screen = mv.getPoint(trkPnt); 870 873 871 if (hdopCircle && trkPnt.get(GpxConstants.PT_HDOP) != null) { 872 // hdop value 873 float hdop = ((Number) trkPnt.get(GpxConstants.PT_HDOP)).floatValue(); 874 if (hdop < 0) { 875 hdop = 0; 874 if (drawCircle) { 875 float circleSize; 876 //hdop 877 if (circleDataSource == 0 && trkPnt.get(GpxConstants.PT_HDOP) != null) { 878 // circleSize value 879 circleSize = ((Number) trkPnt.get(GpxConstants.PT_HDOP)).floatValue(); 880 drawCircle(g, mv, trkPnt, screen, circleSize); 881 } 882 //horizontal standard deviation estimate 883 if (circleDataSource == 1 && trkPnt.get(GpxConstants.PT_STD_HDEV) != null) { 884 circleSize = ((Number) trkPnt.get(GpxConstants.PT_STD_HDEV)).floatValue(); 885 drawCircle(g, mv, trkPnt, screen, circleSize); 886 } 887 //age of correction 888 if (circleDataSource == 2 && trkPnt.get(GpxConstants.PT_AGEOFDGPSDATA) != null) { 889 circleSize = ((Number) trkPnt.get(GpxConstants.PT_AGEOFDGPSDATA)).floatValue(); 890 drawCircle(g, mv, trkPnt, screen, circleSize); 876 891 } 877 Color customColoringTransparent = hdopAlpha < 0 ? trkPnt.customColoring :878 new Color((trkPnt.customColoring.getRGB() & 0x00ffffff) | (hdopAlpha << 24), true);879 g.setColor(customColoringTransparent);880 // hdop circles881 int hdopp = mv.getPoint(new LatLon(882 trkPnt.getCoor().lat(),883 trkPnt.getCoor().lon() + 2d * 6 * hdop * 360 / 40000000d)).x - screen.x;884 g.drawArc(screen.x - hdopp / 2, screen.y - hdopp / 2, hdopp, hdopp, 0, 360);885 892 } 886 893 if (large) { 887 894 // color the large GPS points like the gps lines … … public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP 900 907 g.fillRect(screen.x - halfSize, screen.y - halfSize, largesize, largesize); 901 908 } 902 909 } // end for trkpnt 903 } // end if large || hdopcircle 910 } // end if large || drawCircle 911 } 912 913 private void drawCircle(Graphics2D g, MapView mv, WayPoint trkPnt, Point screen, float circleSize) { 914 if (circleSize < 0) { 915 circleSize = 0; 916 } 917 Color customColoringTransparent = circleAlpha < 0 ? trkPnt.customColoring : 918 new Color((trkPnt.customColoring.getRGB() & 0x00ffffff) | (circleAlpha << 24), true); 919 g.setColor(customColoringTransparent); 920 // circles 921 int circleSizep = mv.getPoint(new LatLon( 922 trkPnt.getCoor().lat(), 923 trkPnt.getCoor().lon() + 2d * 6 * circleSize * 360 / 40000000d)).x - screen.x; 924 g.drawArc(screen.x - circleSizep / 2, screen.y - circleSizep / 2, circleSizep, circleSizep, 0, 360); 904 925 } 905 926 906 927 /**************************************************************** -
src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java b/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java index 625e1f116..e42228279 100644
a b import javax.swing.BorderFactory; 20 20 import javax.swing.Box; 21 21 import javax.swing.ButtonGroup; 22 22 import javax.swing.JCheckBox; 23 import javax.swing.JComboBox; 23 24 import javax.swing.JLabel; 24 25 import javax.swing.JOptionPane; 25 26 import javax.swing.JPanel; … … public class GPXSettingsPanel extends JPanel implements ValidationListener { 65 66 private final JosmTextField drawLineWidth = new JosmTextField(2); 66 67 private final JCheckBox forceRawGpsLines = new JCheckBox(tr("Force lines if no segments imported")); 67 68 private final JCheckBox largeGpsPoints = new JCheckBox(tr("Draw large GPS points")); 68 private final JCheckBox hdopCircleGpsPoints = new JCheckBox(tr("Draw a circle from HDOP value")); 69 private final JCheckBox circleGpsPoints = new JCheckBox(tr("Draw a circle from value")); 70 private final JComboBox<String> circleDataSource = new JosmComboBox<>(new String[] {tr("Hdop"), tr("Horizontal deviation estimate"), tr("Age of correction data")}); 69 71 private final JRadioButton colorTypeVelocity = new JRadioButton(tr("Velocity (red = slow, green = fast)")); 70 72 private final JRadioButton colorTypeDirection = new JRadioButton(tr("Direction (red = west, yellow = north, green = east, blue = south)")); 71 73 private final JRadioButton colorTypeDilution = new JRadioButton(tr("Dilution of Position (red = high, green = low, if available)")); … … public class GPXSettingsPanel extends JPanel implements ValidationListener { 132 134 m.put("markers.show-text", true); 133 135 m.put("markers.pattern", Marker.LABEL_PATTERN_AUTO); 134 136 m.put("markers.audio.pattern", "?{ '{name}' | '{desc}' | '{" + Marker.MARKER_FORMATTED_OFFSET + "}' }"); 137 //TODO rename points.hdopcircle to circle with data.preferences.java.getUpdatePrefKeys? 135 138 m.put("points.hdopcircle", false); 139 m.put("points.circle.data.source", 0); 136 140 m.put("points.large", false); 137 141 m.put("points.large.alpha", -1); //Expert mode only 138 142 m.put("points.large.size", 3); //Expert mode only … … public class GPXSettingsPanel extends JPanel implements ValidationListener { 420 424 add(new JLabel(tr("Minimum distance (pixels)")), GBC.std().insets(40, 0, 0, 0)); 421 425 add(drawGpsArrowsMinDist, GBC.eol().fill(GBC.HORIZONTAL).insets(5, 0, 0, 5)); 422 426 423 // hdopCircleGpsPoints 424 hdopCircleGpsPoints.setToolTipText(tr("Draw a circle from HDOP value")); 425 add(hdopCircleGpsPoints, GBC.eop().insets(20, 0, 0, 0)); 426 ExpertToggleAction.addVisibilitySwitcher(hdopCircleGpsPoints); 427 // circleGpsPoints 428 circleGpsPoints.addItemListener(e -> {circleDataSource.setEnabled(circleGpsPoints.isSelected());}); 429 circleGpsPoints.setToolTipText(tr("Draw a circle from value")); 430 circleDataSource.setToolTipText(tr("Source of the circle size")); 431 circleDataSource.setEnabled(false); 432 433 add(circleGpsPoints, GBC.std().insets(20, 0, 0, 0)); 434 add(circleDataSource, GBC.eop().fill(GBC.HORIZONTAL).insets(5, 0, 0, 5)); 435 ExpertToggleAction.addVisibilitySwitcher(circleGpsPoints); 436 ExpertToggleAction.addVisibilitySwitcher(circleDataSource); 427 437 428 438 // largeGpsPoints 429 439 largeGpsPoints.setToolTipText(tr("Draw larger dots for the GPS points.")); … … public class GPXSettingsPanel extends JPanel implements ValidationListener { 622 632 drawGpsArrows.setSelected(prefBool("lines.arrows")); 623 633 drawGpsArrowsFast.setSelected(prefBool("lines.arrows.fast")); 624 634 drawGpsArrowsMinDist.setText(pref("lines.arrows.min-distance")); 625 hdopCircleGpsPoints.setSelected(prefBool("points.hdopcircle")); 635 circleGpsPoints.setSelected(prefBool("points.hdopcircle")); 636 circleDataSource.setSelectedIndex(prefInt("points.circle.data.source")); 626 637 largeGpsPoints.setSelected(prefBool("points.large")); 627 638 useGpsAntialiasing.setSelected(Config.getPref().getBoolean("mappaint.gpx.use-antialiasing", false)); 628 639 … … public class GPXSettingsPanel extends JPanel implements ValidationListener { 698 709 putPref("lines.arrows.min-distance", drawGpsArrowsMinDist.getText()); 699 710 } 700 711 701 putPref("points.hdopcircle", hdopCircleGpsPoints.isSelected()); 712 putPref("points.hdopcircle", circleGpsPoints.isSelected()); 713 putPref("points.circle.data.source", circleDataSource.getSelectedIndex()); 702 714 putPref("points.large", largeGpsPoints.isSelected()); 703 715 putPref("lines.width", drawLineWidth.getText()); 704 716 putPref("lines.alpha-blend", drawLineWithAlpha.isSelected()); -
src/org/openstreetmap/josm/io/nmea/NmeaParser.java
diff --git a/src/org/openstreetmap/josm/io/nmea/NmeaParser.java b/src/org/openstreetmap/josm/io/nmea/NmeaParser.java index b9faf9d03..03f9087ec 100644
a b import org.openstreetmap.josm.tools.date.DateUtils; 23 23 24 24 /** 25 25 * Parses NMEA 0183 data. Based on information from 26 * <a href="http ://www.catb.org/gpsd/NMEA.html">http://www.catb.org/gpsd</a>.26 * <a href="https://gpsd.gitlab.io/gpsd/NMEA.html">https://gpsd.gitlab.io/gpsd</a>. 27 27 * 28 28 * NMEA data is in printable ASCII form and may include information such as position, 29 29 * speed, depth, frequency allocation, etc. … … public class NmeaParser { 137 137 } 138 138 } 139 139 140 /** 141 * GST - GNSS Pseudorange Noise Statistics 142 * <p> 143 * RMS and Standard deviation estimated values. 144 */ 145 enum GST { 146 TIME(1), 147 RMS_DEVIATION(2), // Total RMS standard deviation of ranges inputs to the navigation solution 148 STDDEV_MAJOR(3), // Standard deviation (meters) of semi-major axis of error ellipse 149 STDDEV_MINOR(4), // Standard deviation (meters) of semi-minor axis of error ellipse 150 STDDEV_MAJOR_BEARING(5), // Orientation of semi-major axis of error ellipse (true north degrees) 151 STDDEV_LAT(6), // Standard deviation (meters) of latitude error 152 STDDEV_LONG(7), // Standard deviation (meters) of longitude error 153 STDDEV_HEIGHT(8); // Standard deviation (meters) of altitude error 154 final int position; 155 GST(int position) { 156 this.position = position; 157 } 158 } 159 140 160 /** 141 161 * Geographic Position - Latitude/Longitude. 142 162 * <p> … … public class NmeaParser { 422 442 break; 423 443 } 424 444 } 445 // Age of differentiel correction 446 accu = e[GGA.GPS_AGE.position]; 447 if (!accu.isEmpty() && currentwp != null) { 448 currentwp.put(GpxConstants.PT_AGEOFDGPSDATA, Float.valueOf(accu)); 449 } 425 450 // reference ID 426 451 if (GGA.REF.position < e.length) { 427 452 accu = e[GGA.REF.position]; … … public class NmeaParser { 465 490 if (!accu.isEmpty() && currentwp != null) { 466 491 currentwp.put(GpxConstants.PT_PDOP, Float.valueOf(accu)); 467 492 } 493 // GST Sentence 494 } else if (isSentence(e[0], Sentence.GST)) { 495 // std horizontal deviation 496 accu = e[GST.STDDEV_MAJOR.position]; 497 if (!accu.isEmpty() && currentwp != null) { 498 currentwp.put(GpxConstants.PT_STD_HDEV, Float.valueOf(accu)); 499 } 500 // std vertical deviation 501 accu = e[GST.STDDEV_HEIGHT.position]; 502 if (!accu.isEmpty() && currentwp != null) { 503 currentwp.put(GpxConstants.PT_STD_VDEV, Float.valueOf(accu)); 504 } 468 505 } else if (isSentence(e[0], Sentence.RMC)) { 469 506 // coordinates 470 507 LatLon latLon = parseLatLon( -
src/org/openstreetmap/josm/io/nmea/NmeaReader.java
diff --git a/src/org/openstreetmap/josm/io/nmea/NmeaReader.java b/src/org/openstreetmap/josm/io/nmea/NmeaReader.java index acc62ab54..c3e83fd6c 100644
a b import org.openstreetmap.josm.tools.Logging; 20 20 21 21 /** 22 22 * Reads a NMEA 0183 file. Based on information from 23 * <a href="http ://www.catb.org/gpsd/NMEA.html">http://www.catb.org/gpsd</a>.23 * <a href="https://gpsd.gitlab.io/gpsd/NMEA.html">https://gpsd.gitlab.io/gpsd</a>. 24 24 * 25 25 * NMEA files are in printable ASCII form and may include information such as position, 26 26 * speed, depth, frequency allocation, etc. -
src/org/openstreetmap/josm/io/nmea/Sentence.java
diff --git a/src/org/openstreetmap/josm/io/nmea/Sentence.java b/src/org/openstreetmap/josm/io/nmea/Sentence.java index ecaa9cc91..34e1e953b 100644
a b package org.openstreetmap.josm.io.nmea; 8 8 * Most GPS sensors emit only RMC, GGA, GSA, GSV, GLL, VTG, and (rarely) ZDA. 9 9 * Newer ones conforming to NMEA 3.x may emit GBS as well. 10 10 * Other NMEA sentences are usually only emitted by high-end maritime navigation systems.<p> 11 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_nmea_encoding_conventions">NMEA Encoding Conventions</a>11 * See <a href="https://gpsd.gitlab.io//gpsd/NMEA.html#_nmea_encoding_conventions">NMEA Encoding Conventions</a> 12 12 * @since 12421 13 13 */ 14 14 public enum Sentence { … … public enum Sentence { 31 31 * <li>Standard deviation of bias estimate</li> 32 32 * <li>Checksum</li> 33 33 * </ol> 34 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_gbs_gps_satellite_fault_detection">GBS</a>34 * See <a href="https://gpsd.gitlab.io//gpsd/NMEA.html#_gbs_gps_satellite_fault_detection">GBS</a> 35 35 */ 36 36 GBS, 37 37 … … public enum Sentence { 71 71 * <li>Differential reference station ID, 0000-1023</li> 72 72 * <li>Checksum</li> 73 73 * </ol> 74 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_gga_global_positioning_system_fix_data">GGA</a>74 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_gga_global_positioning_system_fix_data">GGA</a> 75 75 */ 76 76 GGA, 77 77 … … public enum Sentence { 102 102 * <li>VDOP</li> 103 103 * <li>Checksum</li> 104 104 * </ol> 105 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_gsa_gps_dop_and_active_satellites">GSA</a>105 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_gsa_gps_dop_and_active_satellites">GSA</a> 106 106 */ 107 107 GSA, 108 108 … … public enum Sentence { 122 122 * <li>azimuth in degrees to true north (000-359) (leading zeros sent)</li> 123 123 * <li>SNR in dB (00-99) (leading zeros sent) more satellite info quadruples like 4-7 n) checksum</li> 124 124 * </ol> 125 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_gsv_satellites_in_view">GSV</a>125 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_gsv_satellites_in_view">GSV</a> 126 126 */ 127 127 GSV, 128 128 … … public enum Sentence { 143 143 * <li>FAA mode indicator (NMEA 2.3 and later)</li> 144 144 * <li>Checksum</li> 145 145 * </ol> 146 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_gll_geographic_position_latitude_longitude">GLL</a>146 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_gll_geographic_position_latitude_longitude">GLL</a> 147 147 */ 148 148 GLL, 149 150 /** 151 * GST - GPS Pseudorange Noise Statistics 152 * <pre> 153 * 1 2 3 4 5 6 7 8 9 154 * | | | | | | | | | 155 * $ --GST,hhmmss.ss,x,x,x,x,x,x,x*hh 156 * </pre> 157 * Field Number:<ol> 158 * <li>UTC time of associated GGA fix</li> 159 * <li>Total RMS standard deviation of ranges inputs to the navigation solution</li> 160 * <li>Standard deviation (meters) of semi-major axis of error ellipse</li> 161 * <li>Standard deviation (meters) of semi-minor axis of error ellipse</li> 162 * <li>Orientation of semi-major axis of error ellipse (true north degrees)</li> 163 * <li>Standard deviation (meters) of latitude error</li> 164 * <li>Standard deviation (meters) of longitude error</li> 165 * <li>Standard deviation (meters) of altitude error</li> 166 * <li>Checksum</li> 167 * </ol> 168 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_gst_gps_pseudorange_noise_statistics">GST</a> 169 */ 170 GST, 149 171 150 172 /** 151 173 * RMC - Recommended Minimum Navigation Information … … public enum Sentence { 170 192 * <li>FAA mode indicator (NMEA 2.3 and later)</li> 171 193 * <li>Checksum</li> 172 194 * </ol> 173 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_rmc_recommended_minimum_navigation_information">RMC</a>195 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_rmc_recommended_minimum_navigation_information">RMC</a> 174 196 */ 175 197 RMC, 176 198 … … public enum Sentence { 193 215 * <li>FAA mode indicator (NMEA 2.3 and later)</li> 194 216 * <li>Checksum</li> 195 217 * </ol> 196 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_vtg_track_made_good_and_ground_speed">VTG</a>218 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_vtg_track_made_good_and_ground_speed">VTG</a> 197 219 */ 198 220 VTG, 199 221 … … public enum Sentence { 213 235 * <li>Local zone minutes description, apply same sign as local hours</li> 214 236 * <li>Checksum</li> 215 237 * </ol> 216 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_zda_time_amp_date_utc_day_month_year_and_local_time_zone">ZDA</a>238 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_zda_time_amp_date_utc_day_month_year_and_local_time_zone">ZDA</a> 217 239 */ 218 240 ZDA 219 241 } -
src/org/openstreetmap/josm/io/nmea/TalkerId.java
diff --git a/src/org/openstreetmap/josm/io/nmea/TalkerId.java b/src/org/openstreetmap/josm/io/nmea/TalkerId.java index 3764961ad..8c0096447 100644
a b package org.openstreetmap.josm.io.nmea; 4 4 /** 5 5 * Talker identifiers mnemonics are the first two characters at the beginning of each sentence. 6 6 * This enum lists the common ones (navigation systems).<p> 7 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_talker_ids">Talker IDs</a>7 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html#_talker_ids">Talker IDs</a> 8 8 * @since 12421 9 9 */ 10 10 public enum TalkerId { -
src/org/openstreetmap/josm/io/nmea/package-info.java
diff --git a/src/org/openstreetmap/josm/io/nmea/package-info.java b/src/org/openstreetmap/josm/io/nmea/package-info.java index f12be2698..db366d529 100644
a b 3 3 /** 4 4 * Provides the classes for reading NMEA-0183 files. 5 5 * <p> 6 * See <a href="http ://www.catb.org/gpsd/NMEA.html#_gbs_gps_satellite_fault_detection">NMEA Revealed</a>.6 * See <a href="https://gpsd.gitlab.io/gpsd/NMEA.html">NMEA Revealed</a>. 7 7 * @since 12421 8 8 */ 9 9 package org.openstreetmap.josm.io.nmea; -
src/org/openstreetmap/josm/io/rtklib/RtkLibPosReader.java
diff --git a/src/org/openstreetmap/josm/io/rtklib/RtkLibPosReader.java b/src/org/openstreetmap/josm/io/rtklib/RtkLibPosReader.java index 8b7d55eac..295d7c9b0 100644
a b public class RtkLibPosReader implements IGpxReader { 90 90 currentwp.put(GpxConstants.RTKLIB_RATIO, fields[IDX_RATIO]); 91 91 double sdn = Double.parseDouble(fields[IDX_SDN]); 92 92 double sde = Double.parseDouble(fields[IDX_SDE]); 93 currentwp.put(GpxConstants.PT_HDOP, (float) Math.sqrt(sdn*sdn + sde*sde)); 93 currentwp.put(GpxConstants.PT_STD_HDEV, (float) Math.sqrt(sdn*sdn + sde*sde)); 94 currentwp.put(GpxConstants.PT_STD_VDEV, fields[IDX_SDU]); 94 95 waypoints.add(currentwp); 95 96 success++; 96 97 } catch (IllegalArgumentException e) { -
test/unit/org/openstreetmap/josm/io/nmea/NmeaReaderTest.java
diff --git a/test/unit/org/openstreetmap/josm/io/nmea/NmeaReaderTest.java b/test/unit/org/openstreetmap/josm/io/nmea/NmeaReaderTest.java index db94024eb..d9b0d8f7f 100644
a b class NmeaReaderTest { 62 62 assertNull(wayPoints.get(0).get(GpxConstants.PT_VDOP)); 63 63 assertNull(wayPoints.get(0).get(GpxConstants.PT_PDOP)); 64 64 } 65 /** 66 * Tests reading a nmea file with GST sentences. 67 * @throws Exception if any error occurs 68 */ 69 @Test 70 void testReader2() throws Exception { 71 final NmeaReader in = new NmeaReader(Files.newInputStream(Paths.get("nodist/data/btnmea_GST.nmea"))); 72 in.parse(true); 73 assertEquals(9, in.getNumberOfCoordinates()); 74 assertEquals(0, in.getParserMalformed()); 65 75 76 final List<WayPoint> wayPoints = new ArrayList<>(in.data.tracks.iterator().next().getSegments().iterator().next().getWayPoints()); 77 assertEquals("43.294", wayPoints.get(0).get(GpxConstants.PT_ELE)); 78 assertEquals("12", wayPoints.get(0).get(GpxConstants.PT_SAT)); 79 assertEquals("rtk", wayPoints.get(0).get(GpxConstants.PT_FIX)); 80 assertEquals("0.52", wayPoints.get(0).get(GpxConstants.PT_HDOP).toString().trim()); 81 assertEquals("0.78", wayPoints.get(0).get(GpxConstants.PT_VDOP).toString().trim()); 82 assertEquals("0.94", wayPoints.get(0).get(GpxConstants.PT_PDOP).toString().trim()); 83 } 84 66 85 private static void compareWithReference(int ticket, String filename, int numCoor) throws IOException, SAXException { 67 86 GpxData gpx = GpxReaderTest.parseGpxData(TestUtils.getRegressionDataFile(ticket, filename+".gpx")); 68 87 NmeaReader in = new NmeaReader(Files.newInputStream(Paths.get(TestUtils.getRegressionDataFile(ticket, filename+".nmea")))); -
test/unit/org/openstreetmap/josm/io/rtklib/RtkLibPosReaderTest.java
diff --git a/test/unit/org/openstreetmap/josm/io/rtklib/RtkLibPosReaderTest.java b/test/unit/org/openstreetmap/josm/io/rtklib/RtkLibPosReaderTest.java index f927752ed..c94977bea 100644
a b class RtkLibPosReaderTest { 53 53 assertEquals(5, wp0.get(GpxConstants.RTKLIB_Q)); 54 54 assertEquals("92.3955", wp0.get(GpxConstants.PT_ELE)); 55 55 assertEquals("2", wp0.get(GpxConstants.PT_SAT)); 56 assertEquals("1.8191757", wp0.get(GpxConstants.PT_HDOP).toString().trim()); 56 assertEquals("1.8191757", wp0.get(GpxConstants.PT_STD_HDEV).toString().trim()); 57 assertEquals("0.8167", wp0.get(GpxConstants.PT_STD_VDEV).toString().trim()); 57 58 58 59 assertEquals("1.5620", wp0.get(GpxConstants.RTKLIB_SDN)); 59 60 assertEquals("0.9325", wp0.get(GpxConstants.RTKLIB_SDE));
