1206b17d7SAlexander Leidinger /*- 24d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 3718cf2ccSPedro F. Giffuni * 448351eafSJoel Dahl * Copyright (c) 2003 Mathew Kanner 548351eafSJoel Dahl * Copyright (c) 1999 Seigo Tanimura 648351eafSJoel Dahl * All rights reserved. 7206b17d7SAlexander Leidinger * 8206b17d7SAlexander Leidinger * Redistribution and use in source and binary forms, with or without 9206b17d7SAlexander Leidinger * modification, are permitted provided that the following conditions 10206b17d7SAlexander Leidinger * are met: 11206b17d7SAlexander Leidinger * 1. Redistributions of source code must retain the above copyright 12206b17d7SAlexander Leidinger * notice, this list of conditions and the following disclaimer. 13206b17d7SAlexander Leidinger * 2. Redistributions in binary form must reproduce the above copyright 14206b17d7SAlexander Leidinger * notice, this list of conditions and the following disclaimer in the 15206b17d7SAlexander Leidinger * documentation and/or other materials provided with the distribution. 16206b17d7SAlexander Leidinger * 17206b17d7SAlexander Leidinger * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18206b17d7SAlexander Leidinger * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19206b17d7SAlexander Leidinger * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20206b17d7SAlexander Leidinger * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21206b17d7SAlexander Leidinger * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22206b17d7SAlexander Leidinger * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23206b17d7SAlexander Leidinger * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24206b17d7SAlexander Leidinger * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25206b17d7SAlexander Leidinger * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26206b17d7SAlexander Leidinger * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27206b17d7SAlexander Leidinger * SUCH DAMAGE. 28206b17d7SAlexander Leidinger */ 29206b17d7SAlexander Leidinger 3048351eafSJoel Dahl /* 3148351eafSJoel Dahl * Include file for the midi sequence driver. 3248351eafSJoel Dahl */ 3348351eafSJoel Dahl 34206b17d7SAlexander Leidinger #ifndef _SEQUENCER_H_ 35206b17d7SAlexander Leidinger #define _SEQUENCER_H_ 36206b17d7SAlexander Leidinger 37206b17d7SAlexander Leidinger #define NSEQ_MAX 16 38206b17d7SAlexander Leidinger 39206b17d7SAlexander Leidinger /* 40206b17d7SAlexander Leidinger * many variables should be reduced to a range. Here define a macro 41206b17d7SAlexander Leidinger */ 42206b17d7SAlexander Leidinger 43206b17d7SAlexander Leidinger #define RANGE(var, low, high) (var) = \ 44206b17d7SAlexander Leidinger ((var)<(low)?(low) : (var)>(high)?(high) : (var)) 45206b17d7SAlexander Leidinger 46206b17d7SAlexander Leidinger #ifdef _KERNEL 47206b17d7SAlexander Leidinger 48206b17d7SAlexander Leidinger void seq_timer(void *arg); 49206b17d7SAlexander Leidinger 50206b17d7SAlexander Leidinger SYSCTL_DECL(_hw_midi_seq); 51206b17d7SAlexander Leidinger 52206b17d7SAlexander Leidinger extern int seq_debug; 538f981688SAlexander Leidinger 54206b17d7SAlexander Leidinger #define SEQ_DEBUG(y, x) \ 55206b17d7SAlexander Leidinger do { \ 56206b17d7SAlexander Leidinger if (seq_debug >= y) { \ 57206b17d7SAlexander Leidinger (x); \ 58206b17d7SAlexander Leidinger } \ 59206b17d7SAlexander Leidinger } while (0) 60206b17d7SAlexander Leidinger 61206b17d7SAlexander Leidinger SYSCTL_DECL(_hw_midi); 62206b17d7SAlexander Leidinger 63206b17d7SAlexander Leidinger #endif /* _KERNEL */ 64206b17d7SAlexander Leidinger 65206b17d7SAlexander Leidinger #define SYNTHPROP_MIDI 1 66206b17d7SAlexander Leidinger #define SYNTHPROP_SYNTH 2 67206b17d7SAlexander Leidinger #define SYNTHPROP_RX 4 68206b17d7SAlexander Leidinger #define SYNTHPROP_TX 8 69206b17d7SAlexander Leidinger 70206b17d7SAlexander Leidinger struct _midi_cmdtab { 71206b17d7SAlexander Leidinger int cmd; 72206b17d7SAlexander Leidinger char *name; 73206b17d7SAlexander Leidinger }; 74206b17d7SAlexander Leidinger typedef struct _midi_cmdtab midi_cmdtab; 75206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_seqevent[]; 76206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_seqioctl[]; 77206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_timer[]; 78206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_seqcv[]; 79206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_seqccmn[]; 80206b17d7SAlexander Leidinger 81206b17d7SAlexander Leidinger char *midi_cmdname(int cmd, midi_cmdtab * tab); 82206b17d7SAlexander Leidinger 83206b17d7SAlexander Leidinger enum { 84206b17d7SAlexander Leidinger MORE, 85206b17d7SAlexander Leidinger TIMERARMED, 86206b17d7SAlexander Leidinger QUEUEFULL 87206b17d7SAlexander Leidinger }; 88206b17d7SAlexander Leidinger 89206b17d7SAlexander Leidinger #endif 90