Added call to set antenna. Split XCVR into new thing cuz size.
[debian/gnuradio] / usrp2 / host / lib / usrp2_impl.cc
index b19c6ecf196b333d6c078d64660d046713fc6545..34477b7464b509e89a031de0830688b7a6b13fd3 100644 (file)
@@ -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)
   {