1 /* 2 * ALSA client/server header file 3 * Copyright (c) 2000 by Abramo Bagnara <abramo (at) alsa-project.org> 4 * 5 * This library is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU Lesser General Public License as 7 * published by the Free Software Foundation; either version 2.1 of 8 * the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 * 19 */ 20 21 #include <netdb.h> 22 #include "../src/pcm/pcm_local.h" 23 #include "../src/control/control_local.h" 24 25 int snd_receive_fd(int sock, void *data, size_t len, int *fd); 26 int snd_is_local(struct hostent *hent); 27 28 typedef enum _snd_dev_type { 29 SND_DEV_TYPE_PCM, 30 SND_DEV_TYPE_CONTROL, 31 SND_DEV_TYPE_RAWMIDI, 32 SND_DEV_TYPE_TIMER, 33 SND_DEV_TYPE_HWDEP, 34 SND_DEV_TYPE_SEQ, 35 } snd_dev_type_t; 36 37 typedef enum _snd_transport_type { 38 SND_TRANSPORT_TYPE_SHM, 39 SND_TRANSPORT_TYPE_TCP, 40 } snd_transport_type_t; 41 42 #define SND_PCM_IOCTL_HWSYNC _IO ('A', 0x22) 43 #define SND_PCM_IOCTL_STATE _IO ('A', 0xf1) 44 #define SND_PCM_IOCTL_MMAP _IO ('A', 0xf2) 45 #define SND_PCM_IOCTL_MUNMAP _IO ('A', 0xf3) 46 #define SND_PCM_IOCTL_MMAP_COMMIT _IO ('A', 0xf4) 47 #define SND_PCM_IOCTL_AVAIL_UPDATE _IO ('A', 0xf5) 48 #define SND_PCM_IOCTL_ASYNC _IO ('A', 0xf6) 49 #define SND_PCM_IOCTL_CLOSE _IO ('A', 0xf7) 50 #define SND_PCM_IOCTL_POLL_DESCRIPTOR _IO ('A', 0xf8) 51 #define SND_PCM_IOCTL_HW_PTR_FD _IO ('A', 0xf9) 52 #define SND_PCM_IOCTL_APPL_PTR_FD _IO ('A', 0xfa) 53 #define SND_PCM_IOCTL_FORWARD _IO ('A', 0xfb) 54 55 typedef struct { 56 snd_pcm_uframes_t ptr; 57 int use_mmap; 58 off_t offset; /* for mmap */ 59 int changed; 60 } snd_pcm_shm_rbptr_t; 61 62 typedef struct { 63 long result; 64 int cmd; 65 snd_pcm_shm_rbptr_t hw; 66 snd_pcm_shm_rbptr_t appl; 67 union { 68 struct { 69 int sig; 70 pid_t pid; 71 } async; 72 snd_pcm_info_t info; 73 snd_pcm_hw_params_t hw_refine; 74 snd_pcm_hw_params_t hw_params; 75 snd_pcm_sw_params_t sw_params; 76 snd_pcm_status_t status; 77 struct { 78 snd_pcm_uframes_t frames; 79 } avail; 80 struct { 81 snd_pcm_sframes_t frames; 82 } delay; 83 struct { 84 int enable; 85 } pause; 86 snd_pcm_channel_info_t channel_info; 87 struct { 88 snd_pcm_uframes_t frames; 89 } rewind; 90 struct { 91 snd_pcm_uframes_t frames; 92 } forward; 93 struct { 94 int fd; 95 } link; 96 struct { 97 snd_pcm_uframes_t offset; 98 snd_pcm_uframes_t frames; 99 } mmap_commit; 100 struct { 101 char use_mmap; 102 int shmid; 103 off_t offset; 104 } rbptr; 105 } u; 106 char data[0]; 107 } snd_pcm_shm_ctrl_t; 108 109 #define PCM_SHM_SIZE sizeof(snd_pcm_shm_ctrl_t) 110 111 #define SND_CTL_IOCTL_READ _IOR('U', 0xf1, snd_ctl_event_t) 112 #define SND_CTL_IOCTL_CLOSE _IO ('U', 0xf2) 113 #define SND_CTL_IOCTL_POLL_DESCRIPTOR _IO ('U', 0xf3) 114 #define SND_CTL_IOCTL_ASYNC _IO ('U', 0xf4) 115 116 typedef struct { 117 int result; 118 int cmd; 119 union { 120 struct { 121 int sig; 122 pid_t pid; 123 } async; 124 int device; 125 int subscribe_events; 126 snd_ctl_card_info_t card_info; 127 snd_ctl_elem_list_t element_list; 128 snd_ctl_elem_info_t element_info; 129 snd_ctl_elem_value_t element_read; 130 snd_ctl_elem_value_t element_write; 131 snd_ctl_elem_id_t element_lock; 132 snd_ctl_elem_id_t element_unlock; 133 snd_hwdep_info_t hwdep_info; 134 snd_pcm_info_t pcm_info; 135 int pcm_prefer_subdevice; 136 snd_rawmidi_info_t rawmidi_info; 137 int rawmidi_prefer_subdevice; 138 unsigned int power_state; 139 snd_ctl_event_t read; 140 } u; 141 char data[0]; 142 } snd_ctl_shm_ctrl_t; 143 144 #define CTL_SHM_SIZE 65536 145 #define CTL_SHM_DATA_MAXLEN (CTL_SHM_SIZE - offsetof(snd_ctl_shm_ctrl_t, data)) 146 147 typedef struct { 148 unsigned char dev_type; 149 unsigned char transport_type; 150 unsigned char stream; 151 unsigned char mode; 152 unsigned char namelen; 153 char name[0]; 154 } snd_client_open_request_t; 155 156 typedef struct { 157 long result; 158 int cookie; 159 } snd_client_open_answer_t; 160 161