MX 1 yıl önce
ebeveyn
işleme
7a96cca20e
56 değiştirilmiş dosya ile 233 ekleme ve 146 silme
  1. 6 4
      apps_source_code/Snake_2/snake_20.c
  2. 4 2
      apps_source_code/bluetooth-trigger/bt_trigger.c
  3. 1 1
      apps_source_code/bluetooth-trigger/bt_trigger.h
  4. 3 2
      apps_source_code/bpmtapper/bpm.c
  5. 6 4
      apps_source_code/dice/dice_app.c
  6. 6 4
      apps_source_code/flipper-dcf77/dcf77_app.c
  7. 3 2
      apps_source_code/flipper-flashlight/flashlight.c
  8. 3 2
      apps_source_code/flipperzero-tuning-fork/tuning_fork.c
  9. 3 2
      apps_source_code/game_of_life/game_of_life.c
  10. 3 2
      apps_source_code/gpio_7segment/gpio_7segment_app.c
  11. 3 2
      apps_source_code/gpio_pins_reader/GPIO_reader.c
  12. 3 2
      apps_source_code/ir_intervalometer/intervalometer.c
  13. 3 2
      apps_source_code/mandelbrot/mandelbrot.c
  14. 3 2
      apps_source_code/montyhall/monteyhall.c
  15. 3 2
      apps_source_code/racegame/race.c
  16. 6 4
      apps_source_code/rootoflife/roots_of_life_game.c
  17. 6 4
      apps_source_code/scorched_tanks/scorched_tanks_game_app.c
  18. 3 2
      apps_source_code/servotester/servotester.c
  19. 3 2
      apps_source_code/t-rex-runner/trexrunner.c
  20. 3 2
      apps_source_code/timelapse/zeitraffer.c
  21. 6 4
      base_pack/arkanoid/arkanoid_game.c
  22. 8 4
      base_pack/blackjack/blackjack.c
  23. 6 4
      base_pack/doom/doom.c
  24. 3 2
      base_pack/esp8266_deauth/esp8266_deauth.c
  25. 6 4
      base_pack/flappy_bird/flappy_bird.c
  26. 3 2
      base_pack/gps_nmea_uart/gps.c
  27. 3 2
      base_pack/hc_sr04/hc_sr04.c
  28. 7 4
      base_pack/heap_defence_game/heap_defence.c
  29. 6 4
      base_pack/jetpack_joyride/jetpack.c
  30. 3 2
      base_pack/metronome/metronome.c
  31. 3 2
      base_pack/mfkey/mfkey.c
  32. 3 2
      base_pack/mousejacker/mousejacker.c
  33. 3 2
      base_pack/multi_converter/multi_converter.c
  34. 3 2
      base_pack/nrfsniff/nrfsniff.c
  35. 3 2
      base_pack/sentry_safe/sentry_safe.c
  36. 10 6
      base_pack/solitaire/solitaire.c
  37. 6 4
      base_pack/tetris_game/tetris_game.c
  38. 6 4
      base_pack/tictactoe_game/tictactoe_game.c
  39. 3 2
      base_pack/wifi_scanner/wifi_scanner.c
  40. 4 2
      base_pack/zombiez/zombiez.c
  41. 5 2
      non_catalog_apps/FlipperNightStand_clock/clock_app.c
  42. 3 2
      non_catalog_apps/chess_clock/chess_clock.c
  43. 3 2
      non_catalog_apps/flipper_plane/paperplane.c
  44. 3 2
      non_catalog_apps/logic_analyzer/logic_analyzer_app.c
  45. 4 2
      non_catalog_apps/memsic_2125/memsic_2125_app.c
  46. 3 2
      non_catalog_apps/mousejacker_ms/mousejacker.c
  47. 4 2
      non_catalog_apps/nrf24-batch/nrf24batch.c
  48. 4 2
      non_catalog_apps/nrf24scan/nrf24scan.c
  49. 3 2
      non_catalog_apps/nrfsniff_ms/nrfsniff.c
  50. 3 2
      non_catalog_apps/rc2014_coleco/coleco.c
  51. 4 2
      non_catalog_apps/secret_toggle/secret_toggle.c
  52. 4 1
      non_catalog_apps/step_counter/stepcounter.c
  53. 6 4
      non_catalog_apps/tama_p1/tama_p1.c
  54. 6 4
      non_catalog_apps/tanksgame/tanks_game.c
  55. 3 2
      non_catalog_apps/usping/usping.c
  56. 6 4
      non_catalog_apps/wii_ec_anal/wii_anal.c

