mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-28 05:40:23 -04:00
control: doc - create controls plugin page
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
a64391a428
commit
7371ac9aad
6 changed files with 178 additions and 2 deletions
|
|
@ -40,7 +40,16 @@ INPUT = @top_srcdir@/doc/index.doxygen \
|
|||
@top_srcdir@/src/names.c \
|
||||
@top_srcdir@/src/shmarea.c \
|
||||
@top_srcdir@/src/userfile.c \
|
||||
@top_srcdir@/src/control \
|
||||
@top_srcdir@/src/control/cards.c \
|
||||
@top_srcdir@/src/control/control.c \
|
||||
@top_srcdir@/src/control/control_plugin.c \
|
||||
@top_srcdir@/src/control/control_hw.c \
|
||||
@top_srcdir@/src/control/control_remap.c \
|
||||
@top_srcdir@/src/control/control_shm.c \
|
||||
@top_srcdir@/src/control/ctlparse.c \
|
||||
@top_srcdir@/src/control/hcontrol.c \
|
||||
@top_srcdir@/src/control/setup.c \
|
||||
@top_srcdir@/src/control/tlv.c \
|
||||
@top_srcdir@/src/mixer \
|
||||
@top_srcdir@/src/pcm/pcm.c \
|
||||
@top_srcdir@/src/pcm/pcm_mmap.c \
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ may be placed in the library code instead of the kernel driver.</P>
|
|||
|
||||
<UL>
|
||||
<LI>Page \ref control explains the primitive controls API.
|
||||
<LI>Page \ref control_plugins explains the design of primitive control plugins.
|
||||
<LI>Page \ref hcontrol explains the high-level primitive controls API.
|
||||
<LI>Page \ref mixer explains the mixer controls API.
|
||||
<LI>Page \ref pcm explains the design of the PCM (digital audio) API.
|
||||
|
|
|
|||
49
include/control_plugin.h
Normal file
49
include/control_plugin.h
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/**
|
||||
* \file include/control_plugin.h
|
||||
* \brief Common control plugin code
|
||||
* \author Jaroslav Kysela <perex@perex.cz>
|
||||
* \date 2021
|
||||
*
|
||||
* Application interface library for the ALSA driver.
|
||||
* See the \ref control_plugins page for more details.
|
||||
*
|
||||
* \warning Using of contents of this header file might be dangerous
|
||||
* in the sense of compatibility reasons. The contents might be
|
||||
* freely changed in future.
|
||||
*/
|
||||
/*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __ALSA_CONTROL_PLUGIN_H
|
||||
#define __ALSA_CONTROL_PLUGIN_H
|
||||
|
||||
/**
|
||||
* \defgroup Control_Plugins Primitive Control Plugins
|
||||
* \ingroup Control
|
||||
* See the \ref control_plugins page for more details.
|
||||
* \{
|
||||
*/
|
||||
|
||||
/*
|
||||
* Control HW
|
||||
*/
|
||||
int snd_ctl_hw_open(snd_ctl_t **handle, const char *name, int card, int mode);
|
||||
int _snd_ctl_hw_open(snd_ctl_t **handlep, char *name, snd_config_t *root ATTRIBUTE_UNUSED, snd_config_t *conf, int mode);
|
||||
|
||||
/** \} */
|
||||
|
||||
#endif /* __ALSA_CONTROL_PLUGIN_H */
|
||||
|
|
@ -2,7 +2,7 @@ EXTRA_LTLIBRARIES = libcontrol.la
|
|||
|
||||
libcontrol_la_SOURCES = cards.c tlv.c namehint.c hcontrol.c \
|
||||
control.c control_hw.c setup.c ctlparse.c \
|
||||
control_symbols.c
|
||||
control_plugin.c control_symbols.c
|
||||
if BUILD_CTL_PLUGIN_REMAP
|
||||
libcontrol_la_SOURCES += control_remap.c
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
/**
|
||||
* \file control/control_hw.c
|
||||
* \brief CTL HW Plugin Interface
|
||||
* \author Jaroslav Kysela <perex@perex.cz>
|
||||
* \date 2000
|
||||
*/
|
||||
/*
|
||||
* Control Interface - Hardware
|
||||
* Copyright (c) 1998,1999,2000 by Jaroslav Kysela <perex@perex.cz>
|
||||
|
|
@ -375,6 +381,17 @@ static const snd_ctl_ops_t snd_ctl_hw_ops = {
|
|||
.read = snd_ctl_hw_read,
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Creates a new hw control
|
||||
* \param handle Returns created control handle
|
||||
* \param name Name of control device
|
||||
* \param card Number of card
|
||||
* \param mode Control mode
|
||||
* \retval zero on success otherwise a negative error code
|
||||
* \warning Using of this function might be dangerous in the sense
|
||||
* of compatibility reasons. The prototype might be freely
|
||||
* changed in future.
|
||||
*/
|
||||
int snd_ctl_hw_open(snd_ctl_t **handle, const char *name, int card, int mode)
|
||||
{
|
||||
int fd, ver;
|
||||
|
|
@ -437,6 +454,40 @@ int snd_ctl_hw_open(snd_ctl_t **handle, const char *name, int card, int mode)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*! \page control_plugins
|
||||
|
||||
\section control_plugins_hw Plugin: hw
|
||||
|
||||
This plugin communicates directly with the ALSA kernel driver. It is a raw
|
||||
communication without any conversions.
|
||||
|
||||
\code
|
||||
control.name {
|
||||
type hw # Kernel PCM
|
||||
card INT/STR # Card name (string) or number (integer)
|
||||
}
|
||||
\endcode
|
||||
|
||||
\subsection control_plugins_hw_funcref Function reference
|
||||
|
||||
<UL>
|
||||
<LI>snd_ctl_hw_open()
|
||||
<LI>_snd_ctl_hw_open()
|
||||
</UL>
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Creates a new hw control handle
|
||||
* \param handlep Returns created control handle
|
||||
* \param name Name of control device
|
||||
* \param root Root configuration node
|
||||
* \param conf Configuration node with hw PCM description
|
||||
* \param mode Control Mode
|
||||
* \warning Using of this function might be dangerous in the sense
|
||||
* of compatibility reasons. The prototype might be freely
|
||||
* changed in future.
|
||||
*/
|
||||
int _snd_ctl_hw_open(snd_ctl_t **handlep, char *name, snd_config_t *root ATTRIBUTE_UNUSED, snd_config_t *conf, int mode)
|
||||
{
|
||||
snd_config_iterator_t i, next;
|
||||
|
|
@ -462,4 +513,6 @@ int _snd_ctl_hw_open(snd_ctl_t **handlep, char *name, snd_config_t *root ATTRIBU
|
|||
return -EINVAL;
|
||||
return snd_ctl_hw_open(handlep, name, card, mode);
|
||||
}
|
||||
#ifndef DOC_HIDDEN
|
||||
SND_DLSYM_BUILD_VERSION(_snd_ctl_hw_open, SND_CONTROL_DLSYM_VERSION);
|
||||
#endif
|
||||
|
|
|
|||
64
src/control/control_plugin.c
Normal file
64
src/control/control_plugin.c
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
* \file control/control_plugin.c
|
||||
* \ingroup Control
|
||||
* \brief Control Interface
|
||||
* \author Jaroslav Kysela <perex@perex.cz>
|
||||
* \date 2021
|
||||
*/
|
||||
/*
|
||||
* Control - Common plugin code
|
||||
* Copyright (c) 2021 by Jaroslav Kysela <perex@perex.cz>
|
||||
*
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
||||
\page control_plugins Primitive control plugins
|
||||
|
||||
Control plugins extends functionality and features of control devices.
|
||||
The plugins take care about various control mapping or so.
|
||||
|
||||
The child configuration (in one compound):
|
||||
|
||||
\code
|
||||
ctl.test {
|
||||
type remap
|
||||
child "hw:0"
|
||||
... map/remap configuration ...
|
||||
}
|
||||
\endcode
|
||||
|
||||
The child may be defined as compound containing the full specification:
|
||||
|
||||
\code
|
||||
ctl.test {
|
||||
type remap
|
||||
child {
|
||||
type hw
|
||||
card 0
|
||||
}
|
||||
... map/remap configuration ...
|
||||
}
|
||||
\endcode
|
||||
|
||||
*/
|
||||
|
||||
#include "control_local.h"
|
||||
#include "control_plugin.h"
|
||||
|
||||
/* move the common plugin code from control_remap.c here on demand */
|
||||
Loading…
Add table
Add a link
Reference in a new issue