Show region information in sub-GHz app (#2249)

* Show region info in sub-GHz app
* SubGhz: reset widget on region info scene exit
* Format sources

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Maksim Derbasov 2023-01-07 04:28:28 +09:00 committed by GitHub
parent c24bea6b06
commit 2c450bd835
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 60 additions and 8 deletions

View File

@ -7,7 +7,7 @@ enum SubmenuIndex {
SubmenuIndexDetectReader, SubmenuIndexDetectReader,
SubmenuIndexSaved, SubmenuIndexSaved,
SubmenuIndexExtraAction, SubmenuIndexExtraAction,
SubmenuIndexAddManualy, SubmenuIndexAddManually,
SubmenuIndexDebug, SubmenuIndexDebug,
}; };
@ -28,7 +28,7 @@ void nfc_scene_start_on_enter(void* context) {
submenu_add_item( submenu_add_item(
submenu, "Extra Actions", SubmenuIndexExtraAction, nfc_scene_start_submenu_callback, nfc); submenu, "Extra Actions", SubmenuIndexExtraAction, nfc_scene_start_submenu_callback, nfc);
submenu_add_item( submenu_add_item(
submenu, "Add Manually", SubmenuIndexAddManualy, nfc_scene_start_submenu_callback, nfc); submenu, "Add Manually", SubmenuIndexAddManually, nfc_scene_start_submenu_callback, nfc);
if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug)) { if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug)) {
submenu_add_item( submenu_add_item(
@ -68,7 +68,7 @@ bool nfc_scene_start_on_event(void* context, SceneManagerEvent event) {
} else if(event.event == SubmenuIndexExtraAction) { } else if(event.event == SubmenuIndexExtraAction) {
scene_manager_next_scene(nfc->scene_manager, NfcSceneExtraActions); scene_manager_next_scene(nfc->scene_manager, NfcSceneExtraActions);
consumed = true; consumed = true;
} else if(event.event == SubmenuIndexAddManualy) { } else if(event.event == SubmenuIndexAddManually) {
scene_manager_next_scene(nfc->scene_manager, NfcSceneSetType); scene_manager_next_scene(nfc->scene_manager, NfcSceneSetType);
consumed = true; consumed = true;
} else if(event.event == SubmenuIndexDebug) { } else if(event.event == SubmenuIndexDebug) {

View File

@ -23,3 +23,4 @@ ADD_SCENE(subghz, more_raw, MoreRAW)
ADD_SCENE(subghz, delete_raw, DeleteRAW) ADD_SCENE(subghz, delete_raw, DeleteRAW)
ADD_SCENE(subghz, need_saving, NeedSaving) ADD_SCENE(subghz, need_saving, NeedSaving)
ADD_SCENE(subghz, rpc, Rpc) ADD_SCENE(subghz, rpc, Rpc)
ADD_SCENE(subghz, region_info, RegionInfo)

View File

@ -0,0 +1,39 @@
#include "../subghz_i.h"
#include <furi_hal_region.h>
void subghz_scene_region_info_on_enter(void* context) {
SubGhz* subghz = context;
const FuriHalRegion* const region = furi_hal_region_get();
FuriString* buffer;
buffer = furi_string_alloc();
if(region) {
furi_string_cat_printf(buffer, "Region: %s, bands:\n", region->country_code);
for(uint16_t i = 0; i < region->bands_count; ++i) {
furi_string_cat_printf(
buffer,
" %lu-%lu kHz\n",
region->bands[i].start / 1000,
region->bands[i].end / 1000);
}
} else {
furi_string_cat_printf(buffer, "Region: N/A\n");
}
widget_add_string_multiline_element(
subghz->widget, 0, 0, AlignLeft, AlignTop, FontSecondary, furi_string_get_cstr(buffer));
furi_string_free(buffer);
view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdWidget);
}
bool subghz_scene_region_info_on_event(void* context, SceneManagerEvent event) {
UNUSED(context);
UNUSED(event);
return false;
}
void subghz_scene_region_info_on_exit(void* context) {
SubGhz* subghz = context;
widget_reset(subghz->widget);
}

View File

@ -5,9 +5,10 @@ enum SubmenuIndex {
SubmenuIndexRead = 10, SubmenuIndexRead = 10,
SubmenuIndexSaved, SubmenuIndexSaved,
SubmenuIndexTest, SubmenuIndexTest,
SubmenuIndexAddManualy, SubmenuIndexAddManually,
SubmenuIndexFrequencyAnalyzer, SubmenuIndexFrequencyAnalyzer,
SubmenuIndexReadRAW, SubmenuIndexReadRAW,
SubmenuIndexShowRegionInfo
}; };
void subghz_scene_start_submenu_callback(void* context, uint32_t index) { void subghz_scene_start_submenu_callback(void* context, uint32_t index) {
@ -33,7 +34,7 @@ void subghz_scene_start_on_enter(void* context) {
submenu_add_item( submenu_add_item(
subghz->submenu, subghz->submenu,
"Add Manually", "Add Manually",
SubmenuIndexAddManualy, SubmenuIndexAddManually,
subghz_scene_start_submenu_callback, subghz_scene_start_submenu_callback,
subghz); subghz);
submenu_add_item( submenu_add_item(
@ -42,6 +43,12 @@ void subghz_scene_start_on_enter(void* context) {
SubmenuIndexFrequencyAnalyzer, SubmenuIndexFrequencyAnalyzer,
subghz_scene_start_submenu_callback, subghz_scene_start_submenu_callback,
subghz); subghz);
submenu_add_item(
subghz->submenu,
"Region Information",
SubmenuIndexShowRegionInfo,
subghz_scene_start_submenu_callback,
subghz);
if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug)) { if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug)) {
submenu_add_item( submenu_add_item(
subghz->submenu, "Test", SubmenuIndexTest, subghz_scene_start_submenu_callback, subghz); subghz->submenu, "Test", SubmenuIndexTest, subghz_scene_start_submenu_callback, subghz);
@ -76,9 +83,9 @@ bool subghz_scene_start_on_event(void* context, SceneManagerEvent event) {
subghz->scene_manager, SubGhzSceneStart, SubmenuIndexSaved); subghz->scene_manager, SubGhzSceneStart, SubmenuIndexSaved);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaved); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaved);
return true; return true;
} else if(event.event == SubmenuIndexAddManualy) { } else if(event.event == SubmenuIndexAddManually) {
scene_manager_set_scene_state( scene_manager_set_scene_state(
subghz->scene_manager, SubGhzSceneStart, SubmenuIndexAddManualy); subghz->scene_manager, SubGhzSceneStart, SubmenuIndexAddManually);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetType); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetType);
return true; return true;
} else if(event.event == SubmenuIndexFrequencyAnalyzer) { } else if(event.event == SubmenuIndexFrequencyAnalyzer) {
@ -92,6 +99,11 @@ bool subghz_scene_start_on_event(void* context, SceneManagerEvent event) {
subghz->scene_manager, SubGhzSceneStart, SubmenuIndexTest); subghz->scene_manager, SubGhzSceneStart, SubmenuIndexTest);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTest); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTest);
return true; return true;
} else if(event.event == SubmenuIndexShowRegionInfo) {
scene_manager_set_scene_state(
subghz->scene_manager, SubGhzSceneStart, SubmenuIndexShowRegionInfo);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneRegionInfo);
return true;
} }
} }
return false; return false;

View File

@ -3,7 +3,7 @@ enum SubmenuIndex {
SubmenuIndexRead, SubmenuIndexRead,
SubmenuIndexRunScript, SubmenuIndexRunScript,
SubmenuIndexSaved, SubmenuIndexSaved,
SubmenuIndexAddManualy, SubmenuIndexAddManually,
SubmenuIndexDebug, SubmenuIndexDebug,
}; };