Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PATCH 00/70] ff: add service program for models in RME Fireface series #37

Merged
merged 70 commits into from
Mar 15, 2021

Conversation

takaswie
Copy link
Member

@takaswie takaswie commented Mar 8, 2021

RME GmbH shipped some models in its Fireface series 2004 to 2014. The models are categorized to former and latter generation by protocol specification, programmed for FPGA. The latter models supports channel strip effect and reverb/echo fx effect.

This patchset adds support for the former and latter models. As a result, below models are controllable via ALSA control interface.

  • Fireface 400
  • Fireface 800
  • Fireface UCX
  • Fireface 802
Takashi Sakamoto (70):
  ff-protocols: add crate for protocol implementation of RME Fireface series
  ff-protocols: add trait implementation for parser of configuration rom by unique protocol
  ff-protocols: add parser of configuration rom
  ff-protocols: former: add module for protocol specific to former models of Fireface series
  ff-protocols: former: add protocol structure for Fireface 800
  ff-protocols: former: add trait implementation for meter protocol of Fireface 800
  ff-protocols: former: add trait implementation for output protocol of Fireface 800
  ff-protocols: former: add trait implementation for mixer protocol of Fireface 800
  ff-protocols: former: add trait implementation for status protocol of Fireface 800
  ff-protocols: former: add trait implementation for configuration protocol of Fireface 800
  ff-runtime: add runtime crate for RME Fireface series
  services: add service program for models of RME Fireface series
  ff-runtime: launch I/O threads to dispatch event
  ff-runtime: open ALSA hwdep character device and Linux firewire character device
  ff-runtime: open ALSA control character device
  ff-runtime: add model module
  ff-runtime: add support for Fireface 800
  ff-runtime: add configuration controls for Fireface 800
  ff-runtime: add interval timer to measure control elements
  ff-runtime: add status control for 800
  ff-runtime: add output controls for Fireface 800
  ff-runtime: add mixer controls for Fireface 800
  ff-runtime: add meter controls for Fireface 800
  ff-protocols: former: add protocol structure for Fireface 400
  ff-protocols: former: add trait implementation of meter protocol for Fireface 400
  ff-protocols: former: add trait implementation for amplifier protocol of Fireface 400
  ff-protocols: former: add trait implementation for input amplifier protocol of Fireface 400
  ff-protocols: former: add trait implementation for output protocol of Fireface 400
  ff-protocols: former: add trait implementation for mixer protocol of Fireface 400
  ff-protocols: former: add trait implementation for status protocol of Fireface 400
  ff-protocols: former: add trait implementation for configuration protocol of Fireface 400
  ff-runtime: add support for Fireface 400
  ff-runtime: add meter controls for Fireface 400
  ff-runtime: add output controls for Fireface 400
  ff-runtime: add mixer control for Fireface 400
  ff-runtime: add input gain controls for Fireface 400
  ff-runtime: add configuration controls for Fireface 400
  ff-runtime: add status controls for Fireface 400
  ff-protocols: latter: add protocol structure for 802
  ff-protocols: latter: add trait implementation for configuration protocol of 802
  ff-protocols: latter: add trait implementation for status protocol of 802
  ff-protocols: latter: add trait implementation of meter protocol for 802
  ff-protocols: latter: add trait implementation of DSP protocol for 802
  ff-protocols: latter: add trait implementation for input protocol
  ff-protocols: latter: add trait implementation for output protocol
  ff-protocols: latter: add trait implementation for mixer protocol
  ff-protocols: latter: add trait for channel strip protocol
  ff-protocols; latter: add trait implementation for input channel strip protocol
  ff-protocols: latter: add trait implementation for output channel strip protocol
  ff-protocols: latter: add trait implementation for fx protocol
  ff-runtime: add support for 802
  ff-runtime: add configuration controls for 802
  ff-runtime: add status controls for 802
  ff-runtime: add meter controls for 802
  ff-runtime: add DSP controls for 802
  ff-runtime: add DSP input controls for 802
  ff-runtime: add DSP output controls for 802
  ff-runtime: add DSP mixer controls for 802
  ff-runtime: add DSP input and output channel strip controls for 802
  ff-runtime: add DSP fx controls for 802
  ff-protocols: latter: add protocol structure for UCX
  ff-protocols: latter: add trait implementation for configuration protocol of UCX
  ff-protocols: latter: add trait implementation of status protocol for UCX
  ff-protocols: latter: add trait implementation of meter protocol for UCX
  ff-protocols: latter: add trait implementation of DSP protocol for UCX
  ff-runtime: add support for Fireface UCX
  ff-runtime: add configuration controls for UCX
  ff-runtime: add status controls for UCX
  ff-runtime: add meter controls for UCX
  ff-runtime: add DSP controls for UCX

 Cargo.toml                                    |    2 +
 README.rst                                    |   11 +
 libs/ff/protocols/Cargo.toml                  |   18 +
 .../protocols/src/bin/ff-config-rom-parser.rs |  103 +
 libs/ff/protocols/src/former.rs               |  275 +++
 libs/ff/protocols/src/former/ff400.rs         |  914 +++++++
 libs/ff/protocols/src/former/ff800.rs         | 1290 ++++++++++
 libs/ff/protocols/src/latter.rs               | 1523 ++++++++++++
 libs/ff/protocols/src/latter/ff802.rs         |  423 ++++
 libs/ff/protocols/src/latter/ucx.rs           |  389 +++
 libs/ff/protocols/src/lib.rs                  |  122 +
 libs/ff/runtime/Cargo.toml                    |   20 +
 libs/ff/runtime/src/ff400_model.rs            |  729 ++++++
 libs/ff/runtime/src/ff800_model.rs            |  675 +++++
 libs/ff/runtime/src/ff802_model.rs            |  467 ++++
 libs/ff/runtime/src/former_ctls.rs            |  305 +++
 libs/ff/runtime/src/latter_ctls.rs            | 2166 +++++++++++++++++
 libs/ff/runtime/src/lib.rs                    |  202 ++
 libs/ff/runtime/src/model.rs                  |  164 ++
 libs/ff/runtime/src/ucx_model.rs              |  436 ++++
 services/Cargo.toml                           |    1 +
 services/src/bin/snd-fireface-ctl-service.rs  |   19 +
 22 files changed, 10254 insertions(+)
 create mode 100644 libs/ff/protocols/Cargo.toml
 create mode 100644 libs/ff/protocols/src/bin/ff-config-rom-parser.rs
 create mode 100644 libs/ff/protocols/src/former.rs
 create mode 100644 libs/ff/protocols/src/former/ff400.rs
 create mode 100644 libs/ff/protocols/src/former/ff800.rs
 create mode 100644 libs/ff/protocols/src/latter.rs
 create mode 100644 libs/ff/protocols/src/latter/ff802.rs
 create mode 100644 libs/ff/protocols/src/latter/ucx.rs
 create mode 100644 libs/ff/protocols/src/lib.rs
 create mode 100644 libs/ff/runtime/Cargo.toml
 create mode 100644 libs/ff/runtime/src/ff400_model.rs
 create mode 100644 libs/ff/runtime/src/ff800_model.rs
 create mode 100644 libs/ff/runtime/src/ff802_model.rs
 create mode 100644 libs/ff/runtime/src/former_ctls.rs
 create mode 100644 libs/ff/runtime/src/latter_ctls.rs
 create mode 100644 libs/ff/runtime/src/lib.rs
 create mode 100644 libs/ff/runtime/src/model.rs
 create mode 100644 libs/ff/runtime/src/ucx_model.rs
 create mode 100644 services/src/bin/snd-fireface-ctl-service.rs

