#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
+#include <sys/ioctl.h>
struct _ALSARawmidiStreamPairPrivate {
int fd;
priv->devnode = devnode;
}
+
+/**
+ * alsarawmidi_stream_pair_get_substream_info:
+ * @self: A #ALSARawmidiStreamPair.
+ * @direction: The direction of substream attached to the stream pair.
+ * @substream_info: (out): The information for requested substream.
+ * @error: A #GError.
+ *
+ * Get information of substream attached to the stream pair.
+ */
+void alsarawmidi_stream_pair_get_substream_info(ALSARawmidiStreamPair *self,
+ ALSARawmidiStreamDirection direction,
+ ALSARawmidiSubstreamInfo **substream_info,
+ GError **error)
+{
+ ALSARawmidiStreamPairPrivate *priv;
+ struct snd_rawmidi_info *info;
+
+ g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self));
+ priv = alsarawmidi_stream_pair_get_instance_private(self);
+
+ *substream_info = g_object_new(ALSARAWMIDI_TYPE_SUBSTREAM_INFO, NULL);
+
+ rawmidi_substream_info_refer_private(*substream_info, &info);
+ info->stream = direction;
+ if (ioctl(priv->fd, SNDRV_RAWMIDI_IOCTL_INFO, info) < 0) {
+ generate_error(error, errno);
+ g_object_unref(*substream_info);
+ return;
+ }
+}
#include <glib-object.h>
#include <rawmidi/alsarawmidi-enums.h>
+#include <rawmidi/substream-info.h>
G_BEGIN_DECLS
ALSARawmidiStreamPairInfoFlag access_modes,
gint open_flag, GError **error);
+void alsarawmidi_stream_pair_get_substream_info(ALSARawmidiStreamPair *self,
+ ALSARawmidiStreamDirection direction,
+ ALSARawmidiSubstreamInfo **substream_info,
+ GError **error);
+
G_END_DECLS
#endif