backends: implements animation's repeat 82/220682/1
authorjeon <jhyuni.kang@samsung.com>
Tue, 3 Sep 2019 04:11:01 +0000 (13:11 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Fri, 20 Dec 2019 07:24:02 +0000 (16:24 +0900)
Change-Id: I455457fa0bf1b46e76d25347b93c6df7689cf4cf

18 files changed:
backends/bt/default_ani_connected.c
backends/bt/default_ani_pairing.c
backends/default_backend.h
backends/notification/default_ani_alarm.c
backends/notification/default_ani_emergency.c
backends/notification/default_ani_error.c
backends/notification/default_ani_networkerror.c
backends/notification/default_ani_normal.c
backends/system/default_ani_easysetup.c
backends/system/default_ani_micoff.c
backends/system/default_ani_swupdatedone.c
backends/system/default_ani_system_processing.c
backends/voice/default_ani_listening.c
backends/voice/default_ani_processing.c
backends/voice/default_ani_speaking.c
backends/voice/default_ani_streaming.c
backends/voice/default_ani_timeout.c
samples/PUI_sample.c

index cb2310f..15e0e2b 100644 (file)
@@ -81,7 +81,11 @@ _ani_backend_connected_get_frame(default_ani_info *ani_info)
 
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= BLINK_FRAME)
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -140,7 +144,14 @@ _ani_backend_connected_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -155,14 +166,13 @@ _ani_connected_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_connected_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_connected_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 83a200d..a272eda 100644 (file)
@@ -73,7 +73,11 @@ _ani_backend_pairing_get_frame(default_ani_info *ani_info)
 
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= ani_info->num_key_frames)
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -132,7 +136,14 @@ _ani_backend_pairing_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -147,14 +158,13 @@ _ani_pairing_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_pairing_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_pairing_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 7bfd132..a61bbe0 100644 (file)
@@ -74,13 +74,14 @@ struct _default_ani_info
        pui_id id;
        pui_ani_status status;
        pui_ani_control_buffer *buffer;
-       unsigned int repeat;
+       int repeat;
 
        unsigned int num_key_frames;
        default_frame_info_t *frames;
        int interval;
        pui_effect_func effect_func;
 
+       unsigned int repeat_cur;
        unsigned int frame_idx;
 };
 
index 3a3f553..fbafe63 100644 (file)
@@ -101,7 +101,11 @@ _ani_backend_alarm_get_frame(default_ani_info *ani_info)
 
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= (fade_out_frame + SMOOTH_FRAME))
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -159,7 +163,14 @@ _ani_backend_alarm_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -174,14 +185,13 @@ _ani_alarm_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_alarm_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_alarm_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 2f58418..6e4ea8d 100644 (file)
@@ -85,7 +85,11 @@ _ani_backend_emergency_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= (ani_info->num_key_frames * SMOOTH_FRAME))
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -144,7 +148,14 @@ _ani_backend_emergency_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -159,14 +170,13 @@ _ani_emergency_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_emergency_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_emergency_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 2bece72..82ed9a2 100644 (file)
@@ -81,7 +81,11 @@ _ani_backend_error_get_frame(default_ani_info *ani_info)
 
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= BLINK_FRAME)
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -140,7 +144,14 @@ _ani_backend_error_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -155,14 +166,13 @@ _ani_error_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_error_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_error_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 7295fa6..218d43a 100644 (file)
@@ -81,7 +81,11 @@ _ani_backend_networkerror_get_frame(default_ani_info *ani_info)
 
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= BLINK_FRAME)
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -140,7 +144,14 @@ _ani_backend_networkerror_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -155,14 +166,13 @@ _ani_networkerror_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_networkerror_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_networkerror_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index fec9d41..6d5b2b3 100644 (file)
@@ -85,7 +85,11 @@ _ani_backend_normal_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= (ani_info->num_key_frames * SMOOTH_FRAME))
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -144,7 +148,14 @@ _ani_backend_normal_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -159,14 +170,13 @@ _ani_normal_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_normal_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_normal_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 791300d..4449a4e 100644 (file)
@@ -85,7 +85,11 @@ _ani_backend_easysetup_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= (ani_info->num_key_frames * SMOOTH_FRAME))
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -143,7 +147,14 @@ _ani_backend_easysetup_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -158,14 +169,13 @@ _ani_easysetup_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_easysetup_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_easysetup_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 0d96ecb..2e746d5 100644 (file)
@@ -49,7 +49,6 @@ _ani_backend_micoff_free_frame(default_frame_info_t *frame)
 static default_frame_info_t *
 _ani_backend_micoff_get_frame(default_ani_info *ani_info)
 {
-#define SMOOTH_FRAME 15
        default_frame_info_t *frame, *key_frame;
 
        frame = (default_frame_info_t *)calloc(sizeof(default_frame_info_t), 1);
@@ -69,6 +68,9 @@ _ani_backend_micoff_get_frame(default_ani_info *ani_info)
                frame->leds[i].color = key_frame->leds[i].color;
        }
 
+       if (ani_info->repeat >= 0)
+               ani_info->repeat_cur++;
+
        return frame;
 }
 
@@ -126,7 +128,14 @@ _ani_backend_micoff_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -141,14 +150,13 @@ _ani_micoff_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_micoff_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_micoff_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index b1ee0d1..81c236c 100644 (file)
@@ -85,7 +85,11 @@ _ani_backend_swupdatedone_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= (ani_info->num_key_frames * SMOOTH_FRAME))
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -143,7 +147,14 @@ _ani_backend_swupdatedone_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -158,14 +169,13 @@ _ani_swupdatedone_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_swupdatedone_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_swupdatedone_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 921c4eb..223c0bf 100644 (file)
@@ -69,7 +69,11 @@ _ani_backend_system_processing_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= key_frame->num_led)
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -127,7 +131,14 @@ _ani_backend_system_processing_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -142,9 +153,6 @@ _ani_system_processing_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
        if (info->num_key_frames != 1)
        {
@@ -153,8 +161,10 @@ _ani_system_processing_start(pui_ani_t *ani, int repeat)
        }
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_system_processing_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_system_processing_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 6317550..9385efc 100644 (file)
@@ -98,7 +98,11 @@ _ani_backend_listening_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= key_frame->num_led)
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -156,7 +160,14 @@ _ani_backend_listening_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -171,14 +182,13 @@ _ani_listening_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_listening_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_listening_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 25bc0c0..ffd58e8 100644 (file)
@@ -69,7 +69,11 @@ _ani_backend_processing_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= key_frame->num_led)
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -127,7 +131,14 @@ _ani_backend_processing_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -142,9 +153,6 @@ _ani_processing_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
        if (info->num_key_frames != 1)
        {
@@ -153,8 +161,10 @@ _ani_processing_start(pui_ani_t *ani, int repeat)
        }
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_processing_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_processing_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 99d564a..fb48924 100644 (file)
@@ -85,7 +85,11 @@ _ani_backend_speaking_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= (ani_info->num_key_frames * SMOOTH_FRAME))
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -143,7 +147,14 @@ _ani_backend_speaking_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -158,14 +169,13 @@ _ani_speaking_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_speaking_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_speaking_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index 0d558d8..502ec96 100644 (file)
@@ -85,7 +85,11 @@ _ani_backend_streaming_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= (ani_info->num_key_frames * SMOOTH_FRAME))
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -143,7 +147,14 @@ _ani_backend_streaming_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -158,14 +169,13 @@ _ani_streaming_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_streaming_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_streaming_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index bb26a39..90b3b4b 100644 (file)
@@ -85,7 +85,11 @@ _ani_backend_timeout_get_frame(default_ani_info *ani_info)
        }
        ani_info->frame_idx++;
        if (ani_info->frame_idx >= (ani_info->num_key_frames * SMOOTH_FRAME))
+       {
+               if (ani_info->repeat >= 0)
+                       ani_info->repeat_cur++;
                ani_info->frame_idx = 0;
+       }
 
        return frame;
 }
@@ -143,7 +147,14 @@ _ani_backend_timeout_frame_cb(void *data, int serial)
                return (pui_bool)0;
        }
 
-       pui_info("... update (serial=%d)\n", serial);
+       pui_info("... update (serial=%d), (repeat| cur: %d, want: %d)\n",
+               serial, ani_info->repeat_cur, ani_info->repeat);
+
+       if (ani_info->repeat >= 0 &&
+               ani_info->repeat_cur >= ani_info->repeat)
+       {
+               ani_data->ani_func->ani_stop(ani, EINA_FALSE);
+       }
 
        return (pui_bool)1;
 }
@@ -158,14 +169,13 @@ _ani_timeout_start(pui_ani_t *ani, int repeat)
        ani_data = pui_backend_ani_get_ani_data(ani);
        default_ani_info *info = (default_ani_info *)ani_data->ani_info;
 
-       //TODO
-       (void) info;
-
        pui_info("... info->id: %s, repeat : %d, interval: %d\n", info->id, repeat, info->interval);
 
        pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
-       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_timeout_frame_cb, info->interval / 1000.0);
+       if (repeat == 0) info->repeat = 1;
+       else info->repeat = repeat;
 
+       ret = pui_backend_ani_add_frame_cb(ani, _ani_backend_timeout_frame_cb, info->interval / 1000.0);
        if (!ret)
        {
                pui_err("Failed to add frame callback !\n");
index c8b16e0..50096ea 100644 (file)
@@ -70,20 +70,20 @@ static Eina_Array *_ecore_event_hdls = NULL;
 static animation_t ani_collection[] = {
        { "system/easy_setup", PUI_ANI_CMD_START, -1 },
        { "system/processing", PUI_ANI_CMD_START, -1 },
-       { "system/sw_update_done", PUI_ANI_CMD_START, -1 },
-       { "system/mic_off", PUI_ANI_CMD_START, -1 },
-       { "voice/listening", PUI_ANI_CMD_START, -1 },
+       { "system/sw_update_done", PUI_ANI_CMD_START, 1 },
+       { "system/mic_off", PUI_ANI_CMD_START, 1 },
+       { "voice/listening", PUI_ANI_CMD_START, 1 },
        { "voice/streaming", PUI_ANI_CMD_START, -1 },
        { "voice/processing", PUI_ANI_CMD_START, -1 },
        { "voice/speaking", PUI_ANI_CMD_START, -1 },
-       { "voice/timeout", PUI_ANI_CMD_START, -1 },
-       { "notification/normal", PUI_ANI_CMD_START, -1 },
+       { "voice/timeout", PUI_ANI_CMD_START, 1 },
+       { "notification/normal", PUI_ANI_CMD_START, 1 },
        { "notification/emergency", PUI_ANI_CMD_START, -1 },
        { "notification/network_error", PUI_ANI_CMD_START, -1 },
        { "notification/error", PUI_ANI_CMD_START, -1 },
-       { "notification/alarm", PUI_ANI_CMD_START, -1 },
+       { "notification/alarm", PUI_ANI_CMD_START, 1 },
        { "bt/pairing", PUI_ANI_CMD_START, -1 },
-       { "bt/connected", PUI_ANI_CMD_START, -1 }
+       { "bt/connected", PUI_ANI_CMD_START, 3 }
 };
 
 pui_ani_h ani_handles[sizeof(ani_collection) / sizeof(animation_t)];