WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#1 2017-Mar-13 16:45:21

suhaibt
Member
Registered: 2015-Aug-02
Posts: 29

Initialize a node WarpLab

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

 

#2 2017-Mar-14 14:35:06

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Initialize a node WarpLab

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

 

#3 2017-Mar-16 22:36:33

suhaibt
Member
Registered: 2015-Aug-02
Posts: 29

Re: Initialize a node WarpLab

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

 

#4 2017-Mar-17 09:54:57

chunter
Administrator
From: Mango Communications
Registered: 2006-Aug-24
Posts: 1212

Re: Initialize a node WarpLab

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

 

#5 2017-Mar-21 10:29:41

suhaibt
Member
Registered: 2015-Aug-02
Posts: 29

Re: Initialize a node WarpLab

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

Code:

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

Code:

% 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

 

#6 2017-Mar-21 10:45:09

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Initialize a node WarpLab

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

 

Board footer