diff --git a/Makefile b/Makefile index 7db181a..1727624 100644 --- a/Makefile +++ b/Makefile @@ -52,7 +52,7 @@ libcsdr.so: fft_fftw.c fft_rpi.c libcsdr_wrapper.c libcsdr.c libcsdr_gpl.c fastd rm -f dumpvect*.vect gcc -std=gnu99 $(PARAMS_LOOPVECT) $(PARAMS_SIMD) $(LIBSOURCES) $(PARAMS_LIBS) $(PARAMS_MISC) -fpic -shared -o libcsdr.so -./parsevect dumpvect*.vect -csdr: csdr.c libcsdr.so +csdr: csdr.c args.c libcsdr.so gcc -std=gnu99 $(PARAMS_LOOPVECT) $(PARAMS_SIMD) csdr.c $(PARAMS_LIBS) -L. -lcsdr $(PARAMS_MISC) -o csdr ddcd: ddcd.cpp libcsdr.so ddcd.h g++ $(PARAMS_LOOPVECT) $(PARAMS_SIMD) ddcd.cpp $(PARAMS_LIBS) -L. -lcsdr -lpthread $(PARAMS_MISC) -o ddcd diff --git a/args.c b/args.c new file mode 100644 index 0000000..ef00d43 --- /dev/null +++ b/args.c @@ -0,0 +1,83 @@ +#include "args.h" +#include + +int argpop(int* pargc, char*** pargv, void* output, arg_type_t type) +{ + //scans the the first argument, and pops it + //returns 1 if the scan is successful + fprintf(stderr, "argc == %d\n", *pargc); + if(*pargc == 0) return 0; + if(argparse(**pargv, output, type)) + { + (*pargc)--; + (*pargv)++; + return 1; + } + return 0; +} + +int argparse(char* pargvitem, void* output, arg_type_t type) +{ + char* scanfmt = 0; + if(type==ARG_INT) scanfmt="%d"; + else if(type==ARG_FLOAT) scanfmt="%f"; + else if(type==ARG_CHAR) scanfmt="%c"; + fprintf(stderr, "What: %s\n", pargvitem); + int result; + if(type==ARG_STRING) + { + *((char**)output) = pargvitem; + result = 1; + } + else + { + result = sscanf( pargvitem, scanfmt, output); + } + return result; +} + +int argfind(int* pargc, char***pargv, char* longopt, char* shortopt) +{ + for(int i=0;i<*pargc;i++) + if(!strcmp((*pargv)[i], longopt) || !strcmp((*pargv)[i], shortopt)) return 1; + return 0; +} + +int argfindval(int* pargc, char***pargv, char* longopt, char* shortopt, arg_type_t type) +{ + for(int i=0;i<*pargc-1;i++) + if(!strcmp((*pargv)[i], longopt) || !strcmp((*pargv)[i], shortopt)) + return argparse(**pargv, (*pargv)[i], type); + return 0; +} + +int gargc; +char** gargv; + +int garginit(int argc, char** argv) +{ + gargc = argc; + gargv = argv; + return 1; +} + +int gargpop(void* output, arg_type_t type) +{ + return argpop(&gargc, &gargv, output, type); +} + +int gargfind(char* longopt, char* shortopt) +{ + return argfind(&gargc, &gargv, longopt, shortopt); +} + +int gargfindval(char* longopt, char* shortopt, arg_type_t type) +{ + return argfindval(&gargc, &gargv, longopt, shortopt, type); +} + +int gargthrow(int n) +{ + gargv+=n; + gargc-=n; +} diff --git a/args.h b/args.h new file mode 100644 index 0000000..641a858 --- /dev/null +++ b/args.h @@ -0,0 +1,10 @@ +typedef enum arg_type_e { ARG_INT, ARG_FLOAT, ARG_CHAR, ARG_STRING } arg_type_t; +int argpop(int* pargc, char*** pargv, void* output, arg_type_t type); +int argparse(char* pargvitem, void* output, arg_type_t type); +int argfind(int* pargc, char***pargv, char* longopt, char* shortopt); +int argfindval(int* pargc, char***pargv, char* longopt, char* shortopt, arg_type_t type); +int gargpop(void* output, arg_type_t type); +int gargfind(char* longopt, char* shortopt); +int gargfindval(char* longopt, char* shortopt, arg_type_t type); +int garginit(int argc, char** argv); +int gargthrow(int n); diff --git a/csdr.c b/csdr.c index d647827..e600667 100755 --- a/csdr.c +++ b/csdr.c @@ -51,6 +51,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "fastddc.h" +#include "args.h" #include char usage[]= @@ -230,7 +231,6 @@ int init_fifo(int argc, char *argv[]) } - #define RFCTL_BUFSIZE 1024 int read_fifo_ctl(int fd, char* format, ...) @@ -354,18 +354,24 @@ int parse_env() } } + + int main(int argc, char *argv[]) { parse_env(); argv_global=argv; - if(argc<=1) return badsyntax(0); - if(!strcmp(argv[1],"--help")) return badsyntax(0); + garginit(argc, argv); + if(gargfind("--help", "-h") || argc==1) return badsyntax(0); + char* process_name; //we first parse "csdr " + gargpop(&process_name, ARG_STRING); + char* function_name; + gargpop(&function_name, ARG_STRING); fcntl(STDIN_FILENO, F_SETPIPE_SZ, 65536*32); fcntl(STDOUT_FILENO, F_SETPIPE_SZ, 65536*32); //fprintf(stderr, "csdr: F_SETPIPE_SZ\n"); - if(!strcmp(argv[1],"setbuf")) + if(!strcmp(function_name,"setbuf")) { if(argc<=2) return badsyntax("need required parameter (buffer size)"); sscanf(argv[2],"%d",&the_bufsize); @@ -374,14 +380,14 @@ int main(int argc, char *argv[]) clone_(the_bufsize); //After sending the buffer size out, just copy stdin to stdout } - if(!strcmp(argv[1],"clone")) + if(!strcmp(function_name,"clone")) { if(!sendbufsize(initialize_buffers())) return -2; clone_(the_bufsize); } #define SET_NONBLOCK(fd) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK) - if(!strcmp(argv[1],"fifo")) + if(!strcmp(function_name,"fifo")) { if(!sendbufsize(initialize_buffers())) return -2; @@ -468,7 +474,7 @@ int main(int argc, char *argv[]) } - if(!strcmp(argv[1],"convert_u8_f")) + if(!strcmp(function_name,"convert_u8_f")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -480,7 +486,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"convert_f_u8")) //not tested + if(!strcmp(function_name,"convert_f_u8")) //not tested { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -492,7 +498,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"convert_s8_f")) + if(!strcmp(function_name,"convert_s8_f")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -504,7 +510,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"convert_f_s8")) //not tested + if(!strcmp(function_name,"convert_f_s8")) //not tested { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -540,7 +546,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"convert_f_s24")) + if(!strcmp(function_name,"convert_f_s24")) { int bigendian = (argc>2) && (!strcmp(argv[2],"--bigendian")); unsigned char* s24buffer = (unsigned char*)malloc(sizeof(unsigned char)*the_bufsize*3); @@ -554,7 +560,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"convert_s24_f")) + if(!strcmp(function_name,"convert_s24_f")) { int bigendian = (argc>2) && (!strcmp(argv[2],"--bigendian")); unsigned char* s24buffer = (unsigned char*)malloc(sizeof(unsigned char)*the_bufsize*3); @@ -568,7 +574,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"realpart_cf")) + if(!strcmp(function_name,"realpart_cf")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -580,7 +586,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"clipdetect_ff")) + if(!strcmp(function_name,"clipdetect_ff")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -592,11 +598,10 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"gain_ff")) + if(!strcmp(function_name,"gain_ff")) { - if(argc<=2) return badsyntax("need required parameter (gain)"); float gain; - sscanf(argv[2],"%g",&gain); + if(!gargpop(&gain, ARG_FLOAT)) return fflush(stderr), badsyntax("need required parameter (gain)"); if(!sendbufsize(initialize_buffers())) return -2; for(;;) { @@ -607,7 +612,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"limit_ff")) + if(!strcmp(function_name,"limit_ff")) { float max_amplitude=1.0; if(argc>=3) sscanf(argv[2],"%g",&max_amplitude); @@ -621,7 +626,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"yes_f")) + if(!strcmp(function_name,"yes_f")) { if(argc<=2) return badsyntax("need required parameter (to_repeat)"); float to_repeat; @@ -637,7 +642,7 @@ int main(int argc, char *argv[]) } return 0; } - if(!strcmp(argv[1],"shift_math_cc")) + if(!strcmp(function_name,"shift_math_cc")) { if(argc<=2) return badsyntax("need required parameter (rate)"); float starting_phase=0; @@ -659,7 +664,7 @@ int main(int argc, char *argv[]) //csdr yes_f 1 1000000 | time csdr shift_addition_cc 0.2 >/dev/null //csdr yes_f 1 1000000 | time csdr shift_table_cc 0.2 >/dev/null - if(!strcmp(argv[1],"shift_table_cc")) + if(!strcmp(function_name,"shift_table_cc")) { bigbufs=1; if(argc<=2) return badsyntax("need required parameter (rate)"); @@ -682,7 +687,7 @@ int main(int argc, char *argv[]) return 0; } - if(!strcmp(argv[1],"shift_addfast_cc")) + if(!strcmp(function_name,"shift_addfast_cc")) { bigbufs=1; @@ -732,7 +737,7 @@ int main(int argc, char *argv[]) } - if(!strcmp(argv[1],"shift_unroll_cc")) + if(!strcmp(function_name,"shift_unroll_cc")) { bigbufs=1; @@ -782,7 +787,7 @@ int main(int argc, char *argv[]) } #ifdef LIBCSDR_GPL - if(!strcmp(argv[1],"decimating_shift_addition_cc")) + if(!strcmp(function_name,"decimating_shift_addition_cc")) { bigbufs=1; if(argc<=2) return badsyntax("need required parameter (rate)"); @@ -808,7 +813,7 @@ int main(int argc, char *argv[]) return 0; } - if(!strcmp(argv[1],"shift_addition_cc")) + if(!strcmp(function_name,"shift_addition_cc")) { bigbufs=1; @@ -857,7 +862,7 @@ int main(int argc, char *argv[]) return 0; } - if(!strcmp(argv[1],"shift_addition_cc_test")) + if(!strcmp(function_name,"shift_addition_cc_test")) { if(argc<=2) return badsyntax("need required parameter (rate)"); float rate; @@ -868,7 +873,7 @@ int main(int argc, char *argv[]) return 0; } #endif - if(!strcmp(argv[1],"dcblock_ff")) + if(!strcmp(function_name,"dcblock_ff")) { static dcblock_preserve_t dcp; //will be 0 as .bss is set to 0 if(!sendbufsize(initialize_buffers())) return -2; @@ -882,7 +887,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"fastdcblock_ff")) + if(!strcmp(function_name,"fastdcblock_ff")) { int dcblock_bufsize=SETBUF_DEFAULT_BUFSIZE; if(argc>=3) sscanf(argv[2],"%d",&dcblock_bufsize); @@ -900,7 +905,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"fmdemod_atan_cf")) + if(!strcmp(function_name,"fmdemod_atan_cf")) { if(!sendbufsize(initialize_buffers())) return -2; float last_phase=0; @@ -914,7 +919,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"fmdemod_quadri_cf")) + if(!strcmp(function_name,"fmdemod_quadri_cf")) { if(!sendbufsize(initialize_buffers())) return -2; complexf last_sample; @@ -929,7 +934,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"fmdemod_quadri_novect_cf")) + if(!strcmp(function_name,"fmdemod_quadri_novect_cf")) { if(!sendbufsize(initialize_buffers())) return -2; complexf last_sample; @@ -944,7 +949,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"deemphasis_wfm_ff")) + if(!strcmp(function_name,"deemphasis_wfm_ff")) { if(argc<=3) return badsyntax("need required parameters (sample rate, tau)"); if(!sendbufsize(initialize_buffers())) return -2; @@ -964,7 +969,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"detect_nan_ff")) + if(!strcmp(function_name,"detect_nan_ff")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -986,7 +991,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"floatdump_f") || !strcmp(argv[1],"dump_f")) + if(!strcmp(function_name,"floatdump_f") || !strcmp(argv[1],"dump_f")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -998,7 +1003,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"deemphasis_nfm_ff")) + if(!strcmp(function_name,"deemphasis_nfm_ff")) { if(argc<=2) return badsyntax("need required parameter (sample rate)"); int sample_rate; @@ -1018,7 +1023,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"amdemod_cf")) + if(!strcmp(function_name,"amdemod_cf")) { if(!sendbufsize(initialize_buffers())) return -2; @@ -1031,7 +1036,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"amdemod_estimator_cf")) + if(!strcmp(function_name,"amdemod_estimator_cf")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -1043,7 +1048,7 @@ int main(int argc, char *argv[]) TRY_YIELD; } } - if(!strcmp(argv[1],"fir_decimate_cc")) + if(!strcmp(function_name,"fir_decimate_cc")) { bigbufs=1; @@ -1109,7 +1114,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"fir_interpolate_cc")) + if(!strcmp(function_name,"fir_interpolate_cc")) { bigbufs=1; @@ -1182,7 +1187,7 @@ int main(int argc, char *argv[]) printf("];"); return 0; }*/ - if(!strcmp(argv[1],"firdes_lowpass_f")) + if(!strcmp(function_name,"firdes_lowpass_f")) { //Process the params if(argc<=3) return badsyntax("need required parameters (cutoff_rate, length)"); @@ -1219,7 +1224,7 @@ int main(int argc, char *argv[]) if(octave) { fflush(stdout); getchar(); } return 0; } - if(!strcmp(argv[1],"firdes_bandpass_c")) + if(!strcmp(function_name,"firdes_bandpass_c")) { //Process the params if(argc<=4) return badsyntax("need required parameters (low_cut, high_cut, length)"); @@ -1268,7 +1273,7 @@ int main(int argc, char *argv[]) } #ifdef LIBCSDR_GPL - if(!strcmp(argv[1],"agc_ff")) + if(!strcmp(function_name,"agc_ff")) { //Process the params //Explanation of what these actually do is in the DSP source. @@ -1308,7 +1313,7 @@ int main(int argc, char *argv[]) } #endif - if(!strcmp(argv[1],"fastagc_ff")) + if(!strcmp(function_name,"fastagc_ff")) { static fastagc_ff_t input; //is in .bss and gets cleared to zero before main() @@ -1396,7 +1401,7 @@ int main(int argc, char *argv[]) } - if(!strcmp(argv[1],"fractional_decimator_ff")) + if(!strcmp(function_name,"fractional_decimator_ff")) { //Process the params if(argc<=2) return badsyntax("need required parameters (rate)"); @@ -1438,7 +1443,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"fft_cc")) + if(!strcmp(function_name,"fft_cc")) { if(argc<=3) return badsyntax("need required parameters (fft_size, out_of_every_n_samples)"); int fft_size; @@ -1515,7 +1520,7 @@ int main(int argc, char *argv[]) } } #define LOGPOWERCF_BUFSIZE 64 - if(!strcmp(argv[1],"logpower_cf")) + if(!strcmp(function_name,"logpower_cf")) { float add_db=0; if(argc>=3) sscanf(argv[2],"%g",&add_db); @@ -1532,7 +1537,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"logaveragepower_cf")) + if(!strcmp(function_name,"logaveragepower_cf")) { bigbufs=1; if(argc<=4) return badsyntax("need required parameters (add_db, table_size, avgnumber)"); @@ -1566,7 +1571,7 @@ int main(int argc, char *argv[]) return 0; } - if(!strcmp(argv[1],"fft_exchange_sides_ff")) + if(!strcmp(function_name,"fft_exchange_sides_ff")) { if(argc<=2) return badsyntax("need required parameters (fft_size)"); int fft_size; @@ -1595,7 +1600,7 @@ int main(int argc, char *argv[]) //so we just add data to become garbage and get skipped. //COMPRESS_FFT_PAD_N should be even. - if(!strcmp(argv[1],"compress_fft_adpcm_f_u8")) + if(!strcmp(function_name,"compress_fft_adpcm_f_u8")) { if(argc<=2) return badsyntax("need required parameters (fft_size)"); int fft_size; @@ -1621,7 +1626,7 @@ int main(int argc, char *argv[]) } #endif - if(!strcmp(argv[1],"fft_benchmark")) + if(!strcmp(function_name,"fft_benchmark")) { if(argc<=3) return badsyntax("need required parameters (fft_size, fft_cycles)"); int fft_size; @@ -1660,7 +1665,7 @@ int main(int argc, char *argv[]) return 0; } - if(!strcmp(argv[1],"bandpass_fir_fft_cc")) //this command does not exist as a separate function + if(!strcmp(function_name,"bandpass_fir_fft_cc")) //this command does not exist as a separate function { float low_cut; float high_cut; @@ -1772,7 +1777,7 @@ int main(int argc, char *argv[]) } #endif - if(!strcmp(argv[1],"flowcontrol")) + if(!strcmp(function_name,"flowcontrol")) { if(argc<=3) return badsyntax("need required parameters (data_rate, reads_per_seconds)"); int data_rate; @@ -1796,7 +1801,7 @@ int main(int argc, char *argv[]) } #if 0 - if(!strcmp(argv[1],"flowcontrol")) + if(!strcmp(function_name,"flowcontrol")) { if(argc<=3) return badsyntax("need required parameters (data_rate, reads_per_seconds)"); @@ -1896,7 +1901,7 @@ int main(int argc, char *argv[]) } #endif - if(!strcmp(argv[1],"through")) + if(!strcmp(function_name,"through")) { struct timespec start_time, end_time; if(!sendbufsize(initialize_buffers())) return -2; @@ -1934,7 +1939,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"dsb_fc")) + if(!strcmp(function_name,"dsb_fc")) { float q_value = 0; if(argc>=3) sscanf(argv[2],"%g",&q_value); @@ -1954,7 +1959,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"convert_f_samplerf")) + if(!strcmp(function_name,"convert_f_samplerf")) { if(argc<=2) return badsyntax("need required parameter (wait_for_this_sample)"); @@ -1979,7 +1984,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"add_dcoffset_cc")) + if(!strcmp(function_name,"add_dcoffset_cc")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -1992,7 +1997,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"fmmod_fc")) + if(!strcmp(function_name,"fmmod_fc")) { if(!sendbufsize(initialize_buffers())) return -2; float last_phase = 0; @@ -2006,7 +2011,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"fixed_amplitude_cc")) + if(!strcmp(function_name,"fixed_amplitude_cc")) { if(argc<=2) return badsyntax("need required parameter (new_amplitude)"); @@ -2042,7 +2047,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"squelch_and_smeter_cc")) + if(!strcmp(function_name,"squelch_and_smeter_cc")) { if(!sendbufsize(initialize_buffers())) return -2; float power; @@ -2268,7 +2273,7 @@ int main(int argc, char *argv[]) |___/ */ - if(!strcmp(argv[1],"bpsk31_varicode2ascii_sy_u8")) + if(!strcmp(function_name,"bpsk31_varicode2ascii_sy_u8")) { unsigned long long status_shr = 0; unsigned char output; @@ -2283,7 +2288,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"invert_sy_sy")) + if(!strcmp(function_name,"invert_sy_sy")) { if(!sendbufsize(initialize_buffers())) return -2; unsigned char i=0; @@ -2296,7 +2301,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"rtty_line_decoder_sy_u8")) + if(!strcmp(function_name,"rtty_line_decoder_sy_u8")) { static rtty_baudot_decoder_t status_baudot; //created on .bss -> initialized to 0 unsigned char output; @@ -2311,7 +2316,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"rtty_baudot2ascii_u8_u8")) + if(!strcmp(function_name,"rtty_baudot2ascii_u8_u8")) { unsigned char fig_mode = 0; unsigned char output; @@ -2326,7 +2331,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"binary_slicer_f_u8")) + if(!strcmp(function_name,"binary_slicer_f_u8")) { if(!sendbufsize(initialize_buffers())) return -2; for(;;) @@ -2340,7 +2345,7 @@ int main(int argc, char *argv[]) return 0; } - if(!strcmp(argv[1],"serial_line_decoder_f_u8")) + if(!strcmp(function_name,"serial_line_decoder_f_u8")) { bigbufs=1; @@ -2383,7 +2388,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"pll_cc")) + if(!strcmp(function_name,"pll_cc")) { pll_t pll; @@ -2426,7 +2431,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"timing_recovery_cc")) // [--add_q [--octave ]] + if(!strcmp(function_name,"timing_recovery_cc")) // [--add_q [--octave ]] { if(argc<=2) return badsyntax("need required parameter (algorithm)"); timing_recovery_algorithm_t algorithm = timing_recovery_get_algorithm_from_string(argv[2]); @@ -2468,7 +2473,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"octave_complex_c")) + if(!strcmp(function_name,"octave_complex_c")) { if(argc<=2) return badsyntax("need required parameter (samples_to_plot)"); int samples_to_plot = 0; @@ -2505,7 +2510,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"psk_modulator_u8_c")) // + if(!strcmp(function_name,"psk_modulator_u8_c")) // { int n_psk; if(argc<=2) return badsyntax("need required parameter (n_psk)"); @@ -2525,7 +2530,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"duplicate_samples_ntimes_u8_u8")) // + if(!strcmp(function_name,"duplicate_samples_ntimes_u8_u8")) // { int sample_size_bytes = 0, ntimes = 0; if(argc<=2) return badsyntax("need required parameter (sample_size_bytes)"); @@ -2548,7 +2553,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"psk31_interpolate_sine_cc")) // + if(!strcmp(function_name,"psk31_interpolate_sine_cc")) // { int interpolation; if(argc<=2) return badsyntax("need required parameter (interpolation)"); @@ -2570,7 +2575,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"pack_bits_8to1_u8_u8")) + if(!strcmp(function_name,"pack_bits_8to1_u8_u8")) { if(!initialize_buffers()) return -2; sendbufsize(the_bufsize*8); @@ -2586,7 +2591,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"psk31_varicode_encoder_u8_u8")) + if(!strcmp(function_name,"psk31_varicode_encoder_u8_u8")) { if(!initialize_buffers()) return -2; sendbufsize(the_bufsize*8); @@ -2608,7 +2613,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"dump_u8")) + if(!strcmp(function_name,"dump_u8")) { if(!initialize_buffers()) return -2; sendbufsize(the_bufsize*3); @@ -2640,7 +2645,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"bpsk_costas_loop_cc")) // + if(!strcmp(function_name,"bpsk_costas_loop_cc")) // { float samples_per_bits; if(argc<=2) return badsyntax("need required parameter (samples_per_bits)"); @@ -2662,7 +2667,7 @@ int main(int argc, char *argv[]) } } - if(!strcmp(argv[1],"none")) + if(!strcmp(function_name,"none")) { return 0; } diff --git a/libcsdr_wrapper.c b/libcsdr_wrapper.c index ffa73f9..e3b27c5 100644 --- a/libcsdr_wrapper.c +++ b/libcsdr_wrapper.c @@ -2,4 +2,5 @@ #include "libcsdr_gpl.c" #include "ima_adpcm.c" #include "fastddc.c" +#include "args.c" //this wrapper helps parsevect.py to generate better output