Remove subghz region

This commit is contained in:
Willy-JL
2023-05-11 00:26:11 +01:00
parent d91f70b837
commit 09ff6da5ea
12 changed files with 40 additions and 202 deletions

View File

@@ -1,6 +1,5 @@
#include <furi_hal_region.h>
#include <furi_hal_subghz.h>
#include <furi_hal_version.h>
#include <furi.h>
const FuriHalRegion furi_hal_region_zero = {
.country_code = "00",
@@ -14,115 +13,18 @@ const FuriHalRegion furi_hal_region_zero = {
},
}};
const FuriHalRegion furi_hal_region_eu_ru = {
.country_code = "EU",
.bands_count = 2,
.bands = {
{
.start = 433050000,
.end = 434790000,
.power_limit = 12,
.duty_cycle = 50,
},
{
.start = 868150000,
.end = 868550000,
.power_limit = 12,
.duty_cycle = 50,
}}};
const FuriHalRegion furi_hal_region_us_ca_au = {
.country_code = "US",
.bands_count = 3,
.bands = {
{
.start = 304100000,
.end = 321950000,
.power_limit = 12,
.duty_cycle = 50,
},
{
.start = 433050000,
.end = 434790000,
.power_limit = 12,
.duty_cycle = 50,
},
{
.start = 915000000,
.end = 928000000,
.power_limit = 12,
.duty_cycle = 50,
}}};
const FuriHalRegion furi_hal_region_jp = {
.country_code = "JP",
.bands_count = 2,
.bands = {
{
.start = 312000000,
.end = 315250000,
.power_limit = 12,
.duty_cycle = 50,
},
{
.start = 920500000,
.end = 923500000,
.power_limit = 12,
.duty_cycle = 50,
}}};
static const FuriHalRegion* furi_hal_region = NULL;
void furi_hal_region_init() {
FuriHalVersionRegion region = furi_hal_version_get_hw_region();
if(region == FuriHalVersionRegionUnknown) {
furi_hal_region = &furi_hal_region_zero;
} else if(region == FuriHalVersionRegionEuRu) {
furi_hal_region = &furi_hal_region_eu_ru;
} else if(region == FuriHalVersionRegionUsCaAu) {
furi_hal_region = &furi_hal_region_us_ca_au;
} else if(region == FuriHalVersionRegionJp) {
furi_hal_region = &furi_hal_region_jp;
}
}
const FuriHalRegion* furi_hal_region_get() {
return furi_hal_region;
return &furi_hal_region_zero;
}
void furi_hal_region_set(FuriHalRegion* region) {
furi_hal_region = region;
}
bool furi_hal_region_is_provisioned() {
return furi_hal_region != NULL;
}
const char* furi_hal_region_get_name() {
if(furi_hal_region) {
return furi_hal_region->country_code;
} else {
return "--";
}
}
bool furi_hal_region_is_frequency_allowed(uint32_t frequency) {
bool isAllowed = true;
if(!furi_hal_region) {
isAllowed = false;
}
const FuriHalRegionBand* band = furi_hal_region_get_band(frequency);
if(!band) {
isAllowed = false;
}
if(!isAllowed) {
isAllowed = furi_hal_subghz_is_tx_allowed(frequency);
}
return isAllowed;
UNUSED(region);
}
const FuriHalRegionBand* furi_hal_region_get_band(uint32_t frequency) {
furi_hal_region = &furi_hal_region_zero;
if(!furi_hal_region) {
return NULL;
}
@@ -136,3 +38,16 @@ const FuriHalRegionBand* furi_hal_region_get_band(uint32_t frequency) {
return NULL;
}
bool furi_hal_region_is_frequency_allowed(uint32_t frequency) {
UNUSED(frequency);
return true;
}
bool furi_hal_region_is_provisioned() {
return true;
}
const char* furi_hal_region_get_name() {
return "00";
}

View File

@@ -1,6 +1,6 @@
#include <furi_hal_subghz.h>
#include <furi_hal_subghz_configs.h>
#include <furi_hal_region.h>
#include <furi_hal_version.h>
#include <furi_hal_rtc.h>
#include <furi_hal_spi.h>
@@ -448,22 +448,21 @@ uint32_t furi_hal_subghz_set_frequency_and_path(uint32_t value) {
return value;
}
void furi_hal_subghz_get_extend_settings(bool* extend, bool* bypass) {
*extend = false;
*bypass = false;
bool furi_hal_subghz_get_is_extended() {
bool is_extended = false;
Storage* storage = furi_record_open(RECORD_STORAGE);
FlipperFormat* file = flipper_format_file_alloc(storage);
if(flipper_format_file_open_existing(file, "/ext/subghz/assets/extend_range.txt")) {
flipper_format_read_bool(file, "use_ext_range_at_own_risk", extend, 1);
flipper_format_read_bool(file, "ignore_default_tx_region", bypass, 1);
flipper_format_read_bool(file, "use_ext_range_at_own_risk", &is_extended, 1);
}
flipper_format_free(file);
furi_record_close(RECORD_STORAGE);
return is_extended;
}
void furi_hal_subghz_set_extend_settings(bool extend, bool bypass) {
void furi_hal_subghz_set_is_extended(bool is_extended) {
Storage* storage = furi_record_open(RECORD_STORAGE);
FlipperFormat* file = flipper_format_file_alloc(storage);
@@ -473,11 +472,7 @@ void furi_hal_subghz_set_extend_settings(bool extend, bool bypass) {
if(!flipper_format_write_comment_cstr(
file, "Whether to allow extended ranges that can break your flipper"))
break;
if(!flipper_format_write_bool(file, "use_ext_range_at_own_risk", &extend, 1)) break;
if(!flipper_format_write_comment_cstr(
file, "Whether to ignore the default TX region settings"))
break;
if(!flipper_format_write_bool(file, "ignore_default_tx_region", &bypass, 1)) break;
if(!flipper_format_write_bool(file, "use_ext_range_at_own_risk", &is_extended, 1)) break;
} while(0);
flipper_format_free(file);
@@ -485,63 +480,22 @@ void furi_hal_subghz_set_extend_settings(bool extend, bool bypass) {
}
bool furi_hal_subghz_is_tx_allowed(uint32_t value) {
bool is_extended;
bool is_allowed;
furi_hal_subghz_get_extend_settings(&is_extended, &is_allowed);
bool is_extended = furi_hal_subghz_get_is_extended();
switch(furi_hal_version_get_hw_region_otp()) {
case FuriHalVersionRegionEuRu:
//433,05..434,79; 868,15..868,55
if(!(value >= 433050000 && value <= 434790000) &&
!(value >= 868150000 && value <= 868550000)) {
} else {
is_allowed = true;
}
break;
case FuriHalVersionRegionUsCaAu:
//304,10..321,95; 433,05..434,79; 915,00..928,00
if(!(value >= 304100000 && value <= 321950000) &&
!(value >= 433050000 && value <= 434790000) &&
!(value >= 915000000 && value <= 928000000)) {
} else {
if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug)) {
if(value <= 321950000 &&
((furi_hal_subghz.preset == FuriHalSubGhzPresetOok270Async) ||
(furi_hal_subghz.preset == FuriHalSubGhzPresetOok650Async))) {
furi_hal_subghz_load_patable(furi_hal_subghz_preset_ook_async_patable_au);
}
}
is_allowed = true;
}
break;
case FuriHalVersionRegionJp:
//312,00..315,25; 920,50..923,50
if(!(value >= 312000000 && value <= 315250000) &&
!(value >= 920500000 && value <= 923500000)) {
} else {
is_allowed = true;
}
break;
default:
is_allowed = true;
break;
}
// No flag - test original range, flag set, test extended range
if(!(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) && !(is_extended)) {
FURI_LOG_I(TAG, "Frequency blocked - outside regional range");
is_allowed = false;
FURI_LOG_I(TAG, "Frequency blocked - outside default range");
return false;
} else if(
!(value >= 281000000 && value <= 361000000) &&
!(value >= 378000000 && value <= 481000000) &&
!(value >= 749000000 && value <= 962000000) && is_extended) {
FURI_LOG_I(TAG, "Frequency blocked - outside extended range");
is_allowed = false;
return false;
}
return is_allowed;
return true;
}
uint32_t furi_hal_subghz_set_frequency(uint32_t value) {

View File

@@ -227,17 +227,15 @@ uint32_t furi_hal_subghz_set_frequency_and_path(uint32_t value);
/** Read extend and bypass settings values into out params
*
* @param extend pointer to bool for extend
* @param bypass pointer to bool for bypass
* @return is_extended bool
*/
void furi_hal_subghz_get_extend_settings(bool* extend, bool* bypass);
bool furi_hal_subghz_get_is_extended();
/** Set extend and bypass settings values to file
*
* @param extend bool for extend
* @param bypass bool for bypass
* @param is_extended bool for extend
*/
void furi_hal_subghz_set_extend_settings(bool extend, bool bypass);
void furi_hal_subghz_set_is_extended(bool is_extended);
/** Сheck if transmission is allowed on this frequency with your current config
*

View File

@@ -273,16 +273,6 @@ static const uint8_t furi_hal_subghz_preset_ook_async_patable[8] = {
0x00,
0x00};
static const uint8_t furi_hal_subghz_preset_ook_async_patable_au[8] = {
0x00,
0x37, // 12dBm 0xC0, 10dBm 0xC5, 7dBm 0xCD, 5dBm 0x86, 0dBm 0x50, -6dBm 0x37, -10dBm 0x26, -15dBm 0x1D, -20dBm 0x17, -30dBm 0x03
0x00,
0x00,
0x00,
0x00,
0x00,
0x00};
static const uint8_t furi_hal_subghz_preset_2fsk_async_patable[8] = {
0xC0, // 10dBm 0xC0, 7dBm 0xC8, 5dBm 0x84, 0dBm 0x60, -10dBm 0x34, -15dBm 0x1D, -20dBm 0x0E, -30dBm 0x12
0x00,