[alsa-devel] [PATCH] SND_SEQ_BLOCK and SND_SEQ_PORT_CAP_NONE defines
Jaroslav Kysela
perex at perex.cz
Wed Feb 6 10:51:47 CET 2008
On Thu, 31 Jan 2008, Aldrin Martoq wrote:
> Hey hackers,
>
> While developing pyalsa sequencer API, I found that sometimes 0 is
> used instead of a #defined value or constant.
>
> In my opinion, given that the alsa API is opaque (hides internal
> structure and provides methods for accessing them), we should define
> those missing "constants" for being consistent. So far I found:
> SND_SEQ_BLOCK 0 (blocking mode)
> SND_SEQ_PORT_CAP_NONE (the port defines no access capabilites)
Note that SND_SEQ_NONBLOCK is flag (bitmask). Also SND_SEQ_PORT_CAP_*
defines are bitmasks. I don't see usage to have defined for 0 because it
always mean "off state" rather than a direct value. Correct tests are:
val&SND_SEQ_NONBLOCK - nonblocking behaviour
(val&SND_SEQ_NONBLOCK)==0 - blocking behaviour
Regarding python. I think that we need to settle naming scheme. I just
moved my code to follow standard python rules (only class names have upper
letters and constants).
I also chose a different organization for constants in my code to have
possibility to enumerate all related bitmasks or numbers using
dictionaries. See my python modules.
It meas to define SEQ_ADDRESS_* like:
seq_address = {'BROADCAST': 0xff, 'SUBSCRIBERS': 0xfe, 'UNKNOWN': 0xfd}
open_mode = {'NONBLOCK': 1}
etc...
Jaroslav
-----
Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.
More information about the Alsa-devel
mailing list