From 10f569c5da1c851649af18ea3b272a3157f22482 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 10 Oct 2023 22:19:02 +0100 Subject: [PATCH] Move USB/BT remote back to firmware cos OFW --- applications/external/hid_app/application.fam | 4 + applications/external/hid_app/hid.c | 29 ++-- applications/external/hid_app/hid.h | 10 +- applications/external/hid_app/hid_path.h | 3 - .../external/hid_app/hid_usb_10px.png | Bin 174 -> 969 bytes applications/external/hid_app/views.h | 4 +- .../external/hid_app/views/hid_keyboard.c | 1 + .../external/hid_app/views/hid_keynote.c | 5 +- .../external/hid_app/views/hid_media.c | 1 + .../external/hid_app/views/hid_mouse.c | 1 + .../hid_app/views/hid_mouse_clicker.c | 1 + .../hid_app/views/hid_mouse_jiggler.c | 1 + .../external/hid_app/views/hid_numpad.c | 1 + .../external/hid_app/views/hid_tikshorts.h | 14 -- .../views/{hid_tikshorts.c => hid_tiktok.c} | 140 +++++++++--------- .../external/hid_app/views/hid_tiktok.h | 14 ++ 16 files changed, 118 insertions(+), 111 deletions(-) delete mode 100644 applications/external/hid_app/hid_path.h delete mode 100644 applications/external/hid_app/views/hid_tikshorts.h rename applications/external/hid_app/views/{hid_tikshorts.c => hid_tiktok.c} (60%) create mode 100644 applications/external/hid_app/views/hid_tiktok.h diff --git a/applications/external/hid_app/application.fam b/applications/external/hid_app/application.fam index 25a72def1..dd3e3e98e 100644 --- a/applications/external/hid_app/application.fam +++ b/applications/external/hid_app/application.fam @@ -4,6 +4,8 @@ App( apptype=FlipperAppType.EXTERNAL, entry_point="hid_usb_app", stack_size=1 * 1024, + fap_description="Use Flipper as a HID remote control over USB", + fap_version="1.0", fap_category="USB", fap_icon="hid_usb_10px.png", fap_icon_assets="assets", @@ -17,6 +19,8 @@ App( apptype=FlipperAppType.EXTERNAL, entry_point="hid_ble_app", stack_size=1 * 1024, + fap_description="Use Flipper as a HID remote control over Bluetooth", + fap_version="1.0", fap_category="Bluetooth", fap_icon="hid_ble_10px.png", fap_icon_assets="assets", diff --git a/applications/external/hid_app/hid.c b/applications/external/hid_app/hid.c index b6a866718..e8c26aa34 100644 --- a/applications/external/hid_app/hid.c +++ b/applications/external/hid_app/hid.c @@ -1,6 +1,7 @@ #include "hid.h" #include "views.h" #include +#include #define TAG "HidApp" @@ -10,7 +11,7 @@ enum HidDebugSubmenuIndex { HidSubmenuIndexKeyboard, HidSubmenuIndexNumpad, HidSubmenuIndexMedia, - HidSubmenuIndexTikShorts, + HidSubmenuIndexTikTok, HidSubmenuIndexMouse, HidSubmenuIndexMouseClicker, HidSubmenuIndexMouseJiggler, @@ -39,9 +40,9 @@ static void hid_submenu_callback(void* context, uint32_t index) { } else if(index == HidSubmenuIndexMouse) { app->view_id = HidViewMouse; view_dispatcher_switch_to_view(app->view_dispatcher, HidViewMouse); - } else if(index == HidSubmenuIndexTikShorts) { - app->view_id = BtHidViewTikShorts; - view_dispatcher_switch_to_view(app->view_dispatcher, BtHidViewTikShorts); + } else if(index == HidSubmenuIndexTikTok) { + app->view_id = BtHidViewTikTok; + view_dispatcher_switch_to_view(app->view_dispatcher, BtHidViewTikTok); } else if(index == HidSubmenuIndexMouseClicker) { app->view_id = HidViewMouseClicker; view_dispatcher_switch_to_view(app->view_dispatcher, HidViewMouseClicker); @@ -69,7 +70,7 @@ static void bt_hid_connection_status_changed_callback(BtStatus status, void* con hid_mouse_set_connected_status(hid->hid_mouse, connected); hid_mouse_clicker_set_connected_status(hid->hid_mouse_clicker, connected); hid_mouse_jiggler_set_connected_status(hid->hid_mouse_jiggler, connected); - hid_tikshorts_set_connected_status(hid->hid_tikshorts, connected); + hid_tiktok_set_connected_status(hid->hid_tiktok, connected); } static void hid_dialog_callback(DialogExResult result, void* context) { @@ -133,7 +134,7 @@ Hid* hid_alloc(HidTransport transport) { submenu_add_item( app->device_type_submenu, "TikTok / YT Shorts", - HidSubmenuIndexTikShorts, + HidSubmenuIndexTikTok, hid_submenu_callback, app); } @@ -195,11 +196,11 @@ Hid* hid_app_alloc_view(void* context) { view_dispatcher_add_view( app->view_dispatcher, HidViewMedia, hid_media_get_view(app->hid_media)); - // TikTok / YT Shorts view - app->hid_tikshorts = hid_tikshorts_alloc(app); - view_set_previous_callback(hid_tikshorts_get_view(app->hid_tikshorts), hid_exit_confirm_view); + // TikTok view + app->hid_tiktok = hid_tiktok_alloc(app); + view_set_previous_callback(hid_tiktok_get_view(app->hid_tiktok), hid_exit_confirm_view); view_dispatcher_add_view( - app->view_dispatcher, BtHidViewTikShorts, hid_tikshorts_get_view(app->hid_tikshorts)); + app->view_dispatcher, BtHidViewTikTok, hid_tiktok_get_view(app->hid_tiktok)); // Mouse view app->hid_mouse = hid_mouse_alloc(app); @@ -255,8 +256,8 @@ void hid_free(Hid* app) { hid_mouse_clicker_free(app->hid_mouse_clicker); view_dispatcher_remove_view(app->view_dispatcher, HidViewMouseJiggler); hid_mouse_jiggler_free(app->hid_mouse_jiggler); - view_dispatcher_remove_view(app->view_dispatcher, BtHidViewTikShorts); - hid_tikshorts_free(app->hid_tikshorts); + view_dispatcher_remove_view(app->view_dispatcher, BtHidViewTikTok); + hid_tiktok_free(app->hid_tiktok); view_dispatcher_free(app->view_dispatcher); // Close records @@ -403,6 +404,8 @@ int32_t hid_usb_app(void* p) { bt_hid_connection_status_changed_callback(BtStatusConnected, app); + dolphin_deed(DolphinDeedPluginStart); + view_dispatcher_run(app->view_dispatcher); furi_hal_usb_set_config(usb_mode_prev, NULL); @@ -441,6 +444,8 @@ int32_t hid_ble_app(void* p) { furi_hal_bt_start_advertising(); bt_set_status_changed_callback(app->bt, bt_hid_connection_status_changed_callback, app); + dolphin_deed(DolphinDeedPluginStart); + view_dispatcher_run(app->view_dispatcher); bt_set_status_changed_callback(app->bt, NULL, NULL); diff --git a/applications/external/hid_app/hid.h b/applications/external/hid_app/hid.h index c21d3e265..6b32f2167 100644 --- a/applications/external/hid_app/hid.h +++ b/applications/external/hid_app/hid.h @@ -21,11 +21,11 @@ #include "views/hid_numpad.h" #include "views/hid_media.h" #include "views/hid_mouse.h" -#include "views/hid_mouse_jiggler.h" -#include "views/hid_tikshorts.h" #include "views/hid_mouse_clicker.h" +#include "views/hid_mouse_jiggler.h" +#include "views/hid_tiktok.h" -#include "hid_path.h" +#define HID_BT_KEYS_STORAGE_NAME ".bt_hid.keys" typedef enum { HidTransportUsb, @@ -48,7 +48,7 @@ struct Hid { HidMouse* hid_mouse; HidMouseClicker* hid_mouse_clicker; HidMouseJiggler* hid_mouse_jiggler; - HidTikShorts* hid_tikshorts; + HidTikTok* hid_tiktok; HidTransport transport; uint32_t view_id; @@ -66,4 +66,4 @@ void hid_hal_mouse_move(Hid* instance, int8_t dx, int8_t dy); void hid_hal_mouse_scroll(Hid* instance, int8_t delta); void hid_hal_mouse_press(Hid* instance, uint16_t event); void hid_hal_mouse_release(Hid* instance, uint16_t event); -void hid_hal_mouse_release_all(Hid* instance); +void hid_hal_mouse_release_all(Hid* instance); \ No newline at end of file diff --git a/applications/external/hid_app/hid_path.h b/applications/external/hid_app/hid_path.h deleted file mode 100644 index ed4ec45ff..000000000 --- a/applications/external/hid_app/hid_path.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#define HID_BT_KEYS_STORAGE_NAME ".bt_hid.keys" diff --git a/applications/external/hid_app/hid_usb_10px.png b/applications/external/hid_app/hid_usb_10px.png index 7649138eb70ee33ccc98aba2252999969c7569a4..415de7d2304fe982c025b2b9a942abbf0a2b6dd0 100644 GIT binary patch literal 969 zcmaJ=J#W)M7(OY0prTdS3e(9IQYsOjefe;0)l|h!Xha;MG(g5)>`P;{_8I$1oJb(V z#>Co{9{@i91|(QuX5%*?v9pwOnxqT_55D(az0dQ0J@>lZy1%+|YXtzX+Ss!@;>_%o zt2y!i@N?&lIBxPQduOaNrjU+e?;YX%)UR2L%LyN@}>atRF6-9xXE~}dAVr@YBcOX_U zM#>gat3`~BQpG5%aP~Eh*gj89{x|#<%&i_M$ zU=f}04!x-NpTtRb98uJv2|I~hvAe-WmMSu=m=ez7E@Q{@LAHmCvt-C3h|9793l4Gp zF!O9qA&z4-!i1C1r48GZ1c~hXo`JDuS-aJ0wOrd$)taqWN;ON>tZH4WV;fs@tj*k$ zfQEdI^)9g5QfwxOAQG8v8vD3;Z_1q-{ zl$i_hipxU&G!&YTg}8q|eDGX6j4SPCw{~`RCd@~lzrPU2?S{SEO@H(cJnv<$o(G-l ph0_~rZ>7^_`EovpzT_W+OY7j;8rXcd{ #include "../hid.h" #include "hid_icons.h" + #include #define TAG "HidKeyboard" diff --git a/applications/external/hid_app/views/hid_keynote.c b/applications/external/hid_app/views/hid_keynote.c index ce21bc56b..c9af01de1 100644 --- a/applications/external/hid_app/views/hid_keynote.c +++ b/applications/external/hid_app/views/hid_keynote.c @@ -3,6 +3,7 @@ #include "../hid.h" #include "hid_icons.h" + #include #define TAG "HidKeynote" @@ -117,16 +118,16 @@ static void hid_keynote_draw_vertical_callback(Canvas* canvas, void* context) { HidKeynoteModel* model = context; // Header - canvas_set_font(canvas, FontPrimary); if(model->transport == HidTransportBle) { if(model->connected) { canvas_draw_icon(canvas, 0, 0, &I_Ble_connected_15x15); } else { canvas_draw_icon(canvas, 0, 0, &I_Ble_disconnected_15x15); } - + canvas_set_font(canvas, FontPrimary); elements_multiline_text_aligned(canvas, 20, 3, AlignLeft, AlignTop, "Keynote"); } else { + canvas_set_font(canvas, FontPrimary); elements_multiline_text_aligned(canvas, 12, 3, AlignLeft, AlignTop, "Keynote"); } diff --git a/applications/external/hid_app/views/hid_media.c b/applications/external/hid_app/views/hid_media.c index 037f251fe..646f2849b 100644 --- a/applications/external/hid_app/views/hid_media.c +++ b/applications/external/hid_app/views/hid_media.c @@ -6,6 +6,7 @@ #include "../hid.h" #include "hid_icons.h" + #include #define TAG "HidMedia" diff --git a/applications/external/hid_app/views/hid_mouse.c b/applications/external/hid_app/views/hid_mouse.c index 3fd364ef9..956ad6b24 100644 --- a/applications/external/hid_app/views/hid_mouse.c +++ b/applications/external/hid_app/views/hid_mouse.c @@ -3,6 +3,7 @@ #include "../hid.h" #include "hid_icons.h" + #include #define TAG "HidMouse" diff --git a/applications/external/hid_app/views/hid_mouse_clicker.c b/applications/external/hid_app/views/hid_mouse_clicker.c index b0269738e..d3b78dd54 100644 --- a/applications/external/hid_app/views/hid_mouse_clicker.c +++ b/applications/external/hid_app/views/hid_mouse_clicker.c @@ -3,6 +3,7 @@ #include "../hid.h" #include "hid_icons.h" + #include #define TAG "HidMouseClicker" diff --git a/applications/external/hid_app/views/hid_mouse_jiggler.c b/applications/external/hid_app/views/hid_mouse_jiggler.c index bc71b7da6..5e1d8aabd 100644 --- a/applications/external/hid_app/views/hid_mouse_jiggler.c +++ b/applications/external/hid_app/views/hid_mouse_jiggler.c @@ -3,6 +3,7 @@ #include "../hid.h" #include "hid_icons.h" + #include #define TAG "HidMouseJiggler" diff --git a/applications/external/hid_app/views/hid_numpad.c b/applications/external/hid_app/views/hid_numpad.c index 1d0c62769..4829f3c4b 100644 --- a/applications/external/hid_app/views/hid_numpad.c +++ b/applications/external/hid_app/views/hid_numpad.c @@ -4,6 +4,7 @@ #include #include "../hid.h" #include "hid_icons.h" + #include #define TAG "HidNumpad" diff --git a/applications/external/hid_app/views/hid_tikshorts.h b/applications/external/hid_app/views/hid_tikshorts.h deleted file mode 100644 index 5604962ee..000000000 --- a/applications/external/hid_app/views/hid_tikshorts.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include - -typedef struct Hid Hid; -typedef struct HidTikShorts HidTikShorts; - -HidTikShorts* hid_tikshorts_alloc(Hid* bt_hid); - -void hid_tikshorts_free(HidTikShorts* hid_tikshorts); - -View* hid_tikshorts_get_view(HidTikShorts* hid_tikshorts); - -void hid_tikshorts_set_connected_status(HidTikShorts* hid_tikshorts, bool connected); diff --git a/applications/external/hid_app/views/hid_tikshorts.c b/applications/external/hid_app/views/hid_tiktok.c similarity index 60% rename from applications/external/hid_app/views/hid_tikshorts.c rename to applications/external/hid_app/views/hid_tiktok.c index 6796b3ca6..047563131 100644 --- a/applications/external/hid_app/views/hid_tikshorts.c +++ b/applications/external/hid_app/views/hid_tiktok.c @@ -1,13 +1,14 @@ -#include "hid_tikshorts.h" +#include "hid_tiktok.h" #include "../hid.h" #include #include "hid_icons.h" + #include -#define TAG "HidTikShorts" +#define TAG "HidTikTok" -struct HidTikShorts { +struct HidTikTok { View* view; Hid* hid; }; @@ -22,11 +23,11 @@ typedef struct { bool is_cursor_set; bool back_mouse_pressed; HidTransport transport; -} HidTikShortsModel; +} HidTikTokModel; -static void hid_tikshorts_draw_callback(Canvas* canvas, void* context) { +static void hid_tiktok_draw_callback(Canvas* canvas, void* context) { furi_assert(context); - HidTikShortsModel* model = context; + HidTikTokModel* model = context; // Header if(model->transport == HidTransportBle) { @@ -111,32 +112,30 @@ static void hid_tikshorts_draw_callback(Canvas* canvas, void* context) { elements_multiline_text_aligned(canvas, 13, 62, AlignLeft, AlignBottom, "Hold to exit"); } -static void hid_tikshorts_reset_cursor(HidTikShorts* hid_tikshorts) { +static void hid_tiktok_reset_cursor(HidTikTok* hid_tiktok) { // Set cursor to the phone's left up corner // Delays to guarantee one packet per connection interval for(size_t i = 0; i < 8; i++) { - hid_hal_mouse_move(hid_tikshorts->hid, -127, -127); + hid_hal_mouse_move(hid_tiktok->hid, -127, -127); furi_delay_ms(50); } // Move cursor from the corner - hid_hal_mouse_move(hid_tikshorts->hid, 20, 120); + hid_hal_mouse_move(hid_tiktok->hid, 20, 120); furi_delay_ms(50); } -static void hid_tikshorts_process_press( - HidTikShorts* hid_tikshorts, - HidTikShortsModel* model, - InputEvent* event) { +static void + hid_tiktok_process_press(HidTikTok* hid_tiktok, HidTikTokModel* model, InputEvent* event) { if(event->key == InputKeyUp) { model->up_pressed = true; } else if(event->key == InputKeyDown) { model->down_pressed = true; } else if(event->key == InputKeyLeft) { model->left_pressed = true; - hid_hal_consumer_key_press(hid_tikshorts->hid, HID_CONSUMER_VOLUME_DECREMENT); + hid_hal_consumer_key_press(hid_tiktok->hid, HID_CONSUMER_VOLUME_DECREMENT); } else if(event->key == InputKeyRight) { model->right_pressed = true; - hid_hal_consumer_key_press(hid_tikshorts->hid, HID_CONSUMER_VOLUME_INCREMENT); + hid_hal_consumer_key_press(hid_tiktok->hid, HID_CONSUMER_VOLUME_INCREMENT); } else if(event->key == InputKeyOk) { model->ok_pressed = true; } else if(event->key == InputKeyBack) { @@ -144,20 +143,18 @@ static void hid_tikshorts_process_press( } } -static void hid_tikshorts_process_release( - HidTikShorts* hid_tikshorts, - HidTikShortsModel* model, - InputEvent* event) { +static void + hid_tiktok_process_release(HidTikTok* hid_tiktok, HidTikTokModel* model, InputEvent* event) { if(event->key == InputKeyUp) { model->up_pressed = false; } else if(event->key == InputKeyDown) { model->down_pressed = false; } else if(event->key == InputKeyLeft) { model->left_pressed = false; - hid_hal_consumer_key_release(hid_tikshorts->hid, HID_CONSUMER_VOLUME_DECREMENT); + hid_hal_consumer_key_release(hid_tiktok->hid, HID_CONSUMER_VOLUME_DECREMENT); } else if(event->key == InputKeyRight) { model->right_pressed = false; - hid_hal_consumer_key_release(hid_tikshorts->hid, HID_CONSUMER_VOLUME_INCREMENT); + hid_hal_consumer_key_release(hid_tiktok->hid, HID_CONSUMER_VOLUME_INCREMENT); } else if(event->key == InputKeyOk) { model->ok_pressed = false; } else if(event->key == InputKeyBack) { @@ -165,61 +162,61 @@ static void hid_tikshorts_process_release( } } -static bool hid_tikshorts_input_callback(InputEvent* event, void* context) { +static bool hid_tiktok_input_callback(InputEvent* event, void* context) { furi_assert(context); - HidTikShorts* hid_tikshorts = context; + HidTikTok* hid_tiktok = context; bool consumed = false; with_view_model( - hid_tikshorts->view, - HidTikShortsModel * model, + hid_tiktok->view, + HidTikTokModel * model, { if(event->type == InputTypePress) { - hid_tikshorts_process_press(hid_tikshorts, model, event); + hid_tiktok_process_press(hid_tiktok, model, event); if(model->connected && !model->is_cursor_set) { - hid_tikshorts_reset_cursor(hid_tikshorts); + hid_tiktok_reset_cursor(hid_tiktok); model->is_cursor_set = true; } consumed = true; } else if(event->type == InputTypeRelease) { - hid_tikshorts_process_release(hid_tikshorts, model, event); + hid_tiktok_process_release(hid_tiktok, model, event); consumed = true; } else if(event->type == InputTypeShort) { if(event->key == InputKeyOk) { - hid_hal_mouse_press(hid_tikshorts->hid, HID_MOUSE_BTN_LEFT); + hid_hal_mouse_press(hid_tiktok->hid, HID_MOUSE_BTN_LEFT); furi_delay_ms(25); - hid_hal_mouse_release(hid_tikshorts->hid, HID_MOUSE_BTN_LEFT); + hid_hal_mouse_release(hid_tiktok->hid, HID_MOUSE_BTN_LEFT); furi_delay_ms(100); - hid_hal_mouse_press(hid_tikshorts->hid, HID_MOUSE_BTN_LEFT); + hid_hal_mouse_press(hid_tiktok->hid, HID_MOUSE_BTN_LEFT); furi_delay_ms(25); - hid_hal_mouse_release(hid_tikshorts->hid, HID_MOUSE_BTN_LEFT); - consumed = true; - } else if(event->key == InputKeyDown) { - // Swipe to next video - hid_hal_mouse_scroll(hid_tikshorts->hid, 6); - hid_hal_mouse_scroll(hid_tikshorts->hid, 8); - hid_hal_mouse_scroll(hid_tikshorts->hid, 10); - hid_hal_mouse_scroll(hid_tikshorts->hid, 8); - hid_hal_mouse_scroll(hid_tikshorts->hid, 6); + hid_hal_mouse_release(hid_tiktok->hid, HID_MOUSE_BTN_LEFT); consumed = true; } else if(event->key == InputKeyUp) { - // Swipe to previous video - hid_hal_mouse_scroll(hid_tikshorts->hid, -6); - hid_hal_mouse_scroll(hid_tikshorts->hid, -8); - hid_hal_mouse_scroll(hid_tikshorts->hid, -10); - hid_hal_mouse_scroll(hid_tikshorts->hid, -8); - hid_hal_mouse_scroll(hid_tikshorts->hid, -6); + // Emulate up swipe + hid_hal_mouse_scroll(hid_tiktok->hid, -6); + hid_hal_mouse_scroll(hid_tiktok->hid, -8); + hid_hal_mouse_scroll(hid_tiktok->hid, -10); + hid_hal_mouse_scroll(hid_tiktok->hid, -8); + hid_hal_mouse_scroll(hid_tiktok->hid, -6); + consumed = true; + } else if(event->key == InputKeyDown) { + // Emulate down swipe + hid_hal_mouse_scroll(hid_tiktok->hid, 6); + hid_hal_mouse_scroll(hid_tiktok->hid, 8); + hid_hal_mouse_scroll(hid_tiktok->hid, 10); + hid_hal_mouse_scroll(hid_tiktok->hid, 8); + hid_hal_mouse_scroll(hid_tiktok->hid, 6); consumed = true; } else if(event->key == InputKeyBack) { // Pause - hid_hal_mouse_press(hid_tikshorts->hid, HID_MOUSE_BTN_LEFT); + hid_hal_mouse_press(hid_tiktok->hid, HID_MOUSE_BTN_LEFT); furi_delay_ms(50); - hid_hal_mouse_release(hid_tikshorts->hid, HID_MOUSE_BTN_LEFT); + hid_hal_mouse_release(hid_tiktok->hid, HID_MOUSE_BTN_LEFT); consumed = true; } } else if(event->type == InputTypeLong) { if(event->key == InputKeyBack) { - hid_hal_consumer_key_release_all(hid_tikshorts->hid); + hid_hal_consumer_key_release_all(hid_tiktok->hid); model->is_cursor_set = false; consumed = false; } @@ -230,40 +227,37 @@ static bool hid_tikshorts_input_callback(InputEvent* event, void* context) { return consumed; } -HidTikShorts* hid_tikshorts_alloc(Hid* bt_hid) { - HidTikShorts* hid_tikshorts = malloc(sizeof(HidTikShorts)); - hid_tikshorts->hid = bt_hid; - hid_tikshorts->view = view_alloc(); - view_set_context(hid_tikshorts->view, hid_tikshorts); - view_allocate_model(hid_tikshorts->view, ViewModelTypeLocking, sizeof(HidTikShortsModel)); - view_set_draw_callback(hid_tikshorts->view, hid_tikshorts_draw_callback); - view_set_input_callback(hid_tikshorts->view, hid_tikshorts_input_callback); +HidTikTok* hid_tiktok_alloc(Hid* bt_hid) { + HidTikTok* hid_tiktok = malloc(sizeof(HidTikTok)); + hid_tiktok->hid = bt_hid; + hid_tiktok->view = view_alloc(); + view_set_context(hid_tiktok->view, hid_tiktok); + view_allocate_model(hid_tiktok->view, ViewModelTypeLocking, sizeof(HidTikTokModel)); + view_set_draw_callback(hid_tiktok->view, hid_tiktok_draw_callback); + view_set_input_callback(hid_tiktok->view, hid_tiktok_input_callback); with_view_model( - hid_tikshorts->view, - HidTikShortsModel * model, - { model->transport = bt_hid->transport; }, - true); + hid_tiktok->view, HidTikTokModel * model, { model->transport = bt_hid->transport; }, true); - return hid_tikshorts; + return hid_tiktok; } -void hid_tikshorts_free(HidTikShorts* hid_tikshorts) { - furi_assert(hid_tikshorts); - view_free(hid_tikshorts->view); - free(hid_tikshorts); +void hid_tiktok_free(HidTikTok* hid_tiktok) { + furi_assert(hid_tiktok); + view_free(hid_tiktok->view); + free(hid_tiktok); } -View* hid_tikshorts_get_view(HidTikShorts* hid_tikshorts) { - furi_assert(hid_tikshorts); - return hid_tikshorts->view; +View* hid_tiktok_get_view(HidTikTok* hid_tiktok) { + furi_assert(hid_tiktok); + return hid_tiktok->view; } -void hid_tikshorts_set_connected_status(HidTikShorts* hid_tikshorts, bool connected) { - furi_assert(hid_tikshorts); +void hid_tiktok_set_connected_status(HidTikTok* hid_tiktok, bool connected) { + furi_assert(hid_tiktok); with_view_model( - hid_tikshorts->view, - HidTikShortsModel * model, + hid_tiktok->view, + HidTikTokModel * model, { model->connected = connected; model->is_cursor_set = false; diff --git a/applications/external/hid_app/views/hid_tiktok.h b/applications/external/hid_app/views/hid_tiktok.h new file mode 100644 index 000000000..b2efc3692 --- /dev/null +++ b/applications/external/hid_app/views/hid_tiktok.h @@ -0,0 +1,14 @@ +#pragma once + +#include + +typedef struct Hid Hid; +typedef struct HidTikTok HidTikTok; + +HidTikTok* hid_tiktok_alloc(Hid* bt_hid); + +void hid_tiktok_free(HidTikTok* hid_tiktok); + +View* hid_tiktok_get_view(HidTikTok* hid_tiktok); + +void hid_tiktok_set_connected_status(HidTikTok* hid_tiktok, bool connected);