mirror of https://github.com/wb2osz/direwolf.git
Merge branch 'dev' into gpiod
This commit is contained in:
commit
a5d9fc31b5
|
@ -4,7 +4,7 @@ project(direwolf)
|
|||
|
||||
# configure version
|
||||
set(direwolf_VERSION_MAJOR "1")
|
||||
set(direwolf_VERSION_MINOR "7")
|
||||
set(direwolf_VERSION_MINOR "8")
|
||||
set(direwolf_VERSION_PATCH "0")
|
||||
set(direwolf_VERSION_SUFFIX "Development")
|
||||
|
||||
|
|
82
src/config.c
82
src/config.c
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// This file is part of Dire Wolf, an amateur radio packet TNC.
|
||||
//
|
||||
// Copyright (C) 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2021 John Langner, WB2OSZ
|
||||
// Copyright (C) 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2021, 2023 John Langner, WB2OSZ
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
|
@ -755,12 +755,13 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
|||
strlcpy (p_audio_config->adev[adevice].adevice_out, DEFAULT_ADEVICE, sizeof(p_audio_config->adev[adevice].adevice_out));
|
||||
|
||||
p_audio_config->adev[adevice].defined = 0;
|
||||
p_audio_config->adev[adevice].copy_from = -1;
|
||||
p_audio_config->adev[adevice].num_channels = DEFAULT_NUM_CHANNELS; /* -2 stereo */
|
||||
p_audio_config->adev[adevice].samples_per_sec = DEFAULT_SAMPLES_PER_SEC; /* -r option */
|
||||
p_audio_config->adev[adevice].bits_per_sample = DEFAULT_BITS_PER_SAMPLE; /* -8 option for 8 instead of 16 bits */
|
||||
}
|
||||
|
||||
p_audio_config->adev[0].defined = 1;
|
||||
p_audio_config->adev[0].defined = 2; // 2 means it was done by default and not the user's config file.
|
||||
|
||||
for (channel=0; channel<MAX_CHANS; channel++) {
|
||||
int ot, it;
|
||||
|
@ -925,10 +926,13 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
|||
|
||||
p_misc_config->maxframe_extended = AX25_K_MAXFRAME_EXTENDED_DEFAULT; /* Max frames to send before ACK. mod 128 "Window" size. */
|
||||
|
||||
p_misc_config->maxv22 = AX25_N2_RETRY_DEFAULT / 3; /* Max SABME before falling back to SABM. */
|
||||
p_misc_config->v20_addrs = NULL; /* Go directly to v2.0 for stations listed. */
|
||||
p_misc_config->maxv22 = AX25_N2_RETRY_DEFAULT / 3; /* Send SABME this many times before falling back to SABM. */
|
||||
p_misc_config->v20_addrs = NULL; /* Go directly to v2.0 for stations listed */
|
||||
/* without trying v2.2 first. */
|
||||
p_misc_config->v20_count = 0;
|
||||
p_misc_config->noxid_addrs = NULL; /* Don't send XID to these stations. */
|
||||
/* Might work with a partial v2.2 implementation */
|
||||
/* on the other end. */
|
||||
p_misc_config->noxid_count = 0;
|
||||
|
||||
/*
|
||||
|
@ -1013,6 +1017,10 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
|||
* ADEVICE plughw:2,0 plughw:3,0 -- different in/out for a channel or channel pair.
|
||||
* ADEVICE1 udp:7355 default -- from Software defined radio (SDR) via UDP.
|
||||
*
|
||||
* New in 1.8: Ability to map to another audio device.
|
||||
* This allows multiple modems (i.e. data speeds) on the same audio interface.
|
||||
*
|
||||
* ADEVICEn = n -- Copy from different already defined channel.
|
||||
*/
|
||||
|
||||
/* Note that ALSA name can contain comma such as hw:1,0 */
|
||||
|
@ -1040,17 +1048,42 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
|||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
// Do not allow same adevice to be defined more than once.
|
||||
// Overriding the default for adevice 0 is ok.
|
||||
// In that case definded was 2. That's why we check for 1, not just non-zero.
|
||||
|
||||
if (p_audio_config->adev[adevice].defined == 1) { // 1 means defined by user.
|
||||
text_color_set(DW_COLOR_ERROR);
|
||||
dw_printf ("Config file: ADEVICE%d can't be defined more than once. Line %d.\n", adevice, line);
|
||||
continue;
|
||||
}
|
||||
|
||||
p_audio_config->adev[adevice].defined = 1;
|
||||
|
||||
/* First channel of device is valid. */
|
||||
p_audio_config->chan_medium[ADEVFIRSTCHAN(adevice)] = MEDIUM_RADIO;
|
||||
// New case for release 1.8.
|
||||
|
||||
strlcpy (p_audio_config->adev[adevice].adevice_in, t, sizeof(p_audio_config->adev[adevice].adevice_in));
|
||||
strlcpy (p_audio_config->adev[adevice].adevice_out, t, sizeof(p_audio_config->adev[adevice].adevice_out));
|
||||
if (strcmp(t, "=") == 0) {
|
||||
t = split(NULL,0);
|
||||
if (t != NULL) {
|
||||
|
||||
t = split(NULL,0);
|
||||
if (t != NULL) {
|
||||
}
|
||||
|
||||
///////// to be continued.... FIXME
|
||||
|
||||
}
|
||||
else {
|
||||
/* First channel of device is valid. */
|
||||
// This might be changed to UDP or STDIN when the device name is examined.
|
||||
p_audio_config->chan_medium[ADEVFIRSTCHAN(adevice)] = MEDIUM_RADIO;
|
||||
|
||||
strlcpy (p_audio_config->adev[adevice].adevice_in, t, sizeof(p_audio_config->adev[adevice].adevice_in));
|
||||
strlcpy (p_audio_config->adev[adevice].adevice_out, t, sizeof(p_audio_config->adev[adevice].adevice_out));
|
||||
|
||||
t = split(NULL,0);
|
||||
if (t != NULL) {
|
||||
// Different audio devices for receive and transmit.
|
||||
strlcpy (p_audio_config->adev[adevice].adevice_out, t, sizeof(p_audio_config->adev[adevice].adevice_out));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2210,7 +2243,7 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
|||
else {
|
||||
p_audio_config->achan[channel].slottime = DEFAULT_SLOTTIME;
|
||||
text_color_set(DW_COLOR_ERROR);
|
||||
dw_printf ("Line %d: Invalid delay time for persist algorithm. Using %d.\n",
|
||||
dw_printf ("Line %d: Invalid delay time for persist algorithm. Using default %d.\n",
|
||||
line, p_audio_config->achan[channel].slottime);
|
||||
}
|
||||
}
|
||||
|
@ -2234,7 +2267,7 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
|||
else {
|
||||
p_audio_config->achan[channel].persist = DEFAULT_PERSIST;
|
||||
text_color_set(DW_COLOR_ERROR);
|
||||
dw_printf ("Line %d: Invalid probability for persist algorithm. Using %d.\n",
|
||||
dw_printf ("Line %d: Invalid probability for persist algorithm. Using default %d.\n",
|
||||
line, p_audio_config->achan[channel].persist);
|
||||
}
|
||||
}
|
||||
|
@ -2253,6 +2286,19 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
|||
}
|
||||
n = atoi(t);
|
||||
if (n >= 0 && n <= 255) {
|
||||
text_color_set(DW_COLOR_ERROR);
|
||||
if (n == 0) {
|
||||
dw_printf ("Line %d: Setting TXDELAY to 0 is a REALLY BAD idea if you want other stations to hear you.\n",
|
||||
line);
|
||||
dw_printf ("Line %d: See User Guide, \"Radio Channel - Transmit Timing\" for an explanation.\n",
|
||||
line);
|
||||
}
|
||||
if (n >= 100) {
|
||||
dw_printf ("Line %d: Keeping with tradition, going back to the 1980s, TXDELAY is in 10 millisecond units.\n",
|
||||
line);
|
||||
dw_printf ("Line %d: The value %d would be %.3f seconds which seems rather excessive. Are you sure you want that?\n",
|
||||
line, n, (double)n * 10. / 1000.);
|
||||
}
|
||||
p_audio_config->achan[channel].txdelay = n;
|
||||
}
|
||||
else {
|
||||
|
@ -2277,6 +2323,18 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
|||
}
|
||||
n = atoi(t);
|
||||
if (n >= 0 && n <= 255) {
|
||||
if (n == 0) {
|
||||
dw_printf ("Line %d: Setting TXTAIL to 0 is a REALLY BAD idea if you want other stations to hear you.\n",
|
||||
line);
|
||||
dw_printf ("Line %d: See User Guide, \"Radio Channel - Transmit Timing\" for an explanation.\n",
|
||||
line);
|
||||
}
|
||||
if (n >= 50) {
|
||||
dw_printf ("Line %d: Keeping with tradition, going back to the 1980s, TXTAIL is in 10 millisecond units.\n",
|
||||
line);
|
||||
dw_printf ("Line %d: The value %d would be %.3f seconds which seems rather excessive. Are you sure you want that?\n",
|
||||
line, n, (double)n * 10. / 1000.);
|
||||
}
|
||||
p_audio_config->achan[channel].txtail = n;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -186,7 +186,7 @@ static int d_u_opt = 0; /* "-d u" command line option to print UTF-8 also in h
|
|||
static int d_p_opt = 0; /* "-d p" option for dumping packets over radio. */
|
||||
|
||||
static int q_h_opt = 0; /* "-q h" Quiet, suppress the "heard" line with audio level. */
|
||||
static int q_d_opt = 0; /* "-q d" Quiet, suppress the printing of decoded of APRS packets. */
|
||||
static int q_d_opt = 0; /* "-q d" Quiet, suppress the printing of description of APRS packets. */
|
||||
|
||||
static int A_opt_ais_to_obj = 0; /* "-A" Convert received AIS to APRS "Object Report." */
|
||||
|
||||
|
@ -302,26 +302,27 @@ int main (int argc, char *argv[])
|
|||
text_color_init(t_opt);
|
||||
text_color_set(DW_COLOR_INFO);
|
||||
//dw_printf ("Dire Wolf version %d.%d (%s) BETA TEST 7\n", MAJOR_VERSION, MINOR_VERSION, __DATE__);
|
||||
//dw_printf ("Dire Wolf DEVELOPMENT version %d.%d %s (%s)\n", MAJOR_VERSION, MINOR_VERSION, "G", __DATE__);
|
||||
dw_printf ("Dire Wolf version %d.%d\n", MAJOR_VERSION, MINOR_VERSION);
|
||||
dw_printf ("Dire Wolf DEVELOPMENT version %d.%d %s (%s)\n", MAJOR_VERSION, MINOR_VERSION, "A", __DATE__);
|
||||
//dw_printf ("Dire Wolf version %d.%d\n", MAJOR_VERSION, MINOR_VERSION);
|
||||
|
||||
|
||||
#if defined(ENABLE_GPSD) || defined(USE_HAMLIB) || defined(USE_CM108) || USE_AVAHI_CLIENT || USE_MACOS_DNSSD
|
||||
#if defined(ENABLE_GPSD) || defined(USE_HAMLIB) || defined(USE_CM108) || USE_AVAHI_CLIENT || USE_MACOS_DNSSD || USE_GPIOD
|
||||
dw_printf ("Includes optional support for: ");
|
||||
#if defined(ENABLE_GPSD)
|
||||
#if defined(ENABLE_GPSD)
|
||||
dw_printf (" gpsd");
|
||||
#endif
|
||||
#if defined(USE_HAMLIB)
|
||||
#endif
|
||||
#if defined(USE_HAMLIB)
|
||||
dw_printf (" hamlib");
|
||||
#endif
|
||||
#if defined(USE_CM108)
|
||||
#endif
|
||||
#if defined(USE_CM108)
|
||||
dw_printf (" cm108-ptt");
|
||||
#endif
|
||||
#if defined(USE_GPIOD)
|
||||
#endif
|
||||
#if defined(USE_GPIOD)
|
||||
dw_printf (" libgpiod");
|
||||
#if (USE_AVAHI_CLIENT|USE_MACOS_DNSSD)
|
||||
#endif
|
||||
#if (USE_AVAHI_CLIENT|USE_MACOS_DNSSD)
|
||||
dw_printf (" dns-sd");
|
||||
#endif
|
||||
#endif
|
||||
dw_printf ("\n");
|
||||
#endif
|
||||
|
||||
|
@ -1710,7 +1711,7 @@ static void usage (char **argv)
|
|||
dw_printf (" d d = APRStt (DTMF to APRS object translation).\n");
|
||||
dw_printf (" -q Quiet (suppress output) options:\n");
|
||||
dw_printf (" h h = Heard line with the audio level.\n");
|
||||
dw_printf (" d d = Decoding of APRS packets.\n");
|
||||
dw_printf (" d d = Description of APRS packets.\n");
|
||||
dw_printf (" x x = Silence FX.25 information.\n");
|
||||
dw_printf (" -t n Text colors. 0=disabled. 1=default. 2,3,4,... alternatives.\n");
|
||||
dw_printf (" Use 9 to test compatibility with your terminal.\n");
|
||||
|
|
Loading…
Reference in New Issue