Ginan
|
Functions | |
Architecture | Streams_And_Synchronisation__ () |
Retrieve data from streams and process together once per epoch. | |
void | avoidCollisions (ReceiverMap &receiverMap) |
void | mainOncePerEpochPerStation (Receiver &rec, Network &net, bool &emptyEpoch, KFState &remoteState) |
Perform operations for each station This function occurs in parallel with other stations - ensure that any operations on global maps do not create new entries, as that will destroy the map for other processes. | |
void | mainOncePerEpochPerSatellite (Trace &trace, GTime time, SatSys Sat, KFState &kfState, KFState &remoteKF) |
void | cullData (GTime time) |
void | mainOncePerEpoch (Network &pppNet, Network &ionNet, ReceiverMap &receiverMap, GTime time) |
void | mainPostProcessing (Network &pppNet, Network &ionNet, ReceiverMap &receiverMap) |
Perform any post-final epoch calculations and outputs, then begin reverse smoothing and tidy up. | |
void | tryExitGracefully (int signum) |
int | main (int argc, char **argv) |
void avoidCollisions | ( | ReceiverMap & | receiverMap | ) |
void cullData | ( | GTime | time | ) |
void mainOncePerEpoch | ( | Network & | pppNet, |
Network & | ionNet, | ||
ReceiverMap & | receiverMap, | ||
GTime | time ) |
void mainOncePerEpochPerSatellite | ( | Trace & | trace, |
GTime | time, | ||
SatSys | Sat, | ||
KFState & | kfState, | ||
KFState & | remoteKF ) |
void mainOncePerEpochPerStation | ( | Receiver & | rec, |
Network & | net, | ||
bool & | emptyEpoch, | ||
KFState & | remoteState ) |
Perform operations for each station This function occurs in parallel with other stations - ensure that any operations on global maps do not create new entries, as that will destroy the map for other processes.
Variables within the rec object are ok to use, but be aware that pointers from the within the receiver often point to global variables. Prepare global maps by accessing the desired elements before calling this function.
void mainPostProcessing | ( | Network & | pppNet, |
Network & | ionNet, | ||
ReceiverMap & | receiverMap ) |
Perform any post-final epoch calculations and outputs, then begin reverse smoothing and tidy up.
Architecture Streams_And_Synchronisation__ | ( | ) |
Retrieve data from streams and process together once per epoch.
In order to be capable of real-time and post-processed execution, the pea treats all observation inputs as streams. These streams are created with a stream source type, and a parser, with the separation of these strategies allowing for far more reusable code, and immediate extension of inputs from simply files, to HTTP, TCP, Serial, Pipes etc.
The fundamental tick of the pea is the epoch_interval
, which drives all major processing steps. Once an initial epoch has been designated the pea requests data for the next epoch from each stream. The streams either respond with the data, or with a flag indicating the data may be available later, or will never be available.
Various configuration parameters define the exact flow through the synchronisation code, however once all data is available, or no more is expected, or a timeout has occurred, the epoch is considered synchronised and processing is performed.
Unlike observation streams, which provide data up until the requested epoch time, other streams such as navigation streams parse all data available to them, and output any values to global maps, which may be later accessed as required by other components.
The synchronisation process parses all streams sequentially, without multithreading, so map collisions are not expected.
void tryExitGracefully | ( | int | signum | ) |