@@ -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]]
0 commit comments