2016-08-21 120 views
4

我寫的自定義模塊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,它只是發送一個字符串到冷靜,用於調試目的。

0
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,如果命令是有效的。