[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3352 - in gnuradio/branches/developers/jcorgan/wip: .
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r3352 - in gnuradio/branches/developers/jcorgan/wip: . config ezdop/src/firmware gnuradio-core/src/lib gnuradio-core/src/lib/general gnuradio-examples/python/channel-coding gnuradio-examples/python/channel-coding/fsm_files gr-error-correcting-codes/src/lib/libecc/tests gr-radar/src/lib gr-trellis/doc gr-trellis/src/lib mblock mblock/doc mblock/src mblock/src/lib pmt/src/lib |
Date: |
Fri, 18 Aug 2006 18:45:21 -0600 (MDT) |
Author: jcorgan
Date: 2006-08-18 18:45:20 -0600 (Fri, 18 Aug 2006)
New Revision: 3352
Added:
gnuradio/branches/developers/jcorgan/wip/config/grc_mblock.m4
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msb.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msbG.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/disconnected.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/simple.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_soft.py
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_turbo.py
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm2.py
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/base.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/base.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_type.h
gnuradio/branches/developers/jcorgan/wip/mblock/
gnuradio/branches/developers/jcorgan/wip/mblock/AUTHORS
gnuradio/branches/developers/jcorgan/wip/mblock/ChangeLog
gnuradio/branches/developers/jcorgan/wip/mblock/Makefile.am
gnuradio/branches/developers/jcorgan/wip/mblock/README
gnuradio/branches/developers/jcorgan/wip/mblock/doc/
gnuradio/branches/developers/jcorgan/wip/mblock/doc/Makefile.am
gnuradio/branches/developers/jcorgan/wip/mblock/src/
gnuradio/branches/developers/jcorgan/wip/mblock/src/Makefile.am
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/Makefile.am
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_common.h
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_mblock.h
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.cc
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.h
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.cc
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.h
Removed:
gnuradio/branches/developers/jcorgan/wip/TODO.build
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_1.fsm
gnuradio/branches/developers/jcorgan/wip/gr-trellis/doc/gr-trellis.html
gnuradio/branches/developers/jcorgan/wip/mblock/AUTHORS
gnuradio/branches/developers/jcorgan/wip/mblock/ChangeLog
gnuradio/branches/developers/jcorgan/wip/mblock/Makefile.am
gnuradio/branches/developers/jcorgan/wip/mblock/README
gnuradio/branches/developers/jcorgan/wip/mblock/doc/
gnuradio/branches/developers/jcorgan/wip/mblock/doc/Makefile.am
gnuradio/branches/developers/jcorgan/wip/mblock/src/
gnuradio/branches/developers/jcorgan/wip/mblock/src/Makefile.am
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/Makefile.am
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_common.h
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_mblock.h
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.cc
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.h
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.cc
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.h
Modified:
gnuradio/branches/developers/jcorgan/wip/Makefile.common
gnuradio/branches/developers/jcorgan/wip/config/Makefile.am
gnuradio/branches/developers/jcorgan/wip/config/grc_ezdop.m4
gnuradio/branches/developers/jcorgan/wip/configure.ac
gnuradio/branches/developers/jcorgan/wip/ezdop/src/firmware/Makefile.am
gnuradio/branches/developers/jcorgan/wip/gnuradio-core/src/lib/Makefile.am
gnuradio/branches/developers/jcorgan/wip/gnuradio-core/src/lib/general/gr_chunks_to_symbols_XX.cc.t
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/README
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_128.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_16.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_4.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_8.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o4_4.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/rep3.fsm
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_utils.py
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_hard.py
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm.py
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm1.py
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm_combined.py
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm_parallel.py
gnuradio/branches/developers/jcorgan/wip/gr-error-correcting-codes/src/lib/libecc/tests/qa_encoder_convolutional_ic1_ic1.cc
gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/eb-xambi.cc
gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/sim-airplane.cc
gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/sim-airplane2.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/Makefile.am
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_calc_metric.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_calc_metric.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.cc.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.h.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.i.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.cc.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.h.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.i.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.cc.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.h.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.i.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.h.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.i.t
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.i
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.cc
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.h
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.i
gnuradio/branches/developers/jcorgan/wip/pmt/src/lib/Makefile.am
Log:
Merged trunk -r3317:3350 into jcorgan/wip.
Modified: gnuradio/branches/developers/jcorgan/wip/Makefile.common
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/Makefile.common 2006-08-19
00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/Makefile.common 2006-08-19
00:45:20 UTC (rev 3352)
@@ -68,6 +68,9 @@
USRP_LIBS = -L$(top_builddir)/usrp/host/lib \
-lusrp
+PMT_INCLUDES = -I$(top_srcdir)/pmt/src/lib
+PMT_LIBS = -L$(top_builddir)/pmt/src/lib -lpmt
+
# 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) $(GNURADIO_INCLUDES) $(BOOST_CFLAGS)
Deleted: gnuradio/branches/developers/jcorgan/wip/TODO.build
Modified: gnuradio/branches/developers/jcorgan/wip/config/Makefile.am
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/config/Makefile.am 2006-08-19
00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/config/Makefile.am 2006-08-19
00:45:20 UTC (rev 3352)
@@ -50,6 +50,7 @@
grc_gr_usrp.m4 \
grc_gr_video_sdl.m4 \
grc_gr_wxgui.m4 \
+ grc_mblock.m4 \
gr_check_createfilemapping.m4 \
gr_check_mc4020.m4 \
gr_check_shm_open.m4 \
Modified: gnuradio/branches/developers/jcorgan/wip/config/grc_ezdop.m4
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/config/grc_ezdop.m4
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/config/grc_ezdop.m4
2006-08-19 00:45:20 UTC (rev 3352)
@@ -33,24 +33,30 @@
succeeded=yes
- AC_PATH_PROG(AVRGCC, [avr-gcc -v], no)
- if test $AVRGCC = no; then
+ # Firmware build requires Atmel AVR microcontroller port of GCC
+ AC_PATH_PROG([AVRGCC], [avr-gcc -v], [no])
+ if test x$AVRGCC = xno; then
succeeded=no
fi
- AC_PATH_PROG(AVROBJCOPY, [avr-objcopy], no)
- if test $AVROBJCOPY = no; then
+ # ...and binutils
+ AC_PATH_PROG([AVROBJCOPY], [avr-objcopy], [no])
+ if test x$AVROBJCOPY = xno; then
succeeded=no
fi
+ # ...and standard library (test not working yet)
+ #AC_CHECK_HEADERS([avr/io.h],[],[succeeded=no])
+
+ # Device access is via libftdi
AC_LANG_PUSH(C)
AC_CHECK_HEADERS([ftdi.h],[],[succeeded=no])
save_LIBS="$LIBS"
- AC_SEARCH_LIBS(ftdi_init, [ftdi],[FTDI_LIBS="$LIBS"],[succeeded=no])
+ AC_SEARCH_LIBS([ftdi_init], [ftdi],[FTDI_LIBS="$LIBS"],[succeeded=no])
LIBS="$save_LIBS"
AC_LANG_POP
- if test $succeeded = yes; then
+ if test x$succeeded = xyes; then
EZDOP_INCLUDES='-I$(top_srcdir)/ezdop/src/host/ezdop/
-I$(top_srcdir)/ezdop/src/firmware/'
EZDOP_LIBS='-lezdop'
AC_SUBST(FTDI_LIBS)
Copied: gnuradio/branches/developers/jcorgan/wip/config/grc_mblock.m4 (from rev
3351, gnuradio/trunk/config/grc_mblock.m4)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/config/grc_mblock.m4
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/config/grc_mblock.m4
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,34 @@
+dnl Copyright 2001,2002,2003,2004,2005,2006 Free Software Foundation, Inc.
+dnl
+dnl This file is part of GNU Radio
+dnl
+dnl GNU Radio is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2, or (at your option)
+dnl any later version.
+dnl
+dnl GNU Radio is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with GNU Radio; see the file COPYING. If not, write to
+dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+dnl Boston, MA 02111-1307, USA.
+
+AC_DEFUN([GRC_MBLOCK],[
+ AC_CONFIG_SRCDIR([mblock/src/lib/mb_mblock.h])
+
+ AC_CONFIG_FILES([\
+ mblock/Makefile \
+ mblock/doc/Makefile \
+ mblock/src/Makefile \
+ mblock/src/lib/Makefile
+ ])
+
+ dnl run_tests is created from run_tests.in. Make it executable.
+ dnl AC_CONFIG_COMMANDS([run_tests_mblock], [chmod +x
mblock/src/python/run_tests])
+
+ subdirs="$subdirs mblock"
+])
Modified: gnuradio/branches/developers/jcorgan/wip/configure.ac
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/configure.ac 2006-08-19
00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/configure.ac 2006-08-19
00:45:20 UTC (rev 3352)
@@ -156,23 +156,23 @@
GRC_GR_USRP dnl this must come after GRC_USRP
GRC_GR_AUDIO_ALSA
#GRC_GR_AUDIO_JACK
-#GRC_GR_AUDIO_OSS
-#GRC_GR_AUDIO_OSX dnl ***NOT TESTED***
+GRC_GR_AUDIO_OSS
+#GRC_GR_AUDIO_OSX
#GRC_GR_AUDIO_PORTAUDIO dnl ***NOT TESTED***
#GRC_GR_AUDIO_WINDOWS dnl ***NOT TESTED***
#GRC_GR_ATSC
#GRC_GR_COMEDI
-GRC_GR_ERROR_CORRECTING_CODES dnl disabled until fix for ticket:25
+#dnl GRC_GR_ERROR_CORRECTING_CODES dnl disabled until fix for ticket:36
#GRC_GR_GSM_FR_VOCODER
#GRC_GR_RADAR
#GRC_GR_RADIO_ASTRONOMY
#GRC_GR_VIDEO_SDL
GRC_GR_WXGUI
#GRC_PMT
+#GRC_MBLOCK dnl this must come after GRC_PMT
#GRC_GR_TRELLIS
-GRC_EZDOP
+GRC_EZDOP
GRC_GR_EZDOP dnl this must come after GRC_EZDOP
-GRC_GR_RDF
dnl Has list of successfully configured components
AC_SUBST([subdirs],$subdirs)
Modified:
gnuradio/branches/developers/jcorgan/wip/ezdop/src/firmware/Makefile.am
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/ezdop/src/firmware/Makefile.am
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/ezdop/src/firmware/Makefile.am
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,21 +29,16 @@
override CFLAGS=
noinst_PROGRAMS = dopctrl.elf dopctrl.hex
-
-EXTRA_DIST = \
- dopctrl.hex
dopctrl_elf_CFLAGS=-mmcu=atmega8 -funsigned-char -funsigned-bitfields
-fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=$(<:.c=.lst)
dopctrl_elf_SOURCES = dopctrl.c
-
+
include_HEADERS = dopctrl.h
dopctrl.hex : dopctrl.elf
$(OBJCOPY) -O ihex -R .eeprom dopctrl.elf dopctrl.hex
-
-install-data-local:
- $(INSTALL_DATA) -D $(top_builddir)/ezdop/src/firmware/dopctrl.hex
$(DESTDIR)$(datadir)/dopctrl.hex
-uninstall-local:
- $(RM) $(DESTDIR)$(datadir)/dopctrl.hex
+firmwaredir = $(prefix)/share/ezdop
+firmware_DATA = dopctrl.hex
+
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-core/src/lib/Makefile.am
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gnuradio-core/src/lib/Makefile.am
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gnuradio-core/src/lib/Makefile.am
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,7 +24,6 @@
## Process this file with automake to produce Makefile.in
# We've got to build . before swig
-# FIXME add atsc back
SUBDIRS = missing runtime filter general g72x reed-solomon omnithread io . swig
# generate libgnuradio-core.la from the convenience libraries in subdirs
@@ -38,9 +37,6 @@
libgnuradio_core_qa_la_LDFLAGS = $(NO_UNDEFINED) -version-info 0:0:0 \
$(LIBGNURADIO_CORE_EXTRA_LDFLAGS)
-FIXME = \
- atsc/libatsc.la
-
libgnuradio_core_la_LIBADD = \
filter/libfilter.la \
g72x/libccitt.la \
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-core/src/lib/general/gr_chunks_to_symbols_XX.cc.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-core/src/lib/general/gr_chunks_to_symbols_XX.cc.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-core/src/lib/general/gr_chunks_to_symbols_XX.cc.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -62,7 +62,7 @@
// per stream processing
for (int i = 0; i < noutput_items / d_D; i++){
- assert (((unsigned int)in[i]*d_D) < d_symbol_table.size());
+ assert (((unsigned int)in[i]*d_D+d_D) <= d_symbol_table.size());
memcpy(out, &d_symbol_table[(unsigned int)in[i]*d_D],
d_D*sizeof(@O_TYPE@));
out+=d_D;
}
Property changes on:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding
___________________________________________________________________
Name: svn:ignore
- Makefile
Makefile.in
+ Makefile
Makefile.in
.la
.lo
.deps
.libs
*.la
*.lo
*.pyc
*.pyo
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/README
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/README
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/README
2006-08-19 00:45:20 UTC (rev 3352)
@@ -8,26 +8,39 @@
If you just want to see what these programs do, run each of the following:
-./test_tcm.py fsm_files/awgn1o2_4.fsm 10.0 1000
-./test_tcm1.py fsm_files/awgn1o2_4.fsm 10.0 1000
-./test_tcm_combined.py fsm_files/awgn1o2_4.fsm 10.0 1000
-./test_tcm_parallel.py fsm_files/awgn1o2_4.fsm 10.0 1000
-./test_sccc_hard.py fsm_files/awgn1o2_4.fsm fsm_files/awgn1o2_4.fsm 10.0 1000
+./test_tcm.py fsm_files/awgn1o2_4.fsm 6.0 1000
+./test_tcm1.py fsm_files/awgn1o2_4.fsm 6.0 1000
+./test_tcm2.py 6.0 1000
+./test_tcm_combined.py fsm_files/awgn1o2_4.fsm 6.0 1000
+./test_tcm_parallel.py fsm_files/awgn1o2_4.fsm 6.0 1000
+./test_sccc_hard.py fsm_files/awgn1o2_4.fsm fsm_files/awgn1o2_4_msb.fsm 10.0
100
+./test_sccc_soft.py fsm_files/awgn1o2_4.fsm fsm_files/awgn1o2_4_msb.fsm 8.0
100
+./test_sccc_turbo.py fsm_files/awgn1o2_4.fsm fsm_files/awgn1o2_4_msb.fsm 5.0
100
+
In your terminal you will see something like this:
address@hidden channel-coding]$ ./test_tcm.py fsm_files/awgn1o2_4.fsm 6.0 1000
-100 1024 1 103424 10 9.668936e-05
-200 1024 1 205824 21 1.020289e-04
-300 1024 0 308224 40 1.297757e-04
-400 1024 0 410624 1074 2.615531e-03
-500 1024 0 513024 1081 2.107114e-03
-600 1024 0 615424 1090 1.771137e-03
-700 1024 0 717824 1097 1.528230e-03
-800 1024 0 820224 1107 1.349631e-03
-900 1024 0 922624 1120 1.213929e-03
-1024000 1129 1.102539e-03
+$ ./test_tcm.py fsm_files/awgn1o2_4.fsm 6.0 1000
+100 98 9.80e-01 102400 9 8.79e-05
+200 198 9.90e-01 204800 20 9.77e-05
+300 298 9.93e-01 307200 40 1.30e-04
+400 398 9.95e-01 409600 1074 2.62e-03
+500 498 9.96e-01 512000 1081 2.11e-03
+600 598 9.97e-01 614400 1090 1.77e-03
+700 698 9.97e-01 716800 1097 1.53e-03
+800 798 9.98e-01 819200 1107 1.35e-03
+900 898 9.98e-01 921600 1120 1.22e-03
+1000 998 9.98e-01 1024000 1129 1.10e-03
+1000 998 9.98e-01 1024000 1129 1.10e-03
-1.102539e-03 is the error rate estimates by sending 1000 packets of
-1024x16 bits each using an 1/2 4-state convolutional code and QPSK
+which gives you information about the:
+number of transmitted packets
+number of packets in error
+iestimated packet error rate
+number of transmitted shorts
+number of shorts in error
+estimated (short) error rate
+
+1.10e-03 is the error rate estimate by sending 1000 packets of
+1024 shorts each, using an 1/2 4-state convolutional code and QPSK
modulation through an AWGN with Es/N0 = 6.0 dB
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_128.fsm
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_128.fsm
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_128.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -260,5 +260,6 @@
-GM1o2_128=[1+D^3+D^4+D^5+D^6+D^7 1+D+D^2+D^5+D^7]
- =[249 167]
+GM1o2_128=[1+D+D^2+D^5+D^7 1+D^3+D^4+D^5+D^6+D^7]
+ =[11100101 10011111]
+ =[229 159]
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_16.fsm
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_16.fsm
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_16.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -36,4 +36,4 @@
-GM1o2_16=[1+D^2+D^3+D^4 1+D+D^4];
+GM1o2_16=[1+D+D^4 1+D^2+D^3+D^4 ] = [25,23] (decimal)
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_4.fsm
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_4.fsm
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_4.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -11,7 +11,4 @@
2 1
AWGN CC from Proakis-Salehi pg 779
-GM1o2_4=[1+D+D^2 1+D^2];
-
-
-
+GM1o2_4=[1+D^2, 1+D+D^2] = [5, 7] (in decimal);
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_8.fsm
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_8.fsm
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn1o2_8.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -21,4 +21,4 @@
1/2 8-state code (Proakis pg. 493)
-GM1o2_8=[ 1+D+D^2+D^3 1+D+D^3];
+GM1o2_8=[ 1+D+D^3 1+D+D^2+D^3] =[13 , 15] (decimal)
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4.fsm
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4.fsm
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -1,44 +1,15 @@
4 4 8
-0 2 1 3
-0 2 1 3
-0 2 1 3
-0 2 1 3
+0 1 2 3
+0 1 2 3
+0 1 2 3
+0 1 2 3
-0 3 5 6
-4 7 1 2
-7 4 2 1
-3 0 6 5
+0 7 4 3
+3 4 7 0
+5 2 1 6
+6 1 2 5
-
-This is generated by the 1/2 AWGN code (5 7) by puncturing the first (MSB) bit.
---> d_free=3
-
-before puncturing:
-
-00 03 31 32
-30 33 01 02
-13 10 22 21
-23 20 12 11
-
-or in decimal representation:
-
- 0 3 13 14
-12 15 1 2
- 7 4 10 9
-11 8 6 5
-
-by punturing the MSB you get (dmin=3)
-
-0 3 5 6
-4 7 1 2
-7 4 2 1
-3 0 6 5
-
-and by puncturing the LSB (something is wrong with this code)
-
-0 1 6 7
-6 7 0 1
-3 2 5 4
-5 4 3 2
-
+I don't remeber how I generated this one...
+it is a bit better than awgn2o3_4_msb and worse
+than awgn2o3_4_msbG.
Deleted:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_1.fsm
Copied:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msb.fsm
(from rev 3351,
gnuradio/trunk/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msb.fsm)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msb.fsm
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msb.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,46 @@
+4 4 8
+
+0 1 2 3
+0 1 2 3
+0 1 2 3
+0 1 2 3
+
+0 5 3 6
+4 1 7 2
+7 2 4 1
+3 6 0 5
+
+
+This is generated by the 1/2 AWGN code (5 7) operated twice, ie,
+(xk+1 xki) [xk-1 xk-2] -> [xk+1 xki].
+We also puncture the first (MSB) bit.
+This code is worse than awgn2o3_4_msbG and slightly worse than
+awgn2o3_4, BUT seems to be a good innner code for sctcm (with 8PSK natural).
+
+intermediate states:
+
+00 21 02 23
+00 21 02 23
+10 31 12 33
+10 31 12 33
+
+output before puncturing:
+
+00 31 03 32
+30 01 33 02
+13 22 10 21
+23 12 20 11
+
+output after punturing the MSB:
+
+00 11 03 12
+10 01 13 02
+13 02 10 01
+03 12 00 11
+
+and in decimal:
+
+0 5 3 6
+4 1 7 2
+7 2 4 1
+3 6 0 5
Copied:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msbG.fsm
(from rev 3351,
gnuradio/trunk/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msbG.fsm)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msbG.fsm
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o3_4_msbG.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,60 @@
+4 4 8
+
+0 1 2 3
+0 1 2 3
+0 1 2 3
+0 1 2 3
+
+0 4 2 6
+5 1 3 7
+3 7 5 1
+
+
+This is generated by the 1/2 AWGN code (5 7) operated twice, ie,
+(xk+1 xki) [xk-1 xk-2] -> [xk+1 xki].
+We also puncture the first (MSB) bit and Gray map the symbols.
+
+intermediate states:
+
+00 21 02 23
+00 21 02 23
+10 31 12 33
+10 31 12 33
+
+output before puncturing:
+
+00 31 03 32
+30 01 33 02
+13 22 10 21
+23 12 20 11
+
+output after punturing the MSB:
+
+00 11 03 12
+10 01 13 02
+13 02 10 01
+03 12 00 11
+
+and in decimal:
+
+0 5 3 6
+4 1 7 2
+7 2 4 1
+3 6 0 5
+
+After Gray mapping:
+label -> phase
+0 -> 0
+1 -> 0
+2 -> 7
+3 -> 2
+4 -> 5
+5 -> 4
+6 -> 6
+7 -> 3
+
+0 4 2 6
+5 1 3 7
+3 7 5 1
+2 6 0 4
+
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o4_4.fsm
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o4_4.fsm
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/awgn2o4_4.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -1,14 +1,36 @@
-4 4 16
+4 4 16
-0 2 1 3
-0 2 1 3
-0 2 1 3
-0 2 1 3
+0 1 2 3
+0 1 2 3
+0 1 2 3
+0 1 2 3
- 0 3 13 14
-12 15 1 2
- 7 4 10 9
-11 8 6 5
+ 0 13 3 14
+12 1 15 2
+ 7 10 4 9
+11 6 8 5
-generated by the awgn1o2_4.fsm code
-(two steps of the 1o2 code)
+
+This is generated by the 1/2 AWGN code (5 7) operated twice, ie,
+(xk+1 xki) [xk-1 xk-2] -> [xk+1 xki].
+
+intermediate states:
+
+00 21 02 23
+00 21 02 23
+10 31 12 33
+10 31 12 33
+
+output:
+
+00 31 03 32
+30 01 33 02
+13 22 10 21
+23 12 20 11
+
+and in decimal:
+
+ 0 13 3 14
+12 1 15 2
+ 7 10 4 9
+11 6 8 5
Copied:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/disconnected.fsm
(from rev 3351,
gnuradio/trunk/gnuradio-examples/python/channel-coding/fsm_files/disconnected.fsm)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/disconnected.fsm
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/disconnected.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,11 @@
+1 4 1
+
+1
+0
+3
+2
+
+0
+0
+0
+0
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/rep3.fsm
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/rep3.fsm
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/rep3.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -4,4 +4,5 @@
0 7
-1/3 repetition code (with binary input)
+1/3 repetition code (with binary input).
+There is only one state, since this is essentially a memoryless system.
Copied:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/simple.fsm
(from rev 3351,
gnuradio/trunk/gnuradio-examples/python/channel-coding/fsm_files/simple.fsm)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/simple.fsm
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_files/simple.fsm
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,13 @@
+1 4 1
+
+1
+2
+3
+0
+
+0
+0
+0
+0
+
+essentially this fsm has no inputs and no outputs; it ijust cycles through all
4 states.
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_utils.py
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_utils.py
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/fsm_utils.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -60,102 +60,7 @@
-
-
######################################################################
-# Automaticaly generate the FSM structure for a binary feed-forward
-# convolutional code.
-# Input: k x n generator matrix (decimal representation)
-######################################################################
-def make_fsm_bin_cc_ff(k,n,GM):
- mem=[[]]*k
- max_mem_x=[-1]*k
- max_mem = -1
- for i in range(k):
- memr=[0]*n
- for j in range(n):
- if GM[i][j]==0:
- memr[j]=-1
- else:
- memr[j]=int(math.log(GM[i][j],2))
- if memr[j]>max_mem_x[i]:
- max_mem_x[i]=memr[j]
- if memr[j]>max_mem:
- max_mem=memr[j]
- mem[i]=memr
-
- sum_max_mem = 0
- for i in range(k):
- sum_max_mem = sum_max_mem+max_mem_x[i]
-
-
- #print mem
- #print max_mem_x
- #print max_mem
- #print sum_max_mem
-
- I=2**k
- S=2**sum_max_mem
- O=2**n
-
- #print I, S, O
-
- NS=[0]*S*I;
- OS=[0]*S*I;
- for s in range(S):
- for i in range(I):
- ss=dec2base(s,2,sum_max_mem)
- ind=0
- ss_r=[]
- for kk in range(k):
- ss1 = [0]*max_mem
- ss1[0:max_mem_x[kk]] = ss[ind:ind+max_mem_x[kk]]
- ss_r.append(ss1)
- ind=ind+max_mem_x[kk]
- ii=dec2base(i,2,k)
-
- tt_r = ss_r
- for kk in range(k):
- tt_r[kk].insert(0,ii[kk])
- #print tt_r
-
- ns_r = []
- for kk in range(k):
- ns_r.append(tt_r[kk][0:max_mem])
-
- ns=[]
- for kk in range(k):
- ns = ns + ns_r[kk][0:max_mem_x[kk]]
- NS[s*I+i]=base2dec(ns,2);
-
- out_r=[0]*n
- for nn in range(n):
- out=0;
- for kk in range(k):
- c=[0]*max_mem
- gm = dec2base(GM[kk][nn],2,max_mem_x[kk]+1)
- gm.reverse()
- c[0:len(gm)] = gm
- sy = 0
- for m in range(len(c)):
- sy = sy + c[m]*tt_r[kk][m];
- out=operator.mod(out+sy,2);
- out_r[nn]=out;
- out_r.reverse()
- OS[s*I+i] = base2dec(out_r,2);
-
- #O=max(max(OS))+1;
- print I, S, O
- print NS
- print OS
-
- return (I,S,O,NS,OS)
-
-
-
-
-
-######################################################################
# Automatically generate the lookup table that maps the FSM outputs
# to channel inputs corresponding to a channel 'channel' and a modulation
# 'mod'. Optional normalization of channel to unit energy.
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_hard.py
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_hard.py
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_hard.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -18,7 +18,7 @@
src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
s2fsmi = gr.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack
shorts to symbols compatible with the outer FSM input cardinality
enc_out = trellis.encoder_ss(fo,0) # initial state = 0
- inter =
trellis.permutation(interleaver.K(),interleaver.INTER(),gr.sizeof_short)
+ inter =
trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
enc_in = trellis.encoder_ss(fi,0) # initial state = 0
mod = gr.chunks_to_symbols_sf(constellation,dimensionality)
@@ -29,7 +29,7 @@
# RX
metrics_in =
trellis.metrics_f(fi.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN)
# data preprocessing to generate metrics for innner Viterbi
va_in = trellis.viterbi_s(fi,K,0,-1) # Put -1 if the Initial/Final states
are not set.
- deinter =
trellis.permutation(interleaver.K(),interleaver.DEINTER(),gr.sizeof_short)
+ deinter =
trellis.permutation(interleaver.K(),interleaver.DEINTER(),1,gr.sizeof_short)
metrics_out =
trellis.metrics_s(fo.O(),1,[0,1,2,3],trellis.TRELLIS_HARD_SYMBOL) # data
preprocessing to generate metrics for outer Viterbi (hard decisions)
va_out = trellis.viterbi_s(fo,K,0,-1) # Put -1 if the Initial/Final states
are not set.
fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack
FSM input symbols to shorts
@@ -85,14 +85,16 @@
tot_s=0 # total number of transmitted shorts
terr_s=0 # total number of shorts in error
+ terr_p=0 # total number of packets in error
for i in range(rep):
(s,e)=run_test(fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,N0,-long(666+i))
# run experiment with different seed to get different noise realizations
tot_s=tot_s+s
terr_s=terr_s+e
- if (i%100==0) & (i>0): # display progress
- print i,s,e,tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ terr_p=terr_p+(terr_s!=0)
+ if ((i+1)%100==0) : # display progress
+ print i+1,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s,
'%.2e' % ((1.0*terr_s)/tot_s)
# estimate of the (short or bit) error rate
- print tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ print rep,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s, '%.2e' %
((1.0*terr_s)/tot_s)
if __name__ == '__main__':
Copied:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_soft.py
(from rev 3351,
gnuradio/trunk/gnuradio-examples/python/channel-coding/test_sccc_soft.py)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_soft.py
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_soft.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+
+from gnuradio import gr
+from gnuradio import audio
+from gnuradio import trellis
+from gnuradio import eng_notation
+import math
+import sys
+import random
+import fsm_utils
+
+
+
+
+def run_test
(fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed):
+ fg = gr.flow_graph ()
+
+
+ # TX
+ src = gr.lfsr_32k_source_s()
+ src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+ s2fsmi = gr.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack
shorts to symbols compatible with the outer FSM input cardinality
+ enc_out = trellis.encoder_ss(fo,0) # initial state = 0
+ inter =
trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
+ enc_in = trellis.encoder_ss(fi,0) # initial state = 0
+ mod = gr.chunks_to_symbols_sf(constellation,dimensionality)
+
+ # CHANNEL
+ add = gr.add_ff()
+ noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed)
+
+ # RX
+ metrics_in =
trellis.metrics_f(fi.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN)
# data preprocessing to generate metrics for innner Viterbi
+ gnd = gr.vector_source_f([0],True);
+ siso_in = trellis.siso_f(fi,K,0,-1,True,False,trellis.TRELLIS_MIN_SUM) #
Put -1 if the Initial/Final states are not set.
+ deinter =
trellis.permutation(interleaver.K(),interleaver.DEINTER(),fi.I(),gr.sizeof_float)
+ va_out = trellis.viterbi_s(fo,K,0,-1) # Put -1 if the Initial/Final states
are not set.
+ fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack
FSM input symbols to shorts
+ dst = gr.check_lfsr_32k_s()
+
+ fg.connect (src,src_head,s2fsmi,enc_out,inter,enc_in,mod)
+ fg.connect (mod,(add,0))
+ fg.connect (noise,(add,1))
+ fg.connect (add,metrics_in)
+ fg.connect (gnd,(siso_in,0))
+ fg.connect (metrics_in,(siso_in,1))
+ fg.connect (siso_in,deinter,va_out,fsmi2s,dst)
+
+ fg.run()
+
+ ntotal = dst.ntotal ()
+ nright = dst.nright ()
+ runlength = dst.runlength ()
+ return (ntotal,ntotal-nright)
+
+
+def main(args):
+ nargs = len (args)
+ if nargs == 4:
+ fname_out=args[0]
+ fname_in=args[1]
+ esn0_db=float(args[2]) # Es/No in dB
+ rep=int(args[3]) # number of times the experiment is run to collect
enough errors
+ else:
+ sys.stderr.write ('usage: test_tcm.py fsm_name_out fsm_fname_in
Es/No_db repetitions\n')
+ sys.exit (1)
+
+ # system parameters
+ Kb=1024*16 # packet size in bits (make it multiple of 16 so it can be
packed in a short)
+ fo=trellis.fsm(fname_out) # get the outer FSM specification from a file
+ fi=trellis.fsm(fname_in) # get the innner FSM specification from a file
+ bitspersymbol = int(round(math.log(fo.I())/math.log(2))) # bits per FSM
input symbol
+ if fo.O() != fi.I():
+ sys.stderr.write ('Incompatible cardinality between outer and inner
FSM.\n')
+ sys.exit (1)
+ K=Kb/bitspersymbol # packet size in trellis steps
+ interleaver=trellis.interleaver(K,666) # construct a random interleaver
+ modulation = fsm_utils.psk8 # see fsm_utlis.py for available predefined
modulations
+ dimensionality = modulation[0]
+ constellation = modulation[1]
+ if len(constellation)/dimensionality != fi.O():
+ sys.stderr.write ('Incompatible FSM output cardinality and modulation
size.\n')
+ sys.exit (1)
+ # calculate average symbol energy
+ Es = 0
+ for i in range(len(constellation)):
+ Es = Es + constellation[i]**2
+ Es = Es / (len(constellation)/dimensionality)
+ N0=Es/pow(10.0,esn0_db/10.0); # calculate noise variance
+
+
+ tot_s=0 # total number of transmitted shorts
+ terr_s=0 # total number of shorts in error
+ terr_p=0 # total number of packets in error
+ for i in range(rep):
+
(s,e)=run_test(fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,N0,-long(666+i))
# run experiment with different seed to get different noise realizations
+ tot_s=tot_s+s
+ terr_s=terr_s+e
+ terr_p=terr_p+(terr_s!=0)
+ if ((i+1)%100==0) : # display progress
+ print i+1,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s,
'%.2e' % ((1.0*terr_s)/tot_s)
+ # estimate of the (short or bit) error rate
+ print rep,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s, '%.2e' %
((1.0*terr_s)/tot_s)
+
+
+
+if __name__ == '__main__':
+ main (sys.argv[1:])
Copied:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_turbo.py
(from rev 3351,
gnuradio/trunk/gnuradio-examples/python/channel-coding/test_sccc_turbo.py)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_turbo.py
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_sccc_turbo.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,139 @@
+#!/usr/bin/env python
+
+from gnuradio import gr
+from gnuradio import audio
+from gnuradio import trellis
+from gnuradio import eng_notation
+import math
+import sys
+import random
+import fsm_utils
+
+
+
+def make_rx(fg,fo,fi,dimensionality,constellation,K,interleaver,IT,Es,N0,type):
+ metrics_in =
trellis.metrics_f(fi.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN)
# data preprocessing to generate metrics for innner Viterbi
+ scale = gr.multiply_const_ff(1.0/N0)
+ gnd = gr.vector_source_f([0],True);
+
+ inter=[]
+ deinter=[]
+ siso_in=[]
+ siso_out=[]
+
+ for it in range(IT-1):
+ inter.append(
trellis.permutation(interleaver.K(),interleaver.INTER(),fi.I(),gr.sizeof_float)
)
+ siso_in.append( trellis.siso_f(fi,K,0,3,True,False,type) )
+ deinter.append(
trellis.permutation(interleaver.K(),interleaver.DEINTER(),fi.I(),gr.sizeof_float)
)
+ siso_out.append( trellis.siso_f(fo,K,0,3,False,True,type) )
+ fg.connect (inter[it],(siso_in[it],0))
+ fg.connect (gnd,(siso_out[it],0))
+ fg.connect (siso_in[it],deinter[it],(siso_out[it],1))
+
+ inter.append(
trellis.permutation(interleaver.K(),interleaver.INTER(),fi.I(),gr.sizeof_float)
)
+ siso_in.append( trellis.siso_f(fi,K,0,-1,True,False,type) )
+ deinter.append(
trellis.permutation(interleaver.K(),interleaver.DEINTER(),fi.I(),gr.sizeof_float)
)
+ siso_out.append( trellis.viterbi_s(fo,K,0,-1) )
+ fg.connect (inter[IT-1],(siso_in[IT-1],0))
+ fg.connect (siso_in[IT-1],deinter[IT-1],siso_out[IT-1])
+
+ # connect first stage
+ fg.connect (gnd,inter[0])
+ fg.connect (metrics_in,scale)
+ fg.connect (scale,(siso_in[0],1))
+ for it in range(IT-1):
+ fg.connect (siso_out[it],inter[it+1])
+ fg.connect (metrics_in,(siso_in[it+1],1))
+ return (metrics_in,siso_out[IT-1])
+
+
+def run_test
(fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,Es,N0,IT,seed):
+ fg = gr.flow_graph ()
+
+
+ # TX
+ src = gr.lfsr_32k_source_s()
+ src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+ s2fsmi = gr.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack
shorts to symbols compatible with the outer FSM input cardinality
+ enc_out = trellis.encoder_ss(fo,0) # initial state = 0
+ inter =
trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
+ enc_in = trellis.encoder_ss(fi,0) # initial state = 0
+ mod = gr.chunks_to_symbols_sf(constellation,dimensionality)
+
+ # CHANNEL
+ add = gr.add_ff()
+ noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed)
+
+ # RX
+ (head,tail) =
make_rx(fg,fo,fi,dimensionality,constellation,K,interleaver,IT,Es,N0,trellis.TRELLIS_MIN_SUM)
+ #(head,tail) =
make_rx(fg,fo,fi,dimensionality,constellation,K,interleaver,IT,Es,N0,trellis.TRELLIS_SUM_PRODUCT)
+ fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack
FSM input symbols to shorts
+ dst = gr.check_lfsr_32k_s()
+
+ fg.connect (src,src_head,s2fsmi,enc_out,inter,enc_in,mod)
+ fg.connect (mod,(add,0))
+ fg.connect (noise,(add,1))
+ fg.connect (add,head)
+ fg.connect (tail,fsmi2s,dst)
+
+ fg.run()
+
+ #print enc_out.ST(), enc_in.ST()
+
+ ntotal = dst.ntotal ()
+ nright = dst.nright ()
+ runlength = dst.runlength ()
+ return (ntotal,ntotal-nright)
+
+
+def main(args):
+ nargs = len (args)
+ if nargs == 4:
+ fname_out=args[0]
+ fname_in=args[1]
+ esn0_db=float(args[2]) # Es/No in dB
+ rep=int(args[3]) # number of times the experiment is run to collect
enough errors
+ else:
+ sys.stderr.write ('usage: test_tcm.py fsm_name_out fsm_fname_in
Es/No_db repetitions\n')
+ sys.exit (1)
+
+ # system parameters
+ Kb=1024*16 # packet size in bits (make it multiple of 16 so it can be
packed in a short)
+ fo=trellis.fsm(fname_out) # get the outer FSM specification from a file
+ fi=trellis.fsm(fname_in) # get the innner FSM specification from a file
+ bitspersymbol = int(round(math.log(fo.I())/math.log(2))) # bits per FSM
input symbol
+ if fo.O() != fi.I():
+ sys.stderr.write ('Incompatible cardinality between outer and inner
FSM.\n')
+ sys.exit (1)
+ K=Kb/bitspersymbol # packet size in trellis steps
+ interleaver=trellis.interleaver(K,666) # construct a random interleaver
+ modulation = fsm_utils.psk8 # see fsm_utlis.py for available predefined
modulations
+ dimensionality = modulation[0]
+ constellation = modulation[1]
+ if len(constellation)/dimensionality != fi.O():
+ sys.stderr.write ('Incompatible FSM output cardinality and modulation
size.\n')
+ sys.exit (1)
+ # calculate average symbol energy
+ Es = 0
+ for i in range(len(constellation)):
+ Es = Es + constellation[i]**2
+ Es = Es / (len(constellation)/dimensionality)
+ N0=Es/pow(10.0,esn0_db/10.0); # calculate noise variance
+ IT = 3 # number of turbo iterations
+
+ tot_s=0 # total number of transmitted shorts
+ terr_s=0 # total number of shorts in error
+ terr_p=0 # total number of packets in error
+ for i in range(rep):
+
(s,e)=run_test(fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,Es,N0,IT,-long(666+i))
# run experiment with different seed to get different noise realizations
+ tot_s=tot_s+s
+ terr_s=terr_s+e
+ terr_p=terr_p+(terr_s!=0)
+ if ((i+1)%10==0): # display progress
+ print i+1,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s,
'%.2e' % ((1.0*terr_s)/tot_s)
+ # estimate of the (short or bit) error rate
+ print rep,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s, '%.2e' %
((1.0*terr_s)/tot_s)
+
+
+if __name__ == '__main__':
+ main (sys.argv[1:])
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm.py
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm.py
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -101,15 +101,18 @@
tot_s=0 # total number of transmitted shorts
terr_s=0 # total number of shorts in error
+ terr_p=0 # total number of packets in error
for i in range(rep):
(s,e)=run_test(f,Kb,bitspersymbol,K,dimensionality,constellation,N0,-long(666+i))
# run experiment with different seed to get different noise realizations
tot_s=tot_s+s
terr_s=terr_s+e
- if (i%100==0) & (i>0): # display progress
- print i,s,e,tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ terr_p=terr_p+(terr_s!=0)
+ if ((i+1)%100==0) : # display progress
+ print i+1,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s,
'%.2e' % ((1.0*terr_s)/tot_s)
# estimate of the (short or bit) error rate
- print tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ print rep,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s, '%.2e' %
((1.0*terr_s)/tot_s)
+
if __name__ == '__main__':
main (sys.argv[1:])
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm1.py
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm1.py
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm1.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -102,18 +102,20 @@
Es = Es / (len(constellation)/dimensionality)
N0=Es/pow(10.0,esn0_db/10.0); # noise variance
-
- tot_s=0
- terr_s=0
+ tot_s=0 # total number of transmitted shorts
+ terr_s=0 # total number of shorts in error
+ terr_p=0 # total number of packets in error
for i in range(rep):
(s,e)=run_test(f,Kb,bitspersymbol,K,dimensionality,constellation,N0,-long(666+i))
# run experiment with different seed to get different noise realizations
tot_s=tot_s+s
terr_s=terr_s+e
- if (i%1==0) & (i>0):
- print i,s,e,tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ terr_p=terr_p+(terr_s!=0)
+ if ((i+1)%1==0) : # display progress
+ print i+1,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s,
'%.2e' % ((1.0*terr_s)/tot_s)
# estimate of the (short or bit) error rate
- print tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ print rep,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s, '%.2e' %
((1.0*terr_s)/tot_s)
+
if __name__ == '__main__':
main (sys.argv[1:])
Copied:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm2.py
(from rev 3351,
gnuradio/trunk/gnuradio-examples/python/channel-coding/test_tcm2.py)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm2.py
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm2.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,116 @@
+#!/usr/bin/env python
+
+from gnuradio import gr
+from gnuradio import audio
+from gnuradio import trellis
+from gnuradio import eng_notation
+import math
+import sys
+import random
+import fsm_utils
+
+def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed):
+ fg = gr.flow_graph ()
+
+
+ # TX
+ #packet = [0]*Kb
+ #for i in range(Kb-1*16): # last 16 bits = 0 to drive the final state to 0
+ #packet[i] = random.randint(0, 1) # random 0s and 1s
+ #src = gr.vector_source_s(packet,False)
+ src = gr.lfsr_32k_source_s()
+ src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+ #b2s = gr.unpacked_to_packed_ss(1,gr.GR_MSB_FIRST) # pack bits in shorts
+ s2fsmi = gr.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack
shorts to symbols compatible with the FSM input cardinality
+ enc = trellis.encoder_ss(f,0) # initial state = 0
+ mod = gr.chunks_to_symbols_sf(constellation,dimensionality)
+
+ # CHANNEL
+ add = gr.add_ff()
+ noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed)
+
+ # RX
+ metrics =
trellis.metrics_f(f.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN)
# data preprocessing to generate metrics for Viterbi
+ va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are
not set.
+ fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack
FSM input symbols to shorts
+ #s2b = gr.packed_to_unpacked_ss(1,gr.GR_MSB_FIRST) # unpack shorts to bits
+ #dst = gr.vector_sink_s();
+ dst = gr.check_lfsr_32k_s()
+
+
+ fg.connect (src,src_head,s2fsmi,enc,mod)
+ #fg.connect (src,b2s,s2fsmi,enc,mod)
+ fg.connect (mod,(add,0))
+ fg.connect (noise,(add,1))
+ fg.connect (add,metrics)
+ fg.connect (metrics,va,fsmi2s,dst)
+ #fg.connect (metrics,va,fsmi2s,s2b,dst)
+
+
+ fg.run()
+
+ # A bit of cheating: run the program once and print the
+ # final encoder state..
+ # Then put it as the last argument in the viterbi block
+ #print "final state = " , enc.ST()
+
+ ntotal = dst.ntotal ()
+ nright = dst.nright ()
+ runlength = dst.runlength ()
+ #ntotal = len(packet)
+ #if len(dst.data()) != ntotal:
+ #print "Error: not enough data\n"
+ #nright = 0;
+ #for i in range(ntotal):
+ #if packet[i]==dst.data()[i]:
+ #nright=nright+1
+ #else:
+ #print "Error in ", i
+ return (ntotal,ntotal-nright)
+
+
+
+
+def main(args):
+ nargs = len (args)
+ if nargs == 2:
+ esn0_db=float(args[0]) # Es/No in dB
+ rep=int(args[1]) # number of times the experiment is run to collect
enough errors
+ else:
+ sys.stderr.write ('usage: test_tcm2.py Es/No_db repetitions\n')
+ sys.exit (1)
+
+ # system parameters
+ f=trellis.fsm(1,2,[5,7]) # generate FSM specification from the generator
matrix
+ Kb=1024*16 # packet size in bits (make it multiple of 16 so it can be
packed in a short)
+ bitspersymbol = int(round(math.log(f.I())/math.log(2))) # bits per FSM
input symbol
+ K=Kb/bitspersymbol # packet size in trellis steps
+ modulation = fsm_utils.psk4 # see fsm_utlis.py for available predefined
modulations
+ dimensionality = modulation[0]
+ constellation = modulation[1]
+ if len(constellation)/dimensionality != f.O():
+ sys.stderr.write ('Incompatible FSM output cardinality and modulation
size.\n')
+ sys.exit (1)
+ # calculate average symbol energy
+ Es = 0
+ for i in range(len(constellation)):
+ Es = Es + constellation[i]**2
+ Es = Es / (len(constellation)/dimensionality)
+ N0=Es/pow(10.0,esn0_db/10.0); # calculate noise variance
+
+ tot_s=0 # total number of transmitted shorts
+ terr_s=0 # total number of shorts in error
+ terr_p=0 # total number of packets in error
+ for i in range(rep):
+
(s,e)=run_test(f,Kb,bitspersymbol,K,dimensionality,constellation,N0,-long(666+i))
# run experiment with different seed to get different noise realizations
+ tot_s=tot_s+s
+ terr_s=terr_s+e
+ terr_p=terr_p+(terr_s!=0)
+ if ((i+1)%100==0) : # display progress
+ print i+1,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s,
'%.2e' % ((1.0*terr_s)/tot_s)
+ # estimate of the (short or bit) error rate
+ print rep,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s, '%.2e' %
((1.0*terr_s)/tot_s)
+
+
+if __name__ == '__main__':
+ main (sys.argv[1:])
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm_combined.py
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm_combined.py
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm_combined.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -80,19 +80,21 @@
Es = Es / (len(constellation)/dimensionality)
N0=Es/pow(10.0,esn0_db/10.0); # noise variance
-
- tot_s=0
- terr_s=0
+ tot_s=0 # total number of transmitted shorts
+ terr_s=0 # total number of shorts in error
+ terr_p=0 # total number of packets in error
for i in range(rep):
(s,e)=run_test(f,Kb,bitspersymbol,K,dimensionality,constellation,N0,-long(666+i))
# run experiment with different seed to get different noise realizations
tot_s=tot_s+s
terr_s=terr_s+e
- if (i%100==0) & (i>0):
- print i,s,e,tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
- # estimate of the (short) error rate
- print tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ terr_p=terr_p+(terr_s!=0)
+ if ((i+1)%100==0) : # display progress
+ print i+1,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s,
'%.2e' % ((1.0*terr_s)/tot_s)
+ # estimate of the (short or bit) error rate
+ print rep,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s, '%.2e' %
((1.0*terr_s)/tot_s)
+
if __name__ == '__main__':
main (sys.argv[1:])
Modified:
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm_parallel.py
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm_parallel.py
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gnuradio-examples/python/channel-coding/test_tcm_parallel.py
2006-08-19 00:45:20 UTC (rev 3352)
@@ -15,7 +15,7 @@
src = gr.lfsr_32k_source_s()
src_head = gr.head (gr.sizeof_short,Kb/16*P) # packet size in shorts
s2fsmi=gr.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack
shorts to symbols compatible with the FSM input cardinality
- s2p = gr.stream_to_streams(2,P) # serial to parallel
+ s2p = gr.stream_to_streams(gr.sizeof_short,P) # serial to parallel
enc = trellis.encoder_ss(f,0) # initiali state = 0
mod = gr.chunks_to_symbols_sf(constellation,dimensionality)
@@ -26,11 +26,10 @@
add.append(gr.add_ff())
noise.append(gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed))
-
# RX
metrics =
trellis.metrics_f(f.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN)
# data preprocessing to generate metrics for Viterbi
va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are
not set.
- p2s = gr.streams_to_stream(2,P) # parallel to serial
+ p2s = gr.streams_to_stream(gr.sizeof_short,P) # parallel to serial
fsmi2s=gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM
input symbols to shorts
dst = gr.check_lfsr_32k_s()
@@ -90,14 +89,16 @@
tot_s=0 # total number of transmitted shorts
terr_s=0 # total number of shorts in error
+ terr_p=0 # total number of packets in error
for i in range(rep):
(s,e)=run_test(f,Kb,bitspersymbol,K,dimensionality,constellation,N0,-long(666+i),P)
# run experiment with different seed to get different noise realizations
tot_s=tot_s+s
terr_s=terr_s+e
- if (i%10==0) & (i>0): # display progress
- print i,s,e,tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ terr_p=terr_p+(terr_s!=0)
+ if ((i+1)%100==0) : # display progress
+ print i+1,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s,
'%.2e' % ((1.0*terr_s)/tot_s)
# estimate of the (short or bit) error rate
- print tot_s,terr_s, '%e' % ((1.0*terr_s)/tot_s)
+ print rep,terr_p, '%.2e' % ((1.0*terr_p)/(i+1)),tot_s,terr_s, '%.2e' %
((1.0*terr_s)/tot_s)
if __name__ == '__main__':
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-error-correcting-codes/src/lib/libecc/tests/qa_encoder_convolutional_ic1_ic1.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-error-correcting-codes/src/lib/libecc/tests/qa_encoder_convolutional_ic1_ic1.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-error-correcting-codes/src/lib/libecc/tests/qa_encoder_convolutional_ic1_ic1.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -270,7 +270,7 @@
// start state is 0, same feedback, no termination
const static int t2_code_generator[] = {1, 0, 0, 1, 5, 6};
-const static size_t t2_code_feedback[] = {0, 0, 0, 0, 7, 7};
+const static int t2_code_feedback[] = {0, 0, 0, 0, 7, 7};
const static int t2_encode_soai = 1;
const static char t2_in_0[] =
@@ -1285,7 +1285,7 @@
// start state is 0, same feedback, no termination
const static int t25_code_generator[] = {1, 0, 0, 1, 5, 6};
-const static size_t t25_code_feedback[] = {0, 0, 0, 0, 7, 7};
+const static int t25_code_feedback[] = {0, 0, 0, 0, 7, 7};
const static int t25_encode_soai = 1;
const static char t25_in_0[] =
Modified: gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/eb-xambi.cc
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/eb-xambi.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/eb-xambi.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -204,7 +204,7 @@
break;
case 's':
- nsamples_to_skip = (long long) strtof(optarg, 0);
+ nsamples_to_skip = (long long) strtod(optarg, 0);
if (nsamples_to_skip < 0){
usage(argv[0]);
fprintf(stderr, " nsamples_to_skip must be >= 0\n");
@@ -213,7 +213,7 @@
break;
case 'd':
- max_doppler = strtof(optarg, 0);
+ max_doppler = strtod(optarg, 0);
if (max_doppler < 0 || max_doppler >= 0.5){
usage(argv[0]);
fprintf(stderr, " max_doppler must be in [0, 0.5)\n");
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/sim-airplane.cc
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/sim-airplane.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/sim-airplane.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -227,7 +227,7 @@
break;
case 's':
- nsamples_to_skip = (long long) strtof(optarg, 0);
+ nsamples_to_skip = (long long) strtod(optarg, 0);
if (nsamples_to_skip < 0){
usage(argv[0]);
fprintf(stderr, " nsamples_to_skip must be >= 0\n");
@@ -236,7 +236,7 @@
break;
case 'n':
- nsamples_to_produce = (long long) strtof(optarg, 0);
+ nsamples_to_produce = (long long) strtod(optarg, 0);
if (nsamples_to_produce < 0){
usage(argv[0]);
fprintf(stderr, " nsamples_to_produce must be >= 0\n");
@@ -245,15 +245,15 @@
break;
case 'g':
- gain_db = strtof(optarg, 0);
+ gain_db = strtod(optarg, 0);
break;
case 'f':
- tx_freq = strtof(optarg, 0);
+ tx_freq = strtod(optarg, 0);
break;
case 'r':
- sample_rate = strtof(optarg, 0);
+ sample_rate = strtod(optarg, 0);
break;
case '?':
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/sim-airplane2.cc
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/sim-airplane2.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-radar/src/lib/sim-airplane2.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -298,7 +298,7 @@
break;
case 's':
- nsamples_to_skip = (long long) strtof(optarg, 0);
+ nsamples_to_skip = (long long) strtod(optarg, 0);
if (nsamples_to_skip < 0){
usage(argv[0]);
fprintf(stderr, " nsamples_to_skip must be >= 0\n");
@@ -307,7 +307,7 @@
break;
case 'n':
- nsamples_to_produce = (long long) strtof(optarg, 0);
+ nsamples_to_produce = (long long) strtod(optarg, 0);
if (nsamples_to_produce < 0){
usage(argv[0]);
fprintf(stderr, " nsamples_to_produce must be >= 0\n");
@@ -316,19 +316,19 @@
break;
case 'g':
- gain_db = strtof(optarg, 0);
+ gain_db = strtod(optarg, 0);
break;
case 'f':
- tx_freq = strtof(optarg, 0);
+ tx_freq = strtod(optarg, 0);
break;
case 'r':
- sample_rate = strtof(optarg, 0);
+ sample_rate = strtod(optarg, 0);
break;
case 'S':
- start_time = strtof(optarg, 0);
+ start_time = strtod(optarg, 0);
break;
case '?':
Deleted: gnuradio/branches/developers/jcorgan/wip/gr-trellis/doc/gr-trellis.html
Property changes on: gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib
___________________________________________________________________
Name: svn:ignore
- Makefile
Makefile.in
.la
.lo
.deps
.libs
*.la
*.lo
*.pyc
trellis.cc
trellis.py
+ Makefile
Makefile.in
.la
.lo
.deps
.libs
*.la
*.lo
*.pyc
trellis.cc
trellis.py
wip
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/Makefile.am
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/Makefile.am
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/Makefile.am
2006-08-19 00:45:20 UTC (rev 3352)
@@ -65,9 +65,11 @@
trellis.cc \
fsm.cc \
quicksort_index.cc \
+ base.cc \
interleaver.cc \
trellis_calc_metric.cc \
trellis_permutation.cc \
+ trellis_siso_f.cc \
$(GENERATED_CC)
# magic flags
@@ -87,10 +89,13 @@
grinclude_HEADERS = \
fsm.h \
quicksort_index.h \
+ base.h \
interleaver.h \
trellis_metric_type.h \
trellis_calc_metric.h \
trellis_permutation.h \
+ trellis_siso_type.h \
+ trellis_siso_f.h \
$(GENERATED_H)
Copied: gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/base.cc
(from rev 3351, gnuradio/trunk/gr-trellis/src/lib/base.cc)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/base.cc
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/base.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,92 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2002 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <cstdio>
+#include <stdexcept>
+#include <cmath>
+#include "base.h"
+
+
+bool dec2base(unsigned int num, int base, std::vector<int> &s)
+{
+ int l = s.size();
+ unsigned int n=num;
+ for(int i=0;i<l;i++) {
+ s[l-i-1] = n % base; //MSB first
+ n /= base;
+ }
+ if(n!=0) {
+ printf("Number %d requires more than %d digits.",num,l);
+ return false;
+ }
+ else
+ return true;
+}
+
+
+unsigned int base2dec(const std::vector<int> &s, int base)
+{
+ int l = s.size();
+ unsigned int num=0;
+ for(int i=0;i<l;i++)
+ num=num*base+s[i];
+ return num;
+}
+
+
+bool dec2bases(unsigned int num, const std::vector<int> &bases,
std::vector<int> &s)
+{
+ int l = s.size();
+ unsigned int n=num;
+ for(int i=0;i<l;i++) {
+ s[l-i-1] = n % bases[l-i-1];
+ n /= bases[l-i-1];
+ }
+ if(n!=0) {
+ printf("Number %d requires more than %d digits.",num,l);
+ return false;
+ }
+ else
+ return true;
+}
+
+
+
+unsigned int bases2dec(const std::vector<int> &s, const std::vector<int>
&bases)
+{
+ int l = s.size();
+ unsigned int num=0;
+ for(int i=0;i<l;i++)
+ num = num * bases[i] + s[i];
+ return num;
+}
+
+
+
+
+
+
+
+
+
+
+
Copied: gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/base.h
(from rev 3351, gnuradio/trunk/gr-trellis/src/lib/base.h)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/base.h
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/base.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,38 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2002 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef INCLUDED_TRELLIS_BASE_H
+#define INCLUDED_TRELLIS_BASE_H
+
+#include <vector>
+
+/*!
+ * \brief change base
+ */
+
+
+bool dec2base(unsigned int num, int base, std::vector<int> &s);
+bool dec2bases(unsigned int num, const std::vector<int> &bases,
std::vector<int> &s);
+unsigned int base2dec(const std::vector<int> &s, int base);
+unsigned int bases2dec(const std::vector<int> &s, const std::vector<int>
&bases);
+
+#endif
Modified: gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.cc
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -23,8 +23,10 @@
#include <cstdio>
#include <stdexcept>
#include <cmath>
+#include "base.h"
#include "fsm.h"
+
fsm::fsm()
{
d_I=0;
@@ -34,6 +36,8 @@
d_OS.resize(0);
d_PS.resize(0);
d_PI.resize(0);
+ d_TMi.resize(0);
+ d_TMl.resize(0);
}
fsm::fsm(const fsm &FSM)
@@ -45,28 +49,20 @@
d_OS=FSM.OS();
d_PS=FSM.PS();
d_PI=FSM.PI();
+ d_TMi=FSM.TMi();
+ d_TMl=FSM.TMl();
}
-fsm::fsm(const int I, const int S, const int O, const std::vector<int> &NS,
const std::vector<int> &OS)
+fsm::fsm(int I, int S, int O, const std::vector<int> &NS, const
std::vector<int> &OS)
{
d_I=I;
d_S=S;
d_O=O;
d_NS=NS;
d_OS=OS;
- d_PS.resize(d_I*d_S);
- d_PI.resize(d_I*d_S);
-
- // generate the PS, PI tables for later use
- for(int i=0;i<d_S;i++) {
- int j=0;
- for(int ii=0;ii<d_S;ii++) for(int jj=0;jj<d_I;jj++) {
- if(d_NS[ii*d_I+jj]!=i) continue;
- d_PS[i*d_I+j]=ii;
- d_PI[i*d_I+j]=jj;
- j++;
- }
- }
+
+ generate_PS_PI();
+ generate_TM();
}
//######################################################################
@@ -84,14 +80,12 @@
FILE *fsmfile;
if((fsmfile=fopen(name,"r"))==NULL)
- throw std::runtime_error ("file open error in fsm()");
+ throw std::runtime_error ("fsm::fsm(const char *name): file open error\n");
//printf("file open error in fsm()\n");
fscanf(fsmfile,"%d %d %d\n",&d_I,&d_S,&d_O);
d_NS.resize(d_I*d_S);
d_OS.resize(d_I*d_S);
- d_PS.resize(d_I*d_S);
- d_PI.resize(d_I*d_S);
for(int i=0;i<d_S;i++) {
for(int j=0;j<d_I;j++) fscanf(fsmfile,"%d",&(d_NS[i*d_I+j]));
@@ -99,25 +93,128 @@
for(int i=0;i<d_S;i++) {
for(int j=0;j<d_I;j++) fscanf(fsmfile,"%d",&(d_OS[i*d_I+j]));
}
+
+ generate_PS_PI();
+ generate_TM();
+}
+
+
+
+
+//######################################################################
+//# Automatically generate the FSM from the generator matrix
+//# of a (n,k) binary convolutional code
+//######################################################################
+fsm::fsm(int k, int n, const std::vector<int> &G)
+{
+
+ // calculate maximum memory requirements for each input stream
+ std::vector<int> max_mem_x(k,-1);
+ int max_mem = -1;
+ for(int i=0;i<k;i++) {
+ for(int j=0;j<n;j++) {
+ int mem = -1;
+ if(G[i*n+j]!=0)
+ mem=(int)(log(G[i*n+j])/log(2.0));
+ if(mem>max_mem_x[i])
+ max_mem_x[i]=mem;
+ if(mem>max_mem)
+ max_mem=mem;
+ }
+ }
- // generate the PS, PI tables for later use
- for(int i=0;i<d_S;i++) {
- int j=0;
- for(int ii=0;ii<d_S;ii++) for(int jj=0;jj<d_I;jj++) {
- if(d_NS[ii*d_I+jj]!=i) continue;
- d_PS[i*d_I+j]=ii;
- d_PI[i*d_I+j]=jj;
- j++;
+//printf("max_mem_x\n");
+//for(int j=0;j<max_mem_x.size();j++) printf("%d ",max_mem_x[j]); printf("\n");
+
+ // calculate total memory requirements to set S
+ int sum_max_mem = 0;
+ for(int i=0;i<k;i++)
+ sum_max_mem += max_mem_x[i];
+
+//printf("sum_max_mem = %d\n",sum_max_mem);
+
+ d_I=1<<k;
+ d_S=1<<sum_max_mem;
+ d_O=1<<n;
+
+ // binary representation of the G matrix
+ std::vector<std::vector<int> > Gb(k*n);
+ for(int j=0;j<k*n;j++) {
+ Gb[j].resize(max_mem+1);
+ dec2base(G[j],2,Gb[j]);
+//printf("Gb\n");
+//for(int m=0;m<Gb[j].size();m++) printf("%d ",Gb[j][m]); printf("\n");
+ }
+
+ // alphabet size of each shift register
+ std::vector<int> bases_x(k);
+ for(int j=0;j<k ;j++)
+ bases_x[j] = 1 << max_mem_x[j];
+//printf("bases_x\n");
+//for(int j=0;j<max_mem_x.size();j++) printf("%d ",max_mem_x[j]); printf("\n");
+
+ d_NS.resize(d_I*d_S);
+ d_OS.resize(d_I*d_S);
+
+ std::vector<int> sx(k);
+ std::vector<int> nsx(k);
+ std::vector<int> tx(k);
+ std::vector<std::vector<int> > tb(k);
+ for(int j=0;j<k;j++)
+ tb[j].resize(max_mem+1);
+ std::vector<int> inb(k);
+ std::vector<int> outb(n);
+
+
+ for(int s=0;s<d_S;s++) {
+ dec2bases(s,bases_x,sx); // split s into k values, each representing on of
the k shift registers
+//printf("state = %d \nstates = ",s);
+//for(int j=0;j<sx.size();j++) printf("%d ",sx[j]); printf("\n");
+ for(int i=0;i<d_I;i++) {
+ dec2base(i,2,inb); // input in binary
+//printf("input = %d \ninputs = ",i);
+//for(int j=0;j<inb.size();j++) printf("%d ",inb[j]); printf("\n");
+
+ // evaluate next state
+ for(int j=0;j<k;j++)
+ nsx[j] = (inb[j]*bases_x[j]+sx[j])/2; // next state (for each shift
register) MSB first
+ d_NS[s*d_I+i]=bases2dec(nsx,bases_x); // collect all values into the new
state
+
+ // evaluate transitions
+ for(int j=0;j<k;j++)
+ tx[j] = inb[j]*bases_x[j]+sx[j]; // transition (for each shift
register)MSB first
+ for(int j=0;j<k;j++) {
+ dec2base(tx[j],2,tb[j]); // transition in binary
+//printf("transition = %d \ntransitions = ",tx[j]);
+//for(int m=0;m<tb[j].size();m++) printf("%d ",tb[j][m]); printf("\n");
+ }
+
+ // evaluate outputs
+ for(int nn=0;nn<n;nn++) {
+ outb[nn] = 0;
+ for(int j=0;j<k;j++) {
+ for(int m=0;m<max_mem+1;m++)
+ outb[nn] = (outb[nn] + Gb[j*n+nn][m]*tb[j][m]) % 2; // careful:
polynomial 1+D ir represented as 110, not as 011
+//printf("output %d equals %d\n",nn,outb[nn]);
+ }
+ }
+ d_OS[s*d_I+i] = base2dec(outb,2);
}
}
+
+ generate_PS_PI();
+ generate_TM();
}
+
+
+
//######################################################################
//# Automatically generate an FSM specification describing the
//# ISI for a channel
//# of length ch_length and a modulation of size mod_size
//######################################################################
-fsm::fsm(const int mod_size, const int ch_length)
+fsm::fsm(int mod_size, int ch_length)
{
d_I=mod_size;
d_S=(int) (pow(1.0*d_I,1.0*ch_length-1)+0.5);
@@ -125,8 +222,6 @@
d_NS.resize(d_I*d_S);
d_OS.resize(d_I*d_S);
- d_PS.resize(d_I*d_S);
- d_PI.resize(d_I*d_S);
for(int s=0;s<d_S;s++) {
for(int i=0;i<d_I;i++) {
@@ -135,8 +230,20 @@
d_OS[s*d_I+i] = t;
}
}
-
- // generate the PS, PI tables for later use
+
+ generate_PS_PI();
+ generate_TM();
+}
+
+
+//######################################################################
+//# generate the PS and PI tables for later use
+//######################################################################
+void fsm::generate_PS_PI()
+{
+ d_PS.resize(d_I*d_S);
+ d_PI.resize(d_I*d_S);
+
for(int i=0;i<d_S;i++) {
int j=0;
for(int ii=0;ii<d_S;ii++) for(int jj=0;jj<d_I;jj++) {
@@ -147,3 +254,70 @@
}
}
}
+
+
+//######################################################################
+//# generate the termination matrices TMl and TMi for later use
+//######################################################################
+void fsm::generate_TM()
+{
+ d_TMi.resize(d_S*d_S);
+ d_TMl.resize(d_S*d_S);
+
+ for(int i=0;i<d_S*d_S;i++) {
+ d_TMi[i] = -1; // no meaning
+ d_TMl[i] = d_S; //infinity: you need at most S-1 steps
+ if (i/d_S == i%d_S)
+ d_TMl[i] = 0;
+ }
+
+ for(int s=0;s<d_S;s++) {
+ bool done = false;
+ int attempts = 0;
+ while (done == false && attempts < d_S-1) {
+ done = find_es(s);
+ attempts ++;
+ }
+ if (done == false)
+ //throw std::runtime_error ("fsm::generate_TM(): FSM appears to be
disconnected\n");
+ printf("fsm::generate_TM(): FSM appears to be disconnected\n");
+ }
+}
+
+
+// find a path from any state to the ending state "es"
+bool fsm::find_es(int es)
+{
+ bool done = true;
+ for(int s=0;s<d_S;s++) {
+ if(d_TMl[s*d_S+es] < d_S)
+ continue;
+ int minl=d_S;
+ int mini=-1;
+ for(int i=0;i<d_I;i++) {
+ if( 1 + d_TMl[d_NS[s*d_I+i]*d_S+es] < minl) {
+ minl = 1 + d_TMl[d_NS[s*d_I+i]*d_S+es];
+ mini = i;
+ }
+ }
+ if (mini != -1) {
+ d_TMl[s*d_S+es]=minl;
+ d_TMi[s*d_S+es]=mini;
+ }
+ else
+ done = false;
+ }
+ return done;
+}
+
+
+
+
+
+
+
+
+
+
+
+
Modified: gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.h
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.h
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -37,12 +37,18 @@
std::vector<int> d_OS;
std::vector<int> d_PS;
std::vector<int> d_PI;
+ std::vector<int> d_TMi;
+ std::vector<int> d_TMl;
+ void generate_PS_PI ();
+ void generate_TM ();
+ bool find_es(int es);
public:
fsm();
fsm(const fsm &FSM);
- fsm(const int I, const int S, const int O, const std::vector<int> &NS, const
std::vector<int> &OS);
+ fsm(int I, int S, int O, const std::vector<int> &NS, const std::vector<int>
&OS);
fsm(const char *name);
- fsm(const int mod_size, const int ch_length);
+ fsm(int k, int n, const std::vector<int> &G);
+ fsm(int mod_size, int ch_length);
int I () const { return d_I; }
int S () const { return d_S; }
int O () const { return d_O; }
@@ -50,6 +56,8 @@
const std::vector<int> & OS () const { return d_OS; }
const std::vector<int> & PS () const { return d_PS; }
const std::vector<int> & PI () const { return d_PI; }
+ const std::vector<int> & TMi () const { return d_TMi; }
+ const std::vector<int> & TMl () const { return d_TMl; }
};
#endif
Modified: gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.i
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.i
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/fsm.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,12 +29,17 @@
std::vector<int> d_OS;
std::vector<int> d_PS;
std::vector<int> d_PI;
+ std::vector<int> d_TMi;
+ std::vector<int> d_TMl;
+ void generate_PS_PI ();
+ void generate_TM ();
public:
fsm();
fsm(const fsm &FSM);
- fsm(const int I, const int S, const int O, const std::vector<int> &NS, const
std::vector<int> &OS);
+ fsm(int I, int S, int O, const std::vector<int> &NS, const std::vector<int>
&OS);
fsm(const char *name);
- fsm(const int mod_size, const int ch_length);
+ fsm(int k, int n, const std::vector<int> &G);
+ fsm(int mod_size, int ch_length);
int I () const { return d_I; }
int S () const { return d_S; }
int O () const { return d_O; }
@@ -42,8 +47,7 @@
const std::vector<int> & OS () const { return d_OS; }
const std::vector<int> & PS () const { return d_PS; }
const std::vector<int> & PI () const { return d_PI; }
+ const std::vector<int> & TMi () const { return d_TMi; }
+ const std::vector<int> & TMl () const { return d_TMl; }
};
-
-
-
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.cc
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -42,7 +42,7 @@
d_DEINTER=INTERLEAVER.DEINTER();
}
-interleaver::interleaver(const int K, const std::vector<int> &INTER)
+interleaver::interleaver(int K, const std::vector<int> &INTER)
{
d_K=K;
d_INTER=INTER;
@@ -85,7 +85,7 @@
//######################################################################
//# Generate a random interleaver
//######################################################################
-interleaver::interleaver(const int K, unsigned int seed)
+interleaver::interleaver(int K, unsigned int seed)
{
d_K=K;
d_INTER.resize(d_K);
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.h
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.h
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -36,9 +36,9 @@
public:
interleaver();
interleaver(const interleaver & INTERLEAVER);
- interleaver(const int K, const std::vector<int> & INTER);
+ interleaver(int K, const std::vector<int> & INTER);
interleaver(const char *name);
- interleaver(const int K, unsigned int seed);
+ interleaver(int K, unsigned int seed);
int K () const { return d_K; }
const std::vector<int> & INTER () const { return d_INTER; }
const std::vector<int> & DEINTER () const { return d_DEINTER; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.i
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.i
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/interleaver.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -28,9 +28,9 @@
public:
interleaver();
interleaver(const interleaver & INTERLEAVER);
- interleaver(const int K, const std::vector<int> & INTER);
+ interleaver(int K, const std::vector<int> & INTER);
interleaver(const char *name);
- interleaver(const int K, unsigned int seed);
+ interleaver(int K, unsigned int seed);
int K () const { return d_K; }
const std::vector<int> & INTER () const { return d_INTER; }
const std::vector<int> & DEINTER () const { return d_DEINTER; }
Modified: gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis.i
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis.i
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -10,6 +10,7 @@
#include "fsm.h"
#include "interleaver.h"
#include "trellis_permutation.h"
+#include "trellis_siso_f.h"
#include <stdexcept>
%}
@@ -18,7 +19,10 @@
%include "fsm.i"
%include "interleaver.i"
%include "trellis_permutation.i"
+%include "trellis_siso_f.i"
+
%include "trellis_metric_type.h"
+%include "trellis_siso_type.h"
%include "trellis_generated.i"
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_calc_metric.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_calc_metric.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_calc_metric.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,8 +24,7 @@
#include <stdexcept>
#include "trellis_calc_metric.h"
-// soft decisions (Euclidean distance squared)
-void calc_metric_s(const int O, const int D, const std::vector<short> &TABLE,
const short *in, float *metric, trellis_metric_type_t type)
+void calc_metric_s(int O, int D, const std::vector<short> &TABLE, const short
*in, float *metric, trellis_metric_type_t type)
{
float minm = FLT_MAX;
int minmi = 0;
@@ -33,24 +32,24 @@
switch (type){
case TRELLIS_EUCLIDEAN:
for(int o=0;o<O;o++) {
- metric[o]=0.0;
- for (int m=0;m<D;m++) {
- float s=in[m]-TABLE[o*D+m];
- metric[o]+=s*s;
- }
+ metric[o]=0.0;
+ for (int m=0;m<D;m++) {
+ float s=in[m]-TABLE[o*D+m];
+ metric[o]+=s*s;
+ }
}
break;
case TRELLIS_HARD_SYMBOL:
for(int o=0;o<O;o++) {
- metric[o]=0.0;
- for (int m=0;m<D;m++) {
- float s=in[m]-TABLE[o*D+m];
- metric[o]+=s*s;
- }
- if(metric[o]<minm) {
- minm=metric[o];
- minmi=o;
- }
+ metric[o]=0.0;
+ for (int m=0;m<D;m++) {
+ float s=in[m]-TABLE[o*D+m];
+ metric[o]+=s*s;
+ }
+ if(metric[o]<minm) {
+ minm=metric[o];
+ minmi=o;
+ }
}
for(int o=0;o<O;o++) {
metric[o] = (o==minmi?0.0:1.0);
@@ -66,8 +65,7 @@
-// soft decisions (Euclidean distance squared)
-void calc_metric_i(const int O, const int D, const std::vector<int> &TABLE,
const int *in, float *metric, trellis_metric_type_t type)
+void calc_metric_i(int O, int D, const std::vector<int> &TABLE, const int *in,
float *metric, trellis_metric_type_t type)
{
float minm = FLT_MAX;
int minmi = 0;
@@ -75,24 +73,24 @@
switch (type){
case TRELLIS_EUCLIDEAN:
for(int o=0;o<O;o++) {
- metric[o]=0.0;
- for (int m=0;m<D;m++) {
- float s=in[m]-TABLE[o*D+m];
- metric[o]+=s*s;
- }
+ metric[o]=0.0;
+ for (int m=0;m<D;m++) {
+ float s=in[m]-TABLE[o*D+m];
+ metric[o]+=s*s;
+ }
}
break;
case TRELLIS_HARD_SYMBOL:
for(int o=0;o<O;o++) {
- metric[o]=0.0;
- for (int m=0;m<D;m++) {
- float s=in[m]-TABLE[o*D+m];
- metric[o]+=s*s;
- }
- if(metric[o]<minm) {
- minm=metric[o];
- minmi=o;
- }
+ metric[o]=0.0;
+ for (int m=0;m<D;m++) {
+ float s=in[m]-TABLE[o*D+m];
+ metric[o]+=s*s;
+ }
+ if(metric[o]<minm) {
+ minm=metric[o];
+ minmi=o;
+ }
}
for(int o=0;o<O;o++) {
metric[o] = (o==minmi?0.0:1.0);
@@ -108,12 +106,7 @@
-
-
-
-
-// soft decisions (Euclidean distance squared)
-void calc_metric_f(const int O, const int D, const std::vector<float> &TABLE,
const float *in, float *metric, trellis_metric_type_t type)
+void calc_metric_f(int O, int D, const std::vector<float> &TABLE, const float
*in, float *metric, trellis_metric_type_t type)
{
float minm = FLT_MAX;
int minmi = 0;
@@ -121,24 +114,24 @@
switch (type){
case TRELLIS_EUCLIDEAN:
for(int o=0;o<O;o++) {
- metric[o]=0.0;
- for (int m=0;m<D;m++) {
- float s=in[m]-TABLE[o*D+m];
- metric[o]+=s*s;
- }
+ metric[o]=0.0;
+ for (int m=0;m<D;m++) {
+ float s=in[m]-TABLE[o*D+m];
+ metric[o]+=s*s;
+ }
}
break;
case TRELLIS_HARD_SYMBOL:
for(int o=0;o<O;o++) {
- metric[o]=0.0;
- for (int m=0;m<D;m++) {
- float s=in[m]-TABLE[o*D+m];
- metric[o]+=s*s;
- }
- if(metric[o]<minm) {
- minm=metric[o];
- minmi=o;
- }
+ metric[o]=0.0;
+ for (int m=0;m<D;m++) {
+ float s=in[m]-TABLE[o*D+m];
+ metric[o]+=s*s;
+ }
+ if(metric[o]<minm) {
+ minm=metric[o];
+ minmi=o;
+ }
}
for(int o=0;o<O;o++) {
metric[o] = (o==minmi?0.0:1.0);
@@ -153,8 +146,7 @@
}
-// soft decisions (Euclidean distance squared)
-void calc_metric_c(const int O, const int D, const std::vector<gr_complex>
&TABLE, const gr_complex *in, float *metric, trellis_metric_type_t type)
+void calc_metric_c(int O, int D, const std::vector<gr_complex> &TABLE, const
gr_complex *in, float *metric, trellis_metric_type_t type)
{
float minm = FLT_MAX;
int minmi = 0;
@@ -169,7 +161,20 @@
}
}
case TRELLIS_HARD_SYMBOL:
- throw std::runtime_error ("Invalid metric type (not yet implemented).");
+ for(int o=0;o<O;o++) {
+ metric[o]=0.0;
+ for (int m=0;m<D;m++) {
+ gr_complex s=in[m]-TABLE[o*D+m];
+ metric[o]+=s.real()*s.real()+s.imag()*s.imag();
+ }
+ if(metric[o]<minm) {
+ minm=metric[o];
+ minmi=o;
+ }
+ }
+ for(int o=0;o<O;o++) {
+ metric[o] = (o==minmi?0.0:1.0);
+ }
break;
case TRELLIS_HARD_BIT:
throw std::runtime_error ("Invalid metric type (not yet implemented).");
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_calc_metric.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_calc_metric.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_calc_metric.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -27,12 +27,12 @@
#include <gr_complex.h>
#include <trellis_metric_type.h>
-void calc_metric_s(const int O, const int D, const std::vector<short> &TABLE,
const short *in, float *metric, trellis_metric_type_t type);
+void calc_metric_s(int O, int D, const std::vector<short> &TABLE, const short
*in, float *metric, trellis_metric_type_t type);
-void calc_metric_i(const int O, const int D, const std::vector<int> &TABLE,
const int *in, float *metric, trellis_metric_type_t type);
+void calc_metric_i(int O, int D, const std::vector<int> &TABLE, const int *in,
float *metric, trellis_metric_type_t type);
-void calc_metric_f(const int O, const int D, const std::vector<float> &TABLE,
const float *in, float *metric, trellis_metric_type_t type);
+void calc_metric_f(int O, int D, const std::vector<float> &TABLE, const float
*in, float *metric, trellis_metric_type_t type);
-void calc_metric_c(const int O, const int D, const std::vector<gr_complex>
&TABLE, const gr_complex *in, float *metric, trellis_metric_type_t type);
+void calc_metric_c(int O, int D, const std::vector<gr_complex> &TABLE, const
gr_complex *in, float *metric, trellis_metric_type_t type);
#endif
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.cc.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.cc.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.cc.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,12 +29,12 @@
#include <iostream>
@SPTR_NAME@
address@hidden@ (const fsm &FSM, const int ST)
address@hidden@ (const fsm &FSM, int ST)
{
return @SPTR_NAME@ (new @NAME@ (FSM,ST));
}
address@hidden@::@NAME@ (const fsm &FSM, const int ST)
address@hidden@::@NAME@ (const fsm &FSM, int ST)
: gr_sync_block ("@BASE_NAME@",
gr_make_io_signature (1, -1, sizeof (@I_TYPE@)),
gr_make_io_signature (1, -1, sizeof (@O_TYPE@))),
@@ -50,27 +50,25 @@
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- int d_ST_tmp;
+ int ST_tmp;
assert (input_items.size() == output_items.size());
int nstreams = input_items.size();
-for (int m=0;m<nstreams;m++) {
- const @I_TYPE@ *in = (const @I_TYPE@ *) input_items[m];
- @O_TYPE@ *out = (@O_TYPE@ *) output_items[m];
- d_ST_tmp = d_ST;
+ for (int m=0;m<nstreams;m++) {
+ const @I_TYPE@ *in = (const @I_TYPE@ *) input_items[m];
+ @O_TYPE@ *out = (@O_TYPE@ *) output_items[m];
+ ST_tmp = d_ST;
-// per stream processing
-
- for (int i = 0; i < noutput_items; i++){
- out[i] = (@O_TYPE@) d_FSM.OS()[d_ST_tmp*d_FSM.I()+in[i]]; // direction of
time?
- d_ST_tmp = (int) d_FSM.NS()[d_ST_tmp*d_FSM.I()+in[i]];
+ // per stream processing
+ for (int i = 0; i < noutput_items; i++){
+ out[i] = (@O_TYPE@) d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; // direction of
time?
+ ST_tmp = (int) d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]];
+ }
+ // end per stream processing
}
+ d_ST = ST_tmp;
-// end per stream processing
-}
- d_ST = d_ST_tmp;
-
return noutput_items;
}
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.h.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.h.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.h.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
address@hidden@ address@hidden@ (const fsm &FSM, const int ST);
address@hidden@ address@hidden@ (const fsm &FSM, int ST);
/*!
* \brief Convolutional encoder.
@@ -42,10 +42,10 @@
class @NAME@ : public gr_sync_block
{
private:
- friend @SPTR_NAME@ address@hidden@ (const fsm &FSM, const int ST);
+ friend @SPTR_NAME@ address@hidden@ (const fsm &FSM, int ST);
fsm d_FSM;
int d_ST;
- @NAME@ (const fsm &FSM, const int ST);
+ @NAME@ (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.i.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.i.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_XX.i.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,@BASE_NAME@);
address@hidden@ address@hidden@ (const fsm &FSM, const int ST);
address@hidden@ address@hidden@ (const fsm &FSM, int ST);
class @NAME@ : public gr_sync_block
{
private:
- @NAME@ (const fsm &FSM, const int ST);
+ @NAME@ (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
int ST () const { return d_ST; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,12 +29,12 @@
#include <iostream>
trellis_encoder_bb_sptr
-trellis_make_encoder_bb (const fsm &FSM, const int ST)
+trellis_make_encoder_bb (const fsm &FSM, int ST)
{
return trellis_encoder_bb_sptr (new trellis_encoder_bb (FSM,ST));
}
-trellis_encoder_bb::trellis_encoder_bb (const fsm &FSM, const int ST)
+trellis_encoder_bb::trellis_encoder_bb (const fsm &FSM, int ST)
: gr_sync_block ("encoder_bb",
gr_make_io_signature (1, -1, sizeof (unsigned char)),
gr_make_io_signature (1, -1, sizeof (unsigned char))),
@@ -50,27 +50,25 @@
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- int d_ST_tmp;
+ int ST_tmp;
assert (input_items.size() == output_items.size());
int nstreams = input_items.size();
-for (int m=0;m<nstreams;m++) {
- const unsigned char *in = (const unsigned char *) input_items[m];
- unsigned char *out = (unsigned char *) output_items[m];
- d_ST_tmp = d_ST;
+ for (int m=0;m<nstreams;m++) {
+ const unsigned char *in = (const unsigned char *) input_items[m];
+ unsigned char *out = (unsigned char *) output_items[m];
+ ST_tmp = d_ST;
-// per stream processing
-
- for (int i = 0; i < noutput_items; i++){
- out[i] = (unsigned char) d_FSM.OS()[d_ST_tmp*d_FSM.I()+in[i]]; //
direction of time?
- d_ST_tmp = (int) d_FSM.NS()[d_ST_tmp*d_FSM.I()+in[i]];
+ // per stream processing
+ for (int i = 0; i < noutput_items; i++){
+ out[i] = (unsigned char) d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; //
direction of time?
+ ST_tmp = (int) d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]];
+ }
+ // end per stream processing
}
+ d_ST = ST_tmp;
-// end per stream processing
-}
- d_ST = d_ST_tmp;
-
return noutput_items;
}
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_encoder_bb;
typedef boost::shared_ptr<trellis_encoder_bb> trellis_encoder_bb_sptr;
-trellis_encoder_bb_sptr trellis_make_encoder_bb (const fsm &FSM, const int ST);
+trellis_encoder_bb_sptr trellis_make_encoder_bb (const fsm &FSM, int ST);
/*!
* \brief Convolutional encoder.
@@ -42,10 +42,10 @@
class trellis_encoder_bb : public gr_sync_block
{
private:
- friend trellis_encoder_bb_sptr trellis_make_encoder_bb (const fsm &FSM,
const int ST);
+ friend trellis_encoder_bb_sptr trellis_make_encoder_bb (const fsm &FSM, int
ST);
fsm d_FSM;
int d_ST;
- trellis_encoder_bb (const fsm &FSM, const int ST);
+ trellis_encoder_bb (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bb.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,encoder_bb);
-trellis_encoder_bb_sptr trellis_make_encoder_bb (const fsm &FSM, const int ST);
+trellis_encoder_bb_sptr trellis_make_encoder_bb (const fsm &FSM, int ST);
class trellis_encoder_bb : public gr_sync_block
{
private:
- trellis_encoder_bb (const fsm &FSM, const int ST);
+ trellis_encoder_bb (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
int ST () const { return d_ST; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,12 +29,12 @@
#include <iostream>
trellis_encoder_bi_sptr
-trellis_make_encoder_bi (const fsm &FSM, const int ST)
+trellis_make_encoder_bi (const fsm &FSM, int ST)
{
return trellis_encoder_bi_sptr (new trellis_encoder_bi (FSM,ST));
}
-trellis_encoder_bi::trellis_encoder_bi (const fsm &FSM, const int ST)
+trellis_encoder_bi::trellis_encoder_bi (const fsm &FSM, int ST)
: gr_sync_block ("encoder_bi",
gr_make_io_signature (1, -1, sizeof (unsigned char)),
gr_make_io_signature (1, -1, sizeof (int))),
@@ -50,27 +50,25 @@
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- int d_ST_tmp;
+ int ST_tmp;
assert (input_items.size() == output_items.size());
int nstreams = input_items.size();
-for (int m=0;m<nstreams;m++) {
- const unsigned char *in = (const unsigned char *) input_items[m];
- int *out = (int *) output_items[m];
- d_ST_tmp = d_ST;
+ for (int m=0;m<nstreams;m++) {
+ const unsigned char *in = (const unsigned char *) input_items[m];
+ int *out = (int *) output_items[m];
+ ST_tmp = d_ST;
-// per stream processing
-
- for (int i = 0; i < noutput_items; i++){
- out[i] = (int) d_FSM.OS()[d_ST_tmp*d_FSM.I()+in[i]]; // direction of time?
- d_ST_tmp = (int) d_FSM.NS()[d_ST_tmp*d_FSM.I()+in[i]];
+ // per stream processing
+ for (int i = 0; i < noutput_items; i++){
+ out[i] = (int) d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; // direction of time?
+ ST_tmp = (int) d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]];
+ }
+ // end per stream processing
}
+ d_ST = ST_tmp;
-// end per stream processing
-}
- d_ST = d_ST_tmp;
-
return noutput_items;
}
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_encoder_bi;
typedef boost::shared_ptr<trellis_encoder_bi> trellis_encoder_bi_sptr;
-trellis_encoder_bi_sptr trellis_make_encoder_bi (const fsm &FSM, const int ST);
+trellis_encoder_bi_sptr trellis_make_encoder_bi (const fsm &FSM, int ST);
/*!
* \brief Convolutional encoder.
@@ -42,10 +42,10 @@
class trellis_encoder_bi : public gr_sync_block
{
private:
- friend trellis_encoder_bi_sptr trellis_make_encoder_bi (const fsm &FSM,
const int ST);
+ friend trellis_encoder_bi_sptr trellis_make_encoder_bi (const fsm &FSM, int
ST);
fsm d_FSM;
int d_ST;
- trellis_encoder_bi (const fsm &FSM, const int ST);
+ trellis_encoder_bi (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bi.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,encoder_bi);
-trellis_encoder_bi_sptr trellis_make_encoder_bi (const fsm &FSM, const int ST);
+trellis_encoder_bi_sptr trellis_make_encoder_bi (const fsm &FSM, int ST);
class trellis_encoder_bi : public gr_sync_block
{
private:
- trellis_encoder_bi (const fsm &FSM, const int ST);
+ trellis_encoder_bi (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
int ST () const { return d_ST; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,12 +29,12 @@
#include <iostream>
trellis_encoder_bs_sptr
-trellis_make_encoder_bs (const fsm &FSM, const int ST)
+trellis_make_encoder_bs (const fsm &FSM, int ST)
{
return trellis_encoder_bs_sptr (new trellis_encoder_bs (FSM,ST));
}
-trellis_encoder_bs::trellis_encoder_bs (const fsm &FSM, const int ST)
+trellis_encoder_bs::trellis_encoder_bs (const fsm &FSM, int ST)
: gr_sync_block ("encoder_bs",
gr_make_io_signature (1, -1, sizeof (unsigned char)),
gr_make_io_signature (1, -1, sizeof (short))),
@@ -50,27 +50,25 @@
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- int d_ST_tmp;
+ int ST_tmp;
assert (input_items.size() == output_items.size());
int nstreams = input_items.size();
-for (int m=0;m<nstreams;m++) {
- const unsigned char *in = (const unsigned char *) input_items[m];
- short *out = (short *) output_items[m];
- d_ST_tmp = d_ST;
+ for (int m=0;m<nstreams;m++) {
+ const unsigned char *in = (const unsigned char *) input_items[m];
+ short *out = (short *) output_items[m];
+ ST_tmp = d_ST;
-// per stream processing
-
- for (int i = 0; i < noutput_items; i++){
- out[i] = (short) d_FSM.OS()[d_ST_tmp*d_FSM.I()+in[i]]; // direction of
time?
- d_ST_tmp = (int) d_FSM.NS()[d_ST_tmp*d_FSM.I()+in[i]];
+ // per stream processing
+ for (int i = 0; i < noutput_items; i++){
+ out[i] = (short) d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; // direction of
time?
+ ST_tmp = (int) d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]];
+ }
+ // end per stream processing
}
+ d_ST = ST_tmp;
-// end per stream processing
-}
- d_ST = d_ST_tmp;
-
return noutput_items;
}
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_encoder_bs;
typedef boost::shared_ptr<trellis_encoder_bs> trellis_encoder_bs_sptr;
-trellis_encoder_bs_sptr trellis_make_encoder_bs (const fsm &FSM, const int ST);
+trellis_encoder_bs_sptr trellis_make_encoder_bs (const fsm &FSM, int ST);
/*!
* \brief Convolutional encoder.
@@ -42,10 +42,10 @@
class trellis_encoder_bs : public gr_sync_block
{
private:
- friend trellis_encoder_bs_sptr trellis_make_encoder_bs (const fsm &FSM,
const int ST);
+ friend trellis_encoder_bs_sptr trellis_make_encoder_bs (const fsm &FSM, int
ST);
fsm d_FSM;
int d_ST;
- trellis_encoder_bs (const fsm &FSM, const int ST);
+ trellis_encoder_bs (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_bs.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,encoder_bs);
-trellis_encoder_bs_sptr trellis_make_encoder_bs (const fsm &FSM, const int ST);
+trellis_encoder_bs_sptr trellis_make_encoder_bs (const fsm &FSM, int ST);
class trellis_encoder_bs : public gr_sync_block
{
private:
- trellis_encoder_bs (const fsm &FSM, const int ST);
+ trellis_encoder_bs (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
int ST () const { return d_ST; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,12 +29,12 @@
#include <iostream>
trellis_encoder_ii_sptr
-trellis_make_encoder_ii (const fsm &FSM, const int ST)
+trellis_make_encoder_ii (const fsm &FSM, int ST)
{
return trellis_encoder_ii_sptr (new trellis_encoder_ii (FSM,ST));
}
-trellis_encoder_ii::trellis_encoder_ii (const fsm &FSM, const int ST)
+trellis_encoder_ii::trellis_encoder_ii (const fsm &FSM, int ST)
: gr_sync_block ("encoder_ii",
gr_make_io_signature (1, -1, sizeof (int)),
gr_make_io_signature (1, -1, sizeof (int))),
@@ -50,27 +50,25 @@
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- int d_ST_tmp;
+ int ST_tmp;
assert (input_items.size() == output_items.size());
int nstreams = input_items.size();
-for (int m=0;m<nstreams;m++) {
- const int *in = (const int *) input_items[m];
- int *out = (int *) output_items[m];
- d_ST_tmp = d_ST;
+ for (int m=0;m<nstreams;m++) {
+ const int *in = (const int *) input_items[m];
+ int *out = (int *) output_items[m];
+ ST_tmp = d_ST;
-// per stream processing
-
- for (int i = 0; i < noutput_items; i++){
- out[i] = (int) d_FSM.OS()[d_ST_tmp*d_FSM.I()+in[i]]; // direction of time?
- d_ST_tmp = (int) d_FSM.NS()[d_ST_tmp*d_FSM.I()+in[i]];
+ // per stream processing
+ for (int i = 0; i < noutput_items; i++){
+ out[i] = (int) d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; // direction of time?
+ ST_tmp = (int) d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]];
+ }
+ // end per stream processing
}
+ d_ST = ST_tmp;
-// end per stream processing
-}
- d_ST = d_ST_tmp;
-
return noutput_items;
}
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_encoder_ii;
typedef boost::shared_ptr<trellis_encoder_ii> trellis_encoder_ii_sptr;
-trellis_encoder_ii_sptr trellis_make_encoder_ii (const fsm &FSM, const int ST);
+trellis_encoder_ii_sptr trellis_make_encoder_ii (const fsm &FSM, int ST);
/*!
* \brief Convolutional encoder.
@@ -42,10 +42,10 @@
class trellis_encoder_ii : public gr_sync_block
{
private:
- friend trellis_encoder_ii_sptr trellis_make_encoder_ii (const fsm &FSM,
const int ST);
+ friend trellis_encoder_ii_sptr trellis_make_encoder_ii (const fsm &FSM, int
ST);
fsm d_FSM;
int d_ST;
- trellis_encoder_ii (const fsm &FSM, const int ST);
+ trellis_encoder_ii (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ii.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,encoder_ii);
-trellis_encoder_ii_sptr trellis_make_encoder_ii (const fsm &FSM, const int ST);
+trellis_encoder_ii_sptr trellis_make_encoder_ii (const fsm &FSM, int ST);
class trellis_encoder_ii : public gr_sync_block
{
private:
- trellis_encoder_ii (const fsm &FSM, const int ST);
+ trellis_encoder_ii (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
int ST () const { return d_ST; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,12 +29,12 @@
#include <iostream>
trellis_encoder_si_sptr
-trellis_make_encoder_si (const fsm &FSM, const int ST)
+trellis_make_encoder_si (const fsm &FSM, int ST)
{
return trellis_encoder_si_sptr (new trellis_encoder_si (FSM,ST));
}
-trellis_encoder_si::trellis_encoder_si (const fsm &FSM, const int ST)
+trellis_encoder_si::trellis_encoder_si (const fsm &FSM, int ST)
: gr_sync_block ("encoder_si",
gr_make_io_signature (1, -1, sizeof (short)),
gr_make_io_signature (1, -1, sizeof (int))),
@@ -50,27 +50,25 @@
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- int d_ST_tmp;
+ int ST_tmp;
assert (input_items.size() == output_items.size());
int nstreams = input_items.size();
-for (int m=0;m<nstreams;m++) {
- const short *in = (const short *) input_items[m];
- int *out = (int *) output_items[m];
- d_ST_tmp = d_ST;
+ for (int m=0;m<nstreams;m++) {
+ const short *in = (const short *) input_items[m];
+ int *out = (int *) output_items[m];
+ ST_tmp = d_ST;
-// per stream processing
-
- for (int i = 0; i < noutput_items; i++){
- out[i] = (int) d_FSM.OS()[d_ST_tmp*d_FSM.I()+in[i]]; // direction of time?
- d_ST_tmp = (int) d_FSM.NS()[d_ST_tmp*d_FSM.I()+in[i]];
+ // per stream processing
+ for (int i = 0; i < noutput_items; i++){
+ out[i] = (int) d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; // direction of time?
+ ST_tmp = (int) d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]];
+ }
+ // end per stream processing
}
+ d_ST = ST_tmp;
-// end per stream processing
-}
- d_ST = d_ST_tmp;
-
return noutput_items;
}
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_encoder_si;
typedef boost::shared_ptr<trellis_encoder_si> trellis_encoder_si_sptr;
-trellis_encoder_si_sptr trellis_make_encoder_si (const fsm &FSM, const int ST);
+trellis_encoder_si_sptr trellis_make_encoder_si (const fsm &FSM, int ST);
/*!
* \brief Convolutional encoder.
@@ -42,10 +42,10 @@
class trellis_encoder_si : public gr_sync_block
{
private:
- friend trellis_encoder_si_sptr trellis_make_encoder_si (const fsm &FSM,
const int ST);
+ friend trellis_encoder_si_sptr trellis_make_encoder_si (const fsm &FSM, int
ST);
fsm d_FSM;
int d_ST;
- trellis_encoder_si (const fsm &FSM, const int ST);
+ trellis_encoder_si (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_si.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,encoder_si);
-trellis_encoder_si_sptr trellis_make_encoder_si (const fsm &FSM, const int ST);
+trellis_encoder_si_sptr trellis_make_encoder_si (const fsm &FSM, int ST);
class trellis_encoder_si : public gr_sync_block
{
private:
- trellis_encoder_si (const fsm &FSM, const int ST);
+ trellis_encoder_si (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
int ST () const { return d_ST; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,12 +29,12 @@
#include <iostream>
trellis_encoder_ss_sptr
-trellis_make_encoder_ss (const fsm &FSM, const int ST)
+trellis_make_encoder_ss (const fsm &FSM, int ST)
{
return trellis_encoder_ss_sptr (new trellis_encoder_ss (FSM,ST));
}
-trellis_encoder_ss::trellis_encoder_ss (const fsm &FSM, const int ST)
+trellis_encoder_ss::trellis_encoder_ss (const fsm &FSM, int ST)
: gr_sync_block ("encoder_ss",
gr_make_io_signature (1, -1, sizeof (short)),
gr_make_io_signature (1, -1, sizeof (short))),
@@ -50,27 +50,25 @@
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- int d_ST_tmp;
+ int ST_tmp;
assert (input_items.size() == output_items.size());
int nstreams = input_items.size();
-for (int m=0;m<nstreams;m++) {
- const short *in = (const short *) input_items[m];
- short *out = (short *) output_items[m];
- d_ST_tmp = d_ST;
+ for (int m=0;m<nstreams;m++) {
+ const short *in = (const short *) input_items[m];
+ short *out = (short *) output_items[m];
+ ST_tmp = d_ST;
-// per stream processing
-
- for (int i = 0; i < noutput_items; i++){
- out[i] = (short) d_FSM.OS()[d_ST_tmp*d_FSM.I()+in[i]]; // direction of
time?
- d_ST_tmp = (int) d_FSM.NS()[d_ST_tmp*d_FSM.I()+in[i]];
+ // per stream processing
+ for (int i = 0; i < noutput_items; i++){
+ out[i] = (short) d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; // direction of
time?
+ ST_tmp = (int) d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]];
+ }
+ // end per stream processing
}
+ d_ST = ST_tmp;
-// end per stream processing
-}
- d_ST = d_ST_tmp;
-
return noutput_items;
}
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_encoder_ss;
typedef boost::shared_ptr<trellis_encoder_ss> trellis_encoder_ss_sptr;
-trellis_encoder_ss_sptr trellis_make_encoder_ss (const fsm &FSM, const int ST);
+trellis_encoder_ss_sptr trellis_make_encoder_ss (const fsm &FSM, int ST);
/*!
* \brief Convolutional encoder.
@@ -42,10 +42,10 @@
class trellis_encoder_ss : public gr_sync_block
{
private:
- friend trellis_encoder_ss_sptr trellis_make_encoder_ss (const fsm &FSM,
const int ST);
+ friend trellis_encoder_ss_sptr trellis_make_encoder_ss (const fsm &FSM, int
ST);
fsm d_FSM;
int d_ST;
- trellis_encoder_ss (const fsm &FSM, const int ST);
+ trellis_encoder_ss (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_encoder_ss.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,encoder_ss);
-trellis_encoder_ss_sptr trellis_make_encoder_ss (const fsm &FSM, const int ST);
+trellis_encoder_ss_sptr trellis_make_encoder_ss (const fsm &FSM, int ST);
class trellis_encoder_ss : public gr_sync_block
{
private:
- trellis_encoder_ss (const fsm &FSM, const int ST);
+ trellis_encoder_ss (const fsm &FSM, int ST);
public:
fsm FSM () const { return d_FSM; }
int ST () const { return d_ST; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.cc.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.cc.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.cc.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -32,14 +32,14 @@
@SPTR_NAME@
address@hidden@ (const int O, const int D, const std::vector<@I_TYPE@> &TABLE,
trellis_metric_type_t TYPE)
address@hidden@ (int O, int D, const std::vector<@I_TYPE@> &TABLE,
trellis_metric_type_t TYPE)
{
return @SPTR_NAME@ (new @NAME@ (O,D,TABLE,TYPE));
}
address@hidden@::@NAME@ (const int O, const int D, const std::vector<@I_TYPE@>
&TABLE, trellis_metric_type_t TYPE)
address@hidden@::@NAME@ (int O, int D, const std::vector<@I_TYPE@> &TABLE,
trellis_metric_type_t TYPE)
: gr_block ("@BASE_NAME@",
gr_make_io_signature (1, -1, sizeof (@I_TYPE@)),
gr_make_io_signature (1, -1, sizeof (float))),
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.h.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.h.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.h.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
address@hidden@ address@hidden@ (const int O, const int D, const
std::vector<@I_TYPE@> &TABLE, trellis_metric_type_t TYPE);
address@hidden@ address@hidden@ (int O, int D, const std::vector<@I_TYPE@>
&TABLE, trellis_metric_type_t TYPE);
/*!
* \brief Evaluate metrics for use by the Viterbi algorithm.
@@ -45,8 +45,8 @@
trellis_metric_type_t d_TYPE;
std::vector<@I_TYPE@> d_TABLE;
- friend @SPTR_NAME@ address@hidden@ (const int O, const int D, const
std::vector<@I_TYPE@> &TABLE, trellis_metric_type_t TYPE);
- @NAME@ (const int O, const int D, const std::vector<@I_TYPE@> &TABLE,
trellis_metric_type_t TYPE);
+ friend @SPTR_NAME@ address@hidden@ (int O, int D, const
std::vector<@I_TYPE@> &TABLE, trellis_metric_type_t TYPE);
+ @NAME@ (int O, int D, const std::vector<@I_TYPE@> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.i.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.i.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_X.i.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,@BASE_NAME@);
address@hidden@ address@hidden@ (const int O, const int D, const
std::vector<@I_TYPE@> &TABLE, trellis_metric_type_t TYPE);
address@hidden@ address@hidden@ (int O, int D, const std::vector<@I_TYPE@>
&TABLE, trellis_metric_type_t TYPE);
class @NAME@ : public gr_block
{
private:
- @NAME@ (const int O, const int D, const std::vector<@I_TYPE@> &TABLE,
trellis_metric_type_t TYPE);
+ @NAME@ (int O, int D, const std::vector<@I_TYPE@> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -32,14 +32,14 @@
trellis_metrics_c_sptr
-trellis_make_metrics_c (const int O, const int D, const
std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE)
+trellis_make_metrics_c (int O, int D, const std::vector<gr_complex> &TABLE,
trellis_metric_type_t TYPE)
{
return trellis_metrics_c_sptr (new trellis_metrics_c (O,D,TABLE,TYPE));
}
-trellis_metrics_c::trellis_metrics_c (const int O, const int D, const
std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE)
+trellis_metrics_c::trellis_metrics_c (int O, int D, const
std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE)
: gr_block ("metrics_c",
gr_make_io_signature (1, -1, sizeof (gr_complex)),
gr_make_io_signature (1, -1, sizeof (float))),
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_metrics_c;
typedef boost::shared_ptr<trellis_metrics_c> trellis_metrics_c_sptr;
-trellis_metrics_c_sptr trellis_make_metrics_c (const int O, const int D,
const std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE);
+trellis_metrics_c_sptr trellis_make_metrics_c (int O, int D, const
std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE);
/*!
* \brief Evaluate metrics for use by the Viterbi algorithm.
@@ -45,8 +45,8 @@
trellis_metric_type_t d_TYPE;
std::vector<gr_complex> d_TABLE;
- friend trellis_metrics_c_sptr trellis_make_metrics_c (const int O, const int
D, const std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE);
- trellis_metrics_c (const int O, const int D, const std::vector<gr_complex>
&TABLE, trellis_metric_type_t TYPE);
+ friend trellis_metrics_c_sptr trellis_make_metrics_c (int O, int D, const
std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE);
+ trellis_metrics_c (int O, int D, const std::vector<gr_complex> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_c.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,metrics_c);
-trellis_metrics_c_sptr trellis_make_metrics_c (const int O, const int D, const
std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE);
+trellis_metrics_c_sptr trellis_make_metrics_c (int O, int D, const
std::vector<gr_complex> &TABLE, trellis_metric_type_t TYPE);
class trellis_metrics_c : public gr_block
{
private:
- trellis_metrics_c (const int O, const int D, const std::vector<gr_complex>
&TABLE, trellis_metric_type_t TYPE);
+ trellis_metrics_c (int O, int D, const std::vector<gr_complex> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -32,14 +32,14 @@
trellis_metrics_f_sptr
-trellis_make_metrics_f (const int O, const int D, const std::vector<float>
&TABLE, trellis_metric_type_t TYPE)
+trellis_make_metrics_f (int O, int D, const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
{
return trellis_metrics_f_sptr (new trellis_metrics_f (O,D,TABLE,TYPE));
}
-trellis_metrics_f::trellis_metrics_f (const int O, const int D, const
std::vector<float> &TABLE, trellis_metric_type_t TYPE)
+trellis_metrics_f::trellis_metrics_f (int O, int D, const std::vector<float>
&TABLE, trellis_metric_type_t TYPE)
: gr_block ("metrics_f",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (float))),
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_metrics_f;
typedef boost::shared_ptr<trellis_metrics_f> trellis_metrics_f_sptr;
-trellis_metrics_f_sptr trellis_make_metrics_f (const int O, const int D,
const std::vector<float> &TABLE, trellis_metric_type_t TYPE);
+trellis_metrics_f_sptr trellis_make_metrics_f (int O, int D, const
std::vector<float> &TABLE, trellis_metric_type_t TYPE);
/*!
* \brief Evaluate metrics for use by the Viterbi algorithm.
@@ -45,8 +45,8 @@
trellis_metric_type_t d_TYPE;
std::vector<float> d_TABLE;
- friend trellis_metrics_f_sptr trellis_make_metrics_f (const int O, const int
D, const std::vector<float> &TABLE, trellis_metric_type_t TYPE);
- trellis_metrics_f (const int O, const int D, const std::vector<float>
&TABLE, trellis_metric_type_t TYPE);
+ friend trellis_metrics_f_sptr trellis_make_metrics_f (int O, int D, const
std::vector<float> &TABLE, trellis_metric_type_t TYPE);
+ trellis_metrics_f (int O, int D, const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_f.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,metrics_f);
-trellis_metrics_f_sptr trellis_make_metrics_f (const int O, const int D, const
std::vector<float> &TABLE, trellis_metric_type_t TYPE);
+trellis_metrics_f_sptr trellis_make_metrics_f (int O, int D, const
std::vector<float> &TABLE, trellis_metric_type_t TYPE);
class trellis_metrics_f : public gr_block
{
private:
- trellis_metrics_f (const int O, const int D, const std::vector<float>
&TABLE, trellis_metric_type_t TYPE);
+ trellis_metrics_f (int O, int D, const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -32,14 +32,14 @@
trellis_metrics_i_sptr
-trellis_make_metrics_i (const int O, const int D, const std::vector<int>
&TABLE, trellis_metric_type_t TYPE)
+trellis_make_metrics_i (int O, int D, const std::vector<int> &TABLE,
trellis_metric_type_t TYPE)
{
return trellis_metrics_i_sptr (new trellis_metrics_i (O,D,TABLE,TYPE));
}
-trellis_metrics_i::trellis_metrics_i (const int O, const int D, const
std::vector<int> &TABLE, trellis_metric_type_t TYPE)
+trellis_metrics_i::trellis_metrics_i (int O, int D, const std::vector<int>
&TABLE, trellis_metric_type_t TYPE)
: gr_block ("metrics_i",
gr_make_io_signature (1, -1, sizeof (int)),
gr_make_io_signature (1, -1, sizeof (float))),
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_metrics_i;
typedef boost::shared_ptr<trellis_metrics_i> trellis_metrics_i_sptr;
-trellis_metrics_i_sptr trellis_make_metrics_i (const int O, const int D,
const std::vector<int> &TABLE, trellis_metric_type_t TYPE);
+trellis_metrics_i_sptr trellis_make_metrics_i (int O, int D, const
std::vector<int> &TABLE, trellis_metric_type_t TYPE);
/*!
* \brief Evaluate metrics for use by the Viterbi algorithm.
@@ -45,8 +45,8 @@
trellis_metric_type_t d_TYPE;
std::vector<int> d_TABLE;
- friend trellis_metrics_i_sptr trellis_make_metrics_i (const int O, const int
D, const std::vector<int> &TABLE, trellis_metric_type_t TYPE);
- trellis_metrics_i (const int O, const int D, const std::vector<int> &TABLE,
trellis_metric_type_t TYPE);
+ friend trellis_metrics_i_sptr trellis_make_metrics_i (int O, int D, const
std::vector<int> &TABLE, trellis_metric_type_t TYPE);
+ trellis_metrics_i (int O, int D, const std::vector<int> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_i.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,metrics_i);
-trellis_metrics_i_sptr trellis_make_metrics_i (const int O, const int D, const
std::vector<int> &TABLE, trellis_metric_type_t TYPE);
+trellis_metrics_i_sptr trellis_make_metrics_i (int O, int D, const
std::vector<int> &TABLE, trellis_metric_type_t TYPE);
class trellis_metrics_i : public gr_block
{
private:
- trellis_metrics_i (const int O, const int D, const std::vector<int> &TABLE,
trellis_metric_type_t TYPE);
+ trellis_metrics_i (int O, int D, const std::vector<int> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -32,14 +32,14 @@
trellis_metrics_s_sptr
-trellis_make_metrics_s (const int O, const int D, const std::vector<short>
&TABLE, trellis_metric_type_t TYPE)
+trellis_make_metrics_s (int O, int D, const std::vector<short> &TABLE,
trellis_metric_type_t TYPE)
{
return trellis_metrics_s_sptr (new trellis_metrics_s (O,D,TABLE,TYPE));
}
-trellis_metrics_s::trellis_metrics_s (const int O, const int D, const
std::vector<short> &TABLE, trellis_metric_type_t TYPE)
+trellis_metrics_s::trellis_metrics_s (int O, int D, const std::vector<short>
&TABLE, trellis_metric_type_t TYPE)
: gr_block ("metrics_s",
gr_make_io_signature (1, -1, sizeof (short)),
gr_make_io_signature (1, -1, sizeof (float))),
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -31,7 +31,7 @@
class trellis_metrics_s;
typedef boost::shared_ptr<trellis_metrics_s> trellis_metrics_s_sptr;
-trellis_metrics_s_sptr trellis_make_metrics_s (const int O, const int D,
const std::vector<short> &TABLE, trellis_metric_type_t TYPE);
+trellis_metrics_s_sptr trellis_make_metrics_s (int O, int D, const
std::vector<short> &TABLE, trellis_metric_type_t TYPE);
/*!
* \brief Evaluate metrics for use by the Viterbi algorithm.
@@ -45,8 +45,8 @@
trellis_metric_type_t d_TYPE;
std::vector<short> d_TABLE;
- friend trellis_metrics_s_sptr trellis_make_metrics_s (const int O, const int
D, const std::vector<short> &TABLE, trellis_metric_type_t TYPE);
- trellis_metrics_s (const int O, const int D, const std::vector<short>
&TABLE, trellis_metric_type_t TYPE);
+ friend trellis_metrics_s_sptr trellis_make_metrics_s (int O, int D, const
std::vector<short> &TABLE, trellis_metric_type_t TYPE);
+ trellis_metrics_s (int O, int D, const std::vector<short> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_metrics_s.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -24,12 +24,12 @@
GR_SWIG_BLOCK_MAGIC(trellis,metrics_s);
-trellis_metrics_s_sptr trellis_make_metrics_s (const int O, const int D, const
std::vector<short> &TABLE, trellis_metric_type_t TYPE);
+trellis_metrics_s_sptr trellis_make_metrics_s (int O, int D, const
std::vector<short> &TABLE, trellis_metric_type_t TYPE);
class trellis_metrics_s : public gr_block
{
private:
- trellis_metrics_s (const int O, const int D, const std::vector<short>
&TABLE, trellis_metric_type_t TYPE);
+ trellis_metrics_s (int O, int D, const std::vector<short> &TABLE,
trellis_metric_type_t TYPE);
public:
int O () const { return d_O; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -29,20 +29,21 @@
#include <iostream>
trellis_permutation_sptr
-trellis_make_permutation (const int K, const std::vector<int> &TABLE, const
size_t NBYTES)
+trellis_make_permutation (int K, const std::vector<int> &TABLE, int
SYMS_PER_BLOCK, size_t NBYTES_INOUT)
{
- return trellis_permutation_sptr (new trellis_permutation (K,TABLE,NBYTES));
+ return trellis_permutation_sptr (new trellis_permutation
(K,TABLE,SYMS_PER_BLOCK,NBYTES_INOUT));
}
-trellis_permutation::trellis_permutation (const int K, const std::vector<int>
&TABLE, const size_t NBYTES)
+trellis_permutation::trellis_permutation (int K, const std::vector<int>
&TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT)
: gr_sync_block ("permutation",
- gr_make_io_signature (1, -1, NBYTES),
- gr_make_io_signature (1, -1, NBYTES)),
+ gr_make_io_signature (1, -1, NBYTES_INOUT),
+ gr_make_io_signature (1, -1, NBYTES_INOUT)),
d_K (K),
d_TABLE (TABLE),
- d_NBYTES (NBYTES)
+ d_SYMS_PER_BLOCK (SYMS_PER_BLOCK),
+ d_NBYTES_INOUT (NBYTES_INOUT)
{
- set_output_multiple (d_K);
+ set_output_multiple (d_K*SYMS_PER_BLOCK);
//std::cout << d_K << "\n";
}
@@ -56,16 +57,23 @@
int nstreams = input_items.size();
assert (input_items.size() == output_items.size());
assert (noutput_items % d_K ==0);
- //std::cout << noutput_items << "\n";
for (int m=0;m<nstreams;m++) {
const char *in = (const char *) input_items[m];
char *out = (char *) output_items[m];
// per stream processing
- for (unsigned int i = 0; i < noutput_items; i++){
- //std::cout << i << " " << i*d_NBYTES << " " <<
(d_K*(i/d_K)+d_TABLE[i%d_K])*d_NBYTES << "\n";
- memcpy(&(out[i*d_NBYTES]), &(in[(d_K*(i/d_K)+d_TABLE[i%d_K])*d_NBYTES]),
d_NBYTES);
+ for (int i = 0; i < noutput_items/d_SYMS_PER_BLOCK; i++){
+ // Index i refers to blocks.
+ // Begining of packet (in blocks)
+ int i0 = d_K*(i/d_K);
+ // position of block within packet (in blocks)
+ int j0 = i%d_K;
+ // new position of block within packet (in blocks)
+ int k0 = d_TABLE[j0];
+ memcpy(&(out[i*d_SYMS_PER_BLOCK*d_NBYTES_INOUT]),
+ &(in[(i0+k0)*d_SYMS_PER_BLOCK*d_NBYTES_INOUT]),
+ d_NBYTES_INOUT*d_SYMS_PER_BLOCK);
}
// end per stream processing
}
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -30,7 +30,7 @@
class trellis_permutation;
typedef boost::shared_ptr<trellis_permutation> trellis_permutation_sptr;
-trellis_permutation_sptr trellis_make_permutation (const int K, const
std::vector<int> &TABLE, const size_t NBYTES);
+trellis_permutation_sptr trellis_make_permutation (int K, const
std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT);
/*!
* \brief Permutation.
@@ -41,16 +41,18 @@
class trellis_permutation : public gr_sync_block
{
private:
- friend trellis_permutation_sptr trellis_make_permutation (const int K, const
std::vector<int> &TABLE, const size_t NBYTES);
+ friend trellis_permutation_sptr trellis_make_permutation (int K, const
std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT);
int d_K;
std::vector<int> d_TABLE;
- size_t d_NBYTES;
- trellis_permutation (const int K, const std::vector<int> &TABLE, const
size_t NBYTES);
+ int d_SYMS_PER_BLOCK;
+ size_t d_NBYTES_INOUT;
+ trellis_permutation (int K, const std::vector<int> &TABLE, int
SYMS_PER_BLOCK, size_t NBYTES);
public:
int K () const { return d_K; }
const std::vector<int> & TABLE () const { return d_TABLE; }
- size_t NBYTES () const { return d_NBYTES; }
+ int SYMS_PER_BLOCK () const { return d_SYMS_PER_BLOCK; }
+ size_t NBYTES_INOUT () const { return d_NBYTES_INOUT; }
int work (int noutput_items,
gr_vector_const_void_star &input_items,
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_permutation.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -22,18 +22,20 @@
GR_SWIG_BLOCK_MAGIC(trellis,permutation);
-trellis_permutation_sptr trellis_make_permutation (const int K, const
std::vector<int> &TABLE, const size_t NBYTES);
+trellis_permutation_sptr trellis_make_permutation (int K, const
std::vector<int> &TABLE, int SYMS_PER_BLOCK, size_t NBYTES_INOUT);
class trellis_permutation : public gr_sync_block
{
private:
int d_K;
std::vector<int> d_TABLE;
- size_t d_NBYTES;
- trellis_permutation (const int K, const std::vector<int> &TABLE, const
size_t NBYTES);
+ int d_SYMS_PER_BLOCK;
+ size_t d_NBYTES_INOUT;
+ trellis_permutation (int K, const std::vector<int> &TABLE, int
SYMS_PER_BLOCK, size_t NBYTES_INOUT);
public:
int K () const { return d_K; }
const std::vector<int> & TABLE () const { return d_TABLE; }
- size_t NBYTES () const { return d_NBYTES; }
+ int SYMS_PER_BLOCK () const { return d_SYMS_PER_BLOCK; }
+ size_t NBYTES_INOUT () const { return d_NBYTES_INOUT; }
};
Copied:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.cc
(from rev 3351, gnuradio/trunk/gr-trellis/src/lib/trellis_siso_f.cc)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.cc
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,323 @@
+/* -*- 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 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <trellis_siso_f.h>
+#include <gr_io_signature.h>
+#include <stdexcept>
+#include <assert.h>
+#include <iostream>
+
+static const float INF = 1.0e9;
+
+trellis_siso_f_sptr
+trellis_make_siso_f (
+ const fsm &FSM,
+ int K,
+ int S0,
+ int SK,
+ bool POSTI,
+ bool POSTO,
+ trellis_siso_type_t SISO_TYPE)
+{
+ return trellis_siso_f_sptr (new trellis_siso_f
(FSM,K,S0,SK,POSTI,POSTO,SISO_TYPE));
+}
+
+trellis_siso_f::trellis_siso_f (
+ const fsm &FSM,
+ int K,
+ int S0,
+ int SK,
+ bool POSTI,
+ bool POSTO,
+ trellis_siso_type_t SISO_TYPE)
+ : gr_block ("siso_f",
+ gr_make_io_signature (1, -1, sizeof (float)),
+ gr_make_io_signature (1, -1, sizeof (float))),
+ d_FSM (FSM),
+ d_K (K),
+ d_S0 (S0),
+ d_SK (SK),
+ d_POSTI (POSTI),
+ d_POSTO (POSTO),
+ d_SISO_TYPE (SISO_TYPE),
+ d_alpha(FSM.S()*(K+1)),
+ d_beta(FSM.S()*(K+1))
+{
+ int multiple;
+ if (d_POSTI && d_POSTO)
+ multiple = d_FSM.I()+d_FSM.O();
+ else if(d_POSTI)
+ multiple = d_FSM.I();
+ else if(d_POSTO)
+ multiple = d_FSM.O();
+ else
+ throw std::runtime_error ("Not both POSTI and POSTO can be false.");
+ //printf("constructor: Multiple = %d\n",multiple);
+ set_output_multiple (d_K*multiple);
+ //what is the meaning of relative rate for this?
+ // it was suggested to use the one furthest from 1.0
+ // let's do it.
+ set_relative_rate ( multiple / ((double) d_FSM.I()) );
+}
+
+
+void
+trellis_siso_f::forecast (int noutput_items, gr_vector_int
&ninput_items_required)
+{
+ int multiple;
+ if (d_POSTI && d_POSTO)
+ multiple = d_FSM.I()+d_FSM.O();
+ else if(d_POSTI)
+ multiple = d_FSM.I();
+ else if(d_POSTO)
+ multiple = d_FSM.O();
+ else
+ throw std::runtime_error ("Not both POSTI and POSTO can be false.");
+ //printf("forecast: Multiple = %d\n",multiple);
+ assert (noutput_items % (d_K*multiple) == 0);
+ int input_required1 = d_FSM.I() * (noutput_items/multiple) ;
+ int input_required2 = d_FSM.O() * (noutput_items/multiple) ;
+ //printf("forecast: Output requirements: %d\n",noutput_items);
+ //printf("forecast: Input requirements: %d
%d\n",input_required1,input_required2);
+ unsigned ninputs = ninput_items_required.size();
+ assert(ninputs % 2 == 0);
+ for (unsigned int i = 0; i < ninputs/2; i++) {
+ ninput_items_required[2*i] = input_required1;
+ ninput_items_required[2*i+1] = input_required2;
+ }
+}
+
+inline float min(float a, float b)
+{
+ return a <= b ? a : b;
+}
+
+inline float min_star(float a, float b)
+{
+ return (a <= b ? a : b)-log(1+exp(a <= b ? a-b : b-a));
+}
+
+void siso_algorithm(int I, int S, int O,
+ const std::vector<int> &NS,
+ const std::vector<int> &OS,
+ const std::vector<int> &PS,
+ const std::vector<int> &PI,
+ int K,
+ int S0,int SK,
+ bool POSTI, bool POSTO,
+ float (*p2mymin)(float,float),
+ const float *priori, const float *prioro, float *post,
+ std::vector<float> &alpha,
+ std::vector<float> &beta)
+{
+ float norm,mm,minm;
+
+
+ if(S0<0) { // initial state not specified
+ for(int i=0;i<S;i++) alpha[0*S+i]=0;
+ }
+ else {
+ for(int i=0;i<S;i++) alpha[0*S+i]=INF;
+ alpha[0*S+S0]=0.0;
+ }
+
+ for(int k=0;k<K;k++) { // forward recursion
+ norm=INF;
+ for(int j=0;j<S;j++) {
+ minm=INF;
+ for(int i=0;i<I;i++) {
+ int i0 = j*I+i;
+
mm=alpha[k*S+PS[i0]]+priori[k*I+PI[i0]]+prioro[k*O+OS[PS[i0]*I+PI[i0]]];
+ minm=(*p2mymin)(minm,mm);
+ }
+ alpha[(k+1)*S+j]=minm;
+ if(minm<norm) norm=minm;
+ }
+ for(int j=0;j<S;j++)
+ alpha[(k+1)*S+j]-=norm; // normalize total metrics so they do not
explode
+ }
+
+ if(SK<0) { // final state not specified
+ for(int i=0;i<S;i++) beta[K*S+i]=0;
+ }
+ else {
+ for(int i=0;i<S;i++) beta[K*S+i]=INF;
+ beta[K*S+SK]=0.0;
+ }
+
+ for(int k=K-1;k>=0;k--) { // backward recursion
+ norm=INF;
+ for(int j=0;j<S;j++) {
+ minm=INF;
+ for(int i=0;i<I;i++) {
+ int i0 = j*I+i;
+ mm=beta[(k+1)*S+NS[i0]]+priori[k*I+i]+prioro[k*O+OS[i0]];
+ minm=(*p2mymin)(minm,mm);
+ }
+ beta[k*S+j]=minm;
+ if(minm<norm) norm=minm;
+ }
+ for(int j=0;j<S;j++)
+ beta[k*S+j]-=norm; // normalize total metrics so they do not explode
+ }
+
+
+if (POSTI && POSTO)
+{
+ for(int k=0;k<K;k++) { // input combining
+ norm=INF;
+ for(int i=0;i<I;i++) {
+ minm=INF;
+ for(int j=0;j<S;j++) {
+ mm=alpha[k*S+j]+prioro[k*O+OS[j*I+i]]+beta[(k+1)*S+NS[j*I+i]];
+ minm=(*p2mymin)(minm,mm);
+ }
+ post[k*(I+O)+i]=minm;
+ if(minm<norm) norm=minm;
+ }
+ for(int i=0;i<I;i++)
+ post[k*(I+O)+i]-=norm; // normalize metrics
+ }
+
+
+ for(int k=0;k<K;k++) { // output combining
+ norm=INF;
+ for(int n=0;n<O;n++) {
+ minm=INF;
+ for(int j=0;j<S;j++) {
+ for(int i=0;i<I;i++) {
+ mm= (n==OS[j*I+i] ?
alpha[k*S+j]+priori[k*I+i]+beta[(k+1)*S+NS[j*I+i]] : INF);
+ minm=(*p2mymin)(minm,mm);
+ }
+ }
+ post[k*(I+O)+I+n]=minm;
+ if(minm<norm) norm=minm;
+ }
+ for(int n=0;n<O;n++)
+ post[k*(I+O)+I+n]-=norm; // normalize metrics
+ }
+}
+else if(POSTI)
+{
+ for(int k=0;k<K;k++) { // input combining
+ norm=INF;
+ for(int i=0;i<I;i++) {
+ minm=INF;
+ for(int j=0;j<S;j++) {
+ mm=alpha[k*S+j]+prioro[k*O+OS[j*I+i]]+beta[(k+1)*S+NS[j*I+i]];
+ minm=(*p2mymin)(minm,mm);
+ }
+ post[k*I+i]=minm;
+ if(minm<norm) norm=minm;
+ }
+ for(int i=0;i<I;i++)
+ post[k*I+i]-=norm; // normalize metrics
+ }
+}
+else if(POSTO)
+{
+ for(int k=0;k<K;k++) { // output combining
+ norm=INF;
+ for(int n=0;n<O;n++) {
+ minm=INF;
+ for(int j=0;j<S;j++) {
+ for(int i=0;i<I;i++) {
+ mm= (n==OS[j*I+i] ?
alpha[k*S+j]+priori[k*I+i]+beta[(k+1)*S+NS[j*I+i]] : INF);
+ minm=(*p2mymin)(minm,mm);
+ }
+ }
+ post[k*O+n]=minm;
+ if(minm<norm) norm=minm;
+ }
+ for(int n=0;n<O;n++)
+ post[k*O+n]-=norm; // normalize metrics
+ }
+}
+else
+ throw std::runtime_error ("Not both POSTI and POSTO can be false.");
+
+}
+
+
+
+
+
+
+int
+trellis_siso_f::general_work (int noutput_items,
+ gr_vector_int &ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items)
+{
+ assert (input_items.size() == 2*output_items.size());
+ int nstreams = output_items.size();
+ //printf("general_work:Streams: %d\n",nstreams);
+ int multiple;
+ if (d_POSTI && d_POSTO)
+ multiple = d_FSM.I()+d_FSM.O();
+ else if(d_POSTI)
+ multiple = d_FSM.I();
+ else if(d_POSTO)
+ multiple = d_FSM.O();
+ else
+ throw std::runtime_error ("Not both POSTI and POSTO can be false.");
+
+ assert (noutput_items % (d_K*multiple) == 0);
+ int nblocks = noutput_items / (d_K*multiple);
+ //printf("general_work:Blocks: %d\n",nblocks);
+ //for(int i=0;i<ninput_items.size();i++)
+ //printf("general_work:Input items available: %d\n",ninput_items[i]);
+
+ float (*p2min)(float, float) = NULL;
+ if(d_SISO_TYPE == TRELLIS_MIN_SUM)
+ p2min = &min;
+ else if(d_SISO_TYPE == TRELLIS_SUM_PRODUCT)
+ p2min = &min_star;
+
+
+ for (int m=0;m<nstreams;m++) {
+ const float *in1 = (const float *) input_items[2*m];
+ const float *in2 = (const float *) input_items[2*m+1];
+ float *out = (float *) output_items[m];
+ for (int n=0;n<nblocks;n++) {
+ siso_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),
+ d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),
+ d_K,d_S0,d_SK,
+ d_POSTI,d_POSTO,
+ p2min,
+ &(in1[n*d_K*d_FSM.I()]),&(in2[n*d_K*d_FSM.O()]),
+ &(out[n*d_K*multiple]),
+ d_alpha,d_beta);
+ }
+ }
+
+ for (unsigned int i = 0; i < input_items.size()/2; i++) {
+ consume(2*i,d_FSM.I() * noutput_items / multiple );
+ consume(2*i+1,d_FSM.O() * noutput_items / multiple );
+ }
+
+ return noutput_items;
+}
Copied:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.h
(from rev 3351, gnuradio/trunk/gr-trellis/src/lib/trellis_siso_f.h)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.h
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,92 @@
+/* -*- 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 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef INCLUDED_TRELLIS_SISO_F_H
+#define INCLUDED_TRELLIS_SISO_F_H
+
+#include "fsm.h"
+#include "trellis_siso_type.h"
+#include <gr_block.h>
+
+class trellis_siso_f;
+typedef boost::shared_ptr<trellis_siso_f> trellis_siso_f_sptr;
+
+trellis_siso_f_sptr trellis_make_siso_f (
+ const fsm &FSM,
+ int K,
+ int S0,
+ int SK,
+ bool POSTI,
+ bool POSTO,
+ trellis_siso_type_t d_SISO_TYPE);
+
+
+
+class trellis_siso_f : public gr_block
+{
+ fsm d_FSM;
+ int d_K;
+ int d_S0;
+ int d_SK;
+ bool d_POSTI;
+ bool d_POSTO;
+ trellis_siso_type_t d_SISO_TYPE;
+ std::vector<float> d_alpha;
+ std::vector<float> d_beta;
+
+ friend trellis_siso_f_sptr trellis_make_siso_f (
+ const fsm &FSM,
+ int K,
+ int S0,
+ int SK,
+ bool POSTI,
+ bool POSTO,
+ trellis_siso_type_t d_SISO_TYPE);
+
+
+ trellis_siso_f (
+ const fsm &FSM,
+ int K,
+ int S0,
+ int SK,
+ bool POSTI,
+ bool POSTO,
+ trellis_siso_type_t d_SISO_TYPE);
+
+
+public:
+ fsm FSM () const { return d_FSM; }
+ int K () const { return d_K; }
+ int S0 () const { return d_S0; }
+ int SK () const { return d_SK; }
+ bool POSTI () const { return d_POSTI; }
+ bool POSTO () const { return d_POSTO; }
+ trellis_siso_type_t SISO_TYPE () const { return d_SISO_TYPE; }
+ void forecast (int noutput_items,
+ gr_vector_int &ninput_items_required);
+ int general_work (int noutput_items,
+ gr_vector_int &ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+};
+
+#endif
Copied:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.i
(from rev 3351, gnuradio/trunk/gr-trellis/src/lib/trellis_siso_f.i)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.i
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_f.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,55 @@
+/* -*- 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 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+GR_SWIG_BLOCK_MAGIC(trellis,siso_f);
+
+trellis_siso_f_sptr trellis_make_siso_f (
+ const fsm &FSM,
+ int K,
+ int S0,
+ int SK,
+ bool POSTI,
+ bool POSTO,
+ trellis_siso_type_t SISO_TYPE);
+
+
+class trellis_siso_f : public gr_block
+{
+private:
+ trellis_siso_f (
+ const fsm &FSM,
+ int K,
+ int S0,
+ int SK,
+ bool POSTI,
+ bool POSTO,
+ trellis_siso_type_t SISO_TYPE);
+
+public:
+ fsm FSM () const { return d_FSM; }
+ int K () const { return d_K; }
+ int S0 () const { return d_S0; }
+ int SK () const { return d_SK; }
+ bool POSTI () const { return d_POSTI; }
+ bool POSTO () const { return d_POSTO; }
+ trellis_siso_type_t SISO_TYPE () const { return d_SISO_TYPE; }
+};
Copied:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_type.h
(from rev 3351, gnuradio/trunk/gr-trellis/src/lib/trellis_siso_type.h)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_type.h
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_siso_type.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,31 @@
+/* -*- 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 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef INCLUDED_TRELLIS_SISO_TYPE_H
+#define INCLUDED_TRELLIS_SISO_TYPE_H
+
+typedef enum {
+ TRELLIS_MIN_SUM = 200, TRELLIS_SUM_PRODUCT
+} trellis_siso_type_t;
+
+#endif
+
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.cc.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.cc.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.cc.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,18 +34,18 @@
@SPTR_NAME@
address@hidden@ (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK)
+ int K,
+ int S0,
+ int SK)
{
return @SPTR_NAME@ (new @NAME@ (FSM,K,S0,SK));
}
@NAME@::@NAME@ (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK)
+ int K,
+ int S0,
+ int SK)
: gr_block ("@BASE_NAME@",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (@TYPE@))),
@@ -74,13 +74,13 @@
-void viterbi_algorithm(const int I, const int S, const int O,
+void viterbi_algorithm(int I, int S, int O,
const std::vector<int> &NS,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- const int K,
- const int S0,const int SK,
+ int K,
+ int S0,int SK,
const float *in, @TYPE@ *out,
std::vector<int> &trace)
{
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.h.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.h.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.h.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -33,9 +33,9 @@
@SPTR_NAME@ address@hidden@ (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
@@ -49,16 +49,16 @@
friend @SPTR_NAME@ address@hidden@ (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
@NAME@ (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
public:
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.i.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.i.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_X.i.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -26,9 +26,9 @@
@SPTR_NAME@ address@hidden@ (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
class @NAME@ : public gr_block
@@ -36,9 +36,9 @@
private:
@NAME@ (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,18 +34,18 @@
trellis_viterbi_b_sptr
trellis_make_viterbi_b (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK)
+ int K,
+ int S0,
+ int SK)
{
return trellis_viterbi_b_sptr (new trellis_viterbi_b (FSM,K,S0,SK));
}
trellis_viterbi_b::trellis_viterbi_b (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK)
+ int K,
+ int S0,
+ int SK)
: gr_block ("viterbi_b",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (unsigned
char))),
@@ -74,13 +74,13 @@
-void viterbi_algorithm(const int I, const int S, const int O,
+void viterbi_algorithm(int I, int S, int O,
const std::vector<int> &NS,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- const int K,
- const int S0,const int SK,
+ int K,
+ int S0,int SK,
const float *in, unsigned char *out,
std::vector<int> &trace)
{
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -33,9 +33,9 @@
trellis_viterbi_b_sptr trellis_make_viterbi_b (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
@@ -49,16 +49,16 @@
friend trellis_viterbi_b_sptr trellis_make_viterbi_b (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
trellis_viterbi_b (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
public:
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_b.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -26,9 +26,9 @@
trellis_viterbi_b_sptr trellis_make_viterbi_b (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
class trellis_viterbi_b : public gr_block
@@ -36,9 +36,9 @@
private:
trellis_viterbi_b (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,24 +34,24 @@
@SPTR_NAME@
address@hidden@ (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE)
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE)
{
return @SPTR_NAME@ (new @NAME@ (FSM,D,TABLE,K,S0,SK,TYPE));
}
@NAME@::@NAME@ (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE)
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE)
: gr_block ("@BASE_NAME@",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (@TYPE@))),
@@ -83,16 +83,16 @@
-void viterbi_algorithm_combined(const int I, const int S, const int O,
+void viterbi_algorithm_combined(int I, int S, int O,
const std::vector<int> &NS,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,const int SK,
- const trellis_metric_type_t TYPE,
+ int K,
+ int S0,int SK,
+ trellis_metric_type_t TYPE,
const float *in, @TYPE@ *out,
std::vector<int> &trace)
{
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.h.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.h.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.h.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,12 +34,12 @@
@SPTR_NAME@ address@hidden@ (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
class @NAME@ : public gr_block
@@ -55,22 +55,22 @@
friend @SPTR_NAME@ address@hidden@ (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
@NAME@ (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
public:
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.i.t
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.i.t
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_X.i.t
2006-08-19 00:45:20 UTC (rev 3352)
@@ -26,12 +26,12 @@
@SPTR_NAME@ address@hidden@ (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
class @NAME@ : public gr_block
@@ -39,12 +39,12 @@
private:
@NAME@ (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,24 +34,24 @@
trellis_viterbi_combined_b_sptr
trellis_make_viterbi_combined_b (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE)
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE)
{
return trellis_viterbi_combined_b_sptr (new trellis_viterbi_combined_b
(FSM,D,TABLE,K,S0,SK,TYPE));
}
trellis_viterbi_combined_b::trellis_viterbi_combined_b (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE)
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE)
: gr_block ("viterbi_combined_b",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (unsigned
char))),
@@ -83,16 +83,16 @@
-void viterbi_algorithm_combined(const int I, const int S, const int O,
+void viterbi_algorithm_combined(int I, int S, int O,
const std::vector<int> &NS,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,const int SK,
- const trellis_metric_type_t TYPE,
+ int K,
+ int S0,int SK,
+ trellis_metric_type_t TYPE,
const float *in, unsigned char *out,
std::vector<int> &trace)
{
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,12 +34,12 @@
trellis_viterbi_combined_b_sptr trellis_make_viterbi_combined_b (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
class trellis_viterbi_combined_b : public gr_block
@@ -55,22 +55,22 @@
friend trellis_viterbi_combined_b_sptr trellis_make_viterbi_combined_b (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
trellis_viterbi_combined_b (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
public:
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_b.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -26,12 +26,12 @@
trellis_viterbi_combined_b_sptr trellis_make_viterbi_combined_b (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
class trellis_viterbi_combined_b : public gr_block
@@ -39,12 +39,12 @@
private:
trellis_viterbi_combined_b (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,24 +34,24 @@
trellis_viterbi_combined_i_sptr
trellis_make_viterbi_combined_i (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE)
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE)
{
return trellis_viterbi_combined_i_sptr (new trellis_viterbi_combined_i
(FSM,D,TABLE,K,S0,SK,TYPE));
}
trellis_viterbi_combined_i::trellis_viterbi_combined_i (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE)
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE)
: gr_block ("viterbi_combined_i",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (int))),
@@ -83,16 +83,16 @@
-void viterbi_algorithm_combined(const int I, const int S, const int O,
+void viterbi_algorithm_combined(int I, int S, int O,
const std::vector<int> &NS,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,const int SK,
- const trellis_metric_type_t TYPE,
+ int K,
+ int S0,int SK,
+ trellis_metric_type_t TYPE,
const float *in, int *out,
std::vector<int> &trace)
{
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,12 +34,12 @@
trellis_viterbi_combined_i_sptr trellis_make_viterbi_combined_i (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
class trellis_viterbi_combined_i : public gr_block
@@ -55,22 +55,22 @@
friend trellis_viterbi_combined_i_sptr trellis_make_viterbi_combined_i (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
trellis_viterbi_combined_i (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
public:
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_i.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -26,12 +26,12 @@
trellis_viterbi_combined_i_sptr trellis_make_viterbi_combined_i (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
class trellis_viterbi_combined_i : public gr_block
@@ -39,12 +39,12 @@
private:
trellis_viterbi_combined_i (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,24 +34,24 @@
trellis_viterbi_combined_s_sptr
trellis_make_viterbi_combined_s (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE)
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE)
{
return trellis_viterbi_combined_s_sptr (new trellis_viterbi_combined_s
(FSM,D,TABLE,K,S0,SK,TYPE));
}
trellis_viterbi_combined_s::trellis_viterbi_combined_s (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE)
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE)
: gr_block ("viterbi_combined_s",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (short))),
@@ -83,16 +83,16 @@
-void viterbi_algorithm_combined(const int I, const int S, const int O,
+void viterbi_algorithm_combined(int I, int S, int O,
const std::vector<int> &NS,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,const int SK,
- const trellis_metric_type_t TYPE,
+ int K,
+ int S0,int SK,
+ trellis_metric_type_t TYPE,
const float *in, short *out,
std::vector<int> &trace)
{
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,12 +34,12 @@
trellis_viterbi_combined_s_sptr trellis_make_viterbi_combined_s (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
class trellis_viterbi_combined_s : public gr_block
@@ -55,22 +55,22 @@
friend trellis_viterbi_combined_s_sptr trellis_make_viterbi_combined_s (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
trellis_viterbi_combined_s (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
public:
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_combined_s.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -26,12 +26,12 @@
trellis_viterbi_combined_s_sptr trellis_make_viterbi_combined_s (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
class trellis_viterbi_combined_s : public gr_block
@@ -39,12 +39,12 @@
private:
trellis_viterbi_combined_s (
const fsm &FSM,
- const int D,
+ int D,
const std::vector<float> &TABLE,
- const int K,
- const int S0,
- const int SK,
- const trellis_metric_type_t TYPE);
+ int K,
+ int S0,
+ int SK,
+ trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,18 +34,18 @@
trellis_viterbi_i_sptr
trellis_make_viterbi_i (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK)
+ int K,
+ int S0,
+ int SK)
{
return trellis_viterbi_i_sptr (new trellis_viterbi_i (FSM,K,S0,SK));
}
trellis_viterbi_i::trellis_viterbi_i (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK)
+ int K,
+ int S0,
+ int SK)
: gr_block ("viterbi_i",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (int))),
@@ -74,13 +74,13 @@
-void viterbi_algorithm(const int I, const int S, const int O,
+void viterbi_algorithm(int I, int S, int O,
const std::vector<int> &NS,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- const int K,
- const int S0,const int SK,
+ int K,
+ int S0,int SK,
const float *in, int *out,
std::vector<int> &trace)
{
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -33,9 +33,9 @@
trellis_viterbi_i_sptr trellis_make_viterbi_i (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
@@ -49,16 +49,16 @@
friend trellis_viterbi_i_sptr trellis_make_viterbi_i (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
trellis_viterbi_i (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
public:
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_i.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -26,9 +26,9 @@
trellis_viterbi_i_sptr trellis_make_viterbi_i (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
class trellis_viterbi_i : public gr_block
@@ -36,9 +36,9 @@
private:
trellis_viterbi_i (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
public:
fsm FSM () const { return d_FSM; }
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.cc
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -34,18 +34,18 @@
trellis_viterbi_s_sptr
trellis_make_viterbi_s (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK)
+ int K,
+ int S0,
+ int SK)
{
return trellis_viterbi_s_sptr (new trellis_viterbi_s (FSM,K,S0,SK));
}
trellis_viterbi_s::trellis_viterbi_s (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK)
+ int K,
+ int S0,
+ int SK)
: gr_block ("viterbi_s",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (short))),
@@ -74,13 +74,13 @@
-void viterbi_algorithm(const int I, const int S, const int O,
+void viterbi_algorithm(int I, int S, int O,
const std::vector<int> &NS,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- const int K,
- const int S0,const int SK,
+ int K,
+ int S0,int SK,
const float *in, short *out,
std::vector<int> &trace)
{
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.h
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.h
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -33,9 +33,9 @@
trellis_viterbi_s_sptr trellis_make_viterbi_s (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
@@ -49,16 +49,16 @@
friend trellis_viterbi_s_sptr trellis_make_viterbi_s (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
trellis_viterbi_s (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
public:
Modified:
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.i
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.i
2006-08-19 00:37:40 UTC (rev 3351)
+++
gnuradio/branches/developers/jcorgan/wip/gr-trellis/src/lib/trellis_viterbi_s.i
2006-08-19 00:45:20 UTC (rev 3352)
@@ -26,9 +26,9 @@
trellis_viterbi_s_sptr trellis_make_viterbi_s (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
class trellis_viterbi_s : public gr_block
@@ -36,9 +36,9 @@
private:
trellis_viterbi_s (
const fsm &FSM,
- const int K,
- const int S0,
- const int SK);
+ int K,
+ int S0,
+ int SK);
public:
fsm FSM () const { return d_FSM; }
Copied: gnuradio/branches/developers/jcorgan/wip/mblock (from rev 3351,
gnuradio/trunk/mblock)
Property changes on: gnuradio/branches/developers/jcorgan/wip/mblock
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
aclocal.m4
configure
config.h.in
stamp-h.in
libtool
config.log
config.h
config.cache
config.status
missing
stamp-h
stamp-h1
.deps
.libs
*.la
*.lo
autom4te.cache
*.cache
missing
make.log
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/AUTHORS
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/AUTHORS (from rev 3351,
gnuradio/trunk/mblock/AUTHORS)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/AUTHORS
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/AUTHORS 2006-08-19
00:45:20 UTC (rev 3352)
@@ -0,0 +1 @@
+Eric Blossom <address@hidden>
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/ChangeLog
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/ChangeLog (from rev
3351, gnuradio/trunk/mblock/ChangeLog)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/ChangeLog
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/ChangeLog 2006-08-19
00:45:20 UTC (rev 3352)
@@ -0,0 +1,20 @@
+#
+# Copyright 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., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/Makefile.am
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/Makefile.am (from rev
3351, gnuradio/trunk/mblock/Makefile.am)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/Makefile.am
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/Makefile.am 2006-08-19
00:45:20 UTC (rev 3352)
@@ -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., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+include $(top_srcdir)/Makefile.common
+
+SUBDIRS = src
+DIST_SUBDIRS = src doc
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/README
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/README (from rev 3351,
gnuradio/trunk/mblock/README)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/README
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/README 2006-08-19
00:45:20 UTC (rev 3352)
@@ -0,0 +1,22 @@
+#
+# Copyright 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., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+The "Message block" implementation.
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/doc (from rev 3351,
gnuradio/trunk/mblock/doc)
Property changes on: gnuradio/branches/developers/jcorgan/wip/mblock/doc
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
.deps
.libs
*.la
*.lo
autom4te.cache
*.cache
howto-write-a-block.html
gr_block.h.xml
howto_1.i.xml
howto_square_ff.cc.xml
howto_square_ff.h.xml
qa_howto_1.py.xml
src_lib_Makefile_1.am.xml
src_lib_Makefile_2.am.xml
howto_square2_ff.cc.xml
howto_square2_ff.h.xml
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/doc/Makefile.am
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/doc/Makefile.am (from
rev 3351, gnuradio/trunk/mblock/doc/Makefile.am)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/doc/Makefile.am
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/doc/Makefile.am
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,43 @@
+#
+# 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., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+TARGETS =
+
+
+# To avoid build problems for folks who don't have xmlto installed, we
+# don't build the docs by default.
+
+# html: $(TARGETS)
+all: $(TARGETS)
+
+
+EXTRA_DIST =
+
+BUILT_XML_FILES =
+
+
+# ----------------------------------------------------------------
+
+clean:
+ -rm -f $(TARGETS) $(BUILT_XML_FILES)
+
+%.html : %.xml
+ xmlto html-nochunks $<
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/src (from rev 3351,
gnuradio/trunk/mblock/src)
Property changes on: gnuradio/branches/developers/jcorgan/wip/mblock/src
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
.la
.lo
.deps
.libs
*.la
*.lo
howto.cc
howto.py
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/src/Makefile.am
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/src/Makefile.am (from
rev 3351, gnuradio/trunk/mblock/src/Makefile.am)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/src/Makefile.am
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/src/Makefile.am
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,22 @@
+#
+# 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 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., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+SUBDIRS = lib
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib (from rev 3351,
gnuradio/trunk/mblock/src/lib)
Property changes on: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
.la
.lo
.deps
.libs
*.la
*.lo
howto.cc
howto.py
test_pmt
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/Makefile.am
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/Makefile.am
(from rev 3351, gnuradio/trunk/mblock/src/lib/Makefile.am)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/Makefile.am
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/Makefile.am
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,82 @@
+#
+# Copyright 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., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+include $(top_srcdir)/Makefile.common
+
+INCLUDES = $(PMT_INCLUDES) $(BOOST_CFLAGS) $(CPPUNIT_INCLUDES)
+
+# TESTS = test_mblock
+
+lib_LTLIBRARIES = libmblock.la libmblock-qa.la
+
+EXTRA_DIST =
+
+
+# These are the source files that go into the mblock shared library
+libmblock_la_SOURCES = \
+ mb_message.cc \
+ mb_protocol_class.cc
+
+
+# magic flags
+libmblock_la_LDFLAGS = $(NO_UNDEFINED) -avoid-version
+
+# link the library against the c++ standard library
+libmblock_la_LIBADD = \
+ $(PMT_LIBS) \
+ -lstdc++
+
+include_HEADERS = \
+ mb_mblock.h \
+ mb_common.h \
+ mb_message.h \
+ mb_protocol_class.h
+
+noinst_HEADERS =
+
+
+# Build the qa code into its own library
+
+libmblock_qa_la_SOURCES =
+
+
+# magic flags
+libmblock_qa_la_LDFLAGS = $(NO_UNDEFINED) -avoid-version
+
+# link the library against the c++ standard library
+libmblock_qa_la_LIBADD = \
+ libmblock.la \
+ $(CPPUNIT_LIBS) \
+ -lstdc++
+
+
+#noinst_PROGRAMS = \
+# test_mblock
+
+
+LIBMBLOCK = libmblock.la
+LIBMBLOCKQA = libmblock-qa.la $(LIBMBLOCK)
+
+#test_mblock_SOURCES = test_mblock.cc
+#test_mblock_LDADD = $(LIBMBLOCKQA)
+
+
+CLEANFILES = $(BUILT_SOURCES) *.pyc
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_common.h
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_common.h
(from rev 3351, gnuradio/trunk/mblock/src/lib/mb_common.h)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_common.h
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_common.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,29 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef INCLUDED_MB_COMMON_H
+#define INCLUDED_MB_COMMON_H
+
+#include <pmt.h>
+
+typedef unsigned int mb_pri_t;
+static const mb_pri_t MB_PRI_DEFAULT = 5;
+
+#endif /* INCLUDED_MB_COMMON_H */
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_mblock.h
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_mblock.h
(from rev 3351, gnuradio/trunk/mblock/src/lib/mb_mblock.h)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_mblock.h
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_mblock.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,26 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef INCLUDED_MB_MBLOCK_H
+#define INCLUDED_MB_MBLOCK_H
+
+#include <mb_common.h>
+
+#endif /* INCLUDED_MB_MBLOCK_H */
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.cc
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.cc
(from rev 3351, gnuradio/trunk/mblock/src/lib/mb_message.cc)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.cc
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,41 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <mb_message.h>
+
+mb_message_sptr
+mb_make_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority)
+{
+ return mb_message_sptr(new mb_message(signal, data, metadata, priority));
+}
+
+mb_message::mb_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t
priority)
+ : d_signal(signal), d_data(data), d_metadata(metadata), d_priority(priority)
+{
+}
+
+mb_message::~mb_message()
+{
+ // NOP
+}
Deleted: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.h
Copied: gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.h
(from rev 3351, gnuradio/trunk/mblock/src/lib/mb_message.h)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.h
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_message.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,66 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef INCLUDED_MB_MESSAGE_H
+#define INCLUDED_MB_MESSAGE_H
+
+#include <mb_common.h>
+
+class mb_message;
+typedef boost::shared_ptr<mb_message> mb_message_sptr;
+
+/*!
+ * \brief construct a message and return boost::shared_ptr
+ *
+ * \param signal identifier of the message
+ * \param data the data to be operated on
+ * \param metadata information about the data
+ * \param priority urgency
+ */
+mb_message_sptr
+mb_make_message(pmt_t signal,
+ pmt_t data = PMT_NIL,
+ pmt_t metadata = PMT_NIL,
+ mb_pri_t priority = MB_PRI_DEFAULT);
+
+class mb_message {
+ pmt_t d_signal;
+ pmt_t d_data;
+ pmt_t d_metadata;
+ mb_pri_t d_priority;
+ // foo d_rcvd_port_id;
+
+ friend mb_message_sptr
+ mb_make_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);
+
+ // private constructor
+ mb_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);
+
+public:
+ ~mb_message();
+
+ pmt_t signal() const { return d_signal; }
+ pmt_t data() const { return d_data; }
+ pmt_t metadata() const { return d_metadata; }
+ mb_pri_t priority() const { return d_priority; }
+ // foo rcvd_port_id const { return d_rcvd_port_id; }
+};
+
+#endif /* INCLUDED_MB_MESSAGE_H */
Deleted:
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.cc
Copied:
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.cc
(from rev 3351, gnuradio/trunk/mblock/src/lib/mb_protocol_class.cc)
===================================================================
---
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.cc
(rev 0)
+++
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.cc
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,50 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <mb_protocol_class.h>
+
+
+mb_protocol_class_sptr
+mb_make_protocol_class(pmt_t name, pmt_t incoming, pmt_t outgoing)
+{
+ return mb_protocol_class_sptr(new mb_protocol_class(name, incoming,
outgoing));
+}
+
+mb_protocol_class::mb_protocol_class(pmt_t name, pmt_t incoming, pmt_t
outgoing)
+ : d_name(name), d_incoming(incoming), d_outgoing(outgoing)
+{
+}
+
+mb_protocol_class::~mb_protocol_class()
+{
+ // NOP
+}
+
+
+mb_protocol_class_sptr
+mb_protocol_class::conj() const
+{
+ return mb_make_protocol_class(name(), outgoing(), incoming());
+}
Deleted:
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.h
Copied:
gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.h
(from rev 3351, gnuradio/trunk/mblock/src/lib/mb_protocol_class.h)
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.h
(rev 0)
+++ gnuradio/branches/developers/jcorgan/wip/mblock/src/lib/mb_protocol_class.h
2006-08-19 00:45:20 UTC (rev 3352)
@@ -0,0 +1,62 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef INCLUDED_MB_PROTOCOL_CLASS_H
+#define INCLUDED_MB_PROTOCOL_CLASS_H
+
+#include <mb_common.h>
+
+// FIXME maybe this should just be a pmt_t aggregate???
+
+class mb_protocol_class;
+typedef boost::shared_ptr<mb_protocol_class> mb_protocol_class_sptr;
+
+/*!
+ * \brief construct a protocol_class and return boost::shared_ptr
+ *
+ * \param name the name of the class (symbol)
+ * \param incoming incoming message set (dict: keys are message types)
+ * \param outgoing outgoing message set (dict: keys are message types)
+ */
+mb_protocol_class_sptr
+mb_make_protocol_class(pmt_t name, pmt_t incoming, pmt_t outgoing);
+
+class mb_protocol_class {
+ pmt_t d_name;
+ pmt_t d_incoming;
+ pmt_t d_outgoing;
+
+ friend mb_protocol_class_sptr
+ mb_make_protocol_class(pmt_t name, pmt_t incoming, pmt_t outgoing);
+
+ // private constructor
+ mb_protocol_class(pmt_t name, pmt_t incoming, pmt_t outgoing);
+
+public:
+ ~mb_protocol_class();
+
+ pmt_t name() const { return d_name; }
+ pmt_t incoming() const { return d_incoming; }
+ pmt_t outgoing() const { return d_outgoing; }
+
+ mb_protocol_class_sptr conj() const; // return the conjugate of this
protocol class
+};
+
+#endif /* INCLUDED_MB_PROTOCOL_CLASS_H */
Modified: gnuradio/branches/developers/jcorgan/wip/pmt/src/lib/Makefile.am
===================================================================
--- gnuradio/branches/developers/jcorgan/wip/pmt/src/lib/Makefile.am
2006-08-19 00:37:40 UTC (rev 3351)
+++ gnuradio/branches/developers/jcorgan/wip/pmt/src/lib/Makefile.am
2006-08-19 00:45:20 UTC (rev 3352)
@@ -90,6 +90,7 @@
# link the library against the c++ standard library
libpmt_qa_la_LIBADD = \
+ libpmt.la \
$(CPPUNIT_LIBS) \
-lstdc++
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3352 - in gnuradio/branches/developers/jcorgan/wip: . config ezdop/src/firmware gnuradio-core/src/lib gnuradio-core/src/lib/general gnuradio-examples/python/channel-coding gnuradio-examples/python/channel-coding/fsm_files gr-error-correcting-codes/src/lib/libecc/tests gr-radar/src/lib gr-trellis/doc gr-trellis/src/lib mblock mblock/doc mblock/src mblock/src/lib pmt/src/lib,
jcorgan <=