ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.I.b.tar.gz#/lib/gcc-lib/i386-next-nextstep3/2.7.2.2.f.2/include/sound/sounddriver.h

This is sounddriver.h in view mode; [Download] [Up]

/*
 *	sounddriver.h - functional sound/dsp driver interface.
 *	Copyright 1988-90 NeXT, Inc.
 *
 */

#import <mach/mach.h>
#import <mach/mach_init.h>
#import <mach/message.h>
#import <bsd/sys/types.h>

/*
 * Valid sources and destination codes for stream setup
 */

#define SNDDRIVER_STREAM_FROM_SNDIN			(1)
#define SNDDRIVER_STREAM_TO_SNDOUT_22			(2)
#define SNDDRIVER_STREAM_TO_SNDOUT_44			(3)
#define SNDDRIVER_STREAM_FROM_DSP			(4)
#define SNDDRIVER_STREAM_TO_DSP				(5)
#define SNDDRIVER_STREAM_SNDIN_TO_DSP			(6)
#define SNDDRIVER_STREAM_DSP_TO_SNDOUT_22		(7)
#define SNDDRIVER_STREAM_DSP_TO_SNDOUT_44		(8)
#define SNDDRIVER_STREAM_FROM_SNDIN_THROUGH_DSP		(9)
#define SNDDRIVER_STREAM_THROUGH_DSP_TO_SNDOUT_22	(10)
#define SNDDRIVER_STREAM_THROUGH_DSP_TO_SNDOUT_44	(11)
/* New for 2.0 */
#define SNDDRIVER_DMA_STREAM_TO_DSP			(12)
#define SNDDRIVER_DMA_STREAM_FROM_DSP			(13)
#define SNDDRIVER_DMA_STREAM_THROUGH_DSP_TO_SNDOUT_22	(14)
#define SNDDRIVER_DMA_STREAM_THROUGH_DSP_TO_SNDOUT_44	(15)
/* Reserved for private sound library use */
#define SNDDRIVER_STREAM_RESERVED_1			(16)
#define SNDDRIVER_STREAM_RESERVED_2			(17)

/*
 * Protocol options for the dsp (subset of <nextdev/snd_msgs.h> protocols)
 */
#define SNDDRIVER_DSP_PROTO_DSPERR	0x1	/* DSP error messages enabled*/
#define SNDDRIVER_DSP_PROTO_C_DMA	0x2	/* Complex DMA mode*/
#define SNDDRIVER_DSP_PROTO_S_DMA	0x4	/* Simple DMA mode*/
/* New for 2.0 */
#define SNDDRIVER_DSP_PROTO_HFABORT	0x80	/* Enable DSP abort on HF2&HF3*/
#define SNDDRIVER_DSP_PROTO_DSPMSG	0x100	/* DSP messages enabled*/
#define SNDDRIVER_DSP_PROTO_RAW 	0x200	/* Enable raw DSP mode*/

/*
 * DSP Host Commands used with protocol SNDDRIVER_DSP_PROTO_C_DMA.
 * See on-line programming examples for usage.
 */
#define SNDDRIVER_DSP_HC_HOST_RD	(0x24>>1) 	/* Host Read Done*/
#define SNDDRIVER_DSP_HC_HOST_WD	(0x28>>1)	/* Host Write Done*/
#define SNDDRIVER_DSP_HC_SYS_CALL	(0x2C>>1)	/* System Call*/

/*
 * Control codes for streams
 */
#define SNDDRIVER_AWAIT_STREAM		(0x1)
#define SNDDRIVER_ABORT_STREAM		(0x2)
#define SNDDRIVER_PAUSE_STREAM		(0x4)
#define SNDDRIVER_RESUME_STREAM		(0x8)

/*
 * Driver message priorities
 */
#define SNDDRIVER_LOW_PRIORITY		(2)
#define SNDDRIVER_MED_PRIORITY		(1)
#define SNDDRIVER_HIGH_PRIORITY		(0)

/*
 * DSP Host Interface Bits
 */
#define SNDDRIVER_ICR_INIT      (0x80000000)    /* settable*/
#define SNDDRIVER_ICR_HM1       (0x40000000)    /* settable mode bit*/
#define SNDDRIVER_ICR_HM0       (0x20000000)    /* settable mode bit*/
#define SNDDRIVER_ICR_HF1       (0x10000000)    /* settable host flag*/
#define SNDDRIVER_ICR_HF0       (0x08000000)    /* settable host flag*/
#define SNDDRIVER_ICR_TREQ      (0x02000000)    /* read-only, set by protocol*/
#define SNDDRIVER_ICR_RREQ      (0x01000000)    /* read-only, set by protocol*/

#define SNDDRIVER_CVR_HC        (0x00800000)    /* read-only, set by host cmd*/
#define SNDDRIVER_CVR_HV_MASK   (0x001F0000)    /* read-only, set by host cmd*/

#define SNDDRIVER_ISR_HREQ      (0x00008000)    /* readable host request flag*/
#define SNDDRIVER_ISR_DMA       (0x00004000)    /* readable dma-mode flag*/
#define SNDDRIVER_ISR_HF3       (0x00001000)    /* readable host flag*/
#define SNDDRIVER_ISR_HF2       (0x00000800)    /* readable host flag*/
#define SNDDRIVER_ISR_TRDY      (0x00000400)    /* readable status bit*/
#define SNDDRIVER_ISR_TXDE      (0x00000200)    /* readable status bit*/
#define SNDDRIVER_ISR_RXDF      (0x00000100)    /* readable status bit*/


#include "snddriver_client.h"

/*
 * Asynchronous return message parsing and callout (the reply server).
 *
 * The snddriver_reply_server implementation takes a pointer to a message 
 * and a pointer to a structure containing the dispatch functions for
 * each type of message. It parses the message and calls the
 * appropriate procedure, and handles the reply message (if any).
 */

typedef void (*sndreply_tagged_t)(void *arg, int tag);
typedef void (*sndreply_recorded_data_t)(void *arg, int tag, 
					 void *data, int size);
typedef void (*sndreply_dsp_cond_true_t)(void *arg, u_int mask, 
					 u_int flags, u_int regs);
typedef void (*sndreply_dsp_msg_t)(void *arg, int *data, int size);

typedef struct snddriver_handlers {
    void *			arg;
    int				timeout;
    sndreply_tagged_t		started;
    sndreply_tagged_t		completed;
    sndreply_tagged_t		aborted;
    sndreply_tagged_t		paused;
    sndreply_tagged_t		resumed;
    sndreply_tagged_t		overflow;
    sndreply_recorded_data_t	recorded_data;
    sndreply_dsp_cond_true_t	condition_true;
    sndreply_dsp_msg_t		dsp_message;
    sndreply_dsp_msg_t		dsp_error;
 } snddriver_handlers_t;

kern_return_t snddriver_reply_handler(
	msg_header_t		*msg,		/* message to parse*/
	snddriver_handlers_t	*handlers);	/* table of callout procs*/

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.