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

@@ -5,7 +5,6 @@ enum VarItemListIndex {
VarItemListIndexBadbtRemember,
VarItemListIndexSubghzFrequencies,
VarItemListIndexSubghzExtend,
VarItemListIndexSubghzBypass,
};
void xtreme_app_scene_protocols_var_item_list_callback(void* context, uint32_t index) {
@@ -36,13 +35,6 @@ static void xtreme_app_scene_protocols_subghz_extend_changed(VariableItem* item)
app->save_subghz = true;
}
static void xtreme_app_scene_protocols_subghz_bypass_changed(VariableItem* item) {
XtremeApp* app = variable_item_get_context(item);
app->subghz_bypass = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, app->subghz_bypass ? "ON" : "OFF");
app->save_subghz = true;
}
void xtreme_app_scene_protocols_on_enter(void* context) {
XtremeApp* app = context;
XtremeSettings* xtreme_settings = XTREME_SETTINGS();
@@ -66,11 +58,6 @@ void xtreme_app_scene_protocols_on_enter(void* context) {
variable_item_set_current_value_index(item, app->subghz_extend);
variable_item_set_current_value_text(item, app->subghz_extend ? "ON" : "OFF");
item = variable_item_list_add(
var_item_list, "SubGHz Bypass", 2, xtreme_app_scene_protocols_subghz_bypass_changed, app);
variable_item_set_current_value_index(item, app->subghz_bypass);
variable_item_set_current_value_text(item, app->subghz_bypass ? "ON" : "OFF");
variable_item_list_set_enter_callback(
var_item_list, xtreme_app_scene_protocols_var_item_list_callback, app);

View File

@@ -64,7 +64,7 @@ bool xtreme_app_apply(XtremeApp* app) {
}
if(app->save_subghz) {
furi_hal_subghz_set_extend_settings(app->subghz_extend, app->subghz_bypass);
furi_hal_subghz_set_is_extended(app->subghz_extend);
}
if(app->save_name) {
@@ -247,7 +247,7 @@ XtremeApp* xtreme_app_alloc() {
flipper_format_free(file);
furi_record_close(RECORD_STORAGE);
furi_hal_subghz_get_extend_settings(&app->subghz_extend, &app->subghz_bypass);
app->subghz_extend = furi_hal_subghz_get_is_extended();
strlcpy(app->device_name, furi_hal_version_get_name_ptr(), FURI_HAL_VERSION_ARRAY_NAME_LENGTH);

View File

@@ -51,7 +51,6 @@ typedef struct {
uint8_t subghz_hopper_index;
char subghz_freq_buffer[XTREME_SUBGHZ_FREQ_BUFFER_SIZE];
bool subghz_extend;
bool subghz_bypass;
char device_name[FURI_HAL_VERSION_ARRAY_NAME_LENGTH];
int32_t xp_level;
FuriString* version_tag;

View File

@@ -37,13 +37,12 @@ void desktop_debug_render(Canvas* canvas, void* model) {
snprintf(
buffer,
sizeof(buffer),
"%d.F%dB%dC%d %s:%s %s",
"%d.F%dB%dC%d %s %s",
furi_hal_version_get_hw_version(),
furi_hal_version_get_hw_target(),
furi_hal_version_get_hw_body(),
furi_hal_version_get_hw_connect(),
furi_hal_version_get_hw_region_name_otp(),
furi_hal_region_get_name(),
my_name ? my_name : "Unknown");
canvas_draw_str(canvas, 0, 19 + STATUS_BAR_Y_SHIFT, buffer);

View File

@@ -99,13 +99,12 @@ static DialogMessageButton hw_version_screen(DialogsApp* dialogs, DialogMessage*
furi_string_cat_printf(
buffer,
"%d.F%dB%dC%d %s:%s %s\n",
"%d.F%dB%dC%d %s %s\n",
furi_hal_version_get_hw_version(),
furi_hal_version_get_hw_target(),
furi_hal_version_get_hw_body(),
furi_hal_version_get_hw_connect(),
furi_hal_version_get_hw_region_name_otp(),
furi_hal_region_get_name(),
my_name ? my_name : "Unknown");
furi_string_cat_printf(buffer, "Serial Number:\n");

View File

@@ -1361,7 +1361,6 @@ Function,+,furi_hal_random_get,uint32_t,
Function,+,furi_hal_region_get,const FuriHalRegion*,
Function,+,furi_hal_region_get_band,const FuriHalRegionBand*,uint32_t
Function,+,furi_hal_region_get_name,const char*,
Function,+,furi_hal_region_init,void,
Function,+,furi_hal_region_is_frequency_allowed,_Bool,uint32_t
Function,+,furi_hal_region_is_provisioned,_Bool,
Function,+,furi_hal_region_set,void,FuriHalRegion*
@@ -1453,8 +1452,8 @@ Function,-,furi_hal_subghz_dump_state,void,
Function,+,furi_hal_subghz_enable_ext_power,_Bool,
Function,+,furi_hal_subghz_flush_rx,void,
Function,+,furi_hal_subghz_flush_tx,void,
Function,+,furi_hal_subghz_get_extend_settings,void,"_Bool*, _Bool*"
Function,+,furi_hal_subghz_get_external_power_disable,_Bool,
Function,+,furi_hal_subghz_get_is_extended,_Bool,
Function,+,furi_hal_subghz_get_lqi,uint8_t,
Function,+,furi_hal_subghz_get_radio_type,SubGhzRadioType,
Function,+,furi_hal_subghz_get_rolling_counter_mult,uint8_t,
@@ -1478,10 +1477,10 @@ Function,+,furi_hal_subghz_rx,void,
Function,+,furi_hal_subghz_rx_pipe_not_empty,_Bool,
Function,+,furi_hal_subghz_select_radio_type,void,SubGhzRadioType
Function,+,furi_hal_subghz_set_async_mirror_pin,void,const GpioPin*
Function,+,furi_hal_subghz_set_extend_settings,void,"_Bool, _Bool"
Function,+,furi_hal_subghz_set_external_power_disable,void,_Bool
Function,+,furi_hal_subghz_set_frequency,uint32_t,uint32_t
Function,+,furi_hal_subghz_set_frequency_and_path,uint32_t,uint32_t
Function,+,furi_hal_subghz_set_is_extended,void,_Bool
Function,+,furi_hal_subghz_set_path,void,FuriHalSubGhzPath
Function,+,furi_hal_subghz_set_rolling_counter_mult,void,uint8_t
Function,+,furi_hal_subghz_set_timestamp_file_names,void,_Bool
1 entry status name type params
1361 Function + furi_hal_region_get const FuriHalRegion*
1362 Function + furi_hal_region_get_band const FuriHalRegionBand* uint32_t
1363 Function + furi_hal_region_get_name const char*
Function + furi_hal_region_init void
1364 Function + furi_hal_region_is_frequency_allowed _Bool uint32_t
1365 Function + furi_hal_region_is_provisioned _Bool
1366 Function + furi_hal_region_set void FuriHalRegion*
1452 Function + furi_hal_subghz_enable_ext_power _Bool
1453 Function + furi_hal_subghz_flush_rx void
1454 Function + furi_hal_subghz_flush_tx void
Function + furi_hal_subghz_get_extend_settings void _Bool*, _Bool*
1455 Function + furi_hal_subghz_get_external_power_disable _Bool
1456 Function + furi_hal_subghz_get_is_extended _Bool
1457 Function + furi_hal_subghz_get_lqi uint8_t
1458 Function + furi_hal_subghz_get_radio_type SubGhzRadioType
1459 Function + furi_hal_subghz_get_rolling_counter_mult uint8_t
1477 Function + furi_hal_subghz_rx_pipe_not_empty _Bool
1478 Function + furi_hal_subghz_select_radio_type void SubGhzRadioType
1479 Function + furi_hal_subghz_set_async_mirror_pin void const GpioPin*
Function + furi_hal_subghz_set_extend_settings void _Bool, _Bool
1480 Function + furi_hal_subghz_set_external_power_disable void _Bool
1481 Function + furi_hal_subghz_set_frequency uint32_t uint32_t
1482 Function + furi_hal_subghz_set_frequency_and_path uint32_t uint32_t
1483 Function + furi_hal_subghz_set_is_extended void _Bool
1484 Function + furi_hal_subghz_set_path void FuriHalSubGhzPath
1485 Function + furi_hal_subghz_set_rolling_counter_mult void uint8_t
1486 Function + furi_hal_subghz_set_timestamp_file_names void _Bool

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,

View File

@@ -21,9 +21,6 @@ typedef struct {
FuriHalRegionBand bands[];
} FuriHalRegion;
/** Initialize region */
void furi_hal_region_init();
/** Get Region Data.
*
* Region data may be allocated in Flash or in RAM.

View File

@@ -43,6 +43,7 @@ void flipper_migrate_files() {
// Revert cringe
storage_common_remove(storage, INT_PATH(".passport.settings"));
storage_common_remove(storage, INT_PATH(".region_data"));
// Migrate files
storage_common_copy(storage, ARCHIVE_FAV_OLD_PATH, ARCHIVE_FAV_PATH);