[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:
Skorpionm
2021-08-31 00:05:09 +04:00
committed by GitHub
parent 8b9210704a
commit 6f7bcdf9a7
21 changed files with 147 additions and 366 deletions

View File

@@ -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) {