gps_pvt 0.9.3 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +159 -3
  3. data/README.md +4 -3
  4. data/Rakefile +24 -0
  5. data/exe/gps2ubx +12 -5
  6. data/exe/gps_pvt +7 -2
  7. data/ext/gps_pvt/Coordinate/Coordinate_wrap.cxx +53 -19
  8. data/ext/gps_pvt/GPS/GPS_wrap.cxx +39 -7
  9. data/ext/gps_pvt/SylphideMath/SylphideMath_wrap.cxx +5210 -2058
  10. data/ext/gps_pvt/extconf.rb +6 -5
  11. data/ext/ninja-scan-light/tool/navigation/GLONASS_Solver.h +1 -1
  12. data/ext/ninja-scan-light/tool/navigation/GPS.h +6 -2
  13. data/ext/ninja-scan-light/tool/navigation/GPS_Solver.h +1 -1
  14. data/ext/ninja-scan-light/tool/navigation/GPS_Solver_Base.h +3 -1
  15. data/ext/ninja-scan-light/tool/navigation/GPS_Solver_MultiFrequency.h +3 -0
  16. data/ext/ninja-scan-light/tool/navigation/RINEX.h +9 -9
  17. data/ext/ninja-scan-light/tool/navigation/SBAS_Solver.h +1 -1
  18. data/ext/ninja-scan-light/tool/navigation/coordinate.h +13 -6
  19. data/ext/ninja-scan-light/tool/param/matrix.h +1020 -247
  20. data/ext/ninja-scan-light/tool/param/matrix_fixed.h +26 -0
  21. data/ext/ninja-scan-light/tool/swig/GPS.i +6 -4
  22. data/ext/ninja-scan-light/tool/swig/SylphideMath.i +139 -36
  23. data/ext/ninja-scan-light/tool/swig/spec/SylphideMath_spec.rb +115 -5
  24. data/gps_pvt.gemspec +3 -1
  25. data/lib/gps_pvt/asn1/asn1.rb +888 -0
  26. data/lib/gps_pvt/asn1/asn1.y +903 -0
  27. data/lib/gps_pvt/asn1/per.rb +182 -0
  28. data/lib/gps_pvt/ntrip.rb +1 -1
  29. data/lib/gps_pvt/receiver/agps.rb +31 -0
  30. data/lib/gps_pvt/receiver/extension.rb +94 -0
  31. data/lib/gps_pvt/receiver/rtcm3.rb +6 -4
  32. data/lib/gps_pvt/receiver.rb +41 -24
  33. data/lib/gps_pvt/rtcm3.rb +24 -34
  34. data/lib/gps_pvt/supl.rb +567 -0
  35. data/lib/gps_pvt/ubx.rb +15 -0
  36. data/lib/gps_pvt/upl/LPP-V17_5_0-Release17.asn +6441 -0
  37. data/lib/gps_pvt/upl/RRLP-V17_0_0-Release17.asn +2780 -0
  38. data/lib/gps_pvt/upl/ULP-V2_0_6-20200720-D.asn +2185 -0
  39. data/lib/gps_pvt/upl/upl.json.gz +0 -0
  40. data/lib/gps_pvt/upl/upl.rb +99 -0
  41. data/lib/gps_pvt/util.rb +1 -0
  42. data/lib/gps_pvt/version.rb +1 -1
  43. metadata +41 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91b2800c2808b8b0694299c94978098f0638fc4ea39e5b27c02b33ccb4b1030b
4
- data.tar.gz: 6e11d023f73251488e7d65c8f542a6bd772496dacb8181fd2969e13410173a8c
3
+ metadata.gz: 940d644f51b5c4195a040d31bbc9ae7ab162ef90f1d55deafc651f024e17c8a7
4
+ data.tar.gz: f4e4669b798d7774595ae3fa6a18099b62b8290862f1e0e72584bec20e77d2fb
5
5
  SHA512:
6
- metadata.gz: 2cfd1295e59d5b80846cea2e8c02c6d23a265bf12ab0550bad95a50f63bf4aaa21d1ca4126a65050016b09b3f8051b0d79c8b1d315143efbd06ff69a7c0fad3a
7
- data.tar.gz: bc0fe0a2cc9e1cf0482125dbb218a3e1f1b7f1a7eb2828f470a8a54d2f35755bd9ebe2d060a9ed2d2732674966e381f5ccb7e8d00487e3fbc27c79d7fb5ce2a4
6
+ metadata.gz: f64a9e456f5b9f88f471e26d1d47414e8bb5f9d7c64bf68b19b10cda6a53f8335379f13557bf214b8fd917807e2cd317cc86131bafd7ba32911f0dfa45460023
7
+ data.tar.gz: e3f9f700aa9a4f7aab686f0eb671c76d1ce795fca54cd662a624d24de2515b3e667b382219e90238e514c0527351f4422dcb0171b49d98a3f1d8fe934c936064
data/CHANGELOG.md CHANGED
@@ -1,5 +1,161 @@
1
- ## [Unreleased]
1
+ # Changelog
2
2
 
3
- ## [0.1.0] - 2021-12-16
3
+ ## [v0.9.4](https://github.com/fenrir-naru/gps_pvt/tree/v0.9.4) (2023-07-05)
4
4
 
5
- - Initial release
5
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.9.3...v0.9.4)
6
+
7
+ ## [v0.9.3](https://github.com/fenrir-naru/gps_pvt/tree/v0.9.3) (2023-03-07)
8
+
9
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.9.2...v0.9.3)
10
+
11
+ ## [v0.9.2](https://github.com/fenrir-naru/gps_pvt/tree/v0.9.2) (2023-02-13)
12
+
13
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.9.1...v0.9.2)
14
+
15
+ ## [v0.9.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.9.1) (2023-01-27)
16
+
17
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.9.0...v0.9.1)
18
+
19
+ ## [v0.9.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.9.0) (2023-01-22)
20
+
21
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.8.5...v0.9.0)
22
+
23
+ ## [v0.8.5](https://github.com/fenrir-naru/gps_pvt/tree/v0.8.5) (2022-12-22)
24
+
25
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.8.4...v0.8.5)
26
+
27
+ ## [v0.8.4](https://github.com/fenrir-naru/gps_pvt/tree/v0.8.4) (2022-12-19)
28
+
29
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.8.3...v0.8.4)
30
+
31
+ ## [v0.8.3](https://github.com/fenrir-naru/gps_pvt/tree/v0.8.3) (2022-11-30)
32
+
33
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.8.2...v0.8.3)
34
+
35
+ ## [v0.8.2](https://github.com/fenrir-naru/gps_pvt/tree/v0.8.2) (2022-11-20)
36
+
37
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.8.1...v0.8.2)
38
+
39
+ ## [v0.8.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.8.1) (2022-11-17)
40
+
41
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.8.0...v0.8.1)
42
+
43
+ ## [v0.8.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.8.0) (2022-09-13)
44
+
45
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.7.2...v0.8.0)
46
+
47
+ ## [v0.7.2](https://github.com/fenrir-naru/gps_pvt/tree/v0.7.2) (2022-09-07)
48
+
49
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.7.1...v0.7.2)
50
+
51
+ ## [v0.7.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.7.1) (2022-08-25)
52
+
53
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.7.0...v0.7.1)
54
+
55
+ ## [v0.7.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.7.0) (2022-08-24)
56
+
57
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.6.4...v0.7.0)
58
+
59
+ ## [v0.6.4](https://github.com/fenrir-naru/gps_pvt/tree/v0.6.4) (2022-08-19)
60
+
61
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.6.3...v0.6.4)
62
+
63
+ ## [v0.6.3](https://github.com/fenrir-naru/gps_pvt/tree/v0.6.3) (2022-08-19)
64
+
65
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.6.2...v0.6.3)
66
+
67
+ ## [v0.6.2](https://github.com/fenrir-naru/gps_pvt/tree/v0.6.2) (2022-08-03)
68
+
69
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.6.1...v0.6.2)
70
+
71
+ ## [v0.6.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.6.1) (2022-07-21)
72
+
73
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.6.0...v0.6.1)
74
+
75
+ ## [v0.6.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.6.0) (2022-07-14)
76
+
77
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.5.1...v0.6.0)
78
+
79
+ ## [v0.5.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.5.1) (2022-05-07)
80
+
81
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.5.0...v0.5.1)
82
+
83
+ ## [v0.5.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.5.0) (2022-04-11)
84
+
85
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.4.1...v0.5.0)
86
+
87
+ ## [v0.4.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.4.1) (2022-03-30)
88
+
89
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.4.0...v0.4.1)
90
+
91
+ ## [v0.4.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.4.0) (2022-03-17)
92
+
93
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.3.3...v0.4.0)
94
+
95
+ ## [v0.3.3](https://github.com/fenrir-naru/gps_pvt/tree/v0.3.3) (2022-03-04)
96
+
97
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.3.2...v0.3.3)
98
+
99
+ ## [v0.3.2](https://github.com/fenrir-naru/gps_pvt/tree/v0.3.2) (2022-03-04)
100
+
101
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.3.1...v0.3.2)
102
+
103
+ ## [v0.3.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.3.1) (2022-03-04)
104
+
105
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.3.0...v0.3.1)
106
+
107
+ ## [v0.3.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.3.0) (2022-03-01)
108
+
109
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.2.3...v0.3.0)
110
+
111
+ ## [v0.2.3](https://github.com/fenrir-naru/gps_pvt/tree/v0.2.3) (2022-02-22)
112
+
113
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.2.2...v0.2.3)
114
+
115
+ ## [v0.2.2](https://github.com/fenrir-naru/gps_pvt/tree/v0.2.2) (2022-02-22)
116
+
117
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.2.1...v0.2.2)
118
+
119
+ ## [v0.2.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.2.1) (2022-01-31)
120
+
121
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.2.0...v0.2.1)
122
+
123
+ ## [v0.2.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.2.0) (2022-01-26)
124
+
125
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.1.7...v0.2.0)
126
+
127
+ ## [v0.1.7](https://github.com/fenrir-naru/gps_pvt/tree/v0.1.7) (2022-01-14)
128
+
129
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.1.6...v0.1.7)
130
+
131
+ ## [v0.1.6](https://github.com/fenrir-naru/gps_pvt/tree/v0.1.6) (2021-12-22)
132
+
133
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.1.5...v0.1.6)
134
+
135
+ ## [v0.1.5](https://github.com/fenrir-naru/gps_pvt/tree/v0.1.5) (2021-12-22)
136
+
137
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.1.4...v0.1.5)
138
+
139
+ ## [v0.1.4](https://github.com/fenrir-naru/gps_pvt/tree/v0.1.4) (2021-12-22)
140
+
141
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.1.3...v0.1.4)
142
+
143
+ ## [v0.1.3](https://github.com/fenrir-naru/gps_pvt/tree/v0.1.3) (2021-12-21)
144
+
145
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.1.2...v0.1.3)
146
+
147
+ ## [v0.1.2](https://github.com/fenrir-naru/gps_pvt/tree/v0.1.2) (2021-12-21)
148
+
149
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.1.1...v0.1.2)
150
+
151
+ ## [v0.1.1](https://github.com/fenrir-naru/gps_pvt/tree/v0.1.1) (2021-12-20)
152
+
153
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/v0.1.0...v0.1.1)
154
+
155
+ ## [v0.1.0](https://github.com/fenrir-naru/gps_pvt/tree/v0.1.0) (2021-12-20)
156
+
157
+ [Full Changelog](https://github.com/fenrir-naru/gps_pvt/compare/71da9fe5d66088c8fb93cd0a74cc7f8056141e51...v0.1.0)
158
+
159
+
160
+
161
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/README.md CHANGED
@@ -32,7 +32,7 @@ An attached executable is useful. After installation, type
32
32
 
33
33
  $ gps_pvt file_or_URI(s)
34
34
 
35
- The format of file is automatically determined with its extension, such as .ubx will be treated as UBX format. A compressed file of .gz or .Z can be specified directly (decompression is internally performed). URI such as http(s)://... and ftp://, and serial port (COMn for Windows and /dev/tty* for *NIX, version >= 0.8.0) are also acceptable. Moreover, Ntrip URI of ntrip://(username):(password)@(caster_host):(port)/(mount_point), for exmaple, ```ntrip://test%40example.com:none@rtk2go.com:2101/NAIST-UBX``` (%40 is recognized as '@') is supported (version >= 0.8.4), and its content format can be automatically determined (version >= 0.9.0). If you want to specify the file format, instead of file_or_URI(s), use the following arguments:
35
+ The format of file is automatically determined with its extension, such as .ubx will be treated as UBX format. A compressed file of .gz or .Z can be specified directly (decompression is internally performed). URI such as http(s)://... and ftp://, and serial port (COMn for Windows and /dev/tty* for *NIX, version >= 0.8.0) are also acceptable. Moreover, Ntrip URI of ntrip://(username):(password)@(caster_host):(port)/(mount_point), for exmaple, ```ntrip://test%40example.com:none@rtk2go.com:2101/NAIST-UBX``` (%40 is recognized as '@') is supported (version >= 0.8.4), and its content format can be automatically determined (version >= 0.9.0). A-GPS to get ephemeris quickly is supported via special URI like ```supl://supl.google.com/``` (version >= 0.10.0). If you want to specify the file format, instead of file_or_URI(s), use the following arguments:
36
36
 
37
37
  | specification | recoginized as |
38
38
  ----|----
@@ -43,6 +43,7 @@ The format of file is automatically determined with its extension, such as .ubx
43
43
  | --antex=file_or_URI | [Antenna Exchange Format](https://igs.org/wg/antenna#files) (supported gps_pvt version >= 0.6.0) |
44
44
  | --rinex_clk=file_or_URI | [RINEX clock](https://files.igs.org/pub/data/format/rinex_clock304.txt) file (supported gps_pvt version >= 0.7.0) |
45
45
  | <a name=opt_rtcm3>--rtcm3=file_or_URI</a> | [RTCM 10403.x](https://rtcm.myshopify.com/collections/differential-global-navigation-satellite-dgnss-standards). (supported gps_pvt version >= 0.9.0) The latest version uses message type Observation(GPS: 1001..1004; GLONASS: 1009..1012), Epehemris(GPS: 1019; GLOANSS: 1020; SBAS: 1043; QZSS: 1044), MSM(GPS: 1071..1077; GLONASS: 1081..1087; SBAS: 1101..1107; QZSS: 1111..1117) |
46
+ | <a name=opt_supl>--supl=URI</a> | [SUPL, secure user plane location](https://www.openmobilealliance.org/release/SUPL/). (supported gps_pvt version >= 0.10.0) Both [LPP](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3710)(default) and [RRLP](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=2688) are internally used, which can be manually selected by adding ```?protocol=lpp_or_rrlp``` URI query string. |
46
47
 
47
48
  Since version 0.2.0, SBAS and QZSS are supported in addition to GPS. Since version 0.4.0, GLONASS is also available. QZSS ranging is activated in default, however, SBAS is just utilized for ionospheric correction. GLONASS is also turned off by default. If you want to activate SBAS or GLONASS ranging, "--with=(system or PRN)" options are used with gps_pvt executable like
48
49
 
@@ -157,7 +158,7 @@ Utility to convert observation into u-blox ubx format and dump standard input. A
157
158
 
158
159
  $ gps2ubx file_or_URI(s) (options) > out.ubx
159
160
 
160
- saves resultant into out.ubx by using redirection. The shared options with gps_pvt executable are [rinex_obs](#opt_rinex_obs), [rinex_nav](#opt_rinex_nav), [ubx](#opt_ubx), [rtcm3](#opt_rtcm3) and [online_ephemeris](#opt_online_ephemeris). In addition, the following options are available.
161
+ saves resultant into out.ubx by using redirection. The shared options with gps_pvt executable are [rinex_obs](#opt_rinex_obs), [rinex_nav](#opt_rinex_nav), [ubx](#opt_ubx), [rtcm3](#opt_rtcm3), [supl](#opt_supl) and [online_ephemeris](#opt_online_ephemeris). In addition, the following options are available.
161
162
 
162
163
  | key | value | comment | since |
163
164
  ----|----|----|----
@@ -170,7 +171,7 @@ Utility to get and dump GPS files. After installation of gps_pvt, to type
170
171
 
171
172
  $ gps_get file_or_URI(s) (options) > output_file
172
173
 
173
- saves data into output_file by using redirection. http(s), ftp, and ntrip can be used as scheme of URI. Serial port is also supported. Note that compressed data is automatically decompressed before output. The following options are available.
174
+ saves data into output_file by using redirection. http(s), ftp, ntrip, and supl can be used as scheme of URI. Serial port is also supported. Note that compressed data is automatically decompressed before output. The following options are available.
174
175
 
175
176
  | key | value | comment | since |
176
177
  ----|----|----|----
data/Rakefile CHANGED
@@ -107,8 +107,32 @@ task :swig do
107
107
  }
108
108
  end
109
109
 
110
+ desc "Update upl.json.gz by using upl/*.asn"
111
+ task "upl.json" do
112
+ parser_dir = File::join(File::dirname(__FILE__), 'lib', 'gps_pvt', 'asn1')
113
+ upl_dir = File::join(parser_dir, '..', 'upl')
114
+ upl_files = Dir::glob(File::join(upl_dir, '*.asn'))
115
+ chdir(parser_dir){
116
+ sh [:racc, 'asn1.y', '--debug'].join(' ')
117
+ require 'zlib'
118
+ Zlib::GzipWriter.wrap(open(File::join(upl_dir, 'upl.json.gz'), 'w')){|gz|
119
+ json_str = `#{['ruby', 'asn1.tab.rb', *upl_files].join(' ')}`
120
+ puts "generating JSON => #{json_str.gsub(/\s+/, ' ').slice(0, 100)} ... "
121
+ gz.write json_str
122
+ }
123
+ remove_file('asn1.tab.rb')
124
+ }
125
+ end
126
+
110
127
  file "ext/ninja-scan-light/tool" do |t|
111
128
  Rake::Task["git:submodules:init"].invoke
112
129
  end
113
130
 
131
+ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
132
+ %r|github\.com/([^/]+)/([^/]+)| =~ Bundler::load_gemspec(
133
+ Dir::glob(File::join(File::dirname(__FILE__), '*.gemspec')).first).homepage
134
+ config.user = $1
135
+ config.project = $2
136
+ end if (begin; require 'github_changelog_generator/task'; rescue Exception; false; end)
137
+
114
138
  task :default => ["ext/ninja-scan-light/tool", :compile, :spec]
data/exe/gps2ubx CHANGED
@@ -17,7 +17,8 @@ Supported RINEX versions are 2 and 3.
17
17
  RXM-RAWX and RXM-SFRBX are included in output UBX if corresponding file(s) is given.
18
18
  A file having additional ".gz" or ".Z" extension is recognized as a compressed file.
19
19
  Major URL such as http(s)://... or ftp://... is acceptable as an input file name.
20
- Ntrip specified in URI as ntrip://(username):(password)@(caster_host):(port)/(mount_point) is also supported, and its format is automatically detected.
20
+ Ntrip specified in URI as ntrip://(username):(password)@(caster_host):(port)/(mount_point) is also supported, and its format is automatically detected.
21
+ Assisted GPS by using SUPL (Secure user plane location) is also supported by using supl://(host) URI.
21
22
  __STRING__
22
23
 
23
24
  options = []
@@ -44,7 +45,10 @@ files.collect!{|fname, ftype|
44
45
  when /\.ubx$/; :ubx
45
46
  end
46
47
  if (!(uri = URI::parse(fname)).instance_of?(URI::Generic) rescue false) then
47
- ftype ||= uri.read_format if uri.instance_of?(URI::Ntrip)
48
+ ftype ||= case uri
49
+ when URI::Ntrip; uri.read_format
50
+ when URI::Supl; :supl
51
+ end
48
52
  fname = uri
49
53
  end
50
54
  raise "Format cannot be guessed, use --(format, ex. rinex_obs)=#{fname}" unless ftype
@@ -69,6 +73,7 @@ rcv = GPS_PVT::Receiver::new(options)
69
73
  obs = Queue::new
70
74
  rcv.define_singleton_method(:run){|meas, t_meas, *args|
71
75
  obs << [t_meas, meas]
76
+ nil
72
77
  }
73
78
 
74
79
  proc{|src|
@@ -86,22 +91,24 @@ proc{
86
91
  }
87
92
  }.call
88
93
 
89
- # parse RINEX NAV
94
+ # parse RINEX NAV first
90
95
  files.each{|fname, ftype|
91
96
  case ftype
92
97
  when :rinex_nav; rcv.parse_rinex_nav(fname)
93
98
  end
94
99
  }
95
100
 
96
- # other files
101
+ # then, other files
97
102
  threads = files.collect{|fname, ftype|
98
103
  task = case ftype
99
104
  when :ubx; proc{rcv.parse_ubx(fname){}}
100
105
  when :rinex_obs; proc{rcv.parse_rinex_obs(fname){}}
101
106
  when :rtcm3; proc{rcv.parse_rtcm3(fname){}}
107
+ when :supl; proc{rcv.parse_supl(fname)}
108
+ when :rinex_nav; proc{}
102
109
  end
103
110
  case fname
104
- when URI::Ntrip; Thread::new(&task)
111
+ when URI::Ntrip, URI::Supl; Thread::new(&task)
105
112
  else; task.call; nil
106
113
  end
107
114
  }.compact
data/exe/gps_pvt CHANGED
@@ -11,11 +11,12 @@ As GPS_file, rinex_nav(*.YYn, *.YYh, *.YYq, *.YYg), rinex_obs(*.YYo), ubx(*.ubx)
11
11
  (YY = last two digit of year)
12
12
  File format is automatically determined based on its extention described in above parentheses.
13
13
  If you want to specify its format manually, command options like --rinex_nav=file_name are available.
14
- Other than --rinex_nav, --rinex_obs, --rinex_clk, --ubx, --sp3, --antex or --rtcm3 are supported.
14
+ In addition to --rinex_nav, --rinex_obs, --rinex_clk, --ubx, --sp3, --antex, --rtcm3, and --supl are supported.
15
15
  Supported RINEX versions are 2 and 3.
16
16
  A file having additional ".gz" or ".Z" extension is recognized as a compressed file.
17
17
  Major URI such as http(s)://... or ftp://..., and serial port (COMn for Windows, /dev/tty* for *NIX) is acceptable as an input file name.
18
18
  Ntrip specified in URI as ntrip://(username):(password)@(caster_host):(port)/(mount_point) is also supported, and its format is automatically detected.
19
+ Assisted GPS by using SUPL (Secure user plane location) is also supported by using supl://(host) URI.
19
20
  __STRING__
20
21
 
21
22
  options = []
@@ -78,7 +79,10 @@ files.collect!{|fname, ftype|
78
79
  when /\.clk$/; :rinex_clk
79
80
  end
80
81
  if (!(uri = URI::parse(fname)).instance_of?(URI::Generic) rescue false) then
81
- ftype ||= uri.read_format if uri.instance_of?(URI::Ntrip)
82
+ ftype ||= case uri
83
+ when URI::Ntrip; uri.read_format
84
+ when URI::Supl; :supl
85
+ end
82
86
  fname = uri
83
87
  end
84
88
  raise "Format cannot be guessed, use --(format, ex. rinex_nav)=#{fname}" unless ftype
@@ -137,6 +141,7 @@ files.collect{|fname, ftype|
137
141
  when :ubx; Thread::new{rcv.parse_ubx(fname)}
138
142
  when :rinex_obs; Thread::new{rcv.parse_rinex_obs(fname)}
139
143
  when :rtcm3; Thread::new{rcv.parse_rtcm3(fname)}
144
+ when :supl; Thread::new{rcv.parse_supl(fname)}
140
145
  else; nil
141
146
  end
142
147
  }.compact.each{|th| th.join}
@@ -2209,7 +2209,7 @@ SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2))
2209
2209
  }
2210
2210
 
2211
2211
 
2212
- /*@SWIG:/usr/local/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2212
+ /*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2213
2213
  SWIGINTERN VALUE SWIG_AUX_NUM2DBL(VALUE arg)
2214
2214
  {
2215
2215
  VALUE *args = (VALUE *)arg;
@@ -3665,17 +3665,17 @@ fail:
3665
3665
 
3666
3666
 
3667
3667
  /*
3668
- Document-method: GPS_PVT::Coordinate::XYZ.dist
3668
+ Document-method: GPS_PVT::Coordinate::XYZ.distance
3669
3669
 
3670
3670
  call-seq:
3671
- dist -> double
3672
- dist(XYZ another) -> double
3671
+ distance -> double
3672
+ distance(XYZ another) -> double
3673
3673
 
3674
3674
  An instance method.
3675
3675
 
3676
3676
  */
3677
3677
  SWIGINTERN VALUE
3678
- _wrap_XYZ_dist__SWIG_0(int argc, VALUE *argv, VALUE self) {
3678
+ _wrap_XYZ_distance__SWIG_0(int argc, VALUE *argv, VALUE self) {
3679
3679
  System_XYZ< double,WGS84 > *arg1 = (System_XYZ< double,WGS84 > *) 0 ;
3680
3680
  void *argp1 = 0 ;
3681
3681
  int res1 = 0 ;
@@ -3687,10 +3687,10 @@ _wrap_XYZ_dist__SWIG_0(int argc, VALUE *argv, VALUE self) {
3687
3687
  }
3688
3688
  res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_System_XYZT_double_WGS84_t, 0 | 0 );
3689
3689
  if (!SWIG_IsOK(res1)) {
3690
- SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "System_XYZ< double,WGS84 > const *","dist", 1, self ));
3690
+ SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "System_XYZ< double,WGS84 > const *","distance", 1, self ));
3691
3691
  }
3692
3692
  arg1 = reinterpret_cast< System_XYZ< double,WGS84 > * >(argp1);
3693
- result = (double)((System_XYZ< double,WGS84 > const *)arg1)->dist();
3693
+ result = (double)((System_XYZ< double,WGS84 > const *)arg1)->distance();
3694
3694
  vresult = SWIG_From_double(static_cast< double >(result));
3695
3695
  return vresult;
3696
3696
  fail:
@@ -3699,7 +3699,7 @@ fail:
3699
3699
 
3700
3700
 
3701
3701
  SWIGINTERN VALUE
3702
- _wrap_XYZ_dist__SWIG_1(int argc, VALUE *argv, VALUE self) {
3702
+ _wrap_XYZ_distance__SWIG_1(int argc, VALUE *argv, VALUE self) {
3703
3703
  System_XYZ< double,WGS84 > *arg1 = (System_XYZ< double,WGS84 > *) 0 ;
3704
3704
  System_XYZ< double,WGS84 >::self_t *arg2 = 0 ;
3705
3705
  void *argp1 = 0 ;
@@ -3714,18 +3714,18 @@ _wrap_XYZ_dist__SWIG_1(int argc, VALUE *argv, VALUE self) {
3714
3714
  }
3715
3715
  res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_System_XYZT_double_WGS84_t, 0 | 0 );
3716
3716
  if (!SWIG_IsOK(res1)) {
3717
- SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "System_XYZ< double,WGS84 > const *","dist", 1, self ));
3717
+ SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "System_XYZ< double,WGS84 > const *","distance", 1, self ));
3718
3718
  }
