diff --git a/applications/main/subghz/helpers/subghz_txrx.c b/applications/main/subghz/helpers/subghz_txrx.c index 583138e513..99791d0eb9 100644 --- a/applications/main/subghz/helpers/subghz_txrx.c +++ b/applications/main/subghz/helpers/subghz_txrx.c @@ -305,7 +305,7 @@ SubGhzTxRxStartTxState subghz_txrx_tx_start(SubGhzTxRx* instance, FlipperFormat* ret = SubGhzTxRxStartTxStateErrorParserOthers; } if(ret != SubGhzTxRxStartTxStateOk) { - subghz_transmitter_free(instance->transmitter); + if(instance->transmitter) subghz_transmitter_free(instance->transmitter); if(instance->txrx_state != SubGhzTxRxStateIDLE) { subghz_txrx_idle(instance); } diff --git a/applications/main/subghz/scenes/subghz_scene_receiver.c b/applications/main/subghz/scenes/subghz_scene_receiver.c index 0a7632cbf8..c9ac8f3ff6 100644 --- a/applications/main/subghz/scenes/subghz_scene_receiver.c +++ b/applications/main/subghz/scenes/subghz_scene_receiver.c @@ -370,7 +370,7 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { FURI_LOG_E(TAG, "Missing TE"); } - if(!subghz_tx_start(subghz, key_repeat_data)) { + if(subghz_txrx_tx_start(subghz->txrx, key_repeat_data) != SubGhzTxRxStartTxStateOk) { view_dispatcher_send_custom_event( subghz->view_dispatcher, SubGhzCustomEventViewRepeaterStop); } else { @@ -399,11 +399,12 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { case SubGhzCustomEventViewReceiverOKLong: subghz_txrx_stop(subghz->txrx); subghz_txrx_hopper_pause(subghz->txrx); - if(!subghz_tx_start( - subghz, + if(subghz_txrx_tx_start( + subghz->txrx, subghz_history_get_raw_data( subghz->history, - subghz_view_receiver_get_idx_menu(subghz->subghz_receiver)))) { + subghz_view_receiver_get_idx_menu(subghz->subghz_receiver))) != + SubGhzTxRxStartTxStateOk) { view_dispatcher_send_custom_event( subghz->view_dispatcher, SubGhzCustomEventViewReceiverOKRelease); } else {