2
2
3
3
#include <dolphin/dolphin.h>
4
4
5
- typedef enum {
6
- InfraredSceneLearnSuccessStateIdle = 0 ,
7
- InfraredSceneLearnSuccessStateSending = 1 ,
8
- } InfraredSceneLearnSuccessState ;
9
-
10
5
static void
11
6
infrared_scene_learn_success_dialog_result_callback (DialogExResult result , void * context ) {
12
7
Infrared * infrared = context ;
@@ -21,9 +16,6 @@ void infrared_scene_learn_success_on_enter(void* context) {
21
16
DOLPHIN_DEED (DolphinDeedIrLearnSuccess );
22
17
infrared_play_notification_message (infrared , InfraredNotificationMessageGreenOn );
23
18
24
- infrared_worker_tx_set_get_signal_callback (
25
- infrared -> worker , infrared_worker_tx_get_signal_steady_callback , context );
26
-
27
19
if (infrared_signal_is_raw (signal )) {
28
20
InfraredRawSignal * raw = infrared_signal_get_raw_signal (signal );
29
21
dialog_ex_set_header (dialog_ex , "Unknown" , 95 , 10 , AlignCenter , AlignCenter );
@@ -63,57 +55,42 @@ void infrared_scene_learn_success_on_enter(void* context) {
63
55
dialog_ex_set_context (dialog_ex , context );
64
56
dialog_ex_enable_extended_events (dialog_ex );
65
57
66
- scene_manager_set_scene_state (
67
- infrared -> scene_manager , InfraredSceneLearnSuccess , InfraredSceneLearnSuccessStateIdle );
68
58
view_dispatcher_switch_to_view (infrared -> view_dispatcher , InfraredViewDialogEx );
69
59
}
70
60
71
61
bool infrared_scene_learn_success_on_event (void * context , SceneManagerEvent event ) {
72
62
Infrared * infrared = context ;
73
63
SceneManager * scene_manager = infrared -> scene_manager ;
74
- uint32_t scene_state = scene_manager_get_scene_state ( scene_manager , InfraredSceneLearnSuccess ) ;
64
+ const bool is_transmitter_idle = ! infrared -> app_state . is_transmitting ;
75
65
bool consumed = false;
76
66
77
67
if (event .type == SceneManagerEventTypeTick ) {
78
- if (scene_state == InfraredSceneLearnSuccessStateIdle ) {
68
+ if (is_transmitter_idle ) {
79
69
infrared_play_notification_message (infrared , InfraredNotificationMessageGreenOn );
80
70
}
81
71
consumed = true;
82
72
} else if (event .type == SceneManagerEventTypeBack ) {
83
- if (scene_state == InfraredSceneLearnSuccessStateIdle ) {
73
+ if (is_transmitter_idle ) {
84
74
scene_manager_next_scene (scene_manager , InfraredSceneAskBack );
85
75
}
86
76
consumed = true;
87
77
} else if (event .type == SceneManagerEventTypeCustom ) {
88
78
if (event .event == DialogExResultLeft ) {
89
- if (scene_state == InfraredSceneLearnSuccessStateIdle ) {
79
+ if (is_transmitter_idle ) {
90
80
scene_manager_next_scene (scene_manager , InfraredSceneAskRetry );
91
81
}
92
82
consumed = true;
93
83
} else if (event .event == DialogExResultRight ) {
94
- if (scene_state == InfraredSceneLearnSuccessStateIdle ) {
84
+ if (is_transmitter_idle ) {
95
85
scene_manager_next_scene (scene_manager , InfraredSceneLearnEnterName );
96
86
}
97
87
consumed = true;
98
88
} else if (event .event == DialogExPressCenter ) {
99
- if (scene_state == InfraredSceneLearnSuccessStateIdle ) {
100
- scene_manager_set_scene_state (
101
- scene_manager ,
102
- InfraredSceneLearnSuccess ,
103
- InfraredSceneLearnSuccessStateSending );
104
- infrared_tx_start_received (infrared );
105
- infrared_play_notification_message (
106
- infrared , InfraredNotificationMessageBlinkStartSend );
107
- }
89
+ infrared_play_notification_message (infrared , InfraredNotificationMessageGreenOff );
90
+ infrared_tx_start_received (infrared );
108
91
consumed = true;
109
92
} else if (event .event == DialogExReleaseCenter ) {
110
- if (scene_state == InfraredSceneLearnSuccessStateSending ) {
111
- scene_manager_set_scene_state (
112
- scene_manager , InfraredSceneLearnSuccess , InfraredSceneLearnSuccessStateIdle );
113
- infrared_tx_stop (infrared );
114
- infrared_play_notification_message (infrared , InfraredNotificationMessageBlinkStop );
115
- infrared_play_notification_message (infrared , InfraredNotificationMessageGreenOff );
116
- }
93
+ infrared_tx_stop (infrared );
117
94
consumed = true;
118
95
}
119
96
}
@@ -123,9 +100,6 @@ bool infrared_scene_learn_success_on_event(void* context, SceneManagerEvent even
123
100
124
101
void infrared_scene_learn_success_on_exit (void * context ) {
125
102
Infrared * infrared = context ;
126
- InfraredWorker * worker = infrared -> worker ;
127
103
dialog_ex_reset (infrared -> dialog_ex );
128
- infrared_play_notification_message (infrared , InfraredNotificationMessageBlinkStop );
129
104
infrared_play_notification_message (infrared , InfraredNotificationMessageGreenOff );
130
- infrared_worker_tx_set_get_signal_callback (worker , NULL , NULL );
131
105
}
0 commit comments