From 1f92b51e618cfa7f7170405869ebc780c429bfdf Mon Sep 17 00:00:00 2001 From: Graham Haddock Date: Wed, 28 Jan 2015 18:15:54 -0600 Subject: [PATCH 1/7] New BeagleboneBlack branch of FreeDV/smart-sdr. --- DSP_API/.cproject | 238 ++++-------------- DSP_API/.project | 12 +- .../org.eclipse.cdt.codan.core.prefs | 66 ----- DSP_API/CODEC2_FREEDV/freedv_api.c | 3 +- DSP_API/DOCS/FreeDV.cfg | 4 +- DSP_API/Debug/CODEC2_FREEDV/subdir.mk | 96 ------- DSP_API/Debug/SmartSDR_Interface/subdir.mk | 60 ----- DSP_API/Debug/makefile | 65 ----- DSP_API/Debug/objects.mk | 8 - DSP_API/Debug/sources.mk | 29 --- DSP_API/Debug/subdir.mk | 30 --- DSP_API/Release/CODEC2_FREEDV/subdir.mk | 2 +- DSP_API/Release/SmartSDR_Interface/subdir.mk | 8 +- DSP_API/Release/makefile | 24 +- DSP_API/Release/objects.mk | 2 +- DSP_API/Release/sources.mk | 10 - DSP_API/Release/subdir.mk | 2 +- DSP_API/SmartSDR_Interface/sched_waveform.c | 46 +--- DSP_API/common.h | 13 +- DSP_API/main.c | 2 + 20 files changed, 100 insertions(+), 620 deletions(-) delete mode 100644 DSP_API/.settings/org.eclipse.cdt.codan.core.prefs delete mode 100644 DSP_API/Debug/CODEC2_FREEDV/subdir.mk delete mode 100644 DSP_API/Debug/SmartSDR_Interface/subdir.mk delete mode 100644 DSP_API/Debug/makefile delete mode 100644 DSP_API/Debug/objects.mk delete mode 100644 DSP_API/Debug/sources.mk delete mode 100644 DSP_API/Debug/subdir.mk diff --git a/DSP_API/.cproject b/DSP_API/.cproject index 2711762..b017295 100644 --- a/DSP_API/.cproject +++ b/DSP_API/.cproject @@ -1,83 +1,43 @@ - - - + - - + + - + - - - - - - - - - - + + - + - - - - - - - - - + + + + + + + + - - - - - - - - - + - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/DSP_API/.project b/DSP_API/.project index 9f98781..a5b6b5d 100644 --- a/DSP_API/.project +++ b/DSP_API/.project @@ -7,6 +7,7 @@ org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, ?name? @@ -22,7 +23,7 @@ org.eclipse.cdt.make.core.buildArguments - -k -j + org.eclipse.cdt.make.core.buildCommand @@ -30,7 +31,7 @@ org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:../../bin} + ${workspace_loc:/DSP_API/Release} org.eclipse.cdt.make.core.cleanBuildTarget @@ -42,7 +43,7 @@ org.eclipse.cdt.make.core.enableAutoBuild - true + false org.eclipse.cdt.make.core.enableCleanBuild @@ -58,11 +59,11 @@ org.eclipse.cdt.make.core.stopOnError - false + true org.eclipse.cdt.make.core.useDefaultBuildCmd - false + true @@ -77,6 +78,5 @@ org.eclipse.cdt.core.cnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.core.ccnature diff --git a/DSP_API/.settings/org.eclipse.cdt.codan.core.prefs b/DSP_API/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index 5b5e2e8..0000000 --- a/DSP_API/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,66 +0,0 @@ -#Sun Aug 31 19:31:58 CDT 2014 -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={no_break_comment\=>"no break",last_case_param\=>true,empty_case_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=-Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} diff --git a/DSP_API/CODEC2_FREEDV/freedv_api.c b/DSP_API/CODEC2_FREEDV/freedv_api.c index a5f9c19..8d4de0d 100644 --- a/DSP_API/CODEC2_FREEDV/freedv_api.c +++ b/DSP_API/CODEC2_FREEDV/freedv_api.c @@ -305,6 +305,7 @@ int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]) { fdmdv_get_demod_stats(f->fdmdv, &f->fdmdv_stats); if (f->fdmdv_stats.sync) { + printf("\033[97mIn sync. Pass demod_in to Codec, Codec to speech_out\n"); if (reliable_sync_bit == 0) { memcpy(f->rx_bits, f->fdmdv_bits, bits_per_fdmdv_frame*sizeof(int)); nout = 0; @@ -384,7 +385,7 @@ int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]) { } } /* if (sync) .... */ else { - //printf("Not in sync. Pass demod_in to speech_out\n"); + printf("\033[97mNot in sync. Pass demod_in to speech_out\n"); /* if not in sync pass through analog samples */ /* this lets us "hear" whats going on, e.g. during tuning */ for(i=0; i #include "freedv_api.h" @@ -139,10 +140,10 @@ void sched_waveform_signal() #define PACKET_SAMPLES 128 -#define SCALE_RX_IN 16000.0 // Multiplier -#define SCALE_RX_OUT 8000.0 // Divisor -#define SCALE_TX_IN 16000.0 // Multiplier -#define SCALE_TX_OUT 32768.0 // Divisor +#define SCALE_RX_IN 16000.0 // Multiplier +#define SCALE_RX_OUT 8000.0 // Divisor +#define SCALE_TX_IN 16000.0 // Multiplier +#define SCALE_TX_OUT 32768.0 // Divisor #define FILTER_TAPS 48 #define DECIMATION_FACTOR 3 @@ -239,26 +240,9 @@ void freedv_set_string(uint32 slice, char* string) -/* ********************************************************************************************* - * ********************************************************************************************* - * ********************************************************************************************* - * ******************** ^^^ TEMPORARY LOCATION OF DEMOD/MOD ^^^ ************************************** - * ********************************************************************************************* - * ********************************************************************************************* - * ********************************************************************************************* - */ - - - static void* _sched_waveform_thread(void* param) { - -/* ********************************************************************************************* - * ******************** ^ TEMPORARY LOCATION OF DEMOD/MOD ^^^ ************************************** - * ********************************************************************************************* - */ - int nin, nout; int i; // for loop counter @@ -266,8 +250,8 @@ static void* _sched_waveform_thread(void* param) // float Sig2Noise; // Signal to noise ratio // Flags ... - int initial_tx = 1; // Flags for TX circular buffer, clear if starting transmit - int initial_rx = 1; // Flags for RX circular buffer, clear if starting receive + int initial_tx = 1; // Flags for TX circular buffer, clear if starting transmit + int initial_rx = 1; // Flags for RX circular buffer, clear if starting receive // VOCODER I/O BUFFERS short speech_in[FREEDV_NSAMPLES]; @@ -345,10 +329,6 @@ static void* _sched_waveform_thread(void* param) _freedvS->callback_state = (void*)&_my_cb_state; _freedvS->freedv_get_next_tx_char = &my_get_next_tx_char; -/* ********************************************************************************************* - * ******************** ^ TEMPORARY LOCATION OF DEMOD/MOD ^^^ ************************************** - * ********************************************************************************************* - */ // show that we are running diff --git a/DSP_API/common.h b/DSP_API/common.h index f3307fb..daa941a 100644 --- a/DSP_API/common.h +++ b/DSP_API/common.h @@ -1,5 +1,5 @@ /* ***************************************************************************** - * common.h 2014 AUG 31 + * common.h 2015 JAN 27 * * Created on: Aug 28, 2014 * Author: Graham / KE9H @@ -72,13 +72,14 @@ #define SL_CLOSE_CLIENT SL_ERROR_BASE + 0x03A #define ANSI_ESC "\033[" -#define ANSI_RED ANSI_ESC "91m" -#define ANSI_GREEN ANSI_ESC "92m" +#define ANSI_RED ANSI_ESC "91m" +#define ANSI_GREEN ANSI_ESC "92m" #define ANSI_YELLOW ANSI_ESC "93m" -#define ANSI_BLUE ANSI_ESC "94m" +#define ANSI_BLUE ANSI_ESC "94m" #define ANSI_MAGENTA ANSI_ESC "95m" -#define ANSI_CYAN ANSI_ESC "96m" -#define ANSI_WHITE ANSI_ESC "97m" +#define ANSI_CYAN ANSI_ESC "96m" +#define ANSI_WHITE ANSI_ESC "97m" +#define CLR_WHT "\033[97m" #define ANSI_COLOR_OFF ANSI_ESC "m" #endif /* COMMON_H_ */ diff --git a/DSP_API/main.c b/DSP_API/main.c index cc33f74..3b0e5de 100644 --- a/DSP_API/main.c +++ b/DSP_API/main.c @@ -55,6 +55,7 @@ #include #include "smartsdr_dsp_api.h" + #include "common.h" @@ -146,6 +147,7 @@ int main( int argc, char * argv[]) * service or as a subprocess. */ enable_console = TRUE; + output(ANSI_YELLOW" WAVEFORM Version 1.0.3, Console alive.\n"ANSI_WHITE); } else if ( strncmp(argv[i], restrict_ip_param, strlen(restrict_ip_param)) == 0 ) { restrict_ip = safe_malloc(strlen(argv[i])); From c6a6c4fedd57904d781414c41b0bf67f7a9976bc Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Fri, 30 Jan 2015 10:13:46 -0600 Subject: [PATCH 2/7] Add reliable_sync_bit to FreeDV structure and handle audio passthrough in sched_waveform --- DSP_API/CODEC2_FREEDV/freedv_api.c | 2 +- DSP_API/CODEC2_FREEDV/freedv_api.h | 2 ++ DSP_API/SmartSDR_Interface/sched_waveform.c | 21 +++++++++++++-------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/DSP_API/CODEC2_FREEDV/freedv_api.c b/DSP_API/CODEC2_FREEDV/freedv_api.c index 8d4de0d..1bdd7cf 100644 --- a/DSP_API/CODEC2_FREEDV/freedv_api.c +++ b/DSP_API/CODEC2_FREEDV/freedv_api.c @@ -303,7 +303,7 @@ int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]) { nin_prev = f->nin; fdmdv_demod(f->fdmdv, f->fdmdv_bits, &reliable_sync_bit, rx_fdm, &f->nin); fdmdv_get_demod_stats(f->fdmdv, &f->fdmdv_stats); - + f->reliable_sync_bit = reliable_sync_bit; if (f->fdmdv_stats.sync) { printf("\033[97mIn sync. Pass demod_in to Codec, Codec to speech_out\n"); if (reliable_sync_bit == 0) { diff --git a/DSP_API/CODEC2_FREEDV/freedv_api.h b/DSP_API/CODEC2_FREEDV/freedv_api.h index 5b48cbf..8f4e6c7 100644 --- a/DSP_API/CODEC2_FREEDV/freedv_api.h +++ b/DSP_API/CODEC2_FREEDV/freedv_api.h @@ -65,6 +65,8 @@ struct freedv { void *callback_state; + int reliable_sync_bit; + }; struct freedv *freedv_open(int mode); diff --git a/DSP_API/SmartSDR_Interface/sched_waveform.c b/DSP_API/SmartSDR_Interface/sched_waveform.c index c9439de..cf862ed 100644 --- a/DSP_API/SmartSDR_Interface/sched_waveform.c +++ b/DSP_API/SmartSDR_Interface/sched_waveform.c @@ -247,7 +247,7 @@ static void* _sched_waveform_thread(void* param) int i; // for loop counter float fsample; // a float sample -// float Sig2Noise; // Signal to noise ratio + float Sig2Noise; // Signal to noise ratio // Flags ... int initial_tx = 1; // Flags for TX circular buffer, clear if starting transmit @@ -437,13 +437,18 @@ static void* _sched_waveform_thread(void* param) nout = freedv_rx(_freedvS, speech_out, demod_in); - // if(nout != 320 ) { - // output("NOUT not 320 it is %d\nNIN was %d\n", nout, nin); - // } - for( i=0 ; i < nout ; i++) - { - cbWriteShort(RX3_cb, speech_out[i]); + + if ( nout == nin && _freedvS->reliable_sync_bit ){ + for( i=0 ; i < nout ; i++) + { + cbWriteShort(RX3_cb, speech_out[i]); + } + } else { + + for ( i = 0; i < nin ; i ++ ) { + cbWriteShort(RX3_cb, demod_in[i]); + } } } // } else { @@ -467,7 +472,7 @@ static void* _sched_waveform_thread(void* param) { cbWriteFloat(RX4_cb, float_out_24k[i]); } - //Sig2Noise = (_freedvS->fdmdv_stats.snr_est); + Sig2Noise = (_freedvS->fdmdv_stats.snr_est); } // Check for >= 128 samples in RX4_cb. Form packet and From 5c7ea0183c2deee366361c1214e0db5e8616fbd5 Mon Sep 17 00:00:00 2001 From: Graham Haddock Date: Fri, 30 Jan 2015 11:25:20 -0600 Subject: [PATCH 3/7] Added debug code to FreeDV API. --- DSP_API/CODEC2_FREEDV/freedv_api.c | 4 ++-- DSP_API/Release/CODEC2_FREEDV/codebook.d | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 DSP_API/Release/CODEC2_FREEDV/codebook.d diff --git a/DSP_API/CODEC2_FREEDV/freedv_api.c b/DSP_API/CODEC2_FREEDV/freedv_api.c index 8d4de0d..83ef0a1 100644 --- a/DSP_API/CODEC2_FREEDV/freedv_api.c +++ b/DSP_API/CODEC2_FREEDV/freedv_api.c @@ -305,7 +305,7 @@ int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]) { fdmdv_get_demod_stats(f->fdmdv, &f->fdmdv_stats); if (f->fdmdv_stats.sync) { - printf("\033[97mIn sync. Pass demod_in to Codec, Codec to speech_out\n"); + // printf("\033[97mIn sync. Pass demod_in to Codec, Codec to speech_out\n"); if (reliable_sync_bit == 0) { memcpy(f->rx_bits, f->fdmdv_bits, bits_per_fdmdv_frame*sizeof(int)); nout = 0; @@ -385,7 +385,7 @@ int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]) { } } /* if (sync) .... */ else { - printf("\033[97mNot in sync. Pass demod_in to speech_out\n"); + // printf("\033[97mNot in sync. Pass demod_in to speech_out\n"); /* if not in sync pass through analog samples */ /* this lets us "hear" whats going on, e.g. during tuning */ for(i=0; i Date: Fri, 30 Jan 2015 14:01:00 -0600 Subject: [PATCH 4/7] Modified input and output levels. KE9H --- DSP_API/.cproject | 4 ++-- DSP_API/Release/CODEC2_FREEDV/subdir.mk | 2 +- DSP_API/Release/SmartSDR_Interface/subdir.mk | 2 +- DSP_API/Release/makefile | 2 +- DSP_API/Release/subdir.mk | 2 +- DSP_API/SmartSDR_Interface/sched_waveform.c | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/DSP_API/.cproject b/DSP_API/.cproject index b017295..ff34f14 100644 --- a/DSP_API/.cproject +++ b/DSP_API/.cproject @@ -68,7 +68,7 @@