This merge introduces support for SIP calling. Contribution by
DL1HRC / Adi.
The build is enabled by using the -DWITH_CONTRIB_SIP_LOGIC=ON CMake
command line option.
After 65536 client connections the warning "Incoming UDP datagram from
XX.XX.XX.XX:YYYYY has invalid client id ZZZZZ" was logged for all new
client connections.
The code in this commit will refactor the logic core code to better
support code contributed from thirdparty developers.
- Logic cores are now loaded as plugins instead of being directly
linked.
- Custom TCL commands can be added to the EventHandler which is only
valid in one logic core.
- Manual pages can now be build outside of the doc/man subdirectory.
If the connection to the reflector is not up when a talk group is
locally activated, an announcemnt will tell the user that the reflector
is disconnected. The connection status will also be announced for the
"*" ReflectorLogic command.
Fixes#592
Reconnects that run in the backgrund when an Async::TcpPrioClient is
connected to a lower priority host is now tried once every minute on
second 00. This make it highly likely that all nodes reconnect to a
higher prio node at the same time when it comes online.
ReflectorLogic: Client side redundancy added by using DNS SRV records or
a locally specified list of hosts. Renamed configuration variables:
HOST -> HOSTS, PORT -> HOST_PORT. New configuration variables:
DNS_DOMAIN, HOST_PRIO, HOST_PRIO_INC, HOST_WEIGHT.
Rewritten the DNS resolver with support for more resource record types.
Specifically SRV record support were needed to implement the reflector
client side redundancy.
New class Async::TcpPrioClient for handling pools of servers to connect to.
The pool members can be specified using DNS SRV records or locally using the
HOSTS configuration variable.
New class Async::StateMachine used to build Hierarchial Finate State
Machines.
Add a new method, Async::TcpClientBase::remoteHostName(), so that we can
find out what hostname we used in the connect call.
Rename Async::TcpClientBase bind to setBindIp. Also add a bindIP()
method to access the bind address.
The TCL event handler functions remote_cmd_received and
remote_received_tg_updated can now be used in a logic core to act on
commands and talkgroup activations from another logic core.
The behaviour of talkgroup activation was not logical when using a
RepeaterLogic with OPEN_SQL_FLANK=CLOSE. The selected talkgroup would be
announced before the PTT was released and the next reception (the second
one) was filtered out by the MUTE_FIRST_TX_LOC=1 feature which made it a
bit confusing to understand when audio actually started to be sent to
the reflector.
Add new configuration variable VERBOSE to the ReflectorLogic that
choose if printouts from the reflector logic should be verbose or not.
At the moment the only difference is that reflector join/leave messages
will be suppressed if VERBOSE=0.
New CTCSS configuration variable CTCSS_SNR_OFFSETS (note the plural S) which
replace the old variable with a similar name. The new variable take a comma
separated list of frequency:offset pairs to support the use of multiple
CTCSS tone frequencies. The siglevdetcal utility has also been modified to
output the new variable format. If you are using just one CTCSS frequency
with a previously calibrated offet value you can keep using that. The older
configuration variable will not be removed and it still work in the same
way.
- New CTCSS tone detector, mode 4, added. This detector is faster and more
selective. It probably also is more resilient to interference. Have a look
at the svxlink.conf (5) manual page under CTCSS_MODE for more information.
- Tone detectors for 1750 Hz tone burst, CTCSS repeater activation,
CTCSS_TO_TG etc now use frequency estimation in addition to energy detection
for better selectivity.
- Improved squelch state logging with more details about the detection.
- All configured CTCSS fqs are now used in siglevdetcal (=average among
all for noise level compensation).
- Bugfix for CTCSS_OPEN_THRESH/CTCSS_CLOSE_THRESH handling
- CTCSS_DEBUG is now time controlled, prining 10 times per second
Accessing GPIO pins via the sysfs interface is deprecated. When
PTT_TYPE is set to GPIOD there are two new configuration variables
available to set GPIOD up, PTT_GPIOD_CHIP and PTT_GPIOD_LINE. When
SQL_DET is set to GPIOD there are two new configuration variables
available to set GPIOD up, SQL_GPIOD_CHIP, SQL_GPIOD_LINE. If SvxLink is
built with libgpiod >= 1.5 SQL_GPIOD_BIAS will also be available to set
PULLUP/PULLDOWN for a GPIO input (squelch) pin.
Closes#538
AudioDeviceUDP can now write zeros to the UDP connection on underflow.
That is, when the "audio device" is open but there is no audio to write
zeros will be written instead. Enable this behavior by setting the
environment variable ASYNC_AUDIO_UDP_ZEROFILL=1.