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,177 @@
1
+ %module Coordinate
2
+
3
+ %{
4
+ #include <sstream>
5
+ #include <string>
6
+ #include <exception>
7
+
8
+ #if defined(SWIGRUBY) && defined(isfinite)
9
+ #undef isfinite_
10
+ #undef isfinite
11
+ #endif
12
+
13
+ #include "navigation/coordinate.h"
14
+ %}
15
+
16
+ %include std_common.i
17
+ %include std_string.i
18
+ %include exception.i
19
+
20
+ //%import "SylphideMath.i"
21
+
22
+ %feature("autodoc", "1");
23
+
24
+ %define MAKE_SETTER(name, type)
25
+ %rename(%str(name ## =)) set_ ## name;
26
+ type set_ ## name (const type &v) {
27
+ return self->name() = v;
28
+ }
29
+ %enddef
30
+
31
+ #if !defined(SWIGIMPORTED)
32
+ %header {
33
+ struct native_exception : public std::exception {
34
+ #if defined(SWIGRUBY)
35
+ int state;
36
+ native_exception(const int &state_) : std::exception(), state(state_) {}
37
+ void regenerate() const {rb_jump_tag(state);}
38
+ #else
39
+ void regenerate() const {}
40
+ #endif
41
+ };
42
+ }
43
+ #endif
44
+
45
+ %extend System_3D {
46
+ std::string __str__() const {
47
+ std::stringstream s;
48
+ s << (*self);
49
+ return s.str();
50
+ }
51
+ %fragment(SWIG_Traits_frag(FloatT));
52
+ %typemap(out) FloatT & {
53
+ $result = swig::from(*$1);
54
+ }
55
+ #if !defined(SWIGRUBY)
56
+ %typemap(in,numinputs=0) FloatT values[3] (FloatT temp[3]) %{
57
+ $1 = temp;
58
+ %}
59
+ %typemap(argout) FloatT values[3] {
60
+ for(int i(0); i < 3; ++i){
61
+ %append_output(swig::from($1[i]));
62
+ }
63
+ }
64
+ void to_a(FloatT values[3]) const {
65
+ for(int i(0); i < 3; ++i){
66
+ values[i] = (*self)[i];
67
+ }
68
+ }
69
+ #endif
70
+ %exception each {
71
+ #ifdef SWIGRUBY
72
+ if(!rb_block_given_p()){
73
+ return rb_enumeratorize(self, ID2SYM(rb_intern("each")), argc, argv);
74
+ }
75
+ #endif
76
+ try {
77
+ $action
78
+ } catch (const native_exception &e) {
79
+ e.regenerate();
80
+ SWIG_fail;
81
+ } catch (const std::exception& e) {
82
+ SWIG_exception(SWIG_RuntimeError, e.what());
83
+ }
84
+ }
85
+ void each() const {
86
+ for(int i(0); i < 3; ++i){
87
+ #ifdef SWIGRUBY
88
+ int state;
89
+ struct yield_t {
90
+ const VALUE v;
91
+ static VALUE run(VALUE v){
92
+ yield_t *arg(reinterpret_cast<yield_t *>(v));
93
+ return rb_yield_values(1, arg->v);
94
+ }
95
+ } arg = {swig::from((*self)[i])};
96
+ rb_protect(yield_t::run, reinterpret_cast<VALUE>(&arg), &state);
97
+ if(state != 0){throw native_exception(state);}
98
+ #endif
99
+ }
100
+ }
101
+ };
102
+ #ifdef SWIGRUBY
103
+ %mixin System_3D "Enumerable";
104
+ #endif
105
+
106
+ %extend System_XYZ {
107
+ #ifdef SWIGRUBY
108
+ MAKE_SETTER(x, FloatT);
109
+ MAKE_SETTER(y, FloatT);
110
+ MAKE_SETTER(z, FloatT);
111
+ #endif
112
+ };
113
+
114
+ %extend System_LLH {
115
+ %typemap(in,numinputs=0) (FloatT (&res)[3][3]) (FloatT temp[3][3]) {
116
+ $1 = &($1_type)(temp);
117
+ }
118
+ #ifdef SWIGRUBY
119
+ %typemap(argout, fragment=SWIG_Traits_frag(FloatT)) FloatT (&res)[3][3] {
120
+ $result = rb_ary_new_capa(3);
121
+ for(int i(0); i < 3; ++i){
122
+ rb_ary_store($result, i,
123
+ rb_ary_new_from_args(3,
124
+ swig::from((*$1)[i][0]),
125
+ swig::from((*$1)[i][1]),
126
+ swig::from((*$1)[i][2]) ));
127
+ }
128
+ }
129
+ %alias latitude "lat";
130
+ %alias longitude "lng";
131
+ %alias height "h,alt";
132
+ MAKE_SETTER(latitude, FloatT);
133
+ MAKE_SETTER(longitude, FloatT);
134
+ MAKE_SETTER(height, FloatT);
135
+ %alias set_latitude "lat=";
136
+ %alias set_longitude "lng=";
137
+ %alias set_height "h=,alt=";
138
+ #endif
139
+ }
140
+
141
+ %extend System_ENU {
142
+ FloatT down() const {
143
+ return self->up() * -1;
144
+ }
145
+ FloatT set_down(const FloatT &v) {
146
+ return (self->up() = (v * -1)) * -1;
147
+ }
148
+ #ifdef SWIGRUBY
149
+ %alias east "e";
150
+ %alias north "n";
151
+ %alias up "u";
152
+ MAKE_SETTER(east, FloatT);
153
+ MAKE_SETTER(north, FloatT);
154
+ MAKE_SETTER(up, FloatT);
155
+ %alias set_east "e=";
156
+ %alias set_north "n=";
157
+ %alias set_up "u=";
158
+
159
+ %alias down "d";
160
+ %alias set_down "d=";
161
+ #endif
162
+ }
163
+
164
+ #undef MAKE_SETTER
165
+
166
+ %include navigation/coordinate.h
167
+
168
+ %define CONCRETIZE(type)
169
+ %template(Base) System_3D<type>;
170
+ %template(XYZ) System_XYZ<type, WGS84>;
171
+ %template(LLH) System_LLH<type, WGS84>;
172
+ %template(ENU) System_ENU<type, WGS84>;
173
+ %enddef
174
+
175
+ CONCRETIZE(double);
176
+
177
+ #undef CONCRETIZE