3 * Copyright 2009 Free Software Foundation, Inc.
5 * This file is part of GNU Radio
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)
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.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 #ifndef INCLUDED_VRT_QUADRADIO_H
22 #define INCLUDED_VRT_QUADRADIO_H
26 #include <arpa/inet.h>
27 #include <netinet/in.h>
28 #include <sys/types.h>
29 #include <sys/socket.h>
32 VRT_TEST_SIG_NORMAL=0,
35 VRT_TEST_SIG_TOGGLE=3,
37 VRT_TEST_SIG_CUSTOM=5,
52 * We're not committing to this interface. It's just here so we can make progress...
54 * This implements the ad-hoc control for bringup and has-a vrt::rx
58 int d_ctrl_fd; // socket for control
59 struct in_addr d_ctrl_port_inaddr; // our ip addr
60 int d_data_fd; // socket for data (owned by d_rx)
61 int d_data_port; // our data port number
62 vrt::rx::sptr d_rx; // has-a rx
64 vrt_band_sel_t d_band_select; // band select setting
65 int d_rx_antenna; // antenna type rf/cal
66 int d_attenuation0; // attenuation setting
67 int d_attenuation1; // attenuation setting
68 bool d_10dB_atten; // 10dB attenuation on/of
71 open_sockets(const char *quad_radio_ip, int quad_radio_ctrl_port,
72 int *ctrl_fd_ptr, struct in_addr *ctrl_port_inaddr,
73 int *data_fd_ptr, int *data_port_ptr);
75 // dsprxno selects the Rx DSP pipe (0 or 1) to configure
77 send_rx_command(int ctrl_fd, int rxdspno, bool start,
78 struct in_addr addr, int data_port, int samples_per_pkt);
80 // dsprxno selects the Rx DSP pipe (0 or 1) to stop
82 send_stop_rx_command(int ctrl_fd, int rxdspno);
84 static int control_port() { return 790; }
85 int data_socket_fd() const { return d_data_fd; }
87 bool open(const char *ip);
89 void update_dboard_pins(void);
92 typedef boost::shared_ptr<quadradio> sptr;
94 quadradio(const std::string &ip, size_t rx_bufsize = 0);
97 vrt::rx::sptr vrt_rx() const { return d_rx; }
99 bool start_streaming(int rxdspno, int samples_per_pkt = 0);
101 bool stop_streaming(int rxdspno);
103 /* convenience methods that ultimately write the dboard pins */
104 bool set_center_freq(double target_freq);
105 bool set_band_select(vrt_band_sel_t band);
106 vrt_band_sel_t get_band_select(void){return d_band_select;}
107 //void set_10dB_atten(bool on);
108 bool set_attenuation0(int attenuation);
109 bool select_rx_antenna(const std::string &ant);
110 bool set_attenuation1(int attenuation);
112 /* convenience methods that ultimately call set_hsadc_conf */
113 void set_adc_gain(bool on);
114 void set_dc_offset_comp(bool on);
115 void set_digital_gain(float gain);
116 void set_test_signal(vrt_test_sig_t type);
119 bool set_setting_reg(int regno, int value);
120 bool set_mem32(int addr, int value); // poke a 32-bit value
121 bool set_lo_freq(double freq);
122 bool set_cal_freq(double freq);
123 bool set_beamforming(int32_t gains[8]);
124 bool set_cal_enb(bool enb);
126 * The first parameter for these is a bitmask which indicates which
127 * daughterboard or daughterboards to apply the operation to.
130 * 0x3 -> dboard 0 and 1...
132 bool set_dboard_pins(int dboard_bitmask, int v);
133 bool set_hsadc_conf(int dboard_bitmask, int regno, int value);
134 bool set_lsdac(int dboard_bitmask, int which_dac, int value);
141 #endif /* INCLUDED_QUADRADIO_H */