| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <furi.h>
- #include <furi_hal.h>
- #include <bt/bt_service/bt_i.h>
- #include <gui/view_dispatcher.h>
- #include <gui/modules/widget.h>
- #include <gui/modules/variable_item_list.h>
- #include <gui/modules/text_input.h>
- #include <gui/modules/byte_input.h>
- #include "../views/bad_bt_view.h"
- #define FILE_BUFFER_LEN 16
- typedef enum {
- LevelRssi122_100,
- LevelRssi99_80,
- LevelRssi79_60,
- LevelRssi59_40,
- LevelRssi39_0,
- LevelRssiNum,
- LevelRssiError = 0xFF,
- } LevelRssiRange;
- extern const uint8_t bt_hid_delays[LevelRssiNum];
- extern uint8_t bt_timeout;
- typedef enum {
- BadBtStateInit,
- BadBtStateNotConnected,
- BadBtStateIdle,
- BadBtStateWillRun,
- BadBtStateRunning,
- BadBtStateDelay,
- BadBtStateStringDelay,
- BadBtStateWaitForBtn,
- BadBtStateDone,
- BadBtStateScriptError,
- BadBtStateFileError,
- } BadBtWorkerState;
- struct BadBtState {
- BadBtWorkerState state;
- uint32_t pin;
- uint16_t line_cur;
- uint16_t line_nb;
- uint32_t delay_remain;
- uint16_t error_line;
- char error[64];
- };
- typedef struct BadBtApp BadBtApp;
- typedef struct {
- FuriHalUsbHidConfig hid_cfg;
- FuriThread* thread;
- BadBtState st;
- FuriString* file_path;
- FuriString* keyboard_layout;
- uint8_t file_buf[FILE_BUFFER_LEN + 1];
- uint8_t buf_start;
- uint8_t buf_len;
- bool file_end;
- uint32_t defdelay;
- uint32_t stringdelay;
- uint16_t layout[128];
- FuriString* line;
- FuriString* line_prev;
- uint32_t repeat_cnt;
- uint8_t key_hold_nb;
- bool set_usb_id;
- bool set_bt_id;
- bool has_usb_id;
- bool has_bt_id;
- FuriString* string_print;
- size_t string_print_pos;
- Bt* bt;
- BadBtApp* app;
- } BadBtScript;
- BadBtScript* bad_bt_script_open(FuriString* file_path, Bt* bt, BadBtApp* app);
- void bad_bt_script_close(BadBtScript* bad_bt);
- void bad_bt_script_set_keyboard_layout(BadBtScript* bad_bt, FuriString* layout_path);
- void bad_bt_script_start(BadBtScript* bad_bt);
- void bad_bt_script_stop(BadBtScript* bad_bt);
- void bad_bt_script_toggle(BadBtScript* bad_bt);
- BadBtState* bad_bt_script_get_state(BadBtScript* bad_bt);
- #define BAD_BT_ADV_NAME_MAX_LEN FURI_HAL_BT_ADV_NAME_LENGTH
- #define BAD_BT_MAC_ADDRESS_LEN GAP_MAC_ADDR_SIZE
- // this is the MAC address used when we do not forget paired device (BOUND STATE)
- extern const uint8_t BAD_BT_BOUND_MAC_ADDRESS[BAD_BT_MAC_ADDRESS_LEN];
- extern const uint8_t BAD_BT_EMPTY_MAC_ADDRESS[BAD_BT_MAC_ADDRESS_LEN];
- typedef enum {
- BadBtAppErrorNoFiles,
- BadBtAppErrorCloseRpc,
- } BadBtAppError;
- typedef struct {
- char bt_name[BAD_BT_ADV_NAME_MAX_LEN];
- uint8_t bt_mac[BAD_BT_MAC_ADDRESS_LEN];
- GapPairing bt_mode;
- } BadBtConfig;
- struct BadBtApp {
- Gui* gui;
- ViewDispatcher* view_dispatcher;
- SceneManager* scene_manager;
- NotificationApp* notifications;
- DialogsApp* dialogs;
- Widget* widget;
- VariableItemList* var_item_list;
- TextInput* text_input;
- ByteInput* byte_input;
- BadBtAppError error;
- FuriString* file_path;
- FuriString* keyboard_layout;
- BadBt* bad_bt_view;
- BadBtScript* bad_bt_script;
- Bt* bt;
- bool bt_remember;
- BadBtConfig config;
- BadBtConfig prev_config;
- FuriThread* conn_init_thread;
- FuriThread* switch_mode_thread;
- };
- int32_t bad_bt_config_switch_mode(BadBtApp* app);
- #ifdef __cplusplus
- }
- #endif
|