mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-10-29 05:40:25 -04:00 
			
		
		
		
	uapi: Update asequencer.h definitions for 1.0.3
Updated from kernel for supporting UMP on sequencer API. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
		
							parent
							
								
									e80ee6ae75
								
							
						
					
					
						commit
						c40dc19a57
					
				
					 1 changed files with 70 additions and 21 deletions
				
			
		|  | @ -26,7 +26,7 @@ | |||
| #include <sound/asound.h> | ||||
| 
 | ||||
| /** version of the sequencer */ | ||||
| #define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 2) | ||||
| #define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 3) | ||||
| 
 | ||||
| /**
 | ||||
|  * definition of sequencer event types | ||||
|  | @ -190,6 +190,7 @@ struct snd_seq_connect { | |||
| #define SNDRV_SEQ_PRIORITY_HIGH		(1<<4)	/* event should be processed before others */ | ||||
| #define SNDRV_SEQ_PRIORITY_MASK		(1<<4) | ||||
| 
 | ||||
| #define SNDRV_SEQ_EVENT_UMP		(1<<5)	/* event holds a UMP packet */ | ||||
| 
 | ||||
| 	/* note event */ | ||||
| struct snd_seq_ev_note { | ||||
|  | @ -268,6 +269,19 @@ struct snd_seq_ev_quote { | |||
| 	struct snd_seq_event *event;		/* quoted event */ | ||||
| } __attribute__((packed)); | ||||
| 
 | ||||
| union snd_seq_event_data { /* event data... */ | ||||
| 	struct snd_seq_ev_note note; | ||||
| 	struct snd_seq_ev_ctrl control; | ||||
| 	struct snd_seq_ev_raw8 raw8; | ||||
| 	struct snd_seq_ev_raw32 raw32; | ||||
| 	struct snd_seq_ev_ext ext; | ||||
| 	struct snd_seq_ev_queue_control queue; | ||||
| 	union snd_seq_timestamp time; | ||||
| 	struct snd_seq_addr addr; | ||||
| 	struct snd_seq_connect connect; | ||||
| 	struct snd_seq_result result; | ||||
| 	struct snd_seq_ev_quote quote; | ||||
| }; | ||||
| 
 | ||||
| 	/* sequencer event */ | ||||
| struct snd_seq_event { | ||||
|  | @ -278,25 +292,27 @@ struct snd_seq_event { | |||
| 	unsigned char queue;		/* schedule queue */ | ||||
| 	union snd_seq_timestamp time;	/* schedule time */ | ||||
| 
 | ||||
| 
 | ||||
| 	struct snd_seq_addr source;	/* source address */ | ||||
| 	struct snd_seq_addr dest;	/* destination address */ | ||||
| 
 | ||||
| 	union {				/* event data... */ | ||||
| 		struct snd_seq_ev_note note; | ||||
| 		struct snd_seq_ev_ctrl control; | ||||
| 		struct snd_seq_ev_raw8 raw8; | ||||
| 		struct snd_seq_ev_raw32 raw32; | ||||
| 		struct snd_seq_ev_ext ext; | ||||
| 		struct snd_seq_ev_queue_control queue; | ||||
| 		union snd_seq_timestamp time; | ||||
| 		struct snd_seq_addr addr; | ||||
| 		struct snd_seq_connect connect; | ||||
| 		struct snd_seq_result result; | ||||
| 		struct snd_seq_ev_quote quote; | ||||
| 	} data; | ||||
| 	union snd_seq_event_data data; | ||||
| }; | ||||
| 
 | ||||
| 	/* (compatible) event for UMP-capable clients */ | ||||
| struct snd_seq_ump_event { | ||||
| 	snd_seq_event_type_t type;	/* event type */ | ||||
| 	unsigned char flags;		/* event flags */ | ||||
| 	char tag; | ||||
| 	unsigned char queue;		/* schedule queue */ | ||||
| 	union snd_seq_timestamp time;	/* schedule time */ | ||||
| 	struct snd_seq_addr source;	/* source address */ | ||||
| 	struct snd_seq_addr dest;	/* destination address */ | ||||
| 
 | ||||
| 	union { | ||||
| 		union snd_seq_event_data data; | ||||
| 		unsigned int ump[4]; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * bounce event - stored as variable size data | ||||
|  | @ -344,10 +360,11 @@ typedef int __bitwise snd_seq_client_type_t; | |||
| #define	KERNEL_CLIENT	((snd_seq_client_type_t) 2) | ||||
|                          | ||||
| 	/* event filter flags */ | ||||
| #define SNDRV_SEQ_FILTER_BROADCAST	(1<<0)	/* accept broadcast messages */ | ||||
| #define SNDRV_SEQ_FILTER_MULTICAST	(1<<1)	/* accept multicast messages */ | ||||
| #define SNDRV_SEQ_FILTER_BOUNCE		(1<<2)	/* accept bounce event in error */ | ||||
| #define SNDRV_SEQ_FILTER_USE_EVENT	(1<<31)	/* use event filter */ | ||||
| #define SNDRV_SEQ_FILTER_BROADCAST	(1U<<0)	/* accept broadcast messages */ | ||||
| #define SNDRV_SEQ_FILTER_MULTICAST	(1U<<1)	/* accept multicast messages */ | ||||
| #define SNDRV_SEQ_FILTER_BOUNCE		(1U<<2)	/* accept bounce event in error */ | ||||
| #define SNDRV_SEQ_FILTER_NO_CONVERT	(1U<<30) /* don't convert UMP events */ | ||||
| #define SNDRV_SEQ_FILTER_USE_EVENT	(1U<<31)	/* use event filter */ | ||||
| 
 | ||||
| struct snd_seq_client_info { | ||||
| 	int client;			/* client number to inquire */ | ||||
|  | @ -360,9 +377,15 @@ struct snd_seq_client_info { | |||
| 	int event_lost;			/* number of lost events */ | ||||
| 	int card;			/* RO: card number[kernel] */ | ||||
| 	int pid;			/* RO: pid[user] */ | ||||
| 	char reserved[56];		/* for future use */ | ||||
| 	unsigned int midi_version;	/* MIDI version */ | ||||
| 	unsigned int group_filter;	/* UMP group filter bitmap */ | ||||
| 	char reserved[48];		/* for future use */ | ||||
| }; | ||||
| 
 | ||||
| /* MIDI version numbers in client info */ | ||||
| #define SNDRV_SEQ_CLIENT_LEGACY_MIDI		0	/* Legacy client */ | ||||
| #define SNDRV_SEQ_CLIENT_UMP_MIDI_1_0		1	/* UMP MIDI 1.0 */ | ||||
| #define SNDRV_SEQ_CLIENT_UMP_MIDI_2_0		2	/* UMP MIDI 2.0 */ | ||||
| 
 | ||||
| /* client pool size */ | ||||
| struct snd_seq_client_pool { | ||||
|  | @ -422,6 +445,8 @@ struct snd_seq_remove_events { | |||
| #define SNDRV_SEQ_PORT_CAP_SUBS_READ	(1<<5)	/* allow read subscription */ | ||||
| #define SNDRV_SEQ_PORT_CAP_SUBS_WRITE	(1<<6)	/* allow write subscription */ | ||||
| #define SNDRV_SEQ_PORT_CAP_NO_EXPORT	(1<<7)	/* routing not allowed */ | ||||
| #define SNDRV_SEQ_PORT_CAP_INACTIVE	(1<<8)	/* inactive port */ | ||||
| #define SNDRV_SEQ_PORT_CAP_UMP_ENDPOINT	(1<<9)	/* MIDI 2.0 UMP Endpoint port */ | ||||
| 
 | ||||
| 	/* port type */ | ||||
| #define SNDRV_SEQ_PORT_TYPE_SPECIFIC	(1<<0)	/* hardware specific */ | ||||
|  | @ -431,6 +456,7 @@ struct snd_seq_remove_events { | |||
| #define SNDRV_SEQ_PORT_TYPE_MIDI_XG	(1<<4)	/* XG compatible device */ | ||||
| #define SNDRV_SEQ_PORT_TYPE_MIDI_MT32	(1<<5)	/* MT-32 compatible device */ | ||||
| #define SNDRV_SEQ_PORT_TYPE_MIDI_GM2	(1<<6)	/* General MIDI 2 compatible device */ | ||||
| #define SNDRV_SEQ_PORT_TYPE_MIDI_UMP	(1<<7)	/* UMP */ | ||||
| 
 | ||||
| /* other standards...*/ | ||||
| #define SNDRV_SEQ_PORT_TYPE_SYNTH	(1<<10)	/* Synth device (no MIDI compatible - direct wavetable) */ | ||||
|  | @ -448,6 +474,12 @@ struct snd_seq_remove_events { | |||
| #define SNDRV_SEQ_PORT_FLG_TIMESTAMP	(1<<1) | ||||
| #define SNDRV_SEQ_PORT_FLG_TIME_REAL	(1<<2) | ||||
| 
 | ||||
| /* port direction */ | ||||
| #define SNDRV_SEQ_PORT_DIR_UNKNOWN	0 | ||||
| #define SNDRV_SEQ_PORT_DIR_INPUT	1 | ||||
| #define SNDRV_SEQ_PORT_DIR_OUTPUT	2 | ||||
| #define SNDRV_SEQ_PORT_DIR_BIDIRECTION	3 | ||||
| 
 | ||||
| struct snd_seq_port_info { | ||||
| 	struct snd_seq_addr addr;	/* client/port numbers */ | ||||
| 	char name[64];			/* port name */ | ||||
|  | @ -464,7 +496,9 @@ struct snd_seq_port_info { | |||
| 	void *kernel;			/* reserved for kernel use (must be NULL) */ | ||||
| 	unsigned int flags;		/* misc. conditioning */ | ||||
| 	unsigned char time_queue;	/* queue # for timestamping */ | ||||
| 	char reserved[59];		/* for future use */ | ||||
| 	unsigned char direction;	/* port usage direction (r/w/bidir) */ | ||||
| 	unsigned char ump_group;	/* 0 = UMP EP (no conversion), 1-16 = UMP group number */ | ||||
| 	char reserved[57];		/* for future use */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
|  | @ -568,6 +602,18 @@ struct snd_seq_query_subs { | |||
| 	char reserved[64];	/* for future use */ | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * UMP-specific information | ||||
|  */ | ||||
| /* type of UMP info query */ | ||||
| #define SNDRV_SEQ_CLIENT_UMP_INFO_ENDPOINT	0 | ||||
| #define SNDRV_SEQ_CLIENT_UMP_INFO_BLOCK		1 | ||||
| 
 | ||||
| struct snd_seq_client_ump_info { | ||||
| 	int client;			/* client number to inquire/set */ | ||||
| 	int type;			/* type to inquire/set */ | ||||
| 	unsigned char info[512];	/* info (either UMP ep or block info) */ | ||||
| } __packed; | ||||
| 
 | ||||
| /*
 | ||||
|  *  IOCTL commands | ||||
|  | @ -577,9 +623,12 @@ struct snd_seq_query_subs { | |||
| #define SNDRV_SEQ_IOCTL_CLIENT_ID	_IOR ('S', 0x01, int) | ||||
| #define SNDRV_SEQ_IOCTL_SYSTEM_INFO	_IOWR('S', 0x02, struct snd_seq_system_info) | ||||
| #define SNDRV_SEQ_IOCTL_RUNNING_MODE	_IOWR('S', 0x03, struct snd_seq_running_info) | ||||
| #define SNDRV_SEQ_IOCTL_USER_PVERSION	_IOW('S', 0x04, int) | ||||
| 
 | ||||
| #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO	_IOWR('S', 0x10, struct snd_seq_client_info) | ||||
| #define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO	_IOW ('S', 0x11, struct snd_seq_client_info) | ||||
| #define SNDRV_SEQ_IOCTL_GET_CLIENT_UMP_INFO	_IOWR('S', 0x12, struct snd_seq_client_ump_info) | ||||
| #define SNDRV_SEQ_IOCTL_SET_CLIENT_UMP_INFO	_IOWR('S', 0x13, struct snd_seq_client_ump_info) | ||||
| 
 | ||||
| #define SNDRV_SEQ_IOCTL_CREATE_PORT	_IOWR('S', 0x20, struct snd_seq_port_info) | ||||
| #define SNDRV_SEQ_IOCTL_DELETE_PORT	_IOW ('S', 0x21, struct snd_seq_port_info) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Takashi Iwai
						Takashi Iwai