NimBLE-Arduino icon indicating copy to clipboard operation
NimBLE-Arduino copied to clipboard

Problem using NimBLEHIDDevice, help.

Open discapacidad5 opened this issue 2 years ago • 1 comments
trafficstars

"I am creating a braille device and I am getting the following error message: "Compilation error: no matching function for call to 'NimBLEHIDDevice::NimBLEHIDDevice()'" This is my code that is incorrect."

`#include <NimBLEHIDDevice.h>

NimBLEHIDDevice* hid = new NimBLEHIDDevice(); hid->setManufacturer("My Manufacturer"); hid->setProduct("My Braille Display");

NimBLEHIDDevice::hidReportMap_t reportMap; reportMap[0] = 0x06; // Usage Page (Generic Device Controls) reportMap[1] = 0x0C; // Usage (Braille Display) reportMap[2] = 0x0A; // Collection (Logical) reportMap[3] = 0x24; // Logical Minimum (0) reportMap[4] = 0x7F; // Logical Maximum (127) reportMap[5] = 0x02; // Report Size (2) reportMap[6] = 0x01; // Report Count (80) reportMap[7] = 0x81; // Input (Data, Variable, Absolute) reportMap[8] = 0xC0; // End Collection hid->reportMap((uint8_t*)&reportMap, sizeof(reportMap));

void setup() { Serial.begin(9600); NimBLEAddress addr("00:11:22:33:44:55"); NimBLEHIDDevice::bleConnectionStatus_t connStatus = hid->getConnectionStatus(); connStatus.connected = true; connStatus.remoteAddress = addr; hid->setConnectionStatus(connStatus);

hid->begin(); hid->setBatteryLevel(90); hid->setConnectionParams(7.5, 15, 0, 2000); hid->setDeviceName("My Braille Display"); hid->setAppearance(NimBLEAppearance::HID_GENERIC); }

void loop() { // Send braille data to the HID device static uint8_t buf[80] = {0}; static uint8_t prev_buf[80] = {0}; bool buf_changed = false; // Fill in buf with braille data // ... // Check if buf has changed for (int i = 0; i < sizeof(buf); i++) { if (buf[i] != prev_buf[i]) { buf_changed = true; break; } } // Print buf if it has changed if (buf_changed) { Serial.println("Buffer contents:"); for (int i = 0; i < sizeof(buf); i++) { Serial.print(buf[i], HEX); Serial.print(" "); } Serial.println(); // Save current buf as previous buf memcpy(prev_buf, buf, sizeof(buf)); } hid->inputReport(0, buf, sizeof(buf)); delay(10); }`

