e17336498d
* Gui: move rotation logic to ViewPort, replace delayed View switch in ViewDispatcher with event filtering and redirection to previous view. * SubGhz: add function description * Gui, Input: add event id to input events. * SubGhz: fix "crashing on ?" * SubGhz: add icon scanning * SubGhz: updated interface read scene, updated interface config scene * Assets: update subghz assets * SubGhz: replaced the picture in the read scene, changed the paths to additional files * SubGhz: fix deadlock in timer callback * SubGhz: fix icon read scene * SubGhz: fix icon read scene * SubGhz: fix duble text transmitter scene * SubGhz: correct spelling. Gui: bigger queue for ViewDispatcher. * SubGhz: fix creation and transmission of dynamic code without the presence of a manufactory key * SubGhz: fix keelog, setting a name in the absence of a manufactory key * SubGhz: fix load bad keelog key * Format sources * Furi: remove garbage from core. GpioTester: fix memory leak and cleanup * Accessor: remove obsolete notification code * MusicPlayer: remove input event injection * Input: rename id to sequence Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
62 lines
2.5 KiB
C
62 lines
2.5 KiB
C
#include "../subghz_i.h"
|
|
#include "../views/subghz_transmitter.h"
|
|
|
|
void subghz_scene_transmitter_callback(SubghzTransmitterEvent event, void* context) {
|
|
furi_assert(context);
|
|
SubGhz* subghz = context;
|
|
view_dispatcher_send_custom_event(subghz->view_dispatcher, event);
|
|
}
|
|
|
|
const void subghz_scene_transmitter_on_enter(void* context) {
|
|
SubGhz* subghz = context;
|
|
SubghzTransmitter* subghz_transmitter = subghz->subghz_transmitter;
|
|
|
|
subghz_transmitter_set_callback(subghz_transmitter, subghz_scene_transmitter_callback, subghz);
|
|
subghz_transmitter_set_protocol(subghz_transmitter, subghz->protocol_result);
|
|
subghz_transmitter_set_frequency_preset(subghz_transmitter, subghz->frequency, subghz->preset);
|
|
|
|
view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewTransmitter);
|
|
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
}
|
|
|
|
const bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent event) {
|
|
SubGhz* subghz = context;
|
|
|
|
if(event.type == SceneManagerEventTypeCustom) {
|
|
if(event.event == SubghzTransmitterEventSendStart) {
|
|
subghz->state_notifications = NOTIFICATION_TX_STATE;
|
|
subghz_transmitter_tx_start(subghz);
|
|
return true;
|
|
} else if(event.event == SubghzTransmitterEventSendStop) {
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
subghz_transmitter_tx_stop(subghz);
|
|
subghz_sleep();
|
|
return true;
|
|
} else if(event.event == SubghzTransmitterEventBack) {
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
scene_manager_search_and_switch_to_previous_scene(
|
|
subghz->scene_manager, SubGhzSceneStart);
|
|
return true;
|
|
} else if(event.event == SubghzTransmitterEventNoMan) {
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
scene_manager_search_and_switch_to_previous_scene(
|
|
subghz->scene_manager, SubGhzSceneNoMan);
|
|
return true;
|
|
}
|
|
} else if(event.type == SceneManagerEventTypeTick) {
|
|
if(subghz->state_notifications == NOTIFICATION_TX_STATE) {
|
|
notification_message(subghz->notifications, &sequence_blink_red_10);
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
const void subghz_scene_transmitter_on_exit(void* context) {
|
|
SubGhz* subghz = context;
|
|
SubghzTransmitter* subghz_transmitter = subghz->subghz_transmitter;
|
|
subghz_transmitter_set_callback(subghz_transmitter, NULL, subghz);
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
}
|