You are not logged in.
Hi, I am using WarpLab 7.7.0 and I am having some difficulties. I am supposed to communicate to and from multiple nodes and change channels in the 2.4 Ghz range.
Can you specify what code is for initializing the nodes? Also how to change the channel in the code?
Right now when I am running the code, sometimes it will say that the signal was received at a receiving node even when the transmitter is on a completely different channel. I am using Channel 7 for communication and Channels 1 and 14 for control. The problem I am having happens when I am transmitting and receiving at the control channels. The receiver configure to channel 14 is saying that it received a transmission from transmitter transmitting on channel 1. Thank you in advance.
Offline
First, please consider updating to WARPLab 7.7.1 to take advantage of a few bug fixes.
Second, you'll have to provide much more detail about your experiment for us to provide any debugging suggestions. Have you implemented a PHY in WARPLab? And you're using this PHY to build some sort of multi-channel protocol?
Offline
I am using ofdm siso txrx as my basis. I extended that code to 4 nodes and than I am cycling through the nodes in terms of transmitting and receiving. From the ofdm siso txrx example can you specify what code would I need to rewrite to change a node from tx to rx? Thank you
Offline
The Tx/Rx processes are pretty well identified by variable names, command names, and comments in the example code. Everything is already parameterized by node_tx, node_rx, so you should be able to extend whatever normally happens to node_tx to include stuff that happens to node_rx.
Offline
The thing I am confused about is that I first initialize 4 nodes and once a signal is sent, now only 3 nodes should communicate. Would I need to reinitialize them or do I just define a subset of them? When setting up the trigger, it only reads the id of the first one. When I redefine the trigger for the three nodes will the fourth one also receive the trigger.
This is my code to initialize the four nodes
NUMNODES = 4; % Create a vector of node objects nodes = wl_initNodes(NUMNODES); node_tx1 = nodes(1); node_tx2 = nodes(3); node_rx1 = nodes(2); node_rx2 = nodes(4); % Create a UDP broadcast trigger and tell each node to be ready for it eth_trig_1 = wl_trigger_eth_udp_broadcast; wl_triggerManagerCmd(nodes, 'add_ethernet_trigger', [eth_trig_1]); % Read Trigger IDs into workspace trig_in_ids = wl_getTriggerInputIDs(nodes(1)); trig_out_ids = wl_getTriggerOutputIDs(nodes(1)); % For both nodes, we will allow Ethernet to trigger the buffer baseband and the AGC wl_triggerManagerCmd(nodes, 'output_config_input_selection', [trig_out_ids.BASEBAND, trig_out_ids.AGC], [trig_in_ids.ETH_A]); % Set the trigger output delays. nodes.wl_triggerManagerCmd('output_config_delay', [trig_out_ids.BASEBAND], 0); nodes.wl_triggerManagerCmd('output_config_delay', [trig_out_ids.AGC], TRIGGER_OFFSET_TOL_NS); % Get IDs for the interfaces on the boards. ifc_ids_TX1 = wl_getInterfaceIDs(node_tx1); ifc_ids_RX1 = wl_getInterfaceIDs(node_rx1); ifc_ids_TX2 = wl_getInterfaceIDs(node_tx2); ifc_ids_RX2 = wl_getInterfaceIDs(node_rx2);
Code for Initializing 3 nodes out of four
% Create a vector of node objects nodes_ue1(1) = nodes(2); nodes_ue1(2) = nodes(1); nodes_ue1(3) = nodes(3); node_tx1 = nodes_ue1(1); node_rx1 = nodes_ue1(2) ; node_rx2 = nodes_ue1(3); % Create a UDP broadcast trigger and tell each node to be ready for it eth_trig_2 = wl_trigger_eth_udp_broadcast; wl_triggerManagerCmd(nodes_ue1, 'add_ethernet_trigger', [eth_trig_2]); % Read Trigger IDs into workspace trig_in_ids = wl_getTriggerInputIDs(nodes_ue1(1)); trig_out_ids = wl_getTriggerOutputIDs(nodes_ue1(1)); % For both nodes, we will allow Ethernet to trigger the buffer baseband and the AGC wl_triggerManagerCmd(nodes_ue1, 'output_config_input_selection', [trig_out_ids.BASEBAND, trig_out_ids.AGC], [trig_in_ids.ETH_A]); % Set the trigger output delays. nodes_ue1.wl_triggerManagerCmd('output_config_delay', [trig_out_ids.BASEBAND], 0); nodes_ue1.wl_triggerManagerCmd('output_config_delay', [trig_out_ids.AGC], TRIGGER_OFFSET_TOL_NS); % Get IDs for the interfaces on the boards. ifc_ids_TX1 = wl_getInterfaceIDs(node_tx1); ifc_ids_RX1 = wl_getInterfaceIDs(node_rx1);
Offline
When setting up the trigger, it only reads the id of the first one. When I redefine the trigger for the three nodes will the fourth one also receive the trigger.
Trigger IDs are common to all nodes running the same version of WARPLab. The trigger ID selects inputs to the trigger_proc core. These IDs might change between WARPLab versions, but the IDs do not change across nodes running the same WARPLab version.
You can remove the Ethernet trigger from a node using the 'delete_ethernet_trigger' command.
The thing I am confused about is that I first initialize 4 nodes and once a signal is sent, now only 3 nodes should communicate. Would I need to reinitialize them or do I just define a subset of them?
You only need to initialize each node once per boot. You can then communicate with that node from MATLAB for the entire experiment, even if you configure it to behave differently from other nodes in your setup.
Offline