commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r7859 - in gnuradio/branches/developers/n4hy/msddLTS:


From: n4hy
Subject: [Commit-gnuradio] r7859 - in gnuradio/branches/developers/n4hy/msddLTS: . gr-msdd6000 gr-msdd6000/src gr-msdd6000/src/python_test
Date: Thu, 28 Feb 2008 11:11:17 -0700 (MST)

Author: n4hy
Date: 2008-02-28 11:11:17 -0700 (Thu, 28 Feb 2008)
New Revision: 7859

Added:
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/AUTHORS
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile.am
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile.in
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/Makefile.am
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd.i
   
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_buffer_copy_behaviors.h
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_base.cc
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_base.h
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_c.cc
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_c.h
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_s.cc
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_s.h
   gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/
   
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_tcp.py
   
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_udp.py
Modified:
   gnuradio/branches/developers/n4hy/msddLTS/Makefile.common
   gnuradio/branches/developers/n4hy/msddLTS/configure.ac
Log:
beginning to add support for Softronics MSDD 6000 receiver

Modified: gnuradio/branches/developers/n4hy/msddLTS/Makefile.common
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/Makefile.common   2008-02-28 
17:59:19 UTC (rev 7858)
+++ gnuradio/branches/developers/n4hy/msddLTS/Makefile.common   2008-02-28 
18:11:17 UTC (rev 7859)
@@ -80,6 +80,10 @@
 MBLOCK_INCLUDES = @mblock_INCLUDES@
 MBLOCK_LA = @mblock_LA@
 
+# How to link the msdd softtronics library from inside the tree
+MSDD_INCLUDES = @msdd_INCLUDES@
+MSDD_LA = @msdd_LA@
+
 # This used to be set in configure.ac but is now defined here for all 
 # Makefiles when this fragment is included.
 STD_DEFINES_AND_INCLUDES=$(DEFINES) $(OMNITHREAD_INCLUDES) 
$(GNURADIO_INCLUDES) $(BOOST_CFLAGS)

Modified: gnuradio/branches/developers/n4hy/msddLTS/configure.ac
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/configure.ac      2008-02-28 
17:59:19 UTC (rev 7858)
+++ gnuradio/branches/developers/n4hy/msddLTS/configure.ac      2008-02-28 
18:11:17 UTC (rev 7859)
@@ -226,6 +226,7 @@
 GRC_MBLOCK                     dnl this must come after GRC_PMT
 GRC_USRP
 GRC_GR_USRP                    dnl this must come after GRC_USRP
+GRC_GR_MSDD6000
 GRC_GR_AUDIO_ALSA
 GRC_GR_AUDIO_JACK
 GRC_GR_AUDIO_OSS

