2 * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd All Rights Reserved
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 * http://www.apache.org/licenses/LICENSE-2.0
7 * Unless required by applicable law or agreed to in writing, software
8 * distributed under the License is distributed on an "AS IS" BASIS,
9 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 * See the License for the specific language governing permissions and
11 * limitations under the License.
15 #include "sttd_main.h"
16 #include "sttd_client_data.h"
19 static GList *g_client_list = NULL;
21 static GList *g_setting_client_list = NULL;
23 int client_show_list()
26 client_info_s *data = NULL;
28 SLOG(LOG_DEBUG, TAG_STTD, "----- client list");
30 if (g_list_length(g_client_list) > 0) {
31 /* Get a first item */
32 iter = g_list_first(g_client_list);
35 while (NULL != iter) {
36 /*Get handle data from list*/
39 SLOG(LOG_DEBUG, TAG_STTD, "[%dth] uid(%d), state(%d)", i, data->uid, data->state);
42 iter = g_list_next(iter);
46 SLOG(LOG_DEBUG, TAG_STTD, "No Client");
49 SLOG(LOG_DEBUG, TAG_STTD, "-----");
51 SLOG(LOG_DEBUG, TAG_STTD, "----- setting client list");
53 setting_client_info_s *setting_data = NULL;
55 if (g_list_length(g_setting_client_list) > 0) {
56 /* Get a first item */
57 iter = g_list_first(g_setting_client_list);
60 while (NULL != iter) {
61 /*Get handle data from list*/
62 setting_data = iter->data;
64 SLOG(LOG_DEBUG, TAG_STTD, "[%dth] pid(%d)", i, setting_data->pid);
67 iter = g_list_next(iter);
71 SLOG(LOG_DEBUG, TAG_STTD, "No setting client");
74 SLOG(LOG_DEBUG, TAG_STTD, "-----");
79 GList* __client_get_item(const int uid)
82 client_info_s *data = NULL;
84 if (0 < g_list_length(g_client_list)) {
85 iter = g_list_first(g_client_list);
87 while (NULL != iter) {
88 /* Get handle data from list */
94 iter = g_list_next(iter);
101 int sttd_client_add(const int pid, const int uid)
103 /*Check uid is duplicated*/
105 tmp = __client_get_item(uid);
108 SLOG(LOG_WARN, TAG_STTD, "[Client Data] Client uid is already registered");
109 return STTD_ERROR_INVALID_PARAMETER;
112 client_info_s *info = (client_info_s*)g_malloc0(sizeof(client_info_s));
116 info->state = APP_STATE_READY;
118 /* Add item to global list */
119 g_client_list = g_list_append(g_client_list, info);
121 if (NULL == g_client_list) {
122 SLOG(LOG_ERROR, TAG_STTD, "[Client Data ERROR] Fail to add new client");
125 SLOG(LOG_DEBUG, TAG_STTD, "[Client Data SUCCESS] Add new client");
128 #ifdef CLIENT_DATA_DEBUG
134 int sttd_client_delete(const int uid)
137 client_info_s* hnd = NULL;
140 tmp = __client_get_item(uid);
142 SLOG(LOG_ERROR, TAG_STTD, "[Client Data ERROR] uid(%d) is NOT valid", uid);
143 return STTD_ERROR_INVALID_PARAMETER;
146 /*Free client structure*/
152 /*Remove handle from list*/
153 g_client_list = g_list_remove_link(g_client_list, tmp);
155 #ifdef CLIENT_DATA_DEBUG
162 int sttd_client_get_state(const int uid, app_state_e* state)
165 client_info_s* hnd = NULL;
167 tmp = __client_get_item(uid);
169 return STTD_ERROR_INVALID_PARAMETER;
175 SLOG(LOG_DEBUG, TAG_STTD, "[Client Data] Get state : uid(%d), state(%d)", uid, *state);
180 int sttd_client_set_state(const int uid, const app_state_e state)
183 client_info_s* hnd = NULL;
185 tmp = __client_get_item(uid);
187 SLOG(LOG_ERROR, TAG_STTD, "[Client Data ERROR] uid(%d) is NOT valid", uid);
188 return STTD_ERROR_INVALID_PARAMETER;
194 SLOG(LOG_DEBUG, TAG_STTD, "[Client Data SUCCESS] Set state : uid(%d), state(%d)", uid, state);
199 int sttd_client_get_ref_count()
201 int count = g_list_length(g_client_list) + g_list_length(g_setting_client_list);
202 SLOG(LOG_DEBUG, TAG_STTD, "[Client Data] client count : %d", count);
207 int sttd_client_get_pid(const int uid)
210 client_info_s* hnd = NULL;
212 tmp = __client_get_item(uid);
214 SLOG(LOG_ERROR, TAG_STTD, "[Client Data ERROR] sttd_client_get_pid : uid(%d) is not found", uid);
215 return STTD_ERROR_INVALID_PARAMETER;
223 int sttd_client_get_current_recording()
226 client_info_s *data = NULL;
228 if (0 < g_list_length(g_client_list)) {
229 iter = g_list_first(g_client_list);
231 while (NULL != iter) {
232 /* Get handle data from list */
235 if (APP_STATE_RECORDING == data->state)
238 iter = g_list_next(iter);
245 int sttd_client_get_current_thinking()
248 client_info_s *data = NULL;
250 if (0 < g_list_length(g_client_list)) {
251 iter = g_list_first(g_client_list);
253 while (NULL != iter) {
254 /* Get handle data from list */
257 if (APP_STATE_PROCESSING == data->state)
260 iter = g_list_next(iter);
267 int sttd_cliet_set_timer(int uid, Ecore_Timer* timer)
270 client_info_s* hnd = NULL;
272 tmp = __client_get_item(uid);
274 SLOG(LOG_ERROR, TAG_STTD, "[Client Data ERROR] uid(%d) is NOT valid", uid);
275 return STTD_ERROR_INVALID_PARAMETER;
281 SLOG(LOG_DEBUG, TAG_STTD, "[Client Data SUCCESS] Set timer : uid(%d)", uid);
286 int sttd_cliet_get_timer(int uid, Ecore_Timer** timer)
289 client_info_s* hnd = NULL;
291 tmp = __client_get_item(uid);
293 SLOG(LOG_ERROR, TAG_STTD, "[Client Data ERROR] uid(%d) is NOT valid", uid);
294 return STTD_ERROR_INVALID_PARAMETER;
300 SLOG(LOG_DEBUG, TAG_STTD, "[Client Data SUCCESS] Get timer : uid(%d)", uid);
306 int sttd_client_get_list(int** uids, int* uid_count)
308 if (NULL == uids || NULL == uid_count)
311 int count = g_list_length(g_client_list);
317 tmp = (int*)malloc(sizeof(int) * count);
320 client_info_s *data = NULL;
323 iter = g_list_first(g_client_list);
324 for (i = 0;i < count;i++) {
327 iter = g_list_next(iter);
337 * Functions for setting
340 GList* __setting_client_get_item(int pid)
343 setting_client_info_s *data = NULL;
345 if (0 < g_list_length(g_setting_client_list)) {
346 iter = g_list_first(g_setting_client_list);
348 while (NULL != iter) {
349 /* Get handle data from list */
352 if (pid == data->pid)
355 iter = g_list_next(iter);
362 int sttd_setting_client_add(int pid)
364 /* Check uid is duplicated */
366 tmp = __setting_client_get_item(pid);
369 SLOG(LOG_WARN, TAG_STTD, "[Client Data] Setting client(%d) is already registered", pid);
370 return STTD_ERROR_INVALID_PARAMETER;
373 setting_client_info_s *info = (setting_client_info_s*)g_malloc0(sizeof(setting_client_info_s));
377 /* Add item to global list */
378 g_setting_client_list = g_list_append(g_setting_client_list, info);
380 if (NULL == g_setting_client_list) {
381 SLOG(LOG_ERROR, TAG_STTD, "[Client Data ERROR] Fail to add new client");
384 SLOG(LOG_DEBUG, TAG_STTD, "[Client Data SUCCESS] Add new client");
387 #ifdef CLIENT_DATA_DEBUG
393 int sttd_setting_client_delete(int pid)
396 setting_client_info_s* hnd = NULL;
399 tmp = __setting_client_get_item(pid);
401 SLOG(LOG_ERROR, TAG_STTD, "[Client Data ERROR] Setting uid(%d) is NOT valid", pid);
402 return STTD_ERROR_INVALID_PARAMETER;
405 /*Free client structure*/
411 /*Remove handle from list*/
412 g_setting_client_list = g_list_remove_link(g_setting_client_list, tmp);
414 #ifdef CLIENT_DATA_DEBUG
421 bool sttd_setting_client_is(int pid)
423 GList *tmp = __setting_client_get_item(pid);