…eries

This commit adds a crate named as 'ff-protocols' to describe protocol
for RME Fireface series.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…m by unique protocol

In RME Fireface series, the version field of unit directory in
configuration rom represents actual model ID.

This commit adds trait implementation to pick it up.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds sample program to parse information in configuration
rom of RME fireface series.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…ls of Fireface series

This commit adds module for protocol of latter models in RME Fireface
series. This is used for Fireface 800 and 400.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds protocol structure specific to Fireface 800.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…Fireface 800

In RME Fireface series, hardware metering is available by read block
transaction. The read data consists of some octlets and quadlets. The
octlet meter seems to be for the result to processing audio signal
in DSP and the quadlet meter seems to be for direct hardware inputs and
outputs.

This commit adds trait implementation for the meter protocol.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
… Fireface 800

In RME Fireface series, adjustment of volume for hardware output is
available.

This commit adds trait implementation for output protocol.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…Fireface 800

In RME Fireface series, mixer function is available to multiplex
hardware inputs and stream inputs into each of hardware output.

This commit adds trait implementation for mixer protocol.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
… Fireface 800

Fireface 800 allows software to retrieve information of hardware status.

This commit adds trait implementation for it.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…ocol of Fireface 800

Fireface 800 allows software to configure hardware features.

This commit adds trait implementation for the configuration protocol.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds a crate named as 'ff-runtime' for service program.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds service program for models of RME Fireface series.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds service program for models of RME Fireface series.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…cter device

