diff options
Diffstat (limited to 'libs/midi++2/port_request.cc')
-rw-r--r-- | libs/midi++2/port_request.cc | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/libs/midi++2/port_request.cc b/libs/midi++2/port_request.cc new file mode 100644 index 0000000000..d081bdb570 --- /dev/null +++ b/libs/midi++2/port_request.cc @@ -0,0 +1,80 @@ +/* + Copyright (C) 2000 Paul Barton-Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id$ +*/ + +#include <fcntl.h> +#include <string.h> +#include <midi++/port.h> +#include <midi++/port_request.h> + +using namespace std; +using namespace MIDI; + +PortRequest::PortRequest (const string &xdev, + const string &xtag, + const string &xmode, + const string &xtype) + +{ + status = OK; + + devname = strdup (xdev.c_str()); + tagname = strdup (xtag.c_str()); + + if (xmode == "output" || + xmode == "out" || + xmode == "OUTPUT" || + xmode == "OUT") { + mode = O_WRONLY; + + } else if (xmode == "input" || + xmode == "in" || + xmode == "INPUT" || + xmode == "IN") { + mode = O_RDONLY; + + } else if (xmode == "duplex" || + xmode == "DUPLEX" || + xmode == "inout" || + xmode == "INOUT") { + mode = O_RDWR; + } else { + status = Unknown; + } + + if (xtype == "ALSA/RAW" || + xtype == "alsa/raw") { + type = Port::ALSA_RawMidi; + } else if (xtype == "ALSA/SEQUENCER" || + xtype == "alsa/sequencer") { + type = Port::ALSA_Sequencer; + } else if (xtype == "COREMIDI" || + xtype == "coremidi") { + type = Port::CoreMidi_MidiPort; + } else if (xtype == "NULL" || + xtype == "null") { + type = Port::Null; + } else if (xtype == "FIFO" || + xtype == "fifo") { + type = Port::FIFO; + } else { + status = Unknown; + } +} + |