aboutsummaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorkrolyxon <me@krolyxon.com>2026-05-05 12:21:56 +0530
committerkrolyxon <me@krolyxon.com>2026-05-05 12:21:56 +0530
commit097b10658710c7878ae4028491b0211d08d9b8ce (patch)
treeaf822c47d690b46d2c072c6c48e0124e0aacc617 /firmware
parent0a40daf4fad5c1593c6e1696ac0cab992c799e2e (diff)
add BLE Mouse
Diffstat (limited to 'firmware')
-rw-r--r--firmware/blemouse.cpp68
-rw-r--r--firmware/blemouse.h3
-rw-r--r--firmware/menu.cpp7
3 files changed, 77 insertions, 1 deletions
diff --git a/firmware/blemouse.cpp b/firmware/blemouse.cpp
new file mode 100644
index 0000000..e181a86
--- /dev/null
+++ b/firmware/blemouse.cpp
@@ -0,0 +1,68 @@
+#include <Arduino.h>
+#include <BleMouse.h>
+#include "config.h"
+
+#include "buttons.h"
+#include "display.h"
+
+// ===== BLE MOUSE =====
+BleMouse bleMouse("Orion-RF", "Orion-RF", 100);
+
+// ===== MAIN =====
+void ble_mouse_run()
+{
+ bleMouse.begin();
+
+ // simple screen
+ u8g2.clearBuffer();
+ u8g2.setFont(u8g2_font_6x10_tr);
+ u8g2.drawStr(10, 25, "BLE Mouse");
+ u8g2.drawStr(10, 45, "Connecting...");
+ u8g2.sendBuffer();
+
+ delay(1000);
+
+ while (1)
+ {
+ if (btnBack()) break;
+
+ bool connected = bleMouse.isConnected();
+
+ int dx = 0;
+ int dy = 0;
+
+ if (connected)
+ {
+ if (!digitalRead(BTN_UP)) dy = -8;
+ if (!digitalRead(BTN_DOWN)) dy = 8;
+ if (!digitalRead(BTN_LEFT)) dx = -8;
+ if (!digitalRead(BTN_RIGHT)) dx = 8;
+
+ if (dx != 0 || dy != 0)
+ bleMouse.move(dx, dy);
+
+ if (!digitalRead(BTN_SELECT))
+ bleMouse.click(MOUSE_LEFT);
+
+ if (!digitalRead(BTN_BACK))
+ bleMouse.click(MOUSE_RIGHT);
+ }
+
+ // ===== UI =====
+ u8g2.clearBuffer();
+ u8g2.setFont(u8g2_font_6x10_tr);
+
+ u8g2.drawStr(10, 20, "BLE Mouse");
+
+ if (connected)
+ u8g2.drawStr(10, 35, "Status: Connected");
+ else
+ u8g2.drawStr(10, 35, "Status: Waiting");
+
+ u8g2.drawStr(10, 55, "BACK = Exit");
+
+ u8g2.sendBuffer();
+
+ delay(30);
+ }
+}
diff --git a/firmware/blemouse.h b/firmware/blemouse.h
new file mode 100644
index 0000000..fc6a4cc
--- /dev/null
+++ b/firmware/blemouse.h
@@ -0,0 +1,3 @@
+#pragma once
+
+void ble_mouse_run();
diff --git a/firmware/menu.cpp b/firmware/menu.cpp
index 411df35..cd982d4 100644
--- a/firmware/menu.cpp
+++ b/firmware/menu.cpp
@@ -9,6 +9,7 @@
#include "wifi_scan.h"
#include "wifi_analyzer.h"
#include "device_check.h"
+#include "blemouse.h"
// ================= FEATURE HANDLERS =================
void runSystemInfoFeature();
@@ -29,7 +30,8 @@ const char *mainMenuItems[] = {
"Wifi Analyzer",
"System Info",
"Device Check",
- "Restart"
+ "Restart",
+ "Ble Mouse"
};
Menu mainMenu = {mainMenuItems, sizeof(mainMenuItems) / sizeof(mainMenuItems[0])};
@@ -184,6 +186,9 @@ void launchFeature()
delay(1000);
ESP.restart();
break;
+ case 9:
+ ble_mouse_run();
+ break;
}
}
else if (currentMenu == &badusbMenu)