00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JackNetDriver__
00022 #define __JackNetDriver__
00023
00024 #include "JackAudioDriver.h"
00025 #include "JackNetInterface.h"
00026
00027 #ifdef JACK_MONITOR
00028 #include "JackFrameTimer.h"
00029 #endif
00030
00031 namespace Jack
00032 {
00037 class JackNetDriver : public JackAudioDriver, public JackNetSlaveInterface
00038 {
00039 private:
00040
00041 jack_port_id_t* fMidiCapturePortList;
00042 jack_port_id_t* fMidiPlaybackPortList;
00043
00044
00045 int fLastTransportState;
00046 int fLastTimebaseMaster;
00047 net_transport_data_t fSendTransportData;
00048 net_transport_data_t fReturnTransportData;
00049
00050
00051 #ifdef JACK_MONITOR
00052 JackGnuPlotMonitor<float>* fNetTimeMon;
00053 #endif
00054
00055 bool Init();
00056 void Restart();
00057 int AllocPorts();
00058 int FreePorts();
00059
00060
00061 int EncodeTransportData();
00062 int DecodeTransportData();
00063
00064
00065 int EncodeSyncPacket();
00066 int DecodeSyncPacket();
00067
00068 JackMidiBuffer* GetMidiInputBuffer ( int port_index );
00069 JackMidiBuffer* GetMidiOutputBuffer ( int port_index );
00070
00071 public:
00072 JackNetDriver ( const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table,
00073 const char* ip, int port, int mtu, int midi_input_ports, int midi_output_ports,
00074 char* net_name, uint transport_sync, char network_master_mode );
00075 ~JackNetDriver();
00076
00077 int Open ( jack_nframes_t frames_per_cycle, jack_nframes_t rate, bool capturing, bool playing,
00078 int inchannels, int outchannels, bool monitor, const char* capture_driver_name,
00079 const char* playback_driver_name, jack_nframes_t capture_latency, jack_nframes_t playback_latency );
00080
00081 #ifdef JACK_MONITOR
00082 int Close();
00083 #endif
00084
00085 int Attach();
00086 int Detach();
00087
00088 int Read();
00089 int Write();
00090
00091
00092 bool IsFixedBufferSize()
00093 {
00094 return true;
00095 }
00096
00097 int SetBufferSize ( jack_nframes_t buffer_size )
00098 {
00099 return -1;
00100 }
00101
00102 int SetSampleRate ( jack_nframes_t sample_rate )
00103 {
00104 return -1;
00105 }
00106
00107 };
00108 }
00109
00110 #endif