internal_defs.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. FuriMutex* mutex;
  50. bool is_enabled;
  51. ViewPortOrientation orientation;
  52. uint8_t width;
  53. uint8_t height;
  54. ViewPortDrawCallback draw_callback;
  55. void* draw_callback_context;
  56. ViewPortInputCallback input_callback;
  57. void* input_callback_context;
  58. } ViewPort_internal;
  59. typedef struct {
  60. CliCallback callback;
  61. void* context;
  62. uint32_t flags;
  63. } CliCommand_internal;
  64. #define CLI_COMMANDS_TREE_RANK 4
  65. BPTREE_DEF2(
  66. CliCommandTree_internal,
  67. CLI_COMMANDS_TREE_RANK,
  68. FuriString*,
  69. FURI_STRING_OPLIST,
  70. CliCommand_internal,
  71. M_POD_OPLIST)
  72. #define M_OPL_CliCommandTree_internal_t() BPTREE_OPLIST(CliCommandTree_internal, M_POD_OPLIST)
  73. typedef struct {
  74. CliCommandTree_internal_t commands;
  75. void* mutex;
  76. void* idle_sem;
  77. void* last_line;
  78. void* line;
  79. void* session;
  80. size_t cursor_position;
  81. } Cli_internal;