UPD: Похоже, проблема в библиотеке
https://github.com/espressif/arduino-esp32/issues/7675
Исправляющий комит
https://github.com/espressif/arduino-esp32/commit/...
Довольно странное требование для api.
Если вы пишите класс-обертку над
этой функцией, то она принимает просто
функцию, а не указатель на указатель.
В C++ функция определяется своим адресом, и правила передачи функции в функцию похожи на правила передачи обычного массива.
Похоже, проблема именно в объявлении вашего register_callback, которое можно реализовать как в этом примере
#include <iostream>
using namespace std;
using esp_spp_cb_event_t = int;
using esp_spp_cb_param_t = void;
void btCallback(esp_spp_cb_event_t event, esp_spp_cb_param_t *param) {
cout << "btCallback" << endl;
}
class MyBt {
public:
typedef void (*callback_type)(esp_spp_cb_event_t, esp_spp_cb_param_t *);
void register_callback(callback_type cb) {
cb(0, nullptr);
}
};
int main()
{
MyBt bt;
bt.register_callback(btCallback);
return 0;
}