gps_pvt 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/ninja-scan-light/tool/navigation/RINEX.h +22 -10
- data/ext/ninja-scan-light/tool/navigation/SP3.h +17 -1
- 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: 8059818f19a2c05d02838cdadc8e4c80f8587cc1d820cef940a1bd9c3c07e734
|
4
|
+
data.tar.gz: 65e9a8dddcf5a9f8ce3e434e19438401565f445f141c6ba1ba139b83631032fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f06f11c40ed2ab98a0c275df92e92a130aefefb2c6632fe2dcdb9f22021124f3082c176f84a9dcdf754896ae6fe1313bc42f3c5180a3ad44f689ebeab40349ae
|
7
|
+
data.tar.gz: 4f2011f3b622ca7ba2e3d0b0dcb809fceeac9f7afaa23e45fe48d452f686675c3281ba220251491b667577d8dea4a0fccdc75d2c02736c22538d0630c5178f2c
|
@@ -846,29 +846,37 @@ class RINEX_NAV_Reader : public RINEX_Reader<> {
|
|
846
846
|
int year, month, day;
|
847
847
|
FloatT tau_c_neg, tau_GPS; // TODO check tau_GPS polarity
|
848
848
|
int leap_sec;
|
849
|
+
int flags;
|
850
|
+
enum {
|
851
|
+
TAU_C_NEG = 0x01,
|
852
|
+
TAU_GPS = 0x02,
|
853
|
+
LEAP_SEC = 0x04,
|
854
|
+
};
|
849
855
|
};
|
850
856
|
static const typename super_t::convert_item_t t_corr_glonass_v2[4];
|
851
857
|
|
852
858
|
bool extract_t_corr_glonass_v2(t_corr_glonass_t &t_corr_glonass) const {
|
853
|
-
|
859
|
+
t_corr_glonass.flags = 0;
|
854
860
|
super_t::header_t::const_iterator it;
|
855
861
|
|
856
|
-
if(
|
862
|
+
if((it = _header.find("CORR TO SYSTEM TIME")) != _header.end()){
|
857
863
|
super_t::convert(t_corr_glonass_v2, it->second.front(), &t_corr_glonass);
|
864
|
+
t_corr_glonass.flags |= t_corr_glonass_t::TAU_C_NEG;
|
858
865
|
}
|
859
866
|
|
860
|
-
if(
|
867
|
+
if((it = _header.find("LEAP SECONDS")) != _header.end()){
|
861
868
|
iono_utc_t iono_utc;
|
862
869
|
super_t::convert(utc_leap_v2, it->second.front(), &iono_utc);
|
863
870
|
t_corr_glonass.leap_sec = iono_utc.delta_t_LS;
|
871
|
+
t_corr_glonass.flags |= t_corr_glonass_t::LEAP_SEC;
|
864
872
|
}
|
865
873
|
|
866
|
-
return
|
874
|
+
return t_corr_glonass.flags > 0;
|
867
875
|
}
|
868
876
|
|
869
877
|
bool extract_t_corr_glonass_v3(t_corr_glonass_t &t_corr_glonass) const {
|
870
878
|
iono_utc_t iono_utc;
|
871
|
-
|
879
|
+
t_corr_glonass.flags = 0;
|
872
880
|
typedef super_t::header_t::const_iterator it_t;
|
873
881
|
typedef super_t::header_t::mapped_type::const_iterator it2_t;
|
874
882
|
|
@@ -880,11 +888,12 @@ class RINEX_NAV_Reader : public RINEX_Reader<> {
|
|
880
888
|
super_t::convert(utc_v3, *it2, &iono_utc);
|
881
889
|
t_corr_glonass.year = t_corr_glonass.month = t_corr_glonass.day = 0;
|
882
890
|
t_corr_glonass.tau_c_neg = iono_utc.A0;
|
891
|
+
t_corr_glonass.flags |= t_corr_glonass_t::TAU_C_NEG;
|
883
892
|
}else if(it2->find("GLGP") != it2->npos){
|
884
893
|
super_t::convert(utc_v3, *it2, &iono_utc);
|
885
894
|
t_corr_glonass.tau_GPS = iono_utc.A0;
|
895
|
+
t_corr_glonass.flags |= t_corr_glonass_t::TAU_GPS;
|
886
896
|
}
|
887
|
-
utc = true;
|
888
897
|
}
|
889
898
|
}
|
890
899
|
|
@@ -895,10 +904,10 @@ class RINEX_NAV_Reader : public RINEX_Reader<> {
|
|
895
904
|
super_t::convert(utc_leap_v2, it->second.front(), &iono_utc);
|
896
905
|
}
|
897
906
|
t_corr_glonass.leap_sec = iono_utc.delta_t_LS;
|
898
|
-
|
907
|
+
t_corr_glonass.flags |= t_corr_glonass_t::LEAP_SEC;
|
899
908
|
}
|
900
909
|
|
901
|
-
return
|
910
|
+
return t_corr_glonass.flags > 0;
|
902
911
|
}
|
903
912
|
|
904
913
|
struct space_node_list_t {
|
@@ -955,8 +964,11 @@ class RINEX_NAV_Reader : public RINEX_Reader<> {
|
|
955
964
|
typename message_glonass_t::eph_t eph0(reader.msg_glonass);
|
956
965
|
eph0.tau_c = -t_corr_glonass.tau_c_neg;
|
957
966
|
eph0.tau_GPS = t_corr_glonass.tau_GPS;
|
958
|
-
typename GLONASS_SpaceNode<FloatT
|
959
|
-
|
967
|
+
typename GLONASS_SpaceNode<FloatT>::SatelliteProperties::Ephemeris_with_GPS_Time eph(
|
968
|
+
eph0,
|
969
|
+
(t_corr_glonass.flags & t_corr_glonass_t::LEAP_SEC)
|
970
|
+
? t_corr_glonass.leap_sec
|
971
|
+
: GPS_Time<FloatT>::guess_leap_seconds(reader.msg_glonass.date_tm));
|
960
972
|
space_nodes.glonass->satellite(reader.msg_glonass.svid).register_ephemeris(eph);
|
961
973
|
res++;
|
962
974
|
break;
|
@@ -770,6 +770,11 @@ class SP3_Reader {
|
|
770
770
|
dst_t &dst;
|
771
771
|
int &res;
|
772
772
|
epoch_t epoch;
|
773
|
+
enum {
|
774
|
+
TS_UNKNOWN,
|
775
|
+
TS_GPS,
|
776
|
+
TS_UTC
|
777
|
+
} time_system;
|
773
778
|
struct pv_t {
|
774
779
|
position_clock_t pos;
|
775
780
|
velocity_rate_t vel;
|
@@ -777,12 +782,15 @@ class SP3_Reader {
|
|
777
782
|
};
|
778
783
|
typedef std::map<int, pv_t> entries_t;
|
779
784
|
entries_t entries;
|
780
|
-
buf_t(dst_t &dst_, int &res_) : dst(dst_), res(res_), entries(){
|
785
|
+
buf_t(dst_t &dst_, int &res_) : dst(dst_), res(res_), time_system(TS_UNKNOWN), entries(){
|
781
786
|
epoch.symbols[0] = 0;
|
782
787
|
}
|
783
788
|
void flush(){
|
784
789
|
if(!epoch.symbols[0]){return;}
|
785
790
|
GPS_Time<FloatT> gpst(epoch);
|
791
|
+
if(time_system == TS_UTC){
|
792
|
+
gpst += GPS_Time<FloatT>::guess_leap_seconds(gpst);
|
793
|
+
}
|
786
794
|
for(typename entries_t::const_iterator it(entries.begin()), it_end(entries.end());
|
787
795
|
it != it_end; ++it){
|
788
796
|
if(it->second.pos.symbol[0]){
|
@@ -807,6 +815,14 @@ class SP3_Reader {
|
|
807
815
|
while(src.has_next()){
|
808
816
|
parsed_t parsed(src.parse_line());
|
809
817
|
switch(parsed.type){
|
818
|
+
case parsed_t::L21_22: // check time system
|
819
|
+
if(buf.time_system != buf_t::TS_UNKNOWN){break;}
|
820
|
+
if(std::strncmp(parsed.item.l21_22.time_system, "GPS", 3) == 0){
|
821
|
+
buf.time_system = buf_t::TS_GPS;
|
822
|
+
}else if(std::strncmp(parsed.item.l21_22.time_system, "UTC", 3) == 0){
|
823
|
+
buf.time_system = buf_t::TS_UTC;
|
824
|
+
}
|
825
|
+
break;
|
810
826
|
case parsed_t::EPOCH:
|
811
827
|
buf.flush();
|
812
828
|
buf.epoch = parsed.item.epoch;
|
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.6.
|
4
|
+
version: 0.6.1
|
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-07-
|
11
|
+
date: 2022-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|