+ 6 - 4
apps_source_code/Snake_2/snake_20.c

@@ -191,15 +191,17 @@ static void snake_game_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(snake_state->mutex);
 }
 
-static void snake_game_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void snake_game_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     SnakeEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void snake_game_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void snake_game_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     SnakeEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 4 - 2
apps_source_code/bluetooth-trigger/bt_trigger.c

@@ -201,9 +201,11 @@ static void input_callback(InputEvent* input_event, void* ctx) {
 }
 
 //Timer callback
-static void timer_callback(FuriMessageQueue* event_queue) {
+static void timer_callback(void* ctx) {
     //check eventqueue is not null
-    furi_assert(event_queue);
+    furi_assert(ctx);
+    //Getting our event queue
+    FuriMessageQueue* event_queue = ctx;
     //creating event and adding it to the event list
     IosTriggerEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 1 - 1
apps_source_code/bluetooth-trigger/bt_trigger.h

@@ -47,7 +47,7 @@ typedef struct {
 
 static void draw_callback(Canvas* canvas, void* ctx);
 static void input_callback(InputEvent* input_event, void* ctx);
-static void timer_callback(FuriMessageQueue* event_queue);
+static void timer_callback(void* ctx);
 static void bt_hid_connection_status_changed_callback(BtStatus status, void* context);
 AppStruct* appStructAlloc();
 void cleanUpBeforeYouLeave(AppStruct* app);

+ 3 - 2
apps_source_code/bpmtapper/bpm.c

@@ -119,8 +119,9 @@ static void show_hello() {
     // END HELLO DIALOG
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 6 - 4
apps_source_code/dice/dice_app.c

@@ -270,15 +270,17 @@ static void draw_callback(Canvas* canvas, void* ctx) {
     furi_mutex_release(state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     AppEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     AppEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 6 - 4
apps_source_code/flipper-dcf77/dcf77_app.c

@@ -223,15 +223,17 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(app_fsm->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     AppEvent event = {.type = EventKeyPress, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void timer_tick_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void timer_tick_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     AppEvent event = {.type = EventTimerTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
apps_source_code/flipper-flashlight/flashlight.c

@@ -48,8 +48,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
apps_source_code/flipperzero-tuning-fork/tuning_fork.c

@@ -187,8 +187,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(tuning_fork_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
apps_source_code/game_of_life/game_of_life.c

@@ -85,8 +85,9 @@ static void update_field(State* state) {
     }
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     AppEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
apps_source_code/gpio_7segment/gpio_7segment_app.c

@@ -101,8 +101,9 @@ typedef struct {
 // Invoked when input (button press) is detected.  Queues message and returns to caller.
 // @param input_event the input event that caused the callback to be invoked.
 // @param queue the message queue for queueing key event.
-static void gpio_7segment_input_callback(InputEvent* input_event, FuriMessageQueue* queue) {
-    furi_assert(queue);
+static void gpio_7segment_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* queue = ctx;
     GpioEvent event = {.type = GpioEventTypeKey, .input = *input_event};
     furi_message_queue_put(queue, &event, FuriWaitForever);
 }

+ 3 - 2
apps_source_code/gpio_pins_reader/GPIO_reader.c

@@ -63,8 +63,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
apps_source_code/ir_intervalometer/intervalometer.c

@@ -478,8 +478,9 @@ static void flipvalo_run_state_init(struct flipvalo_run_state* fv_run_state) {
     fv_run_state->tick_cur = 0;
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
     struct plugin_event event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }

+ 3 - 2
apps_source_code/mandelbrot/mandelbrot.c

@@ -78,8 +78,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
apps_source_code/montyhall/monteyhall.c

@@ -301,8 +301,9 @@ static void montyhall_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(monty_state->mutex);
 }
 
-static void montyhall_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void montyhall_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     furi_message_queue_put(event_queue, input_event, FuriWaitForever);
 }

+ 3 - 2
apps_source_code/racegame/race.c

@@ -160,8 +160,9 @@ static void input_callback(InputEvent* input_event, void* ctx) {
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
     RaceGameEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);
 }

+ 6 - 4
apps_source_code/rootoflife/roots_of_life_game.c

@@ -603,15 +603,17 @@ static void roots_draw_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(state->mutex);
 }
 
-static void roots_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void roots_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void roots_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void roots_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 6 - 4
apps_source_code/scorched_tanks/scorched_tanks_game_app.c

@@ -350,15 +350,17 @@ static void scorched_tanks_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(game_state->mutex);
 }
 
-static void scorched_tanks_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void scorched_tanks_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     ScorchedTanksEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void scorched_tanks_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void scorched_tanks_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     ScorchedTanksEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
apps_source_code/servotester/servotester.c

@@ -67,8 +67,9 @@ static void servotester_input_callback(InputEvent* input_event, void* ctx) {
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void servotester_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void servotester_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     ServoTesterEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
apps_source_code/t-rex-runner/trexrunner.c

@@ -136,8 +136,9 @@ static void timer_callback(void* ctx) {
     furi_mutex_release(game_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
apps_source_code/timelapse/zeitraffer.c

@@ -106,9 +106,10 @@ static void input_callback(InputEvent* input_event, void* ctx) {
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void timer_callback(FuriMessageQueue* event_queue) {
+static void timer_callback(void* ctx) {
     // Проверяем, что контекст не нулевой
-    furi_assert(event_queue);
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     ZeitrafferEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 6 - 4
base_pack/arkanoid/arkanoid_game.c

@@ -355,15 +355,17 @@ static void arkanoid_draw_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(arkanoid_state->mutex);
 }
 
-static void arkanoid_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void arkanoid_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void arkanoid_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void arkanoid_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 8 - 4
base_pack/blackjack/blackjack.c

@@ -463,14 +463,18 @@ void init(GameState* game_state) {
     start_round(game_state);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     AppEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     AppEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);
 }

+ 6 - 4
base_pack/doom/doom.c

@@ -794,8 +794,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, 0);
@@ -844,8 +845,9 @@ static void doom_state_init(PluginState* const plugin_state) {
 #endif
 }
 
-static void doom_game_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void doom_game_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
base_pack/esp8266_deauth/esp8266_deauth.c

@@ -205,8 +205,9 @@ static void esp8266_deauth_module_render_callback(Canvas* const canvas, void* ct
 }
 
 static void
-    esp8266_deauth_module_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+    esp8266_deauth_module_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     SPluginEvent event = {.m_type = EventTypeKey, .m_input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 6 - 4
base_pack/flappy_bird/flappy_bird.c

@@ -269,15 +269,17 @@ static void flappy_game_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(game_state->mutex);
 }
 
-static void flappy_game_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void flappy_game_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void flappy_game_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void flappy_game_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
base_pack/gps_nmea_uart/gps.c

@@ -123,8 +123,9 @@ static void render_callback(Canvas* const canvas, void* context) {
     furi_mutex_release(gps_uart->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
base_pack/hc_sr04/hc_sr04.c

@@ -89,8 +89,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 7 - 4
base_pack/heap_defence_game/heap_defence.c

@@ -484,16 +484,19 @@ static void heap_defense_render_callback(Canvas* const canvas, void* mutex) {
     furi_mutex_release(game->mutex);
 }
 
-static void heap_defense_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
+static void heap_defense_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     if(input_event->type != InputTypePress && input_event->type != InputTypeLong) return;
 
-    furi_assert(event_queue);
     GameEvent event = {.type = EventKeyPress, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void heap_defense_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void heap_defense_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event;
     event.type = EventGameTick;

+ 6 - 4
base_pack/jetpack_joyride/jetpack.c

@@ -257,15 +257,17 @@ static void jetpack_game_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(game_state->mutex);
 }
 
-static void jetpack_game_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void jetpack_game_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void jetpack_game_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void jetpack_game_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
base_pack/metronome/metronome.c

@@ -135,8 +135,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(metronome_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
base_pack/mfkey/mfkey.c

@@ -756,8 +756,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(program_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
base_pack/mousejacker/mousejacker.c

@@ -92,8 +92,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
base_pack/multi_converter/multi_converter.c

@@ -22,8 +22,9 @@ static void multi_converter_render_callback(Canvas* const canvas, void* ctx) {
 }
 
 static void
-    multi_converter_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+    multi_converter_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     MultiConverterEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
base_pack/nrfsniff/nrfsniff.c

@@ -128,8 +128,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
base_pack/sentry_safe/sentry_safe.c

@@ -45,8 +45,9 @@ static void sentry_safe_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(sentry_state->mutex);
 }
 
-static void sentry_safe_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void sentry_safe_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     Event event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 10 - 6
base_pack/solitaire/solitaire.c

@@ -434,14 +434,18 @@ void init_start(GameState *game_state) {
 }
 
 
-static void input_callback(InputEvent *input_event, FuriMessageQueue *event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent *input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     AppEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void update_timer_callback(FuriMessageQueue *event_queue) {
-    furi_assert(event_queue);
+static void update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     AppEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);
 }
@@ -449,8 +453,8 @@ static void update_timer_callback(FuriMessageQueue *event_queue) {
 int32_t solitaire_app(void *p) {
     UNUSED(p);
     int32_t return_code = 0;
-    FuriMessageQueue *event_queue = furi_message_queue_alloc(8, sizeof(AppEvent));
-    GameState *game_state = malloc(sizeof(GameState));
+    FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(AppEvent));
+    GameState* game_state = malloc(sizeof(GameState));
     init_start(game_state);
     set_card_graphics(&I_card_graphics);
 

+ 6 - 4
base_pack/tetris_game/tetris_game.c

@@ -229,8 +229,9 @@ static void tetris_game_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(tetris_state->mutex);
 }
 
-static void tetris_game_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void tetris_game_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     TetrisEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
@@ -382,8 +383,9 @@ static bool tetris_game_piece_at_bottom(TetrisState* tetris_state, Piece* newPie
     return false;
 }
 
-static void tetris_game_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void tetris_game_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     TetrisEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 6 - 4
base_pack/tictactoe_game/tictactoe_game.c

@@ -288,15 +288,17 @@ static void tictactoe_draw_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(ticst->mutex);
 }
 
-static void tictactoe_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void tictactoe_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void tictactoe_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void tictactoe_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     GameEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
base_pack/wifi_scanner/wifi_scanner.c

@@ -636,8 +636,9 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(app->mutex);
 }
 
-static void wifi_module_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void wifi_module_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     SPluginEvent event = {.m_type = EventTypeKey, .m_input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 4 - 2
base_pack/zombiez/zombiez.c

@@ -184,8 +184,10 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }

+ 5 - 2
non_catalog_apps/FlipperNightStand_clock/clock_app.c

@@ -82,13 +82,16 @@ void handle_down() {
     set_backlight_brightness((float)(brightness / 100.f));
 }
 
-static void clock_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void clock_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
 //do you are have stupid?
+// idk who left that comment here, but i don't have stupid sorry
 void elements_progress_bar_vertical(
     Canvas* canvas,
     uint8_t x,

+ 3 - 2
non_catalog_apps/chess_clock/chess_clock.c

@@ -60,8 +60,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     elements_multiline_text_aligned(canvas, 64, 32, AlignCenter, AlignCenter, text);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
non_catalog_apps/flipper_plane/paperplane.c

@@ -44,8 +44,9 @@ static void timer_callback(void* ctx) {
     furi_mutex_release(game_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
non_catalog_apps/logic_analyzer/logic_analyzer_app.c

@@ -83,8 +83,9 @@ static void render_callback(Canvas* const canvas, void* cb_ctx) {
     furi_mutex_release(app->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     /* better skip than sorry */
     if(furi_message_queue_get_count(event_queue) < QUEUE_SIZE) {

+ 4 - 2
non_catalog_apps/memsic_2125/memsic_2125_app.c

@@ -64,8 +64,10 @@ typedef struct {
 // We queue a message and then return to the caller.
 // @input_event the button that triggered the callback.
 // @queue our message queue.
-static void input_callback(InputEvent* input_event, FuriMessageQueue* queue) {
-    furi_assert(queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* queue = ctx;
+
     DemoEvent event = {.type = DemoEventTypeKey, .input = *input_event};
     furi_message_queue_put(queue, &event, FuriWaitForever);
 }

+ 3 - 2
non_catalog_apps/mousejacker_ms/mousejacker.c

@@ -86,8 +86,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 4 - 2
non_catalog_apps/nrf24-batch/nrf24batch.c

@@ -1091,8 +1091,10 @@ static void save_batch(void) {
     }
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }

+ 4 - 2
non_catalog_apps/nrf24scan/nrf24scan.c

@@ -456,8 +456,10 @@ static uint8_t load_settings_file(Stream* file_stream) {
     return err;
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }

+ 3 - 2
non_catalog_apps/nrfsniff_ms/nrfsniff.c

@@ -129,8 +129,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 3 - 2
non_catalog_apps/rc2014_coleco/coleco.c

@@ -131,8 +131,9 @@ static void render_callback(Canvas* const canvas, void* context) {
     furi_mutex_release(coleco->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 4 - 2
non_catalog_apps/secret_toggle/secret_toggle.c

@@ -232,8 +232,10 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_string_free(tempStatusStr);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
+
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }

+ 4 - 1
non_catalog_apps/step_counter/stepcounter.c

@@ -65,7 +65,10 @@ void step_callback(void* ctx) {
    }
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* queue) {
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* queue = ctx;
+
     StepCounterEvent event = {
         .type = StepCounterEventTypeKey,
         .input_event.key = input_event->key,

+ 6 - 4
non_catalog_apps/tama_p1/tama_p1.c

@@ -458,15 +458,17 @@ static void tama_p1_draw_callback(Canvas* const canvas, void* cb_ctx) {
     furi_mutex_release(mutex);
 }
 
-static void tama_p1_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void tama_p1_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     TamaEvent event = {.type = EventTypeInput, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void tama_p1_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void tama_p1_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     TamaEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 6 - 4
non_catalog_apps/tanksgame/tanks_game.c

@@ -619,15 +619,17 @@ static void tanks_game_render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(tanks_state->mutex);
 }
 
-static void tanks_game_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void tanks_game_input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     TanksEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);
 }
 
-static void tanks_game_update_timer_callback(FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void tanks_game_update_timer_callback(void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     TanksEvent event = {.type = EventTypeTick};
     furi_message_queue_put(event_queue, &event, 0);

+ 3 - 2
non_catalog_apps/usping/usping.c

@@ -91,8 +91,9 @@ static void render_callback(Canvas* const canvas, void* ctx) {
     furi_mutex_release(plugin_state->mutex);
 }
 
-static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
-    furi_assert(event_queue);
+static void input_callback(InputEvent* input_event, void* ctx) {
+    furi_assert(ctx);
+    FuriMessageQueue* event_queue = ctx;
 
     PluginEvent event = {.type = EventTypeKey, .input = *input_event};
     furi_message_queue_put(event_queue, &event, FuriWaitForever);

+ 6 - 4
non_catalog_apps/wii_ec_anal/wii_anal.c

@@ -44,9 +44,10 @@
 // OS Callback : Timer tick
 // We register this function to be called when the OS signals a timer 'tick' event
 //
-static void cbTimer(FuriMessageQueue* queue) {
+static void cbTimer(void* ctx) {
     ENTER;
-    furi_assert(queue);
+    furi_assert(ctx);
+    FuriMessageQueue* queue = ctx;
 
     eventMsg_t message = {.id = EVID_TICK};
     furi_message_queue_put(queue, &message, 0);
@@ -59,10 +60,11 @@ static void cbTimer(FuriMessageQueue* queue) {
 // OS Callback : Keypress
 // We register this function to be called when the OS detects a keypress
 //
-static void cbInput(InputEvent* event, FuriMessageQueue* queue) {
+static void cbInput(InputEvent* event, void* ctx) {
     ENTER;
-    furi_assert(queue);
+    furi_assert(ctx);
     furi_assert(event);
+    FuriMessageQueue* queue = ctx;
 
     // Put an "input" event message on the message queue
     eventMsg_t message = {.id = EVID_KEY, .input = *event};