infrared_i.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #pragma once
  2. #include <gui/gui.h>
  3. #include <gui/view.h>
  4. #include <gui/view_stack.h>
  5. #include <gui/view_dispatcher.h>
  6. #include <gui/scene_manager.h>
  7. #include <gui/modules/popup.h>
  8. #include <gui/modules/loading.h>
  9. #include <gui/modules/submenu.h>
  10. #include <gui/modules/dialog_ex.h>
  11. #include <gui/modules/text_input.h>
  12. #include <gui/modules/button_menu.h>
  13. #include <gui/modules/button_panel.h>
  14. #include <storage/storage.h>
  15. #include <dialogs/dialogs.h>
  16. #include <notification/notification_messages.h>
  17. #include <infrared_worker.h>
  18. #include "infrared.h"
  19. #include "infrared_remote.h"
  20. #include "infrared_brute_force.h"
  21. #include "infrared_custom_event.h"
  22. #include "scenes/infrared_scene.h"
  23. #include "views/infrared_progress_view.h"
  24. #include "views/infrared_debug_view.h"
  25. #include "rpc/rpc_app.h"
  26. #define INFRARED_FILE_NAME_SIZE 100
  27. #define INFRARED_TEXT_STORE_NUM 2
  28. #define INFRARED_TEXT_STORE_SIZE 128
  29. #define INFRARED_MAX_BUTTON_NAME_LENGTH 22
  30. #define INFRARED_MAX_REMOTE_NAME_LENGTH 22
  31. #define INFRARED_APP_FOLDER ANY_PATH("infrared")
  32. #define INFRARED_APP_EXTENSION ".ir"
  33. #define INFRARED_DEFAULT_REMOTE_NAME "Remote"
  34. #define INFRARED_LOG_TAG "InfraredApp"
  35. typedef enum {
  36. InfraredButtonIndexNone = -1,
  37. } InfraredButtonIndex;
  38. typedef enum {
  39. InfraredEditTargetNone,
  40. InfraredEditTargetRemote,
  41. InfraredEditTargetButton,
  42. } InfraredEditTarget;
  43. typedef enum {
  44. InfraredEditModeNone,
  45. InfraredEditModeRename,
  46. InfraredEditModeDelete,
  47. } InfraredEditMode;
  48. typedef struct {
  49. bool is_learning_new_remote;
  50. bool is_debug_enabled;
  51. bool is_transmitting;
  52. InfraredEditTarget edit_target : 8;
  53. InfraredEditMode edit_mode : 8;
  54. int32_t current_button_index;
  55. } InfraredAppState;
  56. struct Infrared {
  57. SceneManager* scene_manager;
  58. ViewDispatcher* view_dispatcher;
  59. Gui* gui;
  60. Storage* storage;
  61. DialogsApp* dialogs;
  62. NotificationApp* notifications;
  63. InfraredWorker* worker;
  64. InfraredRemote* remote;
  65. InfraredSignal* received_signal;
  66. InfraredBruteForce* brute_force;
  67. Submenu* submenu;
  68. TextInput* text_input;
  69. DialogEx* dialog_ex;
  70. ButtonMenu* button_menu;
  71. Popup* popup;
  72. ViewStack* view_stack;
  73. InfraredDebugView* debug_view;
  74. ButtonPanel* button_panel;
  75. Loading* loading;
  76. InfraredProgressView* progress;
  77. string_t file_path;
  78. char text_store[INFRARED_TEXT_STORE_NUM][INFRARED_TEXT_STORE_SIZE + 1];
  79. InfraredAppState app_state;
  80. void* rpc_ctx;
  81. };
  82. typedef enum {
  83. InfraredViewSubmenu,
  84. InfraredViewTextInput,
  85. InfraredViewDialogEx,
  86. InfraredViewButtonMenu,
  87. InfraredViewPopup,
  88. InfraredViewStack,
  89. InfraredViewDebugView,
  90. } InfraredView;
  91. typedef enum {
  92. InfraredNotificationMessageSuccess,
  93. InfraredNotificationMessageGreenOn,
  94. InfraredNotificationMessageGreenOff,
  95. InfraredNotificationMessageYellowOn,
  96. InfraredNotificationMessageYellowOff,
  97. InfraredNotificationMessageBlinkStartRead,
  98. InfraredNotificationMessageBlinkStartSend,
  99. InfraredNotificationMessageBlinkStop,
  100. } InfraredNotificationMessage;
  101. bool infrared_add_remote_with_button(Infrared* infrared, const char* name, InfraredSignal* signal);
  102. bool infrared_rename_current_remote(Infrared* infrared, const char* name);
  103. void infrared_tx_start_signal(Infrared* infrared, InfraredSignal* signal);
  104. void infrared_tx_start_button_index(Infrared* infrared, size_t button_index);
  105. void infrared_tx_start_received(Infrared* infrared);
  106. void infrared_tx_stop(Infrared* infrared);
  107. void infrared_text_store_set(Infrared* infrared, uint32_t bank, const char* text, ...);
  108. void infrared_text_store_clear(Infrared* infrared, uint32_t bank);
  109. void infrared_play_notification_message(Infrared* infrared, uint32_t message);
  110. void infrared_show_loading_popup(Infrared* infrared, bool show);
  111. void infrared_signal_received_callback(void* context, InfraredWorkerSignal* received_signal);
  112. void infrared_text_input_callback(void* context);
  113. void infrared_popup_closed_callback(void* context);