Add 1.25 Meter '125cm' amateur radio region support (#10638)
This commit is contained in:
@@ -209,6 +209,7 @@ void menuHandler::LoraRegionPicker(uint32_t duration)
|
|||||||
{"ITU1_2M (144-146)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU1_2M},
|
{"ITU1_2M (144-146)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU1_2M},
|
||||||
{"ITU2_2M (144-148)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU2_2M},
|
{"ITU2_2M (144-148)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU2_2M},
|
||||||
{"ITU3_2M (144-148)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU3_2M},
|
{"ITU3_2M (144-148)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU3_2M},
|
||||||
|
{"ITU2_125CM (220-225)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU2_125CM},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ enum MenuAction {
|
|||||||
SET_REGION_ITU1_2M,
|
SET_REGION_ITU1_2M,
|
||||||
SET_REGION_ITU2_2M,
|
SET_REGION_ITU2_2M,
|
||||||
SET_REGION_ITU3_2M,
|
SET_REGION_ITU3_2M,
|
||||||
|
SET_REGION_ITU2_125CM,
|
||||||
// Device Roles
|
// Device Roles
|
||||||
SET_ROLE_CLIENT,
|
SET_ROLE_CLIENT,
|
||||||
SET_ROLE_CLIENT_MUTE,
|
SET_ROLE_CLIENT_MUTE,
|
||||||
|
|||||||
@@ -796,6 +796,10 @@ void InkHUD::MenuApplet::execute(MenuItem item)
|
|||||||
applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU3_2M);
|
applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU3_2M);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SET_REGION_ITU2_125CM:
|
||||||
|
applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU2_125CM);
|
||||||
|
break;
|
||||||
|
|
||||||
// Roles
|
// Roles
|
||||||
case SET_ROLE_CLIENT:
|
case SET_ROLE_CLIENT:
|
||||||
applyDeviceRole(meshtastic_Config_DeviceConfig_Role_CLIENT);
|
applyDeviceRole(meshtastic_Config_DeviceConfig_Role_CLIENT);
|
||||||
@@ -1500,6 +1504,7 @@ void InkHUD::MenuApplet::showPage(MenuPage page)
|
|||||||
items.push_back(MenuItem("ITU1_2M (144-146)", MenuAction::SET_REGION_ITU1_2M, MenuPage::EXIT));
|
items.push_back(MenuItem("ITU1_2M (144-146)", MenuAction::SET_REGION_ITU1_2M, MenuPage::EXIT));
|
||||||
items.push_back(MenuItem("ITU2_2M (144-148)", MenuAction::SET_REGION_ITU2_2M, MenuPage::EXIT));
|
items.push_back(MenuItem("ITU2_2M (144-148)", MenuAction::SET_REGION_ITU2_2M, MenuPage::EXIT));
|
||||||
items.push_back(MenuItem("ITU3_2M (144-148)", MenuAction::SET_REGION_ITU3_2M, MenuPage::EXIT));
|
items.push_back(MenuItem("ITU3_2M (144-148)", MenuAction::SET_REGION_ITU3_2M, MenuPage::EXIT));
|
||||||
|
items.push_back(MenuItem("ITU2_125CM (220-225)", MenuAction::SET_REGION_ITU2_125CM, MenuPage::EXIT));
|
||||||
items.push_back(MenuItem("Exit", MenuPage::EXIT));
|
items.push_back(MenuItem("Exit", MenuPage::EXIT));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ extern const RegionProfile PROFILE_UNDEF;
|
|||||||
extern const RegionProfile PROFILE_LITE;
|
extern const RegionProfile PROFILE_LITE;
|
||||||
extern const RegionProfile PROFILE_NARROW;
|
extern const RegionProfile PROFILE_NARROW;
|
||||||
extern const RegionProfile PROFILE_HAM_20KHZ;
|
extern const RegionProfile PROFILE_HAM_20KHZ;
|
||||||
|
extern const RegionProfile PROFILE_HAM_100KHZ;
|
||||||
|
|
||||||
// Map from old region names to new region enums
|
// Map from old region names to new region enums
|
||||||
struct RegionInfo {
|
struct RegionInfo {
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ const RegionProfile PROFILE_LITE = {PRESETS_LITE, 0.4, 0.0375f, false, false, 0,
|
|||||||
const RegionProfile PROFILE_NARROW = {PRESETS_NARROW, 0, 0.0104f, true, false, 0, 1, 1};
|
const RegionProfile PROFILE_NARROW = {PRESETS_NARROW, 0, 0.0104f, true, false, 0, 1, 1};
|
||||||
// Ham '20kHz' profile. 15.6kHz bandwidth coerced to 20kHz via padding.
|
// Ham '20kHz' profile. 15.6kHz bandwidth coerced to 20kHz via padding.
|
||||||
const RegionProfile PROFILE_HAM_20KHZ = {PRESETS_TINY, 0, 0.0022f, false, true, 0, 2, 2};
|
const RegionProfile PROFILE_HAM_20KHZ = {PRESETS_TINY, 0, 0.0022f, false, true, 0, 2, 2};
|
||||||
|
// Ham '100kHz' profile. 62.5kHz bandwidth coerced to 100kHz via padding.
|
||||||
|
const RegionProfile PROFILE_HAM_100KHZ = {PRESETS_NARROW, 0, 0.01875f, false, true, 0, 1, 1};
|
||||||
|
|
||||||
#define RDEF(name, freq_start, freq_end, duty_cycle, power_limit, frequency_switching, wide_lora, profile_ptr, default_preset, \
|
#define RDEF(name, freq_start, freq_end, duty_cycle, power_limit, frequency_switching, wide_lora, profile_ptr, default_preset, \
|
||||||
override_slot) \
|
override_slot) \
|
||||||
@@ -259,6 +261,16 @@ const RegionInfo regions[] = {
|
|||||||
*/
|
*/
|
||||||
RDEF(ITU3_2M, 144.0f, 148.0f, 100, 30, false, false, PROFILE_HAM_20KHZ, PRESET(TINY_FAST), 33),
|
RDEF(ITU3_2M, 144.0f, 148.0f, 100, 30, false, false, PROFILE_HAM_20KHZ, PRESET(TINY_FAST), 33),
|
||||||
|
|
||||||
|
/*
|
||||||
|
ITU Region 2 (Americas) amateur 1.25m '125cm' allocation: 220.000 - 225.000 MHz.
|
||||||
|
Typical admin rules (e.g. US FCC Part 97) allow well above 30 dBm for licensed operators.
|
||||||
|
Note: Some countries do not allocate 220-222 MHz (e.g. USA, Canada). Check local law!
|
||||||
|
|
||||||
|
Default slot: 37 (223.650 MHz)
|
||||||
|
https://www.arrl.org/band-plan
|
||||||
|
*/
|
||||||
|
RDEF(ITU2_125CM, 220.0f, 225.0f, 100, 30, false, false, PROFILE_HAM_100KHZ, PRESET(NARROW_SLOW), 37),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
2.4 GHZ WLAN Band equivalent. Only for SX128x chips.
|
2.4 GHZ WLAN Band equivalent. Only for SX128x chips.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user