From 397ff8523a53fb1488181974a67c8a2e7f98fb49 Mon Sep 17 00:00:00 2001 From: Austin Date: Fri, 3 Jul 2026 04:00:14 -0400 Subject: [PATCH] Add 70cm amateur radio region support (#10627) --- src/graphics/draw/MenuHandler.cpp | 3 +++ .../InkHUD/Applets/System/Menu/MenuAction.h | 3 +++ .../InkHUD/Applets/System/Menu/MenuApplet.cpp | 12 +++++++++ src/mesh/RadioInterface.cpp | 27 +++++++++++++++++++ 4 files changed, 45 insertions(+) diff --git a/src/graphics/draw/MenuHandler.cpp b/src/graphics/draw/MenuHandler.cpp index 60e74467d..4453c02ee 100644 --- a/src/graphics/draw/MenuHandler.cpp +++ b/src/graphics/draw/MenuHandler.cpp @@ -258,6 +258,9 @@ void menuHandler::LoraRegionPicker(uint32_t duration) {"ITU2_2M (144-148)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU2_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}, + {"ITU1_70CM (430-440)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU1_70CM}, + {"ITU2_70CM (420-450)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU2_70CM}, + {"ITU3_70CM (430-450)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU3_70CM}, }; diff --git a/src/graphics/niche/InkHUD/Applets/System/Menu/MenuAction.h b/src/graphics/niche/InkHUD/Applets/System/Menu/MenuAction.h index d92bb30c8..26befddc6 100644 --- a/src/graphics/niche/InkHUD/Applets/System/Menu/MenuAction.h +++ b/src/graphics/niche/InkHUD/Applets/System/Menu/MenuAction.h @@ -75,6 +75,9 @@ enum MenuAction { SET_REGION_ITU2_2M, SET_REGION_ITU3_2M, SET_REGION_ITU2_125CM, + SET_REGION_ITU1_70CM, + SET_REGION_ITU2_70CM, + SET_REGION_ITU3_70CM, // Device Roles SET_ROLE_CLIENT, SET_ROLE_CLIENT_MUTE, diff --git a/src/graphics/niche/InkHUD/Applets/System/Menu/MenuApplet.cpp b/src/graphics/niche/InkHUD/Applets/System/Menu/MenuApplet.cpp index 657cc667c..a0c155521 100644 --- a/src/graphics/niche/InkHUD/Applets/System/Menu/MenuApplet.cpp +++ b/src/graphics/niche/InkHUD/Applets/System/Menu/MenuApplet.cpp @@ -907,6 +907,18 @@ void InkHUD::MenuApplet::execute(MenuItem item) applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU2_125CM); break; + case SET_REGION_ITU1_70CM: + applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU1_70CM); + break; + + case SET_REGION_ITU2_70CM: + applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU2_70CM); + break; + + case SET_REGION_ITU3_70CM: + applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU3_70CM); + break; + // Roles case SET_ROLE_CLIENT: applyDeviceRole(meshtastic_Config_DeviceConfig_Role_CLIENT); diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp index 2d43e3703..aa4cfb393 100644 --- a/src/mesh/RadioInterface.cpp +++ b/src/mesh/RadioInterface.cpp @@ -283,6 +283,33 @@ const RegionInfo regions[] = { */ RDEF(ITU2_125CM, 220.0f, 225.0f, 100, 30, false, false, PROFILE_HAM_100KHZ, PRESET(NARROW_SLOW), 37), + /* + ITU Region 1 (Europe, Africa, Middle East, former USSR) amateur 70cm allocation: 430.000 - 440.000 MHz. + Power limit is the regulatory ceiling (1 W / 30 dBm) — individual hardware will cap below this + via its own PA curve; the field here is just the legal upper bound. + + Default slot: 37 (433.650 MHz) + */ + RDEF(ITU1_70CM, 430.0f, 440.0f, 100, 30, false, false, PROFILE_HAM_100KHZ, PRESET(NARROW_SLOW), 37), + + /* + ITU Region 2 (Americas) amateur 70cm allocation: 420.000 - 450.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 420-430 MHz or 440-450 MHz. Check local law! + + Default slot: 137 (433.650 MHz) + */ + RDEF(ITU2_70CM, 420.0f, 450.0f, 100, 30, false, false, PROFILE_HAM_100KHZ, PRESET(NARROW_SLOW), 137), + + /* + ITU Region 3 (Asia/Pacific) amateur 70cm allocation: 430.000 - 450.000 MHz. + Typical admin rules allow well above 30 dBm for licensed operators. + Note: Some countries do not allocate 440-450 MHz. Check local law! + + Default slot: 37 (433.650 MHz) + */ + RDEF(ITU3_70CM, 430.0f, 450.0f, 100, 30, false, false, PROFILE_HAM_100KHZ, PRESET(NARROW_SLOW), 37), + /* 2.4 GHZ WLAN Band equivalent. Only for SX128x chips. */