mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Remove subghz region
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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,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";
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user