Как определить обратный вызов для ardinoble сканирования результатов esp32 - PullRequest
1 голос
/ 19 июня 2019

Определение для запуска сканирования BLE:

bool start(uint32_t duration, void (*scanCompleteCB)(BLEScanResults), bool is_continue = false);

Второй параметр, по-видимому, является обратным вызовом, когда сканирование завершено, поскольку он немного нов в этом, я не уверен, как его определить.

fwiw Я попробовал это:

void OnScanResults(BLEScanResults scanResults)
{ }

и использовал это так:

scanResults = scan->start(60, OnScanResults, true);

но очевидно для других, что это не сработало.

Пожалуйста, помогите мнерасшифруйте эту подпись

void (*scanCompleteCB)(BLEScanResults)

1 Ответ

2 голосов
/ 19 июня 2019

вам нужно добавить & к OnScanResults, потому что:

void (*scanCompleteCB)(BLEScanResults)

- это указатель на функцию, которая принимает BLEScanResults, ничего не возвращает и называется scanCompleteCB

Таким образом, ваш вызов должен быть:

scanResults = scan->start(60, &OnScanResults, true);

так же, как указатель на int указывает на адрес int

int pointedTo;
int* ptr = &pointedTo;
...