Added: gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/AUTHORS
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/AUTHORS               
                (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/AUTHORS       
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,3 @@
+n4hy (Bob McGwier)
+Nate Goergen
+

Added: gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile              
                (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile      
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,773 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# gr-msdd6000/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+#
+# Copyright 2004 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 2, 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 GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+
+# -*- Makefile -*-
+#
+# Copyright 2004,2006,2007,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 GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+
+pkgdatadir = $(datadir)/gnuradio
+pkglibdir = $(libdir)/gnuradio
+pkgincludedir = $(includedir)/gnuradio
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+target_triplet = x86_64-unknown-linux-gnu
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/Makefile.common AUTHORS
+subdir = gr-msdd6000
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/acx_pthread.m4 \
+       $(top_srcdir)/config/cppunit.m4 \
+       $(top_srcdir)/config/gr_boost.m4 \
+       $(top_srcdir)/config/gr_check_createfilemapping.m4 \
+       $(top_srcdir)/config/gr_check_shm_open.m4 \
+       $(top_srcdir)/config/gr_doxygen.m4 \
+       $(top_srcdir)/config/gr_fortran.m4 \
+       $(top_srcdir)/config/gr_gprof.m4 \
+       $(top_srcdir)/config/gr_libgnuradio_core_extra_ldflags.m4 \
+       $(top_srcdir)/config/gr_no_undefined.m4 \
+       $(top_srcdir)/config/gr_omnithread.m4 \
+       $(top_srcdir)/config/gr_pwin32.m4 \
+       $(top_srcdir)/config/gr_python.m4 \
+       $(top_srcdir)/config/gr_scripting.m4 \
+       $(top_srcdir)/config/gr_set_md_cpu.m4 \
+       $(top_srcdir)/config/gr_subversion.m4 \
+       $(top_srcdir)/config/gr_swig.m4 \
+       $(top_srcdir)/config/gr_sysv_shm.m4 \
+       $(top_srcdir)/config/gr_x86_64.m4 \
+       $(top_srcdir)/config/grc_build.m4 \
+       $(top_srcdir)/config/grc_gnuradio_core.m4 \
+       $(top_srcdir)/config/grc_gnuradio_examples.m4 \
+       $(top_srcdir)/config/grc_gr-msdd6000.m4 \
+       $(top_srcdir)/config/grc_gr_atsc.m4 \
+       $(top_srcdir)/config/grc_gr_audio_alsa.m4 \
+       $(top_srcdir)/config/grc_gr_audio_jack.m4 \
+       $(top_srcdir)/config/grc_gr_audio_oss.m4 \
+       $(top_srcdir)/config/grc_gr_audio_osx.m4 \
+       $(top_srcdir)/config/grc_gr_audio_portaudio.m4 \
+       $(top_srcdir)/config/grc_gr_audio_windows.m4 \
+       $(top_srcdir)/config/grc_gr_comedi.m4 \
+       $(top_srcdir)/config/grc_gr_cvsd_vocoder.m4 \
+       $(top_srcdir)/config/grc_gr_gpio.m4 \
+       $(top_srcdir)/config/grc_gr_gsm_fr_vocoder.m4 \
+       $(top_srcdir)/config/grc_gr_pager.m4 \
+       $(top_srcdir)/config/grc_gr_radar_mono.m4 \
+       $(top_srcdir)/config/grc_gr_radio_astronomy.m4 \
+       $(top_srcdir)/config/grc_gr_sounder.m4 \
+       $(top_srcdir)/config/grc_gr_trellis.m4 \
+       $(top_srcdir)/config/grc_gr_usrp.m4 \
+       $(top_srcdir)/config/grc_gr_utils.m4 \
+       $(top_srcdir)/config/grc_gr_video_sdl.m4 \
+       $(top_srcdir)/config/grc_gr_wxgui.m4 \
+       $(top_srcdir)/config/grc_mblock.m4 \
+       $(top_srcdir)/config/grc_omnithread.m4 \
+       $(top_srcdir)/config/grc_pmt.m4 \
+       $(top_srcdir)/config/grc_usrp.m4 $(top_srcdir)/config/lf_cc.m4 \
+       $(top_srcdir)/config/lf_cxx.m4 \
+       $(top_srcdir)/config/lf_warnings.m4 \
+       $(top_srcdir)/config/macosx_audiounit.m4 \
+       $(top_srcdir)/config/mkstemp.m4 \
+       $(top_srcdir)/config/onceonly.m4 $(top_srcdir)/config/pkg.m4 \
+       $(top_srcdir)/config/sdl.m4 \
+       $(top_srcdir)/config/usrp_fusb_tech.m4 \
+       $(top_srcdir)/config/usrp_libusb.m4 \
+       $(top_srcdir)/config/usrp_sdcc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/n4hy/gnuradio/msddLTS/missing --run aclocal-1.10
+ALLOCA = 
+ALSA_CFLAGS = -I/usr/include/alsa  
+ALSA_LIBS = -lasound -lm -ldl -lpthread  
+AMTAR = ${SHELL} /home/n4hy/gnuradio/msddLTS/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/n4hy/gnuradio/msddLTS/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/n4hy/gnuradio/msddLTS/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/n4hy/gnuradio/msddLTS/missing --run automake-1.10
+AWK = gawk
+BOOST_CFLAGS = 
+CC = gcc
+CCAS = gcc
+CCASDEPMODE = depmode=gcc3
+CCASFLAGS = -g -O2 -Wall
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2 -Wall -pthread
+COMEDI_CFLAGS = 
+COMEDI_LIBS = 
+CPP = gcc -E
+CPPFLAGS = 
+CPPUNIT_CFLAGS =  
+CPPUNIT_CONFIG = 
+CPPUNIT_INCLUDES =  
+CPPUNIT_LIBS = -lcppunit -ldl  
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =  -Wall -Woverloaded-virtual -pthread
+CXX_FOR_BUILD = g++
+CYGPATH_W = echo
+DEFINES =  -DOMNITHREAD_POSIX=1
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = dlltool
+DOT = 
+DOXYGEN = 
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = g77
+FFLAGS = -g -O2
+FFTW3F_CFLAGS = -I/usr/local/include  
+FFTW3F_LIBS = -L/usr/local/lib -lfftw3f -lm  
+FLIBS = 
+FUSB_TECH = linux
+GNURADIO_CORE_CFLAGS = 
+GNURADIO_CORE_LIBS = 
+GREP = /bin/grep
+GR_WXGUI_CFLAGS = 
+GR_WXGUI_LIBS = 
+GUILE = /usr/bin/guile
+HAVE_DOT = YES
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+IPC_LIBS = 
+JACK_CFLAGS =  
+JACK_LIBS = -L/usr/lib64 -ljack -lpthread -lrt  
+LDFLAGS = 
+LIBGNURADIO_CORE_EXTRA_LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAKEINFO = ${SHELL} /home/n4hy/gnuradio/msddLTS/missing --run makeinfo
+MBLOCK_CFLAGS = 
+MBLOCK_LIBS = 
+MD_CPU = x86
+MD_SUBCPU = x86_64
+MKDIR_P = /bin/mkdir -p
+NO_UNDEFINED = 
+OBJDUMP = objdump
+OBJEXT = o
+OMNITHREAD_CFLAGS = 
+OMNITHREAD_LIBS = 
+OSS_LIBS = 
+PACKAGE = gnuradio
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PMT_CFLAGS = 
+PMT_LIBS = 
+PORTAUDIO_CFLAGS = -pthread -I/usr/local/include  
+PORTAUDIO_LIBS = -L/usr/local/lib -lportaudio -lm -lpthread  
+PTHREAD_CC = gcc
+PTHREAD_CFLAGS = -pthread
+PTHREAD_LIBS =  -lrt 
+PYTHON = /usr/bin/python
+PYTHON_CPPFLAGS = -I/usr/include/python2.5
+PYTHON_EXEC_PREFIX = ${exec_prefix}
+PYTHON_LDFLAGS = 
+PYTHON_PLATFORM = linux2
+PYTHON_PREFIX = ${prefix}
+PYTHON_VERSION = 2.5
+RANLIB = ranlib
+RM_PROG = /bin/rm
+SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
+SDL_CONFIG = /usr/bin/sdl-config
+SDL_LIBS = -L/usr/lib -lSDL
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+SHM_OPEN_LIBS = -lrt 
+STRIP = strip
+SVN = /usr/bin/svn
+SVNDATE = 2008-02-27 16:17:34 -0500
+SVNVERSION = 7857
+SWIG = /usr/bin/swig -c++
+SWIG_PYTHON_CPPFLAGS = -I/usr/include/python2.5
+SWIG_PYTHON_LIB = -lswigpy
+SWIG_PYTHON_OPT = -python
+USB_LIBS = -lusb 
+USRP_CFLAGS = 
+USRP_INBAND_CFLAGS = 
+USRP_INBAND_LIBS = 
+USRP_LIBS = 
+VERSION = 3.1svn
+WINAUDIO_LIBS = 
+XAS = asx8051 -plosgff
+XCC = sdcc -mmcs51 --no-xinit-opt
+XMLTO = yes
+abs_builddir = /home/n4hy/gnuradio/msddLTS/gr-msdd6000
+abs_srcdir = /home/n4hy/gnuradio/msddLTS/gr-msdd6000
+abs_top_builddir = /home/n4hy/gnuradio/msddLTS
+abs_top_srcdir = /home/n4hy/gnuradio/msddLTS
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = g77
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+autoconf_default_CXXFLAGS = -g -O2
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_dirs = config omnithread gnuradio-core pmt mblock usrp gr-usrp 
gr-msdd6000 gr-audio-alsa gr-audio-jack gr-audio-oss gr-audio-portaudio gr-atsc 
gr-cvsd-vocoder gr-gpio gr-gsm-fr-vocoder gr-pager gr-radar-mono 
gr-radio-astronomy gr-trellis gr-video-sdl gr-wxgui gr-sounder gr-utils 
gnuradio-examples
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+enable_dot = no
+enable_html_docs = yes
+enable_latex_docs = no
+exec_prefix = ${prefix}
+generate_docs = 
+gnuradio_core_I = ${abs_top_srcdir}/gnuradio-core/src/lib/swig/gnuradio.i
+gnuradio_core_INCLUDES = -I${abs_top_srcdir}/gnuradio-core/src/lib/runtime     
            -I${abs_top_srcdir}/gnuradio-core/src/lib/general               
-I${abs_top_builddir}/gnuradio-core/src/lib/general                     
-I${abs_top_srcdir}/gnuradio-core/src/lib/gengen                
-I${abs_top_builddir}/gnuradio-core/src/lib/gengen              
-I${abs_top_srcdir}/gnuradio-core/src/lib/filter                
-I${abs_top_builddir}/gnuradio-core/src/lib/filter              
-I${abs_top_srcdir}/gnuradio-core/src/lib/reed-solomon                  
-I${abs_top_srcdir}/gnuradio-core/src/lib/io                    
-I${abs_top_srcdir}/gnuradio-core/src/lib/g72x                  
-I${abs_top_srcdir}/gnuradio-core/src/lib/swig                  
-I${abs_top_builddir}/gnuradio-core/src/lib/swig                $(FFTW3F_CFLAGS)
+gnuradio_core_LA = 
${abs_top_builddir}/gnuradio-core/src/lib/libgnuradio-core.la
+gnuradio_core_LIBDIRPATH = 
${abs_top_builddir}/gnuradio-core/src/lib:${abs_top_builddir}/gnuradio-core/src/lib/.libs
+gnuradio_core_PYDIRPATH = ${abs_top_srcdir}/gnuradio-core/src/python
+gnuradio_core_SWIGDIRPATH = 
${abs_top_builddir}/gnuradio-core/src/lib/swig:${abs_top_builddir}/gnuradio-core/src/lib/swig/.libs:${abs_top_srcdir}/gnuradio-core/src/lib/swig
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /home/n4hy/gnuradio/msddLTS/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mblock_INCLUDES = -I${abs_top_srcdir}/mblock/src/lib
+mblock_LA = ${abs_top_builddir}/mblock/src/lib/libmblock.la
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+omnithread_INCLUDES = -I${abs_top_srcdir}/omnithread
+omnithread_LA = ${abs_top_builddir}/omnithread/libgromnithread.la
+omnithread_LIBDIRPATH = 
${abs_top_builddir}/omnithread:${abs_top_builddir}/omnithread/.libs
+pdfdir = ${docdir}
+pkgpyexecdir = ${pyexecdir}/gnuradio
+pkgpythondir = ${pythondir}/gnuradio
+pmt_INCLUDES = -I${abs_top_srcdir}/pmt/src/lib
+pmt_LA = ${abs_top_builddir}/pmt/src/lib/libpmt.la
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pyexecdir = ${exec_prefix}/lib/python2.5/site-packages
+pythondir = ${prefix}/lib/python2.5/site-packages
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+skipped_dirs =  gr-audio-osx gr-audio-windows gr-comedi
+srcdir = .
+swig_CXXFLAGS = -g -O1
+sysconfdir = ${prefix}/etc
+target = x86_64-unknown-linux-gnu
+target_alias = 
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = unknown
+top_builddir = ..
+top_srcdir = ..
+usrp_INCLUDES = -I${abs_top_srcdir}/usrp/host/lib/legacy               
-I${abs_top_srcdir}/usrp/firmware/include
+usrp_LA = ${abs_top_builddir}/usrp/host/lib/legacy/libusrp.la
+usrp_darwin_omnithread_pc_la = 
+usrp_darwin_omnithread_pc_requires = 
+usrp_inband_INCLUDES = -I${abs_top_srcdir}/usrp/host/lib/inband
+usrp_inband_LA = ${abs_top_builddir}/usrp/host/lib/inband/libusrp_inband.la
+with_INCLUDES = 
+with_LIBDIRPATH = 
+with_PYDIRPATH = 
+with_SWIGDIRPATH = 
+with_SWIG_INCLUDES = 
+with_dirs = 
+AM_CXXFLAGS = -g -O2
+
+# includes
+grincludedir = $(includedir)/gnuradio
+
+# swig includes
+swigincludedir = $(grincludedir)/swig
+
+# Install the gnuradio stuff in the appropriate subdirectory
+# This usually ends up at:
+#   ${prefix}/lib/python${python_version}/site-packages/gnuradio
+grpythondir = $(pythondir)/gnuradio
+grpyexecdir = $(pyexecdir)/gnuradio
+
+# Install the non-gnuradio usrp stuff in the appropriate subdirectory
+# This usually ends up at:
+#   ${prefix}/lib/python${python_version}/site-packages/usrpm
+usrppythondir = $(pythondir)/usrpm
+usrppyexecdir = $(pyexecdir)/usrpm
+
+# when including for compilation from pre-installed libraries and such,
+# need to make sure those are put last on the compile command
+WITH_INCLUDES = 
+WITH_SWIG_INCLUDES = 
+
+# swig flags
+SWIGPYTHONFLAGS = -fvirtual -python -modern
+
+# How to link in the top-level omnithreads library from inside the tree
+OMNITHREAD_INCLUDES = -I${abs_top_srcdir}/omnithread
+OMNITHREAD_LA = ${abs_top_builddir}/omnithread/libgromnithread.la
+
+# Where to find gnuradio include files in the current build tree
+# top_srcdir for original stuff, top_builddir for generated files
+GNURADIO_INCLUDES = -I${abs_top_srcdir}/gnuradio-core/src/lib/runtime          
    -I${abs_top_srcdir}/gnuradio-core/src/lib/general               
-I${abs_top_builddir}/gnuradio-core/src/lib/general                     
-I${abs_top_srcdir}/gnuradio-core/src/lib/gengen                
-I${abs_top_builddir}/gnuradio-core/src/lib/gengen              
-I${abs_top_srcdir}/gnuradio-core/src/lib/filter                
-I${abs_top_builddir}/gnuradio-core/src/lib/filter              
-I${abs_top_srcdir}/gnuradio-core/src/lib/reed-solomon                  
-I${abs_top_srcdir}/gnuradio-core/src/lib/io                    
-I${abs_top_srcdir}/gnuradio-core/src/lib/g72x                  
-I${abs_top_srcdir}/gnuradio-core/src/lib/swig                  
-I${abs_top_builddir}/gnuradio-core/src/lib/swig                $(FFTW3F_CFLAGS)
+
+# How to link in GNU Radio core library from inside the tree
+GNURADIO_CORE_LA = 
${abs_top_builddir}/gnuradio-core/src/lib/libgnuradio-core.la
+
+# This is a dependency for many swig operations
+GNURADIO_I = ${abs_top_srcdir}/gnuradio-core/src/lib/swig/gnuradio.i
+
+# How to link in the USRP library from inside the tree
+USRP_INCLUDES = -I${abs_top_srcdir}/usrp/host/lib/legacy               
-I${abs_top_srcdir}/usrp/firmware/include
+USRP_LA = ${abs_top_builddir}/usrp/host/lib/legacy/libusrp.la
+
+# How to link in usrp-inband library from inside the tree
+USRP_INBAND_INCLUDES = -I${abs_top_srcdir}/usrp/host/lib/inband
+USRP_INBAND_LA = ${abs_top_builddir}/usrp/host/lib/inband/libusrp_inband.la
+
+# How to link the PMT library from inside the tree
+PMT_INCLUDES = -I${abs_top_srcdir}/pmt/src/lib
+PMT_LA = ${abs_top_builddir}/pmt/src/lib/libpmt.la
+
+# How to link the mblock library from inside the tree
+MBLOCK_INCLUDES = -I${abs_top_srcdir}/mblock/src/lib
+MBLOCK_LA = ${abs_top_builddir}/mblock/src/lib/libmblock.la
+
+# How to link the msdd softtronics library from inside the tree
+MSDD_INCLUDES = @msdd_INCLUDES@
+MSDD_LA = @msdd_LA@
+
+# This used to be set in configure.ac but is now defined here for all 
+# Makefiles when this fragment is included.
+STD_DEFINES_AND_INCLUDES = $(DEFINES) $(OMNITHREAD_INCLUDES) 
$(GNURADIO_INCLUDES) $(BOOST_CFLAGS)
+
+# Fix for BSD make not defining $(RM).  We define it now in configure.ac
+# using AM_PATH_PROG, but now here have to add a -f to be like GNU make
+RM = $(RM_PROG) -f
+RUN_GUILE = 
GUILE_LOAD_PATH="/home/n4hy/gnuradio/msddLTS/pmt/src/scheme:/home/n4hy/gnuradio/msddLTS/mblock/src/scheme"
 /usr/bin/guile -e main -s
+COMPILE_MBH = $(RUN_GUILE) 
$(top_srcdir)/mblock/src/scheme/gnuradio/compile-mbh.scm
+
+# Base directory for example applications
+exampledir = $(datadir)/gnuradio/examples
+SUBDIRS = src 
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/Makefile.common 
$(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gr-msdd6000/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  gr-msdd6000/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ 
$(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ 
$(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure 
$(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); 
\
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) 
ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+           distdir=`$(am__cd) $(distdir) && pwd`; \
+           top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$top_distdir" \
+               distdir="$$distdir/$$subdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+       install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       ctags ctags-recursive distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile.am
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile.am           
                (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile.am   
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,25 @@
+#
+# Copyright 2004 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 2, 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 GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+
+include $(top_srcdir)/Makefile.common
+
+
+SUBDIRS = src 

Added: gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile.in
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile.in           
                (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/Makefile.in   
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,773 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
address@hidden@
+
+#
+# Copyright 2004 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 2, 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 GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+
+# -*- Makefile -*-
+#
+# Copyright 2004,2006,2007,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 GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/Makefile.common AUTHORS
+subdir = gr-msdd6000
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/acx_pthread.m4 \
+       $(top_srcdir)/config/cppunit.m4 \
+       $(top_srcdir)/config/gr_boost.m4 \
+       $(top_srcdir)/config/gr_check_createfilemapping.m4 \
+       $(top_srcdir)/config/gr_check_shm_open.m4 \
+       $(top_srcdir)/config/gr_doxygen.m4 \
+       $(top_srcdir)/config/gr_fortran.m4 \
+       $(top_srcdir)/config/gr_gprof.m4 \
+       $(top_srcdir)/config/gr_libgnuradio_core_extra_ldflags.m4 \
+       $(top_srcdir)/config/gr_no_undefined.m4 \
+       $(top_srcdir)/config/gr_omnithread.m4 \
+       $(top_srcdir)/config/gr_pwin32.m4 \
+       $(top_srcdir)/config/gr_python.m4 \
+       $(top_srcdir)/config/gr_scripting.m4 \
+       $(top_srcdir)/config/gr_set_md_cpu.m4 \
+       $(top_srcdir)/config/gr_subversion.m4 \
+       $(top_srcdir)/config/gr_swig.m4 \
+       $(top_srcdir)/config/gr_sysv_shm.m4 \
+       $(top_srcdir)/config/gr_x86_64.m4 \
+       $(top_srcdir)/config/grc_build.m4 \
+       $(top_srcdir)/config/grc_gnuradio_core.m4 \
+       $(top_srcdir)/config/grc_gnuradio_examples.m4 \
+       $(top_srcdir)/config/grc_gr-msdd6000.m4 \
+       $(top_srcdir)/config/grc_gr_atsc.m4 \
+       $(top_srcdir)/config/grc_gr_audio_alsa.m4 \
+       $(top_srcdir)/config/grc_gr_audio_jack.m4 \
+       $(top_srcdir)/config/grc_gr_audio_oss.m4 \
+       $(top_srcdir)/config/grc_gr_audio_osx.m4 \
+       $(top_srcdir)/config/grc_gr_audio_portaudio.m4 \
+       $(top_srcdir)/config/grc_gr_audio_windows.m4 \
+       $(top_srcdir)/config/grc_gr_comedi.m4 \
+       $(top_srcdir)/config/grc_gr_cvsd_vocoder.m4 \
+       $(top_srcdir)/config/grc_gr_gpio.m4 \
+       $(top_srcdir)/config/grc_gr_gsm_fr_vocoder.m4 \
+       $(top_srcdir)/config/grc_gr_pager.m4 \
+       $(top_srcdir)/config/grc_gr_radar_mono.m4 \
+       $(top_srcdir)/config/grc_gr_radio_astronomy.m4 \
+       $(top_srcdir)/config/grc_gr_sounder.m4 \
+       $(top_srcdir)/config/grc_gr_trellis.m4 \
+       $(top_srcdir)/config/grc_gr_usrp.m4 \
+       $(top_srcdir)/config/grc_gr_utils.m4 \
+       $(top_srcdir)/config/grc_gr_video_sdl.m4 \
+       $(top_srcdir)/config/grc_gr_wxgui.m4 \
+       $(top_srcdir)/config/grc_mblock.m4 \
+       $(top_srcdir)/config/grc_omnithread.m4 \
+       $(top_srcdir)/config/grc_pmt.m4 \
+       $(top_srcdir)/config/grc_usrp.m4 $(top_srcdir)/config/lf_cc.m4 \
+       $(top_srcdir)/config/lf_cxx.m4 \
+       $(top_srcdir)/config/lf_warnings.m4 \
+       $(top_srcdir)/config/macosx_audiounit.m4 \
+       $(top_srcdir)/config/mkstemp.m4 \
+       $(top_srcdir)/config/onceonly.m4 $(top_srcdir)/config/pkg.m4 \
+       $(top_srcdir)/config/sdl.m4 \
+       $(top_srcdir)/config/usrp_fusb_tech.m4 \
+       $(top_srcdir)/config/usrp_libusb.m4 \
+       $(top_srcdir)/config/usrp_sdcc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALSA_CFLAGS = @ALSA_CFLAGS@
+ALSA_LIBS = @ALSA_LIBS@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CFLAGS = @BOOST_CFLAGS@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMEDI_CFLAGS = @COMEDI_CFLAGS@
+COMEDI_LIBS = @COMEDI_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_INCLUDES = @CPPUNIT_INCLUDES@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXX_FOR_BUILD = @CXX_FOR_BUILD@
+CYGPATH_W = @CYGPATH_W@
+DEFINES = @DEFINES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FFTW3F_CFLAGS = @FFTW3F_CFLAGS@
+FFTW3F_LIBS = @FFTW3F_LIBS@
+FLIBS = @FLIBS@
+FUSB_TECH = @FUSB_TECH@
+GNURADIO_CORE_CFLAGS = @GNURADIO_CORE_CFLAGS@
+GNURADIO_CORE_LIBS = @GNURADIO_CORE_LIBS@
+GREP = @GREP@
+GR_WXGUI_CFLAGS = @GR_WXGUI_CFLAGS@
+GR_WXGUI_LIBS = @GR_WXGUI_LIBS@
+GUILE = @GUILE@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IPC_LIBS = @IPC_LIBS@
+JACK_CFLAGS = @JACK_CFLAGS@
+JACK_LIBS = @JACK_LIBS@
+LDFLAGS = @LDFLAGS@
+LIBGNURADIO_CORE_EXTRA_LDFLAGS = @LIBGNURADIO_CORE_EXTRA_LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MBLOCK_CFLAGS = @MBLOCK_CFLAGS@
+MBLOCK_LIBS = @MBLOCK_LIBS@
+MD_CPU = @MD_CPU@
+MD_SUBCPU = @MD_SUBCPU@
+MKDIR_P = @MKDIR_P@
+NO_UNDEFINED = @NO_UNDEFINED@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OMNITHREAD_CFLAGS = @OMNITHREAD_CFLAGS@
+OMNITHREAD_LIBS = @OMNITHREAD_LIBS@
+OSS_LIBS = @OSS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PMT_CFLAGS = @PMT_CFLAGS@
+PMT_LIBS = @PMT_LIBS@
+PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@
+PORTAUDIO_LIBS = @PORTAUDIO_LIBS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+RM_PROG = @RM_PROG@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_CONFIG = @SDL_CONFIG@
+SDL_LIBS = @SDL_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SHM_OPEN_LIBS = @SHM_OPEN_LIBS@
+STRIP = @STRIP@
+SVN = @SVN@
+SVNDATE = @SVNDATE@
+SVNVERSION = @SVNVERSION@
+SWIG = @SWIG@
+SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@
+SWIG_PYTHON_LIB = @SWIG_PYTHON_LIB@
+SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@
+USB_LIBS = @USB_LIBS@
+USRP_CFLAGS = @USRP_CFLAGS@
+USRP_INBAND_CFLAGS = @USRP_INBAND_CFLAGS@
+USRP_INBAND_LIBS = @USRP_INBAND_LIBS@
+USRP_LIBS = @USRP_LIBS@
+VERSION = @VERSION@
+WINAUDIO_LIBS = @WINAUDIO_LIBS@
+XAS = @XAS@
+XCC = @XCC@
+XMLTO = @XMLTO@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+autoconf_default_CXXFLAGS = @autoconf_default_CXXFLAGS@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_dirs = @build_dirs@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+generate_docs = @generate_docs@
+gnuradio_core_I = @gnuradio_core_I@
+gnuradio_core_INCLUDES = @gnuradio_core_INCLUDES@
+gnuradio_core_LA = @gnuradio_core_LA@
+gnuradio_core_LIBDIRPATH = @gnuradio_core_LIBDIRPATH@
+gnuradio_core_PYDIRPATH = @gnuradio_core_PYDIRPATH@
+gnuradio_core_SWIGDIRPATH = @gnuradio_core_SWIGDIRPATH@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mblock_INCLUDES = @mblock_INCLUDES@
+mblock_LA = @mblock_LA@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+omnithread_INCLUDES = @omnithread_INCLUDES@
+omnithread_LA = @omnithread_LA@
+omnithread_LIBDIRPATH = @omnithread_LIBDIRPATH@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+pmt_INCLUDES = @pmt_INCLUDES@
+pmt_LA = @pmt_LA@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+skipped_dirs = @skipped_dirs@
+srcdir = @srcdir@
+swig_CXXFLAGS = @swig_CXXFLAGS@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+usrp_INCLUDES = @usrp_INCLUDES@
+usrp_LA = @usrp_LA@
+usrp_darwin_omnithread_pc_la = @usrp_darwin_omnithread_pc_la@
+usrp_darwin_omnithread_pc_requires = @usrp_darwin_omnithread_pc_requires@
+usrp_inband_INCLUDES = @usrp_inband_INCLUDES@
+usrp_inband_LA = @usrp_inband_LA@
+with_INCLUDES = @with_INCLUDES@
+with_LIBDIRPATH = @with_LIBDIRPATH@
+with_PYDIRPATH = @with_PYDIRPATH@
+with_SWIGDIRPATH = @with_SWIGDIRPATH@
+with_SWIG_INCLUDES = @with_SWIG_INCLUDES@
+with_dirs = @with_dirs@
+AM_CXXFLAGS = @autoconf_default_CXXFLAGS@
+
+# includes
+grincludedir = $(includedir)/gnuradio
+
+# swig includes
+swigincludedir = $(grincludedir)/swig
+
+# Install the gnuradio stuff in the appropriate subdirectory
+# This usually ends up at:
+#   ${prefix}/lib/python${python_version}/site-packages/gnuradio
+grpythondir = $(pythondir)/gnuradio
+grpyexecdir = $(pyexecdir)/gnuradio
+
+# Install the non-gnuradio usrp stuff in the appropriate subdirectory
+# This usually ends up at:
+#   ${prefix}/lib/python${python_version}/site-packages/usrpm
+usrppythondir = $(pythondir)/usrpm
+usrppyexecdir = $(pyexecdir)/usrpm
+
+# when including for compilation from pre-installed libraries and such,
+# need to make sure those are put last on the compile command
+WITH_INCLUDES = @with_INCLUDES@
+WITH_SWIG_INCLUDES = @with_SWIG_INCLUDES@
+
+# swig flags
+SWIGPYTHONFLAGS = -fvirtual -python -modern
+
+# How to link in the top-level omnithreads library from inside the tree
+OMNITHREAD_INCLUDES = @omnithread_INCLUDES@
+OMNITHREAD_LA = @omnithread_LA@
+
+# Where to find gnuradio include files in the current build tree
+# top_srcdir for original stuff, top_builddir for generated files
+GNURADIO_INCLUDES = @gnuradio_core_INCLUDES@
+
+# How to link in GNU Radio core library from inside the tree
+GNURADIO_CORE_LA = @gnuradio_core_LA@
+
+# This is a dependency for many swig operations
+GNURADIO_I = @gnuradio_core_I@
+
+# How to link in the USRP library from inside the tree
+USRP_INCLUDES = @usrp_INCLUDES@
+USRP_LA = @usrp_LA@
+
+# How to link in usrp-inband library from inside the tree
+USRP_INBAND_INCLUDES = @usrp_inband_INCLUDES@
+USRP_INBAND_LA = @usrp_inband_LA@
+
+# How to link the PMT library from inside the tree
+PMT_INCLUDES = @pmt_INCLUDES@
+PMT_LA = @pmt_LA@
+
+# How to link the mblock library from inside the tree
+MBLOCK_INCLUDES = @mblock_INCLUDES@
+MBLOCK_LA = @mblock_LA@
+
+# How to link the msdd softtronics library from inside the tree
+MSDD_INCLUDES = @msdd_INCLUDES@
+MSDD_LA = @msdd_LA@
+
+# This used to be set in configure.ac but is now defined here for all 
+# Makefiles when this fragment is included.
+STD_DEFINES_AND_INCLUDES = $(DEFINES) $(OMNITHREAD_INCLUDES) 
$(GNURADIO_INCLUDES) $(BOOST_CFLAGS)
+
+# Fix for BSD make not defining $(RM).  We define it now in configure.ac
+# using AM_PATH_PROG, but now here have to add a -f to be like GNU make
+RM = $(RM_PROG) -f
+RUN_GUILE = 
GUILE_LOAD_PATH="@abs_top_srcdir@/pmt/src/scheme:@abs_top_srcdir@/mblock/src/scheme"
 @GUILE@ -e main -s
+COMPILE_MBH = $(RUN_GUILE) 
$(top_srcdir)/mblock/src/scheme/gnuradio/compile-mbh.scm
+
+# Base directory for example applications
+exampledir = $(datadir)/gnuradio/examples
+SUBDIRS = src 
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/Makefile.common 
$(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  gr-msdd6000/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  gr-msdd6000/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ 
$(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ 
$(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure 
$(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); 
\
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) 
ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+           distdir=`$(am__cd) $(distdir) && pwd`; \
+           top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$top_distdir" \
+               distdir="$$distdir/$$subdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+       install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       ctags ctags-recursive distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/Makefile.am
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/Makefile.am       
                        (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/Makefile.am       
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,106 @@
+#
+# Copyright 2004,2005,2006 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 2, 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 GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+CCFLAGS = -g
+include $(top_srcdir)/Makefile.common
+
+# Install this stuff so that it ends up as the gnuradio.howto module
+# This usually ends up at:
+#   ${prefix}/lib/python${python_version}/site-packages/gnuradio
+
+ourlib_LTLIBRARIES = _msdd.la
+ourpythondir = $(grpythondir)
+ourlibdir    = $(grpyexecdir)
+
+INCLUDES = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS)
+
+SWIGPYTHONARGS = $(SWIGPYTHONFLAGS) $(SWIGGRFLAGS)
+
+AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES)  \
+          $(PYTHON_CPPFLAGS)           \
+          $(WITH_INCLUDES)
+
+
+NON_LOCAL_IFILES = $(GNURADIO_I)
+
+
+
+LOCAL_IFILES =                                 \
+       msdd.i                          
+
+
+ALL_IFILES =                           \
+       $(LOCAL_IFILES)                 \
+       $(NON_LOCAL_IFILES)             
+       
+# These files are built by SWIG.  The first is the C++ glue.
+# The second is the python wrapper that loads the _howto shared library
+# and knows how to call our extensions.
+
+BUILT_SOURCES =                        \
+       msdd.cc                 \
+       msdd.py                         
+
+# This gets howto.py installed in the right place
+ourpython_PYTHON =                     \
+       msdd.py
+
+ourlib_LTLIBRARIES = _msdd.la
+
+# These are the source files that go into the shared library
+_msdd_la_SOURCES =                     \
+       msdd.cc                 \
+       msdd_source_base.cc     \
+       msdd_source_c.cc        \
+       msdd_source_s.cc        
+
+# magic flag
+_msdd_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version 
+#-lfftw3 -lfftw3f -lfann 
+
+# link the library against some comon swig runtime code and the 
+# c++ standard library
+_msdd_la_LIBADD =                      \
+       $(PYTHON_LDFLAGS)               \
+       -lstdc++
+# -L/usr/lib/libfftw3f.so.3.1.2
+
+msdd.cc msdd.py: $(LOCAL_IFILES) $(ALL_IFILES)
+       $(SWIG) $(SWIGPYTHONARGS) -module msdd -o msdd.cc $(LOCAL_IFILES)
+
+# These headers get installed in ${prefix}/include/gnuradio
+grinclude_HEADERS =                    \
+       msdd_source_base.h              \
+       msdd_source_c.h                 \
+       msdd_source_s.h                 
+
+
+
+# These swig headers get installed in ${prefix}/include/gnuradio/swig
+swiginclude_HEADERS =                  \
+       $(LOCAL_IFILES)
+
+
+MOSTLYCLEANFILES = $(BUILT_SOURCES) *.pyc
+
+# Don't distribute output of swig
+dist-hook:
+       @for file in $(BUILT_SOURCES); do echo $(RM) $(distdir)/$$file; done
+       @for file in $(BUILT_SOURCES); do $(RM) $(distdir)/$$file; done

Added: gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd.i
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd.i            
                (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd.i    
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,256 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+%feature("autodoc", "1");              // generate python docstrings
+
+%include "exception.i"
+%import "gnuradio.i"                           // the common stuff
+
+%{
+
+#include "gnuradio_swig_bug_workaround.h"      // mandatory bug fix
+#include "msdd_source_s.h"
+#include "msdd_source_c.h"
+#include <stdexcept>
+%}
+
+// ================================================================
+//                        abstract classes
+// ================================================================
+
+// ----------------------------------------------------------------
+
+class msdd_source_base : public gr_sync_block {
+
+ protected:
+  msdd_source_base (const std::string &name,
+      gr_io_signature_sptr output_signature,
+      int which_board,
+      msdd_source_base::msdd_command_type_t opp_mode,
+      const char *src, 
+      unsigned short port_src
+         ) throw (std::runtime_error);
+
+  /*!
+   * \brief return number of msdd input bytes required to produce noutput 
items.
+   */
+  int ninput_bytes_reqd_for_noutput_items (int noutput_items) = 0;
+
+  /*!
+   * \brief number of bytes in a low-level sample
+   */
+  unsigned int sizeof_basic_sample() const;
+
+  /*!
+   * \brief convert between native msdd format and output item format
+   *
+   * \param output_items[out]   stream(s) of output items
+   * \param output_index[in]    starting index in output_items
+   * \param output_items_available[in]  number of empty items available at 
item[index]
+   * \param output_items_produced[out]  number of items produced by copy
+   * \param msdd_buffer[in]   source buffer
+   * \param msdd_buffer_length[in]  number of bytes available in \p msdd_buffer
+   * \param bytes_read[out]   number of bytes read from \p msdd_buffer
+   *
+   * The copy must consume all bytes available.  That is, \p bytes_read must 
equal
+   * \p msdd_buffer_length.
+   */
+  virtual void copy_from_msdd_buffer (gr_vector_void_star &output_items,
+              int output_index,
+              int output_items_available,
+              int &output_items_produced,
+              const void *msdd_buffer,
+              int msdd_buffer_length,
+              int &bytes_read) = 0;
+  
+  int readsock(int sockfd, unsigned char* buf, int nbytes);
+
+  
+  void* make_request_packet(unsigned int& size, unsigned int number_samples);
+  
+ public:
+  //! magic value used on alternate register read interfaces
+  static const int READ_FAILED = -99999;
+
+  ~msdd_source_base ();
+
+  int work (int noutput_items,
+      gr_vector_const_void_star &input_items,
+      gr_vector_void_star &output_items);
+
+  bool start();
+  bool stop();
+
+  /*!
+   * \brief Set Programmable Gain Amplifier (PGA)
+   *
+   * \param which      which D/A [0,3]
+   * \param gain_in_db gain value (linear in dB)
+   *
+   * gain is rounded to closest setting supported by hardware.
+   * Note that DAC 0 and DAC 1 share a gain setting as do DAC 2 and DAC 3.
+   * Setting DAC 0 affects DAC 1 and vice versa.  Same with DAC 2 and DAC 3.
+   *
+   * \returns true iff sucessful.
+   *
+   * \sa pga_min(), pga_max(), pga_db_per_step()
+   */
+  bool set_pga (int which, double gain_in_db);
+
+  /*!
+   * \brief Return programmable gain amplifier gain in dB.
+   *
+   * \param which      which D/A [0,3]
+   */
+  double pga (int which) const;
+
+  /*!
+   * \brief Return minimum legal PGA gain in dB.
+   */
+  double pga_min () const;
+
+  /*!
+   * \brief Return maximum legal PGA gain in dB.
+   */
+  double pga_max () const;
+
+  /*!
+   * \brief Return hardware step size of PGA (linear in dB).
+   */
+  double pga_db_per_step () const;
+
+  /*!
+   * \brief open a socket specified by the port and ip address info
+   *
+   * Opens a socket, binds to the address, and waits for a connection
+   * over UDP. If any of these fail, the fuction retuns the error and exits.
+   */
+  bool open();
+
+  /*!
+   * \brief Close current socket.
+   *
+   * Shuts down read/write on the socket
+   */
+  bool close();
+  
+  /*!
+   * \brief Set decimator rate.  \p rate must be EVEN and in [8, 256].
+   *
+   * The final complex sample rate across the USB is
+   *   adc_freq () / decim_rate ()
+   */
+  bool set_decim_rate (unsigned int rate);
+
+  /*!
+   * \brief set the center frequency of the digital down converter.
+   *
+   * \p channel must be 0.  \p freq is the center frequency in Hz.
+   * It must be in the range [-FIXME, FIXME].  The frequency specified is
+   * quantized.  Use rx_freq to retrieve the actual value used.
+   */
+  bool set_rx_freq (int channel, double freq);
+
+  void set_verbose (bool verbose);
+
+  // ACCESSORS
+
+  unsigned int decim_rate () const;
+  double rx_freq (int channel) const;
+  int noverruns () const { return d_noverruns; }
+
+  /*!
+   * \brief return the msdd's serial number.
+   *
+   * \returns non-zero length string iff successful.
+   */
+  std::string serial_number();
+  
+  bool set_desired_packet_size (int which, unsigned long packet_size);
+
+  unsigned long desired_packet_size (int which) const;
+
+};
+
+
+// ================================================================
+//      concrete sources
+// ================================================================
+
+
+// ----------------------------------------------------------------
+
+GR_SWIG_BLOCK_MAGIC(msdd,source_s)
+
+msdd_source_s_sptr
+msdd_make_source_s (int which_board, 
+            unsigned int decim_rate,
+            unsigned int fft_points,
+            double initial_rx_freq,
+            int opp_mode,
+            const char *src, 
+            unsigned short port_src
+         ) throw (std::runtime_error);
+
+
+class msdd_source_s : public msdd_source_base {
+ protected:
+  msdd_source_s (int which_board, 
+      unsigned int decim_rate,
+      unsigned int fft_points,
+      double initial_rx_freq,
+      int opp_mode,
+          const char *src, 
+          unsigned short port_src
+      ) throw (std::runtime_error);
+
+ virtual int ninput_bytes_reqd_for_noutput_items (int noutput_items);
+ 
+ public:
+  ~msdd_source_s ();
+};
+
+
+GR_SWIG_BLOCK_MAGIC(msdd,source_c)
+
+msdd_source_c_sptr
+msdd_make_source_c (int which_board, 
+            int opp_mode,
+            const char *src, 
+            unsigned short port_src
+         ) throw (std::runtime_error);
+
+
+class msdd_source_c : public msdd_source_base {
+ protected:
+  msdd_source_c (int which_board, 
+      int opp_mode,
+          const char *src, 
+          unsigned short port_src
+      ) throw (std::runtime_error);
+
+ virtual int ninput_bytes_reqd_for_noutput_items (int noutput_items);
+ 
+ public:
+  ~msdd_source_c ();
+};
+

Added: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_buffer_copy_behaviors.h
===================================================================
--- 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_buffer_copy_behaviors.h
                              (rev 0)
+++ 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_buffer_copy_behaviors.h
      2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,38 @@
+#ifndef MSDD_BUFFER_COPY_BEHAVIORS_H_
+#define MSDD_BUFFER_COPY_BEHAVIORS_H_
+
+namespace msdd {
+       
+       class BufferCopyBehavior 
+         {
+         public: 
+           virtual void operator() (gr_vector_void_star &a, const void * b, 
unsigned int output_index, unsigned int nitems) = 0;
+           virtual ~BufferCopyBehavior() {};
+         };
+         
+       template <class Tin, class Tout> 
+       class BufferCopyBehaviorGeneric : public BufferCopyBehavior {
+               void operator() (gr_vector_void_star &a, const void * b, 
unsigned int output_index, unsigned int nitems) {
+                       Tout    *out(&(reinterpret_cast<Tout 
*>(a[0]))[output_index]);  // sloppy
+                       const Tin       *in(reinterpret_cast<const Tin *>(b)); 
// equisloppy
+                       
+                   for (unsigned int i = 0; i < nitems; ++i) {
+                       out[i] = in[i];
+                   }
+               }
+       };
+       
+       template <class Tin>
+       class BufferCopyBehaviorComplex : public BufferCopyBehavior {
+               void operator() (gr_vector_void_star &a, const void * b, 
unsigned int output_index, unsigned int nitems) {
+               gr_complex      *out(&(reinterpret_cast<gr_complex 
*>(a[0]))[output_index]);    // sloppy
+               const Tin       *in(reinterpret_cast<const Tin *>(b)); // 
equisloppy
+               
+                   for (unsigned int i = 0; i < nitems; ++i) {
+                       out[i] = gr_complex (in[4*i+1],in[4*i+3]);
+                   }
+               }
+       };
+}
+
+#endif /*MSDD_BUFFER_COPY_BEHAVIORS_H_*/

Added: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_base.cc
===================================================================
--- 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_base.cc   
                            (rev 0)
+++ 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_base.cc   
    2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,819 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+//#define MSDD_DEBUG_TRUE
+//#define MSDD_DEBUG2_TRUE
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <msdd_source_base.h>
+#include <gr_io_signature.h>
+#include <assert.h>
+#include <netdb.h>
+#include <omnithread.h>
+#include <stdexcept>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+
+#ifdef MSDD_DEBUG_TRUE
+#include <iostream>
+#define MSDD_DEBUG(x) std::cout << x << std::endl;
+#else
+#define MSDD_DEBUG(x)
+#endif
+
+
+#ifdef MSDD_DEBUG2_TRUE
+#include <iostream>
+#define MSDD_DEBUG2(x) std::cout << x << std::endl;
+#else
+#define MSDD_DEBUG2(x)
+#endif
+
+#include <iostream>
+
+namespace {
+       const int OUTPUT_MAX((1 << 15)*8);
+       const double PGA_MAX(75);
+       const double PGA_MIN(10);
+       const double PGA_STEP(.5);
+       const double DEFAULT_RX_FREQ(2.417e6);
+       const double DEFAULT_GAIN(32);
+       const msdd_source_base::msdd_fft_mode_t 
DEFAULT_FFT_MODE(msdd_source_base::MODE_MAG);
+       const msdd_source_base::msdd_fft_points_t 
DEFAULT_FFT_POINTS(msdd_source_base::S8192);
+       const msdd_source_base::msdd_decimation_t 
DEFAULT_DECIMATION_RATE(msdd_source_base::D2);
+}
+
+class msdd_source_base::Impl {
+  
+public:
+  Impl(int opp_mode) :
+    d_noverruns (0),
+    d_deci_rate (DEFAULT_DECIMATION_RATE),
+    d_rx_freq ((unsigned long) DEFAULT_RX_FREQ),
+    d_gain(DEFAULT_GAIN),
+    d_verbose (false),
+    d_updated(false),
+    d_msdd_command_type((msdd_command_type_t) opp_mode),
+    d_msdd_fft_mode(DEFAULT_FFT_MODE),
+    d_desired_sample_size(2^15),
+    d_fft_points (DEFAULT_FFT_POINTS)
+    {
+    
+    }
+
+  int            d_noverruns;
+  msdd_decimation_t   d_deci_rate;
+  unsigned long  d_rx_freq;
+  double         d_gain;
+  bool           d_verbose;
+  bool           d_updated;  
+  msdd_command_type_t d_msdd_command_type;
+  msdd_fft_mode_t d_msdd_fft_mode;
+  unsigned long  d_desired_sample_size;
+  
+  int            d_socket;        // handle to socket
+  int            d_socket_rcv;    // handle to socket retuned in the accept 
call
+  struct in_addr d_ip_src;        // store the source IP address to use
+  unsigned short d_port_src;      // the port number to open for connections 
to this service
+  sockaddr_in    d_sockaddr_src;  // store the source sockaddr data (formatted 
IP address and port number) 
+  std::auto_ptr<unsigned char> d_temp_buff;     // hold buffer between calls
+
+  omni_mutex    d_mutex;
+  msdd_fft_points_t   d_fft_points; 
+  
+  struct msdd_request_fft_packet {
+      msdd_command_type_t command_type;
+      int foo_x20;
+      unsigned int center_freq_mhz;
+      int offset_freq_hz;
+      int gain;
+      msdd_fft_window_type_t window_type;
+      msdd_fft_points_t fft_points;
+      msdd_decimation_t decimation;
+      msdd_fft_mode_t fft_mode;
+      int number_sets;
+  } __attribute__((__packed__));
+  
+  struct msdd_request_iq_packet {
+      msdd_command_type_t command_type;
+      int foo0x18;
+      unsigned int center_freq_mhz;
+      int offset_freq_hz;
+      int gain;
+      int number;
+      msdd_decimation_t decimation;
+      int number_sets;
+  } __attribute__((__packed__));
+
+  void make_request_fft_packet(msdd_request_fft_packet& packet);
+  
+  void make_request_iq_packet(msdd_request_iq_packet& packet, unsigned int 
number_samples);
+  
+  msdd_request_fft_packet   d_fft_request_packet; // fft request packet
+  msdd_request_iq_packet    d_iq_request_packet; // fft request packet
+};
+
+
+msdd_source_base::msdd_source_base (const std::string &name,
+                                     gr_io_signature_sptr output_signature,
+                                     int which_board,
+                                     int opp_mode,
+                                     const char *src, 
+                                 unsigned short port_src
+                                     ) throw (std::runtime_error)
+  : gr_sync_block (name,
+                  gr_make_io_signature (0, 0, 0),
+                  output_signature),
+                  pimpl( new Impl(opp_mode))
+    
+{
+    int ret (0);
+    
+    // Set up the address stucture for the source address and port numbers
+    // Get the source IP address from the host name
+    struct hostent *hsrc (gethostbyname(src));
+    
+    if(hsrc) {   // if the source was provided as a host namex
+      pimpl->d_ip_src = *(struct in_addr*)hsrc->h_addr_list[0];    
+    }
+    else { // assume it was specified as an IP address
+      if((ret=inet_aton(src, &pimpl->d_ip_src)) == 0) {            // format 
IP address
+        perror("Not a valid source IP address or host name");
+        throw std::runtime_error("can't initialize source socket");
+      }
+    }
+
+    pimpl->d_port_src = htons(port_src);     // format port number
+    
+    pimpl->d_sockaddr_src.sin_family = AF_INET;
+    pimpl->d_sockaddr_src.sin_addr   = pimpl->d_ip_src;
+    pimpl->d_sockaddr_src.sin_port   = pimpl->d_port_src;
+
+    pimpl->d_temp_buff.reset(new unsigned char[OUTPUT_MAX + 
+                                     
std::max(sizeof(Impl::msdd_request_iq_packet),
+                                         
sizeof(Impl::msdd_request_fft_packet))]);   // allow it to hold up to 
payload_size bytes
+
+  set_output_multiple (OUTPUT_MAX / output_signature->sizeof_stream_item (0));
+}
+                                     
+
+bool
+msdd_source_base::open()
+{
+  omni_mutex_lock l(pimpl->d_mutex);   // hold mutex for duration of this 
function
+  // create socket
+  MSDD_DEBUG2("MSDD: Before socket ")
+  pimpl->d_socket = socket(PF_INET, SOCK_STREAM, 0);
+  if(pimpl->d_socket == -1) {
+    perror("socket open");
+    throw std::runtime_error("can't open socket");
+  }
+
+  // Turn on reuse address
+  int opt_val (1);
+  if(setsockopt(pimpl->d_socket, SOL_SOCKET, SO_REUSEADDR, (void*)&opt_val, 
sizeof(int)) == -1) {
+    perror("SO_REUSEADDR");
+    throw std::runtime_error("can't set socket option SO_REUSEADDR");
+  }
+
+  // Don't wait when shutting down
+  linger lngr;
+  lngr.l_onoff  = 1;
+  lngr.l_linger = 0;
+  if(setsockopt(pimpl->d_socket, SOL_SOCKET, SO_LINGER, (void*)&lngr, 
sizeof(linger)) == -1) {
+    perror("SO_LINGER");
+    throw std::runtime_error("can't set socket option SO_LINGER");
+  }
+
+  // Set a timeout on the receive function to not block indefinitely
+  // This value can (and probably should) be changed
+//  timeval timeout;
+//  timeout.tv_sec = 1;
+//  timeout.tv_usec = 0;
+//  if(setsockopt(d_socket, SOL_SOCKET, SO_RCVTIMEO, (void*)&timeout, 
sizeof(timeout)) == -1) {
+//    perror("SO_RCVTIMEO");
+//    throw std::runtime_error("can't set socket option SO_RCVTIMEO");
+//  }
+
+  // bind socket to an address and port number to listen on
+  MSDD_DEBUG2("MSDD: Before socket bind to " << pimpl->d_sockaddr_src.sin_port)
+  if(::connect(pimpl->d_socket, (struct sockaddr*)&pimpl->d_sockaddr_src, 
sizeof(pimpl->d_sockaddr_src)) == -1) {
+    perror("socket bind");
+    throw std::runtime_error("can't bind socket");
+  }
+
+  MSDD_DEBUG2("MSDD: Socket open")
+  pimpl->d_updated = true;
+  return pimpl->d_socket != 0;
+}
+
+/* read n bytes from a socket descriptor */
+int 
+msdd_source_base::readsock(int sockfd, unsigned char* buf, int nbytes) {
+    int nleft (nbytes);
+    int nread (0);
+    
+    while (nleft > 0) {
+      MSDD_DEBUG2("MSDD: Before socket read: " << nleft)
+            if ((nread = ::read(sockfd, buf, nleft)) < 0) {
+                return(nread); /* error, nread < 0 */
+            } else if (nread == 0) {
+                break;
+            }
+            
+            nleft -= nread;
+            buf += nread;
+    }
+    return(nbytes - nleft);
+}
+
+bool
+msdd_source_base::close()
+{
+  omni_mutex_lock l(pimpl->d_mutex);   // hold mutex for duration of this 
function
+
+  if (pimpl->d_socket){
+    shutdown(pimpl->d_socket, SHUT_RDWR);
+    pimpl->d_socket = 0;
+  }
+  pimpl->d_updated = true;
+  
+  return true;
+}
+
+msdd_source_base::~msdd_source_base ()
+{
+  msdd_source_base::close();
+}
+
+unsigned int
+msdd_source_base::sizeof_basic_sample() const
+{
+  switch (pimpl->d_msdd_command_type) {
+  case SAMPLES_REALTIME:
+    return 4;
+  case SAMPLES_FFT:
+    switch (pimpl->d_msdd_fft_mode) {
+    case MODE_IQ:
+    case MODE_MAG:
+      return 4;
+    case MODE_MAGDB:
+      return 1;
+    default:
+      assert (false); // bad mode
+    }
+  default:
+    assert (false); // bad mode
+  }
+}
+
+bool
+msdd_source_base::start()
+{
+       return msdd_source_base::open();
+}
+
+bool
+msdd_source_base::stop()
+{
+       return msdd_source_base::close();
+}
+
+void* 
+msdd_source_base::make_request_packet(unsigned int& size, unsigned int 
number_samples) {
+  switch (pimpl->d_msdd_command_type) {
+  case SAMPLES_REALTIME:
+    pimpl->make_request_iq_packet(pimpl->d_iq_request_packet, number_samples);
+    size = sizeof (pimpl->d_iq_request_packet);
+    return &pimpl->d_iq_request_packet;
+  case SAMPLES_FFT:
+    pimpl->make_request_fft_packet(pimpl->d_fft_request_packet);
+    size = sizeof (pimpl->d_fft_request_packet);
+    return &pimpl->d_fft_request_packet;
+  default:
+    assert (false); // bad mode
+  }
+}
+
+void 
+msdd_source_base::Impl::make_request_fft_packet(msdd_request_fft_packet& 
packet) 
+{
+    packet.command_type = SAMPLES_FFT;  // FFT samples Command
+    packet.foo_x20 = 0x20;
+    packet.center_freq_mhz = d_rx_freq;
+    packet.offset_freq_hz = 0;
+    packet.gain = (int) d_gain; // gain
+    packet.window_type = WINDOW_HANNING; // magic number
+    packet.fft_points = d_fft_points;
+    packet.decimation = d_deci_rate;
+    packet.fft_mode = MODE_MAGDB;
+    packet.number_sets = 1;
+}
+
+void 
+msdd_source_base::Impl::make_request_iq_packet(msdd_request_iq_packet& packet, 
unsigned int number_samples) 
+{
+    packet.command_type = SAMPLES_REALTIME;  // FFT samples Command
+    packet.foo0x18 = 0x18; // magic number
+    packet.center_freq_mhz = d_rx_freq;
+    packet.offset_freq_hz = 0;
+    packet.gain = (int) d_gain; // gain
+    packet.number = number_samples * 4;
+    packet.decimation = d_deci_rate;
+    packet.number_sets = 1;
+}
+
+int
+msdd_source_base::work (int noutput_items,
+                        gr_vector_const_void_star &input_items,
+                        gr_vector_void_star &output_items)
+{
+  int output_index (0);
+  int output_items_produced;
+  int bytes_read;
+
+  unsigned int packet_size;
+  
+  MSDD_DEBUG("MSDD: requested items: " << noutput_items)
+  int noutput_items_desired = std::min (noutput_items, (int) 
pimpl->d_desired_sample_size);
+  MSDD_DEBUG("MSDD: desired items: " << noutput_items_desired)
+  
+  while (output_index < noutput_items_desired){
+
+    int nbytes = (pimpl->d_msdd_command_type == SAMPLES_REALTIME) ? 
+        ninput_bytes_reqd_for_noutput_items (noutput_items_desired - 
output_index) :
+        ninput_bytes_reqd_for_noutput_items (msdd_source_base::fft_points());
+    
+    void* request_packet = msdd_source_base::make_request_packet(packet_size, 
noutput_items_desired);
+    
+    nbytes = std::min (nbytes, OUTPUT_MAX);
+    MSDD_DEBUG2("MSDD: payload sizes: nbytes1: " << nbytes )
+
+    // send request
+    int result_nbytes = ::write(pimpl->d_socket, request_packet, packet_size);
+    //assert (result_nbytes == sizeof(msdd_request_packet));
+    
+    // receive ack
+    result_nbytes = ::read (pimpl->d_socket, (unsigned char*) request_packet, 
packet_size);
+    MSDD_DEBUG2("MSDD: response: " << result_nbytes)
+    //assert (result_nbytes == sizeof(msdd_request_packet));
+    
+    // receive payload
+    result_nbytes = msdd_source_base::readsock (pimpl->d_socket, 
pimpl->d_temp_buff.get(), nbytes);
+    MSDD_DEBUG("MSDD: reading bytes: " << nbytes << " received: " << 
result_nbytes)
+    if (result_nbytes > (int) nbytes){
+      // fprintf (stderr, "msdd_source: overrun\n");
+      fputs ("uO", stderr);
+      pimpl->d_noverruns++;
+      result_nbytes = nbytes; // truncate
+    }
+    
+    if (result_nbytes < 0)     // We've got a problem.  Usually board 
unplugged or powered down.
+      return -1;               // Indicate we're done.
+
+    if (result_nbytes != nbytes){      // not really an error, but unexpected
+      fprintf (stderr, "msdd_source: short read.  Expected %d, got %d\n",
+              nbytes, result_nbytes);
+    }
+
+    copy_from_msdd_buffer (output_items,
+                          output_index,
+                          noutput_items_desired - output_index,   // 
output_items_available
+                          output_items_produced,          // [out]
+                          pimpl->d_temp_buff.get(),                            
   // usrp_buffer
+                          result_nbytes,
+                          bytes_read);                    // [out]
+    
+    output_index += output_items_produced;
+    
+    if (pimpl->d_msdd_command_type == SAMPLES_FFT) break; 
+  }
+
+  MSDD_DEBUG("MSDD: items produced: " << output_items_produced << " index: " 
<< output_index)
+  
+  //assert(false);
+  return output_index;
+}
+
+
+bool
+msdd_source_base::set_decim_rate (unsigned int rate)
+{
+       bool result (true);
+       switch (rate) {
+    case 1:
+      pimpl->d_deci_rate = D0;
+      break;
+    case 2:
+      pimpl->d_deci_rate = D1;
+      break;      
+       case 4:
+         pimpl->d_deci_rate = D2;
+      break;     
+       case 8:
+         pimpl->d_deci_rate = D3;
+      break;     
+       case 16:
+         pimpl->d_deci_rate = D4;
+         break;
+    case 32:
+      pimpl->d_deci_rate = D5;
+      break;
+    case 64:
+      pimpl->d_deci_rate = D6;
+      break;
+    case 128:
+      pimpl->d_deci_rate = D7;
+      break;
+    case 256:
+      pimpl->d_deci_rate = D8;
+      break;
+       default:
+         result = false;
+       }
+       
+       return result;
+}
+//
+//bool
+//msdd_source_base::set_nchannels (int nchan)
+//{
+//  // return d_usrp->set_nchannels (nchan);
+//     return true;
+//}
+//
+//bool
+//msdd_source_base::set_mux (int mux)
+//{
+//  return d_usrp->set_mux (mux);
+//}
+
+bool
+msdd_source_base::set_rx_freq (int channel, double freq)
+{
+       assert (channel == 0);
+       bool result (false);
+       
+       if (freq >=  30e6 && freq <= 6e9) {
+         pimpl->d_rx_freq = (unsigned long) freq / 1000000;
+               result = true;
+       }
+       
+       return result;
+}
+
+
+unsigned long
+msdd_source_base::set_fft_size (int channel, unsigned long fft_size)
+{
+    assert (channel == 1);
+    
+    switch (fft_size) {
+      case 256:        
+        pimpl->d_fft_points = S256;
+        break;
+      case 512:
+        pimpl->d_fft_points = S512;       
+        break;
+      case 1024:
+        pimpl->d_fft_points = S1024;
+        break;        
+      case 2048:
+        pimpl->d_fft_points = S2048;
+        break;        
+      case 4096:
+        pimpl->d_fft_points = S4096;
+        break;        
+      case 8192:
+        pimpl->d_fft_points = S8192;
+        break;        
+      case 16384:
+        pimpl->d_fft_points = S16384;
+        break;        
+      case 32768:
+        pimpl->d_fft_points = S32768;
+        break;        
+    }
+    
+    return msdd_source_base::fft_points();
+}
+
+//
+//long
+//msdd_source_base::fpga_master_clock_freq() const
+//{
+//  return d_usrp->fpga_master_clock_freq();
+//}
+//
+//long
+//msdd_source_base::converter_rate() const
+//{
+//  // return d_usrp->converter_rate();
+//     return 8;
+//}
+
+unsigned int
+msdd_source_base::decim_rate () const
+{
+       return 1 << pimpl->d_deci_rate;
+}
+//
+//int
+//msdd_source_base::nchannels () const
+//{
+//  return d_usrp->nchannels ();
+//}
+//
+//int
+//msdd_source_base::mux () const
+//{
+//  return d_usrp->mux ();
+//}
+
+double
+msdd_source_base::rx_freq (int channel) const
+{
+  assert (channel == 0);
+       
+  return pimpl->d_rx_freq;
+}
+
+unsigned int
+msdd_source_base::fft_points() const
+{
+  return (1 << pimpl->d_fft_points);
+}
+
+int 
+msdd_source_base::noverruns () const 
+{ 
+  return pimpl->d_noverruns; 
+}
+
+//bool
+//msdd_source_base::set_fpga_mode (int mode)
+//{
+//  return d_usrp->set_fpga_mode (mode);
+//}
+//
+//bool
+//msdd_source_base::set_ddc_phase (int channel, int phase)
+//{
+//  return d_usrp->set_ddc_phase(channel, phase);
+//}
+//
+//bool
+//msdd_source_base::set_dc_offset_cl_enable(int bits, int mask)
+//{
+//  return d_usrp->set_dc_offset_cl_enable(bits, mask);
+//}
+
+void
+msdd_source_base::set_verbose (bool verbose)
+{  
+  pimpl->d_verbose = verbose;
+}
+//
+//bool
+//msdd_source_base::write_aux_dac (int which_dboard, int which_dac, int value)
+//{
+//  return d_usrp->write_aux_dac (which_dboard, which_dac, value);
+//}
+//
+//int
+//msdd_source_base::read_aux_adc (int which_dboard, int which_adc)
+//{
+//  return d_usrp->read_aux_adc (which_dboard, which_adc);
+//}
+//
+//bool
+//msdd_source_base::write_eeprom (int i2c_addr, int eeprom_offset, const 
std::string buf)
+//{
+//  return d_usrp->write_eeprom (i2c_addr, eeprom_offset, buf);
+//}
+//
+//std::string
+//msdd_source_base::read_eeprom (int i2c_addr, int eeprom_offset, int len)
+//{
+//  return d_usrp->read_eeprom (i2c_addr, eeprom_offset, len);
+//}
+//
+//bool
+//msdd_source_base::write_i2c (int i2c_addr, const std::string buf)
+//{
+//  return d_usrp->write_i2c (i2c_addr, buf);
+//}
+//
+//std::string
+//msdd_source_base::read_i2c (int i2c_addr, int len)
+//{
+//  return d_usrp->read_i2c (i2c_addr, len);
+//}
+//
+bool
+msdd_source_base::set_pga (int which, double gain)
+{
+       if (gain >= PGA_MIN & gain <= PGA_MAX) {
+         pimpl->d_gain = gain;
+               return true;
+       }
+       return false;
+}
+
+double
+msdd_source_base::pga (int which) const
+{
+  return pimpl->d_gain;
+}
+
+double
+msdd_source_base::pga_min () const
+{
+  return PGA_MIN;
+}
+
+double
+msdd_source_base::pga_max () const
+{
+  return PGA_MAX;
+}
+
+double
+msdd_source_base::pga_db_per_step () const
+{
+  return PGA_STEP;
+}
+
+//int
+//msdd_source_base::daughterboard_id (int which) const
+//{
+//  return d_usrp->daughterboard_id (which);
+//}
+//
+//
+//bool
+//msdd_source_base::set_adc_offset (int which, int offset)
+//{
+//  return d_usrp->set_adc_offset (which, offset);
+//}
+//
+//bool
+//msdd_source_base::set_dac_offset (int which, int offset, int offset_pin)
+//{
+//  return d_usrp->set_dac_offset (which, offset, offset_pin);
+//}
+//
+//bool
+//msdd_source_base::set_adc_buffer_bypass (int which, bool bypass)
+//{
+//  return d_usrp->set_adc_buffer_bypass (which, bypass);
+//}
+
+std::string
+msdd_source_base::serial_number()
+{
+  return "SoftTronics MSDD 6000";
+}
+//
+//bool
+//msdd_source_base::_write_oe (int which_dboard, int value, int mask)
+//{
+//  return d_usrp->_write_oe (which_dboard, value, mask);
+//}
+//
+//bool
+//msdd_source_base::write_io (int which_dboard, int value, int mask)
+//{
+//  return d_usrp->write_io (which_dboard, value, mask);
+//}
+//
+//int
+//msdd_source_base::read_io (int which_dboard)
+//{
+//  return d_usrp->read_io (which_dboard);
+//}
+//
+//
+//
+//
+//// internal routines...
+//
+//bool
+//msdd_source_base::_write_fpga_reg (int regno, int value)
+//{
+//  return d_usrp->_write_fpga_reg (regno, value);
+//}
+//
+//bool
+//msdd_source_base::_write_fpga_reg_masked (int regno, int value, int mask)
+//{
+//  return d_usrp->_write_fpga_reg_masked (regno, value, mask);
+//}
+//
+//int
+//msdd_source_base::_read_fpga_reg (int regno)
+//{
+//  return d_usrp->_read_fpga_reg (regno);
+//}
+//
+//bool
+//msdd_source_base::_write_9862 (int which_codec, int regno, unsigned char 
value)
+//{
+//  return d_usrp->_write_9862 (which_codec, regno, value);
+//}
+//
+//int
+//msdd_source_base::_read_9862 (int which_codec, int regno) const
+//{
+//  return d_usrp->_read_9862 (which_codec, regno);
+//}
+//
+//bool
+//msdd_source_base::_write_spi (int optional_header, int enables,
+//                            int format, std::string buf)
+//{
+//  return d_usrp->_write_spi (optional_header, enables, format, buf);
+//}
+//
+//std::string
+//msdd_source_base::_read_spi (int optional_header, int enables, int format, 
int len)
+//{
+//  return d_usrp->_read_spi (optional_header, enables, format, len);
+//}
+//
+//bool
+//msdd_source_base::set_format(unsigned int format)
+//{
+//  return d_usrp->set_format(format);
+//}
+//
+//unsigned int
+//msdd_source_base::format() const
+//{
+//  return d_usrp->format();
+//}
+//
+//unsigned int
+//msdd_source_base::make_format(int width, int shift, bool want_q, bool 
bypass_halfband)
+//{
+//  return usrp_standard_rx::make_format(width, shift, want_q, 
bypass_halfband);
+//}
+//
+//int
+//msdd_source_base::format_width(unsigned int format)
+//{
+//  return usrp_standard_rx::format_width(format);
+//}
+//
+//int
+//msdd_source_base::format_shift(unsigned int format)
+//{
+//  return usrp_standard_rx::format_shift(format);
+//}
+//
+//bool
+//msdd_source_base::format_want_q(unsigned int format)
+//{
+//  return usrp_standard_rx::format_want_q(format);
+//}
+//
+//bool
+//msdd_source_base::format_bypass_halfband(unsigned int format)
+//{
+//  return usrp_standard_rx::format_bypass_halfband(format);
+//}
+
+bool msdd_source_base::set_desired_packet_size (int which, unsigned long 
packet_size) {
+  bool result(false);
+  
+  if (pimpl->d_desired_sample_size < 2^32) { // FIXME: find maximum sample 
request for MSDD check if greater than 
+    pimpl->d_desired_sample_size = packet_size;
+  }
+  return result;
+}
+
+unsigned long msdd_source_base::desired_packet_size (int which) const {
+  return pimpl->d_desired_sample_size;
+}

Added: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_base.h
===================================================================
--- 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_base.h    
                            (rev 0)
+++ 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_base.h    
    2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,308 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_MSDD_SOURCE_BASE_H
+#define INCLUDED_MSDD_SOURCE_BASE_H
+#include <gr_sync_block.h>
+#include <stdexcept>
+
+/*!
+ * \brief abstract interface to MSDD 6000 Softronics module Rx path (Rev 1)
+ */
+
+class msdd_source_base : public gr_sync_block {
+public: 
+  enum msdd_command_type_t {
+    COMMAND_STATUS = 0,
+    SAMPLES_REALTIME = 1,
+    SAMPLES_FFT = 2,
+  };
+     
+   enum msdd_fft_window_type_t {
+     WINDOW_RECTANGLE = 0,
+     WINDOW_HANNING = 1,
+     WINDOW_HAMMING = 2,
+     WINDOW_BLACKMAN = 3
+   };
+   
+   enum msdd_fft_mode_t {
+     MODE_IQ=0, 
+     MODE_MAG=1, 
+     MODE_MAGDB=2
+   };
+   
+   enum msdd_decimation_t {
+     D0=0, 
+     D1=1, 
+     D2=2, 
+     D3=3, 
+     D4=4, 
+     D5=5, 
+     D6=6, 
+     D7=7, 
+     D8=8
+   };    
+   
+   enum msdd_fft_points_t {
+     S256=8, 
+     S512=9, 
+     S1024=10, 
+     S2048=11, 
+     S4096=12, 
+     S8192=13, 
+     S16384=14, 
+     S32768=15
+   };
+   
+ private:
+   
+  class Impl;
+  friend class Impl;
+  std::auto_ptr<Impl> pimpl;
+
+  
+ protected:
+   
+  msdd_source_base (const std::string &name,
+      gr_io_signature_sptr output_signature,
+      int which_board,
+      int opp_mode,
+      const char *src, 
+      unsigned short port_src
+                    ) throw (std::runtime_error);
+
+  /*!
+   * \brief return number of msdd input bytes required to produce noutput 
items.
+   */
+  virtual int ninput_bytes_reqd_for_noutput_items (int noutput_items) = 0;
+
+  /*!
+   * \brief number of bytes in a low-level sample
+   */
+  unsigned int sizeof_basic_sample() const;
+
+  virtual void copy_from_msdd_buffer (gr_vector_void_star &output_items,
+                                     int output_index,
+                                     int output_items_available,
+                                     int &output_items_produced,
+                                     const void *msdd_buffer,
+                                     int msdd_buffer_length,
+                                     int &bytes_read) = 0;
+  
+  int readsock(int sockfd, unsigned char* buf, int nbytes);
+  
+  void* make_request_packet(unsigned int& size, unsigned int number_samples);
+  
+  unsigned long set_fft_size (int channel, unsigned long fft_size);
+  
+ public:
+  //! magic value used on alternate register read interfaces
+  static const int READ_FAILED = -99999;
+
+  ~msdd_source_base ();
+
+  int work (int noutput_items,
+           gr_vector_const_void_star &input_items,
+           gr_vector_void_star &output_items);
+
+  bool start();
+  bool stop();
+
+  /*!
+   * \brief open a socket specified by the port and ip address info
+   *
+   * Opens a socket, binds to the address, and waits for a connection
+   * over UDP. If any of these fail, the fuction retuns the error and exits.
+   */
+  bool open();
+
+  /*!
+   * \brief Close current socket.
+   *
+   * Shuts down read/write on the socket
+   */
+  bool close();
+  
+  /*!
+   * \brief Set decimator rate.  \p rate must be EVEN and in [8, 256].
+   *
+   * The final complex sample rate across the USB is
+   *   adc_freq () / decim_rate ()
+   */
+  bool set_decim_rate (unsigned int rate);
+  //bool set_nchannels (int nchan);
+  //bool set_mux (int mux);
+
+  /*!
+   * \brief set the center frequency of the digital down converter.
+   *
+   * \p channel must be 0.  \p freq is the center frequency in Hz.
+   * It must be in the range [-FIXME, FIXME].  The frequency specified is
+   * quantized.  Use rx_freq to retrieve the actual value used.
+   */
+  bool set_rx_freq (int channel, double freq);
+
+  /*!
+   * \brief
+   */
+  bool set_opp_mode (int channel, msdd_command_type_t mode);
+  
+//
+//  /*!
+//   * \brief set fpga special modes
+//   */
+//  bool set_fpga_mode (int mode);
+
+  void set_verbose (bool verbose);
+//
+//  /*!
+//   * \brief Set the digital down converter phase register.
+//   *
+//   * \param channel  which ddc channel [0, 3]
+//   * \param phase    32-bit integer phase value.
+//   */
+//  bool set_ddc_phase(int channel, int phase);
+//
+  /*!
+   * \brief Set Programmable Gain Amplifier (PGA)
+   *
+   * \param which      which A/D [0,3]
+   * \param gain_in_db gain value (linear in dB)
+   *
+   * gain is rounded to closest setting supported by hardware.
+   *
+   * \returns true iff sucessful.
+   *
+   * \sa pga_min(), pga_max(), pga_db_per_step()
+   */
+  bool set_pga (int which, double gain_in_db);
+
+  /*!
+   * \brief Return programmable gain amplifier gain setting in dB.
+   *
+   * \param which      which A/D [0,3]
+   */
+  double pga (int which) const;
+
+  /*!
+   * \brief Return minimum legal PGA setting in dB.
+   */
+  double pga_min () const;
+
+  /*!
+   * \brief Return maximum legal PGA setting in dB.
+   */
+  double pga_max () const;
+
+  /*!
+   * \brief Return hardware step size of PGA (linear in dB).
+   */
+  double pga_db_per_step () const;
+
+  // ACCESSORS
+
+//  long converter_rate() const;
+
+  unsigned int decim_rate () const;
+//  int nchannels () const;
+//  int mux () const;
+  double rx_freq (int channel) const;
+  unsigned int fft_points() const;
+  int noverruns () const;
+
+  /*!
+   * \brief return the msdd's serial number.
+   *
+   * \returns non-zero length string iff successful.
+   */
+  std::string serial_number();
+
+//  /*!
+//   * \brief Enable/disable automatic DC offset removal control loop in FPGA
+//   *
+//   * \param bits  which control loops to enable
+//   * \param mask  which \p bits to pay attention to
+//   *
+//   * If the corresponding bit is set, enable the automatic DC
+//   * offset correction control loop.
+//   *
+//   * <pre>
+//   * The 4 low bits are significant:
+//   *
+//   *   ADC0 = (1 << 0)
+//   *   ADC1 = (1 << 1)
+//   *   ADC2 = (1 << 2)
+//   *   ADC3 = (1 << 3)
+//   * </pre>
+//   *
+//   * By default the control loop is enabled on all ADC's.
+//   */
+//  bool set_dc_offset_cl_enable(int bits, int mask);
+
+  /*!
+   * \brief Specify Rx data format.
+   *
+   * \param format     format specifier
+   *
+   * Rx data format control register
+   *
+   *     3                   2                   1                       
+   *   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+   *  +-----------------------------------------+-+-+---------+-------+
+   *  |          Reserved (Must be zero)        |B|Q|  WIDTH  | SHIFT |
+   *  +-----------------------------------------+-+-+---------+-------+
+   *
+   *  SHIFT specifies arithmetic right shift [0, 15]
+   *  WIDTH specifies bit-width of I & Q samples across the USB [1, 16] (not 
all valid)
+   *  Q     if set deliver both I & Q, else just I
+   *  B     if set bypass half-band filter.
+   *
+   * Right now the acceptable values are:
+   *
+   *   B  Q  WIDTH  SHIFT
+   *   0  1    16     0
+   *   0  1     8     8
+   *
+   * More valid combos to come.
+   *
+   * Default value is 0x00000300  16-bits, 0 shift, deliver both I & Q.
+   */
+//  bool set_format(unsigned int format);
+
+  /*!
+   * \brief return current format
+   */
+//  unsigned int format () const;
+//
+//  static unsigned int make_format(int width=16, int shift=0,
+//                               bool want_q=true, bool bypass_halfband=false);
+//  static int format_width(unsigned int format);
+//  static int format_shift(unsigned int format);
+//  static bool format_want_q(unsigned int format);
+//  static bool format_bypass_halfband(unsigned int format);
+
+    bool set_desired_packet_size (int which, unsigned long packet_size);
+
+    unsigned long desired_packet_size (int which) const;
+};
+
+#endif /* INCLUDED_MSDD_SOURCE_BASE_H */

Added: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_c.cc
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_c.cc  
                        (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_c.cc  
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,112 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2006 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+//#define MSDD_DEBUG2_TRUE
+
+#ifdef MSDD_DEBUG2_TRUE
+#include <iostream>
+#define MSDD_DEBUG2(x) std::cout << x << std::endl;
+#else
+#define MSDD_DEBUG2(x)
+#endif
+
+#include <msdd_source_c.h>
+#include <gr_io_signature.h>
+
+namespace {
+       static const int NBASIC_SAMPLES_PER_ITEM = 2;   // I & Q
+};
+
+msdd_source_c_sptr
+msdd_make_source_c (int which_board, 
+            int opp_mode,
+            const char *src, 
+            unsigned short port_src
+                    ) throw (std::runtime_error)
+{
+  return msdd_source_c_sptr (new msdd_source_c (
+                                               which_board,
+                                           opp_mode,
+                                               src,
+                                               port_src
+                                               ));
+}
+
+
+msdd_source_c::msdd_source_c (int which_board,
+                               int opp_mode,
+                   const char *src, 
+                   unsigned short port_src
+                               ) throw (std::runtime_error)
+  : msdd_source_base ("msdd_source_c",
+                      gr_make_io_signature (1, 1, 2 * sizeof (int)),
+                      which_board, opp_mode, src, port_src
+                      )
+{
+
+  switch (sizeof_basic_sample()) {     
+  case 4:
+         d_buffer_copy_behavior.reset(
+          new msdd::BufferCopyBehaviorComplex <short> ());
+    break;
+  default:
+    assert(false);    
+  }                              
+  
+}
+
+msdd_source_c::~msdd_source_c ()
+{
+}
+
+int
+msdd_source_c::ninput_bytes_reqd_for_noutput_items (int noutput_items)
+{
+  return noutput_items * NBASIC_SAMPLES_PER_ITEM * sizeof_basic_sample();
+}
+
+/*
+ * Copy 8 bit fft from mdss buffer into output buffer
+ */
+void
+msdd_source_c::copy_from_msdd_buffer (gr_vector_void_star &output_items,
+                                      int output_index,
+                                      int output_items_available,
+                                      int &output_items_produced,
+                                      const void *msdd_buffer,
+                                      int buffer_length,
+                                      int &bytes_read)
+{
+  unsigned nmsdd_bytes_per_item = NBASIC_SAMPLES_PER_ITEM * 
sizeof_basic_sample();
+  
+  unsigned int nitems = std::min (output_items_available,
+                        (int)(buffer_length / nmsdd_bytes_per_item));
+
+  (*d_buffer_copy_behavior.get())(output_items, msdd_buffer, output_index, 
nitems);
+
+  output_items_produced = nitems;
+  bytes_read = nitems * nmsdd_bytes_per_item;
+}

Added: gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_c.h
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_c.h   
                        (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_c.h   
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,81 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_MSDD_SOURCE_C_H
+#define INCLUDED_MSDD_SOURCE_C_H
+
+#include <msdd_source_base.h>
+#include <msdd_buffer_copy_behaviors.h>
+#include <stdexcept>
+
+class usrp_standard_rx;
+
+
+class msdd_source_c;
+typedef boost::shared_ptr<msdd_source_c> msdd_source_c_sptr;
+
+
+// public shared_ptr constructor
+
+msdd_source_c_sptr
+msdd_make_source_c (int which_board, 
+                    int opp_mode,
+                    const char *src, 
+                    unsigned short port_src
+                    ) throw (std::runtime_error);
+
+/*!
+ * \brief interface to MSDD Rx path
+ *
+ * output: 1 stream of short
+ */
+class msdd_source_c : public msdd_source_base {
+ private:
+  friend msdd_source_c_sptr
+  msdd_make_source_c (int which_board, 
+                      int opp_mode,
+               const char *src, 
+               unsigned short port_src
+                      ) throw (std::runtime_error);
+
+  std::auto_ptr<msdd::BufferCopyBehavior> d_buffer_copy_behavior;
+ protected:
+  msdd_source_c (int which_board, 
+                 int opp_mode,
+          const char *src, 
+          unsigned short port_src
+                 ) throw (std::runtime_error);
+
+  int ninput_bytes_reqd_for_noutput_items (int noutput_items);
+
+  virtual void copy_from_msdd_buffer (gr_vector_void_star &output_items,
+                                     int output_index,
+                                     int output_items_available,
+                                     int &output_items_produced,
+                                     const void *msdd_buffer,
+                                     int buffer_length,
+                                     int &bytes_read);
+ public:
+  ~msdd_source_c ();
+};
+
+#endif /* INCLUDED_MSDD_SOURCE_C_H */

Added: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_s.cc
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_s.cc  
                        (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_s.cc  
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,130 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2006 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define MSDD_DEBUG2_TRUE
+
+#ifdef MSDD_DEBUG2_TRUE
+#include <iostream>
+#define MSDD_DEBUG2(x) std::cout << x << std::endl;
+#else
+#define MSDD_DEBUG2(x)
+#endif
+
+#include <msdd_source_s.h>
+#include <gr_io_signature.h>
+
+namespace {
+       static const int NBASIC_SAMPLES_PER_ITEM = 1;
+}
+
+msdd_source_s_sptr
+msdd_make_source_s (int which_board, 
+            unsigned int decim_rate,
+            unsigned int fft_points,
+            double initial_rx_freq,
+            int opp_mode,
+            const char *src, 
+            unsigned short port_src
+                    ) throw (std::runtime_error)
+{
+  return msdd_source_s_sptr (new msdd_source_s (which_board,
+                                                 decim_rate,
+                                                 fft_points,
+                                                 initial_rx_freq,
+                                             opp_mode,
+                                                 src,
+                                                 port_src
+                                                 ));
+}
+
+
+msdd_source_s::msdd_source_s (int which_board,
+                               unsigned int decim_rate,
+                               unsigned int fft_points,
+                               double initial_rx_freq,
+                               int opp_mode,
+                   const char *src, 
+                   unsigned short port_src
+                               ) throw (std::runtime_error)
+  : msdd_source_base ("msdd_source_s",
+                      gr_make_io_signature (1, 1, sizeof (int)),
+                      which_board, opp_mode, src, port_src
+                      )
+{
+
+  switch (sizeof_basic_sample()) {
+  case 1:
+       d_buffer_copy_behavior.reset(
+        new msdd::BufferCopyBehaviorGeneric<short, unsigned char>());
+    break;
+  case 2:
+       d_buffer_copy_behavior.reset(
+               new msdd::BufferCopyBehaviorGeneric<short, float>());
+    break;
+  case 4:
+       d_buffer_copy_behavior.reset(
+               new msdd::BufferCopyBehaviorGeneric<short, int>());
+    break;
+  default:
+       assert(false);
+  }
+
+}
+
+msdd_source_s::~msdd_source_s ()
+{
+}
+
+int
+msdd_source_s::ninput_bytes_reqd_for_noutput_items (int noutput_items)
+{
+  return noutput_items * NBASIC_SAMPLES_PER_ITEM * sizeof_basic_sample();
+}
+
+void
+msdd_source_s::copy_from_msdd_buffer (gr_vector_void_star &output_items,
+                                      int output_index,
+                                      int output_items_available,
+                                      int &output_items_produced,
+                                      const void *msdd_buffer,
+                                      int buffer_length,
+                                      int &bytes_read)
+{
+  MSDD_DEBUG2("copy_from_msdd_buffer: output_index: " << output_index << " 
output_items_available: " << output_items_available << " buflen: " << 
buffer_length)
+
+  unsigned nmsdd_bytes_per_item 
+    (msdd_source_s::ninput_bytes_reqd_for_noutput_items(1));
+  
+  unsigned int nitems = std::min (output_items_available,
+                        (int)(buffer_length / nmsdd_bytes_per_item));
+  
+  MSDD_DEBUG2("copy_from_msdd_buffer: nmsdd_bytes_per_item: " << 
nmsdd_bytes_per_item << " nitems: " << nitems)
+
+  (*d_buffer_copy_behavior.get())(output_items, msdd_buffer, output_index, 
nitems);
+
+  output_items_produced = nitems;
+  bytes_read = nitems * nmsdd_bytes_per_item;
+}

Added: gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_s.h
===================================================================
--- gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_s.h   
                        (rev 0)
+++ gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/msdd_source_s.h   
2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,91 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_MSDD_SOURCE_S_H
+#define INCLUDED_MSDD_SOURCE_S_H
+
+#include <msdd_source_base.h>
+#include <stdexcept>
+#include <msdd_buffer_copy_behaviors.h>
+
+class usrp_standard_rx;
+
+
+class msdd_source_s;
+typedef boost::shared_ptr<msdd_source_s> msdd_source_s_sptr;
+
+
+// public shared_ptr constructor
+
+msdd_source_s_sptr
+msdd_make_source_s (int which_board, 
+                    unsigned int decim_rate,
+                    unsigned int fft_points,
+                    double initial_rx_freq,
+                    int opp_mode,
+                    const char *src, 
+                    unsigned short port_src
+                    ) throw (std::runtime_error);
+
+/*!
+ * \brief interface to MSDD Rx path
+ *
+ * output: 1 stream of short
+ */
+class msdd_source_s : public msdd_source_base {
+ private:
+  friend msdd_source_s_sptr
+  msdd_make_source_s (int which_board, 
+                      unsigned int decim_rate,
+                      unsigned int fft_points,
+                      double initial_rx_freq,
+                      int opp_mode,
+               const char *src, 
+               unsigned short port_src
+                      ) throw (std::runtime_error);
+
+  std::auto_ptr<msdd::BufferCopyBehavior> d_buffer_copy_behavior;
+  
+ protected:
+  msdd_source_s (int which_board, 
+                 unsigned int decim_rate,
+                 unsigned int fft_points,
+                 double initial_rx_freq,
+                 int opp_mode,
+          const char *src, 
+          unsigned short port_src
+                 ) throw (std::runtime_error);
+
+  int ninput_bytes_reqd_for_noutput_items (int noutput_items);
+
+  virtual void copy_from_msdd_buffer (gr_vector_void_star &output_items,
+                                     int output_index,
+                                     int output_items_available,
+                                     int &output_items_produced,
+                                     const void *msdd_buffer,
+                                     int buffer_length,
+                                     int &bytes_read);
+ public:
+  ~msdd_source_s ();
+};
+
+#endif /* INCLUDED_MSDD_SOURCE_S_H */

Added: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_tcp.py
===================================================================
--- 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_tcp.py
                           (rev 0)
+++ 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_tcp.py
   2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+
+from socket import *
+import string
+import time
+import struct;
+import random;
+
+myport = random.randint(1025,65535);
+
+port = 10000
+host = "10.45.4.43"
+myaddr = ("10.45.1.229",myport);
+
+buf = 100000;
+
+TCPSock = socket(AF_INET,SOCK_STREAM);
+#TCPSock = socket(AF_INET,SOCK_DGRAM);
+TCPSock.bind(myaddr);
+TCPSock.connect((host,port));
+
+f_mhz = 2400;  
+f_hz = 0;      
+gain = 2;      
+window = 3;    #0=rect, 1=hanning, 2=hamming, 3=blackman
+#samples = 0xffffffff;         #8-15   fft:(returns 2^number[8-15]) 
raw:(returns number)
+samples = 2;   #8-15   fft:(returns 2^number[8-15]) raw:(returns number)
+decim = 2;     #0-8  
+#decim = decim+16;     # +16 to use 16bit instead of 32 bit 
+mode = 1;      #0=IQ, 1=MAG, 2=MAGDB
+sets = 0xffffffff;     
+#sets = 1;
+
+fft_data = struct.pack("<IIIIIIIIII", 0x02, 0x20, f_mhz, f_hz, gain,window, 
samples, decim, mode,sets);
+raw_data = struct.pack("<IIIIIIII", 0x01, 0x18, f_mhz, f_hz, gain,samples, 
decim,sets);
+stat_data = struct.pack("!II", 0x0000, 0x0000)
+
+data = raw_data;
+
+#TCPSock.sendto(data, (host,port))
+TCPSock.send(data);
+
+print "sent"
+
+
+
+count = 0;
+while(1):
+       data,addr = TCPSock.recvfrom(buf);
+       
+       print "got response"
+       
+       print "Data length: %d bytes."%(len(data));
+       if(len(data)==12):
+               a,b,c = struct.unpack("!III",data);
+               print "%x,%x,%x"%(a,b,c);
+
+       datavector = [];
+
+       for d in data:
+               a = struct.unpack("<b",d);
+               datavector.append(a);
+
+       print datavector;
+               
+       count = count + 1;
+       
+       if(count > 1):
+               sets = 3;
+               raw_data_2 = struct.pack("<IIIIIIII", 0x01, 0x18, f_mhz, f_hz, 
gain,samples, decim,sets);
+               TCPSock.send(raw_data_2);
+               
+               
+               
+TCPSock.close();
+
+
+


Property changes on: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_tcp.py
___________________________________________________________________
Name: svn:executable
   + *

Added: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_udp.py
===================================================================
--- 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_udp.py
                           (rev 0)
+++ 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_udp.py
   2008-02-28 18:11:17 UTC (rev 7859)
@@ -0,0 +1,40 @@
+#!/usr/bin/python
+
+from socket import *
+import string
+import time
+import struct;
+
+
+port = 10001
+host = "10.45.4.43"
+
+myaddr = ("10.45.1.229",10000);
+
+buf = 1024;
+
+UDPSock = socket(AF_INET,SOCK_DGRAM);
+UDPSock.bind(myaddr);
+
+f_mhz = 2400;
+f_hz = 1;
+gain = 3;
+samples = 512;
+decim = 2;
+sets = 16;
+
+
+req_data = struct.pack("<IIIIIIIIII", 0x0001, 0x0002, f_mhz, f_hz, gain, 
samples, decim, sets);
+data = struct.pack("<II", 0x0000, 0x0000);
+
+
+
+UDPSock.sendto(stat_data, (host,port))
+
+
+print "sent"
+
+data,addr = UDPSock.recvfrom(buf);
+print "got response"
+
+


Property changes on: 
gnuradio/branches/developers/n4hy/msddLTS/gr-msdd6000/src/python_test/test_udp.py
___________________________________________________________________
Name: svn:executable
   + *





reply via email to

[Prev in Thread] Current Thread [Next in Thread]