gps_pvt 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/to_ubx +61 -26
- data/ext/gps_pvt/GPS/GPS_wrap.cxx +389 -182
- data/ext/ninja-scan-light/tool/navigation/GLONASS_Solver.h +5 -3
- data/ext/ninja-scan-light/tool/navigation/GPS_Solver.h +5 -3
- data/ext/ninja-scan-light/tool/navigation/GPS_Solver_MultiFrequency.h +1 -0
- data/ext/ninja-scan-light/tool/navigation/SBAS_Solver.h +5 -3
- data/ext/ninja-scan-light/tool/swig/GPS.i +44 -8
- data/ext/ninja-scan-light/tool/swig/spec/GPS_spec.rb +3 -0
- data/lib/gps_pvt/receiver.rb +38 -26
- data/lib/gps_pvt/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b87c77fbb3844eb0fd835ef079b8a379708a6fe24e3de4ceeb6934206573f489
|
4
|
+
data.tar.gz: a280c1aa82bed41319e13069907940a062a073a0b01c95eefa3d3d8c1b32c517
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 761d7e99868e04d93adb48fac0345ff71467068657c544efe857ed4f6206ed8d11698871ad7dc73c232f4bd51094cf13c6752d96fc17307caccb4a2eab8dbe03
|
7
|
+
data.tar.gz: fd70c1d59dbf3885e7a2286726a9c16e0cfbec3097a105bbffde59e3a65ee22eb09f1d0b4032b371faf2d1695b074b0752f37763ef6b5716dd4214fed4566755
|
data/exe/to_ubx
CHANGED
@@ -74,6 +74,17 @@ proc{|src|
|
|
74
74
|
rcv.attach_online_ephemeris(src) if src
|
75
75
|
}.call(misc_options[:online_ephemeris])
|
76
76
|
|
77
|
+
proc{
|
78
|
+
cache = nil
|
79
|
+
rcv.define_singleton_method(:leap_seconds){|t_meas|
|
80
|
+
cache ||= if self.solver.gps_space_node.is_valid_utc then
|
81
|
+
self.solver.gps_space_node.iono_utc.delta_t_LS
|
82
|
+
else
|
83
|
+
t_meas.leap_seconds
|
84
|
+
end
|
85
|
+
}
|
86
|
+
}.call
|
87
|
+
|
77
88
|
# parse RINEX NAV
|
78
89
|
files.each{|fname, ftype|
|
79
90
|
case ftype
|
@@ -236,13 +247,14 @@ gen_rawx = proc{|t_meas, meas| # Convert to RXM-RAWX(0x15)
|
|
236
247
|
ubx = [0xB5, 0x62, 0x02, 0x15, 0, 0]
|
237
248
|
ubx += [t_meas.seconds, t_meas.week].pack("Ev").unpack("C*")
|
238
249
|
ubx += [0] * 6
|
239
|
-
|
250
|
+
gen_packet = proc{|sys, svid, sig, items|
|
240
251
|
res = [0] * 32
|
241
252
|
setter = proc{|value, offset, len, str, pre_proc|
|
242
253
|
array = case value
|
243
254
|
when Array; value
|
244
255
|
when Symbol
|
245
|
-
[
|
256
|
+
k = [sig, value].join('_').to_sym
|
257
|
+
[items[GPS_PVT::GPS::Measurement.const_get(k)]]
|
246
258
|
else
|
247
259
|
next nil
|
248
260
|
end
|
@@ -251,50 +263,73 @@ gen_rawx = proc{|t_meas, meas| # Convert to RXM-RAWX(0x15)
|
|
251
263
|
array = array.pack(str).unpack("C*") if str
|
252
264
|
res[offset - 16, len] = array
|
253
265
|
}
|
254
|
-
sys, svid = case sat
|
255
|
-
when 1..32 # GPS
|
256
|
-
[0, sat]
|
257
|
-
when 120..158 # SBAS
|
258
|
-
[1, sat]
|
259
|
-
when 193..202 # QZSS
|
260
|
-
[5, sat]
|
261
|
-
when (0x100 + 1)..(0x100 + 32) # GLONASS
|
262
|
-
setter.call(:L1_FREQUENCY,
|
263
|
-
39, 1, nil, proc{|v| v.replace([(v[0] ? glonass_freq_ch.call(v[0]) : 0) + 7])} )
|
264
|
-
[6, sat - 0x100]
|
265
|
-
else
|
266
|
-
next nil # TODO Galileo, Beidou, ...
|
267
|
-
end
|
268
|
-
setter.call([sys, svid], 36, 2)
|
269
266
|
|
267
|
+
setter.call([sys, svid], 36, 2)
|
268
|
+
|
270
269
|
trk_stat = 0
|
271
|
-
setter.call(:
|
270
|
+
setter.call(:PSEUDORANGE,
|
272
271
|
16, 8, "E", proc{|v| v[0] ? (trk_stat |= 0x1) : v.clear})
|
273
|
-
setter.call(:
|
272
|
+
setter.call(:PSEUDORANGE_SIGMA,
|
274
273
|
43, 1, nil, proc{|v|
|
275
274
|
b = (Math::log2(v[0] / 1E-2).to_i & 0xF) rescue 0x8
|
276
275
|
v.replace((trk_stat & 0x1 == 0x1) ? [b] : [])
|
277
276
|
})
|
278
|
-
setter.call(:
|
279
|
-
setter.call(:
|
277
|
+
setter.call(:DOPPLER, 32, 4, "e") rescue next nil
|
278
|
+
setter.call(:DOPPLER_SIGMA,
|
280
279
|
45, 1, nil, proc{|v| v.replace(v[0] ? [Math::log2(v[0] / 2E-3).to_i & 0xF] : [0x8])})
|
281
|
-
setter.call(:
|
280
|
+
setter.call(:CARRIER_PHASE,
|
282
281
|
24, 8, "E", proc{|v| v[0] ? (trk_stat |= 0x2) : v.clear})
|
283
|
-
setter.call(:
|
282
|
+
setter.call(:CARRIER_PHASE_SIGMA,
|
284
283
|
44, 1, nil, proc{|v|
|
285
284
|
b = ((v[0] / 0.004).to_i & 0xF) rescue 0x8
|
286
285
|
v.replace((trk_stat & 0x2 == 0x2) ? [b] : [])
|
287
286
|
})
|
288
|
-
setter.call(:
|
287
|
+
setter.call(:SIGNAL_STRENGTH_dBHz,
|
289
288
|
42, 1, nil, proc{|v| v.replace(v[0] ? [v[0].to_i] : [])})
|
290
|
-
setter.call(:
|
289
|
+
setter.call(:LOCK_SEC,
|
291
290
|
40, 2, "v", proc{|v| v.replace(v[0] ? [(v[0] / 1E-3).to_i] : [])})
|
292
291
|
setter.call([trk_stat], 46, 1)
|
292
|
+
res.define_singleton_method(:set, &setter)
|
293
293
|
|
294
294
|
res
|
295
|
+
}
|
296
|
+
meas_ubx = meas.inject([]){|packets, (sat, items)|
|
297
|
+
case sat
|
298
|
+
when 1..32 # GPS
|
299
|
+
packets << gen_packet.call(0, sat, :L1, items)
|
300
|
+
packets += {:L2CL => 3, :L2CM => 4}.collect{|sig, sigid|
|
301
|
+
next nil unless packet = gen_packet.call(0, sat, sig, items)
|
302
|
+
packet[38 - 16] = sigid
|
303
|
+
packet
|
304
|
+
}
|
305
|
+
when 120..158 # SBAS
|
306
|
+
packets << gen_packet.call(1, sat, :L1, items)
|
307
|
+
when 193..202 # QZSS
|
308
|
+
packets << gen_packet.call(5, sat, :L1, items)
|
309
|
+
packets += {:L2CL => 5, :L2CM => 4}.collect{|sig, sigid|
|
310
|
+
next nil unless packet = gen_packet.call(5, sat, sig, items)
|
311
|
+
packet[38 - 16] = sigid
|
312
|
+
packet
|
313
|
+
}
|
314
|
+
when (0x100 + 1)..(0x100 + 32) # GLONASS
|
315
|
+
packet = gen_packet.call(6, sat - 0x100, :L1, items)
|
316
|
+
packet.set(:FREQUENCY,
|
317
|
+
39, 1, nil,
|
318
|
+
proc{|v| v.replace([(v[0] ? glonass_freq_ch.call(v[0]) : 0) + 7])} ) if packet
|
319
|
+
packets << packet
|
320
|
+
else
|
321
|
+
# TODO Galileo, Beidou, ...
|
322
|
+
end
|
295
323
|
}.compact
|
324
|
+
|
325
|
+
proc{|ls| # leap seconds
|
326
|
+
next unless ls
|
327
|
+
ubx[6 + 10] = ls
|
328
|
+
ubx[6 + 12] |= 0x01
|
329
|
+
}.call(rcv.leap_seconds(t_meas))
|
296
330
|
ubx[6 + 11] = meas_ubx.size
|
297
|
-
ubx
|
331
|
+
ubx[6 + 13] = 1 # version
|
332
|
+
ubx += meas_ubx.flatten
|
298
333
|
ubx += [0, 0]
|
299
334
|
GPS_PVT::UBX::update(ubx).pack("C*")
|
300
335
|
}
|
@@ -1862,61 +1862,60 @@ int SWIG_Ruby_arity( VALUE proc, int minimal )
|
|
1862
1862
|
#define SWIGTYPE_p_GPS_SolverOptionsT_double_t swig_types[12]
|
1863
1863
|
#define SWIGTYPE_p_GPS_SolverOptions_CommonT_double_t swig_types[13]
|
1864
1864
|
#define SWIGTYPE_p_GPS_SolverT_double_t swig_types[14]
|
1865
|
-
#define
|
1866
|
-
#define
|
1867
|
-
#define
|
1868
|
-
#define
|
1869
|
-
#define
|
1870
|
-
#define
|
1871
|
-
#define
|
1872
|
-
#define
|
1873
|
-
#define
|
1874
|
-
#define
|
1875
|
-
#define
|
1876
|
-
#define
|
1877
|
-
#define
|
1878
|
-
#define
|
1879
|
-
#define
|
1880
|
-
#define
|
1881
|
-
#define
|
1882
|
-
#define
|
1883
|
-
#define
|
1884
|
-
#define
|
1885
|
-
#define
|
1886
|
-
#define
|
1887
|
-
#define
|
1888
|
-
#define
|
1889
|
-
#define
|
1890
|
-
#define
|
1891
|
-
#define
|
1892
|
-
#define
|
1893
|
-
#define
|
1894
|
-
#define
|
1895
|
-
#define
|
1896
|
-
#define
|
1897
|
-
#define
|
1898
|
-
#define
|
1899
|
-
#define
|
1900
|
-
#define
|
1901
|
-
#define
|
1902
|
-
#define
|
1903
|
-
#define
|
1904
|
-
#define
|
1905
|
-
#define
|
1906
|
-
#define
|
1907
|
-
#define
|
1908
|
-
#define
|
1909
|
-
#define
|
1910
|
-
#define
|
1911
|
-
#define
|
1912
|
-
#define
|
1913
|
-
#define
|
1914
|
-
#define
|
1915
|
-
#define
|
1916
|
-
#define
|
1917
|
-
|
1918
|
-
static
|
1919
|
-
static swig_module_info swig_module = {swig_types, 68, 0, 0, 0, 0};
|
1865
|
+
#define SWIGTYPE_p_GPS_SpaceNodeT_double_t swig_types[15]
|
1866
|
+
#define SWIGTYPE_p_GPS_SpaceNodeT_double_t__Ionospheric_UTC_Parameters swig_types[16]
|
1867
|
+
#define SWIGTYPE_p_GPS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris swig_types[17]
|
1868
|
+
#define SWIGTYPE_p_GPS_TimeT_double_t swig_types[18]
|
1869
|
+
#define SWIGTYPE_p_GPS_TimeT_double_t__leap_second_event_t swig_types[19]
|
1870
|
+
#define SWIGTYPE_p_GPS_TimeT_double_t__leap_year_prop_res_t swig_types[20]
|
1871
|
+
#define SWIGTYPE_p_GPS_User_PVTT_double_t swig_types[21]
|
1872
|
+
#define SWIGTYPE_p_MatrixT_ComplexT_double_t_Array2D_DenseT_ComplexT_double_t_t_MatrixViewBaseT_t_t swig_types[22]
|
1873
|
+
#define SWIGTYPE_p_MatrixT_double_Array2D_DenseT_double_t_MatrixViewBaseT_t_t swig_types[23]
|
1874
|
+
#define SWIGTYPE_p_MatrixViewBaseT_t swig_types[24]
|
1875
|
+
#define SWIGTYPE_p_MatrixViewFilterT_MatrixViewBaseT_t_t swig_types[25]
|
1876
|
+
#define SWIGTYPE_p_Matrix_FrozenT_double_Array2D_DenseT_double_t_MatrixViewBaseT_t_t swig_types[26]
|
1877
|
+
#define SWIGTYPE_p_PushableData swig_types[27]
|
1878
|
+
#define SWIGTYPE_p_RINEX_ClockT_double_t swig_types[28]
|
1879
|
+
#define SWIGTYPE_p_RINEX_ObservationT_double_t swig_types[29]
|
1880
|
+
#define SWIGTYPE_p_SBAS_EphemerisT_double_t swig_types[30]
|
1881
|
+
#define SWIGTYPE_p_SBAS_SolverOptionsT_double_t swig_types[31]
|
1882
|
+
#define SWIGTYPE_p_SBAS_SpaceNodeT_double_t swig_types[32]
|
1883
|
+
#define SWIGTYPE_p_SBAS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris swig_types[33]
|
1884
|
+
#define SWIGTYPE_p_SP3T_double_t swig_types[34]
|
1885
|
+
#define SWIGTYPE_p_System_ENUT_double_WGS84_t swig_types[35]
|
1886
|
+
#define SWIGTYPE_p_System_LLHT_double_WGS84_t swig_types[36]
|
1887
|
+
#define SWIGTYPE_p_System_XYZT_double_WGS84_t swig_types[37]
|
1888
|
+
#define SWIGTYPE_p_available_satellites_t swig_types[38]
|
1889
|
+
#define SWIGTYPE_p_char swig_types[39]
|
1890
|
+
#define SWIGTYPE_p_double swig_types[40]
|
1891
|
+
#define SWIGTYPE_p_enu_t swig_types[41]
|
1892
|
+
#define SWIGTYPE_p_eph_t swig_types[42]
|
1893
|
+
#define SWIGTYPE_p_float_t swig_types[43]
|
1894
|
+
#define SWIGTYPE_p_gps_space_node_t swig_types[44]
|
1895
|
+
#define SWIGTYPE_p_gps_time_t swig_types[45]
|
1896
|
+
#define SWIGTYPE_p_int swig_types[46]
|
1897
|
+
#define SWIGTYPE_p_int_t swig_types[47]
|
1898
|
+
#define SWIGTYPE_p_llh_t swig_types[48]
|
1899
|
+
#define SWIGTYPE_p_p_GPS_Solver_RAIM_LSRT_double_GPS_Solver_Base_DebugT_double_GPS_Solver_BaseT_double_t_t_t__user_pvt_t__detection_t swig_types[49]
|
1900
|
+
#define SWIGTYPE_p_p_GPS_Solver_RAIM_LSRT_double_GPS_Solver_Base_DebugT_double_GPS_Solver_BaseT_double_t_t_t__user_pvt_t__exclusion_t swig_types[50]
|
1901
|
+
#define SWIGTYPE_p_p_double swig_types[51]
|
1902
|
+
#define SWIGTYPE_p_range_correction_list_t swig_types[52]
|
1903
|
+
#define SWIGTYPE_p_s16_t swig_types[53]
|
1904
|
+
#define SWIGTYPE_p_s32_t swig_types[54]
|
1905
|
+
#define SWIGTYPE_p_s8_t swig_types[55]
|
1906
|
+
#define SWIGTYPE_p_satellites_t swig_types[56]
|
1907
|
+
#define SWIGTYPE_p_self_t swig_types[57]
|
1908
|
+
#define SWIGTYPE_p_std__vectorT_std__pairT_int_SBAS_SpaceNodeT_double_t__Satellite_const_p_t_t swig_types[58]
|
1909
|
+
#define SWIGTYPE_p_super_t swig_types[59]
|
1910
|
+
#define SWIGTYPE_p_swig__GC_VALUE swig_types[60]
|
1911
|
+
#define SWIGTYPE_p_u16_t swig_types[61]
|
1912
|
+
#define SWIGTYPE_p_u32_t swig_types[62]
|
1913
|
+
#define SWIGTYPE_p_u8_t swig_types[63]
|
1914
|
+
#define SWIGTYPE_p_uint_t swig_types[64]
|
1915
|
+
#define SWIGTYPE_p_unsigned_int swig_types[65]
|
1916
|
+
#define SWIGTYPE_p_xyz_t swig_types[66]
|
1917
|
+
static swig_type_info *swig_types[68];
|
1918
|
+
static swig_module_info swig_module = {swig_types, 67, 0, 0, 0, 0};
|
1920
1919
|
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
|
1921
1920
|
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
|
1922
1921
|
|
@@ -1965,6 +1964,7 @@ static VALUE mGPS;
|
|
1965
1964
|
#include "navigation/GPS_Solver_Base.h"
|
1966
1965
|
#include "navigation/GPS_Solver.h"
|
1967
1966
|
#include "navigation/GPS_Solver_RAIM.h"
|
1967
|
+
#include "navigation/GPS_Solver_MultiFrequency.h"
|
1968
1968
|
#include "navigation/SBAS_Solver.h"
|
1969
1969
|
#include "navigation/GLONASS_Solver.h"
|
1970
1970
|
|
@@ -2538,6 +2538,16 @@ struct GPS_Measurement {
|
|
2538
2538
|
L1_SIGNAL_STRENGTH_dBHz,
|
2539
2539
|
L1_LOCK_SEC,
|
2540
2540
|
L1_FREQUENCY,
|
2541
|
+
|
2542
|
+
|
2543
|
+
L2CM_PSEUDORANGE, L2CL_PSEUDORANGE, L2CM_PSEUDORANGE_SIGMA, L2CL_PSEUDORANGE_SIGMA,
|
2544
|
+
L2CM_CARRIER_PHASE, L2CL_CARRIER_PHASE, L2CM_CARRIER_PHASE_SIGMA, L2CL_CARRIER_PHASE_SIGMA,
|
2545
|
+
L2CM_DOPPLER, L2CL_DOPPLER, L2CM_DOPPLER_SIGMA, L2CL_DOPPLER_SIGMA,
|
2546
|
+
L2CM_RANGE_RATE, L2CL_RANGE_RATE, L2CM_RANGE_RATE_SIGMA, L2CL_RANGE_RATE_SIGMA,
|
2547
|
+
L2CM_SIGNAL_STRENGTH_dBHz, L2CL_SIGNAL_STRENGTH_dBHz,
|
2548
|
+
L2CM_LOCK_SEC, L2CL_LOCK_SEC,
|
2549
|
+
|
2550
|
+
|
2541
2551
|
ITEMS_PREDEFINED,
|
2542
2552
|
};
|
2543
2553
|
void add(const int &prn, const int &key, const FloatT &value){
|
@@ -2556,12 +2566,14 @@ struct GPS_SolverOptions_Common {
|
|
2556
2566
|
|
2557
2567
|
template <class FloatT>
|
2558
2568
|
struct GPS_SolverOptions
|
2559
|
-
: public GPS_SinglePositioning<FloatT>::options_t,
|
2569
|
+
: public GPS_Solver_MultiFrequency<GPS_SinglePositioning<FloatT> >::options_t,
|
2560
2570
|
GPS_SolverOptions_Common<FloatT> {
|
2561
|
-
typedef typename GPS_SinglePositioning<FloatT>::options_t base_t;
|
2571
|
+
typedef typename GPS_Solver_MultiFrequency<GPS_SinglePositioning<FloatT> >::options_t base_t;
|
2562
2572
|
void exclude(const int &prn){base_t::exclude_prn.set(prn);}
|
2563
2573
|
void include(const int &prn){base_t::exclude_prn.reset(prn);}
|
2564
2574
|
std::vector<int> excluded() const {return base_t::exclude_prn.excluded();}
|
2575
|
+
bool get_exclude_L2C() {return base_t::exclude_L2C;}
|
2576
|
+
bool set_exclude_L2C(const bool &b) {return base_t::exclude_L2C = b;}
|
2565
2577
|
GPS_Solver_GeneralOptions<FloatT> *cast_general(){return this;}
|
2566
2578
|
const GPS_Solver_GeneralOptions<FloatT> *cast_general() const {return this;}
|
2567
2579
|
};
|
@@ -2617,7 +2629,8 @@ template <class BaseT, class HookT>
|
|
2617
2629
|
struct HookableSolver : public BaseT {
|
2618
2630
|
typedef BaseT base_t;
|
2619
2631
|
HookT *hook;
|
2620
|
-
|
2632
|
+
template <class ArgT>
|
2633
|
+
HookableSolver(const ArgT &);
|
2621
2634
|
virtual typename base_t::relative_property_t relative_property(
|
2622
2635
|
const typename base_t::prn_t &prn,
|
2623
2636
|
const typename base_t::measurement_t::mapped_type &measurement,
|
@@ -2659,7 +2672,9 @@ struct GPS_Solver
|
|
2659
2672
|
struct gps_t {
|
2660
2673
|
GPS_SpaceNode<FloatT> space_node;
|
2661
2674
|
GPS_SolverOptions<FloatT> options;
|
2662
|
-
HookableSolver<
|
2675
|
+
HookableSolver<
|
2676
|
+
GPS_Solver_MultiFrequency<GPS_SinglePositioning<FloatT> >,
|
2677
|
+
GPS_Solver<FloatT> > solver;
|
2663
2678
|
struct ephemeris_proxy_t {
|
2664
2679
|
struct item_t {
|
2665
2680
|
const void *impl;
|
@@ -2681,19 +2696,21 @@ struct GPS_Solver
|
|
2681
2696
|
solver.satellites.impl_select = forward;
|
2682
2697
|
}
|
2683
2698
|
} ephemeris_proxy;
|
2684
|
-
gps_t() : space_node(), options(), solver(
|
2699
|
+
gps_t() : space_node(), options(), solver(space_node), ephemeris_proxy(solver) {
|
2700
|
+
options.exclude_L2C = true;
|
2701
|
+
}
|
2685
2702
|
} gps;
|
2686
2703
|
struct sbas_t {
|
2687
2704
|
SBAS_SpaceNode<FloatT> space_node;
|
2688
2705
|
SBAS_SolverOptions<FloatT> options;
|
2689
2706
|
HookableSolver<SBAS_SinglePositioning<FloatT>, GPS_Solver<FloatT> > solver;
|
2690
|
-
sbas_t() : space_node(), options(), solver(
|
2707
|
+
sbas_t() : space_node(), options(), solver(space_node) {}
|
2691
2708
|
} sbas;
|
2692
2709
|
struct glonass_t {
|
2693
2710
|
GLONASS_SpaceNode<FloatT> space_node;
|
2694
2711
|
GLONASS_SolverOptions<FloatT> options;
|
2695
2712
|
HookableSolver<GLONASS_SinglePositioning<FloatT>, GPS_Solver<FloatT> > solver;
|
2696
|
-
glonass_t() : space_node(), options(), solver(
|
2713
|
+
glonass_t() : space_node(), options(), solver(space_node) {}
|
2697
2714
|
} glonass;
|
2698
2715
|
VALUE hooks;
|
2699
2716
|
typedef std::vector<GPS_RangeCorrector<FloatT> > user_correctors_t;
|
@@ -4057,6 +4074,20 @@ SWIGINTERN double const &GPS_SolverOptions_Common_Sl_double_Sg__get_residual_mas
|
|
4057
4074
|
return self->cast_general()->residual_mask;
|
4058
4075
|
}
|
4059
4076
|
|
4077
|
+
template <> template <>
|
4078
|
+
HookableSolver<
|
4079
|
+
GPS_Solver_MultiFrequency<GPS_SinglePositioning<double> >,
|
4080
|
+
GPS_Solver<double> >
|
4081
|
+
::HookableSolver<GPS_SpaceNode<double> >(const GPS_SpaceNode<double> &sn)
|
4082
|
+
: GPS_Solver_MultiFrequency<GPS_SinglePositioning<double> >(sn), hook(NULL) {}
|
4083
|
+
template <> template <>
|
4084
|
+
HookableSolver<SBAS_SinglePositioning<double>, GPS_Solver<double> >
|
4085
|
+
::HookableSolver<SBAS_SpaceNode<double> >(const SBAS_SpaceNode<double> &sn)
|
4086
|
+
: SBAS_SinglePositioning<double>(sn), hook(NULL) {}
|
4087
|
+
template <> template <>
|
4088
|
+
HookableSolver<GLONASS_SinglePositioning<double>, GPS_Solver<double> >
|
4089
|
+
::HookableSolver<GLONASS_SpaceNode<double> >(const GLONASS_SpaceNode<double> &sn)
|
4090
|
+
: GLONASS_SinglePositioning<double>(sn), hook(NULL) {}
|
4060
4091
|
template <>
|
4061
4092
|
GPS_Solver<double>::base_t::relative_property_t
|
4062
4093
|
GPS_Solver<double>::relative_property(
|
@@ -16602,6 +16633,186 @@ A class method.
|
|
16602
16633
|
|
16603
16634
|
A class method.
|
16604
16635
|
|
16636
|
+
*/
|
16637
|
+
/*
|
16638
|
+
Document-method: GPS_PVT::GPS.L2CM_PSEUDORANGE
|
16639
|
+
|
16640
|
+
call-seq:
|
16641
|
+
L2CM_PSEUDORANGE -> int
|
16642
|
+
|
16643
|
+
A class method.
|
16644
|
+
|
16645
|
+
*/
|
16646
|
+
/*
|
16647
|
+
Document-method: GPS_PVT::GPS.L2CL_PSEUDORANGE
|
16648
|
+
|
16649
|
+
call-seq:
|
16650
|
+
L2CL_PSEUDORANGE -> int
|
16651
|
+
|
16652
|
+
A class method.
|
16653
|
+
|
16654
|
+
*/
|
16655
|
+
/*
|
16656
|
+
Document-method: GPS_PVT::GPS.L2CM_PSEUDORANGE_SIGMA
|
16657
|
+
|
16658
|
+
call-seq:
|
16659
|
+
L2CM_PSEUDORANGE_SIGMA -> int
|
16660
|
+
|
16661
|
+
A class method.
|
16662
|
+
|
16663
|
+
*/
|
16664
|
+
/*
|
16665
|
+
Document-method: GPS_PVT::GPS.L2CL_PSEUDORANGE_SIGMA
|
16666
|
+
|
16667
|
+
call-seq:
|
16668
|
+
L2CL_PSEUDORANGE_SIGMA -> int
|
16669
|
+
|
16670
|
+
A class method.
|
16671
|
+
|
16672
|
+
*/
|
16673
|
+
/*
|
16674
|
+
Document-method: GPS_PVT::GPS.L2CM_CARRIER_PHASE
|
16675
|
+
|
16676
|
+
call-seq:
|
16677
|
+
L2CM_CARRIER_PHASE -> int
|
16678
|
+
|
16679
|
+
A class method.
|
16680
|
+
|
16681
|
+
*/
|
16682
|
+
/*
|
16683
|
+
Document-method: GPS_PVT::GPS.L2CL_CARRIER_PHASE
|
16684
|
+
|
16685
|
+
call-seq:
|
16686
|
+
L2CL_CARRIER_PHASE -> int
|
16687
|
+
|
16688
|
+
A class method.
|
16689
|
+
|
16690
|
+
*/
|
16691
|
+
/*
|
16692
|
+
Document-method: GPS_PVT::GPS.L2CM_CARRIER_PHASE_SIGMA
|
16693
|
+
|
16694
|
+
call-seq:
|
16695
|
+
L2CM_CARRIER_PHASE_SIGMA -> int
|
16696
|
+
|
16697
|
+
A class method.
|
16698
|
+
|
16699
|
+
*/
|
16700
|
+
/*
|
16701
|
+
Document-method: GPS_PVT::GPS.L2CL_CARRIER_PHASE_SIGMA
|
16702
|
+
|
16703
|
+
call-seq:
|
16704
|
+
L2CL_CARRIER_PHASE_SIGMA -> int
|
16705
|
+
|
16706
|
+
A class method.
|
16707
|
+
|
16708
|
+
*/
|
16709
|
+
/*
|
16710
|
+
Document-method: GPS_PVT::GPS.L2CM_DOPPLER
|
16711
|
+
|
16712
|
+
call-seq:
|
16713
|
+
L2CM_DOPPLER -> int
|
16714
|
+
|
16715
|
+
A class method.
|
16716
|
+
|
16717
|
+
*/
|
16718
|
+
/*
|
16719
|
+
Document-method: GPS_PVT::GPS.L2CL_DOPPLER
|
16720
|
+
|
16721
|
+
call-seq:
|
16722
|
+
L2CL_DOPPLER -> int
|
16723
|
+
|
16724
|
+
A class method.
|
16725
|
+
|
16726
|
+
*/
|
16727
|
+
/*
|
16728
|
+
Document-method: GPS_PVT::GPS.L2CM_DOPPLER_SIGMA
|
16729
|
+
|
16730
|
+
call-seq:
|
16731
|
+
L2CM_DOPPLER_SIGMA -> int
|
16732
|
+
|
16733
|
+
A class method.
|
16734
|
+
|
16735
|
+
*/
|
16736
|
+
/*
|
16737
|
+
Document-method: GPS_PVT::GPS.L2CL_DOPPLER_SIGMA
|
16738
|
+
|
16739
|
+
call-seq:
|
16740
|
+
L2CL_DOPPLER_SIGMA -> int
|
16741
|
+
|
16742
|
+
A class method.
|
16743
|
+
|
16744
|
+
*/
|
16745
|
+
/*
|
16746
|
+
Document-method: GPS_PVT::GPS.L2CM_RANGE_RATE
|
16747
|
+
|
16748
|
+
call-seq:
|
16749
|
+
L2CM_RANGE_RATE -> int
|
16750
|
+
|
16751
|
+
A class method.
|
16752
|
+
|
16753
|
+
*/
|
16754
|
+
/*
|
16755
|
+
Document-method: GPS_PVT::GPS.L2CL_RANGE_RATE
|
16756
|
+
|
16757
|
+
call-seq:
|
16758
|
+
L2CL_RANGE_RATE -> int
|
16759
|
+
|
16760
|
+
A class method.
|
16761
|
+
|
16762
|
+
*/
|
16763
|
+
/*
|
16764
|
+
Document-method: GPS_PVT::GPS.L2CM_RANGE_RATE_SIGMA
|
16765
|
+
|
16766
|
+
call-seq:
|
16767
|
+
L2CM_RANGE_RATE_SIGMA -> int
|
16768
|
+
|
16769
|
+
A class method.
|
16770
|
+
|
16771
|
+
*/
|
16772
|
+
/*
|
16773
|
+
Document-method: GPS_PVT::GPS.L2CL_RANGE_RATE_SIGMA
|
16774
|
+
|
16775
|
+
call-seq:
|
16776
|
+
L2CL_RANGE_RATE_SIGMA -> int
|
16777
|
+
|
16778
|
+
A class method.
|
16779
|
+
|
16780
|
+
*/
|
16781
|
+
/*
|
16782
|
+
Document-method: GPS_PVT::GPS.L2CM_SIGNAL_STRENGTH_dBHz
|
16783
|
+
|
16784
|
+
call-seq:
|
16785
|
+
L2CM_SIGNAL_STRENGTH_dBHz -> int
|
16786
|
+
|
16787
|
+
A class method.
|
16788
|
+
|
16789
|
+
*/
|
16790
|
+
/*
|
16791
|
+
Document-method: GPS_PVT::GPS.L2CL_SIGNAL_STRENGTH_dBHz
|
16792
|
+
|
16793
|
+
call-seq:
|
16794
|
+
L2CL_SIGNAL_STRENGTH_dBHz -> int
|
16795
|
+
|
16796
|
+
A class method.
|
16797
|
+
|
16798
|
+
*/
|
16799
|
+
/*
|
16800
|
+
Document-method: GPS_PVT::GPS.L2CM_LOCK_SEC
|
16801
|
+
|
16802
|
+
call-seq:
|
16803
|
+
L2CM_LOCK_SEC -> int
|
16804
|
+
|
16805
|
+
A class method.
|
16806
|
+
|
16807
|
+
*/
|
16808
|
+
/*
|
16809
|
+
Document-method: GPS_PVT::GPS.L2CL_LOCK_SEC
|
16810
|
+
|
16811
|
+
call-seq:
|
16812
|
+
L2CL_LOCK_SEC -> int
|
16813
|
+
|
16814
|
+
A class method.
|
16815
|
+
|
16605
16816
|
*/
|
16606
16817
|
/*
|
16607
16818
|
Document-method: GPS_PVT::GPS.ITEMS_PREDEFINED
|
@@ -16900,121 +17111,6 @@ free_GPS_SolverOptions_Common_Sl_double_Sg_(void *self) {
|
|
16900
17111
|
delete arg1;
|
16901
17112
|
}
|
16902
17113
|
|
16903
|
-
/*
|
16904
|
-
Document-method: GPS_PVT::GPS::SolverOptionsCommon.cast_general
|
16905
|
-
|
16906
|
-
call-seq:
|
16907
|
-
cast_general -> GPS_Solver_GeneralOptions< double > *
|
16908
|
-
cast_general -> GPS_Solver_GeneralOptions< double > const
|
16909
|
-
|
16910
|
-
An instance method.
|
16911
|
-
|
16912
|
-
*/
|
16913
|
-
SWIGINTERN VALUE
|
16914
|
-
_wrap_SolverOptionsCommon_cast_general__SWIG_0(int argc, VALUE *argv, VALUE self) {
|
16915
|
-
GPS_SolverOptions_Common< double > *arg1 = (GPS_SolverOptions_Common< double > *) 0 ;
|
16916
|
-
void *argp1 = 0 ;
|
16917
|
-
int res1 = 0 ;
|
16918
|
-
GPS_Solver_GeneralOptions< double > *result = 0 ;
|
16919
|
-
VALUE vresult = Qnil;
|
16920
|
-
|
16921
|
-
if ((argc < 0) || (argc > 0)) {
|
16922
|
-
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
16923
|
-
}
|
16924
|
-
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_GPS_SolverOptions_CommonT_double_t, 0 | 0 );
|
16925
|
-
if (!SWIG_IsOK(res1)) {
|
16926
|
-
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "GPS_SolverOptions_Common< double > *","cast_general", 1, self ));
|
16927
|
-
}
|
16928
|
-
arg1 = reinterpret_cast< GPS_SolverOptions_Common< double > * >(argp1);
|
16929
|
-
{
|
16930
|
-
try {
|
16931
|
-
result = (GPS_Solver_GeneralOptions< double > *)(arg1)->cast_general();
|
16932
|
-
} catch (const native_exception &e) {
|
16933
|
-
e.regenerate();
|
16934
|
-
SWIG_fail;
|
16935
|
-
} catch (const std::exception& e) {
|
16936
|
-
SWIG_exception_fail(SWIG_RuntimeError, e.what());
|
16937
|
-
}
|
16938
|
-
}
|
16939
|
-
vresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_GPS_Solver_GeneralOptionsT_double_t, 0 | 0 );
|
16940
|
-
return vresult;
|
16941
|
-
fail:
|
16942
|
-
return Qnil;
|
16943
|
-
}
|
16944
|
-
|
16945
|
-
|
16946
|
-
SWIGINTERN VALUE
|
16947
|
-
_wrap_SolverOptionsCommon_cast_general__SWIG_1(int argc, VALUE *argv, VALUE self) {
|
16948
|
-
GPS_SolverOptions_Common< double > *arg1 = (GPS_SolverOptions_Common< double > *) 0 ;
|
16949
|
-
void *argp1 = 0 ;
|
16950
|
-
int res1 = 0 ;
|
16951
|
-
GPS_Solver_GeneralOptions< double > *result = 0 ;
|
16952
|
-
VALUE vresult = Qnil;
|
16953
|
-
|
16954
|
-
if ((argc < 0) || (argc > 0)) {
|
16955
|
-
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
16956
|
-
}
|
16957
|
-
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_GPS_SolverOptions_CommonT_double_t, 0 | 0 );
|
16958
|
-
if (!SWIG_IsOK(res1)) {
|
16959
|
-
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "GPS_SolverOptions_Common< double > const *","cast_general", 1, self ));
|
16960
|
-
}
|
16961
|
-
arg1 = reinterpret_cast< GPS_SolverOptions_Common< double > * >(argp1);
|
16962
|
-
{
|
16963
|
-
try {
|
16964
|
-
result = (GPS_Solver_GeneralOptions< double > *)((GPS_SolverOptions_Common< double > const *)arg1)->cast_general();
|
16965
|
-
} catch (const native_exception &e) {
|
16966
|
-
e.regenerate();
|
16967
|
-
SWIG_fail;
|
16968
|
-
} catch (const std::exception& e) {
|
16969
|
-
SWIG_exception_fail(SWIG_RuntimeError, e.what());
|
16970
|
-
}
|
16971
|
-
}
|
16972
|
-
vresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_GPS_Solver_GeneralOptionsT_double_t, 0 | 0 );
|
16973
|
-
return vresult;
|
16974
|
-
fail:
|
16975
|
-
return Qnil;
|
16976
|
-
}
|
16977
|
-
|
16978
|
-
|
16979
|
-
SWIGINTERN VALUE _wrap_SolverOptionsCommon_cast_general(int nargs, VALUE *args, VALUE self) {
|
16980
|
-
int argc;
|
16981
|
-
VALUE argv[2];
|
16982
|
-
int ii;
|
16983
|
-
|
16984
|
-
argc = nargs + 1;
|
16985
|
-
argv[0] = self;
|
16986
|
-
if (argc > 2) SWIG_fail;
|
16987
|
-
for (ii = 1; (ii < argc); ++ii) {
|
16988
|
-
argv[ii] = args[ii-1];
|
16989
|
-
}
|
16990
|
-
if (argc == 1) {
|
16991
|
-
int _v;
|
16992
|
-
void *vptr = 0;
|
16993
|
-
int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_GPS_SolverOptions_CommonT_double_t, 0);
|
16994
|
-
_v = SWIG_CheckState(res);
|
16995
|
-
if (_v) {
|
16996
|
-
return _wrap_SolverOptionsCommon_cast_general__SWIG_0(nargs, args, self);
|
16997
|
-
}
|
16998
|
-
}
|
16999
|
-
if (argc == 1) {
|
17000
|
-
int _v;
|
17001
|
-
void *vptr = 0;
|
17002
|
-
int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_GPS_SolverOptions_CommonT_double_t, 0);
|
17003
|
-
_v = SWIG_CheckState(res);
|
17004
|
-
if (_v) {
|
17005
|
-
return _wrap_SolverOptionsCommon_cast_general__SWIG_1(nargs, args, self);
|
17006
|
-
}
|
17007
|
-
}
|
17008
|
-
|
17009
|
-
fail:
|
17010
|
-
Ruby_Format_OverloadedError( argc, 2, "SolverOptionsCommon.cast_general",
|
17011
|
-
" GPS_Solver_GeneralOptions< double > SolverOptionsCommon.cast_general()\n"
|
17012
|
-
" GPS_Solver_GeneralOptions< double > const * SolverOptionsCommon.cast_general()\n");
|
17013
|
-
|
17014
|
-
return Qnil;
|
17015
|
-
}
|
17016
|
-
|
17017
|
-
|
17018
17114
|
/*
|
17019
17115
|
Document-method: GPS_PVT::GPS::SolverOptionsCommon.elevation_mask=
|
17020
17116
|
|
@@ -17359,6 +17455,100 @@ fail:
|
|
17359
17455
|
}
|
17360
17456
|
|
17361
17457
|
|
17458
|
+
/*
|
17459
|
+
Document-method: GPS_PVT::GPS::SolverOptions.exclude_L2C?
|
17460
|
+
|
17461
|
+
call-seq:
|
17462
|
+
exclude_L2C? -> bool
|
17463
|
+
|
17464
|
+
An instance method.
|
17465
|
+
|
17466
|
+
*/
|
17467
|
+
SWIGINTERN VALUE
|
17468
|
+
_wrap_SolverOptions_exclude_L2Cq___(int argc, VALUE *argv, VALUE self) {
|
17469
|
+
GPS_SolverOptions< double > *arg1 = (GPS_SolverOptions< double > *) 0 ;
|
17470
|
+
void *argp1 = 0 ;
|
17471
|
+
int res1 = 0 ;
|
17472
|
+
bool result;
|
17473
|
+
VALUE vresult = Qnil;
|
17474
|
+
|
17475
|
+
if ((argc < 0) || (argc > 0)) {
|
17476
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
17477
|
+
}
|
17478
|
+
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_GPS_SolverOptionsT_double_t, 0 | 0 );
|
17479
|
+
if (!SWIG_IsOK(res1)) {
|
17480
|
+
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "GPS_SolverOptions< double > *","get_exclude_L2C", 1, self ));
|
17481
|
+
}
|
17482
|
+
arg1 = reinterpret_cast< GPS_SolverOptions< double > * >(argp1);
|
17483
|
+
{
|
17484
|
+
try {
|
17485
|
+
result = (bool)(arg1)->get_exclude_L2C();
|
17486
|
+
} catch (const native_exception &e) {
|
17487
|
+
e.regenerate();
|
17488
|
+
SWIG_fail;
|
17489
|
+
} catch (const std::exception& e) {
|
17490
|
+
SWIG_exception_fail(SWIG_RuntimeError, e.what());
|
17491
|
+
}
|
17492
|
+
}
|
17493
|
+
vresult = SWIG_From_bool(static_cast< bool >(result));
|
17494
|
+
return vresult;
|
17495
|
+
fail:
|
17496
|
+
return Qnil;
|
17497
|
+
}
|
17498
|
+
|
17499
|
+
|
17500
|
+
/*
|
17501
|
+
Document-method: GPS_PVT::GPS::SolverOptions.exclude_L2C=
|
17502
|
+
|
17503
|
+
call-seq:
|
17504
|
+
exclude_L2C=(bool const & b) -> bool
|
17505
|
+
|
17506
|
+
An instance method.
|
17507
|
+
|
17508
|
+
*/
|
17509
|
+
SWIGINTERN VALUE
|
17510
|
+
_wrap_SolverOptions_exclude_L2Ce___(int argc, VALUE *argv, VALUE self) {
|
17511
|
+
GPS_SolverOptions< double > *arg1 = (GPS_SolverOptions< double > *) 0 ;
|
17512
|
+
bool *arg2 = 0 ;
|
17513
|
+
void *argp1 = 0 ;
|
17514
|
+
int res1 = 0 ;
|
17515
|
+
bool temp2 ;
|
17516
|
+
bool val2 ;
|
17517
|
+
int ecode2 = 0 ;
|
17518
|
+
bool result;
|
17519
|
+
VALUE vresult = Qnil;
|
17520
|
+
|
17521
|
+
if ((argc < 1) || (argc > 1)) {
|
17522
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail;
|
17523
|
+
}
|
17524
|
+
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_GPS_SolverOptionsT_double_t, 0 | 0 );
|
17525
|
+
if (!SWIG_IsOK(res1)) {
|
17526
|
+
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "GPS_SolverOptions< double > *","set_exclude_L2C", 1, self ));
|
17527
|
+
}
|
17528
|
+
arg1 = reinterpret_cast< GPS_SolverOptions< double > * >(argp1);
|
17529
|
+
ecode2 = SWIG_AsVal_bool(argv[0], &val2);
|
17530
|
+
if (!SWIG_IsOK(ecode2)) {
|
17531
|
+
SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "bool","set_exclude_L2C", 2, argv[0] ));
|
17532
|
+
}
|
17533
|
+
temp2 = static_cast< bool >(val2);
|
17534
|
+
arg2 = &temp2;
|
17535
|
+
{
|
17536
|
+
try {
|
17537
|
+
result = (bool)(arg1)->set_exclude_L2C((bool const &)*arg2);
|
17538
|
+
} catch (const native_exception &e) {
|
17539
|
+
e.regenerate();
|
17540
|
+
SWIG_fail;
|
17541
|
+
} catch (const std::exception& e) {
|
17542
|
+
SWIG_exception_fail(SWIG_RuntimeError, e.what());
|
17543
|
+
}
|
17544
|
+
}
|
17545
|
+
vresult = SWIG_From_bool(static_cast< bool >(result));
|
17546
|
+
return vresult;
|
17547
|
+
fail:
|
17548
|
+
return Qnil;
|
17549
|
+
}
|
17550
|
+
|
17551
|
+
|
17362
17552
|
SWIGINTERN VALUE
|
17363
17553
|
#ifdef HAVE_RB_DEFINE_ALLOC_FUNC
|
17364
17554
|
_wrap_SolverOptions_allocate(VALUE self)
|
@@ -27276,7 +27466,6 @@ static swig_type_info _swigt__p_GPS_MeasurementT_double_t = {"_p_GPS_Measurement
|
|
27276
27466
|
static swig_type_info _swigt__p_GPS_SolverOptionsT_double_t = {"_p_GPS_SolverOptionsT_double_t", "GPS_SolverOptions< double > *", 0, 0, (void*)0, 0};
|
27277
27467
|
static swig_type_info _swigt__p_GPS_SolverOptions_CommonT_double_t = {"_p_GPS_SolverOptions_CommonT_double_t", "GPS_SolverOptions_Common< double > *", 0, 0, (void*)0, 0};
|
27278
27468
|
static swig_type_info _swigt__p_GPS_SolverT_double_t = {"_p_GPS_SolverT_double_t", "GPS_Solver< double > *", 0, 0, (void*)0, 0};
|
27279
|
-
static swig_type_info _swigt__p_GPS_Solver_GeneralOptionsT_double_t = {"_p_GPS_Solver_GeneralOptionsT_double_t", "GPS_Solver_GeneralOptions< double > *", 0, 0, (void*)0, 0};
|
27280
27469
|
static swig_type_info _swigt__p_GPS_SpaceNodeT_double_t = {"_p_GPS_SpaceNodeT_double_t", "GPS_SpaceNode< double >::self_t *|GPS_SpaceNode< double > *", 0, 0, (void*)0, 0};
|
27281
27470
|
static swig_type_info _swigt__p_GPS_SpaceNodeT_double_t__Ionospheric_UTC_Parameters = {"_p_GPS_SpaceNodeT_double_t__Ionospheric_UTC_Parameters", "GPS_SpaceNode< double >::Ionospheric_UTC_Parameters *", 0, 0, (void*)0, 0};
|
27282
27471
|
static swig_type_info _swigt__p_GPS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris = {"_p_GPS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris", "GPS_SpaceNode< double >::SatelliteProperties::Ephemeris *", 0, 0, (void*)0, 0};
|
@@ -27346,7 +27535,6 @@ static swig_type_info *swig_type_initial[] = {
|
|
27346
27535
|
&_swigt__p_GPS_SolverOptionsT_double_t,
|
27347
27536
|
&_swigt__p_GPS_SolverOptions_CommonT_double_t,
|
27348
27537
|
&_swigt__p_GPS_SolverT_double_t,
|
27349
|
-
&_swigt__p_GPS_Solver_GeneralOptionsT_double_t,
|
27350
27538
|
&_swigt__p_GPS_SpaceNodeT_double_t,
|
27351
27539
|
&_swigt__p_GPS_SpaceNodeT_double_t__Ionospheric_UTC_Parameters,
|
27352
27540
|
&_swigt__p_GPS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris,
|
@@ -27416,7 +27604,6 @@ static swig_cast_info _swigc__p_GPS_MeasurementT_double_t[] = { {&_swigt__p_GPS
|
|
27416
27604
|
static swig_cast_info _swigc__p_GPS_SolverOptionsT_double_t[] = { {&_swigt__p_GPS_SolverOptionsT_double_t, 0, 0, 0},{0, 0, 0, 0}};
|
27417
27605
|
static swig_cast_info _swigc__p_GPS_SolverOptions_CommonT_double_t[] = { {&_swigt__p_GPS_SolverOptions_CommonT_double_t, 0, 0, 0}, {&_swigt__p_GPS_SolverOptionsT_double_t, _p_GPS_SolverOptionsT_double_tTo_p_GPS_SolverOptions_CommonT_double_t, 0, 0}, {&_swigt__p_SBAS_SolverOptionsT_double_t, _p_SBAS_SolverOptionsT_double_tTo_p_GPS_SolverOptions_CommonT_double_t, 0, 0}, {&_swigt__p_GLONASS_SolverOptionsT_double_t, _p_GLONASS_SolverOptionsT_double_tTo_p_GPS_SolverOptions_CommonT_double_t, 0, 0},{0, 0, 0, 0}};
|
27418
27606
|
static swig_cast_info _swigc__p_GPS_SolverT_double_t[] = { {&_swigt__p_GPS_SolverT_double_t, 0, 0, 0},{0, 0, 0, 0}};
|
27419
|
-
static swig_cast_info _swigc__p_GPS_Solver_GeneralOptionsT_double_t[] = { {&_swigt__p_GPS_Solver_GeneralOptionsT_double_t, 0, 0, 0},{0, 0, 0, 0}};
|
27420
27607
|
static swig_cast_info _swigc__p_GPS_SpaceNodeT_double_t[] = { {&_swigt__p_GPS_SpaceNodeT_double_t, 0, 0, 0},{0, 0, 0, 0}};
|
27421
27608
|
static swig_cast_info _swigc__p_GPS_SpaceNodeT_double_t__Ionospheric_UTC_Parameters[] = { {&_swigt__p_GPS_Ionospheric_UTC_ParametersT_double_t, _p_GPS_Ionospheric_UTC_ParametersT_double_tTo_p_GPS_SpaceNodeT_double_t__Ionospheric_UTC_Parameters, 0, 0}, {&_swigt__p_GPS_SpaceNodeT_double_t__Ionospheric_UTC_Parameters, 0, 0, 0},{0, 0, 0, 0}};
|
27422
27609
|
static swig_cast_info _swigc__p_GPS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris[] = { {&_swigt__p_GPS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris, 0, 0, 0}, {&_swigt__p_GPS_EphemerisT_double_t, _p_GPS_EphemerisT_double_tTo_p_GPS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris, 0, 0},{0, 0, 0, 0}};
|
@@ -27486,7 +27673,6 @@ static swig_cast_info *swig_cast_initial[] = {
|
|
27486
27673
|
_swigc__p_GPS_SolverOptionsT_double_t,
|
27487
27674
|
_swigc__p_GPS_SolverOptions_CommonT_double_t,
|
27488
27675
|
_swigc__p_GPS_SolverT_double_t,
|
27489
|
-
_swigc__p_GPS_Solver_GeneralOptionsT_double_t,
|
27490
27676
|
_swigc__p_GPS_SpaceNodeT_double_t,
|
27491
27677
|
_swigc__p_GPS_SpaceNodeT_double_t__Ionospheric_UTC_Parameters,
|
27492
27678
|
_swigc__p_GPS_SpaceNodeT_double_t__SatelliteProperties__Ephemeris,
|
@@ -28067,6 +28253,26 @@ SWIGEXPORT void Init_GPS(void) {
|
|
28067
28253
|
rb_define_const(SwigClassMeasurement.klass, "L1_SIGNAL_STRENGTH_dBHz", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L1_SIGNAL_STRENGTH_dBHz)));
|
28068
28254
|
rb_define_const(SwigClassMeasurement.klass, "L1_LOCK_SEC", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L1_LOCK_SEC)));
|
28069
28255
|
rb_define_const(SwigClassMeasurement.klass, "L1_FREQUENCY", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L1_FREQUENCY)));
|
28256
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_PSEUDORANGE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_PSEUDORANGE)));
|
28257
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_PSEUDORANGE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_PSEUDORANGE)));
|
28258
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_PSEUDORANGE_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_PSEUDORANGE_SIGMA)));
|
28259
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_PSEUDORANGE_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_PSEUDORANGE_SIGMA)));
|
28260
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_CARRIER_PHASE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_CARRIER_PHASE)));
|
28261
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_CARRIER_PHASE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_CARRIER_PHASE)));
|
28262
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_CARRIER_PHASE_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_CARRIER_PHASE_SIGMA)));
|
28263
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_CARRIER_PHASE_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_CARRIER_PHASE_SIGMA)));
|
28264
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_DOPPLER", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_DOPPLER)));
|
28265
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_DOPPLER", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_DOPPLER)));
|
28266
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_DOPPLER_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_DOPPLER_SIGMA)));
|
28267
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_DOPPLER_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_DOPPLER_SIGMA)));
|
28268
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_RANGE_RATE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_RANGE_RATE)));
|
28269
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_RANGE_RATE", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_RANGE_RATE)));
|
28270
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_RANGE_RATE_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_RANGE_RATE_SIGMA)));
|
28271
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_RANGE_RATE_SIGMA", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_RANGE_RATE_SIGMA)));
|
28272
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_SIGNAL_STRENGTH_dBHz", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_SIGNAL_STRENGTH_dBHz)));
|
28273
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_SIGNAL_STRENGTH_dBHz", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_SIGNAL_STRENGTH_dBHz)));
|
28274
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CM_LOCK_SEC", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CM_LOCK_SEC)));
|
28275
|
+
rb_define_const(SwigClassMeasurement.klass, "L2CL_LOCK_SEC", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::L2CL_LOCK_SEC)));
|
28070
28276
|
rb_define_const(SwigClassMeasurement.klass, "ITEMS_PREDEFINED", SWIG_From_int(static_cast< int >(GPS_Measurement< double >::ITEMS_PREDEFINED)));
|
28071
28277
|
rb_define_method(SwigClassMeasurement.klass, "add", VALUEFUNC(_wrap_Measurement_add), -1);
|
28072
28278
|
rb_define_method(SwigClassMeasurement.klass, "each", VALUEFUNC(_wrap_Measurement_each), -1);
|
@@ -28078,7 +28284,6 @@ SWIGEXPORT void Init_GPS(void) {
|
|
28078
28284
|
SwigClassSolverOptionsCommon.klass = rb_define_class_under(mGPS, "SolverOptionsCommon", rb_cObject);
|
28079
28285
|
SWIG_TypeClientData(SWIGTYPE_p_GPS_SolverOptions_CommonT_double_t, (void *) &SwigClassSolverOptionsCommon);
|
28080
28286
|
rb_undef_alloc_func(SwigClassSolverOptionsCommon.klass);
|
28081
|
-
rb_define_method(SwigClassSolverOptionsCommon.klass, "cast_general", VALUEFUNC(_wrap_SolverOptionsCommon_cast_general), -1);
|
28082
28287
|
rb_define_method(SwigClassSolverOptionsCommon.klass, "elevation_mask=", VALUEFUNC(_wrap_SolverOptionsCommon_elevation_maske___), -1);
|
28083
28288
|
rb_define_method(SwigClassSolverOptionsCommon.klass, "elevation_mask", VALUEFUNC(_wrap_SolverOptionsCommon_elevation_mask), -1);
|
28084
28289
|
rb_define_method(SwigClassSolverOptionsCommon.klass, "residual_mask=", VALUEFUNC(_wrap_SolverOptionsCommon_residual_maske___), -1);
|
@@ -28094,6 +28299,8 @@ SWIGEXPORT void Init_GPS(void) {
|
|
28094
28299
|
rb_define_method(SwigClassSolverOptions.klass, "exclude", VALUEFUNC(_wrap_SolverOptions_exclude), -1);
|
28095
28300
|
rb_define_method(SwigClassSolverOptions.klass, "include", VALUEFUNC(_wrap_SolverOptions_include), -1);
|
28096
28301
|
rb_define_method(SwigClassSolverOptions.klass, "excluded", VALUEFUNC(_wrap_SolverOptions_excluded), -1);
|
28302
|
+
rb_define_method(SwigClassSolverOptions.klass, "exclude_L2C?", VALUEFUNC(_wrap_SolverOptions_exclude_L2Cq___), -1);
|
28303
|
+
rb_define_method(SwigClassSolverOptions.klass, "exclude_L2C=", VALUEFUNC(_wrap_SolverOptions_exclude_L2Ce___), -1);
|
28097
28304
|
SwigClassSolverOptions.mark = 0;
|
28098
28305
|
SwigClassSolverOptions.destroy = (void (*)(void *)) free_GPS_SolverOptions_Sl_double_Sg_;
|
28099
28306
|
SwigClassSolverOptions.trackObjects = 0;
|
@@ -57,13 +57,15 @@ struct GLONASS_SinglePositioning_Options : public GPS_Solver_GeneralOptions<Floa
|
|
57
57
|
|
58
58
|
template <class FloatT, class SolverBaseT = GPS_Solver_Base<FloatT> >
|
59
59
|
class GLONASS_SinglePositioning : public SolverBaseT {
|
60
|
-
private:
|
61
|
-
GLONASS_SinglePositioning<FloatT> &operator=(const GLONASS_SinglePositioning<FloatT> &);
|
62
60
|
public:
|
63
|
-
typedef GLONASS_SinglePositioning<FloatT> self_t;
|
61
|
+
typedef GLONASS_SinglePositioning<FloatT, SolverBaseT> self_t;
|
64
62
|
typedef SolverBaseT base_t;
|
65
63
|
typedef SolverBaseT super_t;
|
64
|
+
private:
|
65
|
+
self_t &operator=(const self_t &);
|
66
|
+
GLONASS_SinglePositioning(const self_t &);
|
66
67
|
|
68
|
+
public:
|
67
69
|
#if defined(__GNUC__) && (__GNUC__ < 5)
|
68
70
|
#define inheritate_type(x) typedef typename base_t::x x;
|
69
71
|
#else
|
@@ -77,12 +77,14 @@ struct GPS_SinglePositioning_Options : public GPS_Solver_GeneralOptions<FloatT>
|
|
77
77
|
|
78
78
|
template <class FloatT, class SolverBaseT = GPS_Solver_Base<FloatT> >
|
79
79
|
class GPS_SinglePositioning : public SolverBaseT {
|
80
|
-
private:
|
81
|
-
GPS_SinglePositioning<FloatT> &operator=(const GPS_SinglePositioning<FloatT> &);
|
82
80
|
public:
|
83
|
-
typedef GPS_SinglePositioning<FloatT> self_t;
|
81
|
+
typedef GPS_SinglePositioning<FloatT, SolverBaseT> self_t;
|
84
82
|
typedef SolverBaseT base_t;
|
83
|
+
private:
|
84
|
+
self_t &operator=(const self_t &);
|
85
|
+
GPS_SinglePositioning(const self_t &);
|
85
86
|
|
87
|
+
public:
|
86
88
|
#if defined(__GNUC__) && (__GNUC__ < 5)
|
87
89
|
#define inheritate_type(x) typedef typename base_t::x x;
|
88
90
|
#else
|
@@ -52,6 +52,7 @@ class GPS_Solver_MultiFrequency : public BaseSolver {
|
|
52
52
|
typedef BaseSolver super_t;
|
53
53
|
private:
|
54
54
|
self_t &operator=(const self_t &);
|
55
|
+
GPS_Solver_MultiFrequency(const self_t &);
|
55
56
|
public:
|
56
57
|
#if defined(__GNUC__) && (__GNUC__ < 5)
|
57
58
|
#define inheritate_type(x) typedef typename super_t::x x;
|
@@ -56,12 +56,14 @@ struct SBAS_SinglePositioning_Options : public GPS_Solver_GeneralOptions<FloatT>
|
|
56
56
|
|
57
57
|
template <class FloatT, class SolverBaseT = GPS_Solver_Base<FloatT> >
|
58
58
|
class SBAS_SinglePositioning : public SolverBaseT {
|
59
|
-
private:
|
60
|
-
SBAS_SinglePositioning<FloatT> &operator=(const SBAS_SinglePositioning<FloatT> &);
|
61
59
|
public:
|
62
|
-
typedef SBAS_SinglePositioning<FloatT> self_t;
|
60
|
+
typedef SBAS_SinglePositioning<FloatT, SolverBaseT> self_t;
|
63
61
|
typedef SolverBaseT base_t;
|
62
|
+
private:
|
63
|
+
self_t &operator=(const self_t &);
|
64
|
+
SBAS_SinglePositioning(const self_t &);
|
64
65
|
|
66
|
+
public:
|
65
67
|
#if defined(__GNUC__) && (__GNUC__ < 5)
|
66
68
|
#define inheritate_type(x) typedef typename base_t::x x;
|
67
69
|
#else
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#include "navigation/GPS_Solver_Base.h"
|
30
30
|
#include "navigation/GPS_Solver.h"
|
31
31
|
#include "navigation/GPS_Solver_RAIM.h"
|
32
|
+
#include "navigation/GPS_Solver_MultiFrequency.h"
|
32
33
|
#include "navigation/SBAS_Solver.h"
|
33
34
|
#include "navigation/GLONASS_Solver.h"
|
34
35
|
|
@@ -1119,6 +1120,16 @@ struct GPS_Measurement {
|
|
1119
1120
|
L1_SIGNAL_STRENGTH_dBHz,
|
1120
1121
|
L1_LOCK_SEC,
|
1121
1122
|
L1_FREQUENCY,
|
1123
|
+
#define make_entry(key) L2CM_ ## key, L2CL_ ## key
|
1124
|
+
#define make_entry2(key) make_entry(key), make_entry(key ## _SIGMA)
|
1125
|
+
make_entry2(PSEUDORANGE),
|
1126
|
+
make_entry2(CARRIER_PHASE),
|
1127
|
+
make_entry2(DOPPLER),
|
1128
|
+
make_entry2(RANGE_RATE),
|
1129
|
+
make_entry(SIGNAL_STRENGTH_dBHz),
|
1130
|
+
make_entry(LOCK_SEC),
|
1131
|
+
#undef make_entry2
|
1132
|
+
#undef make_entry
|
1122
1133
|
ITEMS_PREDEFINED,
|
1123
1134
|
};
|
1124
1135
|
void add(const int &prn, const int &key, const FloatT &value){
|
@@ -1142,7 +1153,7 @@ const type &get_ ## name () const {
|
|
1142
1153
|
MAKE_ACCESSOR2(residual_mask, FloatT);
|
1143
1154
|
#undef MAKE_ACCESSOR2
|
1144
1155
|
MAKE_VECTOR2ARRAY(int);
|
1145
|
-
%ignore
|
1156
|
+
%ignore cast_general;
|
1146
1157
|
}
|
1147
1158
|
%inline %{
|
1148
1159
|
template <class FloatT>
|
@@ -1156,17 +1167,23 @@ struct GPS_SolverOptions_Common {
|
|
1156
1167
|
%extend GPS_SolverOptions {
|
1157
1168
|
%ignore base_t;
|
1158
1169
|
%ignore cast_general;
|
1170
|
+
#ifdef SWIGRUBY
|
1171
|
+
%rename("exclude_L2C?") get_exclude_L2C;
|
1172
|
+
%rename("exclude_L2C=") set_exclude_L2C;
|
1173
|
+
#endif
|
1159
1174
|
MAKE_VECTOR2ARRAY(int);
|
1160
1175
|
}
|
1161
1176
|
%inline %{
|
1162
1177
|
template <class FloatT>
|
1163
1178
|
struct GPS_SolverOptions
|
1164
|
-
: public GPS_SinglePositioning<FloatT>::options_t,
|
1179
|
+
: public GPS_Solver_MultiFrequency<GPS_SinglePositioning<FloatT> >::options_t,
|
1165
1180
|
GPS_SolverOptions_Common<FloatT> {
|
1166
|
-
typedef typename GPS_SinglePositioning<FloatT>::options_t base_t;
|
1181
|
+
typedef typename GPS_Solver_MultiFrequency<GPS_SinglePositioning<FloatT> >::options_t base_t;
|
1167
1182
|
void exclude(const int &prn){base_t::exclude_prn.set(prn);}
|
1168
1183
|
void include(const int &prn){base_t::exclude_prn.reset(prn);}
|
1169
1184
|
std::vector<int> excluded() const {return base_t::exclude_prn.excluded();}
|
1185
|
+
bool get_exclude_L2C() {return base_t::exclude_L2C;}
|
1186
|
+
bool set_exclude_L2C(const bool &b) {return base_t::exclude_L2C = b;}
|
1170
1187
|
GPS_Solver_GeneralOptions<FloatT> *cast_general(){return this;}
|
1171
1188
|
const GPS_Solver_GeneralOptions<FloatT> *cast_general() const {return this;}
|
1172
1189
|
};
|
@@ -1236,7 +1253,8 @@ template <class BaseT, class HookT>
|
|
1236
1253
|
struct HookableSolver : public BaseT {
|
1237
1254
|
typedef BaseT base_t;
|
1238
1255
|
HookT *hook;
|
1239
|
-
|
1256
|
+
template <class ArgT>
|
1257
|
+
HookableSolver(const ArgT &);
|
1240
1258
|
virtual typename base_t::relative_property_t relative_property(
|
1241
1259
|
const typename base_t::prn_t &prn,
|
1242
1260
|
const typename base_t::measurement_t::mapped_type &measurement,
|
@@ -1289,6 +1307,20 @@ struct HookableSolver : public BaseT {
|
|
1289
1307
|
fragment=SWIG_From_frag(int),
|
1290
1308
|
fragment=SWIG_Traits_frag(FloatT),
|
1291
1309
|
fragment=SWIG_Traits_frag(GPS_Measurement<FloatT>)){
|
1310
|
+
template <> template <>
|
1311
|
+
HookableSolver<
|
1312
|
+
GPS_Solver_MultiFrequency<GPS_SinglePositioning<FloatT> >,
|
1313
|
+
GPS_Solver<FloatT> >
|
1314
|
+
::HookableSolver<GPS_SpaceNode<FloatT> >(const GPS_SpaceNode<FloatT> &sn)
|
1315
|
+
: GPS_Solver_MultiFrequency<GPS_SinglePositioning<FloatT> >(sn), hook(NULL) {}
|
1316
|
+
template <> template <>
|
1317
|
+
HookableSolver<SBAS_SinglePositioning<FloatT>, GPS_Solver<FloatT> >
|
1318
|
+
::HookableSolver<SBAS_SpaceNode<FloatT> >(const SBAS_SpaceNode<FloatT> &sn)
|
1319
|
+
: SBAS_SinglePositioning<FloatT>(sn), hook(NULL) {}
|
1320
|
+
template <> template <>
|
1321
|
+
HookableSolver<GLONASS_SinglePositioning<FloatT>, GPS_Solver<FloatT> >
|
1322
|
+
::HookableSolver<GLONASS_SpaceNode<FloatT> >(const GLONASS_SpaceNode<FloatT> &sn)
|
1323
|
+
: GLONASS_SinglePositioning<FloatT>(sn), hook(NULL) {}
|
1292
1324
|
template <>
|
1293
1325
|
GPS_Solver<FloatT>::base_t::relative_property_t
|
1294
1326
|
GPS_Solver<FloatT>::relative_property(
|
@@ -1581,7 +1613,9 @@ struct GPS_Solver
|
|
1581
1613
|
struct gps_t {
|
1582
1614
|
GPS_SpaceNode<FloatT> space_node;
|
1583
1615
|
GPS_SolverOptions<FloatT> options;
|
1584
|
-
HookableSolver<
|
1616
|
+
HookableSolver<
|
1617
|
+
GPS_Solver_MultiFrequency<GPS_SinglePositioning<FloatT> >,
|
1618
|
+
GPS_Solver<FloatT> > solver;
|
1585
1619
|
struct ephemeris_proxy_t {
|
1586
1620
|
struct item_t {
|
1587
1621
|
const void *impl;
|
@@ -1603,19 +1637,21 @@ struct GPS_Solver
|
|
1603
1637
|
solver.satellites.impl_select = forward;
|
1604
1638
|
}
|
1605
1639
|
} ephemeris_proxy;
|
1606
|
-
gps_t() : space_node(), options(), solver(
|
1640
|
+
gps_t() : space_node(), options(), solver(space_node), ephemeris_proxy(solver) {
|
1641
|
+
options.exclude_L2C = true;
|
1642
|
+
}
|
1607
1643
|
} gps;
|
1608
1644
|
struct sbas_t {
|
1609
1645
|
SBAS_SpaceNode<FloatT> space_node;
|
1610
1646
|
SBAS_SolverOptions<FloatT> options;
|
1611
1647
|
HookableSolver<SBAS_SinglePositioning<FloatT>, GPS_Solver<FloatT> > solver;
|
1612
|
-
sbas_t() : space_node(), options(), solver(
|
1648
|
+
sbas_t() : space_node(), options(), solver(space_node) {}
|
1613
1649
|
} sbas;
|
1614
1650
|
struct glonass_t {
|
1615
1651
|
GLONASS_SpaceNode<FloatT> space_node;
|
1616
1652
|
GLONASS_SolverOptions<FloatT> options;
|
1617
1653
|
HookableSolver<GLONASS_SinglePositioning<FloatT>, GPS_Solver<FloatT> > solver;
|
1618
|
-
glonass_t() : space_node(), options(), solver(
|
1654
|
+
glonass_t() : space_node(), options(), solver(space_node) {}
|
1619
1655
|
} glonass;
|
1620
1656
|
SWIG_Object hooks;
|
1621
1657
|
typedef std::vector<GPS_RangeCorrector<FloatT> > user_correctors_t;
|
@@ -924,6 +924,9 @@ __RINEX_CLK_TEXT__
|
|
924
924
|
}}.not_to raise_error
|
925
925
|
expect(solver.correction[:gps_ionospheric]).to include(:no_correction)
|
926
926
|
expect(solver.correction[:options][:f_10_7]).to eq(10)
|
927
|
+
expect(solver.gps_options.exclude_L2C?).to eq(true) #default
|
928
|
+
solver.gps_options.exclude_L2C = false
|
929
|
+
expect(solver.gps_options.exclude_L2C?).to eq(false)
|
927
930
|
sn.read(input[:rinex_nav])
|
928
931
|
t_meas = GPS::Time::new(1849, 172413)
|
929
932
|
sn.update_all_ephemeris(t_meas)
|
data/lib/gps_pvt/receiver.rb
CHANGED
@@ -290,6 +290,11 @@ class Receiver
|
|
290
290
|
when :fault_exclusion
|
291
291
|
@solver.options = {:skip_exclusion => !(output_options[:FDE] = v.to_b)}
|
292
292
|
next true
|
293
|
+
when :use_signal
|
294
|
+
{
|
295
|
+
:GPS_L2C => proc{@solver.gps_options.exclude_L2C = false},
|
296
|
+
}[v.to_sym].call rescue next false
|
297
|
+
next true
|
293
298
|
end
|
294
299
|
false
|
295
300
|
}
|
@@ -334,9 +339,9 @@ class Receiver
|
|
334
339
|
}.flatten(1))]
|
335
340
|
}
|
336
341
|
}.call
|
337
|
-
|
342
|
+
add_orig = instance_method(:add)
|
338
343
|
define_method(:add){|prn, key, value|
|
339
|
-
add_orig(prn, key.kind_of?(Symbol) ? GPS::Measurement.const_get(key) : key, value)
|
344
|
+
add_orig.bind(self).call(prn, key.kind_of?(Symbol) ? GPS::Measurement.const_get(key) : key, value)
|
340
345
|
}
|
341
346
|
}
|
342
347
|
|
@@ -523,33 +528,39 @@ class Receiver
|
|
523
528
|
v
|
524
529
|
}
|
525
530
|
sys, svid = gnss_serial.call(*loader.call(36, 2).reverse)
|
526
|
-
|
527
|
-
next if (packet[6 + 13] != 0) && (loader.call(38, 1, "C") != 0)
|
531
|
+
sigid = (packet[6 + 13] != 0) ? loader.call(38, 1, "C") : 0 # sigID if version(>0); @see UBX-18010854
|
528
532
|
case sys
|
529
|
-
when :GPS
|
533
|
+
when :GPS
|
534
|
+
sigid = {0 => :L1, 3 => :L2CL, 4 => :L2CM}[sigid]
|
535
|
+
when :SBAS
|
536
|
+
sigid = :L1
|
537
|
+
when :QZSS
|
538
|
+
sigid = {0 => :L1, 5 => :L2CL, 4 => :L2CM}[sigid]
|
530
539
|
when :GLONASS
|
531
540
|
svid += 0x100
|
541
|
+
sigid = {0 => :L1}[sigid] # TODO: to support {2 -> :L2}
|
532
542
|
meas.add(svid, :L1_FREQUENCY,
|
533
543
|
GPS::SpaceNode_GLONASS::L1_frequency(loader.call(39, 1, "C") - 7))
|
534
544
|
else; next
|
535
545
|
end
|
546
|
+
next unless sigid
|
536
547
|
trk_stat = loader.call(46, 1)[0]
|
537
548
|
{
|
538
|
-
:
|
539
|
-
:
|
549
|
+
:PSEUDORANGE => [16, 8, "E", proc{|v| (trk_stat & 0x1 == 0x1) ? v : nil}],
|
550
|
+
:PSEUDORANGE_SIGMA => [43, 1, nil, proc{|v|
|
540
551
|
(trk_stat & 0x1 == 0x1) ? (1E-2 * (1 << (v[0] & 0xF))) : nil
|
541
552
|
}],
|
542
|
-
:
|
543
|
-
:
|
544
|
-
:
|
545
|
-
:
|
553
|
+
:DOPPLER => [32, 4, "e"],
|
554
|
+
:DOPPLER_SIGMA => [45, 1, nil, proc{|v| 2E-3 * (1 << (v[0] & 0xF))}],
|
555
|
+
:CARRIER_PHASE => [24, 8, "E", proc{|v| (trk_stat & 0x2 == 0x2) ? v : nil}],
|
556
|
+
:CARRIER_PHASE_SIGMA => [44, 1, nil, proc{|v|
|
546
557
|
(trk_stat & 0x2 == 0x2) ? (0.004 * (v[0] & 0xF)) : nil
|
547
558
|
}],
|
548
|
-
:
|
549
|
-
:
|
559
|
+
:SIGNAL_STRENGTH_dBHz => [42, 1, "C"],
|
560
|
+
:LOCK_SEC => [40, 2, "v", proc{|v| 1E-3 * v}],
|
550
561
|
}.each{|k, prop|
|
551
562
|
next unless v = loader.call(*prop)
|
552
|
-
meas.add(svid, k, v)
|
563
|
+
meas.add(svid, "#{sigid}_#{k}".to_sym, v) rescue nil # unsupported signal
|
553
564
|
}
|
554
565
|
}
|
555
566
|
after_run.call(run(meas, t_meas), [meas, t_meas])
|
@@ -605,18 +616,19 @@ class Receiver
|
|
605
616
|
|
606
617
|
types ||= Hash[*(item[:meas_types].collect{|sys, values|
|
607
618
|
[sys, values.collect.with_index{|type_, i|
|
608
|
-
case type_
|
609
|
-
|
610
|
-
[
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
619
|
+
sig_obs_type = [case type_[1..-1]
|
620
|
+
when /^1C?$/; :L1
|
621
|
+
when /^2[XL]$/; :L2CL
|
622
|
+
when /^2S$/; :L2CM
|
623
|
+
else; nil
|
624
|
+
end, {
|
625
|
+
'C' => :PSEUDORANGE,
|
626
|
+
'L' => :CARRIER_PHASE,
|
627
|
+
'D' => :DOPPLER,
|
628
|
+
'S' => :SIGNAL_STRENGTH_dBHz,
|
629
|
+
}[type_[0]]]
|
630
|
+
next nil unless sig_obs_type.all?
|
631
|
+
[i, sig_obs_type.join('_').to_sym]
|
620
632
|
}.compact]
|
621
633
|
}.flatten(1))]
|
622
634
|
|
data/lib/gps_pvt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gps_pvt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fenrir(M.Naruoka)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyserial
|