From b4a0e2e9f3c8a720d1bd3ff1cde9beb6417166ad Mon Sep 17 00:00:00 2001 From: lwvmobile Date: Tue, 25 Oct 2022 19:21:57 -0400 Subject: [PATCH] P2 4V/2V Deinterleave Fix; Errs now C0 and C1; --- .gitignore | 4 ++++ src/dsd_main.c | 12 +++++++----- src/dsd_mbe.c | 21 ++++++++++---------- src/dsd_ncurses.c | 50 +++++++++++++++++++++++++++++++++++------------ src/p25p2_frame.c | 14 ++++++------- src/p25p2_vpdu.c | 2 +- 6 files changed, 67 insertions(+), 36 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e83ed1c --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.[ao] +*.so* +*.dylib +build diff --git a/src/dsd_main.c b/src/dsd_main.c index 9b2f9d4..bfc244e 100644 --- a/src/dsd_main.c +++ b/src/dsd_main.c @@ -1156,7 +1156,7 @@ main (int argc, char **argv) break; case 'T': //repurposed to TDMA/NXDN Per Call - sprintf (wav_file_directory, "./WAV"); // /wav, or ./wav + sprintf (wav_file_directory, "./WAV"); wav_file_directory[1023] = '\0'; if (stat(wav_file_directory, &st) == -1) { @@ -1165,17 +1165,19 @@ main (int argc, char **argv) mkdir(wav_file_directory, 0700); //user read write execute, needs execute for some reason or segfault } fprintf (stderr,"XDMA and NXDN Per Call Wav File Saving Enabled. (NCurses Terminal Only)\n"); - sprintf (opts.wav_out_file, "./WAV/DSD-FME-X1.wav"); // foward slash here, on wav_file_directory? + sprintf (opts.wav_out_file, "./WAV/DSD-FME-X1.wav"); sprintf (opts.wav_out_fileR, "./WAV/DSD-FME-X2.wav"); opts.dmr_stereo_wav = 1; - openWavOutFileL (&opts, &state); //testing for now, will want to move to per call later - openWavOutFileR (&opts, &state); //testing for now, will want to move to per call later + openWavOutFileL (&opts, &state); + openWavOutFileR (&opts, &state); break; case 'F': opts.aggressive_framesync = 0; fprintf (stderr, "%s", KYEL); - fprintf (stderr,"DMR Stereo Aggressive Resync Disabled!\n"); + //fprintf (stderr,"DMR Stereo Aggressive Resync Disabled!\n"); + fprintf (stderr, "Relax P25 Phase 2 MAC_SIGNAL CRC Checksum Pass/Fail\n"); + fprintf (stderr, "Relax DMR CACH/Burst FEC Pass/Fail\n"); fprintf (stderr, "%s", KNRM); break; diff --git a/src/dsd_mbe.c b/src/dsd_mbe.c index c1f7d07..c037358 100644 --- a/src/dsd_mbe.c +++ b/src/dsd_mbe.c @@ -143,9 +143,9 @@ processMbeFrame (dsd_opts * opts, dsd_state * state, char imbe_fr[8][23], char a // 0 +P25p1 // 1 -P25p1 state->errs = mbe_eccImbe7200x4400C0 (imbe_fr); - state->errs2 = state->errs; + //state->errs2 = state->errs; mbe_demodulateImbe7200x4400Data (imbe_fr); - state->errs2 += mbe_eccImbe7200x4400Data (imbe_fr, imbe_d); + state->errs2 = mbe_eccImbe7200x4400Data (imbe_fr, imbe_d); @@ -170,9 +170,9 @@ processMbeFrame (dsd_opts * opts, dsd_state * state, char imbe_fr[8][23], char a { state->errs = mbe_eccImbe7100x4400C0 (imbe7100_fr); - state->errs2 = state->errs; + //state->errs2 = state->errs; mbe_demodulateImbe7100x4400Data (imbe7100_fr); - state->errs2 += mbe_eccImbe7100x4400Data (imbe7100_fr, imbe_d); + state->errs2 = mbe_eccImbe7100x4400Data (imbe7100_fr, imbe_d); mbe_convertImbe7100to7200(imbe_d); //needs extra conversion step apparently mbe_processImbe4400Dataf (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, @@ -203,10 +203,11 @@ processMbeFrame (dsd_opts * opts, dsd_state * state, char imbe_fr[8][23], char a } else if ((state->synctype == 8) || (state->synctype == 9)) { + state->errs = mbe_eccAmbe3600x2450C0 (ambe_fr); - state->errs2 = state->errs; + //state->errs2 = state->errs; mbe_demodulateAmbe3600x2450Data (ambe_fr); - state->errs2 += mbe_eccAmbe3600x2450Data (ambe_fr, ambe_d); + state->errs2 = mbe_eccAmbe3600x2450Data (ambe_fr, ambe_d); if ( (state->nxdn_cipher_type == 0x01 && state->R > 0) || (state->M == 1 && state->R > 0) ) @@ -248,9 +249,9 @@ processMbeFrame (dsd_opts * opts, dsd_state * state, char imbe_fr[8][23], char a { state->errs = mbe_eccAmbe3600x2450C0 (ambe_fr); - state->errs2 = state->errs; + //state->errs2 = state->errs; mbe_demodulateAmbe3600x2450Data (ambe_fr); - state->errs2 += mbe_eccAmbe3600x2450Data (ambe_fr, ambe_d); + state->errs2 = mbe_eccAmbe3600x2450Data (ambe_fr, ambe_d); if ( (state->K > 0 && state->dmr_so & 0x40 && state->payload_keyid == 0 && state->dmr_fid == 0x10) || (state->K > 0 && state->M == 1) ) @@ -343,9 +344,9 @@ processMbeFrame (dsd_opts * opts, dsd_state * state, char imbe_fr[8][23], char a { state->errsR = mbe_eccAmbe3600x2450C0 (ambe_fr); - state->errs2R = state->errsR; + //state->errs2R = state->errsR; mbe_demodulateAmbe3600x2450Data (ambe_fr); - state->errs2R += mbe_eccAmbe3600x2450Data (ambe_fr, ambe_d); + state->errs2R = mbe_eccAmbe3600x2450Data (ambe_fr, ambe_d); if ( (state->K > 0 && state->dmr_soR & 0x40 && state->payload_keyidR == 0 && state->dmr_fidR == 0x10) || (state->K > 0 && state->M == 1) ) diff --git a/src/dsd_ncurses.c b/src/dsd_ncurses.c index aa7ff9f..103cbcb 100644 --- a/src/dsd_ncurses.c +++ b/src/dsd_ncurses.c @@ -65,16 +65,39 @@ int i = 0; char versionstr[25]; unsigned long long int call_matrix[33][6]; +/* + ___)__|_ + .-*' '*-, + / /| |\ \ +; /_| |_\ ; +; |\ /| ; +; | ''--...--'' | ; + \ ''---.....--'' / + ''*-.,_______,.-*' BOO! +*/ + +// char * FM_bannerN[9] = { +// " ESC or Arrow Keys For Menu ", +// " ██████╗ ██████╗██████╗    ███████╗███╗ ███╗███████╗ ", +// " ██╔══██╗██╔════╝██╔══██╗   ██╔════╝████╗ ████║██╔════╝ ", +// " ██║ ██║╚█████╗ ██║ ██║   █████╗ ██╔████╔██║█████╗ ", +// " ██║ ██║ ╚═══██╗██║ ██║   ██╔══╝ ██║╚██╔╝██║██╔══╝ ", +// " ██████╔╝██████╔╝██████╔╝   ██║ ██║ ╚═╝ ██║███████╗ ", +// " ╚═════╝ ╚═════╝ ╚═════╝    ╚═╝ ╚═╝ ╚═╝╚══════╝ ", +// " ", +// " " +// }; + char * FM_bannerN[9] = { - " ESC or Arrow Keys For Menu ", - " ██████╗ ██████╗██████╗    ███████╗███╗ ███╗███████╗ ", - " ██╔══██╗██╔════╝██╔══██╗   ██╔════╝████╗ ████║██╔════╝ ", - " ██║ ██║╚█████╗ ██║ ██║   █████╗ ██╔████╔██║█████╗ ", - " ██║ ██║ ╚═══██╗██║ ██║   ██╔══╝ ██║╚██╔╝██║██╔══╝ ", - " ██████╔╝██████╔╝██████╔╝   ██║ ██║ ╚═╝ ██║███████╗ ", - " ╚═════╝ ╚═════╝ ╚═════╝    ╚═╝ ╚═╝ ╚═╝╚══════╝ ", - " ", - " " + " ESC or Arrow Keys For Menu Happy Halloween! ___)__|_ ", + " ██████╗ ██████╗██████╗    ███████╗███╗ ███╗███████╗ .-*' '*-, ", + " ██╔══██╗██╔════╝██╔══██╗   ██╔════╝████╗ ████║██╔════╝; /_| |_\\ ;", + " ██║ ██║╚█████╗ ██║ ██║   █████╗ ██╔████╔██║█████╗ ; |\\ /| ;", + " ██║ ██║ ╚═══██╗██║ ██║   ██╔══╝ ██║╚██╔╝██║██╔══╝ ; | ''--...--'' | ; ", + " ██████╔╝██████╔╝██████╔╝   ██║ ██║ ╚═╝ ██║███████╗ \\ ''---.....--'' / ", + " ╚═════╝ ╚═════╝ ╚═════╝    ╚═╝ ╚═╝ ╚═╝╚══════╝ ''*-.,_______,.-*' ", + " Happy Halloween ", + " " }; char * SyncTypes[44] = { @@ -152,8 +175,8 @@ char * DMRBusrtTypes[32] = { "VOICE LDU", "TDU/TDULC", "TSBK", - "MAC_SIGNAL", - "MAC_SIGNAL" + "MAC SIGNAL", + "MAC SIGNAL" }; @@ -1910,13 +1933,14 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) } if (opts->ncurses_compact == 0) { - attron(COLOR_PAIR(6)); //6 + attron(COLOR_PAIR(1)); //6 for (short int i = 0; i < 7; i++) { printw("%s \n", FM_bannerN[i]); } printw (" https://github.com/lwvmobile/dsd-fme/tree/pulseaudio\n"); - printw (" Github Build Version: %s \n", GIT_TAG); + //printw (" Github Build Version: %s \n", GIT_TAG); + printw (" Github Build Version: %s \n", "1313"); //probably better than the first number I thought of attroff(COLOR_PAIR(6)); //6 // printw ("--Build Info------------------------------------------------------------------\n"); // printw ("| https://github.com/lwvmobile/dsd-fme/tree/pulseaudio\n"); //http link diff --git a/src/p25p2_frame.c b/src/p25p2_frame.c index 30e4aef..4cd7658 100644 --- a/src/p25p2_frame.c +++ b/src/p25p2_frame.c @@ -31,30 +31,30 @@ static const int16_t duid_lookup[256] = { }; //4V and 2V deinterleave schedule -const int c0[24] = { +const int c0[25] = { 23,5,22,4,21,3,20,2,19,1,18,0, - 17,16,15,14,13,12,11,10,9,7,6 + 17,16,15,14,13,12,11,10,9,8,7,6 }; -const int c1[24] = { +const int c1[24] = { 10,9,8,7,6,5,22,4,21,3,20,2, 19,1,18,0,17,16,15,14,13,12,11 }; -const int c2[24] = { +const int c2[12] = { 3,2,1,0,10,9,8,7,6,5,4 }; -const int c3[24] = { +const int c3[15] = { 13,12,11,10,9,8,7,6,5,4,3,2,1,0 }; -const int csubset[72] = { +const int csubset[73] = { 0,0,1,2,0,0,1,2,0,0,1,2,0,0,1,2, 0,0,1,3,0,0,1,3,0,1,1,3,0,1,1,3, 0,1,1,3,0,1,1,3,0,1,1,3,0,1,2,3, 0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3, - 0,1,2,3 + 0,1,2,3,0,1,2,3 }; const int *w; diff --git a/src/p25p2_vpdu.c b/src/p25p2_vpdu.c index b90d8d6..709353a 100644 --- a/src/p25p2_vpdu.c +++ b/src/p25p2_vpdu.c @@ -220,7 +220,7 @@ void process_MAC_VPDU(dsd_opts * opts, dsd_state * state, int type, unsigned lon year, month, day, hour, min, seconds); fprintf (stderr, " Local Time Offset: %.01f Hours;", offhour); //if ist bit is set, then time on system may be considered invalid (i.e., no external time sync) - if (ist == 1) + if (ist % 1) { fprintf (stderr, " Invalid System Time "); }