This commit launches I/O threads to dispatch event relevant to models
of RME Fireface series.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit opends ALSA hwdep character device added by drivers in ALSA
fireface driver, as well as Linux firewire character device for node of the
target device.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
There are some models in RME Fireface series.

This commit adds model module to dispatch model-specific operation.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
RME GmbH shipped Fireface 800 as its first model of Fireface series
2004.

This commit adds support for the model.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds some controls for configuration of Fireface 800.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds interval time to measure hardware for status and
meters.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds status control for Fireface 800.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds output controls for Fireface 800.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds mixer controls for Fireface 800.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds meter controls for Fireface 800.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds protocol structure specific to Fireface 400.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…Fireface 400

This commit adds trait implementation for the meter protocol of Fireface
400.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
… of Fireface 400

Fireface 400 allows software to adjust gain of hardware inputs and
volume of hardware outputs.

This commit adds trait implementation for amplifier protocol of Fireface
400.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…otocol of Fireface 400

This commit adds trait implementation of input amplifier protocol of
Fireface 400.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
… Fireface 400

This commit adds trait implementation for output protocol of Fireface
400.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…Fireface 400

This commit adds trait implementation for mixer protocol of Fireface
400.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
… Fireface 400

Fireface 400 allows software to retrieve information of hardware status.

This commit adds trait implementation for it.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds trait implementation for DSP channel strip protocol.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…p protocol

This commit adds trait implementation for DSP input channel strip protocol.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…ip protocol

This commit adds trait implementation for DSP output channel strip protocol.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds trait implementation for DSP fx protocol.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
RME GmbH shipped Fireface 802 as last model of its Fireface series to
IEEE 1394 bus 2014.

This commit adds support for the model.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds configuration controls for Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds status controls for Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds meter controls for Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds support for DSP controls for Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds DSP input controls for Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds DSP output controls for Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds DSP mixer controls for Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds DSP input and output channel strip controls for
Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds DSP fx controls for Fireface 802.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds structure protocol for Fireface UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
…ocol of UCX

This commit adds trait implementation for configuration protocol of
Fireface UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
… UCX

This commit adds trait implementation for status protocol of Fireface
UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds trait implementation for meter protocol of Fireface
UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds DSP controls for Fireface UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
RME GmbH shipped Fireface UCX 2012.

This commit adds support for Fireface UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds configuration controls for Fireface UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds status controls for Fireface UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds meter controls for Fireface UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit adds DSP controls for Fireface UCX.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
@takaswie takaswie added the enhancement New feature or request label Mar 8, 2021
@takaswie takaswie requested a review from a team March 8, 2021 07:16
@takaswie takaswie self-assigned this Mar 8, 2021
@takaswie takaswie merged commit ee7d281 into master Mar 15, 2021
@takaswie takaswie deleted the topic/fireface branch March 15, 2021 06:38
@takaswie
Copy link
Member Author

Merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant