Sample/Symbol Tweaks;

This commit is contained in:
lwvmobile 2023-11-22 07:50:53 -05:00
parent 696c9663dd
commit c8020c76ae
2 changed files with 48 additions and 14 deletions

View File

@ -1351,7 +1351,7 @@ usage ()
printf (" (NOTE: P25 Data Channels Not Enabled (no handling) \n");
printf (" -U <port> Enable RIGCTL/TCP; Set TCP Port for RIGCTL. (4532 on SDR++)\n");
printf (" -B <Hertz> Set RIGCTL Setmod Bandwidth in Hertz (0 - default - OFF)\n");
printf (" P25 - 7000-12000; P25 (QPSK) - 12000; NXDN48 - 7000; NXDN96: 9000; DMR - 7000; EDACS/PV - 12500;\n");
printf (" P25 - 12000; NXDN48 - 7000; NXDN96: 12000; DMR - 7000-12000; EDACS/PV - 12000-24000;\n"); //redo this, or check work, or whatever
printf (" May vary based on system stregnth, etc.\n");
printf (" -t <secs> Set Trunking or Scan Speed VC/sync loss hangtime in seconds. (default = 1 second)\n");
printf (" -9 Force Enable EDACS Standard or Networked Mode if Auto Detection Fails \n");

View File

@ -479,7 +479,8 @@ getSymbol (dsd_opts * opts, dsd_state * state, int have_sync)
if (state->samplesPerSymbol == 20) //nxdn 4800 baud 2400 symbol rate
{
if ((i >= 9) && (i <= 11))
// if ((i >= 9) && (i <= 11))
if ((i >= 7) && (i <= 13)) //7, 13 working good on multiple nxdn48, fewer random errors
{
sum += sample;
count++;
@ -498,12 +499,23 @@ getSymbol (dsd_opts * opts, dsd_state * state, int have_sync)
if (state->rf_mod == 0)
{
// 0: C4FM modulation
if ((i >= state->symbolCenter - 1) && (i <= state->symbolCenter + 2))
{
sum += sample;
count++;
}
if ((opts->frame_p25p1 == 1) && (i >= state->symbolCenter - 2) && (i <= state->symbolCenter + 2))
{
sum += sample;
count++;
}
//testing dmr may be slightly off compared to P25, particularly wav recording at narrower bandwidth?
else if ((opts->frame_dmr == 1) && (i >= state->symbolCenter - 1) && (i <= state->symbolCenter + 2))
{
sum += sample;
count++;
}
//anything else
else if ((i >= state->symbolCenter - 2) && (i <= state->symbolCenter + 2))
{
sum += sample;
count++;
}
#ifdef TRACE_DSD
if (i == state->symbolCenter - 1) {
@ -514,7 +526,18 @@ getSymbol (dsd_opts * opts, dsd_state * state, int have_sync)
}
#endif
}
else
else if (state->rf_mod == 1) //QPSK
{
//going one left, two on the right for QPSK, local system seems to favor that
//with same PPM setting used on C4FM, unsure if that works on other systems, just
//testing things now, not like QPSK works well here anyways
if ((i == state->symbolCenter - 1) || (i == state->symbolCenter + 2)) //1,2
{
sum += sample;
count++;
}
}
else //GFSK
{
// 1: QPSK modulation
// 2: GFSK modulation
@ -523,12 +546,23 @@ getSymbol (dsd_opts * opts, dsd_state * state, int have_sync)
// comes one sample too late.
// This change makes a significant improvement in the BER, at least for
// this file.
//if ((i == state->symbolCenter) || (i == state->symbolCenter + 1))
// if ((i == state->symbolCenter) || (i == state->symbolCenter + 1))
//GFSK should ideally be the same on the left and right, I would think
//I have not observed a system that would benefit from this alignment
if ((i == state->symbolCenter - 1) || (i == state->symbolCenter + 1))
{
sum += sample;
count++;
}
{
sum += sample;
count++;
}
//MISC Notes: When using RTL input, NXDN96 at BW:16 NXDN48 at BW:12
//I am beginning to suspect that RTL input is halfing the bandwidth, which
//is my original consclusion back when I was working on it last, unsure
//or the best course on that, could just be a rtl_fm flaw
//P25 may also work better at 16 as well now, hard to tell the difference since both are good
//DMR may not be any different on 12 or 16
//most likely though, this all will just depend on signal stregth more than anything
//as to how much BW you should set
#ifdef TRACE_DSD
//if (i == state->symbolCenter) {