From 3701512a164120ca4d6b1a4055fefdae90db3ffc Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Fri, 18 Oct 2013 11:53:11 +0000 Subject: [PATCH] Rework ListMidi so it can be more easily added to more backends. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3835 --- include/Makefile.am | 1 + include/midi.h | 60 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 include/midi.h diff --git a/include/Makefile.am b/include/Makefile.am index 2e7808f6..5c89f480 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -20,6 +20,7 @@ keyboard.h \ logging.h \ mapper.h \ mem.h \ +midi.h \ mixer.h \ modules.h \ mouse.h \ diff --git a/include/midi.h b/include/midi.h new file mode 100644 index 00000000..f1106c2d --- /dev/null +++ b/include/midi.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2002-2013 The DOSBox Team + * + * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#ifndef DOSBOX_MIDI_H +#define DOSBOX_MIDI_H + +#ifndef DOSBOX_PROGRAMS_H +#include "programs.h" +#endif + +class MidiHandler { +public: + MidiHandler(); + virtual bool Open(const char * /*conf*/) { return true; }; + virtual void Close(void) {}; + virtual void PlayMsg(Bit8u * /*msg*/) {}; + virtual void PlaySysex(Bit8u * /*sysex*/,Bitu /*len*/) {}; + virtual const char * GetName(void) { return "none"; }; + virtual void ListAll(Program * base) {}; + virtual ~MidiHandler() { }; + MidiHandler * next; +}; + + +#define SYSEX_SIZE 1024 +struct DB_Midi { + Bitu status; + Bitu cmd_len; + Bitu cmd_pos; + Bit8u cmd_buf[8]; + Bit8u rt_buf[8]; + struct { + Bit8u buf[SYSEX_SIZE]; + Bitu used; + Bitu delay; + Bit32u start; + } sysex; + bool available; + MidiHandler * handler; +}; + +extern DB_Midi midi; + +#endif