Merge branch 'dev' into gpiod

This commit is contained in:
wb2osz 2023-11-22 17:11:36 -05:00 committed by GitHub
commit a5d9fc31b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 88 additions and 29 deletions

View File

@ -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")

View File

@ -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;
/*
@ -1012,7 +1016,11 @@ void config_init (char *fname, struct audio_s *p_audio_config,
* ADEVICE plughw:1,0 -- same for in and out.
* 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;
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));
// New case for release 1.8.
t = split(NULL,0);
if (t != NULL) {
if (strcmp(t, "=") == 0) {
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 {

View File

@ -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");