gps_pvt 0.1.1

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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/CHANGELOG.md +5 -0
  4. data/CODE_OF_CONDUCT.md +84 -0
  5. data/Gemfile +10 -0
  6. data/README.md +86 -0
  7. data/Rakefile +86 -0
  8. data/bin/console +15 -0
  9. data/bin/setup +8 -0
  10. data/ext/gps_pvt/Coordinate/Coordinate_wrap.cxx +6613 -0
  11. data/ext/gps_pvt/GPS/GPS_wrap.cxx +16019 -0
  12. data/ext/gps_pvt/SylphideMath/SylphideMath_wrap.cxx +21050 -0
  13. data/ext/gps_pvt/extconf.rb +70 -0
  14. data/ext/ninja-scan-light/tool/navigation/EGM.h +2971 -0
  15. data/ext/ninja-scan-light/tool/navigation/GPS.h +2432 -0
  16. data/ext/ninja-scan-light/tool/navigation/GPS_Solver.h +479 -0
  17. data/ext/ninja-scan-light/tool/navigation/GPS_Solver_Base.h +1081 -0
  18. data/ext/ninja-scan-light/tool/navigation/GPS_Solver_MultiFrequency.h +199 -0
  19. data/ext/ninja-scan-light/tool/navigation/GPS_Solver_RAIM.h +210 -0
  20. data/ext/ninja-scan-light/tool/navigation/MagneticField.h +928 -0
  21. data/ext/ninja-scan-light/tool/navigation/NTCM.h +211 -0
  22. data/ext/ninja-scan-light/tool/navigation/RINEX.h +1781 -0
  23. data/ext/ninja-scan-light/tool/navigation/WGS84.h +186 -0
  24. data/ext/ninja-scan-light/tool/navigation/coordinate.h +406 -0
  25. data/ext/ninja-scan-light/tool/param/bit_array.h +145 -0
  26. data/ext/ninja-scan-light/tool/param/complex.h +558 -0
  27. data/ext/ninja-scan-light/tool/param/matrix.h +4049 -0
  28. data/ext/ninja-scan-light/tool/param/matrix_fixed.h +665 -0
  29. data/ext/ninja-scan-light/tool/param/matrix_special.h +562 -0
  30. data/ext/ninja-scan-light/tool/param/quaternion.h +765 -0
  31. data/ext/ninja-scan-light/tool/param/vector3.h +651 -0
  32. data/ext/ninja-scan-light/tool/swig/Coordinate.i +177 -0
  33. data/ext/ninja-scan-light/tool/swig/GPS.i +1102 -0
  34. data/ext/ninja-scan-light/tool/swig/SylphideMath.i +1234 -0
  35. data/ext/ninja-scan-light/tool/swig/extconf.rb +5 -0
  36. data/ext/ninja-scan-light/tool/swig/makefile +53 -0
  37. data/ext/ninja-scan-light/tool/swig/spec/GPS_spec.rb +417 -0
  38. data/ext/ninja-scan-light/tool/swig/spec/SylphideMath_spec.rb +489 -0
  39. data/gps_pvt.gemspec +57 -0
  40. data/lib/gps_pvt/receiver.rb +375 -0
  41. data/lib/gps_pvt/ubx.rb +148 -0
  42. data/lib/gps_pvt/version.rb +5 -0
  43. data/lib/gps_pvt.rb +9 -0
  44. data/sig/gps_pvt.rbs +4 -0
  45. metadata +117 -0
@@ -0,0 +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