[FL-1755, FL-1756] added LL_DeInit timers, removed Analyze scene, redesigned astomatic frequency change mechanism, updated subghz read scene interface (#677)
* SubGhz: Fix Timer hopping * SubGhz: add display of received packages and their maximum number. redesigned interface, the maximum number of received packages increased to 50 * SubGhz: add clearing history on exit read scene, jump after saving the key into the history of received signals * SubGhz: Fix honoring the width of the icon for transmitter scene * RFID: Fix [FL-1755] freeze after key emulation * SubGhz: drop analyze scene and views * SubGhz: fix save scene * Input, GUI: new event delivery scheme that groups event for complementarity. * Gui: update View Dispatcher documentation * Gui: remove dead code, wait till all input events are delivered in ViewDispatcher in queue mode. * Gui: update comment in ViewDispatcher * FuriHal: fix incorrect clock disable invocation * FuriHal: proper include * SubGhz: properly reset history in receiver view * Gui: correct view switch order and non-complementary events discarding Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
@@ -11,6 +11,8 @@ struct ViewHolder {
|
||||
|
||||
BackCallback back_callback;
|
||||
void* back_context;
|
||||
|
||||
uint8_t ongoing_input_events_count;
|
||||
};
|
||||
|
||||
static void view_holder_draw_callback(Canvas* canvas, void* context);
|
||||
@@ -92,6 +94,7 @@ void view_holder_start(ViewHolder* view_holder) {
|
||||
}
|
||||
|
||||
void view_holder_stop(ViewHolder* view_holder) {
|
||||
while(view_holder->ongoing_input_events_count > 0) osDelay(1);
|
||||
view_port_enabled_set(view_holder->view_port, false);
|
||||
}
|
||||
|
||||
@@ -114,6 +117,16 @@ static void view_holder_draw_callback(Canvas* canvas, void* context) {
|
||||
|
||||
static void view_holder_input_callback(InputEvent* event, void* context) {
|
||||
ViewHolder* view_holder = context;
|
||||
|
||||
if(event->type == InputTypeRelease && view_holder->ongoing_input_events_count > 0) {
|
||||
view_holder->ongoing_input_events_count--;
|
||||
} else if(event->type == InputTypePress) {
|
||||
view_holder->ongoing_input_events_count++;
|
||||
} else if(view_holder->ongoing_input_events_count == 0) {
|
||||
FURI_LOG_E("ViewHolder", "non-complementary input, discarding");
|
||||
return;
|
||||
}
|
||||
|
||||
bool is_consumed = false;
|
||||
|
||||
if(view_holder->view) {
|
||||
|
Reference in New Issue
Block a user