loader_i.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include <furi.h>
  3. #include <toolbox/api_lock.h>
  4. #include "loader.h"
  5. #include "loader_menu.h"
  6. typedef struct {
  7. char* args;
  8. char* name;
  9. FuriThread* thread;
  10. bool insomniac;
  11. } LoaderAppData;
  12. struct Loader {
  13. FuriPubSub* pubsub;
  14. FuriMessageQueue* queue;
  15. LoaderMenu* loader_menu;
  16. LoaderAppData app;
  17. };
  18. typedef enum {
  19. LoaderMessageTypeStartByName,
  20. LoaderMessageTypeAppClosed,
  21. LoaderMessageTypeShowMenu,
  22. LoaderMessageTypeMenuClosed,
  23. LoaderMessageTypeLock,
  24. LoaderMessageTypeUnlock,
  25. LoaderMessageTypeIsLocked,
  26. } LoaderMessageType;
  27. typedef struct {
  28. const char* name;
  29. const char* args;
  30. } LoaderMessageStartByName;
  31. typedef struct {
  32. LoaderStatus value;
  33. } LoaderMessageLoaderStatusResult;
  34. typedef struct {
  35. bool value;
  36. } LoaderMessageBoolResult;
  37. typedef struct {
  38. FuriApiLock api_lock;
  39. LoaderMessageType type;
  40. union {
  41. LoaderMessageStartByName start;
  42. };
  43. union {
  44. LoaderMessageLoaderStatusResult* status_value;
  45. LoaderMessageBoolResult* bool_value;
  46. };
  47. } LoaderMessage;