internal_defs.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #pragma once
  2. #include <furi.h>
  3. #include <furi_hal.h>
  4. #include <m-dict.h>
  5. #include <m-bptree.h>
  6. #include <m-array.h>
  7. #include <cli/cli.h>
  8. #include <gui/gui.h>
  9. #include <gui/view_dispatcher.h>
  10. #include <gui/modules/menu.h>
  11. #include <gui/modules/submenu.h>
  12. typedef struct {
  13. FuriThreadStdoutWriteCallback write_callback;
  14. FuriString* buffer;
  15. } FuriThreadStdout_internal;
  16. typedef struct {
  17. bool is_service;
  18. FuriThreadState state;
  19. int32_t ret;
  20. FuriThreadCallback callback;
  21. void* context;
  22. FuriThreadStateCallback state_callback;
  23. void* state_context;
  24. char* name;
  25. configSTACK_DEPTH_TYPE stack_size;
  26. FuriThreadPriority priority;
  27. TaskHandle_t task_handle;
  28. bool heap_trace_enabled;
  29. size_t heap_size;
  30. FuriThreadStdout_internal output;
  31. } FuriThread_internal;
  32. DICT_DEF2(ViewDict, uint32_t, M_DEFAULT_OPLIST, View*, M_PTR_OPLIST)
  33. typedef struct {
  34. FuriMessageQueue* queue;
  35. Gui* gui;
  36. ViewPort* view_port;
  37. ViewDict_t views;
  38. View* current_view;
  39. View* ongoing_input_view;
  40. uint8_t ongoing_input;
  41. ViewDispatcherCustomEventCallback custom_event_callback;
  42. ViewDispatcherNavigationEventCallback navigation_event_callback;
  43. ViewDispatcherTickEventCallback tick_event_callback;
  44. uint32_t tick_period;
  45. void* event_context;
  46. } ViewDispatcher_internal;
  47. typedef struct {
  48. Gui* gui;
  49. bool is_enabled;
  50. ViewPortOrientation orientation;
  51. uint8_t width;
  52. uint8_t height;
  53. ViewPortDrawCallback draw_callback;
  54. void* draw_callback_context;
  55. ViewPortInputCallback input_callback;
  56. void* input_callback_context;
  57. } ViewPort_internal;
  58. typedef struct {
  59. CliCallback callback;
  60. void* context;
  61. uint32_t flags;
  62. } CliCommand_internal;
  63. #define CLI_COMMANDS_TREE_RANK 4
  64. BPTREE_DEF2(
  65. CliCommandTree_internal,
  66. CLI_COMMANDS_TREE_RANK,
  67. FuriString*,
  68. FURI_STRING_OPLIST,
  69. CliCommand_internal,
  70. M_POD_OPLIST)
  71. #define M_OPL_CliCommandTree_internal_t() BPTREE_OPLIST(CliCommandTree_internal, M_POD_OPLIST)
  72. typedef struct {
  73. CliCommandTree_internal_t commands;
  74. void* mutex;
  75. void* idle_sem;
  76. void* last_line;
  77. void* line;
  78. void* session;
  79. size_t cursor_position;
  80. } Cli_internal;