gps_pvt 0.8.1 → 0.8.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.
- 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
|