Cort Buffington
8bd467598c
Debounce link-mode external-audio underrun before dropping PTT
...
Under [FM] LinkMode=1, linkStateMachine() set m_extSignal false the
instant a single ext-audio sample went missing, with no debounce --
unlike the non-link duplex/simplex paths, which already tolerate a
brief gap via the RELAYING_EXT -> RELAYING_WAIT_EXT / m_ackDelayTimer
pattern before declaring a real loss. Since IO::process() drops PTT
the moment the downstream TX buffer runs dry, that zero-debounce cutoff
meant even a very brief, late-but-recoverable gap from the gateway
(scheduling jitter, a late UDP frame, etc.) could cascade into a full
PTT drop-and-rekey cycle -- far more audible than the underlying gap
itself.
Adds m_extGapTimer, mirroring the existing pattern: on the first missed
sample, start the timer instead of immediately clearing m_extSignal; a
gap that recovers before FM_LINK_EXT_GAP_MS (default 60ms) expires
never affects m_extSignal at all, so the transmitter never notices.
Only a gap that outlasts the timer is treated as a genuine end of
transmission, exactly as before.
linkSamples()'s currentExtSample is now zero-initialized, since
m_extSignal can now stay true for a few samples past an underrun --
silence, not stack garbage, must be what gets played out to the modem
during that window.
2026-08-09 11:42:20 -05:00
Jonathan Naylor
5dd59fc473
Merge branch 'master' into mqtt
2025-08-28 17:00:21 +01:00
Jonathan Naylor
824c9b9852
Widened the size of serial data going into M17 and FM.
2025-01-13 15:05:28 +00:00
Jonathan Naylor
3e079f58ad
Add RSSI reporting to FM and AX.25
2023-08-02 17:34:52 +01:00
Jonathan Naylor
7ef0d992d9
Improve the status reporting for FM mode.
2023-01-18 14:30:02 +00:00
Jonathan Naylor
ee07f76bd5
Split the repeater and link mode audio paths.
2021-09-30 18:16:51 +01:00
Jonathan Naylor
6a4dad4c44
Change the LinkMode state machine.
2021-09-06 22:50:40 +01:00
Jonathan Naylor
ed6bd66fab
Rename SimpleMode to LinkMode.
2021-09-06 21:53:01 +01:00
Jonathan Naylor
70bf47f93e
Add a bery simple FM mode for internet gatewaying.
2021-09-05 19:06:56 +01:00
Jonathan Naylor
81518bf74c
Make AX.25, DMR, P25, NXDN and FM selectable at compile time.
2020-11-08 22:23:27 +00:00
Jonathan Naylor
d8f138066e
Add an experimental noise squelch.
2020-07-28 13:55:50 +01:00
Jonathan Naylor
9ff59570c7
Merge branch 'AX25' into AX25_FM
2020-07-15 10:42:43 +01:00
Jonathan Naylor
dc41fd83d2
Test the use of a reverse burst at the end of a transmission.
2020-07-14 12:20:42 +01:00
Jonathan Naylor
20013e3adc
Make Use COS As Lockout a run-time parameter and allow for different access modes.
2020-07-13 17:13:01 +01:00
Jonathan Naylor
ad77fd60fd
Remove KerchunkTX.
2020-07-07 17:57:31 +01:00
Jonathan Naylor
aab8f5469f
Add timeouts to the FM simplex state machine.
2020-07-06 10:56:35 +01:00
Jonathan Naylor
c99f50575d
Add a simpe simplex FM controller state machine.
2020-07-01 13:02:14 +01:00
Jonathan Naylor
14d5098018
Rename FMDownsampler to FMDownSampler.
2020-06-30 12:44:02 +01:00
Jonathan Naylor
0ea732780d
Implement Kerchunk TX option.
2020-06-20 21:03:11 +01:00
Geoffrey Merck
994226e4b1
Tighten incoming data, Add FM UpSampler
2020-05-12 22:06:26 +02:00
Jonathan Naylor
df0a9ebe72
Merge branch 'FM' into FM_Ext
2020-05-12 15:51:41 +01:00
Jonathan Naylor
435544f7a1
Add CTCSS hysteresis.
2020-05-12 13:55:30 +01:00
Geoffrey Merck
b64712f657
Restore silence
2020-05-12 14:45:03 +02:00
Geoffrey Merck
a0a3080da2
Make sure downsampler always buffers 22 samples at a time
2020-05-12 14:15:04 +02:00
Geoffrey Merck
ca1cc7096a
Fix modem not goign on transmit, still some cleansing to be done
2020-05-12 08:36:38 +02:00
Geoffrey Merck
042c26b3bb
Trying to fix no tx, WIP
2020-05-11 22:32:24 +02:00
Jonathan Naylor
4a5a260c28
Perform FM mode changing in a more conventional manner.
2020-05-11 13:15:13 +01:00
Jonathan Naylor
67e0bf02e2
Merge branch 'FM' into FM_Ext
2020-05-09 13:06:32 +01:00
Jonathan Naylor
3bb7cde322
Add input audio delay to match the CTCSS decoder results.
2020-05-09 13:01:02 +01:00
Geoffrey Merck
05775f0bfa
Add RingBuffer Template
2020-05-09 10:57:16 +02:00
Geoffrey Merck
ff3e6feeb6
Use more explicit names
2020-05-09 08:00:24 +02:00
Geoffrey Merck
0e2a83bc7b
Add incoming network data buffer
2020-05-09 07:57:45 +02:00
Geoffrey Merck
e0234dfc00
Merge remote-tracking branch 'upstream/FM' into FM_Ext
2020-05-08 21:39:18 +02:00
Jonathan Naylor
9b0fed975c
Buffer output after adding some initial silence.
2020-05-08 15:48:03 +01:00
Geoffrey Merck
9afcf3acc9
Merge remote-tracking branch 'upstream/FM' into FM_Ext
2020-05-08 12:00:36 +02:00
Geoffrey Merck
feff1ee2c7
remove emphasis
2020-05-08 09:04:28 +02:00
Geoffrey Merck
77e0deee76
Make whole FM chain RX level independant
2020-05-08 09:01:00 +02:00
Jonathan Naylor
d7cd7096d0
Add the external audio state machine and the beginnings of the audio
...
processing.
2020-05-07 22:39:17 +01:00
Jonathan Naylor
96364dc189
Add the external audio parameters.
2020-05-07 22:01:48 +01:00
Jonathan Naylor
a816818e3f
Beginnings of external audio for the FM controller.
2020-05-07 16:17:00 +01:00
Jonathan Naylor
eb9c0dfd93
Allow for the inversion of COS levels.
2020-05-06 11:34:04 +01:00
Jonathan Naylor
aa7a484c7a
Allow the start callsign to occur when the kerchunk timer has latched.
2020-05-04 22:18:51 +01:00
Jonathan Naylor
4feca3c5b7
Clock the timers seperately.
2020-05-03 13:08:33 +01:00
Geoffrey Merck
b23620ede3
Add de and pre emphasis
2020-04-29 20:42:20 +02:00
Geoffrey Merck
cf18f95a92
Add Downsampling
2020-04-28 21:37:06 +02:00
Jonathan Naylor
dac0f26e5d
Rename RXBoost to RFAudioBoost.
2020-04-28 14:43:40 +01:00
Geoffrey Merck
93a8e63233
Remove m_rxLevel
2020-04-27 11:26:19 +02:00
Geoffrey Merck
4ffaa62855
Move division to CTCSSRX, change sample unscaling to 1/rxLevel
2020-04-27 11:16:06 +02:00
Jonathan Naylor
f9530ee82a
Pass the RX level to the FM controller.
2020-04-26 22:01:11 +01:00
Geoffrey Merck
6824d5662a
Remove dependency to IO in CTCSSRX
2020-04-26 12:24:05 +02:00