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
This commit is contained in:
parent
0e246372bc
commit
5394c6012d
|
@ -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>
|
||||
|
@ -12,6 +12,13 @@
|
|||
<type>string</type>
|
||||
</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>
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue