aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2021-11-17 17:45:20 +0900
committer坂本 貴史 <o-takashi@sakamocchi.jp>2021-11-17 17:46:15 +0900
commitabb0fe2a194534a7a4a84f42c3bd1c895c337358 (patch)
tree5af7c739ec28ae4aef566fb0239c92374535206a
parent6865cfd30ef785038e44985669fdc81fde56ee0f (diff)
downloadhinawa-rs-abb0fe2a194534a7a4a84f42c3bd1c895c337358.tar.gz
optimization for libhinawa v2.4.0v0.5.0
The libhinawa version 2.4.0 is out: * https://github.com/alsa-project/libhinawa/releases/tag/2.4.0 This commit adds optimization to use functions in the release. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
-rw-r--r--Hinawa-3.0.gir793
-rw-r--r--README.rst6
-rw-r--r--conf/gir-hinawa-sys.toml2
-rw-r--r--conf/gir-hinawa.toml62
-rw-r--r--hinawa-sys/Cargo.toml6
-rw-r--r--hinawa-sys/src/lib.rs38
-rw-r--r--hinawa-sys/tests/abi.rs1
-rw-r--r--hinawa/Cargo.toml4
-rw-r--r--hinawa/src/auto/mod.rs3
-rw-r--r--hinawa/src/auto/snd_motu_register_dsp_parameter.rs78
-rw-r--r--hinawa/src/lib.rs6
-rw-r--r--hinawa/src/snd_motu.rs109
-rw-r--r--hinawa/src/snd_motu_register_dsp_parameter.rs109
13 files changed, 1173 insertions, 44 deletions
diff --git a/Hinawa-3.0.gir b/Hinawa-3.0.gir
index ea1a7cf..1c563b3 100644
--- a/Hinawa-3.0.gir
+++ b/Hinawa-3.0.gir
@@ -2188,7 +2188,7 @@ specification.</doc>
<function-macro name="IS_SND_MOTU"
c:identifier="HINAWA_IS_SND_MOTU"
introspectable="0">
- <source-position filename="../src/snd_motu.h" line="18"/>
+ <source-position filename="../src/snd_motu.h" line="19"/>
<parameters>
<parameter name="obj">
</parameter>
@@ -2197,7 +2197,7 @@ specification.</doc>
<function-macro name="IS_SND_MOTU_CLASS"
c:identifier="HINAWA_IS_SND_MOTU_CLASS"
introspectable="0">
- <source-position filename="../src/snd_motu.h" line="26"/>
+ <source-position filename="../src/snd_motu.h" line="27"/>
<parameters>
<parameter name="klass">
</parameter>
@@ -2323,7 +2323,7 @@ specification.</doc>
<function-macro name="SND_MOTU"
c:identifier="HINAWA_SND_MOTU"
introspectable="0">
- <source-position filename="../src/snd_motu.h" line="14"/>
+ <source-position filename="../src/snd_motu.h" line="15"/>
<parameters>
<parameter name="obj">
</parameter>
@@ -2332,7 +2332,7 @@ specification.</doc>
<function-macro name="SND_MOTU_CLASS"
c:identifier="HINAWA_SND_MOTU_CLASS"
introspectable="0">
- <source-position filename="../src/snd_motu.h" line="22"/>
+ <source-position filename="../src/snd_motu.h" line="23"/>
<parameters>
<parameter name="klass">
</parameter>
@@ -2341,7 +2341,7 @@ specification.</doc>
<function-macro name="SND_MOTU_GET_CLASS"
c:identifier="HINAWA_SND_MOTU_GET_CLASS"
introspectable="0">
- <source-position filename="../src/snd_motu.h" line="29"/>
+ <source-position filename="../src/snd_motu.h" line="30"/>
<parameters>
<parameter name="obj">
</parameter>
@@ -3348,27 +3348,27 @@ of the response.</doc>
glib:type-name="HinawaSndMotu"
glib:get-type="hinawa_snd_motu_get_type"
glib:type-struct="SndMotuClass">
- <source-position filename="../src/snd_motu.h" line="58"/>
+ <source-position filename="../src/snd_motu.h" line="77"/>
<constructor name="new"
c:identifier="hinawa_snd_motu_new"
version="1.3.">
<doc xml:space="preserve"
filename="../src/snd_motu.c"
- line="56">Instantiate #HinawaSndMotu object and return the instance.</doc>
- <source-position filename="../src/snd_motu.h" line="62"/>
+ line="84">Instantiate #HinawaSndMotu object and return the instance.</doc>
+ <source-position filename="../src/snd_motu.h" line="81"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve"
filename="../src/snd_motu.c"
- line="61">an instance of #HinawaSndMotu.</doc>
+ line="89">an instance of #HinawaSndMotu.</doc>
<type name="SndMotu" c:type="HinawaSndMotu*"/>
</return-value>
</constructor>
<virtual-method name="notified" version="1.2">
<doc xml:space="preserve"
filename="../src/snd_motu.h"
- line="47">When Motu models transfer notification, the #HinawaSndMotuClass::notified handler is
+ line="48">When Motu models transfer notification, the #HinawaSndMotuClass::notified handler is
called.</doc>
- <source-position filename="../src/snd_motu.h" line="57"/>
+ <source-position filename="../src/snd_motu.h" line="58"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
@@ -3376,13 +3376,50 @@ called.</doc>
<instance-parameter name="self" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_motu.h"
- line="49">A #HinawaSndMotu</doc>
+ line="50">A #HinawaSndMotu</doc>
<type name="SndMotu" c:type="HinawaSndMotu*"/>
</instance-parameter>
<parameter name="message" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_motu.h"
- line="50">A notification message</doc>
+ line="51">A notification message</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="register_dsp_changed" version="2.4">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.h"
+ line="60">When MOTU register DSP models transfer events by messages in the sequence of isochronous
+packet, the #HinawaSndMotuClass::register_dsp_changed handle is called.
+The event consists of encoded data. The most significant byte is the type of message. The
+next two bytes are identifier 0 and 1. The least significant byte is value. The meaning
+of identifier 0, 1 and value is decided depending on the type. For detail, see
+`sound/firewire/motu/motu-register-dsp-message-parser.c` in Linux kernel.</doc>
+ <source-position filename="../src/snd_motu.h" line="76"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.h"
+ line="62">A #HinawaSndMotu</doc>
+ <type name="SndMotu" c:type="HinawaSndMotu*"/>
+ </instance-parameter>
+ <parameter name="events" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.h"
+ line="63">The array with element for
+ unsigned 32 bit encoded data.</doc>
+ <array length="1" zero-terminated="0" c:type="const guint32*">
+ <type name="guint32"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.h"
+ line="65">The length of events.</doc>
<type name="guint" c:type="guint"/>
</parameter>
</parameters>
@@ -3393,8 +3430,8 @@ called.</doc>
throws="1">
<doc xml:space="preserve"
filename="../src/snd_motu.c"
- line="69">Open ALSA hwdep character device and check it for Motu devices.</doc>
- <source-position filename="../src/snd_motu.h" line="64"/>
+ line="97">Open ALSA hwdep character device and check it for Motu devices.</doc>
+ <source-position filename="../src/snd_motu.h" line="83"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
@@ -3402,17 +3439,112 @@ called.</doc>
<instance-parameter name="self" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_motu.c"
- line="71">A #HinawaSndUnit</doc>
+ line="99">A #HinawaSndUnit</doc>
<type name="SndMotu" c:type="HinawaSndMotu*"/>
</instance-parameter>
<parameter name="path" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_motu.c"
- line="72">A full path of a special file for ALSA hwdep character device</doc>
+ line="100">A full path of a special file for ALSA hwdep character device</doc>
<type name="utf8" c:type="gchar*"/>
</parameter>
</parameters>
</method>
+ <method name="read_command_dsp_meter"
+ c:identifier="hinawa_snd_motu_read_command_dsp_meter"
+ version="2.4"
+ throws="1">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="172">Read data of meter information for command DSP models.</doc>
+ <source-position filename="../src/snd_motu.h" line="92"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="174">A #HinawaSndMotu</doc>
+ <type name="SndMotu" c:type="HinawaSndMotu*"/>
+ </instance-parameter>
+ <parameter name="meter"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="175">The data for meter.</doc>
+ <array zero-terminated="0"
+ c:type="gfloat* const*"
+ fixed-size="400">
+ <type name="gfloat" c:type="gfloat"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="read_register_dsp_meter"
+ c:identifier="hinawa_snd_motu_read_register_dsp_meter"
+ version="2.4"
+ throws="1">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="145">Read data of meter information for register DSP models.</doc>
+ <source-position filename="../src/snd_motu.h" line="89"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="147">A #HinawaSndMotu</doc>
+ <type name="SndMotu" c:type="HinawaSndMotu*"/>
+ </instance-parameter>
+ <parameter name="meter"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="148">The data of meter. Index 0 to 23 for inputs and index 24
+ to 47 for outputs.</doc>
+ <array zero-terminated="0" c:type="guint8* const*" fixed-size="48">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="read_register_dsp_parameter"
+ c:identifier="hinawa_snd_motu_read_register_dsp_parameter"
+ version="2.4"
+ throws="1">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="117">Read parameter for register DSP models.</doc>
+ <source-position filename="../src/snd_motu.h" line="85"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="119">A #HinawaSndMotu.</doc>
+ <type name="SndMotu" c:type="HinawaSndMotu*"/>
+ </instance-parameter>
+ <parameter name="param"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="120">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="HinawaSndMotuRegisterDspParameter* const*"/>
+ </parameter>
+ </parameters>
+ </method>
<field name="parent_instance">
<type name="SndUnit" c:type="HinawaSndUnit"/>
</field>
@@ -3422,7 +3554,7 @@ called.</doc>
<glib:signal name="notified" when="last" version="0.8">
<doc xml:space="preserve"
filename="../src/snd_motu.c"
- line="31">When Motu models transfer notification, the #HinawaSndMotu::notified signal is
+ line="33">When Motu models transfer notification, the #HinawaSndMotu::notified signal is
generated.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
@@ -3431,7 +3563,37 @@ generated.</doc>
<parameter name="message" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_motu.c"
- line="34">A notification message</doc>
+ line="36">A notification message</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="register-dsp-changed" when="last" version="2.4">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="52">When MOTU register DSP models transfer events by messages in the sequence of isochronous
+packet, the #HinawaSndMotu::register-dsp-changed signal is emit.
+The event consists of encoded data. The most significant byte is the type of message. The
+next two bytes are identifier 0 and 1. The least significant byte is value. The meaning
+of identifier 0, 1 and value is decided depending on the type. For detail, see
+`sound/firewire/motu/motu-register-dsp-message-parser.c` in Linux kernel.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="events" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="55">The array with element for
+ unsigned 32 bit encoded data.</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint32"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.c"
+ line="57">The length of events.</doc>
<type name="guint" c:type="guint"/>
</parameter>
</parameters>
@@ -3440,13 +3602,13 @@ generated.</doc>
<record name="SndMotuClass"
c:type="HinawaSndMotuClass"
glib:is-gtype-struct-for="SndMotu">
- <source-position filename="../src/snd_motu.h" line="58"/>
+ <source-position filename="../src/snd_motu.h" line="77"/>
<field name="parent_class">
<type name="SndUnitClass" c:type="HinawaSndUnitClass"/>
</field>
<field name="notified">
<callback name="notified">
- <source-position filename="../src/snd_motu.h" line="57"/>
+ <source-position filename="../src/snd_motu.h" line="58"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
@@ -3454,13 +3616,44 @@ generated.</doc>
<parameter name="self" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_motu.h"
- line="49">A #HinawaSndMotu</doc>
+ line="50">A #HinawaSndMotu</doc>
<type name="SndMotu" c:type="HinawaSndMotu*"/>
</parameter>
<parameter name="message" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_motu.h"
- line="50">A notification message</doc>
+ line="51">A notification message</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="register_dsp_changed">
+ <callback name="register_dsp_changed">
+ <source-position filename="../src/snd_motu.h" line="76"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.h"
+ line="62">A #HinawaSndMotu</doc>
+ <type name="SndMotu" c:type="HinawaSndMotu*"/>
+ </parameter>
+ <parameter name="events" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.h"
+ line="63">The array with element for
+ unsigned 32 bit encoded data.</doc>
+ <array length="2" zero-terminated="0" c:type="const guint32*">
+ <type name="guint32"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu.h"
+ line="65">The length of events.</doc>
<type name="guint" c:type="guint"/>
</parameter>
</parameters>
@@ -3468,7 +3661,531 @@ generated.</doc>
</field>
</record>
<record name="SndMotuPrivate" c:type="HinawaSndMotuPrivate" disguised="1">
- <source-position filename="../src/snd_motu.h" line="36"/>
+ <source-position filename="../src/snd_motu.h" line="37"/>
+ </record>
+ <record name="SndMotuRegisterDspParameter"
+ c:type="HinawaSndMotuRegisterDspParameter"
+ glib:type-name="HinawaSndMotuRegisterDspParameter"
+ glib:get-type="hinawa_snd_motu_register_dsp_parameter_get_type"
+ c:symbol-prefix="snd_motu_register_dsp_parameter">
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="19"/>
+ <field name="parameter" readable="0" private="1">
+ <array zero-terminated="0" fixed-size="512">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </field>
+ <constructor name="new"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_new"
+ version="2.4">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="28">Instantiate #HinawaSndMotuRegisterDspParameter object and return the instance.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="23"/>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="33">an instance of #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="HinawaSndMotuRegisterDspParameter*"/>
+ </return-value>
+ </constructor>
+ <method name="get_headphone_output_paired_assignment"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_headphone_output_paired_assignment">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="244">Get the array with elements for the data of paired headphone output source. The data has index
+value of source.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="52"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="246">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="assignment"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="247">The value of paired headphone assignment.</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_headphone_output_paired_volume"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_headphone_output_paired_volume">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="224">Get the array with elements for the data of paired headphone output volume. The data has volume
+value between 0x00 and 0x80.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="49"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="226">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="volume"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="227">The value of paired headphone output.</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_input_flag"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_input_flag">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="333">Get the array with elements for the data of input flags. The data consists of bit flags below:
+
+- 0x01: whether to make paired input
+- 0x02: whether to enable phantom powering
+- 0x04: whether to enable attenuation pad
+- 0x08: whether to detect plug insert to jack</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="64"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="335">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="flag"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="336">The array with elements for the data of input
+ flags.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="10">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_input_gain_and_invert"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_input_gain_and_invert">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="305">Get the array with elements for input gain and invert flags. The interpretation of data is
+different in below two groups:
+
+- Ultralite
+ - 0x1f: the gain.
+ - 0x20: whether to invert phase of the input
+- Audio Express and 4 pre
+ - 0x3f: the gain
+ - 0x40: whether to invert phase of the input</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="61"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="307">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="gain_and_invert"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="308">The array with elements for the data
+ of input gain and invert flags.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="10">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_line_input_boost_flag"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_line_input_boost_flag">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="264">Get the data for flags of line input boost. The data consists of bit flags for corresponding line
+input channel. When the flag stands, the input is boosted.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="55"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="266">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="boost_flag"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="267">The flag of boost for line input.</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_line_input_nominal_level_flag"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_line_input_nominal_level_flag">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="284">Get the data for flags of line input nominal level. The data consists of bit flags for
+corresponding line input channel. When the flag stands, the nominal level of input is +4 dBu,
+else -10 dBV.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="58"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="286">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="nominal_level_flag"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="287">The flag of boost for line input.</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_main_output_paired_volume"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_main_output_paired_volume">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="204">Get the array with elements for the data of paired main output volume. The data has volume value
+between 0x00 and 0x80.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="46"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="206">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="volume"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="207">The value of paired main output.</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_mixer_output_paired_flag"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_mixer_output_paired_flag">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="180">Get the array with elements for the data of paired output flags in indicated mixer. The data
+consists of bit flags and masks below:
+
+ - 0x0f: the mask for destination of paired output
+ - 0x10: whether to enable mute for paired output</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="43"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="182">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="flag"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="183">The array with elements for the data of paired
+ output flag.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="4">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_mixer_output_paired_volume"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_mixer_output_paired_volume">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="159">Get the array with elements for the data of paired output volume in indicated mixer. The data
+has gain value between 0x00 and 0x80.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="40"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="161">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="volume"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="162">The array with elements for the data of
+ paired output volume.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="4">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_mixer_source_flag"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_mixer_source_flag">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="87">Get the array with elements for the data of source flags in indicated mixer. The data consists of
+bit flags below:
+
+ - 0x01: whether to enable mute function for the source.
+ - 0x02: whether to enable solo function for the source.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="31"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="89">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="mixer" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="90">the numeric index of mixer, up to 4.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="flag"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="91">The array with elements for the data of source
+ flag.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="20">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_mixer_source_gain"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_mixer_source_gain">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="41">Get the array with elements for the data of source gains in indicated mixer. The data has gain
+value between 0x00 and 0x80.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="25"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="43">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="mixer" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="44">the numeric index of mixer, up to 4.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="gain"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="45">The array with elements for the data of source
+ gains.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="20">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_mixer_source_paired_balance"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_mixer_source_paired_balance">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="113">Get the array with elements for the data of paired source L/R balance in indicated mixer. The
+data has L/R balance value between 0x00 and 0x80.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="34"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="115">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="mixer" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="116">the numeric index of mixer, up to 4.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="balance"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="117">The array with elements for the data of
+ paired source L/R balance.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="20">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_mixer_source_paired_width"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_mixer_source_paired_width">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="136">Get the array with elements for the data of paired source width in indicated mixer. The data
+has width value between 0x00 and 0x80.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="37"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="138">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="mixer" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="139">the numeric index of mixer, up to 4.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="width"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="140">The array with elements for the data of
+ paired source width.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="20">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_mixer_source_pan"
+ c:identifier="hinawa_snd_motu_register_dsp_parameter_get_mixer_source_pan">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="64">Get the array with elements for the data of source pans in indicated mixer. The data has pan
+value between 0x00 and 0x80.</doc>
+ <source-position filename="../src/snd_motu_register_dsp_parameter.h"
+ line="28"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="66">A #HinawaSndMotuRegisterDspParameter.</doc>
+ <type name="SndMotuRegisterDspParameter"
+ c:type="const HinawaSndMotuRegisterDspParameter*"/>
+ </instance-parameter>
+ <parameter name="mixer" transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="67">the numeric index of mixer, up to 4.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="pan"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="68">The array with elements for the data of source
+ pan.</doc>
+ <array zero-terminated="0" c:type="const guint8**" fixed-size="20">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
</record>
<class name="SndTscm"
c:symbol-prefix="snd_tscm"
@@ -3732,7 +4449,7 @@ handler is called.</doc>
throws="1">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="603">Create Gsource for GMainContext to dispatch events for the sound device.</doc>
+ line="595">Create Gsource for GMainContext to dispatch events for the sound device.</doc>
<source-position filename="../src/snd_unit.h" line="88"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
@@ -3741,7 +4458,7 @@ handler is called.</doc>
<instance-parameter name="self" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="605">A #HinawaSndUnit.</doc>
+ line="597">A #HinawaSndUnit.</doc>
<type name="SndUnit" c:type="HinawaSndUnit*"/>
</instance-parameter>
<parameter name="gsrc"
@@ -3750,7 +4467,7 @@ handler is called.</doc>
transfer-ownership="full">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="606">A #GSource.</doc>
+ line="598">A #GSource.</doc>
<type name="GLib.Source" c:type="GSource**"/>
</parameter>
</parameters>
@@ -3760,7 +4477,7 @@ handler is called.</doc>
version="2.0.">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="355">Retrieve an instance of #HinawaFwNode associated to the given unit.</doc>
+ line="345">Retrieve an instance of #HinawaFwNode associated to the given unit.</doc>
<source-position filename="../src/snd_unit.h" line="83"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
@@ -3769,7 +4486,7 @@ handler is called.</doc>
<instance-parameter name="self" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="357">A #HinawaSndUnit.</doc>
+ line="347">A #HinawaSndUnit.</doc>
<type name="SndUnit" c:type="HinawaSndUnit*"/>
</instance-parameter>
<parameter name="node"
@@ -3778,7 +4495,7 @@ handler is called.</doc>
transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="358">A #HinawaFwNode.</doc>
+ line="348">A #HinawaFwNode.</doc>
<type name="FwNode" c:type="HinawaFwNode**"/>
</parameter>
</parameters>
@@ -3789,7 +4506,7 @@ handler is called.</doc>
throws="1">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="376">Disallow ALSA to start kernel-streaming.</doc>
+ line="366">Disallow ALSA to start kernel-streaming.</doc>
<source-position filename="../src/snd_unit.h" line="85"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
@@ -3798,7 +4515,7 @@ handler is called.</doc>
<instance-parameter name="self" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="378">A #HinawaSndUnit</doc>
+ line="368">A #HinawaSndUnit</doc>
<type name="SndUnit" c:type="HinawaSndUnit*"/>
</instance-parameter>
</parameters>
@@ -3835,7 +4552,7 @@ handler is called.</doc>
throws="1">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="408">Allow ALSA to start kernel-streaming.</doc>
+ line="398">Allow ALSA to start kernel-streaming.</doc>
<source-position filename="../src/snd_unit.h" line="86"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
@@ -3844,7 +4561,7 @@ handler is called.</doc>
<instance-parameter name="self" transfer-ownership="none">
<doc xml:space="preserve"
filename="../src/snd_unit.c"
- line="410">A #HinawaSndUnit</doc>
+ line="400">A #HinawaSndUnit</doc>
<type name="SndUnit" c:type="HinawaSndUnit*"/>
</instance-parameter>
</parameters>
@@ -4421,9 +5138,15 @@ This inherits #HinawaSndUnit.</doc>
<docsection name="snd_motu">
<doc xml:space="preserve"
filename="../src/snd_motu.c"
- line="7">A #HinawaSndMotu is an application of asynchronous notification defined by
+ line="8">A #HinawaSndMotu is an application of asynchronous notification defined by
Mark of the Unicorn (MOTU). This inherits #HinawaSndUnit.</doc>
</docsection>
+ <docsection name="snd_motu_register_dsp_parameter">
+ <doc xml:space="preserve"
+ filename="../src/snd_motu_register_dsp_parameter.c"
+ line="4">A #HinawaSndMotuRegisterDspParameter is a boxed object for container of parameter in register
+DSP model.</doc>
+ </docsection>
<docsection name="snd_tscm">
<doc xml:space="preserve"
filename="../src/snd_tscm.c"
diff --git a/README.rst b/README.rst
index a3a1749..2f9d544 100644
--- a/README.rst
+++ b/README.rst
@@ -2,15 +2,15 @@
hinawa Rust bindings
====================
-2020/08/24
+2021/11/17
Takashi Sakamoto
Introduction
============
-* This repository includes FFI and API bindings for ``libhinawa 2`` which produces ``Hinawa-3.0.gir``.
+* This repository includes FFI and API bindings for ``libhinawa 2`` which provides ``Hinawa-3.0.gir``.
- * https://github.com/takaswie/libhinawa
+ * https://github.com/alsa-project/libhinawa
* Unfortunately, it includes no support for ``libhinawa 1`` or former (``Hinawa-2.0.gir`` or ``Hinawa-1.0.gir``).
diff --git a/conf/gir-hinawa-sys.toml b/conf/gir-hinawa-sys.toml
index 4114223..8364af6 100644
--- a/conf/gir-hinawa-sys.toml
+++ b/conf/gir-hinawa-sys.toml
@@ -2,7 +2,7 @@
work_mode = "sys"
library = "Hinawa"
version = "3.0"
-min_cfg_version = "2.3"
+min_cfg_version = "2.4"
single_version_file = "."
external_libraries = [
"GLib",
diff --git a/conf/gir-hinawa.toml b/conf/gir-hinawa.toml
index 54ffed7..1bfbe75 100644
--- a/conf/gir-hinawa.toml
+++ b/conf/gir-hinawa.toml
@@ -16,7 +16,6 @@ generate = [
"Hinawa.SndDiceError",
"Hinawa.SndEfwStatus",
"Hinawa.SndDice",
- "Hinawa.SndMotu",
"Hinawa.SndDg00x",
]
@@ -125,3 +124,64 @@ manual_traits = ["SndTscmExtManual"]
pattern = "get_state"
ignore = true
doc_trait_name = "SndTscmExtManual"
+
+[[object]]
+name = "Hinawa.SndMotu"
+status = "generate"
+manual_traits = ["SndMotuExtManual"]
+ [[object.signal]]
+ pattern = "register-dsp-changed"
+ ignore = true
+ [[object.function]]
+ pattern = "read_register_dsp_parameter"
+ ignore = true
+ doc_trait_name = "SndMotuExtManual"
+ [[object.function]]
+ pattern = "read_register_dsp_meter"
+ ignore = true
+ doc_trait_name = "SndMotuExtManual"
+ [[object.function]]
+ pattern = "read_command_dsp_meter"
+ ignore = true
+ doc_trait_name = "SndMotuExtManual"
+
+[[object]]
+name = "Hinawa.SndMotuRegisterDspParameter"
+status = "generate"
+manual_traits = ["SndMotuRegisterDspParameterExtManual"]
+ [[object.function]]
+ pattern = "get_input_flag"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
+ [[object.function]]
+ pattern = "get_input_gain_and_invert"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
+ [[object.function]]
+ pattern = "get_mixer_output_paired_flag"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
+ [[object.function]]
+ pattern = "get_mixer_output_paired_volume"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
+ [[object.function]]
+ pattern = "get_mixer_source_flag"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
+ [[object.function]]
+ pattern = "get_mixer_source_gain"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
+ [[object.function]]
+ pattern = "get_mixer_source_paired_balance"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
+ [[object.function]]
+ pattern = "get_mixer_source_paired_width"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
+ [[object.function]]
+ pattern = "get_mixer_source_pan"
+ ignore = true
+ doc_trait_name = "SndMotuRegisterDspParameterExtManual"
diff --git a/hinawa-sys/Cargo.toml b/hinawa-sys/Cargo.toml
index edb51de..9f30cf6 100644
--- a/hinawa-sys/Cargo.toml
+++ b/hinawa-sys/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "hinawa-sys"
-version = "0.4.0"
+version = "0.5.0"
description = "FFI bindings for libhinawa2 library"
authors = ["Takashi Sakamoto <o-takashi@sakamocchi.jp>"]
links = "hinawa"
@@ -11,12 +11,13 @@ repository = "https://github.com/alsa-project/hinawa-rs/"
features = ["dox"]
[package.metadata.system-deps.hinawa]
name = "hinawa"
-version = "2.3"
+version = "2.4"
[package.metadata.system-deps.hinawa.feature-versions]
v2_1 = "2.1"
v2_2 = "2.2"
v2_3 = "2.3"
+v2_4 = "2.4"
[lib]
name = "hinawa_sys"
@@ -39,3 +40,4 @@ dox = []
v2_1 = []
v2_2 = []
v2_3 = []
+v2_4 = []
diff --git a/hinawa-sys/src/lib.rs b/hinawa-sys/src/lib.rs
index 302dd19..04a2a9f 100644
--- a/hinawa-sys/src/lib.rs
+++ b/hinawa-sys/src/lib.rs
@@ -260,6 +260,7 @@ pub type HinawaSndEfwPrivate = *mut _HinawaSndEfwPrivate;
pub struct HinawaSndMotuClass {
pub parent_class: HinawaSndUnitClass,
pub notified: Option<unsafe extern "C" fn(*mut HinawaSndMotu, c_uint)>,
+ pub register_dsp_changed: Option<unsafe extern "C" fn(*mut HinawaSndMotu, *const u32, c_uint)>,
}
impl ::std::fmt::Debug for HinawaSndMotuClass {
@@ -267,6 +268,7 @@ impl ::std::fmt::Debug for HinawaSndMotuClass {
f.debug_struct(&format!("HinawaSndMotuClass @ {:?}", self as *const _))
.field("parent_class", &self.parent_class)
.field("notified", &self.notified)
+ .field("register_dsp_changed", &self.register_dsp_changed)
.finish()
}
}
@@ -278,6 +280,19 @@ pub type HinawaSndMotuPrivate = *mut _HinawaSndMotuPrivate;
#[repr(C)]
#[derive(Copy, Clone)]
+pub struct HinawaSndMotuRegisterDspParameter {
+ pub parameter: [u8; 512],
+}
+
+impl ::std::fmt::Debug for HinawaSndMotuRegisterDspParameter {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("HinawaSndMotuRegisterDspParameter @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
pub struct HinawaSndTscmClass {
pub parent_class: HinawaSndUnitClass,
pub control: Option<unsafe extern "C" fn(*mut HinawaSndTscm, c_uint, c_uint, c_uint)>,
@@ -532,6 +547,26 @@ extern "C" {
pub fn hinawa_snd_unit_type_get_type() -> GType;
//=========================================================================
+ // HinawaSndMotuRegisterDspParameter
+ //=========================================================================
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_type() -> GType;
+ pub fn hinawa_snd_motu_register_dsp_parameter_new() -> *mut HinawaSndMotuRegisterDspParameter;
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_headphone_output_paired_assignment(self_: *const HinawaSndMotuRegisterDspParameter, assignment: *mut u8);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_headphone_output_paired_volume(self_: *const HinawaSndMotuRegisterDspParameter, volume: *mut u8);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_input_flag(self_: *const HinawaSndMotuRegisterDspParameter, flag: *mut *const [u8; 10]);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_input_gain_and_invert(self_: *const HinawaSndMotuRegisterDspParameter, gain_and_invert: *mut *const [u8; 10]);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_line_input_boost_flag(self_: *const HinawaSndMotuRegisterDspParameter, boost_flag: *mut u8);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_line_input_nominal_level_flag(self_: *const HinawaSndMotuRegisterDspParameter, nominal_level_flag: *mut u8);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_main_output_paired_volume(self_: *const HinawaSndMotuRegisterDspParameter, volume: *mut u8);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_mixer_output_paired_flag(self_: *const HinawaSndMotuRegisterDspParameter, flag: *mut *const [u8; 4]);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_mixer_output_paired_volume(self_: *const HinawaSndMotuRegisterDspParameter, volume: *mut *const [u8; 4]);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_mixer_source_flag(self_: *const HinawaSndMotuRegisterDspParameter, mixer: size_t, flag: *mut *const [u8; 20]);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_mixer_source_gain(self_: *const HinawaSndMotuRegisterDspParameter, mixer: size_t, gain: *mut *const [u8; 20]);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_mixer_source_paired_balance(self_: *const HinawaSndMotuRegisterDspParameter, mixer: size_t, balance: *mut *const [u8; 20]);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_mixer_source_paired_width(self_: *const HinawaSndMotuRegisterDspParameter, mixer: size_t, width: *mut *const [u8; 20]);
+ pub fn hinawa_snd_motu_register_dsp_parameter_get_mixer_source_pan(self_: *const HinawaSndMotuRegisterDspParameter, mixer: size_t, pan: *mut *const [u8; 20]);
+
+ //=========================================================================
// HinawaFwFcp
//=========================================================================
pub fn hinawa_fw_fcp_get_type() -> GType;
@@ -604,6 +639,9 @@ extern "C" {
pub fn hinawa_snd_motu_get_type() -> GType;
pub fn hinawa_snd_motu_new() -> *mut HinawaSndMotu;
pub fn hinawa_snd_motu_open(self_: *mut HinawaSndMotu, path: *mut c_char, error: *mut *mut glib::GError);
+ pub fn hinawa_snd_motu_read_command_dsp_meter(self_: *mut HinawaSndMotu, meter: *const *mut [c_float; 400], error: *mut *mut glib::GError);
+ pub fn hinawa_snd_motu_read_register_dsp_meter(self_: *mut HinawaSndMotu, meter: *const *mut [u8; 48], error: *mut *mut glib::GError);
+ pub fn hinawa_snd_motu_read_register_dsp_parameter(self_: *mut HinawaSndMotu, param: *const *mut HinawaSndMotuRegisterDspParameter, error: *mut *mut glib::GError);
//=========================================================================
// HinawaSndTscm
diff --git a/hinawa-sys/tests/abi.rs b/hinawa-sys/tests/abi.rs
index 0b225e4..bfaf29a 100644
--- a/hinawa-sys/tests/abi.rs
+++ b/hinawa-sys/tests/abi.rs
@@ -262,6 +262,7 @@ const RUST_LAYOUTS: &[(&str, Layout)] = &[
("HinawaSndEfwStatus", Layout {size: size_of::<HinawaSndEfwStatus>(), alignment: align_of::<HinawaSndEfwStatus>()}),
("HinawaSndMotu", Layout {size: size_of::<HinawaSndMotu>(), alignment: align_of::<HinawaSndMotu>()}),
("HinawaSndMotuClass", Layout {size: size_of::<HinawaSndMotuClass>(), alignment: align_of::<HinawaSndMotuClass>()}),
+ ("HinawaSndMotuRegisterDspParameter", Layout {size: size_of::<HinawaSndMotuRegisterDspParameter>(), alignment: align_of::<HinawaSndMotuRegisterDspParameter>()}),
("HinawaSndTscm", Layout {size: size_of::<HinawaSndTscm>(), alignment: align_of::<HinawaSndTscm>()}),
("HinawaSndTscmClass", Layout {size: size_of::<HinawaSndTscmClass>(), alignment: align_of::<HinawaSndTscmClass>()}),
("HinawaSndUnit", Layout {size: size_of::<HinawaSndUnit>(), alignment: align_of::<HinawaSndUnit>()}),
diff --git a/hinawa/Cargo.toml b/hinawa/Cargo.toml
index 0a0e557..4811a68 100644
--- a/hinawa/Cargo.toml
+++ b/hinawa/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "hinawa"
-version = "0.4.0"
+version = "0.5.0"
description = "API bindings for libhinawa2 library"
authors = ["Takashi Sakamoto <o-takashi@sakamocchi.jp>"]
license = "MIT"
@@ -16,7 +16,7 @@ glib = "0.10"
glib-sys = "0.10"
gobject-sys = "0.10"
-hinawa-sys = { path = "../hinawa-sys", version = "0.4" }
+hinawa-sys = { path = "../hinawa-sys", version = "0.5" }
[dev-dependencies]
gir-format-check = "^0.1"
diff --git a/hinawa/src/auto/mod.rs b/hinawa/src/auto/mod.rs
index ba0e4a0..fd50688 100644
--- a/hinawa/src/auto/mod.rs
+++ b/hinawa/src/auto/mod.rs
@@ -42,6 +42,9 @@ mod snd_unit;
pub use self::snd_unit::{SndUnit, SndUnitClass, NONE_SND_UNIT};
pub use self::snd_unit::SndUnitExt;
+mod snd_motu_register_dsp_parameter;
+pub use self::snd_motu_register_dsp_parameter::SndMotuRegisterDspParameter;
+
mod enums;
pub use self::enums::FwFcpError;
pub use self::enums::FwNodeError;
diff --git a/hinawa/src/auto/snd_motu_register_dsp_parameter.rs b/hinawa/src/auto/snd_motu_register_dsp_parameter.rs
new file mode 100644
index 0000000..6766b71
--- /dev/null
+++ b/hinawa/src/auto/snd_motu_register_dsp_parameter.rs
@@ -0,0 +1,78 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir)
+// from gir-files (https://github.com/gtk-rs/gir-files)
+// DO NOT EDIT
+
+use glib::translate::*;
+use gobject_sys;
+use hinawa_sys;
+use std::mem;
+
+glib_wrapper! {
+ #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
+ pub struct SndMotuRegisterDspParameter(Boxed<hinawa_sys::HinawaSndMotuRegisterDspParameter>);
+
+ match fn {
+ copy => |ptr| gobject_sys::g_boxed_copy(hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_type(), ptr as *mut _) as *mut hinawa_sys::HinawaSndMotuRegisterDspParameter,
+ free => |ptr| gobject_sys::g_boxed_free(hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_type(), ptr as *mut _),
+ get_type => || hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_type(),
+ }
+}
+
+impl SndMotuRegisterDspParameter {
+ pub fn new() -> SndMotuRegisterDspParameter {
+ unsafe {
+ from_glib_full(hinawa_sys::hinawa_snd_motu_register_dsp_parameter_new())
+ }
+ }
+
+ pub fn get_headphone_output_paired_assignment(&self) -> u8 {
+ unsafe {
+ let mut assignment = mem::MaybeUninit::uninit();
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_headphone_output_paired_assignment(self.to_glib_none().0, assignment.as_mut_ptr());
+ let assignment = assignment.assume_init();
+ assignment
+ }
+ }
+
+ pub fn get_headphone_output_paired_volume(&self) -> u8 {
+ unsafe {
+ let mut volume = mem::MaybeUninit::uninit();
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_headphone_output_paired_volume(self.to_glib_none().0, volume.as_mut_ptr());
+ let volume = volume.assume_init();
+ volume
+ }
+ }
+
+ pub fn get_line_input_boost_flag(&self) -> u8 {
+ unsafe {
+ let mut boost_flag = mem::MaybeUninit::uninit();
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_line_input_boost_flag(self.to_glib_none().0, boost_flag.as_mut_ptr());
+ let boost_flag = boost_flag.assume_init();
+ boost_flag
+ }
+ }
+
+ pub fn get_line_input_nominal_level_flag(&self) -> u8 {
+ unsafe {
+ let mut nominal_level_flag = mem::MaybeUninit::uninit();
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_line_input_nominal_level_flag(self.to_glib_none().0, nominal_level_flag.as_mut_ptr());
+ let nominal_level_flag = nominal_level_flag.assume_init();
+ nominal_level_flag
+ }
+ }
+
+ pub fn get_main_output_paired_volume(&self) -> u8 {
+ unsafe {
+ let mut volume = mem::MaybeUninit::uninit();
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_main_output_paired_volume(self.to_glib_none().0, volume.as_mut_ptr());
+ let volume = volume.assume_init();
+ volume
+ }
+ }
+}
+
+impl Default for SndMotuRegisterDspParameter {
+ fn default() -> Self {
+ Self::new()
+ }
+}
diff --git a/hinawa/src/lib.rs b/hinawa/src/lib.rs
index f836511..fb0da0f 100644
--- a/hinawa/src/lib.rs
+++ b/hinawa/src/lib.rs
@@ -33,3 +33,9 @@ pub use snd_tscm::*;
mod enums;
pub use enums::*;
+
+mod snd_motu;
+pub use snd_motu::*;
+
+mod snd_motu_register_dsp_parameter;
+pub use snd_motu_register_dsp_parameter::*;
diff --git a/hinawa/src/snd_motu.rs b/hinawa/src/snd_motu.rs
new file mode 100644
index 0000000..b65d349
--- /dev/null
+++ b/hinawa/src/snd_motu.rs
@@ -0,0 +1,109 @@
+// SPDX-License-Identifier: MIT
+use glib::object::IsA;
+use glib::translate::*;
+use glib::object::Cast;
+use glib::signal::connect_raw;
+use glib::signal::SignalHandlerId;
+
+use SndMotu;
+use SndMotuRegisterDspParameter;
+
+pub trait SndMotuExtManual {
+ fn read_register_dsp_parameter(&self, param: &mut SndMotuRegisterDspParameter) -> Result<(), glib::Error>;
+ fn read_register_dsp_meter(&self, meter: &mut [u8; 48]) -> Result<(), glib::Error>;
+ fn read_command_dsp_meter(&self, meter: &mut [f32; 400]) -> Result<(), glib::Error>;
+ fn connect_register_dsp_changed<F: Fn(&Self, &[u32]) + 'static>(&self, f: F) -> SignalHandlerId;
+}
+
+impl<O: IsA<SndMotu>> SndMotuExtManual for O {
+ fn read_register_dsp_parameter(
+ &self,
+ param: &mut SndMotuRegisterDspParameter
+ ) -> Result<(), glib::Error> {
+ unsafe {
+ let mut error = std::ptr::null_mut();
+
+ hinawa_sys::hinawa_snd_motu_read_register_dsp_parameter(
+ self.as_ref().to_glib_none().0,
+ &param.to_glib_none_mut().0,
+ &mut error
+ );
+
+ if error.is_null() {
+ Ok(())
+ } else {
+ Err(from_glib_full(error))
+ }
+ }
+ }
+
+ fn read_register_dsp_meter(&self, meter: &mut [u8; 48]) -> Result<(), glib::Error> {
+ unsafe {
+ let ptr: *mut [u8; 48] = meter;
+ let mut error = std::ptr::null_mut();
+
+ hinawa_sys::hinawa_snd_motu_read_register_dsp_meter(
+ self.as_ref().to_glib_none().0,
+ &ptr,
+ &mut error
+ );
+
+ if error.is_null() {
+ Ok(())
+ } else {
+ Err(from_glib_full(error))
+ }
+ }
+ }
+
+ fn read_command_dsp_meter(&self, meter: &mut [f32; 400]) -> Result<(), glib::Error> {
+ unsafe {
+ let ptr: *mut [f32; 400] = meter;
+ let mut error = std::ptr::null_mut();
+
+ hinawa_sys::hinawa_snd_motu_read_command_dsp_meter(
+ self.as_ref().to_glib_none().0,
+ &ptr,
+ &mut error
+ );
+
+ if error.is_null() {
+ Ok(())
+ } else {
+ Err(from_glib_full(error))
+ }
+ }
+ }
+
+ fn connect_register_dsp_changed<F>(&self, f: F) -> SignalHandlerId
+ where F: Fn(&Self, &[u32]) + 'static,
+ {
+ unsafe extern "C" fn register_dsp_changed_trampoline<P, F>(
+ this: *mut hinawa_sys::HinawaSndMotu,
+ events: *const u32,
+ length: libc::c_uint,
+ f: glib_sys::gpointer
+ )
+ where P: IsA<SndMotu>,
+ F: Fn(&P, &[u32]) + 'static,
+ {
+ let f: &F = &*(f as *const F);
+ f(
+ &SndMotu::from_glib_borrow(this).unsafe_cast_ref(),
+ std::slice::from_raw_parts(events, length as usize)
+ )
+ }
+ unsafe {
+ let f: std::boxed::Box<F> = std::boxed::Box::new(f);
+ connect_raw(
+ self.as_ptr() as *mut _,
+ b"register-dsp-changed\0".as_ptr() as *const _,
+ Some(
+ std::mem::transmute::<_, unsafe extern "C" fn()>(
+ register_dsp_changed_trampoline::<Self, F> as *const ()
+ )),
+ std::boxed::Box::into_raw(f)
+ )
+ }
+ }
+}
diff --git a/hinawa/src/snd_motu_register_dsp_parameter.rs b/hinawa/src/snd_motu_register_dsp_parameter.rs
new file mode 100644
index 0000000..4190b0f
--- /dev/null
+++ b/hinawa/src/snd_motu_register_dsp_parameter.rs
@@ -0,0 +1,109 @@
+use glib::translate::*;
+
+use SndMotuRegisterDspParameter;
+
+impl SndMotuRegisterDspParameter {
+ pub fn get_input_flag(&self) -> &[u8; 10] {
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 10];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_input_flag(
+ self.to_glib_none().0,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+
+ pub fn get_input_gain_and_invert(&self) -> &[u8; 10] {
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 10];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_input_gain_and_invert(
+ self.to_glib_none().0,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+
+ pub fn get_mixer_output_paired_flag(&self) -> &[u8; 4] {
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 4];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_mixer_output_paired_flag(
+ self.to_glib_none().0,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+
+ pub fn get_mixer_output_paired_volume(&self) -> &[u8; 4] {
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 4];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_mixer_output_paired_volume(
+ self.to_glib_none().0,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+
+ pub fn get_mixer_source_flag(&self, mixer: usize) -> &[u8; 20] {
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 20];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_mixer_source_flag(
+ self.to_glib_none().0,
+ mixer,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+
+ pub fn get_mixer_source_gain(&self, mixer: usize) -> &[u8; 20] {
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 20];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_mixer_source_gain(
+ self.to_glib_none().0,
+ mixer,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+
+ pub fn get_mixer_source_paired_balance(&self, mixer: usize) -> &[u8; 20] {
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 20];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_mixer_source_paired_balance(
+ self.to_glib_none().0,
+ mixer,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+
+ pub fn get_mixer_source_paired_width(&self, mixer: usize) -> &[u8; 20] {
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 20];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_mixer_source_paired_width(
+ self.to_glib_none().0,
+ mixer,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+
+ pub fn get_mixer_source_pan(&self, mixer: usize) -> &[u8; 20]{
+ unsafe {
+ let mut ptr = std::ptr::null_mut() as *const [u8; 20];
+ hinawa_sys::hinawa_snd_motu_register_dsp_parameter_get_mixer_source_pan(
+ self.to_glib_none().0,
+ mixer,
+ &mut ptr,
+ );
+ &*ptr
+ }
+ }
+}