#include <list>
#include <string>
+#include <vector>
#include <fcntl.h>
#include <unistd.h>
-#include <midi++/port.h>
+#include "midi++/port.h"
#include <CoreMIDI/CoreMIDI.h>
namespace MIDI {
-class CoreMidi_MidiPort:public Port {
- public:
- CoreMidi_MidiPort(PortRequest & req);
- virtual ~ CoreMidi_MidiPort();
-
- virtual int selectable() const {
- return -1;
- }
- protected:
- /* Direct I/O */
- int write (byte *msg, size_t msglen, timestamp_t timestamp);
- int read (byte *buf, size_t max, timestamp_t timestamp);
-
- /* CoreMidi callback */
- static void read_proc(const MIDIPacketList * pktlist,
- void *refCon, void *connRefCon);
-
- private:
- byte midi_buffer[1024];
- MIDIClientRef midi_client;
- MIDIEndpointRef midi_destination;
- MIDIEndpointRef midi_source;
-
- int Open(PortRequest & req);
- void Close();
- static MIDITimeStamp MIDIGetCurrentHostTime();
-
- bool firstrecv;
-};
+ class CoreMidi_MidiPort:public Port {
+ public:
+ CoreMidi_MidiPort(const XMLNode& node);
+ virtual ~ CoreMidi_MidiPort();
+
+ int write (byte * msg, size_t msglen, timestamp_t timestamp);
+ int read (byte * buf, size_t max) {
+ return 0;
+ }
+
+ virtual int selectable() const {
+ return -1;
+ }
+
+ static int discover (std::vector<PortSet>&);
+ static std::string typestring;
+
+ protected:
+
+ /* CoreMidi callback */
+ static void read_proc(const MIDIPacketList * pktlist,
+ void *refCon, void *connRefCon);
+
+ std::string get_typestring () const {
+ return typestring;
+ }
+
+ private:
+ byte midi_buffer[1024];
+ MIDIClientRef midi_client;
+ MIDIEndpointRef midi_destination;
+ MIDIEndpointRef midi_source;
+
+ int Open(const Port::Descriptor&);
+ void Close();
+ static MIDITimeStamp MIDIGetCurrentHostTime();
+
+ bool firstrecv;
+
+ };
} // namespace MIDI