Willy-JL 1 год назад
Родитель
Сommit
96d5609a0c
2 измененных файлов с 12 добавлено и 9 удалено
  1. 1 0
      airmouse/application.fam
  2. 11 9
      airmouse/views/bt_mouse.c

+ 1 - 0
airmouse/application.fam

@@ -8,4 +8,5 @@ App(
     fap_icon="mouse_10px.png",
     fap_version="0.9",
     sources=["*.c", "*.cc"],
+    fap_libs=["ble_profile"],
 )

+ 11 - 9
airmouse/views/bt_mouse.c

@@ -3,7 +3,7 @@
 
 #include <furi.h>
 #include <furi_hal_bt.h>
-#include <furi_hal_bt_hid.h>
+#include <extra_profiles/hid_profile.h>
 #include <furi_hal_usb_hid.h>
 #include <bt/bt_service/bt.h>
 #include <gui/elements.h>
@@ -21,6 +21,7 @@ struct BtMouse {
     View* view;
     ViewDispatcher* view_dispatcher;
     Bt* bt;
+    FuriHalBleProfileBase* ble_hid_profile;
     NotificationApp* notifications;
     FuriMutex* mutex;
     FuriThread* thread;
@@ -118,7 +119,7 @@ static bool bt_mouse_input_callback(InputEvent* event, void* context) {
     bool consumed = false;
 
     if(event->type == InputTypeLong && event->key == InputKeyBack) {
-        furi_hal_bt_hid_mouse_release_all();
+        ble_profile_hid_mouse_release_all(bt_mouse->ble_hid_profile);
     } else {
         bt_mouse_process(bt_mouse, event);
         consumed = true;
@@ -203,18 +204,18 @@ static int32_t bt_mouse_thread_callback(void* context) {
 
             if(bt_mouse->connected && send_buttons) {
                 if(event.state) {
-                    furi_hal_bt_hid_mouse_press(event.button);
+                    ble_profile_hid_mouse_press(bt_mouse->ble_hid_profile, event.button);
                 } else {
-                    furi_hal_bt_hid_mouse_release(event.button);
+                    ble_profile_hid_mouse_release(bt_mouse->ble_hid_profile, event.button);
                 }
             }
 
             if(bt_mouse->connected && (dx != 0 || dy != 0)) {
-                furi_hal_bt_hid_mouse_move(dx, dy);
+                ble_profile_hid_mouse_move(bt_mouse->ble_hid_profile, dx, dy);
             }
 
             if(bt_mouse->connected && wheel != 0) {
-                furi_hal_bt_hid_mouse_scroll(wheel);
+                ble_profile_hid_mouse_scroll(bt_mouse->ble_hid_profile, wheel);
             }
         }
     }
@@ -253,7 +254,8 @@ void bt_mouse_enter_callback(void* context) {
     bt_mouse->notifications = furi_record_open(RECORD_NOTIFICATION);
     bt_set_status_changed_callback(
         bt_mouse->bt, bt_mouse_connection_status_changed_callback, bt_mouse);
-    furi_assert(bt_set_profile(bt_mouse->bt, BtProfileHidKeyboard));
+    bt_mouse->ble_hid_profile = bt_profile_start(bt_mouse->bt, ble_profile_hid, NULL);
+    furi_check(bt_mouse->ble_hid_profile);
     furi_hal_bt_start_advertising();
     bt_mouse_thread_start(bt_mouse);
 }
@@ -278,8 +280,8 @@ void bt_mouse_exit_callback(void* context) {
     tracking_end();
     notification_internal_message(bt_mouse->notifications, &sequence_reset_blue);
 
-    furi_hal_bt_stop_advertising();
-    bt_set_profile(bt_mouse->bt, BtProfileSerial);
+    bt_set_status_changed_callback(bt_mouse->bt, NULL, NULL);
+    furi_check(bt_profile_restore_default(bt_mouse->bt));
 
     furi_record_close(RECORD_NOTIFICATION);
     bt_mouse->notifications = NULL;