Hello
Arduino c/c++ beginner question:
Is this good practice?
I have create a class that reads midi messages from the serial pin. In the main loop the .read() method of my class is constantly called. It checks if serial data is available, reads and collects a complete midi message. The class has a function pointer (is this the correct term?) to which I pass a function. When enough serial data is available the .read() method calls the function.
Here's the code (irrelevant parts removed):
Scetch:
SBMidi midi;
void setup(){
midi.setCallback(midiCallback);
}
void midiCallback(MidiMessage message)
{
... Do stuff with incoming message ...
}
void loop() {
midi.read();
}
SBMidi.h:
class SBMidi
{
public:
void setCallback(void (*midiInCallback)(MidiMessage));
private:
void (*_midiInCallback)(MidiMessage);
}
SBMidi.cpp
void SBMidi::setCallback(void (*midiInCallback)(MidiMessage))
{
_midiInCallback = midiInCallback;
}
void SBMidi::read()
{
...Serial.read() stuff...
_midiInCallback(message);
}
Cheers