C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:5:44: error: no matching function for call to 'NimBLEHIDDevice::NimBLEHIDDevice()' NimBLEHIDDevice* hid = new NimBLEHIDDevice(); ^ In file included from C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:1: c:\Users\Administrador\Documents\Arduino\libraries\NimBLE-Arduino\src/NimBLEHIDDevice.h:42:2: note: candidate: 'NimBLEHIDDevice::NimBLEHIDDevice(NimBLEServer*)' NimBLEHIDDevice(NimBLEServer*); ^~~~~~~~~~~~~~~ c:\Users\Administrador\Documents\Arduino\libraries\NimBLE-Arduino\src/NimBLEHIDDevice.h:42:2: note: candidate expects 1 argument, 0 provided c:\Users\Administrador\Documents\Arduino\libraries\NimBLE-Arduino\src/NimBLEHIDDevice.h:40:7: note: candidate: 'constexpr NimBLEHIDDevice::NimBLEHIDDevice(const NimBLEHIDDevice&)' class NimBLEHIDDevice { ^~~~~~~~~~~~~~~ c:\Users\Administrador\Documents\Arduino\libraries\NimBLE-Arduino\src/NimBLEHIDDevice.h:40:7: note: candidate expects 1 argument, 0 provided C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:6:1: error: 'hid' does not name a type hid->setManufacturer("My Manufacturer"); ^~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:7:1: error: 'hid' does not name a type hid->setProduct("My Braille Display"); ^~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:9:18: error: 'hidReportMap_t' in 'class NimBLEHIDDevice' does not name a type NimBLEHIDDevice::hidReportMap_t reportMap; ^~~~~~~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:10:1: error: 'reportMap' does not name a type reportMap[0] = 0x06; // Usage Page (Generic Device Controls) ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:11:1: error: 'reportMap' does not name a type reportMap[1] = 0x0C; // Usage (Braille Display) ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:12:1: error: 'reportMap' does not name a type reportMap[2] = 0x0A; // Collection (Logical) ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:13:1: error: 'reportMap' does not name a type reportMap[3] = 0x24; // Logical Minimum (0) ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:14:1: error: 'reportMap' does not name a type reportMap[4] = 0x7F; // Logical Maximum (127) ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:15:1: error: 'reportMap' does not name a type reportMap[5] = 0x02; // Report Size (2) ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:16:1: error: 'reportMap' does not name a type reportMap[6] = 0x01; // Report Count (80) ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:17:1: error: 'reportMap' does not name a type reportMap[7] = 0x81; // Input (Data, Variable, Absolute) ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:18:1: error: 'reportMap' does not name a type reportMap[8] = 0xC0; // End Collection ^~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:19:1: error: 'hid' does not name a type hid->reportMap((uint8_t*)&reportMap, sizeof(reportMap)); ^~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino: In function 'void setup()': C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:24:20: error: 'bleConnectionStatus_t' is not a member of 'NimBLEHIDDevice' NimBLEHIDDevice::bleConnectionStatus_t connStatus = hid->getConnectionStatus(); ^~~~~~~~~~~~~~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:25:3: error: 'connStatus' was not declared in this scope connStatus.connected = true; ^~~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:25:3: note: suggested alternative: 'conn_params' connStatus.connected = true; ^~~~~~~~~~ conn_params C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:27:8: error: 'class NimBLEHIDDevice' has no member named 'setConnectionStatus' hid->setConnectionStatus(connStatus); ^~~~~~~~~~~~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:29:8: error: 'class NimBLEHIDDevice' has no member named 'begin' hid->begin(); ^~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:31:8: error: 'class NimBLEHIDDevice' has no member named 'setConnectionParams' hid->setConnectionParams(7.5, 15, 0, 2000); ^~~~~~~~~~~~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:32:8: error: 'class NimBLEHIDDevice' has no member named 'setDeviceName' hid->setDeviceName("My Braille Display"); ^~~~~~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:33:8: error: 'class NimBLEHIDDevice' has no member named 'setAppearance' hid->setAppearance(NimBLEAppearance::HID_GENERIC); ^~~~~~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:33:22: error: 'NimBLEAppearance' has not been declared hid->setAppearance(NimBLEAppearance::HID_GENERIC); ^~~~~~~~~~~~~~~~ C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino: In function 'void loop()': C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:61:39: error: no matching function for call to 'NimBLEHIDDevice::inputReport(int, uint8_t [80], unsigned int)' hid->inputReport(0, buf, sizeof(buf)); ^ In file included from C:\Users\Administrador\Desktop\codigos generado con inteligencia artificial\hid_braille\hid_braille.ino:1: c:\Users\Administrador\Documents\Arduino\libraries\NimBLE-Arduino\src/NimBLEHIDDevice.h:64:25: note: candidate: 'NimBLECharacteristic* NimBLEHIDDevice::inputReport(uint8_t)' NimBLECharacteristic* inputReport(uint8_t reportID); ^~~~~~~~~~~ c:\Users\Administrador\Documents\Arduino\libraries\NimBLE-Arduino\src/NimBLEHIDDevice.h:64:25: note: candidate expects 1 argument, 3 provided

exit status 1

Compilation error: no matching function for call to 'NimBLEHIDDevice::NimBLEHIDDevice()'

discapacidad5 avatar Mar 16 '23 05:03 discapacidad5

Sorry I didn't reply sooner. The issue is the constructor for NimBLEHIDDevice takes a pointer to a NimBLEServer instance. You'll need to assign the hid pointer after you have initialized the server so you can provide this instance pointer to the constructor.

h2zero avatar Mar 23 '23 21:03 h2zero