gps_pvt 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,70 +1,70 @@
1
- ninja_tool_dir = File::absolute_path(File::join(
2
- File::dirname(__FILE__), '..', 'ninja-scan-light', 'tool'))
3
-
4
- require "mkmf"
5
- cflags = " -Wall -I#{ninja_tool_dir}"
6
- $CFLAGS += cflags
7
- $CPPFLAGS += cflags if RUBY_VERSION >= "2.0.0"
8
- $LOCAL_LIBS += " -lstdc++ "
9
-
10
- IO_TARGETS = [
11
- [Kernel, :instance_eval],
12
- [(class << File; self; end), :class_eval], # https://github.com/ruby/ruby/commit/19beb028
13
- ]
14
- def IO_TARGETS.mod(&b)
15
- self.each{|class_, func| class_.send(func, &b)}
16
- end
17
-
18
- IO_TARGETS.mod{
19
- alias_method(:open_orig, :open)
20
- }
21
-
22
- Dir::glob(File::join(File::dirname(__FILE__), "*/")).each{|dir|
23
- mod_name = File::basename(dir)
24
-
25
- dst = File::join(Dir.getwd, mod_name)
26
- FileUtils::mkdir_p(dst) if dir != dst
27
-
28
- $stderr.puts "For #{mod_name} ..."
29
-
30
- # @see https://stackoverflow.com/a/35842162/15992898
31
- $srcs = Dir::glob(File::join(dir, '*.cxx')).collect{|path|
32
- File::join(mod_name, File::basename(path))
33
- }
34
- $objs = $srcs.collect{|path|
35
- path.sub(/\.[^\.]+$/, '.o')
36
- }
37
-
38
- IO_TARGETS.mod{
39
- # rename Makefile to Makefile.#{mod_name}
40
- define_method(:open){|*args, &b|
41
- args[0] += ".#{mod_name}" if (args[0] && (args[0] == "Makefile"))
42
- open_orig(*args, &b)
43
- }
44
- }
45
- create_makefile("gps_pvt/#{mod_name}")
46
- }
47
-
48
- IO_TARGETS.mod{
49
- alias_method(:open, :open_orig)
50
- }
51
-
52
- # manual generation of top-level Makefile
53
- # @see https://yorickpeterse.com/articles/hacking-extconf-rb/
54
- open("Makefile", 'w'){|io|
55
- # @see https://stackoverflow.com/a/17845120/15992898
56
- io.write(<<-__TOPLEVEL_MAKEFILE__)
57
- TOPTARGETS := all clean distclean realclean install site-install
58
-
59
- SUBMFS := $(wildcard Makefile.*)
60
-
61
- $(TOPTARGETS): $(SUBMFS)
62
- $(SUBMFS):
63
- #{"\t"}$(MAKE) -f $@ $(MAKECMDGOALS)
64
-
65
- .PHONY: $(TOPTARGETS) $(SUBMFS)
66
- __TOPLEVEL_MAKEFILE__
67
- }
68
-
69
- require 'fileutils'
70
- FileUtils::touch("gps_pvt.so") # dummy
1
+ ninja_tool_dir = File::absolute_path(File::join(
2
+ File::dirname(__FILE__), '..', 'ninja-scan-light', 'tool'))
3
+
4
+ require "mkmf"
5
+ cflags = " -Wall -I#{ninja_tool_dir}"
6
+ $CFLAGS += cflags
7
+ $CPPFLAGS += cflags if RUBY_VERSION >= "2.0.0"
8
+ $LOCAL_LIBS += " -lstdc++ "
9
+
10
+ IO_TARGETS = [
11
+ [Kernel, :instance_eval],
12
+ [(class << File; self; end), :class_eval], # https://github.com/ruby/ruby/commit/19beb028
13
+ ]
14
+ def IO_TARGETS.mod(&b)
15
+ self.each{|class_, func| class_.send(func, &b)}
16
+ end
17
+
18
+ IO_TARGETS.mod{
19
+ alias_method(:open_orig, :open)
20
+ }
21
+
22
+ Dir::glob(File::join(File::dirname(__FILE__), "*/")).each{|dir|
23
+ mod_name = File::basename(dir)
24
+
25
+ dst = File::join(Dir.getwd, mod_name)
26
+ FileUtils::mkdir_p(dst) if dir != dst
27
+
28
+ $stderr.puts "For #{mod_name} ..."
29
+
30
+ # @see https://stackoverflow.com/a/35842162/15992898
31
+ $srcs = Dir::glob(File::join(dir, '*.cxx')).collect{|path|
32
+ File::join(mod_name, File::basename(path))
33
+ }
34
+ $objs = $srcs.collect{|path|
35
+ path.sub(/\.[^\.]+$/, '.o')
36
+ }
37
+
38
+ IO_TARGETS.mod{
39
+ # rename Makefile to Makefile.#{mod_name}
40
+ define_method(:open){|*args, &b|
41
+ args[0] += ".#{mod_name}" if (args[0] && (args[0] == "Makefile"))
42
+ open_orig(*args, &b)
43
+ }
44
+ }
45
+ create_makefile("gps_pvt/#{mod_name}")
46
+ }
47
+
48
+ IO_TARGETS.mod{
49
+ alias_method(:open, :open_orig)
50
+ }
51
+
52
+ # manual generation of top-level Makefile
53
+ # @see https://yorickpeterse.com/articles/hacking-extconf-rb/
54
+ open("Makefile", 'w'){|io|
55
+ # @see https://stackoverflow.com/a/17845120/15992898
56
+ io.write(<<-__TOPLEVEL_MAKEFILE__)
57
+ TOPTARGETS := all clean distclean realclean install site-install
58
+
59
+ SUBMFS := $(wildcard Makefile.*)
60
+
61
+ $(TOPTARGETS): $(SUBMFS)
62
+ $(SUBMFS):
63
+ #{"\t"}$(MAKE) -f $@ $(MAKECMDGOALS)
64
+
65
+ .PHONY: $(TOPTARGETS) $(SUBMFS)
66
+ __TOPLEVEL_MAKEFILE__
67
+ }
68
+
69
+ require 'fileutils'
70
+ FileUtils::touch("gps_pvt.so") # dummy
@@ -22,6 +22,17 @@
22
22
  #include "navigation/GPS_Solver_Base.h"
