1   /* Copyright 2002-2022 CS GROUP
2    * Licensed to CS GROUP (CS) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * CS licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.orekit.files.ilrs;
18  
19  /**
20   * Container for Consolidated laser ranging Data Format (CDR) configuration records.
21   * @author Bryan Cazabonne
22   * @since 10.3
23   */
24  public class CRDConfiguration {
25  
26      /** System configuration record. */
27      private SystemConfiguration systemRecord;
28  
29      /** Laser configuration record. */
30      private LaserConfiguration laserRecord;
31  
32      /** Detector configuration record. */
33      private DetectorConfiguration detectorRecord;
34  
35      /** Timing system configuration record. */
36      private TimingSystemConfiguration timingRecord;
37  
38      /** Transponder configuration record. */
39      private TransponderConfiguration transponderRecord;
40  
41      /** Software configuration record. */
42      private SoftwareConfiguration softwareRecord;
43  
44      /** Meteorological configuration record. */
45      private MeteorologicalConfiguration meteorologicalRecord;
46  
47      /**
48       * Get the system configuration record.
49       * @return the system configuration record
50       */
51      public SystemConfiguration getSystemRecord() {
52          return systemRecord;
53      }
54  
55      /**
56       * Set the system configuration record.
57       * @param systemRecord the record to set
58       */
59      public void setSystemRecord(final SystemConfiguration systemRecord) {
60          this.systemRecord = systemRecord;
61      }
62  
63      /**
64       * Get the laser configuration record.
65       * @return the laser configuration record
66       */
67      public LaserConfiguration getLaserRecord() {
68          return laserRecord;
69      }
70  
71      /**
72       * Set the laser configuration record.
73       * @param laserRecord the record to set
74       */
75      public void setLaserRecord(final LaserConfiguration laserRecord) {
76          this.laserRecord = laserRecord;
77      }
78  
79      /**
80       * Get the detector configuration record.
81       * @return the detector configuration record
82       */
83      public DetectorConfiguration getDetectorRecord() {
84          return detectorRecord;
85      }
86  
87      /**
88       * Set the detector configuration record.
89       * @param detectorRecord the record to set
90       */
91      public void setDetectorRecord(final DetectorConfiguration detectorRecord) {
92          this.detectorRecord = detectorRecord;
93      }
94  
95      /**
96       * Get the timing system configuration record.
97       * @return the timing system configuration record
98       */
99      public TimingSystemConfiguration getTimingRecord() {
100         return timingRecord;
101     }
102 
103     /**
104      * Set the timing system configuration record.
105      * @param timingRecord the record to set
106      */
107     public void setTimingRecord(final TimingSystemConfiguration timingRecord) {
108         this.timingRecord = timingRecord;
109     }
110 
111     /**
112      * Get the transponder configuration record.
113      * @return the transponder configuration record
114      */
115     public TransponderConfiguration getTransponderRecord() {
116         return transponderRecord;
117     }
118 
119     /**
120      * Set the transponder configuration record.
121      * @param transponderRecord the record to set
122      */
123     public void setTransponderRecord(final TransponderConfiguration transponderRecord) {
124         this.transponderRecord = transponderRecord;
125     }
126 
127     /**
128      * Get the software configuration record.
129      * @return the software configuration record
130      */
131     public SoftwareConfiguration getSoftwareRecord() {
132         return softwareRecord;
133     }
134 
135     /**
136      * Set the software configuration record.
137      * @param softwareRecord the record to set
138      */
139     public void setSoftwareRecord(final SoftwareConfiguration softwareRecord) {
140         this.softwareRecord = softwareRecord;
141     }
142 
143     /**
144      * Get the meteorological record.
145      * @return the meteorological record
146      */
147     public MeteorologicalConfiguration getMeteorologicalRecord() {
148         return meteorologicalRecord;
149     }
150 
151     /**
152      * Set the meteorological record.
153      * @param meteorologicalRecord the meteorological record to set
154      */
155     public void setMeteorologicalRecord(final MeteorologicalConfiguration meteorologicalRecord) {
156         this.meteorologicalRecord = meteorologicalRecord;
157     }
158 
159     /** Container for system configuration record. */
160     public static class SystemConfiguration {
161 
162         /** Transmit Wavelength [m]. */
163         private double wavelength;
164 
165         /** System configuration ID. */
166         private String systemId;
167 
168         /**
169          * Get the transmit wavelength.
170          * @return the transmit wavelength in meters
171          */
172         public double getWavelength() {
173             return wavelength;
174         }
175 
176         /**
177          * Set the transmit wavelength.
178          * @param wavelength the wavelength to set
179          */
180         public void setWavelength(final double wavelength) {
181             this.wavelength = wavelength;
182         }
183 
184         /**
185          * Get the system configuration ID.
186          * @return the system configuration ID
187          */
188         public String getSystemId() {
189             return systemId;
190         }
191 
192         /**
193          * Set the system configuration ID.
194          * @param systemId the system configuration ID to set
195          */
196         public void setSystemId(final String systemId) {
197             this.systemId = systemId;
198         }
199 
200     }
201 
202     /** Container for laser configuration record. */
203     public static class LaserConfiguration {
204 
205         /** Laser configuration ID. */
206         private String laserId;
207 
208         /** Laser Type. */
209         private String laserType;
210 
211         /** Primary wavelength [m]. */
212         private double primaryWavelength;
213 
214         /** Nominal Fire Rate [Hz]. */
215         private double nominalFireRate;
216 
217         /** Pulse Energy [mJ]. */
218         private double pulseEnergy;
219 
220         /** Pulse Width. */
221         private double pulseWidth;
222 
223         /** Bean divergence [arcsec]. */
224         private double beamDivergence;
225 
226         /** Number of pulses in outgoing semi-train. */
227         private int pulseInOutgoingSemiTrain;
228 
229 
230         /**
231          * Get the laser configuration ID.
232          * @return the laser configuration ID
233          */
234         public String getLaserId() {
235             return laserId;
236         }
237 
238         /**
239          * Set the laser configuration ID.
240          * @param laserId the laser configuration ID to set
241          */
242         public void setLaserId(final String laserId) {
243             this.laserId = laserId;
244         }
245 
246         /**
247          * Get the laser type.
248          * @return the laser type
249          */
250         public String getLaserType() {
251             return laserType;
252         }
253 
254         /**
255          * Set the laser type.
256          * @param laserType the laser type to set
257          */
258         public void setLaserType(final String laserType) {
259             this.laserType = laserType;
260         }
261 
262         /**
263          * Get the primary wavelength.
264          * @return the primary wavelength in meters
265          */
266         public double getPrimaryWavelength() {
267             return primaryWavelength;
268         }
269 
270         /**
271          * Set the primary wavelength.
272          * @param primaryWavelength the primary wavelength to set in meters
273          */
274         public void setPrimaryWavelength(final double primaryWavelength) {
275             this.primaryWavelength = primaryWavelength;
276         }
277 
278         /**
279          * Get the nominal fire rate.
280          * @return the nominal fire rate in Hz.
281          */
282         public double getNominalFireRate() {
283             return nominalFireRate;
284         }
285 
286         /**
287          * Set the nominal fire rate.
288          * @param nominalFireRate the nominal fire rate to set in Hz
289          */
290         public void setNominalFireRate(final double nominalFireRate) {
291             this.nominalFireRate = nominalFireRate;
292         }
293 
294         /**
295          * Get the pulse energy.
296          * @return the pulse energy in mJ
297          */
298         public double getPulseEnergy() {
299             return pulseEnergy;
300         }
301 
302         /**
303          * Set the pulse energy.
304          * @param pulseEnergy the pulse energy to set in mJ
305          */
306         public void setPulseEnergy(final double pulseEnergy) {
307             this.pulseEnergy = pulseEnergy;
308         }
309 
310         /**
311          * Get the pulse width (FWHM in ps).
312          * @return the pulse width
313          */
314         public double getPulseWidth() {
315             return pulseWidth;
316         }
317 
318         /**
319          * Set the pulse width.
320          * @param pulseWidth the pulse width to set
321          */
322         public void setPulseWidth(final double pulseWidth) {
323             this.pulseWidth = pulseWidth;
324         }
325 
326         /**
327          * Get the beam divergence.
328          * @return the beam divergence in arcsec
329          */
330         public double getBeamDivergence() {
331             return beamDivergence;
332         }
333 
334         /**
335          * Set the beam divergence.
336          * @param beamDivergence the beam divergence to set in arcsec
337          */
338         public void setBeamDivergence(final double beamDivergence) {
339             this.beamDivergence = beamDivergence;
340         }
341 
342         /**
343          * Get the number of pulses in outgoing semi-train.
344          * @return the number of pulses in outgoing semi-train
345          */
346         public int getPulseInOutgoingSemiTrain() {
347             return pulseInOutgoingSemiTrain;
348         }
349 
350         /**
351          * Set the number of pulses in outgoing semi-train.
352          * @param pulseInOutgoingSemiTrain the number of pulses in outgoing semi-train to set
353          */
354         public void setPulseInOutgoingSemiTrain(final int pulseInOutgoingSemiTrain) {
355             this.pulseInOutgoingSemiTrain = pulseInOutgoingSemiTrain;
356         }
357 
358     }
359 
360     /** Container for detector configuration record. */
361     public static class DetectorConfiguration {
362 
363         /** Detector configuration ID. */
364         private String detectorId;
365 
366         /** Detector Type. */
367         private String detectorType;
368 
369         /** Applicable wavelength. */
370         private double applicableWavelength;
371 
372         /** Quantum efficiency at applicable wavelength [%]. */
373         private double quantumEfficiency;
374 
375         /** Applied voltage [V]. */
376         private double appliedVoltage;
377 
378         /** Dark Count [Hz]. */
379         private double darkCount;
380 
381         /** Output pulse type. */
382         private String outputPulseType;
383 
384         /** Output pulse width [ps]. */
385         private double outputPulseWidth;
386 
387         /** Spectral Filter [m]. */
388         private double spectralFilter;
389 
390         /** % Transmission of Spectral Filter. */
391         private double transmissionOfSpectralFilter;
392 
393         /** Spatial Filter [arcsec]. */
394         private double spatialFilter;
395 
396         /** External Signal processing. */
397         private String externalSignalProcessing;
398 
399         /** Amplifier Gain. */
400         private double amplifierGain;
401 
402         /** Amplifier Bandwidth [Hz]. */
403         private double amplifierBandwidth;
404 
405         /** Amplifier In Use. */
406         private String amplifierInUse;
407 
408         /**
409          * Get the detector configuration ID.
410          * @return the detector configuration ID
411          */
412         public String getDetectorId() {
413             return detectorId;
414         }
415 
416         /**
417          * Set the detector configuration ID.
418          * @param detectorId the detector configuration ID to set
419          */
420         public void setDetectorId(final String detectorId) {
421             this.detectorId = detectorId;
422         }
423 
424         /**
425          * Get the detector type.
426          * @return the detector type
427          */
428         public String getDetectorType() {
429             return detectorType;
430         }
431 
432         /**
433          * Set the detector type.
434          * @param detectorType the detector type to set
435          */
436         public void setDetectorType(final String detectorType) {
437             this.detectorType = detectorType;
438         }
439 
440         /**
441          * Get the applicable wavelength.
442          * @return pplicable wavelength in meters
443          */
444         public double getApplicableWavelength() {
445             return applicableWavelength;
446         }
447 
448         /**
449          * Set the applicable wavelength.
450          * @param applicableWavelength the applicable wavelength to set in meters
451          */
452         public void setApplicableWavelength(final double applicableWavelength) {
453             this.applicableWavelength = applicableWavelength;
454         }
455 
456         /**
457          * Get the quantum efficiency at applicable wavelength.
458          * @return the quantum efficiency at applicable wavelength in percents
459          */
460         public double getQuantumEfficiency() {
461             return quantumEfficiency;
462         }
463 
464         /**
465          * Set the quantum efficiency at applicable wavelength.
466          * @param quantumEfficiency the efficiency to set in percents
467          */
468         public void setQuantumEfficiency(final double quantumEfficiency) {
469             this.quantumEfficiency = quantumEfficiency;
470         }
471 
472         /**
473          * Get the applied voltage.
474          * @return the applied voltage in Volts
475          */
476         public double getAppliedVoltage() {
477             return appliedVoltage;
478         }
479 
480         /**
481          * Set the applied voltage.
482          * @param appliedVoltage the applied voltage to set in Volts
483          */
484         public void setAppliedVoltage(final double appliedVoltage) {
485             this.appliedVoltage = appliedVoltage;
486         }
487 
488         /**
489          * Get the dark count.
490          * @return the dark count in Hz
491          */
492         public double getDarkCount() {
493             return darkCount;
494         }
495 
496         /**
497          * Set the dark count.
498          * @param darkCount the dark count to set in Hz
499          */
500         public void setDarkCount(final double darkCount) {
501             this.darkCount = darkCount;
502         }
503 
504         /**
505          * Get the output pulse type.
506          * @return the output pulse type
507          */
508         public String getOutputPulseType() {
509             return outputPulseType;
510         }
511 
512         /**
513          * Set the output pulse type.
514          * @param outputPulseType the output pulse type to set
515          */
516         public void setOutputPulseType(final String outputPulseType) {
517             this.outputPulseType = outputPulseType;
518         }
519 
520         /**
521          * Get the output pulse width.
522          * @return the output pulse width in ps
523          */
524         public double getOutputPulseWidth() {
525             return outputPulseWidth;
526         }
527 
528         /**
529          * Set the output pulse width.
530          * @param outputPulseWidth the output pulse width to set in ps
531          */
532         public void setOutputPulseWidth(final double outputPulseWidth) {
533             this.outputPulseWidth = outputPulseWidth;
534         }
535 
536         /**
537          * Get the spectral filter.
538          * @return the spectral filter in meters
539          */
540         public double getSpectralFilter() {
541             return spectralFilter;
542         }
543 
544         /**
545          * Set the spectral filter.
546          * @param spectralFilter  the spectral filter to set in meters
547          */
548         public void setSpectralFilter(final double spectralFilter) {
549             this.spectralFilter = spectralFilter;
550         }
551 
552         /**
553          * Get the percentage of transmission of spectral filter.
554          * @return the percentage of transmission of spectral filter
555          */
556         public double getTransmissionOfSpectralFilter() {
557             return transmissionOfSpectralFilter;
558         }
559 
560         /**
561          * Set the percentage of transmission of spectral filter.
562          * @param transmissionOfSpectralFilter the percentage to set
563          */
564         public void setTransmissionOfSpectralFilter(final double transmissionOfSpectralFilter) {
565             this.transmissionOfSpectralFilter = transmissionOfSpectralFilter;
566         }
567 
568         /**
569          * Get the spatial filter.
570          * @return the spatial filter in arcsec
571          */
572         public double getSpatialFilter() {
573             return spatialFilter;
574         }
575 
576         /**
577          * Set the spatial filter.
578          * @param spatialFilter the spatial filter to set in arcsec
579          */
580         public void setSpatialFilter(final double spatialFilter) {
581             this.spatialFilter = spatialFilter;
582         }
583 
584         /**
585          * Get the external signal processing.
586          * @return the external signal processing
587          */
588         public String getExternalSignalProcessing() {
589             return externalSignalProcessing;
590         }
591 
592         /**
593          * Set the external signal processing.
594          * @param externalSignalProcessing the external signal processing to set
595          */
596         public void setExternalSignalProcessing(final String externalSignalProcessing) {
597             this.externalSignalProcessing = externalSignalProcessing;
598         }
599 
600         /**
601          * Get the amplifier gain.
602          * @return the amplifier gain
603          */
604         public double getAmplifierGain() {
605             return amplifierGain;
606         }
607 
608         /**
609          * Set the amplifier gain.
610          * @param amplifierGain the amplifier gain to set
611          */
612         public void setAmplifierGain(final double amplifierGain) {
613             this.amplifierGain = amplifierGain;
614         }
615 
616         /**
617          * Get the amplifier bandwidth.
618          * @return the amplifier bandwidth in Hz
619          */
620         public double getAmplifierBandwidth() {
621             return amplifierBandwidth;
622         }
623 
624         /**
625          * Set the amplifier bandwidth.
626          * @param amplifierBandwidth the amplifier bandwidth to set in Hz
627          */
628         public void setAmplifierBandwidth(final double amplifierBandwidth) {
629             this.amplifierBandwidth = amplifierBandwidth;
630         }
631 
632         /**
633          * Get the amplifier in use.
634          * @return the amplifier in use
635          */
636         public String getAmplifierInUse() {
637             return amplifierInUse;
638         }
639 
640         /**
641          * Set the amplifier in use.
642          * @param amplifierInUse the amplifier in use to set
643          */
644         public void setAmplifierInUse(final String amplifierInUse) {
645             this.amplifierInUse = amplifierInUse;
646         }
647 
648     }
649 
650     /** Container for timing system configuration record. */
651     public static class TimingSystemConfiguration {
652 
653         /** Local timing system configuration ID. */
654         private String localTimingId;
655 
656         /** Time Source. */
657         private String timeSource;
658 
659         /** Frequency Source. */
660         private String frequencySource;
661 
662         /** Timer. */
663         private String timer;
664 
665         /** Timer Serial Number. */
666         private String timerSerialNumber;
667 
668         /** Epoch delay correction [s]. */
669         private double epochDelayCorrection;
670 
671         /**
672          * Get the time source.
673          * @return the time source
674          */
675         public String getTimeSource() {
676             return timeSource;
677         }
678 
679         /**
680          * Get the local timing system configuration ID.
681          * @return the local timing system configuration ID
682          */
683         public String getLocalTimingId() {
684             return localTimingId;
685         }
686 
687         /**
688          * Set the local timing system configuration ID.
689          * @param localTimingId the local timing system configuration ID to set
690          */
691         public void setLocalTimingId(final String localTimingId) {
692             this.localTimingId = localTimingId;
693         }
694 
695         /**
696          * Set the time source.
697          * @param timeSource the time source to set
698          */
699         public void setTimeSource(final String timeSource) {
700             this.timeSource = timeSource;
701         }
702 
703         /**
704          * Get the frequency source.
705          * @return the frequency source
706          */
707         public String getFrequencySource() {
708             return frequencySource;
709         }
710 
711         /**
712          * Set the frequency source.
713          * @param frequencySource the frequency source to set
714          */
715         public void setFrequencySource(final String frequencySource) {
716             this.frequencySource = frequencySource;
717         }
718 
719         /**
720          * Get the timer name.
721          * @return the timer name
722          */
723         public String getTimer() {
724             return timer;
725         }
726 
727         /**
728          * Set the timer name.
729          * @param timer the timer name to set
730          */
731         public void setTimer(final String timer) {
732             this.timer = timer;
733         }
734 
735         /**
736          * Get the timer serial number.
737          * @return the timer serial number
738          */
739         public String getTimerSerialNumber() {
740             return timerSerialNumber;
741         }
742 
743         /**
744          * Set the timer serial number.
745          * @param timerSerialNumber the timer serial number to set
746          */
747         public void setTimerSerialNumber(final String timerSerialNumber) {
748             this.timerSerialNumber = timerSerialNumber;
749         }
750 
751         /**
752          * Get the epoch delay correction.
753          * @return the epoch delay correction in seconds
754          */
755         public double getEpochDelayCorrection() {
756             return epochDelayCorrection;
757         }
758 
759         /**
760          * Set the epoch delay correction.
761          * @param epochDelayCorrection the epoch delay correction to set in seconds
762          */
763         public void setEpochDelayCorrection(final double epochDelayCorrection) {
764             this.epochDelayCorrection = epochDelayCorrection;
765         }
766 
767     }
768 
769     /** Container for transponder configuration record. */
770     public static class TransponderConfiguration {
771 
772         /** Transponder configuration ID. */
773         private String transponderId;
774 
775         /** Estimated Station UTC offset [s]. */
776         private double stationUTCOffset;
777 
778         /** Estimated Station Oscillator Drift in parts in 10^15. */
779         private double stationOscDrift;
780 
781         /** Estimated Transponder UTC offset [s]. */
782         private double transpUTCOffset;
783 
784         /** Estimated Transponder Oscillator Drift in parts in 10^15. */
785         private double transpOscDrift;
786 
787         /** Transponder Clock Reference Time. */
788         private double transpClkRefTime;
789 
790         /** Station clock offset and drift applied indicator. */
791         private int stationClockAndDriftApplied;
792 
793         /** Spacecraft clock offset and drift applied indicator . */
794         private int spacecraftClockAndDriftApplied;
795 
796         /** Spacecraft time simplified flag. */
797         private boolean isSpacecraftTimeSimplified;
798 
799         /**
800          * Get the transponder configuration ID.
801          * @return the transponder configuration ID
802          */
803         public String getTransponderId() {
804             return transponderId;
805         }
806 
807         /**
808          * Set the transponder configuration ID.
809          * @param transponderId the transponder configuration ID to set
810          */
811         public void setTransponderId(final String transponderId) {
812             this.transponderId = transponderId;
813         }
814 
815         /**
816          * Get the estimated station UTC offset.
817          * @return the estimated station UTC offset in seconds
818          */
819         public double getStationUTCOffset() {
820             return stationUTCOffset;
821         }
822 
823         /**
824          * Set the estimated station UTC offset.
825          * @param stationUTCOffset the estimated station UTC offset to set in seconds
826          */
827         public void setStationUTCOffset(final double stationUTCOffset) {
828             this.stationUTCOffset = stationUTCOffset;
829         }
830 
831         /**
832          * Get the estimated station oscillator drift in parts in 10¹⁵.
833          * @return the station oscillator drift
834          */
835         public double getStationOscDrift() {
836             return stationOscDrift;
837         }
838 
839         /**
840          * Set the estimated station oscillator drift in parts in 10¹⁵.
841          * @param stationOscDrift the station oscillator drift to set
842          */
843         public void setStationOscDrift(final double stationOscDrift) {
844             this.stationOscDrift = stationOscDrift;
845         }
846 
847         /**
848          * Get the estimated transponder UTC offset.
849          * @return the estimated transponder UTC offset in seconds
850          */
851         public double getTranspUTCOffset() {
852             return transpUTCOffset;
853         }
854 
855         /**
856          * Set the estimated transponder UTC offset.
857          * @param transpUTCOffset the estimated transponder UTC offset to set in seconds
858          */
859         public void setTranspUTCOffset(final double transpUTCOffset) {
860             this.transpUTCOffset = transpUTCOffset;
861         }
862 
863         /**
864          * Get the estimated transponder oscillator drift in parts in 10¹⁵.
865          * @return the estimated transponder oscillator drift
866          */
867         public double getTranspOscDrift() {
868             return transpOscDrift;
869         }
870 
871         /**
872          * Set the estimated transponder oscillator drift in parts in 10¹⁵.
873          * @param transpOscDrift the estimated transponder oscillator drift to set
874          */
875         public void setTranspOscDrift(final double transpOscDrift) {
876             this.transpOscDrift = transpOscDrift;
877         }
878 
879         /**
880          * Get the transponder clock reference time.
881          * @return the transponder clock reference time
882          */
883         public double getTranspClkRefTime() {
884             return transpClkRefTime;
885         }
886 
887         /**
888          * Set the transponder clock reference time.
889          * @param transpClkRefTime the transponder clock reference time to set
890          */
891         public void setTranspClkRefTime(final double transpClkRefTime) {
892             this.transpClkRefTime = transpClkRefTime;
893         }
894 
895         /**
896          * Get the station clock offset and drift applied indicator.
897          * @return the station clock offset and drift applied indicator
898          */
899         public int getStationClockAndDriftApplied() {
900             return stationClockAndDriftApplied;
901         }
902 
903         /**
904          * Set the station clock offset and drift applied indicator.
905          * @param stationClockAndDriftApplied the indicator to set
906          */
907         public void setStationClockAndDriftApplied(final int stationClockAndDriftApplied) {
908             this.stationClockAndDriftApplied = stationClockAndDriftApplied;
909         }
910 
911         /**
912          * Get the spacecraft clock offset and drift applied indicator.
913          * @return the spacecraft clock offset and drift applied indicator
914          */
915         public int getSpacecraftClockAndDriftApplied() {
916             return spacecraftClockAndDriftApplied;
917         }
918 
919         /**
920          * Set the spacecraft clock offset and drift applied indicator.
921          * @param spacecraftClockAndDriftApplied the indicator to set
922          */
923         public void setSpacecraftClockAndDriftApplied(final int spacecraftClockAndDriftApplied) {
924             this.spacecraftClockAndDriftApplied = spacecraftClockAndDriftApplied;
925         }
926 
927         /**
928          * Get the spacecraft time simplified flag.
929          * @return true if spacecraft time is simplified
930          */
931         public boolean isSpacecraftTimeSimplified() {
932             return isSpacecraftTimeSimplified;
933         }
934 
935         /**
936          * Set the spacecraft time simplified flag.
937          * @param isSpacecraftTimeSimplified true if spacecraft time is simplified
938          */
939         public void setIsSpacecraftTimeSimplified(final boolean isSpacecraftTimeSimplified) {
940             this.isSpacecraftTimeSimplified = isSpacecraftTimeSimplified;
941         }
942 
943     }
944 
945     /** Container for software configuration record. */
946     public static class SoftwareConfiguration {
947 
948         /** Software configuration ID. */
949         private String softwareId;
950 
951         /** Tracking software in measurement path. */
952         private String[] trackingSoftwares;
953 
954         /** Tracking software version(s). */
955         private String[] trackingSoftwareVersions;
956 
957         /** Processing software in measurement path. */
958         private String[] processingSoftwares;
959 
960         /** Processing software version(s). */
961         private String[] processingSoftwareVersions;
962 
963         /**
964          * Get the software configuration ID.
965          * @return the software configuration ID.
966          */
967         public String getSoftwareId() {
968             return softwareId;
969         }
970 
971         /**
972          * Set the software configuration ID.
973          * @param softwareId the software configuration ID
974          */
975         public void setSoftwareId(final String softwareId) {
976             this.softwareId = softwareId;
977         }
978 
979         /**
980          * Get the tracking softwares.
981          * @return the tracking softwares
982          */
983         public String[] getTrackingSoftwares() {
984             return trackingSoftwares.clone();
985         }
986 
987         /**
988          * Set the tracking softwares.
989          * @param trackingSoftwares the tracking softwares to set
990          */
991         public void setTrackingSoftwares(final String[] trackingSoftwares) {
992             this.trackingSoftwares = trackingSoftwares.clone();
993         }
994 
995         /**
996          * Get the tracking software versions.
997          * @return the tracking software versions
998          */
999         public String[] getTrackingSoftwareVersions() {
1000             return trackingSoftwareVersions.clone();
1001         }
1002 
1003         /**
1004          * Set the tracking software versions.
1005          * @param trackingSoftwareVersions the tracking software versions to set
1006          */
1007         public void setTrackingSoftwareVersions(final String[] trackingSoftwareVersions) {
1008             this.trackingSoftwareVersions = trackingSoftwareVersions.clone();
1009         }
1010 
1011         /**
1012          * Get the processing softwares.
1013          * @return the processing softwares
1014          */
1015         public String[] getProcessingSoftwares() {
1016             return processingSoftwares.clone();
1017         }
1018 
1019         /**
1020          * Set the processing softwares.
1021          * @param processingSoftwares the processing softwares to set
1022          */
1023         public void setProcessingSoftwares(final String[] processingSoftwares) {
1024             this.processingSoftwares = processingSoftwares.clone();
1025         }
1026 
1027         /**
1028          * Get the processing software versions.
1029          * @return the processing software versions
1030          */
1031         public String[] getProcessingSoftwareVersions() {
1032             return processingSoftwareVersions.clone();
1033         }
1034 
1035         /**
1036          * Set the processing software versions.
1037          * @param processingSoftwareVersions the processing software versions to set
1038          */
1039         public void setProcessingSoftwareVersions(final String[] processingSoftwareVersions) {
1040             this.processingSoftwareVersions = processingSoftwareVersions.clone();
1041         }
1042 
1043     }
1044 
1045     /** Container for meteorological configuration record. */
1046     public static class MeteorologicalConfiguration {
1047 
1048         /** Meteorological configuration ID. */
1049         private String meteorologicalId;
1050 
1051         /** Pressure Sensor Manufacturer. */
1052         private String pressSensorManufacturer;
1053 
1054         /** Pressure Sensor Model. */
1055         private String pressSensorModel;
1056 
1057         /** Pressure Sensor Serial Number. */
1058         private String pressSensorSerialNumber;
1059 
1060         /** Temperature Sensor Manufacturer. */
1061         private String tempSensorManufacturer;
1062 
1063         /** Temperature Sensor Model. */
1064         private String tempSensorModel;
1065 
1066         /** Temperature Sensor Serial Number. */
1067         private String tempSensorSerialNumber;
1068 
1069         /** Humidity Sensor Manufacturer. */
1070         private String humiSensorManufacturer;
1071 
1072         /** Humidity Sensor Model. */
1073         private String humiSensorModel;
1074 
1075         /** Humidity Sensor Serial Number. */
1076         private String humiSensorSerialNumber;
1077 
1078         /**
1079          * Get the meteorological configuration ID.
1080          * @return the meteorological configuration ID
1081          */
1082         public String getMeteorologicalId() {
1083             return meteorologicalId;
1084         }
1085 
1086         /**
1087          * Set the meteorological configuration ID.
1088          * @param meteorologicalId the meteorological configuration ID to set
1089          */
1090         public void setMeteorologicalId(final String meteorologicalId) {
1091             this.meteorologicalId = meteorologicalId;
1092         }
1093 
1094         /**
1095          * Get the pressure sensor manufacturer.
1096          * @return the pressure sensor manufacturer
1097          */
1098         public String getPressSensorManufacturer() {
1099             return pressSensorManufacturer;
1100         }
1101 
1102         /**
1103          * Set the pressure sensor manufacturer.
1104          * @param pressSensorManufacturer the manufacturer to set
1105          */
1106         public void setPressSensorManufacturer(final String pressSensorManufacturer) {
1107             this.pressSensorManufacturer = pressSensorManufacturer;
1108         }
1109 
1110         /**
1111          * Get the pressure sensor model.
1112          * @return the pressure sensor model
1113          */
1114         public String getPressSensorModel() {
1115             return pressSensorModel;
1116         }
1117 
1118         /**
1119          * Set the pressure sensor model.
1120          * @param pressSensorModel the model to set
1121          */
1122         public void setPressSensorModel(final String pressSensorModel) {
1123             this.pressSensorModel = pressSensorModel;
1124         }
1125 
1126         /**
1127          * Get the pressure sensor serial number.
1128          * @return the pressure sensor serial number
1129          */
1130         public String getPressSensorSerialNumber() {
1131             return pressSensorSerialNumber;
1132         }
1133 
1134         /**
1135          * Set the pressure sensor serial number.
1136          * @param pressSensorSerialNumber the serial number to set
1137          */
1138         public void setPressSensorSerialNumber(final String pressSensorSerialNumber) {
1139             this.pressSensorSerialNumber = pressSensorSerialNumber;
1140         }
1141 
1142         /**
1143          * Get the temperature sensor manufacturer.
1144          * @return the temperature sensor manufacturer
1145          */
1146         public String getTempSensorManufacturer() {
1147             return tempSensorManufacturer;
1148         }
1149 
1150         /**
1151          * Set the temperature sensor manufacturer.
1152          * @param tempSensorManufacturer the temperature sensor manufacturer
1153          */
1154         public void setTempSensorManufacturer(final String tempSensorManufacturer) {
1155             this.tempSensorManufacturer = tempSensorManufacturer;
1156         }
1157 
1158         /**
1159          * Get the temperature sensor model.
1160          * @return the temperature sensor model
1161          */
1162         public String getTempSensorModel() {
1163             return tempSensorModel;
1164         }
1165 
1166         /**
1167          * Set the temperature sensor model.
1168          * @param tempSensorModel the model to set
1169          */
1170         public void setTempSensorModel(final String tempSensorModel) {
1171             this.tempSensorModel = tempSensorModel;
1172         }
1173 
1174         /**
1175          * Get the temperature sensor serial number.
1176          * @return the temperature sensor serial number
1177          */
1178         public String getTempSensorSerialNumber() {
1179             return tempSensorSerialNumber;
1180         }
1181 
1182         /**
1183          * Set the temperature sensor serial number.
1184          * @param tempSensorSerialNumber the serial number to set
1185          */
1186         public void setTempSensorSerialNumber(final String tempSensorSerialNumber) {
1187             this.tempSensorSerialNumber = tempSensorSerialNumber;
1188         }
1189 
1190         /**
1191          * Get the humidity sensor manufacturer.
1192          * @return the humidity sensor manufacturer
1193          */
1194         public String getHumiSensorManufacturer() {
1195             return humiSensorManufacturer;
1196         }
1197 
1198         /**
1199          * Set the humidity sensor manufacturer.
1200          * @param humiSensorManufacturer the manufacturer to set
1201          */
1202         public void setHumiSensorManufacturer(final String humiSensorManufacturer) {
1203             this.humiSensorManufacturer = humiSensorManufacturer;
1204         }
1205 
1206         /**
1207          * Get the humidity sensor model.
1208          * @return the humidity sensor model
1209          */
1210         public String getHumiSensorModel() {
1211             return humiSensorModel;
1212         }
1213 
1214         /**
1215          * Set the humidity sensor model.
1216          * @param humiSensorModel the model to set
1217          */
1218         public void setHumiSensorModel(final String humiSensorModel) {
1219             this.humiSensorModel = humiSensorModel;
1220         }
1221 
1222         /**
1223          * Get the humidity sensor serial number.
1224          * @return the humidity sensor serial number
1225          */
1226         public String getHumiSensorSerialNumber() {
1227             return humiSensorSerialNumber;
1228         }
1229 
1230         /**
1231          * Set the humidity sensor serial number.
1232          * @param humiSensorSerialNumber the serial number to set
1233          */
1234         public void setHumiSensorSerialNumber(final String humiSensorSerialNumber) {
1235             this.humiSensorSerialNumber = humiSensorSerialNumber;
1236         }
1237 
1238     }
1239 
1240 }