* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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.
* 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
* 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.