aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-08-10 00:01:26 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2018-08-10 16:38:59 +0700
commit5394c6012d05d6565d1374e1c7a67b3f5f2decc6 (patch)
tree1371ea16a810e05d204a2dc64c02ac79ebabae98
parent0e246372bc692f2f12198b61010c4ea156056428 (diff)
gsm_trx_burst_if: allow to customize the bind address
Pleviously remote address for DATA interface was also used as the bind address, what is definitely wrong. Let's change the API a bit in order to allow one to specify a custom bind address. Change-Id: I6e5f7b7119ac454217b8dd04f9ee0dd3b23972b6
-rw-r--r--grc/trx/gsm_trx_burst_if.xml9
-rw-r--r--include/grgsm/misc_utils/udp_socket.h3
-rw-r--r--include/grgsm/trx/trx_burst_if.h1
-rw-r--r--lib/misc_utils/udp_socket.cc5
-rw-r--r--lib/trx/trx_burst_if_impl.cc9
-rw-r--r--lib/trx/trx_burst_if_impl.h3
-rw-r--r--python/trx/radio_if.py7
7 files changed, 26 insertions, 11 deletions
diff --git a/grc/trx/gsm_trx_burst_if.xml b/grc/trx/gsm_trx_burst_if.xml
index 99427b3..49979a3 100644
--- a/grc/trx/gsm_trx_burst_if.xml
+++ b/grc/trx/gsm_trx_burst_if.xml
@@ -3,7 +3,7 @@
<name>TRX Burst Interface</name>
<key>gsm_trx_burst_if</key>
<import>import grgsm</import>
- <make>grgsm.trx_burst_if($remote_addr, $base_port)</make>
+ <make>grgsm.trx_burst_if($bind_addr, $remote_addr, $base_port)</make>
<param>
<name>base_port</name>
@@ -13,6 +13,13 @@
</param>
<param>
+ <name>bind_addr</name>
+ <key>bind_addr</key>
+ <value>0.0.0.0</value>
+ <type>string</type>
+ </param>
+
+ <param>
<name>remote_addr</name>
<key>remote_addr</key>
<value>127.0.0.1</value>
diff --git a/include/grgsm/misc_utils/udp_socket.h b/include/grgsm/misc_utils/udp_socket.h
index 15b2c66..d1ceb9f 100644
--- a/include/grgsm/misc_utils/udp_socket.h
+++ b/include/grgsm/misc_utils/udp_socket.h
@@ -53,8 +53,9 @@ namespace gr {
public:
udp_socket(
- const std::string &remote_addr,
+ const std::string &bind_addr,
const std::string &src_port,
+ const std::string &remote_addr,
const std::string &dst_port,
size_t mtu);
~udp_socket();
diff --git a/include/grgsm/trx/trx_burst_if.h b/include/grgsm/trx/trx_burst_if.h
index 0e7a35a..9277dc5 100644
--- a/include/grgsm/trx/trx_burst_if.h
+++ b/include/grgsm/trx/trx_burst_if.h
@@ -48,6 +48,7 @@ namespace gr {
* creating new instances.
*/
static sptr make(
+ const std::string &bind_addr,
const std::string &remote_addr,
const std::string &base_port);
};
diff --git a/lib/misc_utils/udp_socket.cc b/lib/misc_utils/udp_socket.cc
index 73393a0..c43f183 100644
--- a/lib/misc_utils/udp_socket.cc
+++ b/lib/misc_utils/udp_socket.cc
@@ -38,8 +38,9 @@ namespace gr {
namespace gsm {
udp_socket::udp_socket(
- const std::string &remote_addr,
+ const std::string &bind_addr,
const std::string &src_port,
+ const std::string &remote_addr,
const std::string &dst_port,
size_t mtu)
{
@@ -50,7 +51,7 @@ namespace gr {
udp::resolver resolver(d_io_service);
udp::resolver::query rx_query(
- udp::v4(), remote_addr, src_port,
+ udp::v4(), bind_addr, src_port,
boost::asio::ip::resolver_query_base::passive);
udp::resolver::query tx_query(
udp::v4(), remote_addr, dst_port,
diff --git a/lib/trx/trx_burst_if_impl.cc b/lib/trx/trx_burst_if_impl.cc
index e3fcc89..f72eecd 100644
--- a/lib/trx/trx_burst_if_impl.cc
+++ b/lib/trx/trx_burst_if_impl.cc
@@ -48,19 +48,22 @@ namespace gr {
trx_burst_if::sptr
trx_burst_if::make(
+ const std::string &bind_addr,
const std::string &remote_addr,
const std::string &base_port)
{
int base_port_int = boost::lexical_cast<int> (base_port);
return gnuradio::get_initial_sptr
- (new trx_burst_if_impl(remote_addr, base_port_int));
+ (new trx_burst_if_impl(bind_addr, remote_addr,
+ base_port_int));
}
/*
* The private constructor
*/
trx_burst_if_impl::trx_burst_if_impl(
+ const std::string &bind_addr,
const std::string &remote_addr,
int base_port
) : gr::block("trx_burst_if",
@@ -79,8 +82,8 @@ namespace gr {
std::string data_dst_port = boost::lexical_cast<std::string> (base_port + 102);
// Init DATA interface
- d_data_sock = new udp_socket(remote_addr,
- data_src_port, data_dst_port, DATA_IF_MTU);
+ d_data_sock = new udp_socket(bind_addr, data_src_port,
+ remote_addr, data_dst_port, DATA_IF_MTU);
// Bind DATA interface handler
d_data_sock->udp_rx_handler = boost::bind(
diff --git a/lib/trx/trx_burst_if_impl.h b/lib/trx/trx_burst_if_impl.h
index 27ec259..fdb49f2 100644
--- a/lib/trx/trx_burst_if_impl.h
+++ b/lib/trx/trx_burst_if_impl.h
@@ -40,7 +40,8 @@ namespace gr {
void burst_pack(pmt::pmt_t msg, uint8_t *buf);
public:
- trx_burst_if_impl(const std::string &remote_addr, int base_port);
+ trx_burst_if_impl(const std::string &bind_addr,
+ const std::string &remote_addr, int base_port);
~trx_burst_if_impl();
void handle_dl_burst(pmt::pmt_t msg);
diff --git a/python/trx/radio_if.py b/python/trx/radio_if.py
index 2648cc9..25a35a5 100644
--- a/python/trx/radio_if.py
+++ b/python/trx/radio_if.py
@@ -81,7 +81,8 @@ class radio_if(gr.top_block):
def __init__(self, phy_args, phy_sample_rate,
phy_rx_gain, phy_tx_gain, phy_ppm,
phy_rx_antenna, phy_tx_antenna,
- trx_remote_addr, trx_base_port):
+ trx_remote_addr, trx_base_port,
+ trx_bind_addr = "0.0.0.0"):
print("[i] Init Radio interface")
@@ -95,8 +96,8 @@ class radio_if(gr.top_block):
# TRX Burst Interface
self.trx_burst_if = grgsm.trx_burst_if(
- trx_remote_addr, str(trx_base_port))
-
+ trx_bind_addr, trx_remote_addr,
+ str(trx_base_port))
# RX path definition
self.phy_src = uhd.usrp_source(phy_args,