diff --git a/include/dsd.h b/include/dsd.h index 4e0729e..bbfd864 100644 --- a/include/dsd.h +++ b/include/dsd.h @@ -676,6 +676,7 @@ void skipDibit (dsd_opts * opts, dsd_state * state, int count); void saveImbe4400Data (dsd_opts * opts, dsd_state * state, char *imbe_d); void saveAmbe2450Data (dsd_opts * opts, dsd_state * state, char *ambe_d); void PrintAMBEData (dsd_opts * opts, dsd_state * state, char *ambe_d); +void PrintIMBEData (dsd_opts * opts, dsd_state * state, char *imbe_d); int readImbe4400Data (dsd_opts * opts, dsd_state * state, char *imbe_d); int readAmbe2450Data (dsd_opts * opts, dsd_state * state, char *ambe_d); void openMbeInFile (dsd_opts * opts, dsd_state * state); diff --git a/src/dmr_process_voice.c b/src/dmr_process_voice.c index 8cfd8d6..6914229 100644 --- a/src/dmr_process_voice.c +++ b/src/dmr_process_voice.c @@ -118,6 +118,10 @@ if (state->currentslot == 1 && state->K > 0 && state->dmr_soR & 0x40 && state->p // if (state->currentslot == 0) { + if (opts->payload == 1) + { + fprintf(stderr, "\n"); //line break for AMBE printer + } for(Frame = 0; Frame < 6; Frame++) //6 { /* 1 DMR frame contains 3 AMBE voice samples */ @@ -132,30 +136,19 @@ if (state->currentslot == 0) TSVoiceSupFrameL->TimeSlotAmbeVoiceFrame[Frame].AmbeBit[i], state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality); + if (opts->payload == 1) + { + PrintAMBEData(opts, state, TSVoiceSupFrameL->TimeSlotAmbeVoiceFrame[Frame].AmbeBit[i]); + } + if (opts->mbe_out_f != NULL) { saveAmbe2450Data (opts, state, TSVoiceSupFrameL->TimeSlotAmbeVoiceFrame[Frame].AmbeBit[i]); } - if (opts->errorbars == 1) - { - //fprintf(stderr, "%s", state->err_str); - } state->debug_audio_errors += *errs2; - // - //fprintf (stderr, "%X", TSVoiceSupFrameL->TimeSlotDeinterleavedVoiceFrame[Frame].DeInterleavedVoiceSample[i] ); //this set up right? - // - /* - fprintf (stderr, "\nInt RVD "); - for (short o = 0; o < 36; o++) - { - fprintf (stderr, "%X", TSVoiceSupFrameL->TimeSlotDeinterleavedVoiceFrame[Frame].DeInterleavedVoiceSample[i][o] ); - } - */ - //wny do I have this running twice for? - //processAudio(opts, state); + processAudio(opts, state); - //playSynthesizedVoice (opts, state); if (opts->wav_out_f != NULL) { @@ -173,6 +166,10 @@ if (state->currentslot == 0) if (state->currentslot == 1) { + if (opts->payload == 1) + { + fprintf(stderr, "\n"); //line break for AMBE printer + } for(Frame = 0; Frame < 6; Frame++) { /* 1 DMR frame contains 3 AMBE voice samples */ @@ -187,28 +184,20 @@ if (state->currentslot == 0) TSVoiceSupFrameR->TimeSlotAmbeVoiceFrame[Frame].AmbeBit[i], state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality); + + if (opts->payload == 1) + { + PrintAMBEData(opts, state, TSVoiceSupFrameR->TimeSlotAmbeVoiceFrame[Frame].AmbeBit[i]); + } + if (opts->mbe_out_f != NULL) { saveAmbe2450Data (opts, state, TSVoiceSupFrameR->TimeSlotAmbeVoiceFrame[Frame].AmbeBit[i]); } - if (opts->errorbars == 1) - { - //fprintf(stderr, "%s", state->err_str); - } state->debug_audio_errors += *errs2; - // - //fprintf (stderr, "%X", TSVoiceSupFrameR->TimeSlotDeinterleavedVoiceFrame[Frame].DeInterleavedVoiceSample[i] ); //this set up right? - // - /* - fprintf (stderr, "\nInt RVD "); - for (short o = 0; o < 36; o++) - { - fprintf (stderr, "%X", TSVoiceSupFrameR->TimeSlotDeinterleavedVoiceFrame[Frame].DeInterleavedVoiceSample[i][o] ); - } - */ + processAudio(opts, state); - //playSynthesizedVoice (opts, state); if (opts->wav_out_f != NULL) { diff --git a/src/dsd_file.c b/src/dsd_file.c index df76440..104b033 100644 --- a/src/dsd_file.c +++ b/src/dsd_file.c @@ -30,8 +30,7 @@ saveImbe4400Data (dsd_opts * opts, dsd_state * state, char *imbe_d) k = 0; if (opts->payload == 1) //make opt variable later on to toggle this { - fprintf(stderr, "\n IMBE "); - //fprintf(stderr, "ALGID=%X KEYID=%X\n", state->payload_algid, state->payload_keyid); + //fprintf(stderr, "\n IMBE "); } for (i = 0; i < 11; i++) @@ -46,13 +45,13 @@ saveImbe4400Data (dsd_opts * opts, dsd_state * state, char *imbe_d) } if (opts->payload == 1) //make opt variable later on to toggle this { - fprintf (stderr, "%02X", b); + //fprintf (stderr, "%02X", b); } fputc (b, opts->mbe_out_f); } if (opts->payload == 1) { - fprintf(stderr, " err = [%X] [%X] ", state->errs, state->errs2); + //fprintf(stderr, " err = [%X] [%X] ", state->errs, state->errs2); } fflush (opts->mbe_out_f); } @@ -70,7 +69,7 @@ saveAmbe2450Data (dsd_opts * opts, dsd_state * state, char *ambe_d) k = 0; if (opts->payload == 1) //make opt variable later on to toggle this { - fprintf(stderr, "\n AMBE "); + //fprintf(stderr, "\n AMBE "); } //for (i = 0; i < 6; i++) for (i = 0; i < 7; i++) //using 7 seems to break older amb files where it was 6, need to test 7 on 7 some more @@ -84,24 +83,60 @@ saveAmbe2450Data (dsd_opts * opts, dsd_state * state, char *ambe_d) } if (opts->payload == 1 && i < 6) //make opt variable later on to toggle this { - fprintf (stderr, "%02X", b); + //fprintf (stderr, "%02X", b); } if (opts->payload == 1 && i == 6) //7th octet should only contain 1 bit? value will be either 0x00 or 0x80? { - fprintf (stderr, "%02X", b & 0x80); //7th octet should only contain 1 bit? + //fprintf (stderr, "%02X", b & 0x80); //7th octet should only contain 1 bit? } fputc (b, opts->mbe_out_f); } if (opts->payload == 1) { - fprintf(stderr, " err = [%X] [%X] ", state->errs, state->errs2); + //fprintf(stderr, " err = [%X] [%X] ", state->errs, state->errs2); } b = ambe_d[48]; fputc (b, opts->mbe_out_f); fflush (opts->mbe_out_f); } +void +PrintIMBEData (dsd_opts * opts, dsd_state * state, char *imbe_d) //for P25P1 and ProVoice +{ + int i, j, k; + unsigned char b; + unsigned char err; + + err = (unsigned char) state->errs2; + k = 0; + if (opts->payload == 1) //print IMBE info + { + fprintf(stderr, "\n IMBE "); + } + for (i = 0; i < 11; i++) + { + b = 0; + for (j = 0; j < 8; j++) + { + b = b << 1; + b = b + imbe_d[k]; + k++; + } + if (opts->payload == 1) + { + fprintf (stderr, "%02X", b); + } + } + + if (opts->payload == 1) + { + fprintf(stderr, " err = [%X] [%X] ", state->errs, state->errs2); + } + + //fprintf (stderr, "\n"); +} + void PrintAMBEData (dsd_opts * opts, dsd_state * state, char *ambe_d) //For DMR Stereo, may use this for NXDN too { @@ -111,10 +146,15 @@ PrintAMBEData (dsd_opts * opts, dsd_state * state, char *ambe_d) //For DMR Stere err = (unsigned char) state->errs2; k = 0; - if (opts->payload == 1 && opts->dmr_stereo == 1) //print AMBE info from DMR Stereo method + if (opts->dmr_stereo == 0) + { + fprintf (stderr, "\n"); + } + if (opts->payload == 1) //print AMBE info from DMR Stereo method { fprintf(stderr, " AMBE "); } + for (i = 0; i < 7; i++) //using 7 seems to break older amb files where it was 6, need to test 7 on 7 some more { b = 0; @@ -139,7 +179,11 @@ PrintAMBEData (dsd_opts * opts, dsd_state * state, char *ambe_d) //For DMR Stere } else fprintf(stderr, " err = [%X] [%X] ", state->errsR, state->errs2R); b = ambe_d[48]; - fprintf (stderr, "\n"); + if (opts->dmr_stereo == 1) + { + fprintf (stderr, "\n"); + } + } int diff --git a/src/dsd_mbe.c b/src/dsd_mbe.c index 28d23f0..fee763a 100644 --- a/src/dsd_mbe.c +++ b/src/dsd_mbe.c @@ -142,28 +142,38 @@ processMbeFrame (dsd_opts * opts, dsd_state * state, char imbe_fr[8][23], char a // 1 -P25p1 mbe_processImbe7200x4400Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, imbe_fr, imbe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality); - //mbe_processImbe7200x4400Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, imbe_fr, processed_block, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality); - + if (opts->payload == 1) + { + PrintIMBEData (opts, state, imbe_d); + } if (opts->mbe_out_f != NULL) - { - saveImbe4400Data (opts, state, imbe_d); - } + { + saveImbe4400Data (opts, state, imbe_d); + } } else if ((state->synctype == 14) || (state->synctype == 15)) { mbe_processImbe7100x4400Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, imbe7100_fr, imbe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality); + if (opts->payload == 1) + { + PrintIMBEData (opts, state, imbe_d); + } if (opts->mbe_out_f != NULL) - { - saveImbe4400Data (opts, state, imbe_d); - } + { + saveImbe4400Data (opts, state, imbe_d); + } } else if ((state->synctype == 6) || (state->synctype == 7)) { mbe_processAmbe3600x2400Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, ambe_fr, ambe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality); + if (opts->payload == 1) + { + PrintAMBEData (opts, state, ambe_d); + } if (opts->mbe_out_f != NULL) - { - saveAmbe2450Data (opts, state, ambe_d); - } + { + saveAmbe2450Data (opts, state, ambe_d); + } } else { @@ -223,11 +233,14 @@ processMbeFrame (dsd_opts * opts, dsd_state * state, char imbe_fr[8][23], char a PrintAMBEData (opts, state, ambe_d); } } - //if using older DMR method, dPMR, etc + //if using older DMR method, dPMR, NXDN? if (opts->dmr_stereo == 0) { mbe_processAmbe3600x2450Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, ambe_fr, ambe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality); - + if (opts->payload == 1) + { + PrintAMBEData (opts, state, ambe_d); + } if (opts->mbe_out_f != NULL) { saveAmbe2450Data (opts, state, ambe_d); diff --git a/src/nxdn_voice.c b/src/nxdn_voice.c index 04b12ab..abe1c8f 100644 --- a/src/nxdn_voice.c +++ b/src/nxdn_voice.c @@ -143,6 +143,10 @@ void processNXDNVoice (dsd_opts * opts, dsd_state * state) y++; z++; } + if (opts->payload == 1) + { + //fprintf(stderr, "\n"); + } processMbeFrame (opts, state, NULL, ambe_fr, NULL); } /* End for (j = 0; j < 4; j++) */