aboutsummaryrefslogtreecommitdiff
path: root/lib-arduino/BleMouse/BleMouse.h
blob: 44681896a569cf1d12eae0831146846a9abe1e1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef ESP32_BLE_MOUSE_H
#define ESP32_BLE_MOUSE_H
#include "sdkconfig.h"
#if defined(CONFIG_BT_ENABLED)

#include "BLECharacteristic.h"
#include "BLEHIDDevice.h"
#include "BleConnectionStatus.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