mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-08 01:26:01 -05:00
125 lines
2.6 KiB
C
125 lines
2.6 KiB
C
#include "dsd.h"
|
|
#include "nxdn96_const.h"
|
|
|
|
void
|
|
processNXDN96 (dsd_opts * opts, dsd_state * state)
|
|
{
|
|
int i, j, k, dibit;
|
|
|
|
char ambe_fr[4][24];
|
|
const int *w, *x, *y, *z;
|
|
|
|
if (opts->errorbars == 1)
|
|
{
|
|
printf ("VOICE e:");
|
|
}
|
|
|
|
#ifdef NXDN_DUMP
|
|
printf ("\n");
|
|
#endif
|
|
|
|
for (k = 0; k < 4; k++)
|
|
{
|
|
for (i = 0; i < 222; i++)
|
|
{
|
|
dibit = getDibit (opts, state);
|
|
#ifdef NXDN_DUMP
|
|
printf ("%c", dibit + 48);
|
|
#endif
|
|
}
|
|
#ifdef NXDN_DUMP
|
|
printf (" ");
|
|
#endif
|
|
|
|
if (k < 3)
|
|
{
|
|
for (j = 0; j < 4; j++)
|
|
{
|
|
w = n96W;
|
|
x = n96X;
|
|
y = n96Y;
|
|
z = n96Z;
|
|
for (i = 0; i < 36; i++)
|
|
{
|
|
dibit = getDibit (opts, state);
|
|
#ifdef NXDN_DUMP
|
|
printf ("%c", dibit + 48);
|
|
#endif
|
|
ambe_fr[*w][*x] = (1 & (dibit >> 1)); // bit 1
|
|
ambe_fr[*y][*z] = (1 & dibit); // bit 0
|
|
w++;
|
|
x++;
|
|
y++;
|
|
z++;
|
|
}
|
|
processMbeFrame (opts, state, NULL, ambe_fr, NULL);
|
|
#ifdef NXDN_DUMP
|
|
printf (" ");
|
|
#endif
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (j = 0; j < 3; j++) // we skip the last voice frame until frame sync can work with < 24 symbols
|
|
{
|
|
w = n96W;
|
|
x = n96X;
|
|
y = n96Y;
|
|
z = n96Z;
|
|
for (i = 0; i < 36; i++)
|
|
{
|
|
dibit = getDibit (opts, state);
|
|
#ifdef NXDN_DUMP
|
|
printf ("%c", dibit + 48);
|
|
#endif
|
|
ambe_fr[*w][*x] = (1 & (dibit >> 1)); // bit 1
|
|
ambe_fr[*y][*z] = (1 & dibit); // bit 0
|
|
w++;
|
|
x++;
|
|
y++;
|
|
z++;
|
|
}
|
|
processMbeFrame (opts, state, NULL, ambe_fr, NULL);
|
|
#ifdef NXDN_DUMP
|
|
printf (" ");
|
|
#endif
|
|
}
|
|
}
|
|
|
|
if (k < 3)
|
|
{
|
|
for (i = 0; i < 18; i++)
|
|
{
|
|
dibit = getDibit (opts, state);
|
|
#ifdef NXDN_DUMP
|
|
printf ("%c", dibit + 48);
|
|
#endif
|
|
}
|
|
#ifdef NXDN_DUMP
|
|
printf (" ");
|
|
#endif
|
|
|
|
}
|
|
else
|
|
{
|
|
for (i = 0; i < 30; i++)
|
|
{
|
|
dibit = getDibit (opts, state);
|
|
#ifdef NXDN_DUMP
|
|
printf ("%c", dibit + 48);
|
|
#endif
|
|
}
|
|
}
|
|
}
|
|
|
|
#ifdef NXDN_DUMP
|
|
printf ("\n");
|
|
#endif
|
|
|
|
if (opts->errorbars == 1)
|
|
{
|
|
printf ("\n");
|
|
}
|
|
|
|
}
|