summaryrefslogtreecommitdiff
path: root/firmware/BleMouse.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/BleMouse.h')
-rw-r--r--firmware/BleMouse.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/firmware/BleMouse.h b/firmware/BleMouse.h
new file mode 100644
index 0000000..8b4ab9b
--- /dev/null
+++ b/firmware/BleMouse.h
@@ -0,0 +1,45 @@
+#ifndef ESP32_BLE_MOUSE_H
+#define ESP32_BLE_MOUSE_H
+#include "sdkconfig.h"
+#if defined(CONFIG_BT_ENABLED)
+
+#include "BleConnectionStatus.h"
+#include "BLEHIDDevice.h"
+#include "BLECharacteristic.h"
+
+#define MOUSE_LEFT 1
+#define MOUSE_RIGHT 2
+#define MOUSE_MIDDLE 4
+#define MOUSE_BACK 8
+#define MOUSE_FORWARD 16
+#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) # For compatibility with the Mouse library
+
+class BleMouse {
+private:
+ uint8_t _buttons;
+ BleConnectionStatus* connectionStatus;
+ BLEHIDDevice* hid;
+ BLECharacteristic* inputMouse;
+ void buttons(uint8_t b);
+ void rawAction(uint8_t msg[], char msgSize);
+ static void taskServer(void* pvParameter);
+public:
+ BleMouse(std::string deviceName = "ESP32 Bluetooth Mouse", std::string deviceManufacturer = "Espressif", uint8_t batteryLevel = 100);
+ void begin(void);
+ void end(void);
+ void click(uint8_t b = MOUSE_LEFT);
+ void move(signed char x, signed char y, signed char wheel = 0, signed char hWheel = 0);
+ void press(uint8_t b = MOUSE_LEFT); // press LEFT by default
+ void release(uint8_t b = MOUSE_LEFT); // release LEFT by default
+ bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default
+ bool isConnected(void);
+ void setBatteryLevel(uint8_t level);
+ uint8_t batteryLevel;
+ std::string deviceManufacturer;
+ std::string deviceName;
+protected:
+ virtual void onStarted(BLEServer *pServer) { };
+};
+
+#endif // CONFIG_BT_ENABLED
+#endif // ESP32_BLE_MOUSE_H