Div. kode til indsættelse / udskiftning i example-5 main.cpp og en ny CMakeLists.txt


Linje 567:
void    selectNext    () {
int16_t    i;
int16_t    foundIndex    = -1;

    switch (n_p) {
    case 0:
    {
    for (i = 0; i < programNames. size (); i ++) {
       if (matches (programNames [i], programName)) {
          if (i == programNames. size () - 1)
             foundIndex = 0;
          else
             foundIndex = i + 1;
          break;
       }
    }
    if (foundIndex == -1) {
       fprintf (stderr, "system error\n");
       sighandler (9);
       exit (1);
    }
//    skip the data services. Slightly dangerous here, may be
//    add a guard for "only data services" ensembles
    while (!is_audioService (theRadio,
                                 programNames [foundIndex]. c_str ()))
       foundIndex = (foundIndex + 1) % programNames. size ();
    }
    break;
    case 1:
    {
    for (i = 0; i < programNames. size (); i ++) {
       if (matches (programNames [i], programName)) {
          if (i == 0)
             foundIndex = programNames. size () - 1;
          else
             foundIndex = i - 1;
          break;
       }
    }

    if (foundIndex == -1) {
       fprintf (stderr, "system error\n");
       sighandler (9);
       exit (1);
    }

//    skip the data services. Slightly dangerous here, may be
//    add a guard for "only data services" ensembles
    while (!is_audioService (theRadio,
                                 programNames [foundIndex]. c_str ()))
       foundIndex = foundIndex - (programNames. size () - foundIndex);
    }
    break;
     }
   
    programName = programNames [foundIndex];
    fprintf (stderr, "we now try to start program %s\n",
                                             programName. c_str ());

    audiodata ad;
        dataforAudioService (theRadio, programName. c_str (), &ad, 0);
        if (!ad. defined) {
           std::cerr << "sorry  we cannot handle service " <<
                                                 programName << "\n";
       sighandler (9);
    }
    dabReset_msc (theRadio);
        set_audioChannel (theRadio, &ad);
}


void    listener    (void) {
    int stringDat[9];
    int pinI = 22;//Physical 31
    int res = 0;
    int i = 0;
    int t;
    fprintf (stderr, "listener is running\n");
    while (run. load ()) {
     if (wiringPiSetup () == -1)
            {}
        pinMode (pinI, INPUT);
      while (digitalRead (pinI) == 1)
        {
        delay(0.5);
        pinMode (pinI, INPUT);
        if (digitalRead (pinI) == 0)
               {
                delay (1.5);
                for (i = 1; i < 8; i++)
                  {
                  delay(3.4);
                  stringDat[i] = (digitalRead (pinI));
                  }
                  res = 0;
                  for (i = 1; i < 8; i++)
                        {
                        switch (i)
                        {
                        case 1 : res = stringDat[i] * 64;
                        break;
                        case 2 : res = res + (stringDat[i] * 32);
                        break;
                        case 3 : res = res + (stringDat[i] * 16);
                        break;
                        case 4 : res = res + (stringDat[i] * 8);
                        break;
                        case 5 : res = res + (stringDat[i] * 4);
                        break;
                        case 6 : res = res + (stringDat[i] * 2);
                        break;
                        case 7 : res = res + (stringDat[i] * 1);
                        break;
                        }
        }
       delay (30);
       message m;
       switch (res) {
          case 106: {
             m.key = S_NEXT;
             m. string = "";
             messageQueue. push (m);
         n_p = 0;
        }
             break;
        case 12:  {
         m.key = S_NEXT;
                 m. string = "";
                 messageQueue. push (m);
         n_p = 1;
         }
         break;
       }
    }
      }
  }
}


Linje 280:
while ((opt = getopt (argc, argv, "D:d:M:B:C:P:p:G:A:L:S:H:I:QO:")) != -1) {

Linje 61:
int n_p = 0;

Linje 37:
#include <wiringPi.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>





CMakeLists.txt tilpasset wiringpi:

cmake_minimum_required( VERSION 2.8.11 )
set (objectName dab_cmdline-5)
#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11 -flto")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11 -g")
#set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -g")
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
    set (CMAKE_INSTALL_PREFIX "/usr/local/bin" CACHE PATH "default install path" FORCE )
endif()
#set (CMAKE_INSTALL_PREFIX /usr/local/bin)


if(MINGW)
    add_definitions ( -municode)
endif()

########################################################################
# select the release build type by default to get optimization flags
########################################################################
if(NOT CMAKE_BUILD_TYPE)
   set(CMAKE_BUILD_TYPE "Release")
   message(STATUS "Build type not specified: defaulting to release.")
endif(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "")

### make sure our local CMake Modules path comes first
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)

######################################################################
#
########################################################################
if(DEFINED AIRSPY)
   set(AIRSPY true)
   set(objectName dab-airspy-5)
