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>
85 lines
3.3 KiB
C
85 lines
3.3 KiB
C
#include "../subghz_i.h"
|
|
#include "../views/subghz_receiver.h"
|
|
|
|
void subghz_scene_receiver_callback(SubghzReceverEvent event, void* context) {
|
|
furi_assert(context);
|
|
SubGhz* subghz = context;
|
|
view_dispatcher_send_custom_event(subghz->view_dispatcher, event);
|
|
}
|
|
|
|
const void subghz_scene_receiver_on_enter(void* context) {
|
|
SubGhz* subghz = context;
|
|
SubghzReceiver* subghz_receiver = subghz->subghz_receiver;
|
|
|
|
subghz_receiver_set_callback(subghz_receiver, subghz_scene_receiver_callback, subghz);
|
|
|
|
subghz_receiver_set_protocol(subghz_receiver, subghz->protocol_result, subghz->protocol);
|
|
subghz_receiver_set_worker(subghz_receiver, subghz->worker);
|
|
subghz->state_notifications = NOTIFICATION_RX_STATE;
|
|
view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewReceiver);
|
|
}
|
|
|
|
const bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) {
|
|
SubGhz* subghz = context;
|
|
|
|
if(event.type == SceneManagerEventTypeCustom) {
|
|
switch(event.event) {
|
|
case SubghzReceverEventSave:
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
subghz->frequency = subghz_receiver_get_frequency(subghz->subghz_receiver);
|
|
subghz->preset = subghz_receiver_get_preset(subghz->subghz_receiver);
|
|
subghz->protocol_result = subghz_receiver_get_protocol(subghz->subghz_receiver);
|
|
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName);
|
|
return true;
|
|
break;
|
|
case SubghzReceverEventBack:
|
|
scene_manager_previous_scene(subghz->scene_manager);
|
|
return true;
|
|
break;
|
|
case SubghzReceverEventSendStart:
|
|
subghz->state_notifications = NOTIFICATION_TX_STATE;
|
|
subghz->frequency = subghz_receiver_get_frequency(subghz->subghz_receiver);
|
|
subghz->preset = subghz_receiver_get_preset(subghz->subghz_receiver);
|
|
subghz->protocol_result = subghz_receiver_get_protocol(subghz->subghz_receiver);
|
|
subghz_transmitter_tx_start(subghz);
|
|
return true;
|
|
break;
|
|
case SubghzReceverEventSendStop:
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
subghz_transmitter_tx_stop(subghz);
|
|
return true;
|
|
break;
|
|
case SubghzReceverEventMain:
|
|
subghz->state_notifications = NOTIFICATION_RX_STATE;
|
|
return true;
|
|
break;
|
|
case SubghzReceverEventConfig:
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
return true;
|
|
break;
|
|
case SubghzReceverEventSendHistoryFull:
|
|
subghz->state_notifications = NOTIFICATION_IDLE_STATE;
|
|
return true;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} else if(event.type == SceneManagerEventTypeTick) {
|
|
switch(subghz->state_notifications) {
|
|
case NOTIFICATION_TX_STATE:
|
|
notification_message(subghz->notifications, &sequence_blink_red_10);
|
|
break;
|
|
case NOTIFICATION_RX_STATE:
|
|
notification_message(subghz->notifications, &sequence_blink_blue_10);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
const void subghz_scene_receiver_on_exit(void* context) {
|
|
// SubGhz* subghz = context;
|
|
}
|