Bugfix: ISP Programmer and SubGhz (#2574)
* AVR_ISP: fix NULL pointer dereference * SubGhz: double back with a blocked transmission in this region * SubGhz: fix speaker, when a transmission is blocked in this region * SubGhz: fix speaker * SubGhz: return region * AVR Flasher: cleanup code Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									7ac7b70884
								
							
						
					
					
						commit
						33e8bae78b
					
				| @ -152,7 +152,12 @@ bool avr_isp_auto_set_spi_speed_start_pmode(AvrIsp* instance) { | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     if(instance->spi) avr_isp_spi_sw_free(instance->spi); | ||||
| 
 | ||||
|     if(instance->spi) { | ||||
|         avr_isp_spi_sw_free(instance->spi); | ||||
|         instance->spi = NULL; | ||||
|     } | ||||
| 
 | ||||
|     return false; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -317,7 +317,12 @@ static bool avr_isp_prog_auto_set_spi_speed_start_pmode(AvrIspProg* instance) { | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     if(instance->spi) avr_isp_spi_sw_free(instance->spi); | ||||
| 
 | ||||
|     if(instance->spi) { | ||||
|         avr_isp_spi_sw_free(instance->spi); | ||||
|         instance->spi = NULL; | ||||
|     } | ||||
| 
 | ||||
|     return false; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -230,7 +230,11 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) { | ||||
|                    (subghz->txrx->txrx_state == SubGhzTxRxStateSleep)) { | ||||
|                     if(!subghz_tx_start(subghz, subghz->txrx->fff_data)) { | ||||
|                         subghz->txrx->rx_key_state = SubGhzRxKeyStateBack; | ||||
|                         scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowOnlyRx); | ||||
|                         subghz_read_raw_set_status( | ||||
|                             subghz->subghz_read_raw, | ||||
|                             SubGhzReadRAWStatusIDLE, | ||||
|                             "", | ||||
|                             subghz->txrx->raw_threshold_rssi); | ||||
|                     } else { | ||||
|                         if(scene_manager_has_previous_scene( | ||||
|                                subghz->scene_manager, SubGhzSceneSaved) || | ||||
|  | ||||
| @ -70,9 +70,7 @@ bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent event) { | ||||
|             } | ||||
|             if((subghz->txrx->txrx_state == SubGhzTxRxStateIDLE) || | ||||
|                (subghz->txrx->txrx_state == SubGhzTxRxStateSleep)) { | ||||
|                 if(!subghz_tx_start(subghz, subghz->txrx->fff_data)) { | ||||
|                     scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowOnlyRx); | ||||
|                 } else { | ||||
|                 if(subghz_tx_start(subghz, subghz->txrx->fff_data)) { | ||||
|                     subghz->state_notifications = SubGhzNotificationStateTx; | ||||
|                     subghz_scene_transmitter_update_data_show(subghz); | ||||
|                     DOLPHIN_DEED(DolphinDeedSubGhzSend); | ||||
|  | ||||
| @ -105,9 +105,11 @@ static bool subghz_tx(SubGhz* subghz, uint32_t frequency) { | ||||
|     furi_hal_subghz_set_frequency_and_path(frequency); | ||||
|     furi_hal_gpio_write(&gpio_cc1101_g0, false); | ||||
|     furi_hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); | ||||
|     subghz_speaker_on(subghz); | ||||
|     bool ret = furi_hal_subghz_tx(); | ||||
|     subghz->txrx->txrx_state = SubGhzTxRxStateTx; | ||||
|     if(ret) { | ||||
|         subghz_speaker_on(subghz); | ||||
|         subghz->txrx->txrx_state = SubGhzTxRxStateTx; | ||||
|     } | ||||
|     return ret; | ||||
| } | ||||
| 
 | ||||
| @ -115,6 +117,7 @@ void subghz_idle(SubGhz* subghz) { | ||||
|     furi_assert(subghz); | ||||
|     furi_assert(subghz->txrx->txrx_state != SubGhzTxRxStateSleep); | ||||
|     furi_hal_subghz_idle(); | ||||
|     subghz_speaker_off(subghz); | ||||
|     subghz->txrx->txrx_state = SubGhzTxRxStateIDLE; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Skorpionm
						Skorpionm