Skip to content

Commit 7718eda

Browse files
committed
costas loop --octave changed to --output_combined
1 parent 2a3c210 commit 7718eda

2 files changed

Lines changed: 33 additions & 21 deletions

File tree

csdr.c

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ char usage[]=
136136
" psk_modulator_u8_c <n_psk>\n"
137137
" psk31_interpolate_sine_cc <interpolation>\n"
138138
" duplicate_samples_ntimes_u8_u8 <sample_size_bytes> <ntimes>\n"
139-
" bpsk_costas_loop_cc <loop_bandwidth> <damping_factor> [--dd | --decision_directed] [--output_error | --output_dphase | --output_nco | --octave]\n"
139+
" bpsk_costas_loop_cc //<loop_bandwidth> <damping_factor> [--dd | --decision_directed] [--output_error | --output_dphase | --output_nco | --output_combined <error_file> <dphase_file> <nco_file>]\n"
140140
" binary_slicer_f_u8\n"
141141
" simple_agc_cc <rate> [reference [max_gain]]\n"
142142
" firdes_peak_c <rate> <length> [window [--octave]]\n"
@@ -2786,7 +2786,7 @@ int main(int argc, char *argv[])
27862786
}
27872787
}
27882788

2789-
if(!strcmp(argv[1],"bpsk_costas_loop_cc")) //<loop_bandwidth> <damping_factor> [--dd | --decision_directed] [--output_error | --output_dphase | --output_nco | --octave]
2789+
if(!strcmp(argv[1],"bpsk_costas_loop_cc")) //<loop_bandwidth> <damping_factor> [--dd | --decision_directed] [--output_error | --output_dphase | --output_nco | --output_combined <error_file> <dphase_file> <nco_file>]
27902790
{
27912791
float loop_bandwidth;
27922792
if(argc<=2) return badsyntax("need required parameter (loop_bandwidth)");
@@ -2797,25 +2797,35 @@ int main(int argc, char *argv[])
27972797
sscanf(argv[3],"%f",&damping_factor);
27982798

27992799
int decision_directed = !!(argc>4 && (!strcmp(argv[4], "--dd") || !strcmp(argv[5], "--decision_directed")));
2800+
if(decision_directed) { errhead(); fprintf(stderr, "decision directed mode\n"); }
28002801

2801-
int output_error = !!(argc>4+decision_directed && (!strcmp(argv[4+decision_directed], "--output_error")));
2802-
int output_dphase = !output_error & !!(argc>4+decision_directed && (!strcmp(argv[4+decision_directed], "--output_dphase")));
2803-
int output_nco = !output_dphase & !!(argc>4+decision_directed && (!strcmp(argv[4+decision_directed], "--output_nco")));
2804-
int octave = !output_nco & !!(argc>4+decision_directed && (!strcmp(argv[4+decision_directed], "--octave")));
2802+
int output_error = !!(argc>4+decision_directed && (!strcmp(argv[4+decision_directed], "--output_error")));
2803+
int output_dphase = !output_error & !!(argc>4+decision_directed && (!strcmp(argv[4+decision_directed], "--output_dphase")));
2804+
int output_nco = !output_dphase & !!(argc>4+decision_directed && (!strcmp(argv[4+decision_directed], "--output_nco")));
2805+
int output_combined = !output_nco & !!(argc>4+decision_directed && (!strcmp(argv[4+decision_directed], "--output_combined")));
28052806

2806-
if(decision_directed && !octave) { errhead(); fprintf(stderr, "decision directed mode\n"); }
28072807

28082808
bpsk_costas_loop_state_t state;
28092809
init_bpsk_costas_loop_cc(&state, decision_directed, damping_factor, loop_bandwidth);
28102810

28112811
if(!initialize_buffers()) return -2;
28122812
sendbufsize(the_bufsize);
28132813

2814-
float* buffer_output_error = (!(octave || output_error)) ? NULL : (float*)malloc(sizeof(float)*the_bufsize);
2815-
float* buffer_output_dphase = (!(octave || output_dphase)) ? NULL : (float*)malloc(sizeof(float)*the_bufsize);
2816-
complexf* buffer_output_nco = (!(octave || output_nco)) ? NULL : (complexf*)malloc(sizeof(complexf)*the_bufsize);
2814+
float* buffer_output_error = (!(output_combined || output_error)) ? NULL : (float*)malloc(sizeof(float)*the_bufsize);
2815+
float* buffer_output_dphase = (!(output_combined || output_dphase)) ? NULL : (float*)malloc(sizeof(float)*the_bufsize);
2816+
complexf* buffer_output_nco = (!(output_combined || output_nco)) ? NULL : (complexf*)malloc(sizeof(complexf)*the_bufsize);
2817+
2818+
FILE* file_output_error = NULL;
2819+
FILE* file_output_dphase = NULL;
2820+
FILE* file_output_nco = NULL;
2821+
if(!(argc>4+decision_directed+3)) { errhead(); return badsyntax("need required parameters after --output_combined: <error_file> <dphase_file> <nco_file>"); }
2822+
if(output_combined)
2823+
{
2824+
file_output_error = fopen(argv[4+decision_directed+1], "w");
2825+
file_output_dphase = fopen(argv[4+decision_directed+2], "w");
2826+
file_output_nco = fopen(argv[4+decision_directed+3], "w");
2827+
}
28172828

2818-
if(octave) fprintf(stderr, "error=[]; dphase=[]; nco=[];\n");
28192829
for(;;)
28202830
{
28212831
FEOF_CHECK;
@@ -2826,19 +2836,21 @@ int main(int argc, char *argv[])
28262836
if(output_error) fwrite(buffer_output_error, sizeof(float), the_bufsize, stdout);
28272837
else if(output_dphase) fwrite(buffer_output_dphase, sizeof(float), the_bufsize, stdout);
28282838
else if(output_nco) fwrite(buffer_output_nco, sizeof(complexf), the_bufsize, stdout);
2829-
else if(octave)
2839+
else
28302840
{
2831-
fprintf(stderr, "error=[error ");
2832-
for(int i=0; i<the_bufsize; i++) fprintf(stderr, "%f ", buffer_output_error[i]);
2833-
fprintf(stderr, "]; dphase=[dphase ");
2834-
for(int i=0; i<the_bufsize; i++) fprintf(stderr, "%f ", buffer_output_dphase[i]);
2835-
fprintf(stderr, "]; nco=[nco ");
2836-
for(int i=0; i<the_bufsize; i++) fprintf(stderr, "(%f)+(%f)*i", buffer_output_nco[i].i, buffer_output_nco[i].q);
2837-
fprintf(stderr, "];\n");
2841+
if(output_combined)
2842+
{
2843+
fwrite(buffer_output_error, sizeof(float), the_bufsize, file_output_error);
2844+
fwrite(buffer_output_dphase, sizeof(float), the_bufsize, file_output_dphase);
2845+
fwrite(buffer_output_nco, sizeof(complexf), the_bufsize, file_output_nco);
2846+
}
2847+
FWRITE_C;
28382848
}
2839-
else { FWRITE_C; }
28402849
TRY_YIELD;
28412850
}
2851+
fclose(file_output_error);
2852+
fclose(file_output_dphase);
2853+
fclose(file_output_nco);
28422854
}
28432855

28442856
if(!strcmp(argv[1],"simple_agc_cc")) //<rate> [reference [max_gain]]

grc_tests/test_bpsk_costas_loop.grc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,7 @@
693693
</param>
694694
<param>
695695
<key>commandline</key>
696-
<value>csdr bpsk_costas_loop_cc 0.01 0.707 --dd --octave 2&gt;/home/pcfl/Asztal/szakdoga/dipterv1/costaslog</value>
696+
<value>tee /s/costas_input | csdr bpsk_costas_loop_cc 0.01 0.707 --dd --output_combined /s/costas_error /s/costas_dphase /s/costas_nco | tee /s/costas_output</value>
697697
</param>
698698
<param>
699699
<key>comment</key>

0 commit comments

Comments
 (0)