keysound: skip hard frequent request of keysound playback
[platform/core/multimedia/libmm-sound.git] / testsuite / mm_sound_testsuite_simple.c
index ac5f147..1509653 100755 (executable)
 #define POWERON_FILE   "/usr/share/keysound/poweron.ogg"
 #define KEYTONE_FILE   "/usr/share/sounds/mm-sound/Tizen_HW_Touch.ogg"
 #define KEYTONE_NOTI_FILE      "/usr/share/sounds/alsa/Front_Center.wav"
-#define MM_SOUND_KEYTONE "MM_SOUND_KEYTONE"
+
+#define MM_SOUND_KEYTONE_PATH "MM_SOUND_KEYTONE_PATH"
+
+#define MM_SOUND_KEYTONE_COUNT "MM_SOUND_KEYTONE_COUNT"
+#define MM_SOUND_KEYTONE_COUNT_MAX 10000
+
+#define MM_SOUND_KEYTONE_INTERVAL "MM_SOUND_KEYTONE_INTERVAL"
+#define MM_SOUND_KEYTONE_INTERVAL_MAX 10000 /* 10 sec. */
 
 enum {
        CURRENT_STATUS_MAINMENU = 0,
@@ -345,6 +352,29 @@ mm_sound_device_flags_e select_device_flags(void)
        return (no2flag(input_string[0]) | no2flag(input_string[2]) | no2flag(input_string[4]));
 }
 
+static const char *env_get_str(const char *key, const char *default_str)
+{
+       char *env_str = getenv(key);
+
+       return env_str ? env_str : default_str;
+}
+
+static unsigned int env_get_uint(const char *key, unsigned int min, unsigned int max, unsigned int default_value)
+{
+       char *env_str = getenv(key);
+       unsigned int value = 0;
+
+       if (!env_str)
+               return default_value;
+
+       value = (unsigned int)atoi(env_str);
+
+       g_assert(value >= min);
+       g_assert(value <= max);
+
+       return value;
+}
+
 static void interpret(char *cmd)
 {
        int ret = 0;
@@ -558,10 +588,25 @@ static void interpret(char *cmd)
                        if (ret < 0)
                                debug_error("keysound stop failed with 0x%x", ret);
                } else if (strncmp(cmd, "k", 1) == 0) {
-                       char* env_keytone_path = getenv(MM_SOUND_KEYTONE);
-                       ret = mm_sound_play_keysound(env_keytone_path ? env_keytone_path : KEYTONE_FILE, 0);
-                       if (ret < 0)
-                               debug_error("keysound play failed with 0x%x", ret);
+                       const char* keytone_path =
+                               env_get_str(MM_SOUND_KEYTONE_PATH, KEYTONE_FILE);
+                       unsigned int count =
+                               env_get_uint(MM_SOUND_KEYTONE_COUNT, 0, MM_SOUND_KEYTONE_COUNT_MAX, 1);
+                       unsigned int interval_us =
+                               env_get_uint(MM_SOUND_KEYTONE_INTERVAL, 0, MM_SOUND_KEYTONE_INTERVAL_MAX, 0) * 1000;
+
+                       g_message("keytone path(%s), count(%u), interval(%u us)",
+                               keytone_path, count, interval_us);
+
+                       for (unsigned int i = 0; i < count; i++) {
+                               ret = mm_sound_play_keysound(keytone_path, 0);
+                               if (ret < 0)
+                                       debug_error("keysound play failed with 0x%x", ret);
+
+                               usleep(interval_us);
+                       }
+
+                       g_message("keytone play done");
                } else if (strncmp(cmd, "q", 1) == 0) {
                        unsigned int value = 100;
                        ret = mm_sound_volume_get_value(g_volume_type, &value);