infrared_i.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. typedef enum {
  35. InfraredButtonIndexNone = -1,
  36. } InfraredButtonIndex;
  37. typedef enum {
  38. InfraredEditTargetNone,
  39. InfraredEditTargetRemote,
  40. InfraredEditTargetButton,
  41. } InfraredEditTarget;
  42. typedef enum {
  43. InfraredEditModeNone,
  44. InfraredEditModeRename,
  45. InfraredEditModeDelete,
  46. } InfraredEditMode;
  47. typedef struct {
  48. bool is_learning_new_remote;
  49. bool is_debug_enabled;
  50. InfraredEditTarget edit_target : 8;
  51. InfraredEditMode edit_mode : 8;
  52. int32_t current_button_index;
  53. } InfraredAppState;
  54. struct Infrared {
  55. SceneManager* scene_manager;
  56. ViewDispatcher* view_dispatcher;
  57. Gui* gui;
  58. Storage* storage;
  59. DialogsApp* dialogs;
  60. NotificationApp* notifications;
  61. InfraredWorker* worker;
  62. InfraredRemote* remote;
  63. InfraredSignal* received_signal;
  64. InfraredBruteForce* brute_force;
  65. Submenu* submenu;
  66. TextInput* text_input;
  67. DialogEx* dialog_ex;
  68. ButtonMenu* button_menu;
  69. Popup* popup;
  70. ViewStack* view_stack;
  71. InfraredDebugView* debug_view;
  72. ButtonPanel* button_panel;
  73. Loading* loading;
  74. InfraredProgressView* progress;
  75. string_t file_path;
  76. char text_store[INFRARED_TEXT_STORE_NUM][INFRARED_TEXT_STORE_SIZE + 1];
  77. InfraredAppState app_state;
  78. void* rpc_ctx;
  79. };
  80. typedef enum {
  81. InfraredViewSubmenu,
  82. InfraredViewTextInput,
  83. InfraredViewDialogEx,
  84. InfraredViewButtonMenu,
  85. InfraredViewPopup,
  86. InfraredViewStack,
  87. InfraredViewDebugView,
  88. } InfraredView;
  89. typedef enum {
  90. InfraredNotificationMessageSuccess,
  91. InfraredNotificationMessageGreenOn,
  92. InfraredNotificationMessageGreenOff,
  93. InfraredNotificationMessageBlinkRead,
  94. InfraredNotificationMessageBlinkSend,
  95. InfraredNotificationMessageYellowOn,
  96. InfraredNotificationMessageYellowOff,
  97. } InfraredNotificationMessage;
  98. bool infrared_add_remote_with_button(Infrared* infrared, const char* name, InfraredSignal* signal);
  99. bool infrared_rename_current_remote(Infrared* infrared, const char* name);
  100. void infrared_tx_start_signal(Infrared* infrared, InfraredSignal* signal);
  101. void infrared_tx_start_button_index(Infrared* infrared, size_t button_index);
  102. void infrared_tx_start_received(Infrared* infrared);
  103. void infrared_tx_stop(Infrared* infrared);
  104. void infrared_text_store_set(Infrared* infrared, uint32_t bank, const char* text, ...);
  105. void infrared_text_store_clear(Infrared* infrared, uint32_t bank);
  106. void infrared_play_notification_message(Infrared* infrared, uint32_t message);
  107. void infrared_show_loading_popup(Infrared* infrared, bool show);
  108. void infrared_signal_sent_callback(void* context);
  109. void infrared_signal_received_callback(void* context, InfraredWorkerSignal* received_signal);
  110. void infrared_text_input_callback(void* context);
  111. void infrared_popup_closed_callback(void* context);