Jack2  1.9.8
JackFreebobDriver.h
00001 /*
00002 Copyright (C) 2001 Paul Davis
00003 Copyright (C) 2004 Grame
00004 Copyright (C) 2007 Pieter Palmers
00005 
00006 This program is free software; you can redistribute it and/or modify
00007 it under the terms of the GNU General Public License as published by
00008 the Free Software Foundation; either version 2 of the License, or
00009 (at your option) any later version.
00010 
00011 This program is distributed in the hope that it will be useful,
00012 but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 GNU General Public License for more details.
00015 
00016 You should have received a copy of the GNU General Public License
00017 along with this program; if not, write to the Free Software
00018 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019 
00020 */
00021 
00022 #ifndef __JackFreebobDriver__
00023 #define __JackFreebobDriver__
00024 
00025 #include "JackAudioDriver.h"
00026 #include "JackThreadedDriver.h"
00027 #include "JackTime.h"
00028 
00029 #include "freebob_driver.h"
00030 
00031 namespace Jack
00032 {
00033 
00038 class JackFreebobDriver : public JackAudioDriver
00039 {
00040 
00041     private:
00042 
00043         // enable verbose messages
00044         int g_verbose;
00045 
00046         jack_driver_t* fDriver;
00047         int freebob_driver_attach (freebob_driver_t *driver);
00048         int freebob_driver_detach (freebob_driver_t *driver);
00049         int freebob_driver_read (freebob_driver_t * driver, jack_nframes_t nframes);
00050         int freebob_driver_write (freebob_driver_t * driver, jack_nframes_t nframes);
00051         jack_nframes_t freebob_driver_wait (freebob_driver_t *driver,
00052                                             int extra_fd, int *status,
00053                                             float *delayed_usecs);
00054         int freebob_driver_start (freebob_driver_t *driver);
00055         int freebob_driver_stop (freebob_driver_t *driver);
00056         int freebob_driver_restart (freebob_driver_t *driver);
00057         freebob_driver_t *freebob_driver_new (char *name, freebob_jack_settings_t *params);
00058         void freebob_driver_delete (freebob_driver_t *driver);
00059 
00060 #ifdef FREEBOB_DRIVER_WITH_MIDI
00061         freebob_driver_midi_handle_t *freebob_driver_midi_init(freebob_driver_t *driver);
00062         void freebob_driver_midi_finish (freebob_driver_midi_handle_t *m);
00063         int freebob_driver_midi_start (freebob_driver_midi_handle_t *m);
00064         int freebob_driver_midi_stop (freebob_driver_midi_handle_t *m);
00065 #endif
00066 
00067         void jack_driver_init (jack_driver_t *driver);
00068         void jack_driver_nt_init (jack_driver_nt_t * driver);
00069 
00070     public:
00071 
00072         JackFreebobDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table)
00073             :JackAudioDriver(name, alias, engine, table)
00074         {}
00075         virtual ~JackFreebobDriver()
00076         {}
00077 
00078         int Open(freebob_jack_settings_t *cmlparams);
00079 
00080         int Close();
00081         int Attach();
00082         int Detach();
00083 
00084         int Start();
00085         int Stop();
00086 
00087         int Read();
00088         int Write();
00089 
00090         int SetBufferSize(jack_nframes_t nframes);
00091 };
00092 
00093 } // end of namespace
00094 
00095 #endif