flip_library_callback.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifndef FLIP_LIBRARY_CALLBACK_H
  2. #define FLIP_LIBRARY_CALLBACK_H
  3. #include <flip_library.h>
  4. #include <flip_storage/flip_library_storage.h>
  5. #define MAX_TOKENS 512 // Adjust based on expected JSON size
  6. typedef enum FactState FactState;
  7. enum FactState
  8. {
  9. FactStateInitial,
  10. FactStateRequested,
  11. FactStateReceived,
  12. FactStateParsed,
  13. FactStateParseError,
  14. FactStateError,
  15. };
  16. typedef enum FlipLibraryCustomEvent FlipLibraryCustomEvent;
  17. enum FlipLibraryCustomEvent
  18. {
  19. FlipLibraryCustomEventProcess,
  20. };
  21. typedef struct FactLoaderModel FactLoaderModel;
  22. typedef bool (*FactLoaderFetch)(FactLoaderModel *model);
  23. typedef char *(*FactLoaderParser)(FactLoaderModel *model);
  24. struct FactLoaderModel
  25. {
  26. char *title;
  27. char *fact_text;
  28. FactState fact_state;
  29. FactLoaderFetch fetcher;
  30. FactLoaderParser parser;
  31. void *parser_context;
  32. size_t request_index;
  33. size_t request_count;
  34. ViewNavigationCallback back_callback;
  35. FuriTimer *timer;
  36. };
  37. extern uint32_t random_facts_index;
  38. extern bool sent_random_fact_request;
  39. extern bool random_fact_request_success;
  40. extern bool random_fact_request_success_all;
  41. extern char *random_fact;
  42. void flip_library_generic_switch_to_view(FlipLibraryApp *app, char *title, FactLoaderFetch fetcher, FactLoaderParser parser, size_t request_count, ViewNavigationCallback back, uint32_t view_id);
  43. void flip_library_loader_draw_callback(Canvas *canvas, void *model);
  44. void flip_library_loader_init(View *view);
  45. void flip_library_loader_free_model(View *view);
  46. bool flip_library_custom_event_callback(void *context, uint32_t index);
  47. void callback_submenu_choices(void *context, uint32_t index);
  48. void text_updated_ssid(void *context);
  49. void text_updated_password(void *context);
  50. void text_updated_query(void *context);
  51. uint32_t callback_to_submenu(void *context);
  52. uint32_t callback_to_wifi_settings(void *context);
  53. uint32_t callback_to_random_facts(void *context);
  54. void settings_item_selected(void *context, uint32_t index);
  55. /**
  56. * @brief Navigation callback for exiting the application
  57. * @param context The context - unused
  58. * @return next view id (VIEW_NONE to exit the app)
  59. */
  60. uint32_t callback_exit_app(void *context);
  61. uint32_t callback_to_submenu_predict(void *context);
  62. uint32_t callback_to_submenu_library(void *context);
  63. #endif // FLIP_LIBRARY_CALLBACK_H