2 * Copyright (c) 2011-2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <system_info.h>
22 #include "vc_command.h"
24 #include "voice_control_command.h"
25 #include "voice_control_command_expand.h"
26 #include "voice_control_common.h"
27 #include "voice_control_key_defines.h"
29 static int g_feature_enabled = -1;
31 static int __vc_cmd_get_feature_enabled()
33 if (0 == g_feature_enabled) {
34 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Voice control feature NOT supported");
35 return VC_ERROR_NOT_SUPPORTED;
36 } else if (-1 == g_feature_enabled) {
37 bool vc_supported = false;
38 bool mic_supported = false;
39 if (0 == system_info_get_platform_bool(VC_FEATURE_PATH, &vc_supported)) {
40 if (0 == system_info_get_platform_bool(VC_MIC_FEATURE_PATH, &mic_supported)) {
41 if (false == vc_supported || false == mic_supported) {
42 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Voice control feature NOT supported");
43 g_feature_enabled = 0;
44 return VC_ERROR_NOT_SUPPORTED;
47 g_feature_enabled = 1;
49 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to get feature value");
50 return VC_ERROR_NOT_SUPPORTED;
53 SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to get feature value");
54 return VC_ERROR_NOT_SUPPORTED;
61 int vc_cmd_list_create(vc_cmd_list_h* vc_cmd_list)
63 if (0 != __vc_cmd_get_feature_enabled()) {
64 return VC_ERROR_NOT_SUPPORTED;
67 if (NULL == vc_cmd_list) {
68 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
69 return VC_ERROR_INVALID_PARAMETER;
72 vc_cmd_list_s* list = (vc_cmd_list_s*)calloc(1, sizeof(vc_cmd_list_s));
75 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Not enough memory");
76 return VC_ERROR_OUT_OF_MEMORY;
82 *vc_cmd_list = (vc_cmd_list_h)list;
84 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] list(%p)", *vc_cmd_list);
89 int vc_cmd_list_destroy(vc_cmd_list_h vc_cmd_list, bool release_command)
91 if (0 != __vc_cmd_get_feature_enabled()) {
92 return VC_ERROR_NOT_SUPPORTED;
95 if (NULL == vc_cmd_list) {
96 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
97 return VC_ERROR_INVALID_PARAMETER;
100 vc_cmd_list_remove_all(vc_cmd_list, release_command);
102 vc_cmd_list_s* list = NULL;
103 list = (vc_cmd_list_s*)vc_cmd_list;
105 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] list(%p)", list);
112 return VC_ERROR_NONE;
115 int vc_cmd_list_get_count(vc_cmd_list_h vc_cmd_list, int* count)
117 if (0 != __vc_cmd_get_feature_enabled()) {
118 return VC_ERROR_NOT_SUPPORTED;
121 if (NULL == vc_cmd_list || NULL == count) {
122 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Get command count : Input parameter is NULL");
123 return VC_ERROR_INVALID_PARAMETER;
126 vc_cmd_list_s* list = NULL;
127 list = (vc_cmd_list_s*)vc_cmd_list;
129 *count = g_slist_length(list->list);
131 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] list(%p), count(%d)", list, *count);
133 return VC_ERROR_NONE;
136 int vc_cmd_list_add(vc_cmd_list_h vc_cmd_list, vc_cmd_h vc_command)
138 if (0 != __vc_cmd_get_feature_enabled()) {
139 return VC_ERROR_NOT_SUPPORTED;
142 if (NULL == vc_cmd_list || NULL == vc_command) {
143 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
144 return VC_ERROR_INVALID_PARAMETER;
147 vc_cmd_list_s* list = NULL;
148 list = (vc_cmd_list_s*)vc_cmd_list;
150 vc_cmd_s* cmd = NULL;
151 cmd = (vc_cmd_s*)vc_command;
153 list->list = g_slist_append(list->list, cmd);
155 if (1 == g_slist_length(list->list)) {
159 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] list(%p), command(%p)", list, cmd);
161 return VC_ERROR_NONE;
164 int vc_cmd_list_remove(vc_cmd_list_h vc_cmd_list, vc_cmd_h vc_command)
166 if (0 != __vc_cmd_get_feature_enabled()) {
167 return VC_ERROR_NOT_SUPPORTED;
170 if (NULL == vc_cmd_list || NULL == vc_command) {
171 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
172 return VC_ERROR_INVALID_PARAMETER;
175 vc_cmd_list_s* list = NULL;
176 list = (vc_cmd_list_s*)vc_cmd_list;
178 vc_cmd_s* cmd = NULL;
179 cmd = (vc_cmd_s*)vc_command;
181 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] list(%p), command(%p)", list, cmd);
183 vc_cmd_s* temp_cmd = NULL;
186 iter = g_slist_nth(list->list, 0);
188 while (NULL != iter) {
189 temp_cmd = iter->data;
191 if (NULL != temp_cmd && cmd == temp_cmd) {
192 list->list = g_slist_remove(list->list, temp_cmd);
194 if (true == release_command) {
195 SLOG(LOG_DEBUG, TAG_VCCMD, "Release command data");
196 if (NULL != temp_cmd->command) free(temp_cmd->command);
197 if (NULL != temp_cmd->parameter) free(temp_cmd->parameter);
204 iter = g_slist_next(iter);
207 int count = g_slist_length(list->list);
211 } else if (list->index == count) {
212 list->index = count - 1;
215 return VC_ERROR_NONE;
218 int vc_cmd_list_remove_all(vc_cmd_list_h vc_cmd_list, bool release_command)
220 if (0 != __vc_cmd_get_feature_enabled()) {
221 return VC_ERROR_NOT_SUPPORTED;
224 SLOG(LOG_DEBUG, TAG_VCCMD, "===== Destroy all command");
226 if (NULL == vc_cmd_list) {
227 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
228 return VC_ERROR_INVALID_PARAMETER;
231 vc_cmd_list_s* list = NULL;
232 list = (vc_cmd_list_s*)vc_cmd_list;
234 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] list (%p), release command (%s)"
235 , list, release_command ? "true" : "false");
237 int count = g_slist_length(list->list);
242 for (i = 0; i < count ; i++) {
243 temp_cmd = g_slist_nth_data(list->list, 0);
245 if (NULL != temp_cmd) {
246 list->list = g_slist_remove(list->list, temp_cmd);
248 if (true == release_command) {
249 SLOG(LOG_DEBUG, TAG_VCCMD, "Free command(%p)", temp_cmd);
250 if (NULL != temp_cmd->command) free(temp_cmd->command);
251 if (NULL != temp_cmd->parameter) free(temp_cmd->parameter);
260 SLOG(LOG_DEBUG, TAG_VCCMD, "=====");
261 SLOG(LOG_DEBUG, TAG_VCCMD, " ");
263 return VC_ERROR_NONE;
266 int vc_cmd_list_foreach_commands(vc_cmd_list_h vc_cmd_list, vc_cmd_list_cb callback, void* user_data)
268 if (0 != __vc_cmd_get_feature_enabled()) {
269 return VC_ERROR_NOT_SUPPORTED;
272 if (NULL == vc_cmd_list) {
273 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
274 return VC_ERROR_INVALID_PARAMETER;
277 vc_cmd_list_s* list = NULL;
278 list = (vc_cmd_list_s*)vc_cmd_list;
280 int count = g_slist_length(list->list);
286 iter = g_slist_nth(list->list, 0);
288 for (i = 0; i < count; i++) {
289 temp_cmd = iter->data;
291 if (NULL != temp_cmd) {
292 if (false == callback((vc_cmd_h)temp_cmd, user_data)) {
297 iter = g_slist_next(iter);
300 SLOG(LOG_DEBUG, TAG_VCCMD, "===== Foreach commands Done");
302 return VC_ERROR_NONE;
305 int vc_cmd_list_filter_by_type(vc_cmd_list_h original, int type, vc_cmd_list_h* filtered)
307 SLOG(LOG_DEBUG, TAG_VCCMD, "===== Filter by type");
309 if (0 != __vc_cmd_get_feature_enabled()) {
310 return VC_ERROR_NOT_SUPPORTED;
313 if (NULL == original) {
314 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
315 return VC_ERROR_INVALID_PARAMETER;
318 if (VC_COMMAND_TYPE_NONE >= type || VC_COMMAND_TYPE_EXCLUSIVE < type) {
319 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid type");
320 return VC_ERROR_INVALID_PARAMETER;
323 vc_cmd_list_s* list = NULL;
324 list = (vc_cmd_list_s*)original;
326 vc_cmd_list_h temp_list;
327 if (0 != vc_cmd_list_create(&temp_list)) {
328 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Fail to list create");
329 return VC_ERROR_OPERATION_FAILED;
332 int count = g_slist_length(list->list);
338 iter = g_slist_nth(list->list, 0);
340 for (i = 0; i < count; i++) {
341 if (NULL != iter->data) {
342 iter_cmd = iter->data;
344 if (NULL != iter_cmd) {
346 if (0 != vc_cmd_get_type((vc_cmd_h)iter_cmd, &iter_type)) {
347 SLOG(LOG_ERROR,TAG_VCCMD, "[ERROR] Fail to get command type");
351 if (iter_type == type) {
353 if (0 != vc_cmd_create(&temp_cmd)) {
354 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Fail to create cmd");
358 memcpy(temp_cmd, iter_cmd, sizeof(vc_cmd_s));
359 if (NULL != iter_cmd->command) {
360 ((vc_cmd_s*)temp_cmd)->command = strdup(iter_cmd->command);
362 if (NULL != iter_cmd->parameter) {
363 ((vc_cmd_s*)temp_cmd)->parameter = strdup(iter_cmd->parameter);
366 if (0 != vc_cmd_list_add(temp_list, temp_cmd)) {
367 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Fail to cmd list add");
368 vc_cmd_destroy(temp_cmd);
374 iter = g_slist_next(iter);
378 if (0 != vc_cmd_list_get_count(temp_list, &count)) {
379 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Fail to get count");
381 SLOG(LOG_DEBUG, TAG_VCCMD, "Filtering result : (%d) command", count);
384 *filtered = temp_list;
386 SLOG(LOG_DEBUG, TAG_VCCMD, "=====");
388 return VC_ERROR_NONE;
391 int vc_cmd_list_first(vc_cmd_list_h vc_cmd_list)
393 if (0 != __vc_cmd_get_feature_enabled()) {
394 return VC_ERROR_NOT_SUPPORTED;
397 if (NULL == vc_cmd_list) {
398 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
399 return VC_ERROR_INVALID_PARAMETER;
402 vc_cmd_list_s* list = NULL;
403 list = (vc_cmd_list_s*)vc_cmd_list;
405 if (0 == g_slist_length(list->list)) {
406 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] List is empty");
407 return VC_ERROR_EMPTY;
412 return VC_ERROR_NONE;
415 int vc_cmd_list_last(vc_cmd_list_h vc_cmd_list)
417 if (0 != __vc_cmd_get_feature_enabled()) {
418 return VC_ERROR_NOT_SUPPORTED;
421 if (NULL == vc_cmd_list) {
422 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
423 return VC_ERROR_INVALID_PARAMETER;
426 vc_cmd_list_s* list = NULL;
427 list = (vc_cmd_list_s*)vc_cmd_list;
429 int count = g_slist_length(list->list);
432 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] List is empty");
433 return VC_ERROR_EMPTY;
435 list->index = count - 1;
436 SLOG(LOG_DEBUG, TAG_VCCMD, "[DEBUG] List index : %d", list->index);
439 return VC_ERROR_NONE;
442 int vc_cmd_list_next(vc_cmd_list_h vc_cmd_list)
444 if (0 != __vc_cmd_get_feature_enabled()) {
445 return VC_ERROR_NOT_SUPPORTED;
448 if (NULL == vc_cmd_list) {
449 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
450 return VC_ERROR_INVALID_PARAMETER;
453 vc_cmd_list_s* list = NULL;
454 list = (vc_cmd_list_s*)vc_cmd_list;
456 int count = g_slist_length(list->list);
458 if (list->index < count - 1) {
459 list->index = list->index + 1;
460 SLOG(LOG_DEBUG, TAG_VCCMD, "[DEBUG] List index : %d", list->index);
462 SLOG(LOG_DEBUG, TAG_VCCMD, "[DEBUG] List index : %d", list->index);
463 return VC_ERROR_ITERATION_END;
466 return VC_ERROR_NONE;
469 int vc_cmd_list_prev(vc_cmd_list_h vc_cmd_list)
471 if (0 != __vc_cmd_get_feature_enabled()) {
472 return VC_ERROR_NOT_SUPPORTED;
475 if (NULL == vc_cmd_list) {
476 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
477 return VC_ERROR_INVALID_PARAMETER;
480 vc_cmd_list_s* list = NULL;
481 list = (vc_cmd_list_s*)vc_cmd_list;
483 if (list->index > 0) {
484 list->index = list->index - 1;
485 SLOG(LOG_DEBUG, TAG_VCCMD, "[DEBUG] List index : %d", list->index);
487 SLOG(LOG_DEBUG, TAG_VCCMD, "[DEBUG] List index : %d", list->index);
488 return VC_ERROR_ITERATION_END;
491 return VC_ERROR_NONE;
494 int vc_cmd_list_get_current(vc_cmd_list_h vc_cmd_list, vc_cmd_h* vc_command)
496 if (0 != __vc_cmd_get_feature_enabled()) {
497 return VC_ERROR_NOT_SUPPORTED;
500 if (NULL == vc_cmd_list || NULL == vc_command) {
501 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
502 return VC_ERROR_INVALID_PARAMETER;
505 vc_cmd_list_s* list = NULL;
506 list = (vc_cmd_list_s*)vc_cmd_list;
508 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] list (%p), index (%d)", list, list->index);
510 if (0 == g_slist_length(list->list)) {
511 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] list is empty");
513 return VC_ERROR_EMPTY;
516 vc_cmd_s *temp_cmd = NULL;
517 temp_cmd = g_slist_nth_data(list->list, list->index);
519 *vc_command = (vc_cmd_h)temp_cmd;
521 SLOG(LOG_DEBUG, TAG_VCCMD, "[List] Get current command (%p)", *vc_command);
523 return VC_ERROR_NONE;
527 int vc_cmd_create(vc_cmd_h* vc_command)
529 if (0 != __vc_cmd_get_feature_enabled()) {
530 return VC_ERROR_NOT_SUPPORTED;
533 if (NULL == vc_command) {
534 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
535 return VC_ERROR_INVALID_PARAMETER;
538 vc_cmd_s* command = (vc_cmd_s*)calloc(1, sizeof(vc_cmd_s));
540 if (NULL == command) {
541 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Not enough memory");
542 return VC_ERROR_OUT_OF_MEMORY;
548 command->type = VC_COMMAND_TYPE_NONE;
549 command->format = VC_CMD_FORMAT_FIXED;
550 command->command = NULL;
551 command->parameter = NULL;
553 command->key = VC_KEY_NONE;
554 command->modifier = VC_MODIFIER_NONE;
556 *vc_command = (vc_cmd_h)command;
558 SLOG(LOG_DEBUG, TAG_VCCMD, "[Create command][%p]", *vc_command);
560 return VC_ERROR_NONE;
563 int vc_cmd_destroy(vc_cmd_h vc_command)
565 if (0 != __vc_cmd_get_feature_enabled()) {
566 return VC_ERROR_NOT_SUPPORTED;
569 if (NULL == vc_command) {
570 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Input parameter is NULL");
571 return VC_ERROR_INVALID_PARAMETER;
574 vc_cmd_s* command = NULL;
575 command = (vc_cmd_s*)vc_command;
577 SLOG(LOG_DEBUG, TAG_VCCMD, "[Destroy command][%p]", command);
579 if (NULL != command) {
580 if (NULL != command->command) free(command->command);
581 if (NULL != command->parameter) free(command->parameter);
586 return VC_ERROR_NONE;
589 int vc_cmd_set_id(vc_cmd_h vc_command, int id)
591 if (0 != __vc_cmd_get_feature_enabled()) {
592 return VC_ERROR_NOT_SUPPORTED;
595 if (NULL == vc_command) {
596 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
597 return VC_ERROR_INVALID_PARAMETER;
600 vc_cmd_s* cmd = NULL;
601 cmd = (vc_cmd_s*)vc_command;
605 SLOG(LOG_DEBUG, TAG_VCCMD, "[Set id][%p] id(%d)", vc_command, cmd->id);
611 int vc_cmd_get_id(vc_cmd_h vc_command, int* id)
613 if (0 != __vc_cmd_get_feature_enabled()) {
614 return VC_ERROR_NOT_SUPPORTED;
617 if (NULL == vc_command || NULL == id) {
618 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid handle ");
619 return VC_ERROR_INVALID_PARAMETER;
622 vc_cmd_s* cmd = NULL;
623 cmd = (vc_cmd_s*)vc_command;
627 SLOG(LOG_DEBUG, TAG_VCCMD, "[Get id][%p] id(%d)", vc_command, *id);
633 int vc_cmd_set_command(vc_cmd_h vc_command, const char* command)
635 if (0 != __vc_cmd_get_feature_enabled()) {
636 return VC_ERROR_NOT_SUPPORTED;
639 if (NULL == vc_command) {
640 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
641 return VC_ERROR_INVALID_PARAMETER;
644 vc_cmd_s* cmd = NULL;
645 cmd = (vc_cmd_s*)vc_command;
647 if (NULL != cmd->command) {
653 if (NULL != command) {
654 cmd->command = strdup(command);
657 SLOG(LOG_DEBUG, TAG_VCCMD, "[Set command][%p] Command(%s)", vc_command, cmd->command);
662 int vc_cmd_get_command(vc_cmd_h vc_command, char** command)
664 if (0 != __vc_cmd_get_feature_enabled()) {
665 return VC_ERROR_NOT_SUPPORTED;
668 if (NULL == vc_command || NULL == command) {
669 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid handle ");
670 return VC_ERROR_INVALID_PARAMETER;
673 vc_cmd_s* cmd = NULL;
674 cmd = (vc_cmd_s*)vc_command;
676 if (NULL != cmd->command) {
677 *command = strdup(gettext(cmd->command));
680 SLOG(LOG_DEBUG, TAG_VCCMD, "[Get command][%p] Command(%s)", vc_command, *command);
685 int vc_cmd_set_unfixed_command(vc_cmd_h vc_command, const char* command)
687 if (0 != __vc_cmd_get_feature_enabled()) {
688 return VC_ERROR_NOT_SUPPORTED;
691 if (NULL == vc_command) {
692 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
693 return VC_ERROR_INVALID_PARAMETER;
696 vc_cmd_s* cmd = NULL;
697 cmd = (vc_cmd_s*)vc_command;
699 if (NULL != cmd->parameter) {
700 free(cmd->parameter);
703 cmd->parameter = NULL;
705 if (NULL != command) {
706 cmd->parameter = strdup(command);
707 SLOG(LOG_DEBUG, TAG_VCCMD, "[Set parameter][%p] parameter(%s)", vc_command, cmd->parameter);
713 int vc_cmd_get_unfixed_command(vc_cmd_h vc_command, char** command)
715 if (0 != __vc_cmd_get_feature_enabled()) {
716 return VC_ERROR_NOT_SUPPORTED;
719 if (NULL == vc_command || NULL == command) {
720 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid handle ");
721 return VC_ERROR_INVALID_PARAMETER;
724 vc_cmd_s* cmd = NULL;
725 cmd = (vc_cmd_s*)vc_command;
727 if (NULL != cmd->parameter) {
728 *command = strdup(gettext(cmd->parameter));
729 SLOG(LOG_DEBUG, TAG_VCCMD, "[Get nonfixed command][%p] nonfixed command(%s)", vc_command, *command);
735 int vc_cmd_set_type(vc_cmd_h vc_command, int type)
737 if (0 != __vc_cmd_get_feature_enabled()) {
738 return VC_ERROR_NOT_SUPPORTED;
741 if (NULL == vc_command) {
742 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
743 return VC_ERROR_INVALID_PARAMETER;
746 vc_cmd_s* cmd = NULL;
747 cmd = (vc_cmd_s*)vc_command;
751 SLOG(LOG_DEBUG, TAG_VCCMD, "[Set type][%p] type(%d)", vc_command, cmd->type);
756 int vc_cmd_get_type(vc_cmd_h vc_command, int* type)
758 if (0 != __vc_cmd_get_feature_enabled()) {
759 return VC_ERROR_NOT_SUPPORTED;
762 if (NULL == vc_command || NULL == type) {
763 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
764 return VC_ERROR_INVALID_PARAMETER;
767 vc_cmd_s* cmd = NULL;
768 cmd = (vc_cmd_s*)vc_command;
772 SLOG(LOG_DEBUG, TAG_VCCMD, "[Get type][%p] type(%d)", vc_command, *type);
777 int vc_cmd_set_format(vc_cmd_h vc_command, vc_cmd_format_e format)
779 if (0 != __vc_cmd_get_feature_enabled()) {
780 return VC_ERROR_NOT_SUPPORTED;
783 if (NULL == vc_command) {
784 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
785 return VC_ERROR_INVALID_PARAMETER;
788 vc_cmd_s* cmd = NULL;
789 cmd = (vc_cmd_s*)vc_command;
791 cmd->format = format;
793 SLOG(LOG_DEBUG, TAG_VCCMD, "[Set format][%p] format(%d)", vc_command, format);
798 int vc_cmd_get_format(vc_cmd_h vc_command, vc_cmd_format_e* format)
800 if (0 != __vc_cmd_get_feature_enabled()) {
801 return VC_ERROR_NOT_SUPPORTED;
804 if (NULL == vc_command || NULL == format) {
805 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
806 return VC_ERROR_INVALID_PARAMETER;
809 vc_cmd_s* cmd = NULL;
810 cmd = (vc_cmd_s*)vc_command;
812 *format = cmd->format;
814 SLOG(LOG_DEBUG, TAG_VCCMD, "[Get format][%p] format(%d)", vc_command, *format);
819 int vc_cmd_set_pid(vc_cmd_h vc_command, int pid)
821 if (0 != __vc_cmd_get_feature_enabled()) {
822 return VC_ERROR_NOT_SUPPORTED;
825 if (NULL == vc_command) {
826 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
827 return VC_ERROR_INVALID_PARAMETER;
830 vc_cmd_s* cmd = NULL;
831 cmd = (vc_cmd_s*)vc_command;
835 SLOG(LOG_DEBUG, TAG_VCCMD, "[Set pid][%p] pid(%d)", vc_command, cmd->pid);
840 int vc_cmd_get_pid(vc_cmd_h vc_command, int* pid)
842 if (0 != __vc_cmd_get_feature_enabled()) {
843 return VC_ERROR_NOT_SUPPORTED;
846 if (NULL == vc_command || NULL == pid) {
847 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
848 return VC_ERROR_INVALID_PARAMETER;
851 vc_cmd_s* cmd = NULL;
852 cmd = (vc_cmd_s*)vc_command;
856 SLOG(LOG_DEBUG, TAG_VCCMD, "[Get pid][%p] pid(%d)", vc_command, *pid);
861 int vc_cmd_set_domain(vc_cmd_h vc_command, int domain)
863 if (0 != __vc_cmd_get_feature_enabled()) {
864 return VC_ERROR_NOT_SUPPORTED;
867 if (NULL == vc_command) {
868 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
869 return VC_ERROR_INVALID_PARAMETER;
872 vc_cmd_s* cmd = NULL;
873 cmd = (vc_cmd_s*)vc_command;
875 cmd->domain = domain;
877 SLOG(LOG_DEBUG, TAG_VCCMD, "[Set domain] domain : %d", domain);
882 int vc_cmd_get_domain(vc_cmd_h vc_command, int* domain)
884 if (0 != __vc_cmd_get_feature_enabled()) {
885 return VC_ERROR_NOT_SUPPORTED;
888 if (NULL == vc_command || NULL == domain) {
889 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
890 return VC_ERROR_INVALID_PARAMETER;
893 vc_cmd_s* cmd = NULL;
894 cmd = (vc_cmd_s*)vc_command;
896 *domain = cmd->domain;
898 SLOG(LOG_DEBUG, TAG_VCCMD, "[Get domain] domain : %d", *domain);
904 * @brief Sets key value of command.
906 * @param[in] vc_command Command handle
907 * @param[in] key key value
908 * @param[in] modifier modifier value
910 * @return 0 on success, otherwise a negative error value
911 * @retval #VC_ERROR_NONE Successful
912 * @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
914 * @see vc_cmd_get_result_key()
916 int vc_cmd_set_result_key(vc_cmd_h vc_command, int key, int modifier)
918 SLOG(LOG_DEBUG, TAG_VCCMD, "===== Set result key");
920 if (NULL == vc_command) {
921 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
922 return VC_ERROR_INVALID_PARAMETER;
925 vc_cmd_s* cmd = NULL;
926 cmd = (vc_cmd_s*)vc_command;
928 SLOG(LOG_DEBUG, TAG_VCCMD, "key : %d, modifier : %d", key, modifier);
931 cmd->modifier = modifier;
933 SLOG(LOG_DEBUG, TAG_VCCMD, "=====");
934 SLOG(LOG_DEBUG, TAG_VCCMD, " ");
940 * @brief Gets key value of command.
942 * @param[in] vc_command Command handle
943 * @param[out] key key value
944 * @param[out] modifier modifier value
946 * @return 0 on success, otherwise a negative error value
947 * @retval #VC_ERROR_NONE Successful
948 * @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
950 * @see vc_cmd_add_result_key()
952 int vc_cmd_get_result_key(vc_cmd_h vc_command, int* key, int* modifier)
954 SLOG(LOG_DEBUG, TAG_VCCMD, "===== Get result key");
956 if (NULL == vc_command || NULL == key || NULL == modifier) {
957 SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] Invalid parameter ");
958 return VC_ERROR_INVALID_PARAMETER;
961 vc_cmd_s* cmd = NULL;
962 cmd = (vc_cmd_s*)vc_command;
965 *modifier = cmd->modifier;
967 SLOG(LOG_DEBUG, TAG_VCCMD, "=====");
968 SLOG(LOG_DEBUG, TAG_VCCMD, " ");
973 int vc_cmd_print_list(vc_cmd_list_h vc_cmd_list)
975 if (NULL == vc_cmd_list) {
979 vc_cmd_list_s* list = NULL;
980 list = (vc_cmd_list_s*)vc_cmd_list;
982 SLOG(LOG_DEBUG, TAG_VCCMD, "=== Command List ===");
983 SLOG(LOG_DEBUG, TAG_VCCMD, "[List][%p]", list);
985 int count = g_slist_length(list->list);
988 vc_cmd_s *temp_cmd = NULL;
990 for (i = 0; i < count ; i++) {
991 temp_cmd = g_slist_nth_data(list->list, i);
993 if (NULL != temp_cmd) {
994 SLOG(LOG_DEBUG, TAG_VCCMD, " [%d][%p] PID(%d) ID(%d) Type(%d) Format(%d) Domain(%d) Command(%s) Param(%s)",
995 i, temp_cmd, temp_cmd->pid, temp_cmd->index, temp_cmd->type, temp_cmd->format, temp_cmd->domain, temp_cmd->command, temp_cmd->parameter);
999 SLOG(LOG_DEBUG, TAG_VCCMD, "==================");
1000 SLOG(LOG_DEBUG, TAG_VCCMD, " ");