Skip to content

Commit

Permalink
Merge pull request #117 from sivar2311/master
Browse files Browse the repository at this point in the history
Fix for #115
  • Loading branch information
T-vK committed Oct 1, 2021
2 parents 32c5884 + d4b5d9d commit 7984db0
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 4 deletions.
44 changes: 41 additions & 3 deletions BleKeyboard.cpp
Expand Up @@ -115,12 +115,20 @@ void BleKeyboard::begin(void)

hid->manufacturer()->setValue(deviceManufacturer);

hid->pnp(0x02, 0xe502, 0xa111, 0x0210);
hid->pnp(0x02, vid, pid, version);
hid->hidInfo(0x00, 0x01);


#if defined(USE_NIMBLE)

BLEDevice::setSecurityAuth(true, true, true);

#else

BLESecurity* pSecurity = new BLESecurity();
pSecurity->setAuthenticationMode(ESP_LE_AUTH_REQ_SC_MITM_BOND);

pSecurity->setAuthenticationMode(ESP_LE_AUTH_BOND);
#endif // USE_NIMBLE

hid->reportMap((uint8_t*)_hidReportDescriptor, sizeof(_hidReportDescriptor));
hid->startServices();
Expand Down Expand Up @@ -165,6 +173,18 @@ void BleKeyboard::setDelay(uint32_t ms) {
this->_delay_ms = ms;
}

void BleKeyboard::set_vendor_id(uint16_t vid) {
this->vid = vid;
}

void BleKeyboard::set_product_id(uint16_t pid) {
this->pid = pid;
}

void BleKeyboard::set_version(uint16_t version) {
this->version = version;
}

void BleKeyboard::sendReport(KeyReport* keys)
{
if (this->isConnected())
Expand Down Expand Up @@ -480,13 +500,31 @@ size_t BleKeyboard::write(const uint8_t *buffer, size_t size) {

void BleKeyboard::onConnect(BLEServer* pServer) {
this->connected = true;

#if !defined(USE_NIMBLE)

BLE2902* desc = (BLE2902*)this->inputKeyboard->getDescriptorByUUID(BLEUUID((uint16_t)0x2902));
desc->setNotifications(true);
desc = (BLE2902*)this->inputMediaKeys->getDescriptorByUUID(BLEUUID((uint16_t)0x2902));
desc->setNotifications(true);

#endif // !USE_NIMBLE

}

void BleKeyboard::onDisconnect(BLEServer* pServer) {
this->connected = false;

#if !defined(USE_NIMBLE)

BLE2902* desc = (BLE2902*)this->inputKeyboard->getDescriptorByUUID(BLEUUID((uint16_t)0x2902));
desc->setNotifications(false);
desc = (BLE2902*)this->inputMediaKeys->getDescriptorByUUID(BLEUUID((uint16_t)0x2902));
desc->setNotifications(false);

advertising->start();
#endif // !USE_NIMBLE

#endif // !USE_NIMBLE
}

void BleKeyboard::onWrite(BLECharacteristic* me) {
Expand Down
8 changes: 8 additions & 0 deletions BleKeyboard.h
Expand Up @@ -120,6 +120,10 @@ class BleKeyboard : public Print, public BLEServerCallbacks, public BLECharacter
uint32_t _delay_ms = 7;
void delay_ms(uint64_t ms);

uint16_t vid = 0x05ac;
uint16_t pid = 0x820a;
uint16_t version = 0x0210;

public:
BleKeyboard(std::string deviceName = "ESP32 Keyboard", std::string deviceManufacturer = "Espressif", uint8_t batteryLevel = 100);
void begin(void);
Expand All @@ -138,6 +142,10 @@ class BleKeyboard : public Print, public BLEServerCallbacks, public BLECharacter
void setBatteryLevel(uint8_t level);
void setName(std::string deviceName);
void setDelay(uint32_t ms);

void set_vendor_id(uint16_t vid);
void set_product_id(uint16_t pid);
void set_version(uint16_t version);
protected:
virtual void onStarted(BLEServer *pServer) { };
virtual void onConnect(BLEServer* pServer) override;
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -145,7 +145,7 @@ PlatformIO: Change your `platformio.ini` to the following settings
lib_deps =
NimBLE-Arduino

build-flags =
build_flags =
-D USE_NIMBLE
```

Expand Down

0 comments on commit 7984db0

Please sign in to comment.