endif ()

if(DEFINED SDRPLAY)
   set(SDRPLAY true)
   set(objectName dab-sdrplay-5)
endif ()

if(DEFINED RTLSDR)
   set(RTLSDR true)
   set(objectName dab-rtlsdr-5)
endif ()

if(DEFINED WAVFILES)
   set(WAVFILES true)
   set(objectName dab-files-5)
endif ()

if(DEFINED RAWFILES)
   set(RAWFILES true)
   set(objectName dab-raw-5)
endif ()

if(DEFINED RTL_TCP)
   set(RTL_TCP true)
   set(objectName dab-rtl_tcp-5)
endif ()

if (DEFINED SERVER)
    add_definitions(-DHAVE_SERVER)
endif ()

if (DEFINED X64_DEFINED)
   set(X64_DEFINED true)
endif ()

if (DEFINED RPI_DEFINED)
   set(RPI_DEFINED true)
endif ()

#########################################################################
    find_package (PkgConfig)

        find_package(FFTW3f)
        if (NOT FFTW3F_FOUND)
            message(FATAL_ERROR "please install FFTW3")
        endif ()

        find_package(Faad)
        if (NOT FAAD_FOUND )
            message(FATAL_ERROR "please install libfaad")
        endif ()

        find_package(zlib)
    if (NOT ZLIB_FOUND)
            message(FATAL_ERROR "please install libz")
        endif ()
    list(APPEND extraLibs ${ZLIB_LIBRARY})


    find_library (PTHREADS pthread)
    if (NOT(PTHREADS))
       message (FATAL_ERROR "please install libpthread")
    else (NOT(PTHREADS))
       set (extraLibs ${extraLibs} ${PTHREADS})
    endif (NOT(PTHREADS))

    # Locate libraries and headers
find_package(WiringPi REQUIRED)
find_package(Threads REQUIRED)

# Include headers
include_directories(${WIRINGPI_INCLUDE_DIRS})



        find_package(LibSampleRate)
        if (NOT LIBSAMPLERATE_FOUND)
            message(FATAL_ERROR "please install libsamplerate")
        endif ()
        list(APPEND extraLibs ${LIBSAMPLERATE_LIBRARY})

        find_package(Portaudio)
        if (NOT PORTAUDIO_FOUND)
            message(FATAL_ERROR "please install portaudio V19")
        endif ()
        list(APPEND extraLibs ${PORTAUDIO_LIBRARIES})
#########################################################################
        find_package (PkgConfig)

##########################################################################
#    The devices
#

    if (RTL_TCP)
       include_directories (
         ../devices/rtl_tcp
       )
       set ($(objectName)_HDRS
            ${${objectName}_HDRS}
            ../devices/rtl_tcp/rtl_tcp-client.h
           )

       set (${objectName}_SRCS
            ${${objectName}_SRCS}
            ../devices/rtl_tcp/rtl_tcp-client.cpp
       )

     add_definitions (-DHAVE_RTL_TCP)
    endif (RTL_TCP)
   
    if (SDRPLAY)
       find_path (SDRPLAYLIB_INCLUDE_DIR
                      NAMES mirsdrapi-rsp.h
                      PATHS
                      /usr/local/include/
       )
           include_directories (${SDRPLAYLIB_INCLUDE_DIR})

           find_library (SDRPLAYLIB mirsdrapi-rsp)
           if(NOT(SDRPLAYLIB))
              message(FATAL_ERROR "please install -lmirsdrapi-rsp")
           else(NOT(SDRPLAYLIB))
              list (APPEND extraLibs ${SDRPLAYLIB})
           endif(NOT(SDRPLAYLIB))

       include_directories (
         ../devices/sdrplay-handler
       )

       set ($(objectName)_HDRS
            ${${objectName}_HDRS}
            ../devices/sdrplay-handler/sdrplay-handler.h
           )

       set (${objectName}_SRCS
            ${${objectName}_SRCS}
            ../devices/sdrplay-handler/sdrplay-handler.cpp
       )

     add_definitions (-DHAVE_SDRPLAY)
    endif (SDRPLAY)

    if (AIRSPY)
           find_package(LibAIRSPY)
           if (NOT LIBAIRSPY_FOUND)
               message(FATAL_ERROR "please install airspy library")
           endif ()
       ### include_directories (${AIRSPYLIB_INCLUDE_DIR})

       include_directories (
         ../devices/airspy-handler
       )

       set ($(objectName)_HDRS
            ${${objectName}_HDRS}
            ../devices/airspy-handler/airspy-handler.h
       )

       set (${objectName}_SRCS
            ${${objectName}_SRCS}
            ../devices/airspy-handler/airspy-handler.cpp
       )

       add_definitions (-DHAVE_AIRSPY)
    endif (AIRSPY)


    if (RTLSDR)
           find_package(LibRTLSDR)
           if (NOT LIBRTLSDR_FOUND)
               message(FATAL_ERROR "please install librtlsdr")
           endif ()
       ###include_directories (${RTLSDR_INCLUDE_DIR})

       include_directories (
            ../devices/rtlsdr-handler/
       )

       set (${objectName}_HDRS
            ${${objectName}_HDRS}
            ../devices/rtlsdr-handler/rtlsdr-handler.h
       )

       set (${objectName}_SRCS
            ${${objectName}_SRCS}
            ../devices/rtlsdr-handler/rtlsdr-handler.cpp
       )

       add_definitions (-DHAVE_RTLSDR)
    endif()

    if (WAVFILES)
       include_directories (
            ../devices/wavfiles/
       )

       set (${objectName}_HDRS
            ${${objectName}_HDRS}
            ../devices/wavfiles/wavfiles.h
       )

       set (${objectName}_SRCS
            ${${objectName}_SRCS}
            ../devices/wavfiles/wavfiles.cpp
       )
       find_package(LibSndFile)
       if (NOT LIBSNDFILE_FOUND)
          message(FATAL_ERROR "please install libsndfile")
       endif ()
       list(APPEND extraLibs ${LIBSNDFILE_LIBRARY})

       add_definitions (-DHAVE_WAVFILES)
    endif()

    if (RAWFILES)
           include_directories (
                ../devices/rawfiles/
           )

           set (${objectName}_HDRS
                ${${objectName}_HDRS}
                ../devices/rawfiles/rawfiles.h
           )

           set (${objectName}_SRCS
                ${${objectName}_SRCS}
                ../devices/rawfiles/rawfiles.cpp
           )

           add_definitions (-DHAVE_RAWFILES)
        endif()

