loader.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include <flip_world.h>
  3. // Below added by Derek Jamison
  4. // FURI_LOG_DEV will log only during app development. Be sure that Settings/System/Log Device is "LPUART"; so we dont use serial port.
  5. #ifdef DEVELOPMENT
  6. #define FURI_LOG_DEV(tag, format, ...) furi_log_print_format(FuriLogLevelInfo, tag, format, ##__VA_ARGS__)
  7. #define DEV_CRASH() furi_crash()
  8. #else
  9. #define FURI_LOG_DEV(tag, format, ...)
  10. #define DEV_CRASH()
  11. #endif
  12. typedef enum DataState DataState;
  13. enum DataState
  14. {
  15. DataStateInitial,
  16. DataStateRequested,
  17. DataStateReceived,
  18. DataStateParsed,
  19. DataStateParseError,
  20. DataStateError,
  21. };
  22. typedef struct DataLoaderModel DataLoaderModel;
  23. typedef bool (*DataLoaderFetch)(DataLoaderModel *model);
  24. typedef char *(*DataLoaderParser)(DataLoaderModel *model);
  25. struct DataLoaderModel
  26. {
  27. char *title;
  28. char *data_text;
  29. DataState data_state;
  30. DataLoaderFetch fetcher;
  31. DataLoaderParser parser;
  32. void *parser_context;
  33. size_t request_index;
  34. size_t request_count;
  35. ViewNavigationCallback back_callback;
  36. FuriTimer *timer;
  37. FlipperHTTP *fhttp;
  38. };
  39. void loader_switch_to_view(FlipWorldApp *app, char *title, DataLoaderFetch fetcher, DataLoaderParser parser, size_t request_count, ViewNavigationCallback back, uint32_t view_id);
  40. void loader_draw_callback(Canvas *canvas, void *model);
  41. void loader_init(View *view);
  42. void loader_widget_set_text(char *message, Widget **widget);
  43. void loader_free_model(View *view);
  44. bool loader_custom_event_callback(void *context, uint32_t index);