mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 16:38:36 -07:00
Fix favorite timeout bugs with subghz
This commit is contained in:
@@ -124,7 +124,7 @@ void subghz_scene_read_raw_on_enter(void* context) {
|
||||
view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdReadRAW);
|
||||
|
||||
// Start sending immediately with favorites
|
||||
if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW)) {
|
||||
if(subghz->fav_timeout) {
|
||||
with_view_model(
|
||||
subghz->subghz_read_raw->view,
|
||||
SubGhzReadRAWModel * model,
|
||||
@@ -293,7 +293,7 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) {
|
||||
subghz_read_raw_stop_send(subghz->subghz_read_raw);
|
||||
|
||||
// Exit / stop with favorites
|
||||
if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW)) {
|
||||
if(subghz->fav_timeout) {
|
||||
while(scene_manager_handle_back_event(subghz->scene_manager))
|
||||
;
|
||||
view_dispatcher_stop(subghz->view_dispatcher);
|
||||
|
||||
@@ -51,8 +51,6 @@ bool subghz_scene_transmitter_update_data_show(void* context) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
FuriTimer* fav_timer = NULL;
|
||||
|
||||
void fav_timer_callback(void* context) {
|
||||
SubGhz* subghz = context;
|
||||
scene_manager_handle_custom_event(
|
||||
@@ -77,7 +75,7 @@ void subghz_scene_transmitter_on_enter(void* context) {
|
||||
view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdTransmitter);
|
||||
|
||||
// Auto send and exit with favorites
|
||||
if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneTransmitter)) {
|
||||
if(subghz->fav_timeout) {
|
||||
subghz_custom_btn_set(0);
|
||||
scene_manager_handle_custom_event(
|
||||
subghz->scene_manager, SubGhzCustomEventViewTransmitterSendStart);
|
||||
@@ -86,9 +84,10 @@ void subghz_scene_transmitter_on_enter(void* context) {
|
||||
SubGhzViewTransmitterModel * model,
|
||||
{ model->show_button = false; },
|
||||
true);
|
||||
fav_timer = furi_timer_alloc(fav_timer_callback, FuriTimerTypeOnce, subghz);
|
||||
subghz->fav_timer = furi_timer_alloc(fav_timer_callback, FuriTimerTypeOnce, subghz);
|
||||
furi_timer_start(
|
||||
fav_timer, XTREME_SETTINGS()->favorite_timeout * furi_kernel_get_tick_frequency());
|
||||
subghz->fav_timer,
|
||||
XTREME_SETTINGS()->favorite_timeout * furi_kernel_get_tick_frequency());
|
||||
subghz->state_notifications = SubGhzNotificationStateTx;
|
||||
}
|
||||
}
|
||||
@@ -134,11 +133,7 @@ bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent event) {
|
||||
subghz_sleep(subghz);
|
||||
furi_hal_subghz_set_rolling_counter_mult(tmp_counter);
|
||||
}
|
||||
if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneTransmitter)) {
|
||||
if(fav_timer) {
|
||||
furi_timer_stop(fav_timer);
|
||||
furi_timer_free(fav_timer);
|
||||
}
|
||||
if(subghz->fav_timeout) {
|
||||
while(scene_manager_handle_back_event(subghz->scene_manager))
|
||||
;
|
||||
view_dispatcher_stop(subghz->view_dispatcher);
|
||||
|
||||
@@ -474,16 +474,13 @@ int32_t subghz_app(char* p) {
|
||||
if(subghz_key_load(subghz, p, true)) {
|
||||
furi_string_set(subghz->file_path, (const char*)p);
|
||||
|
||||
subghz->fav_timeout = is_favorite;
|
||||
if((!strcmp(subghz->txrx->decoder_result->protocol->name, "RAW"))) {
|
||||
//Load Raw TX
|
||||
subghz->txrx->rx_key_state = SubGhzRxKeyStateRAWLoad;
|
||||
scene_manager_set_scene_state(
|
||||
subghz->scene_manager, SubGhzSceneReadRAW, is_favorite);
|
||||
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneReadRAW);
|
||||
} else {
|
||||
//Load transmitter TX
|
||||
scene_manager_set_scene_state(
|
||||
subghz->scene_manager, SubGhzSceneTransmitter, is_favorite);
|
||||
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTransmitter);
|
||||
}
|
||||
} else {
|
||||
@@ -512,6 +509,11 @@ int32_t subghz_app(char* p) {
|
||||
|
||||
view_dispatcher_run(subghz->view_dispatcher);
|
||||
|
||||
if(subghz->fav_timer) {
|
||||
furi_timer_stop(subghz->fav_timer);
|
||||
furi_timer_free(subghz->fav_timer);
|
||||
}
|
||||
|
||||
furi_hal_power_suppress_charge_exit();
|
||||
// Disable power for External CC1101 if it was enabled and module is connected
|
||||
furi_hal_subghz_disable_ext_power();
|
||||
|
||||
@@ -131,6 +131,9 @@ struct SubGhz {
|
||||
SubGhzDecodeRawState decode_raw_state;
|
||||
SubGhzFileEncoderWorker* decode_raw_file_worker_encoder;
|
||||
|
||||
bool fav_timeout;
|
||||
FuriTimer* fav_timer;
|
||||
|
||||
void* rpc_ctx;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user