#######################################################################
#
#    Here we really start

    include_directories (
               ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
               .
               ./
               ./server-thread
               ../
               ../library
               ../library/includes
               ../library/includes/ofdm
               ../library/includes/backend
               ../library/includes/backend/audio
               ../library/includes/backend/data
               ../library/includes/backend/data/mot
               ../library/includes/backend/data/journaline
               ../library/includes/support
               ../library/includes/support/viterbi-spiral
               /usr/include/
    )

    set (${objectName}_HDRS
         ${${objectName}_HDRS}
         ./ringbuffer.h
         ./audio-base.h
         ./audiosink.h
         ./filesink.h
         ./newconverter.h
         ./server-thread/tcp-server.h
         ./locking-queue.h
         ../dab-api.h
         ../devices/device-handler.h
         ../library/includes/dab-constants.h
         ../library/includes/dab-processor.h
         ../library/includes/ofdm/phasereference.h
         ../library/includes/ofdm/phasetable.h
         ../library/includes/ofdm/freq-interleaver.h
         ../library/includes/ofdm/timesyncer.h
         ../library/includes/ofdm/fic-handler.h
         ../library/includes/ofdm/fib-processor.cpp
         ../library/includes/ofdm/sample-reader.h
         ../library/includes/ofdm/tii-detector.h
         ../library/includes/backend/firecode-checker.h
         ../library/includes/backend/backend-base.h
         ../library/includes/backend/charsets.h
         ../library/includes/backend/galois.h
         ../library/includes/backend/reed-solomon.h
         ../library/includes/backend/msc-handler.h
         ../library/includes/backend/virtual-backend.h
         ../library/includes/backend/audio-backend.h
         ../library/includes/backend/data-backend.h
         ../library/includes/backend/audio/faad-decoder.h
         ../library/includes/backend/audio/mp4processor.h
         ../library/includes/backend/audio/mp2processor.h
         ../library/includes/backend/data/virtual-datahandler.h
         ../library/includes/backend/data/tdc-datahandler.h
         ../library/includes/backend/data/pad-handler.h
         ../library/includes/backend/data/data-processor.h
         ../library/includes/backend/data/mot/mot-handler.h
         ../library/includes/backend/data/mot/mot-dir.h
         ../library/includes/backend/data/mot/mot-object.h
         ../library/includes/support/band-handler.cpp
#         ../library/includes/support/viterbi-handler.h
         ../library/includes/support/protTables.h
         ../library/includes/support/protection.h
         ../library/includes/support/uep-protection.h
         ../library/includes/support/eep-protection.h
         ../library/includes/support/fft-handler.h
         ../library/includes/support/dab-params.h
         ../library/includes/support/tii_table.h
         ../library/includes/support/viterbi-spiral/viterbi-spiral.h
    )

    set (${objectName}_SRCS
         ${${objectName}_SRCS}
         ./main.cpp
         ./audio-base.cpp
         ./audiosink.cpp
         ./filesink.cpp
         ./newconverter.cpp
         ./server-thread/tcp-server.cpp
         ../devices/device-handler.cpp
         ../library/dab-api.cpp
         ../library/src/dab-processor.cpp
         ../library/src/ofdm/ofdm-decoder.cpp
         ../library/src/ofdm/phasereference.cpp
         ../library/src/ofdm/phasetable.cpp
         ../library/src/ofdm/freq-interleaver.cpp
         ../library/src/ofdm/timesyncer.cpp
         ../library/src/ofdm/sample-reader.cpp
         ../library/src/ofdm/fib-processor.cpp
         ../library/src/ofdm/fic-handler.cpp
         ../library/src/ofdm/tii-detector.cpp
         ../library/src/backend/firecode-checker.cpp
         ../library/src/backend/backend-base.cpp
         ../library/src/backend/charsets.cpp
         ../library/src/backend/galois.cpp
         ../library/src/backend/reed-solomon.cpp
         ../library/src/backend/msc-handler.cpp
         ../library/src/backend/virtual-backend.cpp
         ../library/src/backend/audio-backend.cpp
         ../library/src/backend/data-backend.cpp
         ../library/src/backend/audio/mp4processor.cpp
         ../library/src/backend/audio/mp2processor.cpp
         ../library/src/backend/data/virtual-datahandler.cpp
         ../library/src/backend/data/tdc-datahandler.cpp
         ../library/src/backend/data/pad-handler.cpp
         ../library/src/backend/data/data-processor.cpp
         ../library/src/backend/data/mot/mot-handler.cpp
         ../library/src/backend/data/mot/mot-dir.cpp
         ../library/src/backend/data/mot/mot-object.cpp
         ../library/src/support/band-handler.cpp
         ../library/src/support/viterbi-handler.cpp
         ../library/src/support/protTables.cpp
         ../library/src/support/protection.cpp
         ../library/src/support/eep-protection.cpp
         ../library/src/support/uep-protection.cpp
         ../library/src/support/fft-handler.cpp
         ../library/src/support/dab-params.cpp
         ../library/src/support/tii_table.cpp
         ../library/src/support/viterbi-spiral/viterbi-spiral.cpp
    )

    if (X64_DEFINED)
           set (${objectName}_SRCS
                ${${objectName}_SRCS}
              ../library/src/support/viterbi-spiral/spiral-sse.c
           )
           set (${objectName}_HDRS
                ${${objectName}_HDRS}
             ../library/src/support/viterbi-spiral/spiral-sse.h
           )
           add_definitions (-DSSE_AVAILABLE)
        elseif (RPI_DEFINED)
           set (${objectName}_SRCS
                ${${objectName}_SRCS}
              ../library/src/support/viterbi-spiral/spiral-neon.c
           )
           set (${objectName}_HDRS
                ${${objectName}_HDRS}
             ../library/src/support/viterbi-spiral/spiral-neon.h
           )
           add_definitions (-DNEON_AVAILABLE)
    # compiler options moved below add_executable .. and target specific
    #set (CMAKE_CXX_FLAGS "${CMAKE_XCC_FLAGS} -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -lwiringPi")
    #set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -lwiringPi")
        else (X64_DEFINED)
           set (${objectName}_SRCS
                ${${objectName}_SRCS}
              ../library/src/support/viterbi-spiral/spiral-no-sse.c
           )
           set (${objectName}_HDRS
                ${${objectName}_HDRS}
             ../library/src/support/viterbi-spiral/spiral-no-sse.h
           )
        endif (X64_DEFINED)
    include_directories (
              ${FFTW_INCLUDE_DIRS}
              ${PORTAUDIO_INCLUDE_DIRS}
              ${FAAD_INCLUDE_DIRS}
              ${SNDFILES_INCLUDE_DIRS}
    )

#####################################################################

    add_executable (${objectName}
                    ${${objectName}_SRCS}
    )

find_library(WIRINGPI_LIBRARIES NAMES wiringPi)
target_link_libraries(dab-rtlsdr-5 ${WIRINGPI_LIBRARIES})


    if (RPI_DEFINED)
           # compiler options seem changed with gcc versions. gcc 8.3.0 on Raspbian didn't accept -mcpu ..
           # test options with "make VERBOSE=1"
           target_compile_options(${objectName}  PRIVATE -march=armv7-a -mfloat-abi=hard -mfpu=neon-vfpv4 )
        endif()

    target_link_libraries (${objectName}
                           ${FFTW3F_LIBRARIES}
                           ${extraLibs}
                           ${FAAD_LIBRARIES}
                           ${CMAKE_DL_LIBS}
    )

    INSTALL (TARGETS ${objectName} DESTINATION .)

########################################################################
# Create uninstall target
########################################################################

configure_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
    IMMEDIATE @ONLY)

add_custom_target(uninstall
    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)