3719
3719
  arg1 = reinterpret_cast< System_XYZ< double,WGS84 > * >(argp1);
3720
3720
  res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_System_XYZT_double_WGS84_t, 0 );
3721
3721
  if (!SWIG_IsOK(res2)) {
3722
- SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "System_XYZ< double,WGS84 >::self_t const &","dist", 2, argv[0] ));
3722
+ SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "System_XYZ< double,WGS84 >::self_t const &","distance", 2, argv[0] ));
3723
3723
  }
3724
3724
  if (!argp2) {
3725
- SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "System_XYZ< double,WGS84 >::self_t const &","dist", 2, argv[0]));
3725
+ SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "System_XYZ< double,WGS84 >::self_t const &","distance", 2, argv[0]));
3726
3726
  }
3727
3727
  arg2 = reinterpret_cast< System_XYZ< double,WGS84 >::self_t * >(argp2);
3728
- result = (double)((System_XYZ< double,WGS84 > const *)arg1)->dist((System_XYZ< double,WGS84 >::self_t const &)*arg2);
3728
+ result = (double)((System_XYZ< double,WGS84 > const *)arg1)->distance((System_XYZ< double,WGS84 >::self_t const &)*arg2);
3729
3729
  vresult = SWIG_From_double(static_cast< double >(result));
