diff --git a/src/dsd_file.c b/src/dsd_file.c index c4a74e8..c08a2b5 100644 --- a/src/dsd_file.c +++ b/src/dsd_file.c @@ -89,7 +89,10 @@ saveAmbe2450Data (dsd_opts * opts, dsd_state * state, char *ambe_d) fputc (b, opts->mbe_out_f); } - //fprintf(stderr, "\n"); + if (opts->payload == 1) + { + fprintf(stderr, " err = [%X] [%X] ", state->errs, state->errs2); + } b = ambe_d[48]; fputc (b, opts->mbe_out_f); fflush (opts->mbe_out_f); @@ -237,8 +240,12 @@ closeMbeOutFile (dsd_opts * opts, dsd_state * state) fclose (opts->mbe_out_f); opts->mbe_out_f = NULL; strftime (datestr, 31, "%Y-%m-%d-%H%M%S", &timep); - //sprintf (newfilename, "nac%X-%s-tg%i%s", state->nac, datestr, talkgroup, ext); + sprintf (newfilename, "%s%s", datestr, ext); //this one + if (state->lastsynctype == 0 || state->lastsynctype) + { + sprintf (newfilename, "%s-nac%X-tg%i%s", datestr, state->nac, talkgroup, ext); + } sprintf (new_path, "%s%s", opts->mbe_out_dir, newfilename); #ifdef _WIN32 sprintf (shell, "move %s %s", opts->mbe_out_path, new_path); @@ -307,13 +314,12 @@ void openWavOutFile (dsd_opts * opts, dsd_state * state) { - // opts->wav_out_f = fopen (opts->wav_out_file, "w"); - SF_INFO info; info.samplerate = 8000; //8000 info.channels = 1; info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16 | SF_ENDIAN_LITTLE; - opts->wav_out_f = sf_open (opts->wav_out_file, SFM_WRITE, &info); + //opts->wav_out_f = sf_open (opts->wav_out_file, SFM_WRITE, &info); + opts->wav_out_f = sf_open (opts->wav_out_file, SFM_RDWR, &info); //RDWR will append to file instead of overwrite file if (opts->wav_out_f == NULL) { diff --git a/src/dsd_main.c b/src/dsd_main.c index 9e2f45a..616b8bb 100644 --- a/src/dsd_main.c +++ b/src/dsd_main.c @@ -294,7 +294,7 @@ initState (dsd_state * state) state->debug_header_errors = 0; state->debug_header_critical_errors = 0; - state->nxdn_last_ran = 0; + state->nxdn_last_ran = -1; #ifdef TRACE_DSD state->debug_sample_index = 0; @@ -328,17 +328,14 @@ usage () fprintf (stderr," -z Frame rate for datascope\n"); fprintf (stderr,"\n"); fprintf (stderr,"Input/Output options:\n"); - //fprintf (stderr," -i Audio input device (default is /dev/audio, - for piped stdin, rtl for rtl device)\n"); fprintf (stderr," -i Audio input device (default is pulse audio, - for piped stdin, rtl for rtl device)\n"); - //fprintf (stderr," -o Audio output device (default is /dev/audio)\n"); fprintf (stderr," -o Audio output device (default is pulse audio)\n"); fprintf (stderr," -d Create mbe data files, use this directory\n"); fprintf (stderr," -r Read/Play saved mbe data from file(s)\n"); fprintf (stderr," -g Audio output gain (default = 0 = auto, disable = -1)\n"); - //fprintf (stderr," -n Do not send synthesized speech to audio output device\n"); fprintf (stderr," -w Output synthesized speech to a .wav file\n"); - fprintf (stderr," -a Display port audio devices\n"); - fprintf (stderr," -W Monitor Source Audio When No Sync Detected (WIP!)\n"); + //fprintf (stderr," -a Display port audio devices\n"); + //fprintf (stderr," -W Monitor Source Audio When No Sync Detected (WIP!)\n"); fprintf (stderr,"\n"); fprintf (stderr,"RTL-SDR options:\n"); fprintf (stderr," -c RTL-SDR Frequency\n"); @@ -382,8 +379,8 @@ usage () fprintf (stderr," (default=36)\n"); fprintf (stderr," -M Min/Max buffer size for QPSK decision point tracking\n"); fprintf (stderr," (default=15)\n"); - fprintf (stderr," -n Reset P25 Heuristics and initState variables on mixed decoding signal\n"); - fprintf (stderr," Helps when decoding multiple signal types at same time\n"); + fprintf (stderr," -n Reset P25 Heuristics and initState variables on mixed signal decoding\n"); + fprintf (stderr," Helps when decoding mixed signal types at same time\n"); fprintf (stderr," (WiP! May Cause Slow Memory Leak - Experimental)\n"); fprintf (stderr," -Z Log MBE Payload to console\n"); fprintf (stderr,"\n"); @@ -786,7 +783,7 @@ main (int argc, char **argv) case 'w': strncpy(opts.wav_out_file, optarg, 1023); opts.wav_out_file[1023] = '\0'; - fprintf (stderr,"Writing audio to file %s\n", opts.wav_out_file); + fprintf (stderr,"Writing + Appending audio to file %s\n", opts.wav_out_file); openWavOutFile (&opts, &state); break; case 'B': diff --git a/src/dsd_ncurses.c b/src/dsd_ncurses.c index 13fc49e..98057d7 100644 --- a/src/dsd_ncurses.c +++ b/src/dsd_ncurses.c @@ -106,6 +106,7 @@ void ncursesOpen () init_pair(5, COLOR_MAGENTA, COLOR_BLACK); //Magenta for no frame sync/signal noecho(); cbreak(); + //fprintf (stderr, "Opening NCurses Terminal. \n"); } @@ -164,7 +165,7 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) //if ( (state->nxdn_last_rid != src && src > 0) || (state->nxdn_last_ran != rn && rn > 0) ) //find condition to make this work well, probably if last != local last variables //if ( (call_matrix[9][2] != src && src > 0) || (call_matrix[9][1] != rn && rn > 0) ) //NXDN working well now with this, updates immediately and only once - if ( call_matrix[9][2] != src && src > 0 && rn > 0 ) //NXDN working well now with this, updates immediately and only once + if ( call_matrix[9][2] != src && src > 0 && rn > -1 ) //NXDN working well now with this, updates immediately and only once { for (short int k = 0; k < 9; k++) { @@ -260,7 +261,7 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) } if (opts->wav_out_file[0] != 0) { - printw ("| Writing Audio WAV to file %s\n", opts->wav_out_file); + printw ("| Appending Audio WAV to file %s\n", opts->wav_out_file); } printw ("------------------------------------------------------------------------------\n"); @@ -295,7 +296,7 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) src = state->nxdn_last_rid; //rn = state->nxdn_last_ran; } - if (state->nxdn_last_ran > 0 && state->nxdn_last_rid != rn); + if (state->nxdn_last_ran > -1 && state->nxdn_last_rid != rn); { //src = state->nxdn_last_rid; rn = state->nxdn_last_ran; @@ -344,7 +345,7 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) printw("| ALG: [0x%02X] ", state->payload_algid); printw("KEY: [0x%04X] ", state->payload_keyid); //printw("MFG: [0x%X] ", state->payload_mfid); //no way of knowing if this is accurate info yet - if (state->payload_keyid != 0 && state->carrier == 1) + if (state->payload_algid != 0x80 && state->carrier == 1) { attron(COLOR_PAIR(2)); printw("**ENC**");