"alsarawmidi_get_rawmidi_sysname";
"alsarawmidi_get_rawmidi_devnode";
"alsarawmidi_get_subdevice_id_list";
+ "alsarawmidi_get_substream_info";
"alsarawmidi_substream_info_get_type";
local:
#include <glib.h>
#include <glib-object.h>
+#include "substream-info.h"
+
+#include <sound/asound.h>
+
G_BEGIN_DECLS
GQuark alsarawmidi_error_quark(void);
g_set_error(err, alsarawmidi_error_quark(), errno, \
__FILE__ ":%d: %s", __LINE__, strerror(errno))
+void rawmidi_substream_info_refer_private(ALSARawmidiSubstreamInfo *self,
+ struct snd_rawmidi_info **info);
+
G_END_DECLS
#endif
#include <libudev.h>
-#include <sound/asound.h>
-
// For error reporting.
G_DEFINE_QUARK("alsarawmidi-error", alsarawmidi_error)
(*entries)[i] = i;
*entry_count = info.subdevices_count;
}
+
+/**
+ * alsarawmidi_get_substream_info:
+ * @card_id: The numberical value for sound card to query.
+ * @device_id: The numerical value of rawmidi device to query.
+ * @direction: The direction of stream, one of ALSARawmidiStreamDirection.
+ * @subdevice_id: The numerical value of subdevice in rawmidi device.
+ * @substream_info: (out): The information of substream for the subdevice.
+ * @error: A #GError.
+ */
+void alsarawmidi_get_substream_info(guint card_id, guint device_id,
+ ALSARawmidiStreamDirection direction,
+ guint subdevice_id,
+ ALSARawmidiSubstreamInfo **substream_info,
+ GError **error)
+{
+ struct snd_rawmidi_info *info;
+
+ if (substream_info == NULL) {
+ generate_error(error, EINVAL);
+ return;
+ }
+
+ *substream_info = g_object_new(ALSARAWMIDI_TYPE_SUBSTREAM_INFO, NULL);
+
+ rawmidi_substream_info_refer_private(*substream_info, &info);
+ info->device = device_id;
+ info->subdevice = subdevice_id;
+ info->stream = direction;
+ info->card = card_id;
+
+ rawmidi_perform_ctl_ioctl(card_id, SNDRV_CTL_IOCTL_RAWMIDI_INFO, info, error);
+ if (*error != NULL)
+ g_object_unref(*substream_info);
+}
#include <glib-object.h>
#include <rawmidi/alsarawmidi-enums.h>
+#include <rawmidi/substream-info.h>
G_BEGIN_DECLS
guint **entries, gsize *entry_count,
GError **error);
+void alsarawmidi_get_substream_info(guint card_id, guint device_id,
+ ALSARawmidiStreamDirection direction,
+ guint subdevice_id,
+ ALSARawmidiSubstreamInfo **substream_info,
+ GError **error);
+
G_END_DECLS
#endif
// SPDX-License-Identifier: LGPL-3.0-or-later
-#include "substream-info.h"
-
-#include <sound/asound.h>
+#include "privates.h"
struct _ALSARawmidiSubstreamInfoPrivate {
struct snd_rawmidi_info info;
{
return;
}
+
+void rawmidi_substream_info_refer_private(ALSARawmidiSubstreamInfo *self,
+ struct snd_rawmidi_info **info)
+{
+ ALSARawmidiSubstreamInfoPrivate *priv =
+ alsarawmidi_substream_info_get_instance_private(self);
+
+ *info = &priv->info;
+}