SoDaRadio-12.2.0-cut_dependencies:6c82803
Loading...
Searching...
No Matches
SoDa::RadioControl Class Referenceabstract

Though libuhd is designed to be re-entrant, there are some indications that all control functions (set_freq, gain, and other operations) should originate from a single thread. More...

#include <RadioControl.hxx>

Inheritance diagram for SoDa::RadioControl:
SoDa::Thread SoDa::Base SoDa::Debug SoDa::PlutoCtrl SoDa::RTLSDRCtrl SoDa::USRPCtrl

Public Member Functions

 RadioControl (ParamsPtr params, const std::string &name)
 Constructor Build a RadioControl thread.
void run () final
 start the thread
virtual void init ()
 perform initialization.
void subscribeToMailBoxes (const std::vector< MailBoxBasePtr > &mailboxes)
 implement the subscription method
virtual RadioControlPtr getSelfPtr ()=0
Public Member Functions inherited from SoDa::Thread
void registerThread (SoDa::ThreadPtr me)
void operator() ()
void start ()
 Execute the thread's run loop.
void join ()
 more properly "Wait for this thread to exit its run loop".
void execCommand (CommandPtr cmd)
 Execute (dispatch) a message removed from the command stream to one of the basic Command handler functions.
virtual void shutDown ()
 optional method that performs cleanup – may not delete.
void sleep_ms (unsigned int milliseconds)
void sleep_us (unsigned int microseconds)
uint32_t getID ()
 Get the process/thread ID for this thread – helps with figuring out who caused a segfault.
Public Member Functions inherited from SoDa::Base
 Base (const std::string &oname)
 The constructor – pass a name for the object.
void registerSelf (BasePtr ptr)
std::string & getObjName ()
 get the name of this object
BasePtr findSoDaObject (const std::string &oname)
 find a SoDa Object by name.
double getTime ()
 Get a time stamp in nS resolution that monotonically increases and that is very inexpensive (typically < 100nS).
BasePtr getSelfPtr ()
 get a pointer to myself.
Public Member Functions inherited from SoDa::Debug
 Debug (std::string _unit_name=std::string("UNKNOWN"))
 Debug (const char *_unit_name_cstr)
 Debug (unsigned int _debug_level, std::string _unit_name=std::string("UNKNOWN"))
 Debug (unsigned int _debug_level, const char *_unit_name_cstr)
void debugMsg (const std::string &msg, unsigned int threshold=1)
void debugMsg (const SoDa::Format &fmt, unsigned int threshold=1)
void debugMsg (const char *msg, unsigned int threshold=1)
void setDebugLevel (unsigned int v)
unsigned int getDebugLevel ()

Protected Member Functions

virtual void execCommand (CommandPtr cmd) final
 Parse an incoming command and dispatch.
virtual void execGetCommand (CommandPtr cmd) final
 Parse an incoming GET command and dispatch.
void execSetCommand (CommandPtr cmd) final
 Parse an incoming SET command and dispatch.
void execRepCommand (CommandPtr cmd) final
 Parse an incoming REPort command and dispatch.
double getTime ()
 get the number of seconds since the "Epoch"
virtual bool isLOLocked (SoDa::RXTX rxtx)=0
 Methods that ALL radios must implement.
virtual std::vector< std::string > listAntennas (SoDa::RXTX rxtx)=0
 report the antennas that are available.
virtual void setAntenna (const std::string &ant, SoDa::RXTX rxtx)=0
 Set the antenna choice.
virtual std::string getAntenna (SoDa::RXTX rxtx)=0
 Get the current selected antenna.
virtual void setSampleRate (float rate, SoDa::RXTX rxtx)=0
 Set the RX or TX sample rate.
virtual float getSampleRate (SoDa::RXTX rxtx)=0
 Get the current setting for the sample rate.
virtual float setRFGain (float gain, SoDa::RXTX rxtx)=0
 set tain on the RX or TX side
