From c37400bf811c4fb40f5b3c380c331b2a4776268d Mon Sep 17 00:00:00 2001 From: lwvmobile Date: Tue, 27 Sep 2022 18:39:35 -0400 Subject: [PATCH] DMR Stereo Standalone Option --- src/dsd_main.c | 27 ++++++++++++++++++++++++++- src/dsd_ncurses.c | 24 ++++++++++++------------ 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/src/dsd_main.c b/src/dsd_main.c index d112015..99b3f65 100644 --- a/src/dsd_main.c +++ b/src/dsd_main.c @@ -671,6 +671,7 @@ usage () printf ("Decoder options:\n"); printf (" -fa Legacy Auto Detection (old methods default)\n"); printf (" -ft XDMA P25 and DMR BS/MS frame types (new default)\n"); + printf (" -fs DMR Stereo BS and MS Simplex only\n"); printf (" -f1 Decode only P25 Phase 1\n"); printf (" -fd Decode only D-STAR\n"); printf (" -fr Decode only DMR\n"); @@ -1397,9 +1398,33 @@ main (int argc, char **argv) state.rf_mod = 0; opts.dmr_stereo = 1; state.dmr_stereo = 1; - sprintf (opts.output_name, "P25-P2"); + sprintf (opts.output_name, "P25P2"); fprintf (stderr,"Decoding P25-P2 frames C4FM or OP25 Symbol Captures!\n"); } + else if (optarg[0] == 's') + { + opts.frame_dstar = 0; + opts.frame_x2tdma = 0; + opts.frame_p25p1 = 0; + opts.frame_p25p2 = 0; + opts.inverted_p2 = 0; + opts.frame_nxdn48 = 0; + opts.frame_nxdn96 = 0; + opts.frame_dmr = 1; + opts.frame_dpmr = 0; + opts.frame_provoice = 0; + opts.frame_ysf = 0; + opts.mod_c4fm = 1; + opts.mod_qpsk = 0; + opts.mod_gfsk = 0; + state.rf_mod = 0; + opts.dmr_stereo = 1; + //state.dmr_stereo = 1; //manually set to 1 + opts.pulse_digi_rate_out = 24000; + opts.pulse_digi_out_channels = 2; + sprintf (opts.output_name, "DMR Stereo"); + fprintf (stderr,"Decoding DMR Stereo BS/MS Simplex\n"); + } else if (optarg[0] == 't') { opts.frame_dstar = 0; diff --git a/src/dsd_ncurses.c b/src/dsd_ncurses.c index efffbbe..f1bd80f 100644 --- a/src/dsd_ncurses.c +++ b/src/dsd_ncurses.c @@ -279,7 +279,7 @@ char *choices[] = { "Decode dPMR", "Decode NXDN48", "Decode NXDN96", - "Decode X2-TDMA*", + "Decode DMR Stereo", //was X2-TDMA* "Toggle Signal Inversion", "Privacy Key Entry", // " ", @@ -462,7 +462,7 @@ void ncursesMenu (dsd_opts * opts, dsd_state * state) info_win = newwin(7, WIDTH+18, starty, startx+20); box (info_win, 0, 0); mvwprintw(info_win, 2, 2, " XDMA Decoding Class Supports the following:"); - mvwprintw(info_win, 3, 2, " P25-P1, P25-P2, DMR Stereo BS/MS and X2-TDMA"); + mvwprintw(info_win, 3, 2, " P25-P1, P25-P2, and DMR Stereo BS/MS"); mvwprintw(info_win, 4, 2, " --C4FM / FSK4 only, and OP25 P2 Capture Bins"); wrefresh(info_win); } @@ -1129,11 +1129,11 @@ void ncursesMenu (dsd_opts * opts, dsd_state * state) state->rf_mod = 0; sprintf (opts->output_name, "XDMA"); opts->dmr_stereo = 1; //this value is the end user option - state->dmr_stereo = 1; //this values toggles on and off depending on voice or data handling + state->dmr_stereo = 0; //this values toggles on and off depending on voice or data handling opts->pulse_digi_rate_out = 24000; opts->pulse_digi_out_channels = 2; opts->frame_dstar = 0; - opts->frame_x2tdma = 1; + opts->frame_x2tdma = 0; opts->frame_p25p1 = 1; opts->frame_p25p2 = 1; opts->frame_nxdn48 = 0; @@ -1258,22 +1258,22 @@ void ncursesMenu (dsd_opts * opts, dsd_state * state) } if (choice == 11) { - //Decode X2-TDMA - //NXDN96 + //Decode DMR Stereo (was X2-TDMA) resetState (state); //use sparingly, may cause memory leak state->samplesPerSymbol = 10; state->symbolCenter = 4; - sprintf (opts->output_name, "X2-TDMA"); - opts->dmr_stereo = 0; //this value is the end user option + // sprintf (opts->output_name, "X2-TDMA"); + sprintf (opts->output_name, "DMR Stereo"); + opts->dmr_stereo = 1; //this value is the end user option state->dmr_stereo = 0; //this values toggles on and off depending on voice or data handling - opts->pulse_digi_rate_out = 8000; - opts->pulse_digi_out_channels = 1; + opts->pulse_digi_rate_out = 24000; + opts->pulse_digi_out_channels = 2; opts->frame_dstar = 0; - opts->frame_x2tdma = 1; + opts->frame_x2tdma = 0; opts->frame_p25p1 = 0; opts->frame_nxdn48 = 0; opts->frame_nxdn96 = 0; - opts->frame_dmr = 0; + opts->frame_dmr = 1; opts->frame_dpmr = 0; opts->frame_provoice = 0; opts->frame_ysf = 0;