#ifndef MIXER_CONTROLS_H_INCLUDED #define MIXER_CONTROLS_H_INCLUDED #include struct control { snd_mixer_elem_t *elem; char *name; unsigned int flags; #define TYPE_PVOLUME (1u << 4) #define TYPE_CVOLUME (1u << 5) #define TYPE_PSWITCH (1u << 6) #define TYPE_CSWITCH (1u << 7) #define TYPE_ENUM (1u << 8) #define HAS_VOLUME_0 (1u << 9) #define HAS_VOLUME_1 (1u << 10) #define HAS_PSWITCH_0 (1u << 11) #define HAS_PSWITCH_1 (1u << 12) #define HAS_CSWITCH_0 (1u << 13) #define HAS_CSWITCH_1 (1u << 14) #define IS_MULTICH (1u << 15) #define IS_ACTIVE (1u << 16) #define MULTICH_MASK (0x0000f) snd_mixer_selem_channel_id_t volume_channels[2]; snd_mixer_selem_channel_id_t pswitch_channels[2]; snd_mixer_selem_channel_id_t cswitch_channels[2]; unsigned int enum_channel_bits; }; extern struct control *controls; extern unsigned int controls_count; bool are_there_any_controls(void); void create_controls(void); void free_controls(void); #endif