virtual double setLOFreq (double freq, SoDa::RXTX rxtx)=0
virtual double getLOFreq (SoDa::RXTX rxtx)=0
 Return the current LO (front end) oscillator setting for RX or TX chain.
void setFreq (double freq, SoDa::RXTX rxtx)
 Set the recieve or transmit frequency to 'freq' This includes setting the PLL front end synthesizer, the FPGA resident digital synthesizer (if it exists) and the RX baseband or TX baseband oscillator.
virtual bool getTXEna ()=0
 get the state of the TXEna bit
virtual bool getTXRelayOn ()=0
 get the state of the TX relay confirm bit
virtual void setTXEna (bool tx_on, bool full_duplex)=0
 Enable or disable the transmit hardware chain, including the antenna relay and PA enable.
void setTXRXMode (Command::RxTxState rxtxst, bool full_duplex)
 Initiate the actions that will turn on the transmitter and (optionally) disable the receiver.
virtual bool setClockSource (Command::ClockSource src)
 Some radios support multiple choices for the main reference clock source.
virtual Command::ClockSource getClockSource ()
 Some radios support multiple choices for the main reference clock source.
virtual std::string getHardwareDescription ()=0
 report the model number and any other interesting features (like freq range) to be displayed on the UI and such.
double findGoodRXLO (double freq, double cur_lo_freq)
 see setFreq - this is a helper to find a good LO frequency that puts the IF in a range that is convenient for the spectrum display.
Protected Member Functions inherited from SoDa::Thread
 Thread (const std::string &oname, const std::string &version=std::string("12.2.0"))
 make the thread object.
Protected Member Functions inherited from SoDa::Debug
std::string curDateTime ()

Protected Attributes

ParamsPtr params
CmdMBoxPtr cmd_stream
 command stream channel
CmdMBox::Subscription cmd_subs
 subscriber ID for this thread's connection to the command channel
double first_gettime
 timestamps are relative to the first timestamp.
double rx_rf_gain
 rf gain for RX front end amp/attenuator
double tx_rf_gain
 rf gain for final TX amp
bool tx_on
 if true, we are transmitting.
double cur_rx_lo_freq
 The current receiver LO frequency.
double cur_rx_if_freq
 difference between rx
double cur_tx_lo_freq
 The current requested transmitter LO frequency.
double cur_tx_if_freq
 the TX LO frequency reported by the RadioTX front end.
double tx_samp_rate
 sample rate to TX chain.
