Module: spice_interface¶
The SPICE interface class gets time and planetary body information from the JPL ephemeris library
The module
PDF Description
contains further information on this module’s function,
how to run it, as well as testing.
- 
class SpiceInterface: public SysModel¶
- #include <spice_interface.h>spice interface class Public Functions - 
SpiceInterface()¶
- This constructor initializes the variables that spice uses. Most of them are not intended to be changed, but a couple are user configurable. 
 - 
~SpiceInterface()¶
- The only needed activity in the destructor is to delete the spice I/O buffer that was allocated in the constructor 
 - 
void UpdateState(uint64_t CurrentSimNanos)¶
- This method is the interface point between the upper level simulation and the SPICE interface at runtime. It calls all of the necessary lower level methods. - Return
- void 
- Parameters
- CurrentSimNanos: The current clock time for the simulation
 
 
 - 
int loadSpiceKernel(char *kernelName, const char *dataPath)¶
- This method loads a requested SPICE kernel into the system memory. It is its own method because we have to load several SPICE kernels in for our application. Note that they are stored in the SPICE library and are not held locally in this object. - Return
- int Zero for success one for failure 
- Parameters
- kernelName: The name of the kernel we are loading
- dataPath: The path to the data area on the filesystem
 
 
 - 
int unloadSpiceKernel(char *kernelName, const char *dataPath)¶
- This method unloads a requested SPICE kernel into the system memory. It is its own method because we have to load several SPICE kernels in for our application. Note that they are stored in the SPICE library and are not held locally in this object. - Return
- int Zero for success one for failure 
- Parameters
- kernelName: The name of the kernel we are unloading
- dataPath: The path to the data area on the filesystem
 
 
 - 
std::string getCurrentTimeString()¶
- class method 
 - 
void SelfInit()¶
- This method initializes the object. It creates the output messages, initializes the SPICE kernels, and initializes the planet/time data that gets used at run. - Return
- void 
 
 - 
void CrossInit()¶
- Should subscribe to module input messages. However, the epoch message is subscribed to in the SelfInit() routine due to how Spice is being loaded and setup. - Return
- void 
 
 - 
void Reset(uint64_t CurrentSimNanos)¶
- Reset the module to origina configuration values. - Return
- void 
 
 - 
void initTimeData()¶
- This method is used to initialize the zero-time that will be used to calculate all system time values in the Update method. It also creates the output message for time data - Return
- void 
 
 - 
void computeGPSData()¶
- This method computes the GPS time data for the current elapsed time. It uses the total elapsed times at both the GPS epoch time and the current time to compute the GPS time (week, seconds, rollovers) - Return
- void 
 
 - 
void computePlanetData()¶
- This method gets the state of each planet that has been added to the model and saves the information off into the planet array. - Return
- void 
 
 - 
void writeOutputMessages(uint64_t CurrentClock)¶
- This method takes the values computed in the model and outputs them. It packages up the internal variables into the output structure definitions and puts them out on the messaging system - Return
- void 
- Parameters
- CurrentClock: The current simulation time (used for time stamping)
 
 
 - 
void clearKeeper()¶
- class method 
 Public Members - 
std::string SPICEDataPath¶
- Path on file to SPICE data 
 - 
std::string referenceBase¶
- Base reference frame to use 
 - 
std::string zeroBase¶
- Base zero point to use for states 
 - 
std::string timeOutPicture¶
- Optional parameter used to extract time strings 
 - 
bool SPICELoaded¶
- Boolean indicating to reload spice 
 - 
int charBufferSize¶
- avert your eyes we’re getting SPICE 
 - 
uint8_t *spiceBuffer¶
- General buffer to pass down to spice 
 - 
std::string UTCCalInit¶
- UTC time string for init time 
 - 
std::string outputTimePort¶
- Output time sampling port name to use 
 - 
uint64_t outputBufferCount¶
- Number of output buffers to use 
 - 
std::vector<std::string> planetNames¶
- Names of planets we want to track 
 - 
std::vector<std::string> planetFrames¶
- Optional vector of planet frame names. Default values are IAU_ + planet name 
 - 
bool timeDataInit¶
- Flag indicating whether time has been init 
 - 
double J2000ETInit¶
- s Seconds elapsed since J2000 at init 
 - 
double J2000Current¶
- s Current J2000 elapsed time 
 - 
double julianDateCurrent¶
- s Current JulianDate 
 - 
double GPSSeconds¶
- s Current GPS seconds 
 - 
uint16_t GPSWeek¶
- Current GPS week value 
 - 
uint64_t GPSRollovers¶
- Count on the number of GPS rollovers 
 - 
std::string epochInMsgName¶
- Message name of the epoch message (optional) 
 - 
int64_t epochInMsgId¶
- ID of the epoch message. 
 - 
BSKLogger bskLogger¶
- BSK Logging 
 Private Members - 
std::string GPSEpochTime¶
- String for the GPS epoch 
 - 
double JDGPSEpoch¶
- s Epoch for GPS time. Saved for efficiency 
 - 
int64_t timeOutMsgID¶
- Output time message ID 
 - 
std::map<uint32_t, SpicePlanetStateSimMsg> planetData¶
- Internal vector of planets 
 
-