[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