![]() |
four_multi
Multi-Antenna,Multi-Node,Multi-Band,Multi-Cell
|
This class is used when multiple nodes are running on the same computer. When using the class several nodes are first instantiated (with simulate=true). These are then provided as arguments to the constructor. The constituent nodes must have the same buffer_size and have their frame types and timings aligned. The processing in the nodes must be thread safe since they will be processing in separate frames. Since the nodes will be using the same backbone (ethernet interface and address) only constituent may use the at a time. This is solved with mutexes see the document xxx. More...
#include <super_node.hpp>
Public Member Functions | |
super_node (uint32_t no_ant1, uint32_t no_ant2, bool use_external_10MHz, bool use_same_antenna, uint32_t skip_ant, std::vector< four_multi_node * > *nodes) | |
This is the constructor of super_node. | |
void | set_nodes (std::vector< four_multi_node * > *nodes) |
This function can be used to change the vector of nodes used by the super node. This is like changing the DNA of the supernode. This is very useful when we want to run several schemes in a sequence while avoiding to re-initialize the USRP and it's driver. | |
super_node (uint32_t no_ant1, uint32_t no_ant2, bool use_external_10MHz, bool use_same_antenna, uint32_t skip_ant, std::vector< four_multi_node * > *nodes, std::vector< double > override_gain_rx, std::vector< double > override_gain_tx, std::vector< double > override_frequency) | |
Identical to the other constructor but enables the user to override the gain and frequency settings obtained from each constituent node. Instead a single fixed vector of values is provided. | |
Protected Member Functions | |
virtual frame_settings | node_init (void) |
Override this function with your implementation. This function has the same function as node_process except that it is called only once and before anything has been transmitted and received. The function is called before synchronizing against the PPS. Here you can place any time consuming initializations you may need. | |
virtual frame_settings | node_process (void) |
Override this function with your implementation. This is the most important function of your implementation. The function returns a "frame_settings" value which defines when then next frame should be transmitted, if it is a transmit or receive buffer. If it is a transmit frame then you should fill the transmitter buffers, d_tx_buffers, with the signal that should be transmitted before exiting node_process. If the previous frame was a receive frame then you should process the samples in d_rx_buffers. The frame_settings of the previous frame is stored in d_old_frame_settings. | |
virtual void | end_of_run (void) |
Override this function with any post processing you may want to do. | |
Protected Attributes | |
bool | do_override |
std::vector< double > | d_override_gain_rx |
std::vector< double > | d_override_gain_tx |
std::vector< double > | d_override_frequency |
std::vector< four_multi_node * > * | d_nodes |
This class is used when multiple nodes are running on the same computer. When using the class several nodes are first instantiated (with simulate=true). These are then provided as arguments to the constructor. The constituent nodes must have the same buffer_size and have their frame types and timings aligned. The processing in the nodes must be thread safe since they will be processing in separate frames. Since the nodes will be using the same backbone (ethernet interface and address) only constituent may use the at a time. This is solved with mutexes see the document xxx.
Definition at line 52 of file super_node.hpp.
super_node::super_node | ( | uint32_t | no_ant1, |
uint32_t | no_ant2, | ||
bool | use_external_10MHz, | ||
bool | use_same_antenna, | ||
uint32_t | skip_ant, | ||
std::vector< four_multi_node * > * | nodes | ||
) |
This is the constructor of super_node.
no_ant1 | Set this parameter to the number of antennas on the computer in total. |
no_ant2 | Set this to zero (this is used in certain calibration schemes). |
use_external_10MHz | Set to true since we are using external 10MHz. |
same_antenna. | If XCVR2450 is used, setting this value to true makes the J1 antenna connector be used during TX and RX. Setting it to false makes J1 being used for RX and J2 for TX. |
nodes | This is (pointer to ) the vector of nodes to be run on the computer, they will be using antennas out of those defined for the super-node in the order used for the nodes in the nodes vector. |
Definition at line 70 of file super_node.cpp.