SubGHz: Show reason for TX blocked --nobuild

This commit is contained in:
Willy-JL
2024-05-16 04:51:23 +01:00
parent 08d507c934
commit 9b418c9a07
5 changed files with 75 additions and 34 deletions

View File

@@ -1,6 +1,7 @@
#include <furi_hal_subghz.h>
#include <lib/subghz/devices/cc1101_configs.h>
#include <furi_hal_region_i.h>
#include <furi_hal_region.h>
#include <furi_hal_version.h>
#include <furi_hal_rtc.h>
#include <furi_hal_spi.h>
@@ -389,32 +390,40 @@ uint32_t furi_hal_subghz_set_frequency_and_path(uint32_t value) {
return value;
}
bool furi_hal_subghz_is_tx_allowed(uint32_t value) {
if(!furi_hal_subghz.bypass_region) {
if(!_furi_hal_region_is_frequency_allowed(value)) {
FURI_LOG_I(TAG, "Frequency blocked - outside region range");
return false;
}
return true;
FuriHalSubGhzTx furi_hal_subghz_check_tx(uint32_t value) {
// Check against extended range of YARD Stick One, no configuration would allow this frequency
if(!furi_hal_subghz_is_frequency_valid(value)) {
FURI_LOG_I(TAG, "Frequency blocked - outside supported range");
return FuriHalSubGhzTxBlockedUnsupported;
}
bool allow_extended_for_int = furi_hal_subghz.extended_frequency_i;
if(!(allow_extended_for_int) &&
// Check against default range, regardless of region restrictions
if(!furi_hal_subghz.extended_frequency_i &&
!(value >= 299999755 && value <= 350000335) && // was increased from 348 to 350
!(value >= 386999938 && value <= 467750000) && // was increased from 464 to 467.75
!(value >= 778999847 && value <= 928000000)) {
FURI_LOG_I(TAG, "Frequency blocked - outside default range");
return false;
} else if(
(allow_extended_for_int) && //
!furi_hal_subghz_is_frequency_valid(value)) {
FURI_LOG_I(TAG, "Frequency blocked - outside extended range");
return false;
return FuriHalSubGhzTxBlockedDefault;
}
return true;
// Check against region restrictions, tighter than extended and default
if(!furi_hal_subghz.bypass_region) {
if(!furi_hal_region_is_provisioned()) {
FURI_LOG_I(TAG, "Frequency blocked - region not provisioned");
return FuriHalSubGhzTxBlockedRegionNotProvisioned;
}
if(!_furi_hal_region_is_frequency_allowed(value)) {
FURI_LOG_I(TAG, "Frequency blocked - outside region range");
return FuriHalSubGhzTxBlockedRegion;
}
}
// We already checked for extended range, default range, and region range
return FuriHalSubGhzTxAllowed;
}
bool furi_hal_subghz_is_tx_allowed(uint32_t value) {
return furi_hal_subghz_check_tx(value) == FuriHalSubGhzTxAllowed;
}
uint32_t furi_hal_subghz_set_frequency(uint32_t value) {