Просмотр исходного кода

Nrf24MouseJacker: Path, icons, gpio changes

Willy-JL 2 лет назад
Родитель
Сommit
e6f0632773

+ 1 - 1
nrf24mousejacker/application.fam

@@ -1,5 +1,5 @@
 App(
-    appid="nrf24_mouse_jacker",
+    appid="nrf24mousejacker",
     name="[NRF24] Mouse Jacker",
     apptype=FlipperAppType.EXTERNAL,
     entry_point="mousejacker_app",

BIN
nrf24mousejacker/images/badusb_10px.png


BIN
nrf24mousejacker/images/sub1_10px.png


+ 16 - 0
nrf24mousejacker/lib/nrf24/nrf24.c

@@ -6,6 +6,15 @@
 #include <string.h>
 
 void nrf24_init() {
+    // this is needed if multiple SPI devices are connected to the same bus but with different CS pins
+    if(xtreme_settings.spi_nrf24_handle == SpiDefault) {
+        furi_hal_gpio_init_simple(&gpio_ext_pc3, GpioModeOutputPushPull);
+        furi_hal_gpio_write(&gpio_ext_pc3, true);
+    } else if(xtreme_settings.spi_nrf24_handle == SpiExtra) {
+        furi_hal_gpio_init_simple(&gpio_ext_pa4, GpioModeOutputPushPull);
+        furi_hal_gpio_write(&gpio_ext_pa4, true);
+    }
+
     furi_hal_spi_bus_handle_init(nrf24_HANDLE);
     furi_hal_spi_acquire(nrf24_HANDLE);
     furi_hal_gpio_init(nrf24_CE_PIN, GpioModeOutputPushPull, GpioPullUp, GpioSpeedVeryHigh);
@@ -17,6 +26,13 @@ void nrf24_deinit() {
     furi_hal_spi_bus_handle_deinit(nrf24_HANDLE);
     furi_hal_gpio_write(nrf24_CE_PIN, false);
     furi_hal_gpio_init(nrf24_CE_PIN, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
+
+    // resetting the CS pins to floating
+    if(xtreme_settings.spi_nrf24_handle == SpiDefault) {
+        furi_hal_gpio_init_simple(&gpio_ext_pc3, GpioModeAnalog);
+    } else if(xtreme_settings.spi_nrf24_handle == SpiExtra) {
+        furi_hal_gpio_init_simple(&gpio_ext_pa4, GpioModeAnalog);
+    }
 }
 
 void nrf24_spi_trx(

+ 5 - 1
nrf24mousejacker/lib/nrf24/nrf24.h

@@ -3,6 +3,8 @@
 #include <stdint.h>
 #include <furi_hal_spi.h>
 
+#include <xtreme.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -40,7 +42,9 @@ extern "C" {
 
 #define nrf24_TIMEOUT 500
 #define nrf24_CE_PIN &gpio_ext_pb2
-#define nrf24_HANDLE &furi_hal_spi_bus_handle_external
+#define nrf24_HANDLE                                                                         \
+    (xtreme_settings.spi_nrf24_handle == SpiDefault ? &furi_hal_spi_bus_handle_external : \
+                                                         &furi_hal_spi_bus_handle_external_extra)
 
 /* Low level API */
 

+ 7 - 5
nrf24mousejacker/mousejacker.c

@@ -13,10 +13,12 @@
 #include "mousejacker_ducky.h"
 #include <nrf24_mouse_jacker_icons.h>
 
+#include <assets_icons.h>
+
 #define TAG "mousejacker"
 #define LOGITECH_MAX_CHANNEL 85
-#define NRFSNIFF_APP_PATH_FOLDER_ADDRESSES EXT_PATH("apps_data/nrf24_sniffer/addresses.txt")
-#define LOCAL_BADUSB_FOLDER EXT_PATH("badusb")
+#define NRFSNIFF_APP_PATH_FOLDER_ADDRESSES EXT_PATH("apps_data/nrf24sniff/addresses.txt")
+#define BADKB_FOLDER EXT_PATH("badkb")
 #define MOUSEJACKER_APP_PATH_EXTENSION ".txt"
 #define MAX_ADDRS 100
 
@@ -64,7 +66,7 @@ static void render_callback(Canvas* const canvas, void* ctx) {
         }
     } else if(plugin_state->addr_err) {
         canvas_draw_str_aligned(
-            canvas, 10, 10, AlignLeft, AlignBottom, "Error: No nrfsniff folder");
+            canvas, 10, 10, AlignLeft, AlignBottom, "Error: No nrf24sniff folder");
         canvas_draw_str_aligned(canvas, 10, 20, AlignLeft, AlignBottom, "or addresses.txt file");
         canvas_draw_str_aligned(
             canvas, 10, 30, AlignLeft, AlignBottom, "loading error / empty file");
@@ -115,11 +117,11 @@ static bool open_ducky_script(Stream* stream, PluginState* plugin_state) {
     bool result = false;
     FuriString* path;
     path = furi_string_alloc();
-    furi_string_set(path, LOCAL_BADUSB_FOLDER);
+    furi_string_set(path, BADKB_FOLDER);
 
     DialogsFileBrowserOptions browser_options;
     dialog_file_browser_set_basic_options(
-        &browser_options, MOUSEJACKER_APP_PATH_EXTENSION, &I_badusb_10px);
+        &browser_options, MOUSEJACKER_APP_PATH_EXTENSION, &I_badkb_10px);
     browser_options.hide_ext = false;
 
     bool ret = dialog_file_browser_show(dialogs, path, path, &browser_options);