aboutsummaryrefslogtreecommitdiff
path: root/src/bluetooth
diff options
context:
space:
mode:
authorkrolyxon <me@krolyxon.com>2026-05-14 23:14:31 +0530
committerkrolyxon <me@krolyxon.com>2026-05-14 23:14:31 +0530
commit206ed229198be252a9ae94342b39618aaab55925 (patch)
tree06d2ad100372c595974f1c6dcb1cd23ccdd26207 /src/bluetooth
parent3672abc8b44c50ab344aeaf3c720c8502ccc128d (diff)
apply code formatting
Diffstat (limited to 'src/bluetooth')
-rw-r--r--src/bluetooth/ble_mouse.cpp109
-rw-r--r--src/bluetooth/blescanner.cpp303
2 files changed, 196 insertions, 216 deletions
diff --git a/src/bluetooth/ble_mouse.cpp b/src/bluetooth/ble_mouse.cpp
index 423ea8c..c757eb3 100644
--- a/src/bluetooth/ble_mouse.cpp
+++ b/src/bluetooth/ble_mouse.cpp
@@ -1,7 +1,7 @@
+#include "../config.h"
+#include "../hid/badusb.h"
#include <Arduino.h>
#include <BleMouse.h>
-#include "../hid/badusb.h"
-#include "../config.h"
#include "../utils/buttons.h"
#include "ui/display.h"
@@ -11,64 +11,63 @@
extern BleMouse bleMouse;
// ===== MAIN =====
-void ble_mouse_run()
-{
+void ble_mouse_run() {
+ u8g2.clearBuffer();
+ u8g2.setFont(u8g2_font_6x10_tr);
+ u8g2.drawStr(10, 25, "BLE Mouse");
+ u8g2.drawStr(10, 45, "Connecting...");
+ u8g2.sendBuffer();
+
+ delay(800);
+
+ while (1) {
+ // 🔥 EXIT FIRST (clean)
+ if (btnBack())
+ break;
+
+ bool connected = bleMouse.isConnected();
+
+ int dx = 0;
+ int dy = 0;
+
+ if (connected) {
+ if (!digitalRead(BTN_UP))
+ dy = -6;
+ if (!digitalRead(BTN_DOWN))
+ dy = 6;
+ if (!digitalRead(BTN_LEFT))
+ dx = -6;
+ if (!digitalRead(BTN_RIGHT))
+ dx = 6;
+
+ if (dx || dy)
+ bleMouse.move(dx, dy);
+
+ // ✅ single click (not spam)
+ static bool lastSelect = false;
+ bool currentSelect = !digitalRead(BTN_SELECT);
+
+ if (currentSelect && !lastSelect)
+ bleMouse.click(MOUSE_LEFT);
+
+ lastSelect = currentSelect;
+ }
+
+ // ===== UI =====
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_6x10_tr);
- u8g2.drawStr(10, 25, "BLE Mouse");
- u8g2.drawStr(10, 45, "Connecting...");
- u8g2.sendBuffer();
-
- delay(800);
-
- while (1)
- {
- // 🔥 EXIT FIRST (clean)
- if (btnBack()) break;
-
- bool connected = bleMouse.isConnected();
-
- int dx = 0;
- int dy = 0;
- if (connected)
- {
- if (!digitalRead(BTN_UP)) dy = -6;
- if (!digitalRead(BTN_DOWN)) dy = 6;
- if (!digitalRead(BTN_LEFT)) dx = -6;
- if (!digitalRead(BTN_RIGHT)) dx = 6;
+ u8g2.drawStr(10, 20, "BLE Mouse");
- if (dx || dy)
- bleMouse.move(dx, dy);
+ if (connected)
+ u8g2.drawStr(10, 35, "Connected");
+ else
+ u8g2.drawStr(10, 35, "Waiting");
- // ✅ single click (not spam)
- static bool lastSelect = false;
- bool currentSelect = !digitalRead(BTN_SELECT);
+ u8g2.drawStr(10, 55, "BACK = Exit");
- if (currentSelect && !lastSelect)
- bleMouse.click(MOUSE_LEFT);
-
- lastSelect = currentSelect;
- }
-
- // ===== UI =====
- u8g2.clearBuffer();
- u8g2.setFont(u8g2_font_6x10_tr);
-
- u8g2.drawStr(10, 20, "BLE Mouse");
-
- if (connected)
- u8g2.drawStr(10, 35, "Connected");
- else
- u8g2.drawStr(10, 35, "Waiting");
-
- u8g2.drawStr(10, 55, "BACK = Exit");
-
- u8g2.sendBuffer();
+ u8g2.sendBuffer();
- delay(10); // important for BLE stability
- }
+ delay(10); // important for BLE stability
+ }
}
-
-
-
diff --git a/src/bluetooth/blescanner.cpp b/src/bluetooth/blescanner.cpp
index d637683..8019181 100644
--- a/src/bluetooth/blescanner.cpp
+++ b/src/bluetooth/blescanner.cpp
@@ -1,20 +1,20 @@
#include <Arduino.h>
+#include <BLEAdvertisedDevice.h>
#include <BLEDevice.h>
#include <BLEScan.h>
-#include <BLEAdvertisedDevice.h>
#include <vector>
-#include "ui/display.h"
-#include "../utils/buttons.h"
#include "../config.h"
+#include "../utils/buttons.h"
+#include "ui/display.h"
// ===== DEVICE STRUCT =====
struct BLEDeviceInfo {
- String name;
- String address;
- int rssi;
- String manufacturer;
- String deviceType;
+ String name;
+ String address;
+ int rssi;
+ String manufacturer;
+ String deviceType;
};
static std::vector<BLEDeviceInfo> devices;
@@ -23,187 +23,168 @@ static int selectedIndex = 0;
// ===== CALLBACK =====
class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks {
- void onResult(BLEAdvertisedDevice advertisedDevice) override {
- BLEDeviceInfo dev;
-
- String tempName = advertisedDevice.getName().c_str();
-
- if (tempName.length() == 0 && advertisedDevice.haveServiceData()) {
- tempName = advertisedDevice.getServiceData().c_str();
- }
-
- if (tempName.length() == 0) {
- String addr = advertisedDevice.getAddress().toString().c_str();
- tempName = "BLE_" + addr.substring(addr.length() - 5);
- }
-
- dev.name = tempName;
- dev.address = advertisedDevice.getAddress().toString().c_str();
- dev.rssi = advertisedDevice.getRSSI();
-
- if (advertisedDevice.haveManufacturerData()) {
- String mData = advertisedDevice.getManufacturerData().c_str();
-
- if (mData.length() >= 2) {
- char buffer[10];
- sprintf(buffer, "0x%02X%02X",
- (uint8_t)mData[1],
- (uint8_t)mData[0]);
- dev.manufacturer = String(buffer);
- } else {
- dev.manufacturer = "unknown";
- }
- } else {
- dev.manufacturer = "unknown";
- }
-
- if (advertisedDevice.haveServiceUUID()) {
- dev.deviceType =
- advertisedDevice.getServiceUUID().toString().c_str();
- } else {
- dev.deviceType = "unknown";
- }
-
- devices.push_back(dev);
+ void onResult(BLEAdvertisedDevice advertisedDevice) override {
+ BLEDeviceInfo dev;
+
+ String tempName = advertisedDevice.getName().c_str();
+
+ if (tempName.length() == 0 && advertisedDevice.haveServiceData()) {
+ tempName = advertisedDevice.getServiceData().c_str();
+ }
+
+ if (tempName.length() == 0) {
+ String addr = advertisedDevice.getAddress().toString().c_str();
+ tempName = "BLE_" + addr.substring(addr.length() - 5);
+ }
+
+ dev.name = tempName;
+ dev.address = advertisedDevice.getAddress().toString().c_str();
+ dev.rssi = advertisedDevice.getRSSI();
+
+ if (advertisedDevice.haveManufacturerData()) {
+ String mData = advertisedDevice.getManufacturerData().c_str();
+
+ if (mData.length() >= 2) {
+ char buffer[10];
+ sprintf(buffer, "0x%02X%02X", (uint8_t)mData[1], (uint8_t)mData[0]);
+ dev.manufacturer = String(buffer);
+ } else {
+ dev.manufacturer = "unknown";
+ }
+ } else {
+ dev.manufacturer = "unknown";
+ }
+
+ if (advertisedDevice.haveServiceUUID()) {
+ dev.deviceType = advertisedDevice.getServiceUUID().toString().c_str();
+ } else {
+ dev.deviceType = "unknown";
}
+
+ devices.push_back(dev);
+ }
};
// ===== DRAW MENU =====
-void ble_drawMenu()
-{
- u8g2.clearBuffer();
-
- if (devices.empty())
- {
- u8g2.setFont(u8g2_font_6x12_tr);
- u8g2.drawStr(0, 30, "No devices");
- u8g2.drawStr(0, 45, "Press BACK");
- }
- else
- {
- u8g2.setFont(u8g2_font_5x8_tr);
+void ble_drawMenu() {
+ u8g2.clearBuffer();
+
+ if (devices.empty()) {
+ u8g2.setFont(u8g2_font_6x12_tr);
+ u8g2.drawStr(0, 30, "No devices");
+ u8g2.drawStr(0, 45, "Press BACK");
+ } else {
+ u8g2.setFont(u8g2_font_5x8_tr);
- char counter[20];
- sprintf(counter, "%d/%d", selectedIndex + 1, (int)devices.size());
- u8g2.drawStr(0, 8, counter);
+ char counter[20];
+ sprintf(counter, "%d/%d", selectedIndex + 1, (int)devices.size());
+ u8g2.drawStr(0, 8, counter);
- u8g2.setFont(u8g2_font_6x10_tr);
+ u8g2.setFont(u8g2_font_6x10_tr);
- for (int i = 0; i < 3; i++)
- {
- int idx = selectedIndex + i;
- if (idx >= devices.size()) break;
+ for (int i = 0; i < 3; i++) {
+ int idx = selectedIndex + i;
+ if (idx >= devices.size())
+ break;
- int y = 22 + i * 14;
+ int y = 22 + i * 14;
- if (i == 0)
- {
- u8g2.drawBox(0, y - 10, 128, 12);
- u8g2.setDrawColor(0);
- }
+ if (i == 0) {
+ u8g2.drawBox(0, y - 10, 128, 12);
+ u8g2.setDrawColor(0);
+ }
- String text = devices[idx].name;
- if (text.length() > 12)
- text = text.substring(0, 12) + "..";
+ String text = devices[idx].name;
+ if (text.length() > 12)
+ text = text.substring(0, 12) + "..";
- text += " (" + String(devices[idx].rssi) + ")";
+ text += " (" + String(devices[idx].rssi) + ")";
- u8g2.drawStr(2, y, text.c_str());
+ u8g2.drawStr(2, y, text.c_str());
- if (i == 0)
- u8g2.setDrawColor(1);
- }
+ if (i == 0)
+ u8g2.setDrawColor(1);
}
+ }
- u8g2.sendBuffer();
+ u8g2.sendBuffer();
}
// ===== DEVICE DETAILS =====
-void ble_drawDetails(const BLEDeviceInfo &dev)
-{
- u8g2.clearBuffer();
- u8g2.setFont(u8g2_font_5x8_tr);
+void ble_drawDetails(const BLEDeviceInfo &dev) {
+ u8g2.clearBuffer();
+ u8g2.setFont(u8g2_font_5x8_tr);
- u8g2.drawStr(0, 10, dev.name.c_str());
- u8g2.drawStr(0, 20, dev.address.c_str());
+ u8g2.drawStr(0, 10, dev.name.c_str());
+ u8g2.drawStr(0, 20, dev.address.c_str());
- char rssiStr[20];
- sprintf(rssiStr, "RSSI: %d", dev.rssi);
- u8g2.drawStr(0, 30, rssiStr);
+ char rssiStr[20];
+ sprintf(rssiStr, "RSSI: %d", dev.rssi);
+ u8g2.drawStr(0, 30, rssiStr);
- u8g2.drawStr(0, 40, dev.manufacturer.c_str());
+ u8g2.drawStr(0, 40, dev.manufacturer.c_str());
- u8g2.sendBuffer();
+ u8g2.sendBuffer();
}
// ===== SCAN =====
-void ble_scan()
-{
- devices.clear();
-
- u8g2.clearBuffer();
- u8g2.drawStr(10, 30, "Scanning...");
- u8g2.sendBuffer();
-
- BLEDevice::init("");
-
- pBLEScan = BLEDevice::getScan();
- pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks(), false);
- pBLEScan->setActiveScan(true);
- pBLEScan->setInterval(100);
- pBLEScan->setWindow(99);
-
- pBLEScan->start(5, false);
-
- // remove duplicates
- std::vector<BLEDeviceInfo> unique;
- for (auto &d : devices)
- {
- bool exists = false;
- for (auto &u : unique)
- {
- if (u.address == d.address)
- {
- exists = true;
- break;
- }
- }
- if (!exists) unique.push_back(d);
+void ble_scan() {
+ devices.clear();
+
+ u8g2.clearBuffer();
+ u8g2.drawStr(10, 30, "Scanning...");
+ u8g2.sendBuffer();
+
+ BLEDevice::init("");
+
+ pBLEScan = BLEDevice::getScan();
+ pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks(),
+ false);
+ pBLEScan->setActiveScan(true);
+ pBLEScan->setInterval(100);
+ pBLEScan->setWindow(99);
+
+ pBLEScan->start(5, false);
+
+ // remove duplicates
+ std::vector<BLEDeviceInfo> unique;
+ for (auto &d : devices) {
+ bool exists = false;
+ for (auto &u : unique) {
+ if (u.address == d.address) {
+ exists = true;
+ break;
+ }
}
+ if (!exists)
+ unique.push_back(d);
+ }
- devices = unique;
+ devices = unique;
}
// ===== MAIN LOOP =====
-void ble_loop()
-{
- static uint32_t lastPress = 0;
-
- if (millis() - lastPress < 200)
- return;
-
- if (btnDown() && selectedIndex < (int)devices.size() - 1)
- {
- selectedIndex++;
- ble_drawMenu();
- lastPress = millis();
- }
- else if (btnUp() && selectedIndex > 0)
- {
- selectedIndex--;
- ble_drawMenu();
- lastPress = millis();
- }
- else if (btnSelect() && !devices.empty())
- {
- ble_drawDetails(devices[selectedIndex]);
- delay(3000);
- ble_drawMenu();
- lastPress = millis();
- }
- else if (btnBack())
- {
- lastPress = millis();
- return;
- }
+void ble_loop() {
+ static uint32_t lastPress = 0;
+
+ if (millis() - lastPress < 200)
+ return;
+
+ if (btnDown() && selectedIndex < (int)devices.size() - 1) {
+ selectedIndex++;
+ ble_drawMenu();
+ lastPress = millis();
+ } else if (btnUp() && selectedIndex > 0) {
+ selectedIndex--;
+ ble_drawMenu();
+ lastPress = millis();
+ } else if (btnSelect() && !devices.empty()) {
+ ble_drawDetails(devices[selectedIndex]);
+ delay(3000);
+ ble_drawMenu();
+ lastPress = millis();
+ } else if (btnBack()) {
+ lastPress = millis();
+ return;
+ }
}