This patch adds the basic support of UMP on ALSA sequencer API.
An extended event type, snd_seq_ump_event_t, is defined. It's
compatible with the existing type, snd_seq_event_t, but it has a
larger payload of 16 bytes instead of 12 bytes, for holding the full
128bit UMP packet.
The new snd_seq_ump_event_t must have the bit SND_SEQ_EVENT_UMP in the
event flags.
A few new API functions have been added such as
snd_seq_ump_event_output() and snd_seq_ump_event_input() for
reading/writing this new event object.
The support of UMP in the sequencer client is switched by the function
snd_seq_client_set_midi_version(). It can switch from the default
legacy MIDI to UMP MIDI 1.0 or 2.0 on the fly.
The automatic event conversion among UMP and legacy clients can be
suppressed via snd_seq_client_set_ump_conversion().
The inquiry of the associated UMP Endpoints and UMP Blocks can be done
via snd_seq_get_ump_endpoint_info() and snd_seq_get_ump_block_info().
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add a function to query the next available UMP device via control
interface, just like the existing one for rawmidi. As the UMP rawmidi
is compatible with the standard rawmidi, no extra helper for the
rawmidi_info is present. Ditto for the preferred subdevice, too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This patch adds the initial support for UMP rawmidi access.
It's merely the wrapper for the standard rawmidi to access to the UMP
rawmidi device.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Only one library should define the safe_strto function. Export it
correctly and add _snd_ prefix to avoid possible clashes with the other
application code.
Fixes: 47252054 ("src/topology/parser.c: drop duplicate safe_strtol_base")
Fixes: https://github.com/alsa-project/alsa-lib/pull/208
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The dlopen() function might fail also for another reason than
a missing file, thus return the error string from dlerror().
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The functions dynamically loaded via plugin aren't fully listed
in the exported functions in Versions file. This caused errors at
opening devices with such plugins.
The entries in the current Versions file don't work as expected.
Since the first ALSA_0.9 has already snd_* global definitions, all
the rest are simply ignored. Some symbols (e.g. snd_hw_params_*)
indeed work because they have explicit symver definitions, but
ALSA_0.9.6 and later are all superfluous.
This patch clean up these useless entries. Also, the patch restricts
the matching patterns for _snd_* and __snd_* entries to reduce the
unneeded export symbols.
Export helper functions to convert dB level and range.
snd_tlv_*dB*() are to convert dB level or range directly from TLV data.
snd_ctl_*dB*() are to get dB level or range from a control element.