3730
3730
  return vresult;
3731
3731
  fail:
@@ -3733,7 +3733,7 @@ fail:
3733
3733
  }
3734
3734
 
3735
3735
 
3736
- SWIGINTERN VALUE _wrap_XYZ_dist(int nargs, VALUE *args, VALUE self) {
3736
+ SWIGINTERN VALUE _wrap_XYZ_distance(int nargs, VALUE *args, VALUE self) {
3737
3737
  int argc;
3738
3738
  VALUE argv[3];
3739
3739
  int ii;
@@ -3750,7 +3750,7 @@ SWIGINTERN VALUE _wrap_XYZ_dist(int nargs, VALUE *args, VALUE self) {
3750
3750
  int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_System_XYZT_double_WGS84_t, 0);
3751
3751
  _v = SWIG_CheckState(res);
3752
3752
  if (_v) {
3753
- return _wrap_XYZ_dist__SWIG_0(nargs, args, self);
3753
+ return _wrap_XYZ_distance__SWIG_0(nargs, args, self);
3754
3754
  }
3755
3755
  }
3756
3756
  if (argc == 2) {
@@ -3763,15 +3763,15 @@ SWIGINTERN VALUE _wrap_XYZ_dist(int nargs, VALUE *args, VALUE self) {
3763
3763
  int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_System_XYZT_double_WGS84_t, SWIG_POINTER_NO_NULL);
3764
3764
  _v = SWIG_CheckState(res);
3765
3765
  if (_v) {
3766
- return _wrap_XYZ_dist__SWIG_1(nargs, args, self);
3766
+ return _wrap_XYZ_distance__SWIG_1(nargs, args, self);
3767
3767
  }
3768
3768
  }
3769
3769
  }
