[FL-2961] SubGhz: properly handle storage loss (#1990)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		@@ -198,20 +198,28 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) {
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case SubGhzCustomEventViewReadRAWMore:
 | 
			
		||||
            if(subghz_scene_read_raw_update_filename(subghz)) {
 | 
			
		||||
                scene_manager_set_scene_state(
 | 
			
		||||
                    subghz->scene_manager, SubGhzSceneReadRAW, SubGhzCustomEventManagerSet);
 | 
			
		||||
                subghz->txrx->rx_key_state = SubGhzRxKeyStateRAWLoad;
 | 
			
		||||
                scene_manager_next_scene(subghz->scene_manager, SubGhzSceneMoreRAW);
 | 
			
		||||
                consumed = true;
 | 
			
		||||
            if(subghz_file_available(subghz)) {
 | 
			
		||||
                if(subghz_scene_read_raw_update_filename(subghz)) {
 | 
			
		||||
                    scene_manager_set_scene_state(
 | 
			
		||||
                        subghz->scene_manager, SubGhzSceneReadRAW, SubGhzCustomEventManagerSet);
 | 
			
		||||
                    subghz->txrx->rx_key_state = SubGhzRxKeyStateRAWLoad;
 | 
			
		||||
                    scene_manager_next_scene(subghz->scene_manager, SubGhzSceneMoreRAW);
 | 
			
		||||
                    consumed = true;
 | 
			
		||||
                } else {
 | 
			
		||||
                    furi_crash("SubGhz: RAW file name update error.");
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                furi_crash("SubGhz: RAW file name update error.");
 | 
			
		||||
                if(!scene_manager_search_and_switch_to_previous_scene(
 | 
			
		||||
                       subghz->scene_manager, SubGhzSceneStart)) {
 | 
			
		||||
                    scene_manager_stop(subghz->scene_manager);
 | 
			
		||||
                    view_dispatcher_stop(subghz->view_dispatcher);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case SubGhzCustomEventViewReadRAWSendStart:
 | 
			
		||||
 | 
			
		||||
            if(subghz_scene_read_raw_update_filename(subghz)) {
 | 
			
		||||
            if(subghz_file_available(subghz) && subghz_scene_read_raw_update_filename(subghz)) {
 | 
			
		||||
                //start send
 | 
			
		||||
                subghz->state_notifications = SubGhzNotificationStateIDLE;
 | 
			
		||||
                if(subghz->txrx->txrx_state == SubGhzTxRxStateRx) {
 | 
			
		||||
@@ -238,6 +246,12 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) {
 | 
			
		||||
                        subghz->state_notifications = SubGhzNotificationStateTx;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                if(!scene_manager_search_and_switch_to_previous_scene(
 | 
			
		||||
                       subghz->scene_manager, SubGhzSceneStart)) {
 | 
			
		||||
                    scene_manager_stop(subghz->scene_manager);
 | 
			
		||||
                    view_dispatcher_stop(subghz->view_dispatcher);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            consumed = true;
 | 
			
		||||
            break;
 | 
			
		||||
@@ -314,11 +328,17 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) {
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case SubGhzCustomEventViewReadRAWSave:
 | 
			
		||||
            if(subghz_scene_read_raw_update_filename(subghz)) {
 | 
			
		||||
            if(subghz_file_available(subghz) && subghz_scene_read_raw_update_filename(subghz)) {
 | 
			
		||||
                scene_manager_set_scene_state(
 | 
			
		||||
                    subghz->scene_manager, SubGhzSceneReadRAW, SubGhzCustomEventManagerSetRAW);
 | 
			
		||||
                subghz->txrx->rx_key_state = SubGhzRxKeyStateBack;
 | 
			
		||||
                scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName);
 | 
			
		||||
            } else {
 | 
			
		||||
                if(!scene_manager_search_and_switch_to_previous_scene(
 | 
			
		||||
                       subghz->scene_manager, SubGhzSceneStart)) {
 | 
			
		||||
                    scene_manager_stop(subghz->scene_manager);
 | 
			
		||||
                    view_dispatcher_stop(subghz->view_dispatcher);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            consumed = true;
 | 
			
		||||
            break;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user