23
23
  #include "navigation/GPS_Solver.h"
24
24
  #include "navigation/GPS_Solver_RAIM.h"
25
+
26
+ #if defined(__cplusplus) && (__cplusplus < 201103L)
27
+ #include <sstream>
28
+ namespace std {
29
+ template <class T>
30
+ inline std::string to_string(const T &value){
31
+ // @see https://stackoverflow.com/a/5590404/15992898
32
+ return static_cast<std::ostringstream &>(std::ostringstream() << value).str();
33
+ }
34
+ }
35
+ #endif
25
36
  %}
26
37
 
27
38
  %include typemaps.i
@@ -246,12 +257,12 @@ struct GPS_Ionospheric_UTC_Parameters : public GPS_SpaceNode<FloatT>::Ionospheri
246
257
  MAKE_ACCESSOR(delta_t_LSF, int);
247
258
  static GPS_Ionospheric_UTC_Parameters<FloatT> parse(const unsigned int *buf){
248
259
  typedef typename GPS_SpaceNode<FloatT>
249
- ::template BroadcastedMessage<unsigned int, 30> parser_t;
260
+ ::BroadcastedMessage<unsigned int, 30> parser_t;
250
261
  if((parser_t::subframe_id(buf) != 4) || (parser_t::sv_page_id(buf) != 56)){
251
262
  throw std::runtime_error("Not valid data");
252
263
  }
253
264
  typename GPS_SpaceNode<FloatT>::Ionospheric_UTC_Parameters::raw_t raw;
254
- raw.template update<2, 0>(buf);
265
+ raw.update<2, 0>(buf);
255
266
  GPS_Ionospheric_UTC_Parameters<FloatT> res;
256
267
  (typename GPS_SpaceNode<FloatT>::Ionospheric_UTC_Parameters &)res = raw;
257
268
  return res;
@@ -330,12 +341,12 @@ struct GPS_Ephemeris : public GPS_SpaceNode<FloatT>::SatelliteProperties::Epheme
330
341
  typename eph_t::raw_t raw;
331
342
  eph_t eph;
332
343
  *subframe_no = GPS_SpaceNode<FloatT>
333
- ::template BroadcastedMessage<unsigned int, 30>
344
+ ::BroadcastedMessage<unsigned int, 30>
334
345
  ::subframe_id(buf);
335
346
  *iodc_or_iode = -1;
336
347
  switch(*subframe_no){
337
348
  case 1:
338
- *iodc_or_iode = raw.template update_subframe1<2, 0>(buf);
349
+ *iodc_or_iode = raw.update_subframe1<2, 0>(buf);
339
350
  eph = raw;
340
351
  self->WN = eph.WN;
341
352
  self->URA = eph.URA;
@@ -348,7 +359,7 @@ struct GPS_Ephemeris : public GPS_SpaceNode<FloatT>::SatelliteProperties::Epheme
348
359
  self->a_f0 = eph.a_f0;
349
360
  break;
350
361
  case 2:
351
- *iodc_or_iode = raw.template update_subframe2<2, 0>(buf);
362
+ *iodc_or_iode = raw.update_subframe2<2, 0>(buf);
352
363
  eph = raw;
353
364
  self->iode = eph.iode;
354
365
  self->c_rs = eph.c_rs;
@@ -362,7 +373,7 @@ struct GPS_Ephemeris : public GPS_SpaceNode<FloatT>::SatelliteProperties::Epheme
362
373
  self->fit_interval = eph_t::raw_t::fit_interval(raw.fit_interval_flag, self->iodc);
363
374
  break;
364
375
  case 3:
365
- *iodc_or_iode = self->iode_subframe3 = raw.template update_subframe3<2, 0>(buf);
376
+ *iodc_or_iode = self->iode_subframe3 = raw.update_subframe3<2, 0>(buf);
366
377
  eph = raw;
367
378
  self->c_ic = eph.c_ic;
368
379
  self->Omega0 = eph.Omega0;
@@ -787,10 +798,10 @@ struct GPS_SolverOptions : public GPS_SinglePositioning<FloatT>::options_t {
787
798
  }
788
799
  std::vector<int> set_ionospheric_models(const std::vector<int> &models){
789
800
  typedef typename base_t::ionospheric_model_t model_t;
790
- for(int i(0), j(0), j_max(models.size()); i < model_t::IONOSPHERIC_MODELS; ++i){
791
- model_t v(model_t::IONOSPHERIC_SKIP);
801
+ for(int i(0), j(0), j_max(models.size()); i < base_t::IONOSPHERIC_MODELS; ++i){
802
+ model_t v(base_t::IONOSPHERIC_SKIP);
792
803
  if(j < j_max){
793
- if((models[j] >= 0) && (models[j] < model_t::IONOSPHERIC_SKIP)){
804
+ if((models[j] >= 0) && (models[j] < base_t::IONOSPHERIC_SKIP)){
794
805
  v = (model_t)models[j];
795
806
  }
796
807
  ++j;
data/gps_pvt.gemspec CHANGED
@@ -1,57 +1,57 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/gps_pvt/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "gps_pvt"
7
- spec.version = GPS_PVT::VERSION
8
- spec.authors = ["fenrir(M.Naruoka)"]
9
- spec.email = ["fenrir.naru@gmail.com"]
10
-
11
- spec.summary = "GPS position, velocity, and time (PVT) solver"
12
- spec.description = "This module calculate PVT by using raw observation obtained from a GPS receiver"
13
- spec.homepage = "https://github.com/fenrir-naru/gps_pvt"
14
- spec.required_ruby_version = ">= 2.6.0"
15
-
16
- #spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
17
-
18
- spec.metadata["homepage_uri"] = spec.homepage
19
- spec.metadata["source_code_uri"] = spec.homepage
20
- #spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
21
-
22
- spec.extensions = ["ext/gps_pvt/extconf.rb"]
23
-
24
- # Specify which files should be added to the gem when it is released.
25
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
26
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
27
- `git ls-files -z`.split("\x0").reject do |f|
28
- (f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
29
- end
30
- end
31
- spec.bindir = "exe"
32
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
33
- spec.require_paths = ["lib"]
34
-
35
- spec.files += proc{
36
- base_dir = File::absolute_path(File.dirname(__FILE__))
37
- require 'pathname'
38
- # get an array of submodule dirs by executing 'pwd' inside each submodule
39
- `git submodule --quiet foreach pwd`.split($/).collect{|dir|
40
- # issue git ls-files in submodule's directory
41
- `git -C #{dir} ls-files -v`.split($/).collect{|f|
42
- next nil unless f =~ /^H */ # consider git sparse checkout
43
- # get relative path
44
- f = Pathname::new(File::join(dir, $'))
45
- (f.relative? ? f : f.relative_path_from(base_dir)).to_s
46
- }.compact
47
- }.flatten
48
- }.call
49
-
50
- # Uncomment to register a new dependency of your gem
51
- # spec.add_dependency "example-gem", "~> 1.0"
52
- spec.add_development_dependency "rake"
53
- spec.add_development_dependency "rake-compiler"
54
-
55
- # For more information and examples about making a new gem, checkout our
56
- # guide at: https://bundler.io/guides/creating_gem.html
57
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/gps_pvt/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "gps_pvt"
7
+ spec.version = GPS_PVT::VERSION
8
+ spec.authors = ["fenrir(M.Naruoka)"]
9
+ spec.email = ["fenrir.naru@gmail.com"]
10
+
11
+ spec.summary = "GPS position, velocity, and time (PVT) solver"
12
+ spec.description = "This module calculate PVT by using raw observation obtained from a GPS receiver"
13
+ spec.homepage = "https://github.com/fenrir-naru/gps_pvt"
14
+ spec.required_ruby_version = ">= 2.3.0"
15
+
16
+ #spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
17
+
18
+ spec.metadata["homepage_uri"] = spec.homepage
19
+ spec.metadata["source_code_uri"] = spec.homepage
20
+ #spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
21
+
22
+ spec.extensions = ["ext/gps_pvt/extconf.rb"]
23
+
24
+ # Specify which files should be added to the gem when it is released.
25
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
26
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
27
+ `git ls-files -z`.split("\x0").reject do |f|
28
+ (f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
29
+ end
30
+ end
31
+ spec.bindir = "exe"
32
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
33
+ spec.require_paths = ["lib"]
34
+
35
+ spec.files += proc{
36
+ require 'pathname'
37
+ base_dir = Pathname::new(File::absolute_path(File.dirname(__FILE__)))
38
+ # get an array of submodule dirs by executing 'pwd' inside each submodule
39
+ `git submodule --quiet foreach pwd`.split($/).collect{|dir|
40
+ # issue git ls-files in submodule's directory
41
+ `git -C #{dir} ls-files -v`.split($/).collect{|f|
42
+ next nil unless f =~ /^H */ # consider git sparse checkout
43
+ # get relative path
44
+ f = Pathname::new(File::join(dir, $'))
45
+ (f.relative? ? f : f.relative_path_from(base_dir)).to_s
46
+ }.compact
47
+ }.flatten
48
+ }.call
49
+
50
+ # Uncomment to register a new dependency of your gem
51
+ # spec.add_dependency "example-gem", "~> 1.0"
52
+ spec.add_development_dependency "rake"
53
+ spec.add_development_dependency "rake-compiler"
54
+
55
+ # For more information and examples about making a new gem, checkout our
56
+ # guide at: https://bundler.io/guides/creating_gem.html
57
+ end