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:
		
							parent
							
								
									c24bea6b06
								
							
						
					
					
						commit
						2c450bd835
					
				@ -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) {
 | 
				
			||||||
 | 
				
			|||||||
@ -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)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										39
									
								
								applications/main/subghz/scenes/subghz_scene_region_info.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								applications/main/subghz/scenes/subghz_scene_region_info.c
									
									
									
									
									
										Normal 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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@ enum SubmenuIndex {
 | 
				
			|||||||
    SubmenuIndexRead,
 | 
					    SubmenuIndexRead,
 | 
				
			||||||
    SubmenuIndexRunScript,
 | 
					    SubmenuIndexRunScript,
 | 
				
			||||||
    SubmenuIndexSaved,
 | 
					    SubmenuIndexSaved,
 | 
				
			||||||
    SubmenuIndexAddManualy,
 | 
					    SubmenuIndexAddManually,
 | 
				
			||||||
    SubmenuIndexDebug,
 | 
					    SubmenuIndexDebug,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user