[alsa-devel] [RFC][PATCH 00/13] alsa-tools: libhinawa for control applications of FireWire devices

Takashi Sakamoto o-takashi at sakamocchi.jp
Sun Jan 25 12:34:21 CET 2015


This is RFC for a new library into alsa-tools.

ALSA in Linux 3.16 or later extends a support for FireWire sound devices.
Currently ALSA drivers supports streaming functionality only, while
most of these devices require software implementation to control its
internal DSP. The way to achieve this is to transfer byte sequence to
the unit and wait byte sequence which the unit transfers if required.

This library, libhinawa, just support these operations, nothing others. The
supported types of transactions are:
 - IEEE 1394 read transaction
 - IEEE 1394 write transaction
 - IEEE 1394 lock transaction
 - IEC 61883-1 FCP transaction
 - Echo Fireworks transaction (with a help of snd-fireworks kernel driver)
 - Dice notification (with a help of snd-dice kernel driver)

To help new developers, this library supports GObject Introspection for
language bindings. The main logic of applications can be written with
preferred languages such as Python, Ruby, Perl and so on. In the end of
this patchset, some Python scripts with Gtk+, Qt4 and Qt5 are committed as
samples.

This is my first development with GNU Autotools, GLib/GObject and GObject
Introspection. Furthermore, I'm a beginner of FireWire subsystem programming.
I'm happy to receive your comments, especially:
 - the way to write Linux version dependency in configure.ac
 - the way of libtool versioning
 - the value of poll timeout in fw_unit/snd_unit
 - the value of thread condition timeout in fw_fcp/snd_dice/snd_efw
 - improvements of 'unit_query' object
 - any programming mistakes (threading and so on...)

Regards

Takashi Sakamoto (13):
  libhinawa: add build definitions
  libhinawa: add hinawa context
  libhinawa: support GTK-Doc to generate references
  libhinawa: add 'fw_unit' object as a listener for FireWire unit
  libhinawa: support GObject Introspection for language bindings
  libhinawa: add 'fw_resp' object as a responder for FireWire
    transaction
  libhinawa: add 'fw_req' object as requester for FireWire transaction
  libhinawa: add 'fw_fcp' object as a helper of FCP transaction
  libhinawa: add 'snd_unit' object as a listener for ALSA FireWire
    devices
  libhinawa: add 'snd_dice' object as a helper for Dice notification
  libhinawa: add 'snd_efw' object as a helper for EFW transaction
  libhinawa: add 'unit_query' as a query for ALSA FireWire devices
  libhinawa: add sample scripts

 Makefile                                 |   2 +-
 libhinawa/AUTHORS                        |   1 +
 libhinawa/COPYING                        | 504 ++++++++++++++++++++++++++++
 libhinawa/ChangeLog                      |   5 +
 libhinawa/Makefile.am                    |   6 +
 libhinawa/NEWS                           |   0
 libhinawa/README                         |  30 ++
 libhinawa/autogen.sh                     |  11 +
 libhinawa/configure.ac                   |  68 ++++
 libhinawa/doc/Makefile.am                |   2 +
 libhinawa/doc/reference/Makefile.am      |  46 +++
 libhinawa/doc/reference/hinawa-docs.sgml |  47 +++
 libhinawa/doc/reference/version.xml.in   |   1 +
 libhinawa/samples/gtk3.py                | 190 +++++++++++
 libhinawa/samples/qt4.py                 | 206 ++++++++++++
 libhinawa/samples/qt5.py                 | 192 +++++++++++
 libhinawa/samples/run.sh                 |  15 +
 libhinawa/src/Makefile.am                |  97 ++++++
 libhinawa/src/backport.h                 |  41 +++
 libhinawa/src/fw_fcp.c                   | 282 ++++++++++++++++
 libhinawa/src/fw_fcp.h                   |  58 ++++
 libhinawa/src/fw_req.c                   | 265 +++++++++++++++
 libhinawa/src/fw_req.h                   |  56 ++++
 libhinawa/src/fw_resp.c                  | 232 +++++++++++++
 libhinawa/src/fw_resp.h                  |  51 +++
 libhinawa/src/fw_unit.c                  | 343 +++++++++++++++++++
 libhinawa/src/fw_unit.h                  |  52 +++
 libhinawa/src/hinawa_context.c           |  60 ++++
 libhinawa/src/hinawa_context.h           |  10 +
 libhinawa/src/internal.h                 |  31 ++
 libhinawa/src/snd_dice.c                 | 195 +++++++++++
 libhinawa/src/snd_dice.h                 |  53 +++
 libhinawa/src/snd_efw.c                  | 315 ++++++++++++++++++
 libhinawa/src/snd_efw.h                  |  54 +++
 libhinawa/src/snd_unit.c                 | 548 +++++++++++++++++++++++++++++++
 libhinawa/src/snd_unit.h                 |  69 ++++
 libhinawa/src/unit_query.c               | 116 +++++++
 libhinawa/src/unit_query.h               |  48 +++
 38 files changed, 4301 insertions(+), 1 deletion(-)
 create mode 100644 libhinawa/AUTHORS
 create mode 100644 libhinawa/COPYING
 create mode 100644 libhinawa/ChangeLog
 create mode 100644 libhinawa/Makefile.am
 create mode 100644 libhinawa/NEWS
 create mode 100644 libhinawa/README
 create mode 100755 libhinawa/autogen.sh
 create mode 100644 libhinawa/configure.ac
 create mode 100644 libhinawa/doc/Makefile.am
 create mode 100644 libhinawa/doc/reference/Makefile.am
 create mode 100644 libhinawa/doc/reference/hinawa-docs.sgml
 create mode 100644 libhinawa/doc/reference/version.xml.in
 create mode 100755 libhinawa/samples/gtk3.py
 create mode 100755 libhinawa/samples/qt4.py
 create mode 100755 libhinawa/samples/qt5.py
 create mode 100755 libhinawa/samples/run.sh
 create mode 100644 libhinawa/src/Makefile.am
 create mode 100644 libhinawa/src/backport.h
 create mode 100644 libhinawa/src/fw_fcp.c
 create mode 100644 libhinawa/src/fw_fcp.h
 create mode 100644 libhinawa/src/fw_req.c
 create mode 100644 libhinawa/src/fw_req.h
 create mode 100644 libhinawa/src/fw_resp.c
 create mode 100644 libhinawa/src/fw_resp.h
 create mode 100644 libhinawa/src/fw_unit.c
 create mode 100644 libhinawa/src/fw_unit.h
 create mode 100644 libhinawa/src/hinawa_context.c
 create mode 100644 libhinawa/src/hinawa_context.h
 create mode 100644 libhinawa/src/internal.h
 create mode 100644 libhinawa/src/snd_dice.c
 create mode 100644 libhinawa/src/snd_dice.h
 create mode 100644 libhinawa/src/snd_efw.c
 create mode 100644 libhinawa/src/snd_efw.h
 create mode 100644 libhinawa/src/snd_unit.c
 create mode 100644 libhinawa/src/snd_unit.h
 create mode 100644 libhinawa/src/unit_query.c
 create mode 100644 libhinawa/src/unit_query.h

-- 
2.1.0



More information about the Alsa-devel mailing list