Skip to content
Snippets Groups Projects
Commit 05963e91 authored by Bryan Cazabonne's avatar Bryan Cazabonne
Browse files

Take into consideration IRNSS date.

parent 5cd0c9aa
No related branches found
No related tags found
No related merge requests found
......@@ -134,6 +134,10 @@ public class AbsoluteDate
public static final AbsoluteDate QZSS_EPOCH =
new AbsoluteDate(DateComponents.QZSS_EPOCH, TimeComponents.H00, TimeScalesFactory.getQZSS());
/** Reference epoch for IRNSS weeks: 1999-08-22T00:00:00 IRNSS time. */
public static final AbsoluteDate IRNSS_EPOCH =
new AbsoluteDate(DateComponents.IRNSS_EPOCH, TimeComponents.H00, TimeScalesFactory.getIRNSS());
/** Reference epoch for BeiDou weeks: 2006-01-01T00:00:00 UTC. */
public static final AbsoluteDate BEIDOU_EPOCH =
new AbsoluteDate(DateComponents.BEIDOU_EPOCH, TimeComponents.H00, TimeScalesFactory.getBDT());
......
......@@ -68,6 +68,9 @@ public class DateComponents implements Serializable, Comparable<DateComponents>
/** Reference epoch for QZSS weeks: 1980-01-06. */
public static final DateComponents QZSS_EPOCH;
/** Reference epoch for IRNSS weeks: 1999-08-22. */
public static final DateComponents IRNSS_EPOCH;
/** Reference epoch for BeiDou weeks: 2006-01-01. */
public static final DateComponents BEIDOU_EPOCH;
......@@ -144,6 +147,7 @@ public class DateComponents implements Serializable, Comparable<DateComponents>
GALILEO_EPOCH = new DateComponents(1999, 8, 22);
GPS_EPOCH = new DateComponents(1980, 1, 6);
QZSS_EPOCH = new DateComponents(1980, 1, 6);
IRNSS_EPOCH = new DateComponents(1999, 8, 22);
BEIDOU_EPOCH = new DateComponents(2006, 1, 1);
GLONASS_EPOCH = new DateComponents(1996, 1, 1);
J2000_EPOCH = new DateComponents(2000, 1, 1);
......
......@@ -204,6 +204,7 @@ public class GNSSDate implements Serializable, TimeStamped {
case GALILEO : return TimeScalesFactory.getGST();
case QZSS : return TimeScalesFactory.getQZSS();
case BEIDOU : return TimeScalesFactory.getBDT();
case IRNSS : return TimeScalesFactory.getIRNSS();
default : throw new OrekitException(OrekitMessages.INVALID_SATELLITE_SYSTEM, satellite);
}
}
......@@ -219,6 +220,7 @@ public class GNSSDate implements Serializable, TimeStamped {
case GALILEO : return AbsoluteDate.GALILEO_EPOCH;
case QZSS : return AbsoluteDate.QZSS_EPOCH;
case BEIDOU : return AbsoluteDate.BEIDOU_EPOCH;
case IRNSS : return AbsoluteDate.IRNSS_EPOCH;
default : throw new OrekitException(OrekitMessages.INVALID_SATELLITE_SYSTEM, satellite);
}
}
......@@ -234,6 +236,7 @@ public class GNSSDate implements Serializable, TimeStamped {
case GALILEO : return DateComponents.GALILEO_EPOCH;
case QZSS : return DateComponents.QZSS_EPOCH;
case BEIDOU : return DateComponents.BEIDOU_EPOCH;
case IRNSS : return DateComponents.IRNSS_EPOCH;
default : throw new OrekitException(OrekitMessages.INVALID_SATELLITE_SYSTEM, satellite);
}
}
......@@ -294,7 +297,10 @@ public class GNSSDate implements Serializable, TimeStamped {
QZSS(SatelliteSystem.QZSS, 1024),
/** BeiDou. */
BEIDOU(SatelliteSystem.BEIDOU, 8192);
BEIDOU(SatelliteSystem.BEIDOU, 8192),
/** IRNSS. */
IRNSS(SatelliteSystem.IRNSS, 1024);
/** Map for the number of week in one GNSS rollover cycle. */
private static final Map<SatelliteSystem, Integer> CYCLE_MAP = new HashMap<SatelliteSystem, Integer>();
......
......@@ -52,6 +52,7 @@ public class AbsoluteDateTest {
Assert.assertEquals(315964819000l, AbsoluteDate.QZSS_EPOCH.toDate(tai).getTime());
Assert.assertEquals(1136073633000l, AbsoluteDate.BEIDOU_EPOCH.toDate(tai).getTime());
Assert.assertEquals(820443629000l, AbsoluteDate.GLONASS_EPOCH.toDate(tai).getTime());
Assert.assertEquals(935280019000l, AbsoluteDate.IRNSS_EPOCH.toDate(tai).getTime());
Assert.assertEquals(946728000000l, AbsoluteDate.J2000_EPOCH.toDate(tt).getTime());
}
......@@ -75,6 +76,8 @@ public class AbsoluteDateTest {
AbsoluteDate.BEIDOU_EPOCH.toString(TimeScalesFactory.getUTC()));
Assert.assertEquals("1995-12-31T21:00:00.000",
AbsoluteDate.GLONASS_EPOCH.toString(TimeScalesFactory.getUTC()));
Assert.assertEquals("1999-08-21T23:59:47.000",
AbsoluteDate.IRNSS_EPOCH.toString(TimeScalesFactory.getUTC()));
Assert.assertEquals("2000-01-01T12:00:00.000",
AbsoluteDate.J2000_EPOCH.toString(TimeScalesFactory.getTT()));
Assert.assertEquals("1970-01-01T00:00:00.000",
......
......@@ -60,6 +60,13 @@ public class GNSSDateTest {
doTestFromWeekAndMilli(SatelliteSystem.BEIDOU, date, time, 216, 515713000.0);
}
@Test
public void testFromWeekAndMilliIRNSS() {
final DateComponents date = new DateComponents(2006, 8, 9);
final TimeComponents time = new TimeComponents(16, 31, 3.0);
doTestFromWeekAndMilli(SatelliteSystem.IRNSS, date, time, 363, 318677000.0);
}
private void doTestFromWeekAndMilli(final SatelliteSystem system,
final DateComponents date, final TimeComponents time,
final int refWeek, final double refMilliSeconds) {
......@@ -98,6 +105,13 @@ public class GNSSDateTest {
doTestFromAbsoluteDate(SatelliteSystem.BEIDOU, date, time, 216, 515713000.0);
}
@Test
public void testFromAbsoluteDateIRNSS() {
final DateComponents date = new DateComponents(2006, 8, 9);
final TimeComponents time = new TimeComponents(16, 31, 3.0);
doTestFromAbsoluteDate(SatelliteSystem.IRNSS, date, time, 363, 318677000.0);
}
private void doTestFromAbsoluteDate(final SatelliteSystem system,
final DateComponents date, final TimeComponents time,
final int refWeek, final double refMilliSeconds) {
......@@ -126,6 +140,11 @@ public class GNSSDateTest {
doTestZero(SatelliteSystem.BEIDOU);
}
@Test
public void testZeroIRNSS() {
doTestZero(SatelliteSystem.IRNSS);
}
private void doTestZero(final SatelliteSystem system) {
AbsoluteDate epoch = null;
switch (system) {
......@@ -141,6 +160,9 @@ public class GNSSDateTest {
case BEIDOU:
epoch = AbsoluteDate.BEIDOU_EPOCH;
break;
case IRNSS:
epoch = AbsoluteDate.IRNSS_EPOCH;
break;
default:
break;
}
......@@ -189,6 +211,16 @@ public class GNSSDateTest {
Assert.assertEquals(8192, date2.getWeekNumber());
}
@Test
public void testZeroZeroIRNSS() {
GNSSDate.setRolloverReference(new DateComponents(DateComponents.IRNSS_EPOCH, 7 * 512));
GNSSDate date1 = new GNSSDate(0, 0.0, SatelliteSystem.IRNSS);
Assert.assertEquals(0.0, date1.getDate().durationFrom(AbsoluteDate.IRNSS_EPOCH), 1.0e-15);
GNSSDate.setRolloverReference(new DateComponents(GNSSDate.getRolloverReference(), 1));
GNSSDate date2 = new GNSSDate(0, 0.0, SatelliteSystem.IRNSS);
Assert.assertEquals(1024, date2.getWeekNumber());
}
@Test
public void testSerializationGPS() throws ClassNotFoundException, IOException {
final DateComponents date = new DateComponents(2006, 8, 9);
......@@ -217,6 +249,13 @@ public class GNSSDateTest {
doTestSerialization(SatelliteSystem.BEIDOU, date, time, 216, 515713000.0);
}
@Test
public void testSerializationIRNSS() throws ClassNotFoundException, IOException {
final DateComponents date = new DateComponents(2006, 8, 9);
final TimeComponents time = new TimeComponents(16, 31, 3.0);
doTestSerialization(SatelliteSystem.IRNSS, date, time, 363, 318677000.0);
}
@Test
public void testDefaultRolloverReference() {
Assert.assertNull(GNSSDate.getRolloverReference());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment