Commit Graph

5963 Commits (master)

Author SHA1 Message Date
Mooneer Salem 7575c630b8
Fix dropouts related to virtual audio cables. (#840)
* Extend RADEv1 unit test time to try to force failures.

* txrx test wasn't actually respecting -txtime.

* Increase test length to 10min.

* Increase timeout.

* Temporarily disable macOS and Linux workflows.

* Run RADE test 10 times.

* Tweak to hopefully cause Windows test to actually fail.

* Ensure that all PortAudio calls are executed from the same thread.

* Use exclusive mode for radio devices for lower latency (at least on Windows).

* Reduce TX/RX thread delay to 10ms.

* Increase GH action timeout.

* Oops, need to tell PortAudio to actually set thread priority.

* Suggest low latency to PortAudio.

* Revert 10ms max wait.

* Try forcing shared mode again.

* Revert "Try forcing shared mode again."

This reverts commit cd025e9a8e.

* Revert "Revert 10ms max wait."

This reverts commit 0227ce5f0c.

* Reenable macOS/Linux builds.

* Run RADE tests 10x on Linux and macOS.

* Revert back to 60s tests on macOS/Linux.

* Use sh -c to run test.

* Try defining FPB as 0.

* Split out repeated RADE test into a separate ctest.

* Disable GH action timeout for Windows tests.

* Fix CMakeLists.txt error.

* Try increasing the timeout back to 20ms again.

* Back to 10ms.

* macOS: minimize CPU usage inside PortAudio.

* Use higher quality macOS settings.

* Use Intel macOS runner as it has more cores and RAM.

* Add debug output so we can adapt GH action for Intel.

* Fix gfortran path based on debug output.

* Fix permissions database issue.

* Disable exclusive mode due to invalid device errors.

* Disable stress tests in GitHub environment by default.

* Restructure TX out code to help the compiler optimize for the common case.

* Forgot to disable the repeated test.

* Use VB-Cable for radio device on macOS due to improved reliability.

* Fix side issue reported in original issue surrouding default mode selection.

* Need to restrict number of runs to 1 for RADE on Windows.

* Remove unnecessary API for setting exclusive mode.

* Wrap sync flag in std::atomic just in case the GH failures are actually threading related.

* Add PR #840 to changelog.
2025-03-06 00:40:05 -08:00
Mooneer Salem 130aeec504 latest user manual PDF 2025-02-20 02:11:55 +00:00
Mooneer Salem e56e21e9a6
Save Hamlib rig names on startup as they're able to change out from under us. (#834)
* Save Hamlib rig names on startup as they're able to change out from under us.

* Bump up Hamlib to 4.6.2.

* Add PR #834 to changelog.

* Capture rig names after sorting the rig list. This ensures that the rig names are in the same order as the main list.

* Append -D to USB/LSB if radio is using digital variant.
2025-02-19 18:08:54 -08:00
Mooneer Salem 0426ed8944
Increase short RX coloring timeout to 5 seconds. (#835) 2025-02-18 14:59:50 -08:00
Mooneer Salem d195e7241a latest user manual PDF 2025-02-18 21:15:57 +00:00
Mooneer Salem 12fa7d0f10
Update 80/160m default frequencies. (#831)
* Update 80/160m default frequencies.

* Add PR #831 to changelog.
2025-02-18 13:13:06 -08:00
Mooneer Salem c642f9d39f
Only show whole number SNRs in main window. (#832) 2025-02-18 13:02:00 -08:00
Mooneer Salem 9fc9403479 latest user manual PDF 2025-02-11 23:39:36 +00:00
Mooneer Salem 7ae3d118fb
Don't adjust Msg column width when user disconnects. (#828)
* Don't adjust Msg column width when user disconnects.

* Add PR #828 to changelog.

* Don't cause Msg col to be resized when it changes (i.e. on user connect).

* Add back 4+ character commit ID to version.
2025-02-11 15:36:31 -08:00
Mooneer Salem f3fd1468a9 latest user manual PDF 2025-02-11 15:36:23 +00:00
Mooneer Salem d22976c45f
Fix issue preventing suppression of the Msg tooltip for non-truncated messages (#829)
* Clarify purpose of extra space at beginning of truncated message.

* Fix issue preventing suppression of the Msg tooltip for non-truncated messages.

* Add PR #829 to changelog.
2025-02-11 07:33:50 -08:00
Mooneer Salem 50217dba9e
Relax microphone permissions checking on Windows. (#825) 2025-02-10 18:30:28 -08:00
Mooneer Salem 607dec1d33
Add link to Barry's script to README. (#819)
* Add link to Barry's script to README.

* Wording update.

* Remove git hash from version string.

* s/devel2/dev2/
2025-01-30 00:38:47 -08:00
Mooneer Salem d6577a1ba7
Add missed save/load for new frequency change option. (#818) 2025-01-19 16:04:05 -08:00
Mooneer Salem d0d734a6cc
Fix issue causing FreeDV to segfault on exit when RADE is running. (#814)
* Fix issue causing FreeDV to segfault on exit when RADE is running.

* Add logic to go through all the stop steps on exit as though the user pushed the Stop button.

* Move AudioEngine shutdown to destructor.

* Simplify exit logic and defer form destroy until after modem stop.

* Don't skip the event on window close or else wxWidgets will destroy twice.
2025-01-18 14:27:57 -08:00
Mooneer Salem c1cc52e42f
Increase max SNR in the UI to 40 dB. (#817) 2025-01-17 16:51:49 -08:00
Mooneer Salem 5a77cf1343
Fix buffer overflow issue causing loud audio after EOO. (#813) 2025-01-16 09:08:43 -08:00
Mooneer Salem 9de0abbb12 latest user manual PDF 2025-01-16 08:35:42 +00:00
Mooneer Salem 3394db2b5d
Make sure reporting message is sent using UTF8. (#812)
* Make sure reporting message is sent using UTF8.

* Parse incoming messages as UTF8.

* Add PR #812 to changelog.
2025-01-16 00:32:33 -08:00
Mooneer Salem b18f2d39d4 latest user manual PDF 2025-01-15 17:09:27 +00:00
Mooneer Salem 5f09e4eedc
Add support for only adjusting frequency, not mode. (#809)
* Add support for only adjusting frequency, not mode.

* Adding PR #809 to changelog.
2025-01-15 09:05:22 -08:00
Mooneer Salem 941afb8036
Fix bug causing hangs in non-RADE mode at end of TX. (#808)
* Fix bug causing hangs in non-RADE mode at end of TX.

* Fix GH action issue with Windows.
2025-01-15 08:25:11 -08:00
Mooneer Salem c1b4338faa
Fix issue possibly degrading RADE RX audio quality. (#804) 2025-01-14 10:37:25 -08:00
Mooneer Salem 3c4825c844
Fix bug preventing Request QSY button from being enabled in RADE mode. (#803) 2025-01-13 09:25:56 -08:00
Mooneer Salem 8ca2d1ebb7
Experimental code changes to improve reliability of EOO TX. (#800)
* Update ctests to more reliably detect failure to transmit EOO.

* Wait for full EOO to be injected into the output FIFO before continuing with TX->RX switchover.

* PulseAudio: force immediate start to playback.

* Force lower latency in ctest loopback devices.

* Add 20ms of silence to end of EOO as part of further investigation.

* Add a bit extra silence to the end. This causes a 10/10 ctest pass rate for RADE text.

* Code cleanup.
2025-01-11 09:04:10 -08:00
Mooneer Salem 630764778c
Integrate SNR reporting from latest RADE. (#797)
* Integrate SNR reporting from latest RADE.

* Show -- for SNR when using RADE and not in sync.

* Suppress SNR display when not in sync for legacy modes.
2025-01-08 23:42:16 -08:00
Mooneer Salem 37f6531039 latest user manual PDF 2025-01-06 08:24:02 +00:00
Mooneer Salem de24bc68fa
Upgrade Hamlib to 4.6 for Windows/macOS builds. (#795)
* Upgrade Hamlib to 4.6 for Windows/macOS builds.

* Add PR #795 to changelog.

* Fix Windows build error.

* Revert "Fix Windows build error."

This reverts commit 11a424991c.

* Update patch for Hamlib 4.6.

* Add IPHLPAPI.DLL to dependency exclusion list.
2025-01-06 00:22:17 -08:00
Mooneer Salem 524d0b8eb1
If disabled, make sure we don't try calling rade_text_* with a null pointer. (#794) 2025-01-05 18:48:15 -08:00
Mooneer Salem b527c83a1c
Fix various VK UI issues discovered by test team. (#793)
* Fix various VK UI issues discovered by test team.

Implements the following:

1. Hardens the "modified" comparison when saving options from Tools->Options (to avoid clearing the VK filename when the folder's not modified).
2. Fixes bug that prevented the Voice Keyer button from properly resizing after selecting a new voice keyer file.

* Add PR #793 to changelog.
2025-01-05 18:47:54 -08:00
Mooneer Salem 2b45f3d548
Ensure that PulseAudio doesn't send samples upstream too quickly. (#789)
* Ensure that PulseAudio doesn't send samples upstream too quickly.

* Add locking to fix occasional crashes.

* Try another way of queuing up input.
2025-01-01 07:53:13 -08:00
Mooneer Salem 3eff68ed64
Ensure that __pycache__ folders are cleaned up by the Windows uninstaller. (#791)
* Ensure that __pycache__ folders are cleaned up by the Windows uninstaller.

* Fix syntax errors.

* Might as well include changes to macOS GH action to stash result.
2024-12-31 23:59:33 -08:00
Mooneer Salem b11c952d39
Merge pull request #792 from drowe67/ms-2.0-master-integ
Merge latest master into v2.0-dev
2024-12-31 23:50:44 -08:00
Mooneer Salem 89572780eb Merge branch 'v2.0-dev' into ms-2.0-master-integ 2024-12-31 23:48:41 -08:00
Mooneer Salem 347cb0a930 latest user manual PDF 2025-01-01 03:58:53 +00:00
Mooneer Salem 12a0f30bcb
Detect if microphone permissions have been granted in Windows. (#790)
* Detect if microphone permissions have been granted in Windows.

* wxWidgets needs to build before the OS specific stuff.

* Also include main wxWidgets files.

* Need to use HKLM version of Microphone key.

* Add PR #790 to changelog.
2024-12-31 19:56:31 -08:00
Mooneer Salem 93770acdde
Add support for sending callsigns using RADE (#783)
* Prevent EOO from being repeatedly sent during TX stop.

* Make sure we don't accidentally overflow the output FIFO when transmitting EOO.

* Add additional logging to verify EOO behavior.

* Fix issue preventing EOO from being sent on voice keyer completion.

* Scale EOO the same as the primary waveform.

* Remove #ifdef code per PR comment.

* Use main branch for RADE.

* Add initial support for RADE callsign handling.

* Add additional logging and try different way to calculate amps.

* More debugging. We should also make sure all of EOO is initialized to 'zero'.

* Testing and other changes:

1. Add RadeTextTest to rule out any issues with freedv-gui.
2. Calculate RMS magnitude across all EOO bits, not just the ones used by RADE text.

* Fix test so it actually runs on Linux.

* Disable temporary fprintf of symbols.

* GH environment gave different BER, so let's try positive ROT45.

* set_eoo_bits should be receiving OFDM symbols.

* Don't fault if we don't have a RX callback.

* Fix issue preventing ctest from working in GH environment.

* Reenable interleaving.

* Initial code cleanup.

* Reformat code to make it easier to read.

* Inject noise into the TX sample in the ctest.

* Add initial test scripts for verifying RADE reporting.

* Add some sleeps since the UT framework can issue GUI events faster than the audio can escape FreeDV.

* Add ctest for test_rade_reporting.sh.

* Add RADE reporting noise test.

* Use codec2 ch tool to generate noise.

* Add raw/coded BER debugging output for tests.

* Fix formula used for BER.

* Update ctest to use mpp instead of AWGN, similar to RADE repo.

* Bring back AWGN test.

* Add Octave to build environment.

* Update cmake-macos.yml

* Fix buffer overrun from previous changes.

* Accidentally included previous change.

* Ensure we have defaults for txattempts and txtime.

* Coded BER should use output of LDPC decode.

* Install octave-signal in macOS CI environment.

* Need to pass -forge in to install signal properly.

* Need octave-control too.

* Need gcc to build control/signal.

* Some additional stuff is needed to get gfortran working.

* Need to use gcc 14 instead.

* Add debugging.

* Fix typo.

* Homebrew uses /opt/homebrew.

* Clarify logging as we also report to FreeDV Reporter.

* Forgot to update ctest acceptance criteria due to logging change.

* Add logic to output TX/RX floats to files.

* rade_text should handle stuffing of unused EOO bits, not upstream code.

* Test framework: remove hardcoded 5s delay after startup request.

* Calculate raw BER across entire EOO, not just the used portion.

* Code cleanup and EOO calculation fixes.

* FreeDV Reporter: only highlight for 2 seconds if there's no RX callsign.

* Switch RADE branch to main as EOO changes have now been merged.
2024-12-27 15:08:24 -08:00
Mooneer Salem 1f7bd43f1e
Add logic to sign and notarize macOS binaries. (#787)
* Add logic to sign and notarize macOS binaries.

* Attributes need to be preserved when copying into a DMG.
2024-12-15 14:22:04 -08:00
Mooneer Salem e86bc18213
Rename RADE to RADEV1. (#788)
* Rename RADE to RADEV1.

* Fix GH action failures.
2024-12-15 01:41:54 -08:00
Mooneer Salem 7d88772dd9
Fix stuttering during EOO TX. (#780)
* Prevent EOO from being repeatedly sent during TX stop.

* Make sure we don't accidentally overflow the output FIFO when transmitting EOO.

* Add additional logging to verify EOO behavior.

* Fix issue preventing EOO from being sent on voice keyer completion.

* Scale EOO the same as the primary waveform.

* Remove #ifdef code per PR comment.

* Use main branch for RADE.
2024-12-14 09:41:54 -08:00
Mooneer Salem 2b2a1a6d7a
Suppress RADE output based on configured log verbosity. (#786) 2024-12-14 09:40:54 -08:00
Mooneer Salem ce76e7fb2d
Enable capture of RX features from RADE decoder (#776)
* Initial implementation of RX feature capture.

* Allow path to feature file to be specified at the command line.

* Fix compilation error after upgrading MacPorts.

* Add command line option for TX feature capture.

* Add -txfile command line argument to feed in WAV file through TX pipeline.

* Adjust scaling to match PR example.

* Opt for improved resampling audio quality.

* We don't actually need to add additional attenuation anymore.

* Switch over to soxr for further experimentation.

* Forgot change to have Windows build work.

* Update Linux build instructions.

* Fix additional compiler error.

* Update paCallbackData.h

* Remove missed code that's no longer needed.

* Update main.cpp

* Try to reduce latency.

* Another experiment to decrease latency.

* Go back to default settings.

* Fix failing ctests.

* Fix Windows packaging failures.

* Disable ctests for soxr.

* Enable SIMD for aarch64.

* Smooth out gaps in audio caused by how soxr works.

* Fix build errors.

* Ensure we're flushing out our output FIFO if we stop receiving input.

* ctests should now be fixed.

* Revert all samplerate changes. These will go in another PR.
2024-12-03 23:51:44 -08:00
Mooneer Salem 4c9c2c1529
Suppress spurious RX FIFO warning during transmit. (#775) 2024-11-24 10:07:06 -08:00
Mooneer Salem 44b33f84ec
Adopt C port of core RADE code (#774)
* WIP checkin so we can build in Windows environment.

* Use version of opus built by RADE to avoid Linux compiler errors.

* Bring back fargan_config.h generation.
2024-11-24 08:32:25 -08:00
Mooneer Salem 8f6f6cae4e latest user manual PDF 2024-11-24 02:56:08 +00:00
Mooneer Salem 8b8755332b
Clean up how logging works. (#773)
* Begin cleanup of logging.

* Fix Windows build failure.

* Bump up minimum macOS version to 10.13 to make compiler happy about fmemopen().

* Switch printf/fprintf to log_* calls.

* Remove spurious newlines from log messages.

* Remove g_verbose from codebase.

* Ensure Hamlib logs via ulog.

* Convert cerr/cout to ulog.

* Fix unit test and Linux compiler errors.

* Strip newlines from end of hamlib log messages.

* It would help if we actually printed the non-newline version of the log message.

* Actually fix Windows compiler errors.

* Replace additional printfs with log_* after merge from main.

* Add locking around logging to make sure we don't lose any.

* Try disabling color to get Windows tests working again.

* Use regular wine instead of wine-staging.

* Revert "Use regular wine instead of wine-staging."

This reverts commit 88bf4ef7c2.

* Add missed changelog entries.

* Poll for xvfb to come up.

* Try framebuffer dir instead.

* Fix typo.

* Try 24 bit color.

* Try xvfb-run instead.

* Fix xvfb-run command.

* Try the screen arguments again.

* Try wine-devel instead as it might be more stable.

* Update cmake-windows.yml

* Lock log mutex before running RADE RX.

This is to avoid test output loss on Windows.

* Log to stderr and not stdout.

* Update RADEReceiveStep.cpp
2024-11-23 18:54:21 -08:00
Mooneer Salem 0d40130f2e
Add tests to verify lack of sync loss in RX (#761)
* Add logic for automatically running RX/TX tests.

* Add GH action to load loopback audio driver.

* Add ctest configuration file.

* Try loading modules after installing packages.

* Add additional required packages.

* Add automated test script.

* Temporarily disable GH action changes.

* Have RX take 60 seconds as well.

* Ubuntu upgrade broke /bin/sh.

* Fix issue preventing no zero message from printing.

* Print sync status once per second and validate no resyncs.

* Fix spelling error.

* Switch to RADE main.

* Another attempt at enabling aloop in the GH action.

* Use _ instead of - for module name.

* Use pacmd to create virtual sound devices instead.

* Check sync state every 100ms instead of every 1s.

* Fix issue preventing sync changes from making it to the log.

* Add full duplex test.

* Add full duplex tests to CMakeLists.

* Generate sine wave for TX.

* Update GH action to allow new ctests to run.

* Add debugging for UT.

* pipewire-pulse is needed to actually use PipeWire.

* Install suggested packages to get additional required commands.

* Can't use --install-suggests, so explicitly mention packages.

* Enable pipewire service.

* Fix call to helper Python script.

* Show status of pipewire prior to running tests.

* Remove status display from GH action.

* Use module-loopback to simulate TX plugged into RX.

* Try explicitly starting pipewire.

* Use strict 20ms cadence for TX/RX thread instead of relying on the audio subsystem.

* Need to install wireplumber as well.

* Update regular expression in ctest as sync change message isn't printed unless there's a problem.

* Add RADE to ctests.

* RADE ctest pass wasn't actually a pass.

* Need to explicitly check for LINUX for PulseAudio based ctests.

* Reenable PortAudio build.

* Invert test criteria.

* Show pipewire status just before thye test run.

* List sink info prior to each test.

* Make sure virtual devices aren't suspended.

* Need to have the suspension disable code in another file.

* Actually, installing pulseaudio isn't a good idea.

* Need a window manager for things to refresh properly.

* Display wireplumber info after FDV start.

* Add additional sleep to guarantee that FreeDV is listening when wireplumber status is printed.

* Add pw-top for additional info.

* dbus needs to be running for pipewire to work.

* Need to wait a bit for Xvfb to become available.

* Get additional pipewire logs prior to UT run.

* Install/run rtkit too.

* Attempt to get pipewire logs after test execution.

* Looks like we still need to start pipewire manually.

* Further increase pipewire debugging.

* Too much debugging output before.

* Upgrade packages first before installing new ones.

* We weren't actually running 24.04 on GH.

* Adjust packages due to using 24.04.

* Suppress spellcheck issue.

* Disable pipewire debugging.

* Test changes to PulseAudioDevice to improve dropouts.

* Update tests to reflect 1 resync per 120s proposed threshold.

* Disable additional debugging output.

* Allow override of test audio devices from the command line.

* Enable ctests on macOS.

* getSync() isn't thread safe, causing false UT failures.

* Install virtual audio devices in CI environment for macOS.

* Use script to build drivers instead.

* Oops, forgot to remove some code first.

* Adjust permissions of script.

* Make tests work on Linux again with loopback devices.

* Attempt change to make virtual audio devices actually build.

* Try building on x86 macOS.

* Fix quote escape issues.

* More quote escape issues.

* Forgot missed folder change.

* Enable mirrored virtual audio devices.

* Fix incorrect device names in ctest execution.

* Need to append '2ch' to the other device names too.

* Clear sync when transmitting.

* Grant microphone access to FreeDV.

* Need to back out one of the changes due to voice keyer problems.

* Attempt to fix CI failures.

* Take screenshot of macOS CI environment for debugging.

* Let's try running the script separately to get a screenshot.

* Screenshot was in the wrong place.

* Need to grant access to provisioner for microphone.

* Alternate way of granting permissions.

* Oops, remove call to tccutil.

* Per PLT meeting, we shouldn't drop sync at all.

* Shorten test time to 60s.

* More tweaks to make sure that the devices are correct on Linux.

* Disable screen capture.

* Additional fixes to resolve script problems on macOS.

* I don't think previous PulseAudio changes made anything better.

* Improve dropouts when using PulseAudio/pipewire.

* Revert "Improve dropouts when using PulseAudio/pipewire."

This reverts commit f16c27f4d3.

* Have stream write callback get audio data from higher level code.

* Add PowerShell script for Windows testing.

* Move ctest files into a separate location for organization purposes.

* Add parameters for PowerShell test script.

* Add help text for the script.

* Update conf file path due to previous commits.

* Fix syntax errors in script.

* Experiment: Test Windows installer on GH action.

* Try actually running full duplex test inside Windows.

* Add 5 seconds to allow Xvfb to fully come up.

* Update other actions to use latest checkout.

* Need VS command prompt.

* Add additional debugging.

* Maybe we need to throw an exception to make the GH action fail.

* List devices another way.

* Add yet more debugging.

* Fix audio devices.

* Try with 700D to at least make sure we're on the right track.

* Fix GH action.

* Fix syntax errors.

* Try installing VAC instead as FreeDV is crashing with Scream.

* Fix syntax error.

* Try different hardware ID.

* Ignore error code that actually means success.

* Oops, fix syntax error.

* Try earlier version of VAC.

* Fix archive commands.

* Fix path.

* Probably need to start AudioEndpointBuilder too.

* Stop services first.

* Print out any errors that might be getting thrown.

* Revert "Print out any errors that might be getting thrown."

This reverts commit 15e3908c80.

* Disable test GH action for Windows and investigate failure later.

* Reenable Windows testing with new way of debugging.

* Add logging based on clues from Windows event log.

* Revert "Add logging based on clues from Windows event log."

This reverts commit de4f11362e.

* Use procdump to get a crash dump.

* Full dump seems to take a while.

* Run procdump in the background.

* Log audio errors.

* Print device name in error message.

* Make sure message box doesn't display.

* Enable additional PortAudio debugging.

* Add yet more logging.

* Add additional Registry key to ensure FreeDV has microphone permissions.

* Need to add Registry key.

* Add more keys to try to force microphone permission.

* Clean up debugging, add tests for RADE/700E/1600.

* More cleanup.
2024-11-23 08:08:40 -08:00
Mooneer Salem 36566a7f22
Install Visual Studio Redistributable. (#771)
* Install Visual Studio Redistributable.

* Fix errors in initial commit.
2024-11-18 23:16:28 -08:00
Mooneer Salem 8dd540c7b2
Merge pull request #769 from drowe67/ms-report-rade
Report RX of RADE signals without callsign or SNR.
2024-11-12 08:51:51 -08:00
Mooneer Salem a19f5e7a67 Add git hash to reported version number. 2024-11-12 07:48:18 -08:00