gps_pvt 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|