radio: don't reconfigure the radio when switching operating mode to idle.
Some checks failed
Build / host (3.10.0, gcc, Unix Makefiles, --target install, --build, ubuntu, bash, sudo) (push) Failing after 3s
Build / host (latest, gcc, Unix Makefiles, --install, latest, ubuntu, bash, sudo) (push) Failing after 3s
Build / firmware (HACKRF_ONE, 3.12.0, ubuntu) (push) Failing after 3s
Build / firmware (HACKRF_ONE, latest, ubuntu) (push) Failing after 4s
Build / firmware (JAWBREAKER, 3.12.0, ubuntu) (push) Failing after 4s
Build / firmware (JAWBREAKER, latest, ubuntu) (push) Failing after 4s
Build / firmware (PRALINE, 3.12.0, ubuntu) (push) Failing after 4s
Build / firmware (PRALINE, latest, ubuntu) (push) Failing after 4s
Build / firmware (RAD1O, 3.12.0, ubuntu) (push) Failing after 4s
Build / firmware (RAD1O, latest, ubuntu) (push) Failing after 4s
Build / firmware (UNIVERSAL, 3.12.0, ubuntu) (push) Failing after 3s
Build / firmware (UNIVERSAL, latest, ubuntu) (push) Failing after 3s
Check code style / clang-format (push) Failing after 3s
Check code style / clang-format-1 (push) Failing after 3s
Check code style / clang-format-2 (push) Failing after 4s
Check code style / clang-format-3 (push) Failing after 4s
Check includes / includes-check (HACKRF_ONE, 3.12.0) (push) Failing after 3s
Check includes / includes-check (JAWBREAKER, 3.12.0) (push) Failing after 2s
Check includes / includes-check (HACKRF_ONE, latest) (push) Failing after 3s
Check includes / includes-check (JAWBREAKER, latest) (push) Failing after 3s
Check includes / includes-check (PRALINE, 3.12.0) (push) Failing after 3s
Check includes / includes-check (PRALINE, latest) (push) Failing after 2s
Check includes / includes-check (RAD1O, 3.12.0) (push) Failing after 3s
Check includes / includes-check (RAD1O, latest) (push) Failing after 2s
Check includes / includes-check (UNIVERSAL, 3.12.0) (push) Failing after 3s
Check includes / includes-check (UNIVERSAL, latest) (push) Failing after 2s
Build / host (3.10.0, gcc, Unix Makefiles, --target install, --build, macos, bash, sudo) (push) Has been cancelled
Build / host (3.21.7, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, msvc, Visual Studio 17 2022, --install, 17.1… (push) Has been cancelled
Build / host (4.2.6, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, msvc, Visual Studio 18 2026, --install, lates… (push) Has been cancelled
Build / host (latest, --install-prefix=/usr/local, gcc, MSYS Makefiles, --install, latest, windows, msys2) (push) Has been cancelled
Build / host (latest, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, msvc, Visual Studio 18 2026, --install, late… (push) Has been cancelled
Build / host (latest, gcc, Unix Makefiles, --install, latest, macos, bash, sudo) (push) Has been cancelled
Build / firmware (HACKRF_ONE, latest, windows) (push) Has been cancelled
Build / firmware (JAWBREAKER, latest, windows) (push) Has been cancelled
Build / firmware (PRALINE, 3.12.0, macos) (push) Has been cancelled
Build / firmware (PRALINE, latest, macos) (push) Has been cancelled
Build / firmware (PRALINE, latest, windows) (push) Has been cancelled
Build / firmware (RAD1O, latest, windows) (push) Has been cancelled
Build / firmware (UNIVERSAL, 3.12.0, macos) (push) Has been cancelled
Build / firmware (UNIVERSAL, latest, macos) (push) Has been cancelled
Build / firmware (UNIVERSAL, latest, windows) (push) Has been cancelled

This commit is contained in:
Antoine van Gelder 2026-07-17 15:07:21 +02:00
parent 2b7ba8d7ab
commit 6a83a5b807
No known key found for this signature in database
GPG key ID: 5717D455FD443019

View file

@ -940,19 +940,30 @@ bool radio_update(radio_t* const radio)
memcpy(&tmp_bank[0], &(radio->config[RADIO_BANK_REQUESTED][0]), sizeof(tmp_bank));
nvic_enable_irq(NVIC_USB0_IRQ);
// We only want to update the sr, freq and bw configuration groups
// if the transceiver is off or about to be switched on.
//
// This ensures that, when idle, the radio's applied configuration
// will always reflect the last settings used before the
// transceiver was switched off.
bool radio_ready = radio->config[RADIO_BANK_REQUESTED][RADIO_OPMODE] !=
TRANSCEIVER_MODE_OFF ||
radio->config[RADIO_BANK_APPLIED][RADIO_OPMODE] == TRANSCEIVER_MODE_OFF;
if ((dirty & RADIO_REG_GROUP_RATE) ||
((detected_platform() == BOARD_ID_PRALINE) &&
(dirty & (1 << RADIO_OPMODE)))) {
((detected_platform() == BOARD_ID_PRALINE) && (dirty & (1 << RADIO_OPMODE)) &&
radio_ready)) {
changed |= radio_update_sample_rate(radio, &tmp_bank[0]);
}
if ((dirty & RADIO_REG_GROUP_FREQ) ||
((detected_platform() == BOARD_ID_PRALINE) &&
((changed & RADIO_REG_GROUP_RATE) || (dirty & (1 << RADIO_OPMODE))))) {
((changed & RADIO_REG_GROUP_RATE) || (dirty & (1 << RADIO_OPMODE))) &&
radio_ready)) {
changed |= radio_update_frequency(radio, &tmp_bank[0]);
}
if ((dirty & RADIO_REG_GROUP_BW) ||
((detected_platform() == BOARD_ID_PRALINE) &&
(changed & (RADIO_REG_GROUP_RATE | RADIO_REG_GROUP_FREQ)))) {
(changed & (RADIO_REG_GROUP_RATE | RADIO_REG_GROUP_FREQ)) && radio_ready)) {
changed |= radio_update_bandwidth(radio, &tmp_bank[0]);
}
if (dirty & (RADIO_REG_GROUP_GAIN | (1 << RADIO_OPMODE))) {