3770
3770
 
3771
3771
  fail:
3772
- Ruby_Format_OverloadedError( argc, 3, "XYZ.dist",
3773
- " double XYZ.dist()\n"
3774
- " double XYZ.dist(System_XYZ< double,WGS84 >::self_t const &another)\n");
3772
+ Ruby_Format_OverloadedError( argc, 3, "XYZ.distance",
3773
+ " double XYZ.distance()\n"
3774
+ " double XYZ.distance(System_XYZ< double,WGS84 >::self_t const &another)\n");
3775
3775
 
3776
3776
  return Qnil;
3777
3777
  }
@@ -5966,6 +5966,39 @@ fail:
5966
5966
  }
5967
5967
 
5968
5968
 
5969
+ /*
5970
+ Document-method: GPS_PVT::Coordinate::ENU.distance
5971
+
5972
+ call-seq:
5973
+ distance -> double
5974
+
5975
+ An instance method.
5976
+
5977
+ */
5978
+ SWIGINTERN VALUE
5979
+ _wrap_ENU_distance(int argc, VALUE *argv, VALUE self) {
5980
+ System_ENU< double,WGS84 > *arg1 = (System_ENU< double,WGS84 > *) 0 ;
5981
+ void *argp1 = 0 ;
5982
+ int res1 = 0 ;
5983
+ double result;
5984
+ VALUE vresult = Qnil;
5985
+
5986
+ if ((argc < 0) || (argc > 0)) {
5987
+ rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
5988
+ }
5989
+ res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_System_ENUT_double_WGS84_t, 0 | 0 );
5990
+ if (!SWIG_IsOK(res1)) {
5991
+ SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "System_ENU< double,WGS84 > const *","distance", 1, self ));
5992
+ }
5993
+ arg1 = reinterpret_cast< System_ENU< double,WGS84 > * >(argp1);
5994
+ result = (double)((System_ENU< double,WGS84 > const *)arg1)->distance();
5995
+ vresult = SWIG_From_double(static_cast< double >(result));
5996
+ return vresult;
5997
+ fail:
5998
+ return Qnil;
5999
+ }
6000
+
6001
+
5969
6002
  /*
5970
6003
  Document-method: GPS_PVT::Coordinate::ENU.elevation
5971
6004
 
@@ -6598,7 +6631,7 @@ SWIGEXPORT void Init_Coordinate(void) {
6598
6631
  rb_define_method(SwigClassXYZ.klass, "z", VALUEFUNC(_wrap_XYZ_z), -1);
6599
6632
  rb_define_method(SwigClassXYZ.klass, "+", VALUEFUNC(_wrap_XYZ___add__), -1);
6600
6633
  rb_define_method(SwigClassXYZ.klass, "-", VALUEFUNC(_wrap_XYZ___sub__), -1);
6601
- rb_define_method(SwigClassXYZ.klass, "dist", VALUEFUNC(_wrap_XYZ_dist), -1);
6634
+ rb_define_method(SwigClassXYZ.klass, "distance", VALUEFUNC(_wrap_XYZ_distance), -1);
6602
6635
  rb_define_singleton_method(SwigClassXYZ.klass, "f0", VALUEFUNC(_wrap_XYZ_f0_get), 0);
6603
6636
  rb_define_singleton_method(SwigClassXYZ.klass, "a0", VALUEFUNC(_wrap_XYZ_a0_get), 0);
6604
6637
  rb_define_singleton_method(SwigClassXYZ.klass, "b0", VALUEFUNC(_wrap_XYZ_b0_get), 0);
@@ -6652,6 +6685,7 @@ SWIGEXPORT void Init_Coordinate(void) {
6652
6685
  rb_define_singleton_method(SwigClassENU.klass, "relative_rel", VALUEFUNC(_wrap_ENU_relative_rel), -1);
6653
6686
  rb_define_singleton_method(SwigClassENU.klass, "relative", VALUEFUNC(_wrap_ENU_relative), -1);
6654
6687
  rb_define_method(SwigClassENU.klass, "absolute", VALUEFUNC(_wrap_ENU_absolute), -1);
6688
+ rb_define_method(SwigClassENU.klass, "distance", VALUEFUNC(_wrap_ENU_distance), -1);
6655
6689
  rb_define_method(SwigClassENU.klass, "elevation", VALUEFUNC(_wrap_ENU_elevation), -1);
6656
6690
  rb_define_method(SwigClassENU.klass, "azimuth", VALUEFUNC(_wrap_ENU_azimuth), -1);
6657
6691
  rb_define_method(SwigClassENU.klass, "down", VALUEFUNC(_wrap_ENU_down), -1);
@@ -2551,6 +2551,7 @@ struct GPS_Measurement {
2551
2551
  L1_RANGE_RATE_SIGMA,
2552
2552
  L1_SIGNAL_STRENGTH_dBHz,
2553
2553
  L1_LOCK_SEC,
2554
+ L1_CARRIER_PHASE_AMBIGUITY_SCALE,
2554
2555
  L1_FREQUENCY,
2555
2556
 
2556
2557
 
@@ -2560,6 +2561,7 @@ struct GPS_Measurement {
2560
2561
  L2CM_RANGE_RATE, L2CL_RANGE_RATE, L2CM_RANGE_RATE_SIGMA, L2CL_RANGE_RATE_SIGMA,
2561
2562
  L2CM_SIGNAL_STRENGTH_dBHz, L2CL_SIGNAL_STRENGTH_dBHz,
2562
2563
  L2CM_LOCK_SEC, L2CL_LOCK_SEC,
2564
+ L2CM_CARRIER_PHASE_AMBIGUITY_SCALE, L2CL_CARRIER_PHASE_AMBIGUITY_SCALE,
2563
2565
 
2564
2566
 
2565
2567
  ITEMS_PREDEFINED,
@@ -3082,7 +3084,7 @@ SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2))
3082
3084
  }
3083
3085
 
3084
3086
 
3085
- /*@SWIG:/usr/local/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
3087
+ /*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
3086
3088
  SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE arg)
3087
3089
  {
3088
3090
  VALUE *args = (VALUE *)arg;
@@ -3148,7 +3150,7 @@ SWIG_AsVal_bool (VALUE obj, bool *val)
3148
3150
  }
3149
3151
 
3150
3152
 
3151
- /*@SWIG:/usr/local/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
3153
+ /*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
3152
3154
  SWIGINTERN VALUE SWIG_AUX_NUM2DBL(VALUE arg)
3153
3155
  {
3154
3156
  VALUE *args = (VALUE *)arg;
@@ -3228,7 +3230,7 @@ SWIG_From_std_tm (const std::tm &value){
3228
3230
  }
3229
3231
 
3230
3232
 
3231
- /*@SWIG:/usr/local/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
3233
+ /*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
3232
3234
  SWIGINTERN VALUE SWIG_AUX_NUM2ULONG(VALUE arg)
3233
3235
  {
3234
3236
  VALUE *args = (VALUE *)arg;
@@ -4066,18 +4068,18 @@ SWIGINTERN GPS_Ephemeris< double >::constellation_res_t GPS_Ephemeris_Sl_double_
4066
4068
  .append(inspect_str(v_key_value)).append("}").c_str());
4067
4069
  }
4068
4070
  rb_hash_foreach(v_key_value,
4069
-
4071
+ #if RUBY_API_VERSION_CODE < 20700
4070
4072
  // @see https://docs.ruby-lang.org/ja/latest/doc/news=2f2_7_0.html
4071
4073
  (int (*)(ANYARGS))
4072
-
4074
+ #endif
4073
4075
  arg_t::iter2, v_arg);
4074
4076
  return ST_CONTINUE;
4075
4077
  }
4076
4078
  } arg = {val};
4077
4079
  rb_hash_foreach(obj,
4078
-
4080
+ #if RUBY_API_VERSION_CODE < 20700
4079
4081
  (int (*)(ANYARGS))
4080
-
4082
+ #endif
4081
4083
  arg_t::iter1, reinterpret_cast<VALUE>(&arg));
4082
4084
  return SWIG_OK;
4083
4085
  }
@@ -14843,6 +14845,15 @@ A class method.
14843
14845
 
14844
14846
  A class method.
14845
14847
 
14848
+ */
14849
+ /*
14850
+ Document-method: GPS_PVT::GPS.L1_CARRIER_PHASE_AMBIGUITY_SCALE
14851
+
14852
+ call-seq:
14853
+ L1_CARRIER_PHASE_AMBIGUITY_SCALE -> int
14854
+
14855
+ A class method.
14856
+
14846
14857
  */
