diff options
Diffstat (limited to 'lib/BleMouse')
| -rw-r--r-- | lib/BleMouse/BleConnectionStatus.cpp | 17 | ||||
| -rw-r--r-- | lib/BleMouse/BleConnectionStatus.h | 20 | ||||
| -rw-r--r-- | lib/BleMouse/BleMouse.cpp | 165 | ||||
| -rw-r--r-- | lib/BleMouse/BleMouse.h | 52 |
4 files changed, 0 insertions, 254 deletions
diff --git a/lib/BleMouse/BleConnectionStatus.cpp b/lib/BleMouse/BleConnectionStatus.cpp deleted file mode 100644 index 83d3539..0000000 --- a/lib/BleMouse/BleConnectionStatus.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "BleConnectionStatus.h" - -BleConnectionStatus::BleConnectionStatus(void) {} - -void BleConnectionStatus::onConnect(BLEServer *pServer) { - this->connected = true; - BLE2902 *desc = (BLE2902 *)this->inputMouse->getDescriptorByUUID( - BLEUUID((uint16_t)0x2902)); - desc->setNotifications(true); -} - -void BleConnectionStatus::onDisconnect(BLEServer *pServer) { - this->connected = false; - BLE2902 *desc = (BLE2902 *)this->inputMouse->getDescriptorByUUID( - BLEUUID((uint16_t)0x2902)); - desc->setNotifications(false); -} diff --git a/lib/BleMouse/BleConnectionStatus.h b/lib/BleMouse/BleConnectionStatus.h deleted file mode 100644 index 45b7185..0000000 --- a/lib/BleMouse/BleConnectionStatus.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef ESP32_BLE_CONNECTION_STATUS_H -#define ESP32_BLE_CONNECTION_STATUS_H -#include "sdkconfig.h" -#if defined(CONFIG_BT_ENABLED) - -#include "BLE2902.h" -#include "BLECharacteristic.h" -#include <BLEServer.h> - -class BleConnectionStatus : public BLEServerCallbacks { - public: - BleConnectionStatus(void); - bool connected = false; - void onConnect(BLEServer *pServer); - void onDisconnect(BLEServer *pServer); - BLECharacteristic *inputMouse; -}; - -#endif // CONFIG_BT_ENABLED -#endif // ESP32_BLE_CONNECTION_STATUS_H diff --git a/lib/BleMouse/BleMouse.cpp b/lib/BleMouse/BleMouse.cpp deleted file mode 100644 index 8f5c16e..0000000 --- a/lib/BleMouse/BleMouse.cpp +++ /dev/null @@ -1,165 +0,0 @@ -#include "BLE2902.h" -#include "BLEHIDDevice.h" -#include "HIDKeyboardTypes.h" -#include "HIDTypes.h" -#include "sdkconfig.h" -#include <BLEDevice.h> -#include <BLEServer.h> -#include <BLEUtils.h> -#include <driver/adc.h> - -#include "BleConnectionStatus.h" -#include "BleMouse.h" - -#if defined(CONFIG_ARDUHAL_ESP_LOG) -#include "esp32-hal-log.h" -#define LOG_TAG "" -#else -#include "esp_log.h" -static const char *LOG_TAG = "BLEDevice"; -#endif - -static const uint8_t _hidReportDescriptor[] = { - USAGE_PAGE(1), 0x01, // USAGE_PAGE (Generic Desktop) - USAGE(1), 0x02, // USAGE (Mouse) - COLLECTION(1), 0x01, // COLLECTION (Application) - USAGE(1), 0x01, // USAGE (Pointer) - COLLECTION(1), 0x00, // COLLECTION (Physical) - // ------------------------------------------------- Buttons (Left, Right, - // Middle, Back, Forward) - USAGE_PAGE(1), 0x09, // USAGE_PAGE (Button) - USAGE_MINIMUM(1), 0x01, // USAGE_MINIMUM (Button 1) - USAGE_MAXIMUM(1), 0x05, // USAGE_MAXIMUM (Button 5) - LOGICAL_MINIMUM(1), 0x00, // LOGICAL_MINIMUM (0) - LOGICAL_MAXIMUM(1), 0x01, // LOGICAL_MAXIMUM (1) - REPORT_SIZE(1), 0x01, // REPORT_SIZE (1) - REPORT_COUNT(1), 0x05, // REPORT_COUNT (5) - HIDINPUT(1), 0x02, // INPUT (Data, Variable, Absolute) ;5 button bits - // ------------------------------------------------- Padding - REPORT_SIZE(1), 0x03, // REPORT_SIZE (3) - REPORT_COUNT(1), 0x01, // REPORT_COUNT (1) - HIDINPUT(1), - 0x03, // INPUT (Constant, Variable, Absolute) ;3 bit padding - // ------------------------------------------------- X/Y position, Wheel - USAGE_PAGE(1), 0x01, // USAGE_PAGE (Generic Desktop) - USAGE(1), 0x30, // USAGE (X) - USAGE(1), 0x31, // USAGE (Y) - USAGE(1), 0x38, // USAGE (Wheel) - LOGICAL_MINIMUM(1), 0x81, // LOGICAL_MINIMUM (-127) - LOGICAL_MAXIMUM(1), 0x7f, // LOGICAL_MAXIMUM (127) - REPORT_SIZE(1), 0x08, // REPORT_SIZE (8) - REPORT_COUNT(1), 0x03, // REPORT_COUNT (3) - HIDINPUT(1), - 0x06, // INPUT (Data, Variable, Relative) ;3 bytes (X,Y,Wheel) - // ------------------------------------------------- Horizontal wheel - USAGE_PAGE(1), 0x0c, // USAGE PAGE (Consumer Devices) - USAGE(2), 0x38, 0x02, // USAGE (AC Pan) - LOGICAL_MINIMUM(1), 0x81, // LOGICAL_MINIMUM (-127) - LOGICAL_MAXIMUM(1), 0x7f, // LOGICAL_MAXIMUM (127) - REPORT_SIZE(1), 0x08, // REPORT_SIZE (8) - REPORT_COUNT(1), 0x01, // REPORT_COUNT (1) - HIDINPUT(1), 0x06, // INPUT (Data, Var, Rel) - END_COLLECTION(0), // END_COLLECTION - END_COLLECTION(0) // END_COLLECTION -}; - -BleMouse::BleMouse(std::string deviceName, std::string deviceManufacturer, - uint8_t batteryLevel) - : _buttons(0), hid(0) { - this->deviceName = deviceName; - this->deviceManufacturer = deviceManufacturer; - this->batteryLevel = batteryLevel; - this->connectionStatus = new BleConnectionStatus(); -} - -void BleMouse::begin(void) { - xTaskCreate(this->taskServer, "server", 20000, (void *)this, 5, NULL); -} - -void BleMouse::end(void) {} - -void BleMouse::click(uint8_t b) { - _buttons = b; - move(0, 0, 0, 0); - _buttons = 0; - move(0, 0, 0, 0); -} - -void BleMouse::move(signed char x, signed char y, signed char wheel, - signed char hWheel) { - if (this->isConnected()) { - uint8_t m[5]; - m[0] = _buttons; - m[1] = x; - m[2] = y; - m[3] = wheel; - m[4] = hWheel; - this->inputMouse->setValue(m, 5); - this->inputMouse->notify(); - } -} - -void BleMouse::buttons(uint8_t b) { - if (b != _buttons) { - _buttons = b; - move(0, 0, 0, 0); - } -} - -void BleMouse::press(uint8_t b) { buttons(_buttons | b); } - -void BleMouse::release(uint8_t b) { buttons(_buttons & ~b); } - -bool BleMouse::isPressed(uint8_t b) { - if ((b & _buttons) > 0) - return true; - return false; -} - -bool BleMouse::isConnected(void) { return this->connectionStatus->connected; } - -void BleMouse::setBatteryLevel(uint8_t level) { - this->batteryLevel = level; - if (hid != 0) - this->hid->setBatteryLevel(this->batteryLevel); -} - -void BleMouse::taskServer(void *pvParameter) { - BleMouse *bleMouseInstance = - (BleMouse *)pvParameter; // static_cast<BleMouse *>(pvParameter); - BLEDevice::init(std::string(bleMouseInstance->deviceName.c_str())); - BLEServer *pServer = BLEDevice::createServer(); - pServer->setCallbacks(bleMouseInstance->connectionStatus); - - bleMouseInstance->hid = new BLEHIDDevice(pServer); - bleMouseInstance->inputMouse = bleMouseInstance->hid->inputReport( - 0); // <-- input REPORTID from report map - bleMouseInstance->connectionStatus->inputMouse = - bleMouseInstance->inputMouse; - - bleMouseInstance->hid->manufacturer()->setValue( - std::string(bleMouseInstance->deviceManufacturer.c_str())); - - bleMouseInstance->hid->pnp(0x02, 0xe502, 0xa111, 0x0210); - bleMouseInstance->hid->hidInfo(0x00, 0x02); - - BLESecurity *pSecurity = new BLESecurity(); - - pSecurity->setAuthenticationMode(ESP_LE_AUTH_BOND); - - bleMouseInstance->hid->reportMap((uint8_t *)_hidReportDescriptor, - sizeof(_hidReportDescriptor)); - bleMouseInstance->hid->startServices(); - - bleMouseInstance->onStarted(pServer); - - BLEAdvertising *pAdvertising = pServer->getAdvertising(); - pAdvertising->setAppearance(HID_MOUSE); - pAdvertising->addServiceUUID( - bleMouseInstance->hid->hidService()->getUUID()); - pAdvertising->start(); - bleMouseInstance->hid->setBatteryLevel(bleMouseInstance->batteryLevel); - - ESP_LOGD(LOG_TAG, "Advertising started!"); - vTaskDelay(portMAX_DELAY); // delay(portMAX_DELAY); -} diff --git a/lib/BleMouse/BleMouse.h b/lib/BleMouse/BleMouse.h deleted file mode 100644 index 4468189..0000000 --- a/lib/BleMouse/BleMouse.h +++ /dev/null @@ -1,52 +0,0 @@ -#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 |
