]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
timer: device_info: add properties
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 9 Feb 2020 03:20:53 +0000 (12:20 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Tue, 11 Feb 2020 04:28:18 +0000 (13:28 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/timer/device-info.c
src/timer/device-info.h
tests/alsatimer-device-info

index 0f98404f4f7d9b49a8cd9fd4f03b069959e974be..ba4e149581cfb36b3b5c35fd17652f29e68ed6dc 100644 (file)
 
 #include <sound/asound.h>
 
-G_DEFINE_TYPE(ALSATimerDeviceInfo, alsatimer_device_info, G_TYPE_OBJECT)
+struct _ALSATimerDeviceInfoPrivate {
+    struct snd_timer_ginfo info;
+};
+G_DEFINE_TYPE_WITH_PRIVATE(ALSATimerDeviceInfo, alsatimer_device_info, G_TYPE_OBJECT)
+
+enum timer_device_info_prop_type {
+    TIMER_DEVICE_INFO_PROP_FLAGS = 1,
+    TIMER_DEVICE_INFO_PROP_CARD_ID,
+    TIMER_DEVICE_INFO_PROP_ID,
+    TIMER_DEVICE_INFO_PROP_NAME,
+    TIMER_DEVICE_INFO_PROP_RESOLUTION,
+    TIMER_DEVICE_INFO_PROP_RESOLUTION_MIN,
+    TIMER_DEVICE_INFO_PROP_RESOLUTION_MAX,
+    TIMER_DEVICE_INFO_PROP_INSTANCE_COUNT,
+    TIMER_DEVICE_INFO_PROP_COUNT,
+};
+static GParamSpec *timer_device_info_props[TIMER_DEVICE_INFO_PROP_COUNT] = { NULL, };
+
+static void timer_device_info_get_property(GObject *obj, guint id, GValue *val,
+                                           GParamSpec *spec)
+{
+    ALSATimerDeviceInfo *self = ALSATIMER_DEVICE_INFO(obj);
+    ALSATimerDeviceInfoPrivate *priv =
+                            alsatimer_device_info_get_instance_private(self);
+
+    switch (id) {
+    case TIMER_DEVICE_INFO_PROP_FLAGS:
+        g_value_set_flags(val, (ALSATimerDeviceInfoFlag)priv->info.flags);
+        break;
+    case TIMER_DEVICE_INFO_PROP_CARD_ID:
+        g_value_set_int(val, priv->info.card);
+        break;
+    case TIMER_DEVICE_INFO_PROP_ID:
+        g_value_set_static_string(val, (const gchar *)priv->info.id);
+        break;
+    case TIMER_DEVICE_INFO_PROP_NAME:
+        g_value_set_static_string(val, (const gchar *)priv->info.name);
+        break;
+    case TIMER_DEVICE_INFO_PROP_RESOLUTION:
+        g_value_set_uint64(val, priv->info.resolution);
+        break;
+    case TIMER_DEVICE_INFO_PROP_RESOLUTION_MIN:
+        g_value_set_uint64(val, priv->info.resolution_min);
+        break;
+    case TIMER_DEVICE_INFO_PROP_RESOLUTION_MAX:
+        g_value_set_uint64(val, priv->info.resolution_max);
+        break;
+    case TIMER_DEVICE_INFO_PROP_INSTANCE_COUNT:
+        g_value_set_uint(val, priv->info.clients);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, spec);
+        break;
+    }
+}
 
 static void alsatimer_device_info_class_init(ALSATimerDeviceInfoClass *klass)
 {
+    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+
+    gobject_class->get_property = timer_device_info_get_property;
+
+    timer_device_info_props[TIMER_DEVICE_INFO_PROP_FLAGS] =
+        g_param_spec_flags("flags", "flags",
+                           "The flags of timer, one of ALSATimerDeviceInfoFlag.",
+                           ALSATIMER_TYPE_DEVICE_INFO_FLAG,
+                           0,
+                           G_PARAM_READABLE);
+
+    timer_device_info_props[TIMER_DEVICE_INFO_PROP_CARD_ID] =
+        g_param_spec_int("card-id", "card-id",
+                         "The numerical ID of sound card.",
+                         G_MININT, G_MAXINT,
+                         -1,
+                         G_PARAM_READABLE);
+
+    timer_device_info_props[TIMER_DEVICE_INFO_PROP_ID] =
+        g_param_spec_string("id", "id",
+                            "The string ID of timer.",
+                            "",
+                            G_PARAM_READABLE);
+
+    timer_device_info_props[TIMER_DEVICE_INFO_PROP_NAME] =
+        g_param_spec_string("name", "name",
+                            "The name of timer.",
+                            "",
+                            G_PARAM_READABLE);
+
+    timer_device_info_props[TIMER_DEVICE_INFO_PROP_RESOLUTION] =
+        g_param_spec_uint64("resolution", "resolution",
+                            "The resolution in nano seconds.",
+                            0, G_MAXUINT64,
+                            0,
+                            G_PARAM_READABLE);
+
+    timer_device_info_props[TIMER_DEVICE_INFO_PROP_RESOLUTION_MIN] =
+        g_param_spec_uint64("resolution-min", "resolution-min",
+                            "The resolution in nano seconds.",
+                            0, G_MAXUINT64,
+                            0,
+                            G_PARAM_READABLE);
+
+    timer_device_info_props[TIMER_DEVICE_INFO_PROP_RESOLUTION_MAX] =
+        g_param_spec_uint64("resolution-max", "resolution-max",
+                            "The resolution in nano seconds.",
+                            0, G_MAXUINT64,
+                            0,
+                            G_PARAM_READABLE);
+
+    timer_device_info_props[TIMER_DEVICE_INFO_PROP_INSTANCE_COUNT] =
+        g_param_spec_uint("instance-count", "instance-count",
+                          "The number of instances for the timer.",
+                          0, G_MAXUINT,
+                          0,
+                          G_PARAM_READABLE);
+
+    g_object_class_install_properties(gobject_class,
+                                      TIMER_DEVICE_INFO_PROP_COUNT,
+                                      timer_device_info_props);
 }
 
 static void alsatimer_device_info_init(ALSATimerDeviceInfo *self)
index f3de19c6cbfe205ca3828bf5c8de4b00ea2e9875..19f3a6d0bbab69519072968069d45ff1de7c12bc 100644 (file)
@@ -5,6 +5,8 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#include <timer/device-id.h>
+
 G_BEGIN_DECLS
 
 #define ALSATIMER_TYPE_DEVICE_INFO   (alsatimer_device_info_get_type())
@@ -31,9 +33,12 @@ G_BEGIN_DECLS
 
 typedef struct _ALSATimerDeviceInfo         ALSATimerDeviceInfo;
 typedef struct _ALSATimerDeviceInfoClass    ALSATimerDeviceInfoClass;
+typedef struct _ALSATimerDeviceInfoPrivate  ALSATimerDeviceInfoPrivate;
 
 struct _ALSATimerDeviceInfo {
     GObject parent_instance;
+
+    ALSATimerDeviceInfoPrivate *priv;
 };
 
 struct _ALSATimerDeviceInfoClass {
index d76fae115d1641be9572e897dac2a6dd71f687c1..103296884139effe437ab7941d0ae405f66a5030 100644 (file)
@@ -10,7 +10,16 @@ gi.require_version('ALSATimer', '0.0')
 from gi.repository import ALSATimer
 
 target = ALSATimer.DeviceInfo()
-props = ()
+props = (
+    'flags',
+    'card-id',
+    'id',
+    'name',
+    'resolution',
+    'resolution-min',
+    'resolution-max',
+    'instance-count',
+)
 methods = ()
 signals = ()