1 /* 2 * Copyright 2003-2009, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Matthijs Hollemans 7 * Jerome Leveque 8 * Philippe Houdoin 9 */ 10 #ifndef PORT_DRIVERS_H 11 #define PORT_DRIVERS_H 12 13 14 #include <MidiProducer.h> 15 #include <MidiConsumer.h> 16 17 class MidiPortConsumer : public BMidiLocalConsumer { 18 public: 19 MidiPortConsumer(int fd, const char* path); 20 21 void Data(uchar* data, size_t length, bool atomic, bigtime_t time); 22 23 private: 24 int fFileDescriptor; 25 }; 26 27 28 class MidiPortProducer : public BMidiLocalProducer { 29 public: 30 MidiPortProducer(int fd, const char* path = NULL); 31 virtual ~MidiPortProducer(void); 32 33 int32 GetData(void); 34 35 private: 36 static int32 _ReaderThread(void* data); 37 38 int fFileDescriptor; 39 volatile bool fKeepRunning; 40 thread_id fReaderThread; 41 }; 42 43 #endif // PORT_DRIVERS_H 44