• Takashi Sakamoto's avatar
    ALSA: firewire-tascam: queue events for change of control surface · d7167422
    Takashi Sakamoto authored
    Units of TASCAM FireWire series transfer image of states of the unit in
    tx isochronous packets. Demultiplexing of the states from the packets
    is done in software interrupt context regardless of any process context.
    In a view of userspace applications, it needs to have notification
    mechanism to catch change of the states.
    
    This commit implements a queue to store events for the notification. The
    image of states includes fluctuating data such as level of gain/volume
    for physical input/output and position of knobs. Therefore the events
    are queued corresponding to some control features only.
    
    Furthermore, the queued events are planned to be consumed by userspace
    applications via ALSA hwdep interface. This commit suppresses event
    queueing when no applications open the hwdep interface.
    
    However, the queue is maintained in an optimistic scenario, thus without
    any care against overrrun. This is reasonable because target events are
    useless just to handle PCM frames. It starts queueing when an usespace
    application opens hwdep interface, thus it's expected to read the queued
    events steadily.
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    d7167422
tascam-hwdep.c 4.26 KB