bad_kb_app_i.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #pragma once
  2. #include "bad_kb_app.h"
  3. #include "scenes/bad_kb_scene.h"
  4. #include "helpers/ducky_script.h"
  5. #include "helpers/ble_hid.h"
  6. #include "bad_kb_paths.h"
  7. #include <gui/gui.h>
  8. #include <assets_icons.h>
  9. #include <gui/view_dispatcher.h>
  10. #include <gui/scene_manager.h>
  11. #include <gui/modules/submenu.h>
  12. #include <dialogs/dialogs.h>
  13. #include <notification/notification_messages.h>
  14. #include <gui/modules/variable_item_list.h>
  15. #include <gui/modules/text_input.h>
  16. #include <gui/modules/byte_input.h>
  17. #include <gui/modules/loading.h>
  18. #include <gui/modules/widget.h>
  19. #include "views/bad_kb_view.h"
  20. #include <furi_hal_usb.h>
  21. #define BAD_KB_APP_SCRIPT_EXTENSION ".txt"
  22. #define BAD_KB_APP_LAYOUT_EXTENSION ".kl"
  23. extern uint8_t BAD_KB_BOUND_MAC[GAP_MAC_ADDR_SIZE]; // For remember mode
  24. typedef enum BadKbCustomEvent {
  25. BadKbAppCustomEventTextInputDone,
  26. BadKbAppCustomEventByteInputDone,
  27. BadKbCustomEventErrorBack
  28. } BadKbCustomEvent;
  29. typedef enum {
  30. BadKbAppErrorNoFiles,
  31. } BadKbAppError;
  32. typedef struct {
  33. BleProfileHidParams ble;
  34. FuriHalUsbHidConfig usb;
  35. bool bt_remember;
  36. bool is_ble;
  37. } BadKbConfig;
  38. typedef enum {
  39. BadKbConnModeNone,
  40. BadKbConnModeUsb,
  41. BadKbConnModeBt,
  42. } BadKbConnMode;
  43. struct BadKbApp {
  44. Gui* gui;
  45. ViewDispatcher* view_dispatcher;
  46. SceneManager* scene_manager;
  47. NotificationApp* notifications;
  48. DialogsApp* dialogs;
  49. Widget* widget;
  50. VariableItemList* var_item_list;
  51. TextInput* text_input;
  52. ByteInput* byte_input;
  53. Loading* loading;
  54. char bt_name_buf[FURI_HAL_BT_ADV_NAME_LENGTH];
  55. uint8_t bt_mac_buf[GAP_MAC_ADDR_SIZE];
  56. char usb_name_buf[32];
  57. uint16_t usb_vidpid_buf[2];
  58. BadKbAppError error;
  59. FuriString* file_path;
  60. FuriString* keyboard_layout;
  61. BadKb* bad_kb_view;
  62. BadKbScript* bad_kb_script;
  63. Bt* bt;
  64. bool is_bt;
  65. bool bt_remember;
  66. BadKbConfig config; // User options
  67. BadKbConfig id_config; // ID and BT_ID values
  68. bool set_bt_id;
  69. bool set_usb_id;
  70. bool has_bt_id;
  71. bool has_usb_id;
  72. FuriHalBleProfileBase* ble_hid;
  73. FuriHalUsbInterface* prev_usb_mode;
  74. BleProfileHidParams cur_ble_cfg;
  75. FuriHalUsbHidConfig* cur_usb_cfg;
  76. BadKbConnMode conn_mode;
  77. FuriThread* conn_init_thread;
  78. };
  79. typedef enum {
  80. BadKbAppViewWidget,
  81. BadKbAppViewWork,
  82. BadKbAppViewVarItemList,
  83. BadKbAppViewByteInput,
  84. BadKbAppViewTextInput,
  85. BadKbAppViewLoading,
  86. } BadKbAppView;
  87. void bad_kb_app_show_loading_popup(BadKbApp* app, bool show);
  88. int32_t bad_kb_conn_apply(BadKbApp* app);
  89. void bad_kb_conn_reset(BadKbApp* app);
  90. void bad_kb_config_refresh(BadKbApp* app);
  91. void bad_kb_config_adjust(BadKbConfig* cfg);