|
GNU Radio's SATELLITES Package
|
Performs Doppler correction using a frequency vs. time file. More...
#include <doppler_correction.h>
Public Types | |
| typedef std::shared_ptr< doppler_correction > | sptr |
Public Member Functions | |
| virtual void | set_time (double t)=0 |
| Sets the current time. | |
| virtual double | time ()=0 |
| Returns the current time. | |
| virtual double | frequency ()=0 |
| Returns the current frequency in Hz. | |
Static Public Member Functions | |
| static sptr | make (const std::string &filename, double samp_rate, double t0, const std::string ×ync_tag="") |
| Build the Doppler Correction block. | |
Performs Doppler correction using a frequency vs. time file.
The Doppler Correction block uses a text file listing frequency vs. time to perform Doppler correction on its input signal. The same block can be used for Doppler simulation by inverting the frequency values in the input file or by taking the complex conjugate of the output of the block.
The text file should contain lines with a timestamp and a frequency separated by a space. The timestamps are given in seconds, and typically consist of UNIX time. The t0 parameter in the block constructor gives the starting time, which is the timestamp corresponding to the first sample processed by the block. As long as the timestamps in the file and this timestamp are consistent, the block will work correctly. The frequencies are given in Hz.
The block can also use time tags such as those generated by the UHD Source block to update its internal timestamp. In this case the timestamps in the file should use UNIX seconds, since the UHD timestamps also use UNIX seconds. When using UHD time tags, the t0 parameter can be left as 0.
The Doppler correction block interpolates the frequency linearly between each pair of entries in the text file, and generates a correction with continuous phase.
An optional time synchronization tag functionality is provided, mainly intended for uplink Doppler correction of burst transmissions. When this tag is received, the Doppler correction block sets its internal time to the current UNIX time of the PC. Usually, the "packet_len" tag at the beginning of the burst is used as time synchronization tag.
| typedef std::shared_ptr<doppler_correction> gr::satellites::doppler_correction::sptr |
|
pure virtual |
Returns the current frequency in Hz.
Implemented in gr::satellites::doppler_correction_impl.
|
static |
Build the Doppler Correction block.
| filename | Path of the text file describing the Doppler data |
| samp_rate | Sample rate |
| t0 | Timestamp corresponding to the first sample |
| timesync_tag | Tag used to trigger time synchronization to the current PC clock |
|
pure virtual |
Sets the current time.
| t | Tiemstamp corresponding to the current time. |
Implemented in gr::satellites::doppler_correction_impl.
References t.
|
pure virtual |
Returns the current time.
Implemented in gr::satellites::doppler_correction_impl.