gr-usrp2: implement start_streaming_at(usrp2::fpga_timestamp time)
[debian/gnuradio] / gr-usrp2 / src / usrp2_sink_base.cc
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2008,2010 Free Software Foundation, Inc.
4  * 
5  * This file is part of GNU Radio
6  * 
7  * GNU Radio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3, or (at your option)
10  * any later version.
11  * 
12  * GNU Radio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with GNU Radio; see the file COPYING.  If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street,
20  * Boston, MA 02110-1301, USA.
21  */
22
23 #ifdef HAVE_CONFIG_H
24 #include <config.h>
25 #endif
26
27 #include <usrp2_sink_base.h>
28 #include <gr_io_signature.h>
29 #include <iostream>
30
31 usrp2_sink_base::usrp2_sink_base(const char *name,
32                                  gr_io_signature_sptr input_signature,
33                                  const std::string &ifc,
34                                  const std::string &mac) 
35   throw (std::runtime_error)
36   : usrp2_base(name,
37                input_signature,
38                gr_make_io_signature(0, 0, 0),
39                ifc, mac),
40     d_should_wait(false),
41     d_tx_time(0)
42 {
43   // NOP
44 }
45
46 usrp2_sink_base::~usrp2_sink_base ()
47 {
48   // NOP
49 }
50
51 bool
52 usrp2_sink_base::set_antenna(int ant)
53 {
54   return d_u2->set_tx_antenna(ant);
55 }
56
57 bool
58 usrp2_sink_base::set_gain(double gain)
59 {
60   return d_u2->set_tx_gain(gain);
61 }
62
63 bool
64 usrp2_sink_base::set_lo_offset(double frequency)
65 {
66   return d_u2->set_tx_lo_offset(frequency);
67 }
68
69 bool
70 usrp2_sink_base::set_center_freq(double frequency, usrp2::tune_result *tr)
71 {
72   return d_u2->set_tx_center_freq(frequency, tr);
73 }
74
75 bool
76 usrp2_sink_base::set_interp(int interp_factor)
77 {
78   return d_u2->set_tx_interp(interp_factor);
79 }
80
81 void
82 usrp2_sink_base::default_scale_iq(int interp_factor, int *scale_i, int *scale_q)
83 {
84   return d_u2->default_tx_scale_iq(interp_factor, scale_i, scale_q);
85 }
86
87 bool 
88 usrp2_sink_base::set_scale_iq(int scale_i, int scale_q)
89 {
90   return d_u2->set_tx_scale_iq(scale_i, scale_q);
91 }
92
93 int
94 usrp2_sink_base::interp()
95 {
96   return d_u2->tx_interp();
97 }
98
99 bool
100 usrp2_sink_base::dac_rate(long *rate)
101 {
102   return d_u2->dac_rate(rate);
103 }
104
105 double
106 usrp2_sink_base::gain_min()
107 {
108   return d_u2->tx_gain_min();
109 }
110
111 double
112 usrp2_sink_base::gain_max()
113 {
114   return d_u2->tx_gain_max();
115 }
116
117 double
118 usrp2_sink_base::gain_db_per_step()
119 {
120   return d_u2->tx_gain_db_per_step();
121 }
122   
123 double
124 usrp2_sink_base::freq_min()
125 {
126   return d_u2->tx_freq_min();
127 }
128
129 double
130 usrp2_sink_base::freq_max()
131 {
132   return d_u2->tx_freq_max();
133 }
134
135 bool
136 usrp2_sink_base::daughterboard_id(int *dbid)
137 {
138   return d_u2->tx_daughterboard_id(dbid);
139 }
140
141 bool usrp2_sink_base::set_gpio_ddr(uint16_t value, uint16_t mask)
142 {
143   return d_u2->set_gpio_ddr(usrp2::GPIO_TX_BANK, value, mask);
144 }
145
146 bool usrp2_sink_base::set_gpio_sels(std::string sels)
147 {
148   return d_u2->set_gpio_sels(usrp2::GPIO_TX_BANK, sels);
149 }
150
151 bool usrp2_sink_base::write_gpio(uint16_t value, uint16_t mask)
152 {
153   return d_u2->write_gpio(usrp2::GPIO_TX_BANK, value, mask);
154 }
155
156 bool usrp2_sink_base::read_gpio(uint16_t *value)
157 {
158   return d_u2->read_gpio(usrp2::GPIO_TX_BANK, value);
159 }
160
161 bool usrp2_sink_base::start_streaming_at(usrp2::fpga_timestamp time)
162 {
163   d_should_wait = true;
164   d_tx_time = time;
165   return true;
166 }