libpui_default_backend_la_SOURCES = \
default_backend.c \
- default_ani_listening.c \
- default_ani_speaking.c \
- default_ani_processing.c \
- default_ani_streaming.c \
- default_ani_timeout.c \
- default_ani_emergency.c \
- default_ani_system_processing.c \
- default_ani_normal.c \
- default_ani_easysetup.c \
- default_ani_swupdatedone.c \
- default_ani_micoff.c \
- default_ani_networkerror.c \
- default_ani_error.c \
- default_ani_alarm.c \
- default_ani_pairing.c \
- default_ani_connected.c
+ system/default_ani_easysetup.c \
+ system/default_ani_system_processing.c \
+ system/default_ani_swupdatedone.c \
+ system/default_ani_micoff.c \
+ voice/default_ani_listening.c \
+ voice/default_ani_streaming.c \
+ voice/default_ani_processing.c \
+ voice/default_ani_speaking.c \
+ voice/default_ani_timeout.c \
+ notification/default_ani_normal.c \
+ notification/default_ani_emergency.c \
+ notification/default_ani_networkerror.c \
+ notification/default_ani_error.c \
+ notification/default_ani_alarm.c \
+ bt/default_ani_pairing.c \
+ bt/default_ani_connected.c
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_connected_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_pairing_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
return NULL;
}
-static int
-_scandir_filter(const struct dirent *dirent)
+int
+_find_directory(const char *path, Eina_List **json_list)
{
- if (!strncmp(dirent->d_name, ".", sizeof(".")) ||
- !strncmp(dirent->d_name, "..", sizeof("..")))
- return 0;
- if (!strstr(dirent->d_name, ".json"))
- return 0;
+ DIR *dir;
+ struct dirent *cur;
+ int count = 0, ret_cnt = 0;
+
+ dir = opendir(path);
+ if (!dir)
+ {
+ pui_err("Failed to open %s.\n", path);
+ return count;
+ }
+
+ while ((cur = readdir(dir)) != NULL)
+ {
+ char next_path[MAX_STR] = {0, };
+ if (cur->d_type == DT_DIR)
+ {
+ if (!strncmp(cur->d_name, ".", sizeof(".")) ||
+ !strncmp(cur->d_name, "..", sizeof("..")))
+ continue;
+
+ snprintf(next_path, MAX_STR, "%s/%s", path, cur->d_name);
+ ret_cnt = _find_directory(next_path, json_list);
+ count += ret_cnt;
+ }
+ else
+ {
+ if (strstr(cur->d_name, ".json"))
+ {
+ snprintf(next_path, MAX_STR, "%s/%s", path, cur->d_name);
+ *json_list = eina_list_append(*json_list, eina_stringshare_add(next_path));
+ count++;
+ }
+ }
+ }
+ closedir(dir);
- return 1;
+ return count;
}
{
pui_int_error e = PUI_INT_ERROR_NONE;
default_ani_info *ani_info;
- struct dirent **files;
- int count, i;
- char file_path[MAX_STR] = {0, };
+ Eina_List *json_list = NULL;
+ Eina_List *l, *l_next;
+ Eina_Stringshare *path;
// load and store all of animation data
- if ((count = scandir(ANI_COLLECTION_DIR, &files, _scandir_filter, alphasort)) == -1) {
- printf("Failed to get %s directory (%s)\n", ANI_COLLECTION_DIR, strerror(errno));
- e = PUI_INT_ERROR_INVALID_RESOURCES;
- return e;
- }
-
- for (i = 0; i < count; i++) {
- snprintf(file_path, sizeof(file_path), "%s%s", ANI_COLLECTION_DIR, files[i]->d_name);
+ _find_directory(ANI_COLLECTION_DIR, &json_list);
- ani_info = _read_json(file_path);
+ EINA_LIST_FOREACH_SAFE(json_list, l, l_next, path)
+ {
+ ani_info = _read_json(path);
if (ani_info) {
eina_hash_add(_animations_hash, ani_info->id, ani_info);
- printf("Success to load %s animation\n", files[i]->d_name);
+ pui_info("Success to load %s animation (id: %s)\n", path, ani_info->id);
}
+ eina_stringshare_del(path);
+ json_list = eina_list_remove_list(json_list, l);
}
- for (i = 0; i < count; i++) {
- free(files[i]);
- }
- free(files);
-
//TODO
return e;
}
/* Assign each function pointer that corresponds to the given id if needed. */
- if (!strncmp(ani_info->id, "processing", sizeof("processing")))
+ if (!strncmp(ani_info->id, "system/easy_setup", sizeof("system/easy_setup")))
{
- pui_default_backend_ani_processing_func_set(ani_func);
+ pui_default_backend_ani_easysetup_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "listening", sizeof("listening")))
+ else if (!strncmp(ani_info->id, "system/processing", sizeof("system/processing")))
{
- pui_default_backend_ani_listening_func_set(ani_func);
+ pui_default_backend_ani_system_processing_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "speaking", sizeof("speaking")))
+ else if (!strncmp(ani_info->id, "system/sw_update_done", sizeof("system/sw_update_done")))
{
- pui_default_backend_ani_speaking_func_set(ani_func);
+ pui_default_backend_ani_swupdatedone_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "streaming", sizeof("streaming")))
+ else if (!strncmp(ani_info->id, "system/mic_off", sizeof("system/mic_off")))
{
- pui_default_backend_ani_streaming_func_set(ani_func);
+ pui_default_backend_ani_micoff_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "time_out", sizeof("time_out")))
+ else if (!strncmp(ani_info->id, "voice/listening", sizeof("voice/listening")))
{
- pui_default_backend_ani_timeout_func_set(ani_func);
+ pui_default_backend_ani_listening_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "system_processing", sizeof("system_processing")))
+ else if (!strncmp(ani_info->id, "voice/streaming", sizeof("voice/streaming")))
{
- pui_default_backend_ani_system_processing_func_set(ani_func);
+ pui_default_backend_ani_streaming_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "normal", sizeof("normal")))
+ else if (!strncmp(ani_info->id, "voice/processing", sizeof("voice/processing")))
{
- pui_default_backend_ani_normal_func_set(ani_func);
+ pui_default_backend_ani_processing_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "emergency", sizeof("emergency")))
+ else if (!strncmp(ani_info->id, "voice/speaking", sizeof("voice/speaking")))
{
- pui_default_backend_ani_emergency_func_set(ani_func);
+ pui_default_backend_ani_speaking_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "easy_setup", sizeof("easy_setup")))
+ else if (!strncmp(ani_info->id, "voice/timeout", sizeof("voice/timeout")))
{
- pui_default_backend_ani_easysetup_func_set(ani_func);
+ pui_default_backend_ani_timeout_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "sw_update_done", sizeof("sw_update_done")))
+ else if (!strncmp(ani_info->id, "notification/normal", sizeof("notification/normal")))
{
- pui_default_backend_ani_swupdatedone_func_set(ani_func);
+ pui_default_backend_ani_normal_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "mic_off", sizeof("mic_off")))
+ else if (!strncmp(ani_info->id, "notification/emergency", sizeof("notification/emergency")))
{
- pui_default_backend_ani_micoff_func_set(ani_func);
+ pui_default_backend_ani_emergency_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "network_error", sizeof("network_error")))
+ else if (!strncmp(ani_info->id, "notification/network_error", sizeof("notification/network_error")))
{
pui_default_backend_ani_networkerror_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "error", sizeof("error")))
+ else if (!strncmp(ani_info->id, "notification/error", sizeof("notification/error")))
{
pui_default_backend_ani_error_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "alarm", sizeof("alarm")))
+ else if (!strncmp(ani_info->id, "notification/alarm", sizeof("notification/alarm")))
{
pui_default_backend_ani_alarm_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "connected", sizeof("connected")))
+ else if (!strncmp(ani_info->id, "bt/pairing", sizeof("bt/pairing")))
{
- pui_default_backend_ani_connected_func_set(ani_func);
+ pui_default_backend_ani_pairing_func_set(ani_func);
}
- else if (!strncmp(ani_info->id, "pairing", sizeof("pairing")))
+ else if (!strncmp(ani_info->id, "bt/connected", sizeof("bt/connected")))
{
- pui_default_backend_ani_pairing_func_set(ani_func);
+ pui_default_backend_ani_connected_func_set(ani_func);
}
else
{
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_alarm_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_emergency_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_error_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_networkerror_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_normal_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
{
- "type": "connected",
+ "type": "bt/connected",
"interval": 100,
"frame": [
{
{
- "type": "pairing",
+ "type": "bt/pairing",
"interval": 500,
"frame": [
{
{
- "type": "alarm",
+ "type": "notification/alarm",
"interval": 40,
"frame": [
{
{
- "type": "emergency",
+ "type": "notification/emergency",
"interval": 30,
"frame": [
{
{
- "type": "error",
+ "type": "notification/error",
"interval": 500,
"frame": [
{
{
- "type": "network_error",
+ "type": "notification/network_error",
"interval": 100,
"frame": [
{
{
- "type": "normal",
+ "type": "notification/normal",
"interval": 50,
"frame": [
{
{
- "type": "easy_setup",
+ "type": "system/easy_setup",
"interval": 30,
"frame": [
{
{
- "type": "mic_off",
+ "type": "system/mic_off",
"interval": 100,
"frame": [
{
{
- "type": "system_processing",
+ "type": "system/processing",
"interval": 100,
"frame": [
{
{
- "type": "sw_update_done",
+ "type": "system/sw_update_done",
"interval": 30,
"frame": [
{
{
- "type": "listening",
+ "type": "voice/listening",
"interval": 70,
"frame": [
{
{
- "type": "processing",
+ "type": "voice/processing",
"interval": 100,
"frame": [
{
{
- "type": "speaking",
+ "type": "voice/speaking",
"interval": 30,
"frame": [
{
{
- "type": "streaming",
+ "type": "voice/streaming",
"interval": 30,
"frame": [
{
{
- "type": "time_out",
+ "type": "voice/timeout",
"interval": 30,
"frame": [
{
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_easysetup_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_micoff_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_swupdatedone_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_system_processing_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_listening_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_processing_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_speaking_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_streaming_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
* SOFTWARE.
*/
-#include "default_backend.h"
+#include "../default_backend.h"
static void
_ani_backend_timeout_get_led_rgb(default_frame_info_t *frame, int led_idx, unsigned int *r, unsigned int *g, unsigned int *b)
###### libpui default backend's animation data
mkdir -p %{buildroot}/%{ANIDATA_DIR}/
-cp -f backends/res/* %{buildroot}/%{ANIDATA_DIR}/
+cp -fr backends/res/* %{buildroot}/%{ANIDATA_DIR}/
%make_install
%post -n %{name} -p /sbin/ldconfig
static Eina_Array *_ecore_event_hdls = NULL;
static animation_t ani_collection[] = {
- { "easy_setup", PUI_ANI_CMD_START, -1 },
- { "system_processing", PUI_ANI_CMD_START, -1 },
- { "sw_update_done", PUI_ANI_CMD_START, -1 },
- { "mic_off", PUI_ANI_CMD_START, -1 },
- { "listening", PUI_ANI_CMD_START, -1 },
- { "streaming", PUI_ANI_CMD_START, -1 },
- { "processing", PUI_ANI_CMD_START, -1 },
- { "speaking", PUI_ANI_CMD_START, -1 },
- { "time_out", PUI_ANI_CMD_START, -1 },
- { "normal", PUI_ANI_CMD_START, -1 },
- { "emergency", PUI_ANI_CMD_START, -1 },
- { "network_error", PUI_ANI_CMD_START, -1 },
- { "error", PUI_ANI_CMD_START, -1 },
- { "alarm", PUI_ANI_CMD_START, -1 },
- { "pairing", PUI_ANI_CMD_START, -1 },
- { "connected", PUI_ANI_CMD_START, -1 }
+ { "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 },
+ { "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 },
+ { "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 },
+ { "bt/pairing", PUI_ANI_CMD_START, -1 },
+ { "bt/connected", PUI_ANI_CMD_START, -1 }
};
pui_ani_h ani_handles[sizeof(ani_collection) / sizeof(animation_t)];