mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 13:28:36 -07:00
Remove subghz region
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user