internal_defs.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. typedef struct {
  9. FuriThreadStdoutWriteCallback write_callback;
  10. FuriString* buffer;
  11. } FuriThreadStdout_internal;
  12. typedef struct {
  13. bool is_service;
  14. FuriThreadState state;
  15. int32_t ret;
  16. FuriThreadCallback callback;
  17. void* context;
  18. FuriThreadStateCallback state_callback;
  19. void* state_context;
  20. char* name;
  21. configSTACK_DEPTH_TYPE stack_size;
  22. FuriThreadPriority priority;
  23. TaskHandle_t task_handle;
  24. bool heap_trace_enabled;
  25. size_t heap_size;
  26. FuriThreadStdout_internal output;
  27. } FuriThread_internal;
  28. DICT_DEF2(ViewDict, uint32_t, M_DEFAULT_OPLIST, View*, M_PTR_OPLIST)
  29. typedef struct {
  30. FuriMessageQueue* queue;
  31. Gui* gui;
  32. ViewPort* view_port;
  33. ViewDict_t views;
  34. View* current_view;
  35. View* ongoing_input_view;
  36. uint8_t ongoing_input;
  37. ViewDispatcherCustomEventCallback custom_event_callback;
  38. ViewDispatcherNavigationEventCallback navigation_event_callback;
  39. ViewDispatcherTickEventCallback tick_event_callback;
  40. uint32_t tick_period;
  41. void* event_context;
  42. } ViewDispatcher_internal;
  43. typedef struct {
  44. Gui* gui;
  45. bool is_enabled;
  46. ViewPortOrientation orientation;
  47. uint8_t width;
  48. uint8_t height;
  49. ViewPortDrawCallback draw_callback;
  50. void* draw_callback_context;
  51. ViewPortInputCallback input_callback;
  52. void* input_callback_context;
  53. } ViewPort_internal;
  54. typedef struct {
  55. char* args;
  56. FuriThread* thread;
  57. bool insomniac;
  58. void* fap;
  59. } LoaderAppData_internal;
  60. typedef struct {
  61. void* pubsub;
  62. void* queue;
  63. void* loader_menu;
  64. void* loader_applications;
  65. LoaderAppData_internal app;
  66. } Loader_internal;
  67. typedef struct {
  68. CliCallback callback;
  69. void* context;
  70. uint32_t flags;
  71. } CliCommand_internal;
  72. #define CLI_COMMANDS_TREE_RANK 4
  73. BPTREE_DEF2(
  74. CliCommandTree_internal,
  75. CLI_COMMANDS_TREE_RANK,
  76. FuriString*,
  77. FURI_STRING_OPLIST,
  78. CliCommand_internal,
  79. M_POD_OPLIST)
  80. #define M_OPL_CliCommandTree_internal_t() BPTREE_OPLIST(CliCommandTree_internal, M_POD_OPLIST)
  81. typedef struct {
  82. CliCommandTree_internal_t commands;
  83. void* mutex;
  84. void* idle_sem;
  85. void* last_line;
  86. void* line;
  87. void* session;
  88. size_t cursor_position;
  89. } Cli_internal;