From 803cb1d7974ed7d419550cc66480c107c2f0d454 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Thu, 25 Feb 2010 15:46:01 -0800 Subject: Added call to set antenna. Split XCVR into new thing cuz size. --- usrp2/host/include/usrp2/usrp2.h | 10 ++++++++++ usrp2/host/lib/usrp2.cc | 10 ++++++++++ usrp2/host/lib/usrp2_impl.cc | 42 ++++++++++++++++++++++++++++++++++++++++ usrp2/host/lib/usrp2_impl.h | 2 ++ 4 files changed, 64 insertions(+) (limited to 'usrp2/host') diff --git a/usrp2/host/include/usrp2/usrp2.h b/usrp2/host/include/usrp2/usrp2.h index 2d9e2a4b0..7069507cf 100644 --- a/usrp2/host/include/usrp2/usrp2.h +++ b/usrp2/host/include/usrp2/usrp2.h @@ -114,6 +114,11 @@ namespace usrp2 { * ---------------------------------------------------------------- */ + /*! + * Set the rx antenna + */ + bool set_rx_antenna(int ant); + /*! * Set receiver gain * \param gain in dB (more or less) @@ -226,6 +231,11 @@ namespace usrp2 { * ---------------------------------------------------------------- */ + /*! + * Set the tx antenna + */ + bool set_tx_antenna(int ant); + /*! * Set transmitter gain */ diff --git a/usrp2/host/lib/usrp2.cc b/usrp2/host/lib/usrp2.cc index 801a436a3..f0ee564be 100644 --- a/usrp2/host/lib/usrp2.cc +++ b/usrp2/host/lib/usrp2.cc @@ -169,6 +169,11 @@ namespace usrp2 { // Receive + bool + usrp2::set_rx_antenna(int ant){ + return d_impl->set_rx_antenna(ant); + } + bool usrp2::set_rx_gain(double gain) { @@ -279,6 +284,11 @@ namespace usrp2 { // Transmit + bool + usrp2::set_tx_antenna(int ant){ + return d_impl->set_tx_antenna(ant); + } + bool usrp2::set_tx_gain(double gain) { diff --git a/usrp2/host/lib/usrp2_impl.cc b/usrp2/host/lib/usrp2_impl.cc index b19c6ecf1..34477b746 100644 --- a/usrp2/host/lib/usrp2_impl.cc +++ b/usrp2/host/lib/usrp2_impl.cc @@ -491,6 +491,27 @@ namespace usrp2 { // Receive // ---------------------------------------------------------------- + bool + usrp2::impl::set_rx_antenna(int ant){ + op_config_mimo_cmd cmd; + op_generic_t reply; + + memset(&cmd, 0, sizeof(cmd)); + init_etf_hdrs(&cmd.h, d_addr, 0, CONTROL_CHAN, -1); + cmd.op.opcode = OP_TX_ANTENNA; + cmd.op.len = sizeof(cmd.op); + cmd.op.rid = d_next_rid++; + cmd.op.flags = ant; + cmd.eop.opcode = OP_EOP; + cmd.eop.len = sizeof(cmd.eop); + + pending_reply p(cmd.op.rid, &reply, sizeof(reply)); + if (!transmit_cmd_and_wait(&cmd, sizeof(cmd), &p, DEF_CMD_TIMEOUT)) + return false; + + return true;//ntohx(reply.ok) == 1; + } + bool usrp2::impl::set_rx_gain(double gain) { @@ -901,6 +922,27 @@ namespace usrp2 { // Transmit // ---------------------------------------------------------------- + bool + usrp2::impl::set_tx_antenna(int ant){ + op_config_mimo_cmd cmd; + op_generic_t reply; + + memset(&cmd, 0, sizeof(cmd)); + init_etf_hdrs(&cmd.h, d_addr, 0, CONTROL_CHAN, -1); + cmd.op.opcode = OP_RX_ANTENNA; + cmd.op.len = sizeof(cmd.op); + cmd.op.rid = d_next_rid++; + cmd.op.flags = ant; + cmd.eop.opcode = OP_EOP; + cmd.eop.len = sizeof(cmd.eop); + + pending_reply p(cmd.op.rid, &reply, sizeof(reply)); + if (!transmit_cmd_and_wait(&cmd, sizeof(cmd), &p, DEF_CMD_TIMEOUT)) + return false; + + return true;//ntohx(reply.ok) == 1; + } + bool usrp2::impl::set_tx_gain(double gain) { diff --git a/usrp2/host/lib/usrp2_impl.h b/usrp2/host/lib/usrp2_impl.h index d78a00db4..a75947922 100644 --- a/usrp2/host/lib/usrp2_impl.h +++ b/usrp2/host/lib/usrp2_impl.h @@ -126,6 +126,7 @@ namespace usrp2 { // Rx + bool set_rx_antenna(int ant); bool set_rx_gain(double gain); double rx_gain_min() { return d_rx_db_info.gain_min; } double rx_gain_max() { return d_rx_db_info.gain_max; } @@ -153,6 +154,7 @@ namespace usrp2 { // Tx + bool set_tx_antenna(int ant); bool set_tx_gain(double gain); double tx_gain_min() { return d_tx_db_info.gain_min; } double tx_gain_max() { return d_tx_db_info.gain_max; } -- cgit From 752df2b84454756685dc2a05c232b59e3ebdaa2e Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Thu, 25 Feb 2010 16:50:44 -0800 Subject: setting xcvr antennas through api --- usrp2/host/lib/usrp2_impl.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'usrp2/host') diff --git a/usrp2/host/lib/usrp2_impl.cc b/usrp2/host/lib/usrp2_impl.cc index 34477b746..d4f29baf0 100644 --- a/usrp2/host/lib/usrp2_impl.cc +++ b/usrp2/host/lib/usrp2_impl.cc @@ -498,7 +498,7 @@ namespace usrp2 { memset(&cmd, 0, sizeof(cmd)); init_etf_hdrs(&cmd.h, d_addr, 0, CONTROL_CHAN, -1); - cmd.op.opcode = OP_TX_ANTENNA; + cmd.op.opcode = OP_RX_ANTENNA; cmd.op.len = sizeof(cmd.op); cmd.op.rid = d_next_rid++; cmd.op.flags = ant; @@ -509,7 +509,7 @@ namespace usrp2 { if (!transmit_cmd_and_wait(&cmd, sizeof(cmd), &p, DEF_CMD_TIMEOUT)) return false; - return true;//ntohx(reply.ok) == 1; + return ntohx(reply.ok) == 1; } bool @@ -929,7 +929,7 @@ namespace usrp2 { memset(&cmd, 0, sizeof(cmd)); init_etf_hdrs(&cmd.h, d_addr, 0, CONTROL_CHAN, -1); - cmd.op.opcode = OP_RX_ANTENNA; + cmd.op.opcode = OP_TX_ANTENNA; cmd.op.len = sizeof(cmd.op); cmd.op.rid = d_next_rid++; cmd.op.flags = ant; @@ -940,7 +940,7 @@ namespace usrp2 { if (!transmit_cmd_and_wait(&cmd, sizeof(cmd), &p, DEF_CMD_TIMEOUT)) return false; - return true;//ntohx(reply.ok) == 1; + return ntohx(reply.ok) == 1; } bool -- cgit