|
NAMEsioctl_open , sioctl_close ,
sioctl_ondesc , sioctl_onval ,
sioctl_setval , sioctl_nfds ,
sioctl_pollfd , sioctl_eof
—
interface to audio parameters
SYNOPSIS#include <sndio.h>
struct sioctl_hdl *
void
int
void
int
int
int
int
int
DESCRIPTIONAudio devices may expose a number of controls, like the playback volume control. Each control has an integer address and an integer value. Some values are boolean and can only be switched to either 0 (off) or 1 (on). Any control may be changed by submitting a new value to its address. When values change, asynchronous notifications are sent.Control descriptions are available, allowing them to be grouped and represented in a human readable form. Opening and closing the control deviceFirst the application must call thesioctl_open ()
function to obtain a handle that will be passed as the
hdl argument to other functions.
The name parameter gives the device string
discussed in
sndio(7).
In most cases it should be set to SIO_DEVANY to allow the user to select it
using the If the nbio_flag argument is 1, then the
The Control descriptionsThesioctl_ondesc () function can be used to obtain the
description of all available controls and their initial values. It registers a
callback function that is immediately invoked for all controls. It is called
once with a NULL argument to indicate that the full
description was sent and that the caller has a consistent representation of
the control set.
Then, whenever a control description changes, the callback is
invoked with the updated information followed by a call with a
Controls are described by the sioctl_desc structure as follows: struct sioctl_node { char name[SIOCTL_NAMEMAX]; /* ex. "spkr" */ int unit; /* optional number or -1 */ }; struct sioctl_desc { unsigned int addr; /* control address */ #define SIOCTL_NONE 0 /* deleted */ #define SIOCTL_NUM 2 /* integer in the maxval range */ #define SIOCTL_SW 3 /* on/off switch (1 or 0) */ #define SIOCTL_VEC 4 /* number, element of vector */ #define SIOCTL_LIST 5 /* switch, element of a list */ #define SIOCTL_SEL 6 /* element of a selector */ unsigned int type; /* one of above */ char func[SIOCTL_NAMEMAX]; /* function name, ex. "level" */ char group[SIOCTL_NAMEMAX]; /* group this control belongs to */ struct sioctl_node node0; /* affected node */ struct sioctl_node node1; /* dito for SIOCTL_{VEC,LIST,SEL} */ unsigned int maxval; /* max value */ }; The addr attribute is the control address,
usable with The type attribute indicates what the structure describes. Possible types are:
The func attribute is the name of the parameter being controlled. There may be no parameters of different types with the same name. The node0 and node1
attributes indicate the names of the controlled nodes, typically channels of
audio streams. node1 is meaningful for
Names in the node0 and node1 attributes and func are strings usable as unique identifiers within the given group. The maxval attribute indicates the maximum value of this control. For boolean control types it is set to 1. Changing and reading control valuesControls are changed with thesioctl_setval () function,
by giving the index of the control and the new value. The
sioctl_onval () function can be used to register a
callback which will be invoked whenever a control changes. Integer values are
in the range from 0 to maxval.
Interface to poll(2)Thesioctl_pollfd () function fills the array
pfd of pollfd structures, used by
poll(2),
with events; the latter is a bit-mask of
POLLIN and POLLOUT constants.
sioctl_pollfd () returns the number of
pollfd structures filled. The
sioctl_revents () function returns the bit-mask set by
poll(2) in
the pfd array of pollfd
structures. If POLLOUT is set,
sioctl_setval () can be called without blocking.
POLLHUP may be set if an error occurs, even if it is
not selected with sioctl_pollfd ().
POLLIN is not used yet.
The ENVIRONMENT
SEE ALSOsndioctl(1), poll(2), sio_open(3), sndio(7)HISTORYThese functions first appeared in OpenBSD 6.7.AUTHORSAlexandre Ratchov <ratchov@openbsd.org>
Visit the GSP FreeBSD Man Page Interface. |