Call Alert; Call History Bug Fix; Minor Tweaks
Call Alert (-a or toggle on/off in ncurses) --beep sound on radio id change when using ncurses terminal (tied to call history array) ---need to copy tone8.wav and tone24.wav files to /usr/share/ directory and chmod 777 them. ---updated all auto install scripts to copy and chmod as appropriate ----iz4tow, need to update windows tutorials for the wav files, else they won't play Tweaks/Bug Fix to Call History (specifically DMR) to only set src ids on voice sync, and not on data sync Manually Set P2 Parameters at CLI (-X BEE00ABC123) -- use -X (capital X) and then enter WACN/SYSID/CC altogether --- feature already available in ncurses terminal menu Update Linux Install Instructions and auto installers to copy/paste wav files into /usr/share/ directory Other Minor Tweaks
This commit is contained in:
parent
370d6be28e
commit
f3d2dbb4dd
14
README.md
14
README.md
|
|
@ -186,6 +186,10 @@ git branch -a
|
||||||
git checkout remotes/origin/pulseaudio
|
git checkout remotes/origin/pulseaudio
|
||||||
git checkout -b pulseaudio
|
git checkout -b pulseaudio
|
||||||
git branch -a #double check to see if you are on pulseaudio branch
|
git branch -a #double check to see if you are on pulseaudio branch
|
||||||
|
sudo cp tone8.wav /usr/share/
|
||||||
|
sudo cp tone24.wav /usr/share/
|
||||||
|
sudo chmod 777 /usr/share/tone8.wav
|
||||||
|
sudo chmod 777 /usr/share/tone24.wav
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake ..
|
cmake ..
|
||||||
|
|
@ -216,6 +220,16 @@ make -j `nproc`
|
||||||
sudo make install
|
sudo make install
|
||||||
sudo ldconfig
|
sudo ldconfig
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If the call alert wav files aren't playing, then make sure to run the following in the dsd-fme folder to copy the wav files to the /usr/share/ folder and give them adequate permission to be accessed.
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo cp tone8.wav /usr/share/
|
||||||
|
sudo cp tone24.wav /usr/share/
|
||||||
|
sudo chmod 777 /usr/share/tone8.wav
|
||||||
|
sudo chmod 777 /usr/share/tone24.wav
|
||||||
|
```
|
||||||
|
|
||||||
# Join the Conversation
|
# Join the Conversation
|
||||||
|
|
||||||
Want to help drive the direction of this project and read more about the latest updates and releases to DSD-FME? Then join the conversation on the 'unofficial official' [DSD-FME](https://forums.radioreference.com/threads/dsd-fme.438137/ "DSD-FME") Forum Thread on the Radio Reference Forums.
|
Want to help drive the direction of this project and read more about the latest updates and releases to DSD-FME? Then join the conversation on the 'unofficial official' [DSD-FME](https://forums.radioreference.com/threads/dsd-fme.438137/ "DSD-FME") Forum Thread on the Radio Reference Forums.
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,10 @@ git branch -a
|
||||||
git checkout remotes/origin/pulseaudio
|
git checkout remotes/origin/pulseaudio
|
||||||
git checkout -b pulseaudio
|
git checkout -b pulseaudio
|
||||||
git branch -a #double check to see if you are on pulseaudio branch
|
git branch -a #double check to see if you are on pulseaudio branch
|
||||||
|
sudo cp tone8.wav /usr/share/
|
||||||
|
sudo cp tone24.wav /usr/share/
|
||||||
|
sudo chmod 777 /usr/share/tone8.wav
|
||||||
|
sudo chmod 777 /usr/share/tone24.wav
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake ..
|
cmake ..
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,10 @@ git branch -a
|
||||||
git checkout remotes/origin/pulseaudio
|
git checkout remotes/origin/pulseaudio
|
||||||
git checkout -b pulseaudio
|
git checkout -b pulseaudio
|
||||||
git branch -a #double check to see if you are on pulseaudio branch
|
git branch -a #double check to see if you are on pulseaudio branch
|
||||||
|
sudo cp tone8.wav /usr/share/
|
||||||
|
sudo cp tone24.wav /usr/share/
|
||||||
|
sudo chmod 777 /usr/share/tone8.wav
|
||||||
|
sudo chmod 777 /usr/share/tone24.wav
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake ..
|
cmake ..
|
||||||
|
|
|
||||||
|
|
@ -356,6 +356,7 @@ typedef struct
|
||||||
short int aggressive_framesync;
|
short int aggressive_framesync;
|
||||||
|
|
||||||
FILE *symbolfile;
|
FILE *symbolfile;
|
||||||
|
int call_alert;
|
||||||
|
|
||||||
} dsd_opts;
|
} dsd_opts;
|
||||||
|
|
||||||
|
|
@ -593,7 +594,7 @@ typedef struct
|
||||||
int p2_is_lcch; //flag to tell us when a frame is lcch and not sacch
|
int p2_is_lcch; //flag to tell us when a frame is lcch and not sacch
|
||||||
|
|
||||||
//experimental symbol file capture read throttle
|
//experimental symbol file capture read throttle
|
||||||
unsigned long long int symbol_throttle; //throttle speed
|
int symbol_throttle; //throttle speed
|
||||||
int use_throttle; //only use throttle if set to 1
|
int use_throttle; //only use throttle if set to 1
|
||||||
|
|
||||||
//dstar header for ncurses
|
//dstar header for ncurses
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
sudo cp tone8.wav /usr/share/
|
||||||
|
sudo cp tone24.wav /usr/share/
|
||||||
|
sudo chmod 777 /usr/share/tone8.wav
|
||||||
|
sudo chmod 777 /usr/share/tone24.wav
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake ..
|
cmake ..
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@ sleep 1
|
||||||
##Open your clone folder##
|
##Open your clone folder##
|
||||||
git pull https://github.com/lwvmobile/dsd-fme pulseaudio
|
git pull https://github.com/lwvmobile/dsd-fme pulseaudio
|
||||||
sleep 2
|
sleep 2
|
||||||
|
sudo cp tone8.wav /usr/share/
|
||||||
|
sudo cp tone24.wav /usr/share/
|
||||||
|
sudo chmod 777 /usr/share/tone8.wav
|
||||||
|
sudo chmod 777 /usr/share/tone24.wav
|
||||||
##cd into your build folder##
|
##cd into your build folder##
|
||||||
cd build
|
cd build
|
||||||
##cmake usually isn't necesary, but could be if I update the cmakelist.txt
|
##cmake usually isn't necesary, but could be if I update the cmakelist.txt
|
||||||
|
|
|
||||||
|
|
@ -1757,6 +1757,32 @@ void ProcessCSBK(dsd_opts * opts, dsd_state * state, uint8_t info[196], uint8_t
|
||||||
sprintf(state->dmr_branding, " Hytera XPT ");
|
sprintf(state->dmr_branding, " Hytera XPT ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Testing CSBK Voice Call on Tait //CSBK Protect RID ILLEGALLY_PARKED
|
||||||
|
// if ((IrrecoverableErrors == 0) && CRCCorrect)
|
||||||
|
// {
|
||||||
|
// if (DmrDataByte[0] == 0xAF)
|
||||||
|
// {
|
||||||
|
// if (state->currentslot == 0)
|
||||||
|
// {
|
||||||
|
// state->lastsrc = (DmrDataByte[4] << 16) | (DmrDataByte[5] << 8) | (DmrDataByte[6] << 0);
|
||||||
|
// state->lasttg = (DmrDataByte[7] << 16) | (DmrDataByte[8] << 8) | (DmrDataByte[9] << 0);
|
||||||
|
// fprintf (stderr, "%s", KGRN);
|
||||||
|
// fprintf (stderr, "\n SLOT %d ", state->currentslot+1);
|
||||||
|
// fprintf(stderr, "TGT=%u SRC=%u ", state->lasttg, state->lastsrc);
|
||||||
|
// fprintf(stderr, " CSBK Voice LC??");
|
||||||
|
// }
|
||||||
|
// if (state->currentslot == 1)
|
||||||
|
// {
|
||||||
|
// state->lastsrcR = (DmrDataByte[4] << 16) | (DmrDataByte[5] << 8) | (DmrDataByte[6] << 0);
|
||||||
|
// state->lasttgR = (DmrDataByte[7] << 16) | (DmrDataByte[8] << 8) | (DmrDataByte[9] << 0);
|
||||||
|
// fprintf (stderr, "%s", KGRN);
|
||||||
|
// fprintf (stderr, "\n SLOT %d ", state->currentslot+1);
|
||||||
|
// fprintf(stderr, "TGT=%u SRC=%u ", state->lasttgR, state->lastsrcR);
|
||||||
|
// fprintf(stderr, " CSBK Voice LC??");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
//Full
|
//Full
|
||||||
if (opts->payload == 1)
|
if (opts->payload == 1)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ comp (const void *a, const void *b)
|
||||||
//struct for checking existence of directory to write to
|
//struct for checking existence of directory to write to
|
||||||
struct stat st = {0};
|
struct stat st = {0};
|
||||||
char wav_file_directory[1024] = {0};
|
char wav_file_directory[1024] = {0};
|
||||||
|
unsigned long long int p2vars = 0;
|
||||||
|
|
||||||
void
|
void
|
||||||
noCarrier (dsd_opts * opts, dsd_state * state)
|
noCarrier (dsd_opts * opts, dsd_state * state)
|
||||||
|
|
@ -320,6 +321,8 @@ initOpts (dsd_opts * opts)
|
||||||
opts->inverted_p2 = 0;
|
opts->inverted_p2 = 0;
|
||||||
opts->p2counter = 0;
|
opts->p2counter = 0;
|
||||||
|
|
||||||
|
opts->call_alert = 0; //call alert beeper for ncurses
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -403,6 +406,8 @@ initState (dsd_state * state)
|
||||||
state->tgcount = 0;
|
state->tgcount = 0;
|
||||||
state->lasttg = 0;
|
state->lasttg = 0;
|
||||||
state->lastsrc = 0;
|
state->lastsrc = 0;
|
||||||
|
state->lasttgR = 0;
|
||||||
|
state->lastsrcR = 0;
|
||||||
state->nac = 0;
|
state->nac = 0;
|
||||||
state->errs = 0;
|
state->errs = 0;
|
||||||
state->errs2 = 0;
|
state->errs2 = 0;
|
||||||
|
|
@ -614,7 +619,7 @@ usage ()
|
||||||
printf (" -z <num> Frame rate for datascope\n");
|
printf (" -z <num> Frame rate for datascope\n");
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
printf ("Input/Output options:\n");
|
printf ("Input/Output options:\n");
|
||||||
printf (" -i <device> Audio input device (default is pulse audio, \n - for piped stdin, rtl for rtl device)\n");
|
printf (" -i <device> Audio input device (default is pulse audio), \n - for piped stdin, rtl for rtl device,\n filename.bin for OP25/FME capture bin files\n");
|
||||||
printf (" -o <device> Audio output device (default is pulse audio)\n");
|
printf (" -o <device> Audio output device (default is pulse audio)\n");
|
||||||
printf (" -d <dir> Create mbe data files, use this directory\n");
|
printf (" -d <dir> Create mbe data files, use this directory\n");
|
||||||
printf (" -r <files> Read/Play saved mbe data from file(s)\n");
|
printf (" -r <files> Read/Play saved mbe data from file(s)\n");
|
||||||
|
|
@ -623,7 +628,9 @@ usage ()
|
||||||
printf (" -T Enable Per Call WAV file saving in XDMA and NXDN decoding classes\n");
|
printf (" -T Enable Per Call WAV file saving in XDMA and NXDN decoding classes\n");
|
||||||
printf (" (Per Call can only be used in Ncurses Terminal!)\n");
|
printf (" (Per Call can only be used in Ncurses Terminal!)\n");
|
||||||
printf (" (Running in console will use static wav files)\n");
|
printf (" (Running in console will use static wav files)\n");
|
||||||
printf (" -n Throttle Symbol Capture Bin Input");
|
printf (" -a Enable Call Alert Beep (NCurses Terminal Only)\n");
|
||||||
|
printf (" (Warning! Might be annoying.)");
|
||||||
|
printf (" -n Throttle Symbol Capture Bin Input\n");
|
||||||
printf (" (useful when reading files still being written to by OP25)");
|
printf (" (useful when reading files still being written to by OP25)");
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
printf ("RTL-SDR options:\n");
|
printf ("RTL-SDR options:\n");
|
||||||
|
|
@ -662,11 +669,13 @@ usage ()
|
||||||
printf (" * denotes frame types that cannot be auto-detected.\n");
|
printf (" * denotes frame types that cannot be auto-detected.\n");
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
printf ("Advanced Decoder options:\n");
|
printf ("Advanced Decoder options:\n");
|
||||||
|
printf (" -X <hex> Manually Set P2 Parameters (WACN, SYSID, CC/NAC)\n");
|
||||||
|
printf (" (-X BEE00ABC123)\n");
|
||||||
// printf (" -A <num> QPSK modulation auto detection threshold (default=26)\n");
|
// printf (" -A <num> QPSK modulation auto detection threshold (default=26)\n");
|
||||||
printf (" -S <num> Symbol buffer size for QPSK decision point tracking\n");
|
// printf (" -S <num> Symbol buffer size for QPSK decision point tracking\n");
|
||||||
printf (" (default=36)\n");
|
// printf (" (default=36)\n");
|
||||||
printf (" -M <num> Min/Max buffer size for QPSK decision point tracking\n");
|
// printf (" -M <num> Min/Max buffer size for QPSK decision point tracking\n");
|
||||||
printf (" (default=15)\n");
|
// printf (" (default=15)\n");
|
||||||
// printf (" -F Enable DMR TDMA Stereo Passive Frame Sync\n");
|
// printf (" -F Enable DMR TDMA Stereo Passive Frame Sync\n");
|
||||||
// printf (" This feature will attempt to resync less often due to excessive voice errors\n");
|
// printf (" This feature will attempt to resync less often due to excessive voice errors\n");
|
||||||
// printf (" Use if skipping occurs, but may cause wonky audio due to loss of good sync\n");
|
// printf (" Use if skipping occurs, but may cause wonky audio due to loss of good sync\n");
|
||||||
|
|
@ -918,7 +927,7 @@ main (int argc, char **argv)
|
||||||
exitflag = 0;
|
exitflag = 0;
|
||||||
signal (SIGINT, sigfun);
|
signal (SIGINT, sigfun);
|
||||||
|
|
||||||
while ((c = getopt (argc, argv, "haep:P:qstv:z:i:o:d:c:g:nw:B:C:R:f:m:u:x:A:S:M:G:D:L:V:U:Y:K:H:NQWrlZTF")) != -1)
|
while ((c = getopt (argc, argv, "haep:P:qstv:z:i:o:d:c:g:nw:B:C:R:f:m:u:x:A:S:M:G:D:L:V:U:Y:K:H:X:NQWrlZTF")) != -1)
|
||||||
{
|
{
|
||||||
opterr = 0;
|
opterr = 0;
|
||||||
switch (c)
|
switch (c)
|
||||||
|
|
@ -928,7 +937,8 @@ main (int argc, char **argv)
|
||||||
exit (0);
|
exit (0);
|
||||||
case 'a':
|
case 'a':
|
||||||
//printPortAudioDevices();
|
//printPortAudioDevices();
|
||||||
exit(0);
|
//exit(0);
|
||||||
|
opts.call_alert = 1;
|
||||||
case 'e':
|
case 'e':
|
||||||
opts.errorbars = 1;
|
opts.errorbars = 1;
|
||||||
opts.datascope = 0;
|
opts.datascope = 0;
|
||||||
|
|
@ -1030,6 +1040,21 @@ main (int argc, char **argv)
|
||||||
state.K1 = state.H; //shim
|
state.K1 = state.H; //shim
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//manually set Phase 2 TDMA WACN/SYSID/CC
|
||||||
|
case 'X':
|
||||||
|
sscanf (optarg, "%llX", &p2vars);
|
||||||
|
if (p2vars > 0)
|
||||||
|
{
|
||||||
|
state.p2_wacn = p2vars >> 24;
|
||||||
|
state.p2_sysid = (p2vars >> 12) & 0xFFF;
|
||||||
|
state.p2_cc = p2vars & 0xFFF;
|
||||||
|
}
|
||||||
|
if (state.p2_wacn != 0 && state.p2_sysid != 0 && state.p2_cc != 0)
|
||||||
|
{
|
||||||
|
state.p2_hardset = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 'G': //Set rtl device gain
|
case 'G': //Set rtl device gain
|
||||||
sscanf (optarg, "%d", &opts.rtl_gain_value); //multiple value by ten to make it consitent with the way rtl_fm really works
|
sscanf (optarg, "%d", &opts.rtl_gain_value); //multiple value by ten to make it consitent with the way rtl_fm really works
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,61 @@ char * DMRBusrtTypes[32] = {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void beeper (dsd_opts * opts, dsd_state * state, int type)
|
||||||
|
{
|
||||||
|
FILE *beep;
|
||||||
|
char wav_name[1024] = {0};
|
||||||
|
if (opts->dmr_stereo == 1)
|
||||||
|
{
|
||||||
|
//24k tone wav file
|
||||||
|
strncpy(wav_name, "/usr/share/tone24.wav", 1023);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//8k tone
|
||||||
|
strncpy(wav_name, "/usr/share/tone8.wav", 1023);
|
||||||
|
}
|
||||||
|
wav_name[1023] = '\0';
|
||||||
|
struct stat stat_buf;
|
||||||
|
if (stat(wav_name, &stat_buf) == 0)
|
||||||
|
{
|
||||||
|
beep = fopen (wav_name, "ro");
|
||||||
|
uint8_t buf[1024] = {0};
|
||||||
|
short blip = 0;
|
||||||
|
int loop = 1;
|
||||||
|
while (loop == 1)
|
||||||
|
{
|
||||||
|
fread(buf, sizeof(buf), 1, beep);
|
||||||
|
if ( feof (beep) )
|
||||||
|
{
|
||||||
|
loop = 0;
|
||||||
|
}
|
||||||
|
if (loop == 1)
|
||||||
|
{
|
||||||
|
//only beep on R if dmr_stereo is active and slot 2, else beep on L
|
||||||
|
if (type == 0 && state->dmr_stereo == 1)
|
||||||
|
{
|
||||||
|
pa_simple_write(opts->pulse_digi_dev_out, buf, sizeof(buf), NULL);
|
||||||
|
}
|
||||||
|
if (type == 1 && state->dmr_stereo == 1)
|
||||||
|
{
|
||||||
|
pa_simple_write(opts->pulse_digi_dev_outR, buf, sizeof(buf), NULL);
|
||||||
|
}
|
||||||
|
if (state->dmr_stereo == 0)
|
||||||
|
{
|
||||||
|
pa_simple_write(opts->pulse_digi_dev_out, buf, sizeof(buf), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose (beep);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
char * getDateN(void) {
|
char * getDateN(void) {
|
||||||
char datename[99]; //bug in 32-bit Ubuntu when using date in filename, date is garbage text
|
char datename[99]; //bug in 32-bit Ubuntu when using date in filename, date is garbage text
|
||||||
char * curr2;
|
char * curr2;
|
||||||
|
|
@ -209,7 +264,7 @@ char *choicesc[] = {
|
||||||
"Replay Last Symbol Capture Bin",
|
"Replay Last Symbol Capture Bin",
|
||||||
"Stop & Close Symbol Capture Bin Playback",
|
"Stop & Close Symbol Capture Bin Playback",
|
||||||
"Stop & Close Symbol Capture Bin Saving",
|
"Stop & Close Symbol Capture Bin Saving",
|
||||||
" ",
|
"Toggle Call Alert Beep ",
|
||||||
"Resume Decoding"
|
"Resume Decoding"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -621,6 +676,40 @@ void ncursesMenu (dsd_opts * opts, dsd_state * state)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (choicec == 7) //RTL UDP Retune
|
||||||
|
{
|
||||||
|
//read in new rtl frequency
|
||||||
|
#ifdef USE_RTLSDR
|
||||||
|
entry_win = newwin(6, WIDTH+18, starty+10, startx+10);
|
||||||
|
box (entry_win, 0, 0);
|
||||||
|
mvwprintw(entry_win, 2, 2, " Enter Frequency in Hz (851.8 MHz is 851800000 Hz) ");
|
||||||
|
mvwprintw(entry_win, 3, 3, " ");
|
||||||
|
echo();
|
||||||
|
refresh();
|
||||||
|
wscanw(entry_win, "%d", &opts->rtlsdr_center_freq); //ld, or lld?
|
||||||
|
noecho();
|
||||||
|
//do the thing with the thing
|
||||||
|
data[0] = 0;
|
||||||
|
data[1] = opts->rtlsdr_center_freq & 0xFF;
|
||||||
|
data[2] = (opts->rtlsdr_center_freq >> 8) & 0xFF;
|
||||||
|
data[3] = (opts->rtlsdr_center_freq >> 16) & 0xFF;
|
||||||
|
data[4] = (opts->rtlsdr_center_freq >> 24) & 0xFF;
|
||||||
|
|
||||||
|
temp_freq = opts->rtlsdr_center_freq;
|
||||||
|
#endif
|
||||||
|
choicec = 18;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (choicec == 8)
|
||||||
|
{
|
||||||
|
//vacant box
|
||||||
|
}
|
||||||
|
|
||||||
|
if (choicec == 9)
|
||||||
|
{
|
||||||
|
//vacant box
|
||||||
|
}
|
||||||
|
|
||||||
if (choicec == 10)
|
if (choicec == 10)
|
||||||
{
|
{
|
||||||
if (opts->ncurses_compact == 0)
|
if (opts->ncurses_compact == 0)
|
||||||
|
|
@ -728,28 +817,14 @@ void ncursesMenu (dsd_opts * opts, dsd_state * state)
|
||||||
choicec = 18; //exit
|
choicec = 18; //exit
|
||||||
}
|
}
|
||||||
|
|
||||||
if (choicec == 7) //RTL UDP Retune
|
//toggle call alert beep
|
||||||
|
if (choicec == 17)
|
||||||
{
|
{
|
||||||
//read in new rtl frequency
|
if (opts->call_alert == 0)
|
||||||
#ifdef USE_RTLSDR
|
{
|
||||||
entry_win = newwin(6, WIDTH+18, starty+10, startx+10);
|
opts->call_alert = 1;
|
||||||
box (entry_win, 0, 0);
|
}
|
||||||
mvwprintw(entry_win, 2, 2, " Enter Frequency in Hz (851.8 MHz is 851800000 Hz) ");
|
else opts->call_alert = 0;
|
||||||
mvwprintw(entry_win, 3, 3, " ");
|
|
||||||
echo();
|
|
||||||
refresh();
|
|
||||||
wscanw(entry_win, "%d", &opts->rtlsdr_center_freq); //ld, or lld?
|
|
||||||
noecho();
|
|
||||||
//do the thing with the thing
|
|
||||||
data[0] = 0;
|
|
||||||
data[1] = opts->rtlsdr_center_freq & 0xFF;
|
|
||||||
data[2] = (opts->rtlsdr_center_freq >> 8) & 0xFF;
|
|
||||||
data[3] = (opts->rtlsdr_center_freq >> 16) & 0xFF;
|
|
||||||
data[4] = (opts->rtlsdr_center_freq >> 24) & 0xFF;
|
|
||||||
|
|
||||||
temp_freq = opts->rtlsdr_center_freq;
|
|
||||||
#endif
|
|
||||||
choicec = 18;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (choicec != 0 && choicec != 18 ) //return to last menu
|
if (choicec != 0 && choicec != 18 ) //return to last menu
|
||||||
|
|
@ -765,6 +840,7 @@ void ncursesMenu (dsd_opts * opts, dsd_state * state)
|
||||||
//wrefresh(menu_win);
|
//wrefresh(menu_win);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (choicec == 18) //exit both menus
|
if (choicec == 18) //exit both menus
|
||||||
{
|
{
|
||||||
//exit
|
//exit
|
||||||
|
|
@ -1495,7 +1571,8 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state)
|
||||||
}
|
}
|
||||||
|
|
||||||
//DMR SRC
|
//DMR SRC
|
||||||
if ( (lls == 12 || lls == 13 || lls == 10 || lls == 11 || lls == 32) )
|
// if ( (lls == 12 || lls == 13 || lls == 10 || lls == 11 || lls == 32) )
|
||||||
|
if ( (lls == 12 || lls == 11 || lls == 32) )
|
||||||
{
|
{
|
||||||
if (state->dmrburstL == 16 && state->lastsrc > 0) //state->currentslot == 0 &&
|
if (state->dmrburstL == 16 && state->lastsrc > 0) //state->currentslot == 0 &&
|
||||||
{
|
{
|
||||||
|
|
@ -1506,17 +1583,15 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state)
|
||||||
{
|
{
|
||||||
rdR = state->lastsrcR;
|
rdR = state->lastsrcR;
|
||||||
}
|
}
|
||||||
//move to seperate P25 version plz
|
|
||||||
//opts->p25enc = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//DMR TG
|
//DMR TG
|
||||||
if ( (lls == 12 || lls == 13 || lls == 10 || lls == 11 || lls == 32) )
|
if ( (lls == 12 || lls == 11 || lls == 32) )
|
||||||
{
|
{
|
||||||
if (state->dmrburstL == 16 && state->lasttg > 0) //state->currentslot == 0 &&
|
if (state->dmrburstL == 16 && state->lasttg > 0) //state->currentslot == 0 &&
|
||||||
{
|
{
|
||||||
tg = state->lasttg;
|
tg = state->lasttg;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->dmrburstR == 16 && state->lasttgR > 0) //state->currentslot == 1 &&
|
if (state->dmrburstR == 16 && state->lasttgR > 0) //state->currentslot == 1 &&
|
||||||
|
|
@ -1524,7 +1599,6 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state)
|
||||||
tgR = state->lasttgR;
|
tgR = state->lasttgR;
|
||||||
|
|
||||||
}
|
}
|
||||||
//opts->p25enc = 0;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1629,10 +1703,15 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state)
|
||||||
openWavOutFileL (opts, state); //testing for now, will want to move to per call later
|
openWavOutFileL (opts, state); //testing for now, will want to move to per call later
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts->call_alert == 1)
|
||||||
|
{
|
||||||
|
beeper (opts, state, 0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//DMR MS
|
//DMR MS
|
||||||
if ( call_matrix[9][2] != rd && (lls == 32 || lls == 33 || lls == 34) )
|
if ( call_matrix[9][2] != rd && lls == 32)
|
||||||
{
|
{
|
||||||
|
|
||||||
for (short int k = 0; k < 10; k++)
|
for (short int k = 0; k < 10; k++)
|
||||||
|
|
@ -1661,10 +1740,15 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state)
|
||||||
openWavOutFileL (opts, state); //testing for now, will want to move to per call later
|
openWavOutFileL (opts, state); //testing for now, will want to move to per call later
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts->call_alert == 1)
|
||||||
|
{
|
||||||
|
beeper (opts, state, 0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//DMR BS Slot 1 - matrix 0-4
|
//DMR BS Slot 1 - matrix 0-4
|
||||||
if ( call_matrix[4][2] != rd && (lls == 12 || lls == 13 || lls == 10 || lls == 11 || lls == 35 || lls == 36) )
|
if ( call_matrix[4][2] != rd && (lls == 11 || lls == 12 || lls == 35 || lls == 36) )
|
||||||
{
|
{
|
||||||
|
|
||||||
for (short int k = 0; k < 4; k++)
|
for (short int k = 0; k < 4; k++)
|
||||||
|
|
@ -1694,10 +1778,15 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state)
|
||||||
openWavOutFileL (opts, state); //testing for now, will want to move to per call later
|
openWavOutFileL (opts, state); //testing for now, will want to move to per call later
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts->call_alert == 1)
|
||||||
|
{
|
||||||
|
beeper (opts, state, 0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//DMR BS Slot 2 - matrix 5-9
|
//DMR BS Slot 2 - matrix 5-9
|
||||||
if ( call_matrix[9][2] != rdR && (lls == 12 || lls == 13 || lls == 10 || lls == 11 || lls == 35 || lls == 36) )
|
if ( call_matrix[9][2] != rdR && (lls == 11 || lls == 12 || lls == 35 || lls == 36) )
|
||||||
{
|
{
|
||||||
|
|
||||||
for (short int k = 5; k < 9; k++)
|
for (short int k = 5; k < 9; k++)
|
||||||
|
|
@ -1726,6 +1815,11 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state)
|
||||||
openWavOutFileR (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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts->call_alert == 1)
|
||||||
|
{
|
||||||
|
beeper (opts, state, 1);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//P25 P1
|
//P25 P1
|
||||||
|
|
@ -1757,6 +1851,11 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state)
|
||||||
openWavOutFileL (opts, state); //testing for now, will want to move to per call later
|
openWavOutFileL (opts, state); //testing for now, will want to move to per call later
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts->call_alert == 1)
|
||||||
|
{
|
||||||
|
beeper (opts, state, 0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Start Printing Section
|
//Start Printing Section
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Reference in New Issue