Функции модуля ConfigurableFirmata
Я пишу пользовательские модули для ConfigurableFirmata, я вижу, библиотеки используют обратные вызовы, такие как:
void Class::handleCapability(byte pin);
boolean Class::handlePinMode(byte pin, int mode);
...
boolean Class::handleSysex(byte command, byte argc, byte *argv);
Вопрос в том, что я не совсем понимаю, почему некоторые функции являются логическими и когда возвращать TRUE или FALSE (и что происходит, когда вы возвращаете TRUE или FALSE?).
2 ответа
Решение
Ответ лежит в FirmataExt.cpp. Если расширение возвращает FALSE, оно просто отправляет строку фирмам для целей отладки.
boolean FirmataExt::handleSysex(byte command, byte argc, byte* argv)
{
switch (command) {
case PIN_STATE_QUERY:
if (argc > 0) {
byte pin = argv[0];
if (pin < TOTAL_PINS) {
//...
return true;
}
}
break;
case CAPABILITY_QUERY:
//...
return true;
default:
for (byte i = 0; i < numFeatures; i++) {
if (features[i]->handleSysex(command, argc, argv)) {
return true;
}
}
break;
}
return false;
}
Эта функция возвращает true, если команда действительна.