14847
14858
  /*
14848
14859
  Document-method: GPS_PVT::GPS.L1_FREQUENCY
@@ -15032,6 +15043,24 @@ A class method.
15032
15043
 
15033
15044
  A class method.
15034
15045
 
15046
+ */
15047
+ /*
15048
+ Document-method: GPS_PVT::GPS.L2CM_CARRIER_PHASE_AMBIGUITY_SCALE
15049
+
15050
+ call-seq:
15051
+ L2CM_CARRIER_PHASE_AMBIGUITY_SCALE -> int
15052
+
15053
+ A class method.
15054
+
15055
+ */
15056
+ /*
15057
+ Document-method: GPS_PVT::GPS.L2CL_CARRIER_PHASE_AMBIGUITY_SCALE
15058
+
15059
+ call-seq:
15060
+ L2CL_CARRIER_PHASE_AMBIGUITY_SCALE -> int
15061
+
15062
+ A class method.
15063
+
15035
15064
  */
15036
15065
  /*
15037
15066
  Document-method: GPS_PVT::GPS.ITEMS_PREDEFINED
@@ -25245,6 +25274,7 @@ SWIGEXPORT void Init_GPS(void) {
25245
25274
  rb_define_const(SwigClassMeasurement.klass, "L1_RANGE_RATE_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L1_RANGE_RATE_SIGMA)));
25246
25275
  rb_define_const(SwigClassMeasurement.klass, "L1_SIGNAL_STRENGTH_dBHz", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L1_SIGNAL_STRENGTH_dBHz)));
25247
25276
  rb_define_const(SwigClassMeasurement.klass, "L1_LOCK_SEC", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L1_LOCK_SEC)));
25277
+ rb_define_const(SwigClassMeasurement.klass, "L1_CARRIER_PHASE_AMBIGUITY_SCALE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L1_CARRIER_PHASE_AMBIGUITY_SCALE)));
25248
25278
  rb_define_const(SwigClassMeasurement.klass, "L1_FREQUENCY", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L1_FREQUENCY)));
25249
25279
  rb_define_const(SwigClassMeasurement.klass, "L2CM_PSEUDORANGE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_PSEUDORANGE)));
25250
25280
  rb_define_const(SwigClassMeasurement.klass, "L2CL_PSEUDORANGE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_PSEUDORANGE)));
@@ -25266,6 +25296,8 @@ SWIGEXPORT void Init_GPS(void) {
25266
25296
  rb_define_const(SwigClassMeasurement.klass, "L2CL_SIGNAL_STRENGTH_dBHz", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_SIGNAL_STRENGTH_dBHz)));
25267
25297
  rb_define_const(SwigClassMeasurement.klass, "L2CM_LOCK_SEC", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_LOCK_SEC)));
25268
25298
  rb_define_const(SwigClassMeasurement.klass, "L2CL_LOCK_SEC", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_LOCK_SEC)));
25299
+ rb_define_const(SwigClassMeasurement.klass, "L2CM_CARRIER_PHASE_AMBIGUITY_SCALE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_CARRIER_PHASE_AMBIGUITY_SCALE)));
25300
+ rb_define_const(SwigClassMeasurement.klass, "L2CL_CARRIER_PHASE_AMBIGUITY_SCALE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_CARRIER_PHASE_AMBIGUITY_SCALE)));
25269
25301
  rb_define_const(SwigClassMeasurement.klass, "ITEMS_PREDEFINED", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::ITEMS_PREDEFINED)));
25270
25302
  rb_define_method(SwigClassMeasurement.klass, "add", VALUEFUNC(_wrap_Measurement_add), -1);
25271
25303
  rb_define_method(SwigClassMeasurement.klass, "each", VALUEFUNC(_wrap_Measurement_each), -1);