summaryrefslogtreecommitdiff
path: root/gr-msdd6000/src/msdd6000_rs.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-msdd6000/src/msdd6000_rs.cc')
-rw-r--r--gr-msdd6000/src/msdd6000_rs.cc286
1 files changed, 0 insertions, 286 deletions
diff --git a/gr-msdd6000/src/msdd6000_rs.cc b/gr-msdd6000/src/msdd6000_rs.cc
deleted file mode 100644
index d78f2b4da..000000000
--- a/gr-msdd6000/src/msdd6000_rs.cc
+++ /dev/null
@@ -1,286 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <msdd6000_rs.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-#define DEBUG(A) printf("=debug=> %s\n", A)
-
-static void
-optimize_socket(int socket);
-
-/*
- * Holds types that need autoconf help. They're here and not in the .h file because
- * here we've got access to config.h
- */
-class MSDD6000_RS::detail {
-public:
- struct sockaddr_in d_sockaddr;
-};
-
-
-MSDD6000_RS::MSDD6000_RS(char* addr)
- : d_detail(new MSDD6000_RS::detail())
-{
- d_sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
-
- optimize_socket(d_sock);
-
-
- // set up remote sockaddr
-// int s = inet_aton(addr, &d_adx);
- d_detail->d_sockaddr.sin_family = AF_INET;
- d_detail->d_sockaddr.sin_port = htons(10000);
- int s = inet_aton(addr, &d_detail->d_sockaddr.sin_addr);
-
- // set up local sockaddr
- struct in_addr d_myadx;
- struct sockaddr_in d_mysockaddr;
- short int port = 10010;
- d_myadx.s_addr = INADDR_ANY;
- d_mysockaddr.sin_family = AF_INET;
- d_mysockaddr.sin_port = htons(port);
- memcpy(&d_mysockaddr.sin_addr.s_addr, &d_myadx.s_addr, sizeof(in_addr));
- //d_sockaddr.sin_addr = INADDR_ANY;
- s = bind(d_sock, (const sockaddr*) &d_mysockaddr, sizeof(d_mysockaddr));
-
- // set default values
- //d_decim = 2;
- d_ddc_gain = 2;
- d_rf_attn = 0;
- d_fc_mhz = 3500;
- d_offset_hz = 0;
- d_ddc_gain = 0;
- d_ddc_sample_rate_khz = 25600;
- d_ddc_bw_khz = 25600;
- d_start = 0;
- d_state = STATE_STOPPED;
-}
-
-MSDD6000_RS::~MSDD6000_RS()
-{
- //printf("MSDD6000_RS::Destructing\n");
- close(d_sock);
-}
-
-
-static void
-optimize_socket(int socket){
-#define BANDWIDTH 1000000000/8
-#define DELAY 0.5
- int ret;
-
- int sock_buf_size = static_cast<int>(2*BANDWIDTH*DELAY);
- char textbuf[512];
- snprintf(textbuf, sizeof(textbuf), "%d", sock_buf_size);
- printf("sock_buf_size = %d\n", sock_buf_size);
-
- ret = setsockopt(socket, SOL_SOCKET, SO_SNDBUF,
- &sock_buf_size, sizeof(sock_buf_size));
-
- ret = setsockopt(socket, SOL_SOCKET, SO_RCVBUF,
- &sock_buf_size, sizeof(sock_buf_size));
-
- int uid = getuid();
- if(uid!=0){
- printf(" ****** COULD NOT OPTIMIZE SYSTEM NETWORK PARAMETERS BECAUSE YOU ARE NOT RUNNING AS ROOT *******\n ****** YOUR MSDD6000_RS RECIEVER PERFORMANCE IS GOING TO BE TERRIBLE *******\n");
- return;
- }
-
-
- // SET UP SOME SYSTEM WIDE TCP SOCKET PARAMETERS
- // FIXME seems like kind of a big hammer. Are you sure you need this?
- FILE* fd = fopen("/proc/sys/net/core/netdev_max_backlog", "w");
- if (fd){
- fwrite("10000", 1, strlen("10000"), fd);
- fclose(fd);
- }
-
- fd = fopen("/proc/sys/net/core/rmem_max", "w");
- if (fd){
- fwrite(textbuf, 1, strlen(textbuf), fd);
- fclose(fd);
- }
-
- fd = fopen("/proc/sys/net/core/wmem_max", "w");
- if (fd){
- fwrite(textbuf, 1, strlen(textbuf), fd);
- fclose(fd);
- }
-
- // just incase these were rejected before because of max sizes...
-
- ret = setsockopt( socket, SOL_SOCKET, SO_SNDBUF,
- (char *)&sock_buf_size, sizeof(sock_buf_size) );
-
- ret = setsockopt( socket, SOL_SOCKET, SO_RCVBUF,
- (char *)&sock_buf_size, sizeof(sock_buf_size) );
-
-}
-
-
-//void MSDD6000_RS::set_decim(int decim_pow2){
-// DEBUG("SETTING NEW DECIM");
-// d_decim = decim_pow2;
-//
-// if(d_state==STATE_STARTED)
-// send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_decim, d_offset_hz);
-//}
-
-void MSDD6000_RS::set_rf_attn(int attn){
- DEBUG("SETTING NEW RF ATTN");
- d_rf_attn = attn;
- if(d_state==STATE_STARTED)
- send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_offset_hz, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
-}
-
-void MSDD6000_RS::set_ddc_gain(int gain){
- DEBUG("SETTING NEW DDC GAIN");
- d_ddc_gain = gain;
- if(d_state==STATE_STARTED)
- send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_offset_hz, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
-}
-
-void MSDD6000_RS::set_fc(int center_mhz, int offset_hz){
- DEBUG("SETTING NEW FC");
- d_fc_mhz = center_mhz;
- d_offset_hz = offset_hz;
-
- send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_offset_hz, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
-// if(d_state==STATE_STARTED)
-// send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_decim, d_offset_hz);
-// send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
-//
-}
-
-void MSDD6000_RS::set_ddc_samp_rate(float sample_rate_khz){
- DEBUG("SETTING NEW SAMPLE RATE");
- d_ddc_sample_rate_khz = sample_rate_khz;
- send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_offset_hz, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
-}
-
-void MSDD6000_RS::set_ddc_bw(float bw_khz){
- DEBUG("SETTING NEW DDC BW");
- d_ddc_bw_khz = bw_khz;
- send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_offset_hz, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
-}
-
-void MSDD6000_RS::start(){
- send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_offset_hz, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
- return;
-}
-
-void MSDD6000_RS::stop(){
- // new request with 0 decim tells it to halt
- stop_data();
-}
-
-
-int MSDD6000_RS::start_data(){
- d_start = 1;
- send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_offset_hz, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
- d_state = STATE_STARTED;
- return 0;
- }
-
-
-int MSDD6000_RS::stop_data(){
- // new request with 0 decim tells it to halt
- d_start = 0;
- send_request(d_fc_mhz, d_rf_attn, d_ddc_gain, d_offset_hz, d_ddc_sample_rate_khz, d_ddc_bw_khz, d_start);
- d_state = STATE_STOPPED;
- return 0;
- }
-
-/* Query functions */
-float MSDD6000_RS::pull_ddc_samp_rate(){
- return d_ddc_sample_rate_khz;
-}
-float MSDD6000_RS::pull_ddc_bw(){
- return d_ddc_bw_khz;
-}
-
-float MSDD6000_RS::pull_rx_freq(){
- return d_fc_mhz;
-}
-int MSDD6000_RS::pull_ddc_gain(){
- return d_ddc_gain;
-}
-
-int MSDD6000_RS::pull_rf_atten(){
- return d_rf_attn;
-}
-
-
-void MSDD6000_RS::send_request(float freq_mhz, float rf_attn, float ddc_gain, float ddc_offset_hz, float ddc_samp_rate_khz, float ddc_input_bw_khz, float ddc_start){
- static char buff[512];
- // Send MSDD6000_RS control frame.
- sprintf(buff, "%f %f %f %f %f %f %f\n",freq_mhz, rf_attn, ddc_gain, ddc_offset_hz, ddc_samp_rate_khz, ddc_input_bw_khz, ddc_start); //ddc_dec, ddc_offset_hz);
- printf("sending: %s\n", buff);
- int flags = 0;
- sendto( d_sock, buff, strlen(buff)+1, flags,
- (const sockaddr*)&(d_detail->d_sockaddr), sizeof(d_detail->d_sockaddr));
- }
-
-
-int MSDD6000_RS::read(char* buf, int size){
- int flags = 0;
- return recv(d_sock, buf, size, flags);
- }
-
-int MSDD6000_RS::parse_control(char* buf, int size){
- //packet_len = sprintf(&txbuff[6], "%f %f %f %f %f %f %f",downsamp,ddc_dec_rate,ddc_step_int,ddc_step_frac,ddc_samp_rate_khz,ddc_input_bw_khz,ddc_start);
-
- float downsamp;
- float ddc_dec_rate;
- float ddc_step_int;
- float ddc_step_frac;
- float ddc_samp_rate_khz;
- float ddc_input_bw_khz;
- float ddc_start;
-
- sscanf(&buf[6],"%f %f %f %f %f %f %f",&downsamp,&ddc_dec_rate,&ddc_step_int,&ddc_step_frac,&ddc_samp_rate_khz,&ddc_input_bw_khz,&ddc_start);
-
- // pull off sample rate
- d_ddc_sample_rate_khz = ddc_samp_rate_khz;
- printf("Sample Rate %f\n",d_ddc_sample_rate_khz);
- // pull off bw
- d_ddc_bw_khz = ddc_input_bw_khz;
- printf("BW %f\n", d_ddc_bw_khz);
- return 0;
-}
-
-