not needed any more
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 1 Jul 2014 23:22:23 +0000 (23:22 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 1 Jul 2014 23:22:23 +0000 (23:22 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1733 01035d8c-6547-0410-b346-abe4f91aad63

rfmodem/CMakeLists.txt [deleted file]
rfmodem/golay23.c [deleted file]
rfmodem/golay23.h [deleted file]

diff --git a/rfmodem/CMakeLists.txt b/rfmodem/CMakeLists.txt
deleted file mode 100644 (file)
index 0c609d6..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# Codec2 - Next-Generation Digital Voice for Two-Way Radio
-#
-# CMake configuration contributed by Richard Shaw (KF5OIM)
-# Please report questions, comments, problems, or patches to the freetel
-# mailing list: https://lists.sourceforge.net/lists/listinfo/freetel-codec2
-#
-
-cmake_minimum_required(VERSION 2.8)
-
-#
-# Prevent in-source builds
-# If an in-source build is attempted, you will still need to clean up a few
-# files manually.
-#
-set(CMAKE_DISABLE_SOURCE_CHANGES ON)
-set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
-
-project(rfmodem)
-
-
-#
-# Set project version information. This should probably be done via external
-# file at some point.
-#
-set(RFMODEM_VERSION_MAJOR 0)
-set(RFMODEM_VERSION_MINOR 1)
-# Set to patch level is needed, otherwise leave FALSE.
-set(RFMODEM_VERSION_PATCH FALSE)
-set(RFMODEM_VERSION "${RFMODEM_VERSION_MAJOR}.${RFMODEM_VERSION_MINOR}")
-# Patch level version bumps should not change API/ABI.
-set(SOVERSION "${RFMODEM_VERSION_MAJOR}.${RFMODEM_VERSION_MINOR}")
-if(RFMODEM_VERSION_PATCH)
-    set(PROJECT_VERSION "${RFMODEM_VERSION}.${RFMODEM_VERSION_PATCH}")
-endif(RFMODEM_VERSION_PATCH)
-message(STATUS "codec2 version: ${RFMODEM_VERSION}")
-
-# Set default build type
-if(NOT CMAKE_BUILD_TYPE)
-    set(CMAKE_BUILD_TYPE "Release")
-endif(NOT CMAKE_BUILD_TYPE)
-message(STATUS "Build type is: ${CMAKE_BUILD_TYPE}")
-
-#
-# Setup Windows/MinGW specifics here.
-#
-if(MINGW)
-    message(STATUS "System is MinGW.")
-    foreach(RUNTIME
-        libgcc_s_sjlj-1.dll
-        libstdc++-6.dll)
-        message(STATUS "Checking for ${RUNTIME}")
-        find_library(${RUNTIME}_LIB ${RUNTIME})
-        message(STATUS "runtime found: ${${RUNTIME}_LIB}")
-        list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${${RUNTIME}_LIB})
-    endforeach()
-endif(MINGW)
-
-
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall")
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall")
-
-#
-# Default options
-#a
-option(BUILD_SHARED_LIBS
-    "Build shared library. Set to OFF for static library." ON)
-
-
-# Math library is automatic on windows
-#if(UNIX)
-#    set(CMAKE_REQUIRED_INCLUDES math.h)
-#    set(CMAKE_REQUIRED_LIBRARIES m)
-#endif(UNIX)
-
-include(CheckIncludeFiles)
-check_include_files("stdlib.h" HAVE_STDLIB_H)
-check_include_files("stdio.h" HAVE_STRING_H)
-check_include_files("assert.h" HAVE_ASSERT_H)
-
-#include(CheckFunctionExists)
-
-#
-# rfmodem library
-#
-#add_subdirectory(src)
-
-set(RFMODEM_SRCS golay23.c)
-
-set(RFMODEM_PUBLIC_HEADERS golay23.h)
-
-add_library(rfmodem ${RFMODEM_SRCS})
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(rfmodem ${CMAKE_REQUIRED_LIBRARIES})
-set_target_properties(rfmodem PROPERTIES SOVERSION ${SOVERSION})
-
-install(TARGETS rfmodem
-    LIBRARY DESTINATION lib${LIB_SUFFIX}
-    ARCHIVE DESTINATION lib${LIB_SUFFIX}
-    RUNTIME DESTINATION bin)
-
-install(FILES ${RFMODEM_PUBLIC_HEADERS}
-    DESTINATION include/rfmodem)
-
-
-#
-# Cpack NSIS installer configuration for Windows.
-# See: http://nsis.sourceforge.net/Download
-#
-# *nix systems should use "make install" and/or appropriate
-# distribution packaging tools.
-#
-if(WIN32)
-    include(InstallRequiredSystemLibraries)
-    set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Next-Generation Digital Voice for Two-Way Radio")
-    set(CPACK_PACKAGE_VENDOR "CMake")
-    set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
-    set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
-    set(CPACK_PACKAGE_VERSION_MAJOR ${RFMODEM_VERSION_MAJOR})
-    set(CPACK_PACKAGE_VERSION_MINOR ${RFMODEM_VERSION_MINOR})
-    if(RFMODEM_VERSION_PATCH)
-        set(CPACK_PACKAGE_VERSION_PATCH ${RFMODEM_VERSION_PATCH})
-    endif(RFMODEM_VERSION_PATCH)
-    set(CPACK_PACKAGE_INSTALL_DIRECTORY "Codec2")
-    # There is a bug in NSI that does not handle full unix paths properly. Make
-    # sure there is at least one set of four (4) backlasshes.
-    #set(CPACK_PACKAGE_ICON "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp")
-    #set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe")
-    set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-    set(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\codec2.org")
-    set(CPACK_NSIS_MODIFY_PATH ON)
-    include(CPack)
-endif(WIN32)
diff --git a/rfmodem/golay23.c b/rfmodem/golay23.c
deleted file mode 100644 (file)
index 84d4c28..0000000
+++ /dev/null
@@ -1,428 +0,0 @@
-/*---------------------------------------------------------------------------*\
-
-  FILE........: golay23.c
-  AUTHOR......: Robert Morelos-Zaragoza & David Rowe
-  DATE CREATED: 3 March 2013
-
-  To test:
-  
-     src$ gcc golay23.c -o golay23 -Wall -DGOLAY23_UNITTEST
-     src$ ./golay23
-
-\*---------------------------------------------------------------------------*/
-
-/* File:    golay23.c
- * Title:   Encoder/decoder for a binary (23,12,7) Golay code
- * Author:  Robert Morelos-Zaragoza (robert@spectra.eng.hawaii.edu)
- * Date:    August 1994
- *
- * The binary (23,12,7) Golay code is an example of a perfect code, that is,
- * the number of syndromes equals the number of correctable error patterns.
- * The minimum distance is 7, so all error patterns of Hamming weight up to
- * 3 can be corrected. The total number of these error patterns is:
- *
- *       Number of errors         Number of patterns
- *       ----------------         ------------------
- *              0                         1
- *              1                        23
- *              2                       253
- *              3                      1771
- *                                     ----
- *    Total number of error patterns = 2048 = 2^{11} = number of syndromes
- *                                               --
- *                number of redundant bits -------^
- *
- * Because of its relatively low length (23), dimension (12) and number of
- * redundant bits (11), the binary (23,12,7) Golay code can be encoded and
- * decoded simply by using look-up tables. The program below uses a 16K 
- * encoding table and an 8K decoding table.
- * 
- * For more information, suggestions, or other ideas on implementing error
- * correcting codes, please contact me at (I'm temporarily in Japan, but
- * below is my U.S. address):
- *
- *                    Robert Morelos-Zaragoza
- *                    770 S. Post Oak Ln. #200
- *                      Houston, Texas 77056
- *
- *             email: robert@spectra.eng.hawaii.edu
- *
- *       Homework: Add an overall parity-check bit to get the (24,12,8)
- *                 extended Golay code.
- *
- * COPYRIGHT NOTICE: This computer program is free for non-commercial purposes.
- * You may implement this program for any non-commercial application. You may 
- * also implement this program for commercial purposes, provided that you
- * obtain my written permission. Any modification of this program is covered
- * by this copyright.
- *
- * ==   Copyright (c) 1994  Robert Morelos-Zaragoza. All rights reserved.   ==
- */
-
-#include "golay23.h"
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#define X22             0x00400000   /* vector representation of X^{22} */
-#define X11             0x00000800   /* vector representation of X^{11} */
-#define MASK12          0xfffff800   /* auxiliary vector for testing */
-#define GENPOL          0x00000c75   /* generator polinomial, g(x) */
-
-/* Global variables:
- *
- * pattern = error pattern, or information, or received vector
- * encoding_table[] = encoding table
- * decoding_table[] = decoding table
- * data = information bits, i(x)
- * codeword = code bits = x^{11}i(x) + (x^{11}i(x) mod g(x))
- * numerr = number of errors = Hamming weight of error polynomial e(x)
- * position[] = error positions in the vector representation of e(x)
- * recd = representation of corrupted received polynomial r(x) = c(x) + e(x)
- * decerror = number of decoding errors
- * a[] = auxiliary array to generate correctable error patterns
- */
-
-static int inited =  0;
-
-static int encoding_table[4096], decoding_table[2048];
-#ifdef GOLAY23_UNITTEST
-static int position[23] = { 0x00000001, 0x00000002, 0x00000004, 0x00000008,
-                            0x00000010, 0x00000020, 0x00000040, 0x00000080,
-                            0x00000100, 0x00000200, 0x00000400, 0x00000800,
-                            0x00001000, 0x00002000, 0x00004000, 0x00008000,
-                            0x00010000, 0x00020000, 0x00040000, 0x00080000,
-                            0x00100000, 0x00200000, 0x00400000 };
-#endif
-static int arr2int(int a[], int r)
-/*
- * Convert a binary vector of Hamming weight r, and nonzero positions in
- * array a[1]...a[r], to a long integer \sum_{i=1}^r 2^{a[i]-1}.
- */
-{
-   int i;
-   long mul, result = 0, temp;
-   for (i=1; i<=r; i++) {
-      mul = 1;
-      temp = a[i]-1;
-      while (temp--)
-         mul = mul << 1;
-      result += mul;
-      }
-   return(result);
-}
-
-void nextcomb(int n, int r, int a[])
-/*
- * Calculate next r-combination of an n-set.
- */
-{
-  int  i, j;
-  a[r]++;
-  if (a[r] <= n)
-      return;
-  j = r - 1;
-  while (a[j] == n - r + j)
-     j--;
-  for (i = r; i >= j; i--)
-      a[i] = a[j] + i - j + 1;
-  return;
-}
-
-int get_syndrome(int pattern)
-/*
- * Compute the syndrome corresponding to the given pattern, i.e., the
- * remainder after dividing the pattern (when considering it as the vector
- * representation of a polynomial) by the generator polynomial, GENPOL.
- * In the program this pattern has several meanings: (1) pattern = infomation
- * bits, when constructing the encoding table; (2) pattern = error pattern,
- * when constructing the decoding table; and (3) pattern = received vector, to
- * obtain its syndrome in decoding.
- */
-{
-    int aux = X22;
-    if (pattern >= X11)
-       while (pattern & MASK12) {
-           while (!(aux & pattern))
-              aux = aux >> 1;
-           pattern ^= (aux/X11) * GENPOL;
-           }
-    return(pattern);
-}
-
-/*---------------------------------------------------------------------------*\
-                                                       
-  FUNCTION....: golay23_init()   
-  AUTHOR......: David Rowe                           
-  DATE CREATED: 3 March 2013
-
-  Call this once when you start your program to init the Golay tables.
-
-\*---------------------------------------------------------------------------*/
-
-void golay23_init(void ) {
-   int  i;
-   long temp;
-   int  a[4];
-   int  pattern;
-
-   /*
-    * ---------------------------------------------------------------------
-    *                  Generate ENCODING TABLE
-    *
-    * An entry to the table is an information vector, a 32-bit integer,
-    * whose 12 least significant positions are the information bits. The
-    * resulting value is a codeword in the (23,12,7) Golay code: A 32-bit
-    * integer whose 23 least significant bits are coded bits: Of these, the
-    * 12 most significant bits are information bits and the 11 least
-    * significant bits are redundant bits (systematic encoding).
-    * --------------------------------------------------------------------- 
-    */
-    for (pattern = 0; pattern < 4096; pattern++) {
-        temp = pattern << 11;          /* multiply information by X^{11} */
-        encoding_table[pattern] = temp + get_syndrome(temp);/* add redundancy */
-        }
-
-   /*
-    * ---------------------------------------------------------------------
-    *                  Generate DECODING TABLE
-    *
-    * An entry to the decoding table is a syndrome and the resulting value
-    * is the most likely error pattern. First an error pattern is generated.
-    * Then its syndrome is calculated and used as a pointer to the table
-    * where the error pattern value is stored.
-    * --------------------------------------------------------------------- 
-    *            
-    * (1) Error patterns of WEIGHT 1 (SINGLE ERRORS)
-    */
-    decoding_table[0] = 0;
-    decoding_table[1] = 1;
-    temp = 1; 
-    for (i=2; i<= 23; i++) {
-        temp *= 2;
-        decoding_table[get_syndrome(temp)] = temp;
-        }
-   /*            
-    * (2) Error patterns of WEIGHT 2 (DOUBLE ERRORS)
-    */
-    a[1] = 1; a[2] = 2;
-    temp = arr2int(a,2);
-    decoding_table[get_syndrome(temp)] = temp;
-    for (i=1; i<253; i++) {
-        nextcomb(23,2,a);
-        temp = arr2int(a,2);
-        decoding_table[get_syndrome(temp)] = temp;
-        }
-   /*            
-    * (3) Error patterns of WEIGHT 3 (TRIPLE ERRORS)
-    */
-    a[1] = 1; a[2] = 2; a[3] = 3;
-    temp = arr2int(a,3);
-    decoding_table[get_syndrome(temp)] = temp;
-    for (i=1; i<1771; i++) {
-        nextcomb(23,3,a);
-        temp = arr2int(a,3);
-        decoding_table[get_syndrome(temp)] = temp;
-    }
-
-    inited = 1;
-}
-
-/*---------------------------------------------------------------------------*\
-                                                       
-  FUNCTION....: golay23_encode()   
-  AUTHOR......: David Rowe                           
-  DATE CREATED: 3 March 2013
-
-  Given 12 bits of data retiurns a 23 bit codeword for transmission
-  over the channel.
-
-\*---------------------------------------------------------------------------*/
-
-int golay23_encode(int data) {
-    assert(inited);
-
-    //printf("data: 0x%x\n", data);
-    assert(data <= 0xfff);
-    return encoding_table[data];
-}
-
-/*---------------------------------------------------------------------------*\
-                                                       
-  FUNCTION....: golay23_decode()   
-  AUTHOR......: David Rowe                           
-  DATE CREATED: 3 March 2013
-
-  Given a 23 bit received codeword, returns the 12 bit corrected data.
-
-\*---------------------------------------------------------------------------*/
-
-int golay23_decode(int received_codeword) {
-    assert(inited);
-
-    //printf("syndrome: 0x%x\n", get_syndrome(received_codeword));
-    return received_codeword ^= decoding_table[get_syndrome(received_codeword)];
-}
-
-int golay23_count_errors(int recd_codeword, int corrected_codeword)
-{
-    int errors = 0;
-    int diff, i;
-
-    diff = recd_codeword ^ corrected_codeword;
-    for(i=0; i<23; i++) {
-        if (diff & 0x1)
-            errors++;
-        diff >>= 1;
-    }
-
-    return errors;
-}
-
-#ifdef GOLAY23_UNITTEST
-
-static int golay23_test(int error_pattern) {
-    int data;
-    int codeword;
-    int recd;
-    int pattern;
-    int decerror;
-    int i, tests;
-    
-    decerror = 0;
-    tests = 0;
-
-    for (data = 0; data<(1<<12); data++) {
-
-        codeword = golay23_encode(data);
-        recd = codeword ^ error_pattern;
-        recd = golay23_decode(recd);
-        pattern = (recd ^ codeword) >> 11;
-        for (i=0; i<12; i++)
-            if (pattern & position[i])
-                decerror++;
-        if (decerror) {
-            printf("data: 0x%x codeword: 0x%x recd: 0x%x\n", data, codeword, recd);
-            printf("there were %d decoding errors\n", decerror);
-            exit(1);
-        }
-        tests++;
-    }
-
-    return tests;
-}
-
-int main(void)
-{
-   int i;
-   long temp;
-   long pattern;
-   int  tests;
-   int a[4];
-   int error_pattern;
-
-   /*
-    * ---------------------------------------------------------------------
-    *                  Generate ENCODING TABLE
-    *
-    * An entry to the table is an information vector, a 32-bit integer,
-    * whose 12 least significant positions are the information bits. The
-    * resulting value is a codeword in the (23,12,7) Golay code: A 32-bit
-    * integer whose 23 least significant bits are coded bits: Of these, the
-    * 12 most significant bits are information bits and the 11 least
-    * significant bits are redundant bits (systematic encoding).
-    * --------------------------------------------------------------------- 
-    */
-    for (pattern = 0; pattern < 4096; pattern++) {
-        temp = pattern << 11;          /* multiply information by X^{11} */
-        encoding_table[pattern] = temp + get_syndrome(temp);/* add redundancy */
-        }
-
-   /*
-    * ---------------------------------------------------------------------
-    *                  Generate DECODING TABLE
-    *
-    * An entry to the decoding table is a syndrome and the resulting value
-    * is the most likely error pattern. First an error pattern is generated.
-    * Then its syndrome is calculated and used as a pointer to the table
-    * where the error pattern value is stored.
-    * --------------------------------------------------------------------- 
-    *            
-    * (1) Error patterns of WEIGHT 1 (SINGLE ERRORS)
-    */
-    decoding_table[0] = 0;
-    decoding_table[1] = 1;
-    temp = 1; 
-    for (i=2; i<= 23; i++) {
-        temp *= 2;
-        decoding_table[get_syndrome(temp)] = temp;
-        }
-   /*            
-    * (2) Error patterns of WEIGHT 2 (DOUBLE ERRORS)
-    */
-    a[1] = 1; a[2] = 2;
-    temp = arr2int(a,2);
-    decoding_table[get_syndrome(temp)] = temp;
-    for (i=1; i<253; i++) {
-        nextcomb(23,2,a);
-        temp = arr2int(a,2);
-        decoding_table[get_syndrome(temp)] = temp;
-        }
-   /*            
-    * (3) Error patterns of WEIGHT 3 (TRIPLE ERRORS)
-    */
-    a[1] = 1; a[2] = 2; a[3] = 3;
-    temp = arr2int(a,3);
-    decoding_table[get_syndrome(temp)] = temp;
-    for (i=1; i<1771; i++) {
-        nextcomb(23,3,a);
-        temp = arr2int(a,3);
-        decoding_table[get_syndrome(temp)] = temp;
-        }
-
-   /* ---------------------------------------------------------------------
-    *                        Generate DATA
-    * ---------------------------------------------------------------------
-    */
-
-    /* Test all combinations of data and 1,2 or 3 errors */
-
-    tests = 0;    
-    error_pattern = 1;
-    for (i=0; i< 23; i++) {
-        //printf("error_pattern: 0x%x\n", error_pattern);
-        tests += golay23_test(error_pattern);
-        error_pattern *= 2;
-    }
-    printf("%d 1 bit error tests performed OK!\n", tests);
-
-    tests = 0;
-    a[1] = 1; a[2] = 2;
-    error_pattern = arr2int(a,2);
-    tests += golay23_test(error_pattern);
-    for (i=1; i<253; i++) {
-        nextcomb(23,2,a);
-        error_pattern = arr2int(a,2);
-        //printf("error_pattern: 0x%x\n", error_pattern);
-        tests += golay23_test(error_pattern);
-    }
-    printf("%d 2 bit error tests performed OK!\n", tests);
-
-    tests = 0;
-    a[1] = 1; a[2] = 2; a[3] = 3;
-    error_pattern = arr2int(a,3);
-    tests += golay23_test(error_pattern);
-    for (i=1; i<1771; i++) {
-        nextcomb(23,3,a);
-        error_pattern = arr2int(a,3);
-        //printf("error_pattern: 0x%x\n", error_pattern);
-        tests += golay23_test(error_pattern);
-    }
-    printf("%d 3 bit error tests performed OK!\n", tests);
-
-    return 0;
-}
-#endif
diff --git a/rfmodem/golay23.h b/rfmodem/golay23.h
deleted file mode 100644 (file)
index a916d29..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*---------------------------------------------------------------------------*\
-
-  FILE........: golay23.h
-  AUTHOR......: David Rowe
-  DATE CREATED: 3 March 2013
-
-  Header file for Golay FEC.
-
-\*---------------------------------------------------------------------------*/
-
-/*
-  Copyright (C) 2013 David Rowe
-
-  All rights reserved.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU Lesser General Public License version 2.1, as
-  published by the Free Software Foundation.  This program 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 Lesser General Public License
-  along with this program; if not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __GOLAY23__
-#define __GOLAY23__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void golay23_init(void);
-int  golay23_encode(int data);
-int  golay23_decode(int received_codeword);
-int  golay23_count_errors(int recd_codeword, int corrected_codeword);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif