From 2e78a9207788b3de63c50d76b18b11855f24a4ad Mon Sep 17 00:00:00 2001 From: jeon Date: Tue, 3 Sep 2019 13:11:01 +0900 Subject: [PATCH] backends: implements animation's repeat Change-Id: I455457fa0bf1b46e76d25347b93c6df7689cf4cf --- backends/bt/default_ani_connected.c | 20 +++++++++++++++----- backends/bt/default_ani_pairing.c | 20 +++++++++++++++----- backends/default_backend.h | 3 ++- backends/notification/default_ani_alarm.c | 20 +++++++++++++++----- backends/notification/default_ani_emergency.c | 20 +++++++++++++++----- backends/notification/default_ani_error.c | 20 +++++++++++++++----- backends/notification/default_ani_networkerror.c | 20 +++++++++++++++----- backends/notification/default_ani_normal.c | 20 +++++++++++++++----- backends/system/default_ani_easysetup.c | 20 +++++++++++++++----- backends/system/default_ani_micoff.c | 20 ++++++++++++++------ backends/system/default_ani_swupdatedone.c | 20 +++++++++++++++----- backends/system/default_ani_system_processing.c | 20 +++++++++++++++----- backends/voice/default_ani_listening.c | 20 +++++++++++++++----- backends/voice/default_ani_processing.c | 20 +++++++++++++++----- backends/voice/default_ani_speaking.c | 20 +++++++++++++++----- backends/voice/default_ani_streaming.c | 20 +++++++++++++++----- backends/voice/default_ani_timeout.c | 20 +++++++++++++++----- samples/PUI_sample.c | 14 +++++++------- 18 files changed, 248 insertions(+), 89 deletions(-) diff --git a/backends/bt/default_ani_connected.c b/backends/bt/default_ani_connected.c index cb2310f..15e0e2b 100644 --- a/backends/bt/default_ani_connected.c +++ b/backends/bt/default_ani_connected.c @@ -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"); diff --git a/backends/bt/default_ani_pairing.c b/backends/bt/default_ani_pairing.c index 83a200d..a272eda 100644 --- a/backends/bt/default_ani_pairing.c +++ b/backends/bt/default_ani_pairing.c @@ -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"); diff --git a/backends/default_backend.h b/backends/default_backend.h index 7bfd132..a61bbe0 100644 --- a/backends/default_backend.h +++ b/backends/default_backend.h @@ -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; }; diff --git a/backends/notification/default_ani_alarm.c b/backends/notification/default_ani_alarm.c index 3a3f553..fbafe63 100644 --- a/backends/notification/default_ani_alarm.c +++ b/backends/notification/default_ani_alarm.c @@ -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"); diff --git a/backends/notification/default_ani_emergency.c b/backends/notification/default_ani_emergency.c index 2f58418..6e4ea8d 100644 --- a/backends/notification/default_ani_emergency.c +++ b/backends/notification/default_ani_emergency.c @@ -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"); diff --git a/backends/notification/default_ani_error.c b/backends/notification/default_ani_error.c index 2bece72..82ed9a2 100644 --- a/backends/notification/default_ani_error.c +++ b/backends/notification/default_ani_error.c @@ -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"); diff --git a/backends/notification/default_ani_networkerror.c b/backends/notification/default_ani_networkerror.c index 7295fa6..218d43a 100644 --- a/backends/notification/default_ani_networkerror.c +++ b/backends/notification/default_ani_networkerror.c @@ -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"); diff --git a/backends/notification/default_ani_normal.c b/backends/notification/default_ani_normal.c index fec9d41..6d5b2b3 100644 --- a/backends/notification/default_ani_normal.c +++ b/backends/notification/default_ani_normal.c @@ -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"); diff --git a/backends/system/default_ani_easysetup.c b/backends/system/default_ani_easysetup.c index 791300d..4449a4e 100644 --- a/backends/system/default_ani_easysetup.c +++ b/backends/system/default_ani_easysetup.c @@ -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"); diff --git a/backends/system/default_ani_micoff.c b/backends/system/default_ani_micoff.c index 0d96ecb..2e746d5 100644 --- a/backends/system/default_ani_micoff.c +++ b/backends/system/default_ani_micoff.c @@ -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"); diff --git a/backends/system/default_ani_swupdatedone.c b/backends/system/default_ani_swupdatedone.c index b1ee0d1..81c236c 100644 --- a/backends/system/default_ani_swupdatedone.c +++ b/backends/system/default_ani_swupdatedone.c @@ -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"); diff --git a/backends/system/default_ani_system_processing.c b/backends/system/default_ani_system_processing.c index 921c4eb..223c0bf 100644 --- a/backends/system/default_ani_system_processing.c +++ b/backends/system/default_ani_system_processing.c @@ -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"); diff --git a/backends/voice/default_ani_listening.c b/backends/voice/default_ani_listening.c index 6317550..9385efc 100644 --- a/backends/voice/default_ani_listening.c +++ b/backends/voice/default_ani_listening.c @@ -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"); diff --git a/backends/voice/default_ani_processing.c b/backends/voice/default_ani_processing.c index 25bc0c0..ffd58e8 100644 --- a/backends/voice/default_ani_processing.c +++ b/backends/voice/default_ani_processing.c @@ -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"); diff --git a/backends/voice/default_ani_speaking.c b/backends/voice/default_ani_speaking.c index 99d564a..fb48924 100644 --- a/backends/voice/default_ani_speaking.c +++ b/backends/voice/default_ani_speaking.c @@ -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"); diff --git a/backends/voice/default_ani_streaming.c b/backends/voice/default_ani_streaming.c index 0d558d8..502ec96 100644 --- a/backends/voice/default_ani_streaming.c +++ b/backends/voice/default_ani_streaming.c @@ -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"); diff --git a/backends/voice/default_ani_timeout.c b/backends/voice/default_ani_timeout.c index bb26a39..90b3b4b 100644 --- a/backends/voice/default_ani_timeout.c +++ b/backends/voice/default_ani_timeout.c @@ -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"); diff --git a/samples/PUI_sample.c b/samples/PUI_sample.c index c8b16e0..50096ea 100644 --- a/samples/PUI_sample.c +++ b/samples/PUI_sample.c @@ -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)]; -- 2.7.4