std::string tx_ant
 TX antenna choice (usually has to be TX or TX/RX1?
std::string motherboard_name
 The model name of the radio.
bool tvrt_lo_capable
 if true, this unit can implement a local transverter oscillator.
bool tvrt_lo_mode
 if true, set the transmit frequency, with some knowledge of the tvrt LO.
double tvrt_lo_gain
 output power for the second transmit channel (used for transverter LO)
double tvrt_lo_freq
 the frequency of the second transmit channel oscillator
double tvrt_lo_fe_freq
 the frequency of the second transmit channel front-end oscillator
bool debug_mode
 print stuff when we are in debug mode
Protected Attributes inherited from SoDa::Thread
std::weak_ptr< Threadself
 A pointer to ourself.
Protected Attributes inherited from SoDa::Debug
std::string unit_name
 the name of the unit reporting status
unsigned int debug_level
 the debug level (threshold) for messages

Static Protected Attributes

static const double tx_freq_rxmode_offset
 tx offset when in RX mode
Static Protected Attributes inherited from SoDa::Debug
static unsigned int default_debug_level
static unsigned int global_debug_level

Private Member Functions

virtual void reportAntennas () final
 write all antenna names to the report message channel Get these from the listAntennas call.
bool isLocked (SoDa::RXTX rxtx)
 checked state of front-end LO and back-end IF chain NCO.
void auxRun ()
 Methods that a radio MAY implement (see above)
void subExecGetCommand (CommandPtr cmd)
void subExecSetCommand (CommandPtr cmd)
void subExecRepCommand (CommandPtr cmd)

Additional Inherited Members

Static Public Member Functions inherited from SoDa::Debug
static void setDefaultLevel (unsigned int v)
static unsigned int getDefaultLevel ()
static void setGlobalLevel (unsigned int v)
static unsigned int getGlobalLevel ()
Static Public Attributes inherited from SoDa::Debug
static std::mutex debug_msg_mutex

Detailed Description

Though libuhd is designed to be re-entrant, there are some indications that all control functions (set_freq, gain, and other operations) should originate from a single thread.

RadioRX listens on the Command Stream message channel for requests from other components (including the SoDa::UI listener) and dumps status and completion reports back onto the command stream channel.

RadioControl does that.

RadioControl listens on the Command Stream message channel for requests from other components (including the SoDa::UI listener) and dumps status and completion reports back onto the command stream channel.

A Receiver does no processing to the incoming RF signal other than

  1. optionally resample the input stream
  2. publish it on the rx_stream
  3. downsample it and publish that on the if_stream.

Definition at line 69 of file RadioControl.hxx.

Constructor & Destructor Documentation

◆ RadioControl()

SoDa::RadioControl::RadioControl ( ParamsPtr params,
const std::string & name )

Constructor Build a RadioControl thread.

Parameters
paramsPointer to a parameter object with all the initial settings
namethe name given to the thread. and identification for the attached radio

References params.

Member Function Documentation

◆ auxRun()

void SoDa::RadioControl::auxRun ( )
inlineprivate

Methods that a radio MAY implement (see above)

Definition at line 167 of file RadioControl.hxx.

References auxRun().

Referenced by auxRun().

◆ execCommand()

virtual void SoDa::RadioControl::execCommand ( CommandPtr cmd)
finalprotectedvirtual

Parse an incoming command and dispatch.

If a subclass needs to handle any command type, it should declare its own subExecCommand method.

Parameters
cmda command record

◆ execGetCommand()

virtual void SoDa::RadioControl::execGetCommand ( CommandPtr cmd)
finalprotectedvirtual

Parse an incoming GET command and dispatch.

If a subclass needs to handle any command type, it should declare its own subExecCommand method.

Parameters
cmda command record

Reimplemented from SoDa::Thread.

◆ execRepCommand()

void SoDa::RadioControl::execRepCommand ( CommandPtr cmd)
finalprotectedvirtual

Parse an incoming REPort command and dispatch.

If a subclass needs to handle any command type, it should declare its own subExecRepCommand method.

Parameters
cmda command record

Reimplemented from SoDa::Thread.

◆ execSetCommand()

void SoDa::RadioControl::execSetCommand ( CommandPtr cmd)
finalprotectedvirtual

Parse an incoming SET command and dispatch.

If a subclass needs to handle any command type, it should declare its own subExecSetCommand method.

Parameters
cmda command record

Reimplemented from SoDa::Thread.

◆ findGoodRXLO()

double SoDa::RadioControl::findGoodRXLO ( double freq,
double cur_lo_freq )
protected

see setFreq - this is a helper to find a good LO frequency that puts the IF in a range that is convenient for the spectrum display.

Parameters
freqdesired final frequency
cur_lo_freqthe last LO frequency sent to the front-end.
Returns
-1 if freq is within the "good window" of cur_lo_freq. Otherwise, return a good LO freq that puts freq in the good window.

◆ getAntenna()

virtual std::string SoDa::RadioControl::getAntenna ( SoDa::RXTX rxtx)
protectedpure virtual

Get the current selected antenna.

Parameters
rxtxrx/tx selection
Returns
a string corresponding to the chosen antenna. It will be in the list returned by listAntennas.

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ getClockSource()

virtual Command::ClockSource SoDa::RadioControl::getClockSource ( )
protectedvirtual

Some radios support multiple choices for the main reference clock source.

As an example, the USRP N200 can lock its master clock to an external 10 MHz reference or to an internal TCXO.

There is a default implementation of this method that returns "Internal"

Returns
the name of the currently selected clock source

Reimplemented in SoDa::USRPCtrl.

◆ getHardwareDescription()

virtual std::string SoDa::RadioControl::getHardwareDescription ( )
protectedpure virtual

report the model number and any other interesting features (like freq range) to be displayed on the UI and such.

Returns
a string describing the hardware.

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ getLOFreq()

virtual double SoDa::RadioControl::getLOFreq ( SoDa::RXTX rxtx)
protectedpure virtual

Return the current LO (front end) oscillator setting for RX or TX chain.

Parameters
rxtxselect receiver or transmitter
Returns
frequency (Analog LO and DDS/FPGA)

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ getSampleRate()

virtual float SoDa::RadioControl::getSampleRate ( SoDa::RXTX rxtx)
protectedpure virtual

Get the current setting for the sample rate.

Parameters
rxtxchoose RX chain or TX chain
Returns
the sample rate (samples/sec)

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ getSelfPtr()

virtual RadioControlPtr SoDa::RadioControl::getSelfPtr ( )
pure virtual

◆ getTime()

double SoDa::RadioControl::getTime ( )
protected

get the number of seconds since the "Epoch"

Returns
relative time in seconds

◆ getTXEna()

virtual bool SoDa::RadioControl::getTXEna ( )
protectedpure virtual

get the state of the TXEna bit

Returns
true if the TX relay is activated.

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ getTXRelayOn()

virtual bool SoDa::RadioControl::getTXRelayOn ( )
protectedpure virtual

get the state of the TX relay confirm bit

Returns
true if the TX relay sense input is asserted

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ init()

virtual void SoDa::RadioControl::init ( )
inlinevirtual

perform initialization.

Not all modules need to implement this.

Reimplemented in SoDa::PlutoCtrl.

Definition at line 91 of file RadioControl.hxx.

References init().

Referenced by init().

◆ isLocked()

bool SoDa::RadioControl::isLocked ( SoDa::RXTX rxtx)
private

checked state of front-end LO and back-end IF chain NCO.

Parameters
rxtxwhich is it? RX or TX
Returns
true if the unit control widget reports isLOLocked and the IF chain has reported that it has set its NCO

References isLocked().

Referenced by isLocked().

◆ isLOLocked()

virtual bool SoDa::RadioControl::isLOLocked ( SoDa::RXTX rxtx)
protectedpure virtual

Methods that ALL radios must implement.

is the identified (rx or tx) front-end LO locked? If not, set the tuning frequency to "the right thing"

Parameters
rxtxRX, TX

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ listAntennas()

virtual std::vector< std::string > SoDa::RadioControl::listAntennas ( SoDa::RXTX rxtx)
protectedpure virtual

report the antennas that are available.

we'll use this to let the GUI know what the choices are.

Parameters
rxtxselect which port RX, or TX
Returns
list of antennas for rx/tx This will later be used in the RadioControl initialization command sequence from "reportModes"

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ reportAntennas()

virtual void SoDa::RadioControl::reportAntennas ( )
finalprivatevirtual

write all antenna names to the report message channel Get these from the listAntennas call.

◆ run()

void SoDa::RadioControl::run ( )
finalvirtual

start the thread

If a subclass needs to perform its own work, it should declare an auxRun method.

Reimplemented from SoDa::Thread.

◆ setAntenna()

virtual void SoDa::RadioControl::setAntenna ( const std::string & ant,
SoDa::RXTX rxtx )
protectedpure virtual

Set the antenna choice.

Use "ant" if it is in the list of alternatives. Otherwise, choose the first alternative.

Parameters
antthe requested antenna
rxtxrx/tx selection

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ setClockSource()

virtual bool SoDa::RadioControl::setClockSource ( Command::ClockSource src)
protectedvirtual

Some radios support multiple choices for the main reference clock source.

As an example, the USRP N200 can lock its master clock to an external 10 MHz reference or to an internal TCXO.

This method chooses that reference source.

There is a default implementation of this method that returns "Internal"

Parameters
srcif src is in the sources list, set the reference source to src
Returns
true if the source name is valid, false if otherwise or if there is only one choice.

Reimplemented in SoDa::USRPCtrl.

◆ setFreq()

void SoDa::RadioControl::setFreq ( double freq,
SoDa::RXTX rxtx )
protected

Set the recieve or transmit frequency to 'freq' This includes setting the PLL front end synthesizer, the FPGA resident digital synthesizer (if it exists) and the RX baseband or TX baseband oscillator.

Parameters
freqtarget frequency
rxtxselect receiver or transmitter

This calls the actual radio control object's setLOFreq method.

The actual LO frequency may differ from the requested frequency by a small margin. Some radios may have a tuning step that is more than a few Hz. In this case we adjust the LO in the RX and TX objects. (This may be a bigger deal for the TX object as we like to do all the modulation there at baseband and assume the hardware takes care of the carrier frequency.

The RX LO frequency differs from the requested frequency to move the DC spike in the IF spectrum away from the requested frequency. setFreq ensures the requested frequency (freq) is at least 100 kHz above the LO frequency and no more than 200 kHz above the LO frequency. (This is less about the RF sample rate and more about keeping a nice window around the tuned frequency so the periodogram or waterfall display is helpful. )

So we now have the concept of an IF frequency. The IF frequency is the difference between the LO frequency and the requested frequency. We assume that the TX chain will always have an IF frequency of 0 Hz. The RX chain will have an IF frequency of freq - setLOFreq()

In both cases, setFreq will send a SET, RX_IF_OSC or SET, TX_IF_OSC command to the RX or TX threads. The RX or TX thread must send back REP, xx_IF_OSC with the setting that it accepted. RadioControl will not report LO locked until both the hardware device reports that it is locked and the REP, xx_IF_OSC message has returned.

Typically, the call for a receive request would look like this:

if_freq = setFreq(144.215e6, SoDa::RX, 0)

If the target LO can tune in 20 kHz intervals, the actual LO would be 144.100e6 and the if_freq would be 115e3 Hz. This would allow a "clean" window from 144.115 Mhz to 144.325 MHz in the spectrogram display. The LO would need to be changed if the next frequency was greater than 144.240 or less than 144.205 (I think)

On the transmit side, the offset may be dictated by the frequency stepping increment in the front-end LO.

To keep everything civilized, setFreq should never be called by any other agent than the RadioControl object. (Not even its sub-classes.)

◆ setLOFreq()

virtual double SoDa::RadioControl::setLOFreq ( double freq,
SoDa::RXTX rxtx )
protectedpure virtual
   @brief Set the front-end (LO + DDS) frequency to 'freq'
   This includes setting the PLL front end synthesizer
   as well as the FPGA resident digital synthesizer.

   @param freq targeto frequency (analog LO and DDS in the FPGA)
   @param rxtx select receiver or transmitter

   @return The actual LO frequency.

   The actual LO frequency may differ from the requested frequency by a small
   margin. Some radios may have a tuning step that is more than a few Hz. In this
   case we adjust the LO in the RX and TX objects. (This may be a bigger deal for the
   TX object as we like to do all the modulation there at baseband and assume the
   hardware takes care of the carrier frequency. 

   Typically, the call for a receive request would look like this:

   actual_lo_freq = setLOFreq(144.215e6, SoDa::RX)

   If the target LO can tune in 20 kHz intervals, the actual LO would be 144.100e6 and
   the if_freq would be 115e3 Hz. This would allow a "clean" window from 144.115 Mhz to

g * 144.325 MHz in the spectrogram display. The LO would need to be changed if the next frequency was greater than 144.240 or less than 144.205 (I think)

On the transmit side, the offset may be dictated by the frequency stepping increment in the front-end LO.

To keep everything civilized, setLOFreq should never be called by any other agent than the RadioControl object. (Not even its sub-classes.)

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ setRFGain()

virtual float SoDa::RadioControl::setRFGain ( float gain,
SoDa::RXTX rxtx )
protectedpure virtual

set tain on the RX or TX side

The radio implementation is responsible for mapping the gain to the appropriate control settings.

The range for gain is -30 to 0 in dB. 0 is maximum power or maximum front end RX gain. The device may support a more limited range, say -15 to 0 dB. In this case, any gain value less than -15 is treated as -15. For devices that support a greater range, the supported range is still -30 to 0.

Parameters
gaingain - if not in range, we'll pick something good
rxtxreceive or transmit?
Returns
the actual gain setting

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ setSampleRate()

virtual void SoDa::RadioControl::setSampleRate ( float rate,
SoDa::RXTX rxtx )
protectedpure virtual

Set the RX or TX sample rate.

Parameters
ratesample rate (in samples/sec)
rxtxchoose RX chain or TX chain

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

◆ setTXEna()

virtual void SoDa::RadioControl::setTXEna ( bool tx_on,
bool full_duplex )
protectedpure virtual

Enable or disable the transmit hardware chain, including the antenna relay and PA enable.

In half-duplex mode the RX chain should also be muted.

Parameters
tx_onif true, enable the TX hardware; if false, disable it.
full_duplexif true, leave the RX chain active while transmitting.

Implemented in SoDa::PlutoCtrl, SoDa::RTLSDRCtrl, and SoDa::USRPCtrl.

References tx_on.

◆ setTXRXMode()

void SoDa::RadioControl::setTXRXMode ( Command::RxTxState rxtxst,
bool full_duplex )
protected

Initiate the actions that will turn on the transmitter and (optionally) disable the receiver.

Or enable the receiver and turn off the transmitter.

This is a multistep process and looks like this:

To turn TX ON. (RadioControl receives TX_STATE TX_ON_0, full_duplex_flag (Entries marked with X are performed by RadioControl, others must be implemented in the model controller's setTXRXMode function.

  1. X turn the RX gain to 0 (temporarily)
  2. X set the TX gain to its current requested level
  3. X Report the tx gain to the world
  4. X Set the tx local oscillator (in case it was in "tune remote mode"
  5. Enable the rest of the tx hardware, including the antenna relay. (setTXEna(true, full_duplex))
  6. X Send a SET message to put TX_ON_1, full_duplex_flag

On receiving a SET TX_STATE TX_ON_1 CW_TX turns itself on. All other TX_xxx values turn off CW_TX

On receiving TX_ON_1 BaseBandTX turns on the audio input stream (unless we're in cw mode)

On receiving a SET TX_STATE TX_ON_1 BaseBandRX flushes all its buffers unless in full duplex turn on the sidetone stream, if appropriate

To turn TX OFF and RX ON (RadioControl receives TX_STATE TX_OFF_0, full_duplex_flag)

  1. X Set tx gain to 0
  2. Disable transmitter / flip antenna switch
  3. X Sets rx gain to current level
  4. X Sets tx frequency to tx_freq + an offset that gets the tx LO out of the RX passband
  5. Disable the TX hardware and flip antenna relay (setTXEna(false, full_duplex))
  6. X Send SET with TX_OFF_1
Parameters
rxtxstRXTX (TX on/off) state - one of TX_ON_0, TX_ON_1, TX_OFF_0, TX_OFF_1
full_duplexif true, leave RX on while transmitter is enabled.

◆ subExecGetCommand()

void SoDa::RadioControl::subExecGetCommand ( CommandPtr cmd)
inlineprivate

Definition at line 168 of file RadioControl.hxx.

◆ subExecRepCommand()

void SoDa::RadioControl::subExecRepCommand ( CommandPtr cmd)
inlineprivate

Definition at line 170 of file RadioControl.hxx.

◆ subExecSetCommand()

void SoDa::RadioControl::subExecSetCommand ( CommandPtr cmd)
inlineprivate

Definition at line 169 of file RadioControl.hxx.

◆ subscribeToMailBoxes()

void SoDa::RadioControl::subscribeToMailBoxes ( const std::vector< MailBoxBasePtr > & mailboxes)
virtual

implement the subscription method

Implements SoDa::Thread.

Member Data Documentation

◆ cmd_stream

CmdMBoxPtr SoDa::RadioControl::cmd_stream
protected

command stream channel

Definition at line 448 of file RadioControl.hxx.

◆ cmd_subs

CmdMBox::Subscription SoDa::RadioControl::cmd_subs
protected

subscriber ID for this thread's connection to the command channel

Definition at line 449 of file RadioControl.hxx.

◆ cur_rx_if_freq

double SoDa::RadioControl::cur_rx_if_freq
protected

difference between rx

Definition at line 461 of file RadioControl.hxx.

◆ cur_rx_lo_freq

double SoDa::RadioControl::cur_rx_lo_freq
protected

The current receiver LO frequency.

Definition at line 460 of file RadioControl.hxx.

◆ cur_tx_if_freq

double SoDa::RadioControl::cur_tx_if_freq
protected

the TX LO frequency reported by the RadioTX front end.

Definition at line 463 of file RadioControl.hxx.

◆ cur_tx_lo_freq

double SoDa::RadioControl::cur_tx_lo_freq
protected

The current requested transmitter LO frequency.

Definition at line 462 of file RadioControl.hxx.

◆ debug_mode

bool SoDa::RadioControl::debug_mode
protected

print stuff when we are in debug mode

Definition at line 480 of file RadioControl.hxx.

◆ first_gettime

double SoDa::RadioControl::first_gettime
protected

timestamps are relative to the first timestamp.

Definition at line 451 of file RadioControl.hxx.

◆ motherboard_name

std::string SoDa::RadioControl::motherboard_name
protected

The model name of the radio.

Definition at line 470 of file RadioControl.hxx.

◆ params

◆ rx_rf_gain

double SoDa::RadioControl::rx_rf_gain
protected

rf gain for RX front end amp/attenuator

Definition at line 454 of file RadioControl.hxx.

◆ tvrt_lo_capable

bool SoDa::RadioControl::tvrt_lo_capable
protected

if true, this unit can implement a local transverter oscillator.

Definition at line 473 of file RadioControl.hxx.

◆ tvrt_lo_fe_freq

double SoDa::RadioControl::tvrt_lo_fe_freq
protected

the frequency of the second transmit channel front-end oscillator

Definition at line 477 of file RadioControl.hxx.

◆ tvrt_lo_freq

double SoDa::RadioControl::tvrt_lo_freq
protected

the frequency of the second transmit channel oscillator

Definition at line 476 of file RadioControl.hxx.

◆ tvrt_lo_gain

double SoDa::RadioControl::tvrt_lo_gain
protected

output power for the second transmit channel (used for transverter LO)

Definition at line 475 of file RadioControl.hxx.

◆ tvrt_lo_mode

bool SoDa::RadioControl::tvrt_lo_mode
protected

if true, set the transmit frequency, with some knowledge of the tvrt LO.

Definition at line 474 of file RadioControl.hxx.

◆ tx_ant

std::string SoDa::RadioControl::tx_ant
protected

TX antenna choice (usually has to be TX or TX/RX1?

Definition at line 468 of file RadioControl.hxx.

◆ tx_freq_rxmode_offset

const double SoDa::RadioControl::tx_freq_rxmode_offset
staticprotected

tx offset when in RX mode

Definition at line 465 of file RadioControl.hxx.

◆ tx_on

bool SoDa::RadioControl::tx_on
protected

if true, we are transmitting.

Definition at line 458 of file RadioControl.hxx.

Referenced by setTXEna().

◆ tx_rf_gain

double SoDa::RadioControl::tx_rf_gain
protected

rf gain for final TX amp

Definition at line 455 of file RadioControl.hxx.

◆ tx_samp_rate

double SoDa::RadioControl::tx_samp_rate
protected

sample rate to TX chain.

Definition at line 467 of file RadioControl.hxx.


The documentation for this class was generated from the following file: