Edit

IABSD.fr/src/sys/dev/midivar.h

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2024-10-14 00:47:36
    Hash : f007d8ce
    Message : remove unneeded proc.h include

  • sys/dev/midivar.h
  • /*	$OpenBSD: midivar.h,v 1.15 2024/10/14 00:47:36 jsg Exp $	*/
    
    /*
     * Copyright (c) 2003, 2004 Alexandre Ratchov
     *
     * Permission to use, copy, modify, and distribute this software for any
     * purpose with or without fee is hereby granted, provided that the above
     * copyright notice and this permission notice appear in all copies.
     *
     * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     */
    
    #ifndef _SYS_DEV_MIDIVAR_H_
    #define _SYS_DEV_MIDIVAR_H_
    
    #include <dev/midi_if.h>
    #include <sys/device.h>
    #include <sys/event.h>
    #include <sys/timeout.h>
    
    #define MIDI_RATE	3125	/* midi uart baud rate in bytes/second */
    
    /*
     * simple ring buffer
     */
    #define MIDIBUF_SIZE		(1 << 10)
    #define MIDIBUF_MASK		(MIDIBUF_SIZE - 1)
    
    struct midi_buffer {
    	struct	      klist klist;	/* to record & wakeup poll(2) */
    	int	      blocking;		/* read/write blocking */
    	unsigned char data[MIDIBUF_SIZE]; 
    	unsigned      start, used;
    };
    
    #define MIDIBUF_START(buf)	((buf)->start)
    #define MIDIBUF_END(buf)	(((buf)->start + (buf)->used) & MIDIBUF_MASK)
    #define MIDIBUF_USED(buf)	((buf)->used)
    #define MIDIBUF_AVAIL(buf)	(MIDIBUF_SIZE - (buf)->used)
    #define MIDIBUF_ISFULL(buf)	((buf)->used >= MIDIBUF_SIZE)
    #define MIDIBUF_ISEMPTY(buf)	((buf)->used == 0)
    #define MIDIBUF_WRITE(buf, byte) 				\
    	do {							\
    		(buf)->data[MIDIBUF_END(buf)] = (byte);		\
    		(buf)->used++;					\
    	} while(0)
    #define MIDIBUF_READ(buf, byte)					\
    	do {							\
    		(byte) = (buf)->data[(buf)->start++];		\
    		(buf)->start &= MIDIBUF_MASK;			\
    		(buf)->used--;					\
    	} while(0)
    #define MIDIBUF_REMOVE(buf, count)				\
    	do {							\
    		(buf)->start += (count);			\
    		(buf)->start &= MIDIBUF_MASK;			\
    		(buf)->used  -= (count);			\
    	} while(0)
    #define MIDIBUF_INIT(buf) 					\
    	do {							\
    		(buf)->start = (buf)->used = 0;			\
    	} while(0)
    	
    
    struct midi_softc {
    	struct device	    dev;
    	const struct midi_hw_if *hw_if;
    	void		   *hw_hdl;
    	int		    isbusy;		/* concerns only the output */
    	int		    flags;		/* open flags */
    	int		    props;		/* midi hw proprieties */
    	struct timeout	    timeo;
    	struct midi_buffer  inbuf;
    	struct midi_buffer  outbuf;
    };
    
    #endif /* _SYS_DEV_MIDIVAR_H_ */