Add voice-control-manager APIs in public 40/147140/16 accepted/tizen/unified/20180430.072130 submit/tizen/20180427.085447
authorsooyeon.kim <sooyeon.kim@samsung.com>
Fri, 1 Sep 2017 06:39:18 +0000 (15:39 +0900)
committersooyeon.kim <sooyeon.kim@samsung.com>
Fri, 27 Apr 2018 06:58:05 +0000 (15:58 +0900)
Change-Id: If1ab3468641ca2e2c92ed089120d2bea8afe9770
Signed-off-by: sooyeon.kim <sooyeon.kim@samsung.com>
client/vc_mgr.c
common/vc_defs.h
doc/uix_vc_mgr_doc.h [new file with mode: 0644]
include/CMakeLists.txt
include/voice_control_internal.h
include/voice_control_manager.h
include/voice_control_manager_internal.h [new file with mode: 0644]
include/voice_control_widget.h
packaging/voice-control.spec

index 9610204..e56205e 100644 (file)
@@ -16,6 +16,9 @@
 
 #include <aul.h>
 #include <system_info.h>
+#include <cynara-client.h>
+#include <cynara-error.h>
+#include <cynara-session.h>
 
 #include "vc_cmd_db.h"
 #include "vc_config_mgr.h"
@@ -30,6 +33,7 @@
 #include "voice_control_command_expand.h"
 #include "voice_control_common.h"
 #include "voice_control_manager.h"
+#include "voice_control_manager_internal.h"
 
 
 #define VC_MANAGER_CONFIG_HANDLE       100000
@@ -52,6 +56,9 @@ static int g_daemon_pid = 0;
 
 static int g_feature_enabled = -1;
 
+static int g_privilege_allowed = -1;
+static cynara *p_cynara = NULL;
+
 static bool g_err_callback_status = false;
 
 static Eina_Bool __vc_mgr_notify_state_changed(void *data);
@@ -121,7 +128,88 @@ static int __vc_mgr_get_feature_enabled()
        return 0;
 }
 
-int vc_mgr_initialize()
+static int __check_privilege_initialize()
+{
+       int ret = cynara_initialize(&p_cynara, NULL);
+       if (CYNARA_API_SUCCESS != ret)
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] fail to initialize");
+
+       return ret == CYNARA_API_SUCCESS;
+}
+
+static int __check_privilege(const char* uid, const char * privilege)
+{
+       FILE *fp = NULL;
+       char label_path[1024] = "/proc/self/attr/current";
+       char smack_label[1024] = {'\0',};
+
+       if (!p_cynara) {
+               return false;
+       }
+
+       fp = fopen(label_path, "r");
+       if (fp != NULL) {
+               if (fread(smack_label, 1, sizeof(smack_label), fp) <= 0)
+                       SLOG(LOG_ERROR, TAG_VCM, "[ERROR] fail to fread");
+
+               fclose(fp);
+       }
+
+       pid_t pid = getpid();
+       char *session = cynara_session_from_pid(pid);
+       int ret = cynara_check(p_cynara, smack_label, session, uid, privilege);
+       SLOG(LOG_DEBUG, TAG_VCM, "[Client]cynara_check returned %d(%s)", ret, (CYNARA_API_ACCESS_ALLOWED == ret) ? "Allowed" : "Denied");
+       if (session)
+               free(session);
+
+       if (ret != CYNARA_API_ACCESS_ALLOWED)
+               return false;
+
+       return true;
+}
+
+static void __check_privilege_deinitialize()
+{
+       if (p_cynara)
+               cynara_finish(p_cynara);
+       p_cynara = NULL;
+}
+
+static int __vc_mgr_check_privilege()
+{
+       char uid[16];
+
+       if (0 == g_privilege_allowed) {
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Permission is denied");
+               return VC_ERROR_PERMISSION_DENIED;
+       } else if (-1 == g_privilege_allowed) {
+               if (false == __check_privilege_initialize()) {
+                       SLOG(LOG_ERROR, TAG_VCM, "[ERROR] privilege initialize is failed");
+                       return VC_ERROR_PERMISSION_DENIED;
+               }
+               snprintf(uid, 16, "%d", getuid());
+               /* check 'recorder' privilege */
+               if (false == __check_privilege(uid, VC_PRIVILEGE)) {
+                       SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Permission is denied(%s)", VC_PRIVILEGE);
+                       g_privilege_allowed = 0;
+                       __check_privilege_deinitialize();
+                       return VC_ERROR_PERMISSION_DENIED;
+               }
+               /* check 'voicecontrol.manager' privilege */
+               if (false == __check_privilege(uid, VC_MGR_PRIVILEGE)) {
+                       SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Permission is denied(%s)", VC_MGR_PRIVILEGE);
+                       g_privilege_allowed = 0;
+                       __check_privilege_deinitialize();
+                       return VC_ERROR_PERMISSION_DENIED;
+               }
+               __check_privilege_deinitialize();
+       }
+
+       g_privilege_allowed = 1;
+       return VC_ERROR_NONE;
+}
+
+int vc_mgr_initialize(void)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Initialize");
 
@@ -131,6 +219,10 @@ int vc_mgr_initialize()
                return VC_ERROR_NOT_SUPPORTED;
        }
 
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        /* check handle */
        if (true == vc_mgr_client_is_valid(g_vc_m)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Already initialized");
@@ -188,10 +280,19 @@ static void __vc_mgr_internal_unprepare()
        return;
 }
 
-int vc_mgr_deinitialize()
+int vc_mgr_deinitialize(void)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Deinitialize");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (false == vc_mgr_client_is_valid(g_vc_m)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] NOT initialized");
                SLOG(LOG_DEBUG, TAG_VCM, "@@@");
@@ -352,10 +453,19 @@ static void __end_prepare_thread(void *data, Ecore_Thread *thread)
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ End prepare thread");
 }
 
-int vc_mgr_prepare()
+int vc_mgr_prepare(void)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Prepare");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -377,10 +487,19 @@ int vc_mgr_prepare()
        return VC_ERROR_NONE;
 }
 
-int vc_mgr_unprepare()
+int vc_mgr_unprepare(void)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Unprepare");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -409,6 +528,15 @@ int vc_mgr_foreach_supported_languages(vc_supported_language_cb callback, void*
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Foreach Supported Language");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Input parameter is NULL");
                SLOG(LOG_DEBUG, TAG_VCM, "@@@");
@@ -436,6 +564,15 @@ int vc_mgr_foreach_supported_languages(vc_supported_language_cb callback, void*
 
 int vc_mgr_get_current_language(char** language)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == language) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Input parameter is NULL");
                return VC_ERROR_INVALID_PARAMETER;
@@ -463,6 +600,15 @@ int vc_mgr_get_state(vc_state_e* state)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Get State");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == state) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Input parameter is NULL");
                return VC_ERROR_INVALID_PARAMETER;
@@ -493,6 +639,15 @@ int vc_mgr_get_service_state(vc_service_state_e* state)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Get Service State");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == state) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Input parameter is NULL");
                return VC_ERROR_INVALID_PARAMETER;
@@ -536,6 +691,15 @@ int vc_mgr_set_demandable_client_rule(const char* rule)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Set Demandable client rule");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -568,8 +732,17 @@ int vc_mgr_set_demandable_client_rule(const char* rule)
        return 0;
 }
 
-int vc_mgr_unset_demandable_client_rule()
+int vc_mgr_unset_demandable_client_rule(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_info_parser_set_demandable_client(NULL);
 
        int count = 0;
@@ -599,6 +772,15 @@ int vc_mgr_is_command_format_supported(vc_cmd_format_e format, bool* support)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Is command type supported");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == support) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid parameter, support is NULL ptr");
                return VC_ERROR_INVALID_PARAMETER;
@@ -637,8 +819,17 @@ int vc_mgr_enable_command_type(int cmd_type)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Enable Command Type, cmd_type(%d)", cmd_type);
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (VC_COMMAND_TYPE_FOREGROUND > cmd_type || VC_COMMAND_TYPE_EXCLUSIVE < cmd_type) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] cmd type is not valid, (%d)", cmd_type);
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] cmd_type is not valid. (%d)", cmd_type);
                return VC_ERROR_INVALID_PARAMETER;
        }
 
@@ -694,6 +885,15 @@ int vc_mgr_disable_command_type(int cmd_type)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Disable Command Type, cmd_type(%d)", cmd_type);
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (VC_COMMAND_TYPE_FOREGROUND > cmd_type || VC_COMMAND_TYPE_EXCLUSIVE < cmd_type) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] cmd type is not valid, (%d)", cmd_type);
                return VC_ERROR_INVALID_PARAMETER;
@@ -751,6 +951,15 @@ int vc_mgr_set_command_list(vc_cmd_list_h vc_cmd_list)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Set Command list");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -834,10 +1043,19 @@ int vc_mgr_set_command_list(vc_cmd_list_h vc_cmd_list)
        return ret;
 }
 
-int vc_mgr_unset_command_list()
+int vc_mgr_unset_command_list(void)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Unset Command list");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -886,6 +1104,15 @@ int vc_mgr_set_command_list_from_file(const char* file_path, int type)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Set Command list from file, type(%d)", type);
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == file_path) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid parameter!!");
                return VC_ERROR_INVALID_PARAMETER;
@@ -957,11 +1184,20 @@ int vc_mgr_set_preloaded_commands_from_file(const char* file_path)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Set preloaded command list");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == file_path) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid parameter, file_path is NULL ptr");
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid parameter!! file_path is NULL ptr");
                return VC_ERROR_INVALID_PARAMETER;
        } else {
-               SLOG(LOG_ERROR, TAG_VCM, "@@@ File path: %s", file_path);
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ File path: %s", file_path);
        }
 
        vc_state_e state;
@@ -997,6 +1233,15 @@ int vc_mgr_set_audio_type(const char* audio_id)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Set audio type, audio_id(%s)", audio_id);
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == audio_id) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Input parameter is NULL");
                return VC_ERROR_INVALID_PARAMETER;
@@ -1060,6 +1305,15 @@ int vc_mgr_get_audio_type(char** audio_id)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Get audio type");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == audio_id) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Input parameter is NULL");
                return VC_ERROR_INVALID_PARAMETER;
@@ -1132,6 +1386,15 @@ int vc_mgr_get_current_commands(vc_cmd_list_h* vc_cmd_list)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Foreach current commands");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -1325,6 +1588,21 @@ int vc_mgr_set_recognition_mode(vc_recognition_mode_e mode)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Set recognition mode = %d", mode);
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
+       /* check vc recognition mode */
+       if (mode > VC_RECOGNITION_MODE_MANUAL) {
+               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] invalid parameter: 'mode' is not supported mode (%d)", mode);
+               return VC_ERROR_INVALID_PARAMETER;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -1354,6 +1632,15 @@ int vc_mgr_set_recognition_mode(vc_recognition_mode_e mode)
 
 int vc_mgr_get_recognition_mode(vc_recognition_mode_e* mode)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        int ret = -1;
 
        if (NULL == mode) {
@@ -1375,6 +1662,15 @@ int vc_mgr_set_private_data(const char* key, const char* data)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Set private data");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == key) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid parameter");
                return VC_ERROR_INVALID_PARAMETER;
@@ -1433,6 +1729,15 @@ int vc_mgr_get_private_data(const char* key, char** data)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Get private data");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == key || NULL == data) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid parameter");
                return VC_ERROR_INVALID_PARAMETER;
@@ -1500,6 +1805,15 @@ int vc_mgr_set_domain(const char* domain)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Set domain");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == domain) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid parameter");
                return VC_ERROR_INVALID_PARAMETER;
@@ -1558,6 +1872,15 @@ int vc_mgr_do_action(vc_send_event_type_e type, char* send_event)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] do action");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == send_event) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Invalid parameter");
                return VC_ERROR_INVALID_PARAMETER;
@@ -1616,6 +1939,15 @@ int vc_mgr_start(bool exclusive_command_option)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Request start");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -1697,10 +2029,19 @@ int vc_mgr_start(bool exclusive_command_option)
        return ret;
 }
 
-int vc_mgr_stop()
+int vc_mgr_stop(void)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ [Manager] Request stop");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -1769,10 +2110,19 @@ int vc_mgr_stop()
        return ret;
 }
 
-int vc_mgr_cancel()
+int vc_mgr_cancel(void)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Request cancel");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] A handle is not available");
@@ -1874,6 +2224,15 @@ int __vc_mgr_cb_set_volume(float volume)
 
 int vc_mgr_get_recording_volume(float* volume)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == volume) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Input parameter is NULL");
                return VC_ERROR_INVALID_PARAMETER;
@@ -1935,6 +2294,15 @@ int vc_mgr_set_selected_results(vc_cmd_list_h vc_cmd_list)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Select result");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        /* Do not check state for 'restart continusly' mode */
 
        vc_service_state_e service_state = -1;
@@ -2056,7 +2424,14 @@ static void __vc_mgr_notify_all_result(vc_result_type_e result_type)
                SLOG(LOG_DEBUG, TAG_VCM, "Exclusive result callback called");
 
                /* Release result */
-               if (NULL != temp_text)  free(temp_text);
+               if (NULL != temp_text) {
+                       free(temp_text);
+                       temp_text = NULL;
+               }
+               if (NULL != temp_message) {
+                       free(temp_message);
+                       temp_message = NULL;
+               }
 
                /* Release list */
                vc_cmd_list_destroy(vc_cmd_list, true);
@@ -2090,6 +2465,10 @@ static void __vc_mgr_notify_all_result(vc_result_type_e result_type)
                free(temp_text);
                temp_text = NULL;
        }
+       if (NULL != temp_message) {
+               free(temp_message);
+               temp_message = NULL;
+       }
 
        /* Release list */
        vc_cmd_list_destroy(vc_cmd_list, true);
@@ -2200,6 +2579,15 @@ void __vc_mgr_cb_speech_detected()
 
 int vc_mgr_set_all_result_cb(vc_mgr_all_result_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2222,8 +2610,17 @@ int vc_mgr_set_all_result_cb(vc_mgr_all_result_cb callback, void* user_data)
        return 0;
 }
 
-int vc_mgr_unset_all_result_cb()
+int vc_mgr_unset_all_result_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset result callback : A handle is not available");
@@ -2243,6 +2640,15 @@ int vc_mgr_unset_all_result_cb()
 
 int vc_mgr_set_result_cb(vc_result_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2263,8 +2669,17 @@ int vc_mgr_set_result_cb(vc_result_cb callback, void* user_data)
        return 0;
 }
 
-int vc_mgr_unset_result_cb()
+int vc_mgr_unset_result_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset result callback : A handle is not available");
@@ -2284,6 +2699,15 @@ int vc_mgr_unset_result_cb()
 
 int vc_mgr_set_pre_result_cb(vc_mgr_pre_result_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2304,8 +2728,17 @@ int vc_mgr_set_pre_result_cb(vc_mgr_pre_result_cb callback, void* user_data)
        return 0;
 }
 
-int vc_mgr_unset_pre_result_cb()
+int vc_mgr_unset_pre_result_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset pre result callback : A handle is not available");
@@ -2327,6 +2760,15 @@ int vc_mgr_get_error_message(char** err_msg)
 {
        SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] Get error message");
 
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == err_msg) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] invalid parameter");
                return VC_ERROR_INVALID_PARAMETER;
@@ -2433,6 +2875,15 @@ static Eina_Bool __vc_mgr_notify_state_changed(void *data)
 
 int vc_mgr_set_state_changed_cb(vc_state_changed_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (callback == NULL)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2454,8 +2905,17 @@ int vc_mgr_set_state_changed_cb(vc_state_changed_cb callback, void* user_data)
        return 0;
 }
 
-int vc_mgr_unset_state_changed_cb()
+int vc_mgr_unset_state_changed_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset state changed callback : A handle is not available");
@@ -2518,6 +2978,15 @@ int __vc_mgr_cb_service_state(int state)
 
 int vc_mgr_set_service_state_changed_cb(vc_service_state_changed_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (callback == NULL)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2539,8 +3008,17 @@ int vc_mgr_set_service_state_changed_cb(vc_service_state_changed_cb callback, vo
        return 0;
 }
 
-int vc_mgr_unset_service_state_changed_cb()
+int vc_mgr_unset_service_state_changed_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset state changed callback : A handle is not available");
@@ -2559,6 +3037,15 @@ int vc_mgr_unset_service_state_changed_cb()
 
 int vc_mgr_set_speech_detected_cb(vc_mgr_begin_speech_detected_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (callback == NULL)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2580,8 +3067,17 @@ int vc_mgr_set_speech_detected_cb(vc_mgr_begin_speech_detected_cb callback, void
        return 0;
 }
 
-int vc_mgr_unset_speech_detected_cb()
+int vc_mgr_unset_speech_detected_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset state changed callback : A handle is not available");
@@ -2600,6 +3096,15 @@ int vc_mgr_unset_speech_detected_cb()
 
 int vc_mgr_set_current_language_changed_cb(vc_current_language_changed_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2621,8 +3126,17 @@ int vc_mgr_set_current_language_changed_cb(vc_current_language_changed_cb callba
        return 0;
 }
 
-int vc_mgr_unset_current_language_changed_cb()
+int vc_mgr_unset_current_language_changed_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset current language changed : A handle is not available");
@@ -2642,6 +3156,15 @@ int vc_mgr_unset_current_language_changed_cb()
 
 int vc_mgr_set_error_cb(vc_error_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2662,8 +3185,17 @@ int vc_mgr_set_error_cb(vc_error_cb callback, void* user_data)
        return 0;
 }
 
-int vc_mgr_unset_error_cb()
+int vc_mgr_unset_error_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset error callback : A handle is not available");
@@ -2742,6 +3274,15 @@ int __vc_mgr_cb_private_data_requested(const char* key, char** data)
 
 int vc_mgr_set_dialog_request_cb(vc_mgr_dialog_request_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2762,8 +3303,17 @@ int vc_mgr_set_dialog_request_cb(vc_mgr_dialog_request_cb callback, void* user_d
        return 0;
 }
 
-int vc_mgr_unset_dialog_request_cb()
+int vc_mgr_unset_dialog_request_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset error callback : A handle is not available");
@@ -2783,6 +3333,15 @@ int vc_mgr_unset_dialog_request_cb()
 
 int vc_mgr_set_private_data_set_cb(vc_mgr_private_data_set_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2803,8 +3362,17 @@ int vc_mgr_set_private_data_set_cb(vc_mgr_private_data_set_cb callback, void* us
        return 0;
 }
 
-int vc_mgr_unset_private_data_set_cb()
+int vc_mgr_unset_private_data_set_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset private data set callback : A handle is not available");
@@ -2824,6 +3392,15 @@ int vc_mgr_unset_private_data_set_cb()
 
 int vc_mgr_set_private_data_requested_cb(vc_mgr_private_data_requested_cb callback, void* user_data)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        if (NULL == callback)
                return VC_ERROR_INVALID_PARAMETER;
 
@@ -2844,8 +3421,17 @@ int vc_mgr_set_private_data_requested_cb(vc_mgr_private_data_requested_cb callba
        return 0;
 }
 
-int vc_mgr_unset_private_data_requested_cb()
+int vc_mgr_unset_private_data_requested_cb(void)
 {
+       if (0 != __vc_mgr_get_feature_enabled()) {
+               SLOG(LOG_DEBUG, TAG_VCM, "@@@ [Manager] not supported");
+               return VC_ERROR_NOT_SUPPORTED;
+       }
+
+       if (0 != __vc_mgr_check_privilege()) {
+               return VC_ERROR_PERMISSION_DENIED;
+       }
+
        vc_state_e state;
        if (0 != vc_mgr_client_get_client_state(g_vc_m, &state)) {
                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Unset private data requested callback : A handle is not available");
index ed3a88a..0299485 100755 (executable)
@@ -208,6 +208,7 @@ extern "C" {
 #define VC_MIC_FEATURE_PATH            "tizen.org/feature/microphone"
 
 #define VC_PRIVILEGE                   "http://tizen.org/privilege/recorder"
+#define VC_MGR_PRIVILEGE               "http://tizen.org/privilege/voicecontrol.manager"
 
 /******************************************************************************************
 * Definitions for common enum
diff --git a/doc/uix_vc_mgr_doc.h b/doc/uix_vc_mgr_doc.h
new file mode 100644 (file)
index 0000000..0a659fd
--- /dev/null
@@ -0,0 +1,292 @@
+/*
+ * Copyright (c) 2011-2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __TIZEN_UIX_VOICE_CONTROL_MANAGER_DOC_H__
+#define __TIZEN_UIX_VOICE_CONTROL_MANAGER_DOC_H__
+
+
+/**
+ * @ingroup CAPI_UIX_FRAMEWORK
+ * @defgroup CAPI_UIX_VOICE_CONTROL_MANAGER_MODULE Voice control manager
+ * @brief The @ref CAPI_UIX_VOICE_CONTROL_MANAGER_MODULE API provides functions for recording voice and giving responses for recognized voice commands to users.
+ * @section CAPI_UIX_VOICE_CONTROLMANAGER_MODULE_HEADER Required Header
+ * \#include <voice_control_manager.h><br>
+ *
+ * @section CAPI_UIX_VOICE_CONTROL_MANAGER_MODULE_OVERVIEW Overview
+ * A main function of Voice Control Manager API records voice and gives responses for recognized voice commands.
+ * A Voice Control Manager application can start recording user's utterance and get responses from Voice Control engine service.
+ * The responses are dependent on the Voice Control engine service. For example, the engine service may send ASR(Automatic Speech Recognition) results or NLU(Natural Language Understanding) results.
+ * Also, it may send plural results. Therefore, the application can get various recognition results from the engine service and handle them by showing responses to users or controling Voice Control applications.
+ * Like this, the Voice Control Manager application takes a role of controlling Voice Control applcations.
+ * For this reason, developers who have an authority granted by Tizen platform can make the Voice Control Manager application.<br><br>
+ * To use of Voice Control Manager, use the following steps: <br>
+ * 1. Initialize <br>
+ * 2. Register callback functions for notifications <br>
+ * 3. Connect to voice control service asynchronously. The state should be changed to Ready <br>
+ * 4. Make command list as the following step and Step 4 is called repeatedly for each command which an application wants <br>
+ * 4-1. Create command list handle <br>
+ * 4-2. Create command handle <br>
+ * 4-3. Set command and type for command handle <br>
+ * 4-4. Add command handle to command list <br>
+ * 5. Set command list for recognition <br>
+ * 6. Get recognition results <br>
+ * 7. Request the dialogue <br>
+ * 8. If an application wants to finish voice control,<br>
+ * 8-1. Destroy command and command list handle <br>
+ * 8-2. Deinitialize <br>
+ * An application can obtain command handle from command list, and also get information from handle.
+ * The Voice Control API also notifies you (by callback mechanism) when the states of client and service are changed,
+ * command is recognized, current language is changed or error occurred.
+ * An application should register callback functions: vc_state_changed_cb(), vc_service_state_changed_cb(), vc_mgr_all_result_cb(), vc_mgr_pre_result_cb(), vc_result_cb(), 
+ * vc_mgr_begin_speech_detected_cb(), vc_current_language_changed_cb(), vc_error_cb(), vc_mgr_dialog_request_cb(), vc_mgr_private_data_set_cb(), vc_mgr_private_data_requested_cb().
+ *
+ *
+ * @section CAPI_UIX_VOICE_CONTROL_MANAGER_MODULE_STATE_TRANSITIONS State Transitions
+ * <table>
+ * <tr>
+ * <th>FUNCTION</th>
+ * <th>PRE-STATE</th>
+ * <th>POST-STATE</th>
+ * <th>SYNC TYPE</th>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_initialize()</td>
+ * <td>None</td>
+ * <td>Initialized</td>
+ * <td>SYNC</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_deinitialize()</td>
+ * <td>None, Initialized, Ready</td>
+ * <td>None</td>
+ * <td>SYNC</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_prepare()</td>
+ * <td>Initialized</td>
+ * <td>Ready</td>
+ * <td>ASYNC</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_unprepare()</td>
+ * <td>Ready</td>
+ * <td>Initialized</td>
+ * <td>SYNC</td>
+ * </tr>
+ * </table>
+ *
+ * @section CAPI_UIX_VOICE_CONTROL_MANAGER_MODULE_STATE_DEPENDENT_FUNCTION_CALLS State Dependent Function Calls
+ * The following table shows state-dependent function calls.
+ * It is forbidden to call functions listed below in wrong states.
+ * Violation of this rule may result in an unpredictable behavior.
+ * <table>
+ * <tr>
+ * <th>FUNCTION</th>
+ * <th>VALID STATES</th>
+ * <th>DESCRIPTION</th>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_initialize()</td>
+ * <td>None</td>
+ * <td>All functions must be called after vc_mgr_initialize()</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_deinitialize()</td>
+ * <td>None, Initialized, Ready</td>
+ * <td>This function should be called when an application want to finalize voice control manager using</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_prepare()</td>
+ * <td>Initialized</td>
+ * <td>This function works asynchronously. If service start is failed, application gets the error callback.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_unprepare()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_foreach_supported_languages()</td>
+ * <td>Initialized, Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_current_language()</td>
+ * <td>Initialized, Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_state()</td>
+ * <td>Initialized, Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_service_state()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_is_command_format_supported()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_set_command_list()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_unset_command_list()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_set_command_list_from_file()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_set_preloaded_commands_from_file()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_current_commands()</td>
+ * <td>Ready</td>
+ * <td>The service state should be #VC_SERVICE_STATE_READY.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_set_audio_type()</td>
+ * <td>Ready</td>
+ * <td>The service state should be #VC_SERVICE_STATE_READY.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_audio_type()</td>
+ * <td>Ready</td>
+ * <td>The service state should be #VC_SERVICE_STATE_READY.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_set_recognition_mode()</td>
+ * <td>Ready</td>
+ * <td>The service state should be #VC_SERVICE_STATE_READY.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_recognition_mode()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_set_private_data()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_private_data()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_do_action()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_start()</td>
+ * <td>Ready</td>
+ * <td>The service state should be #VC_SERVICE_STATE_READY. If this function succeeds, the service state will be changed to #VC_SERVICE_STATE_RECORDING.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_stop()</td>
+ * <td>Ready</td>
+ * <td>The service state should be #VC_SERVICE_STATE_RECORDING. If this function succeeds, the service state will be changed to #VC_SERVICE_STATE_PROCESSING.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_cancel()</td>
+ * <td>Ready</td>
+ * <td>The service state should be #VC_SERVICE_STATE_RECORDING or #VC_SERVICE_STATE_PROCESSING. If this function succeeds, the service state will be changed to #VC_SERVICE_STATE_READY.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_recording_volume()</td>
+ * <td>None, Initialized, Ready</td>
+ * <td>The service state should be #VC_SERVICE_STATE_RECORDING.</td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_set_selected_results()</td>
+ * <td>None, Initialized, Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_get_error_message()</td>
+ * <td>None, Initialized, Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>vc_mgr_enable_command_type()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <tr>
+ * <td>vc_mgr_disable_command_type()</td>
+ * <td>Ready</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>
+ * vc_mgr_set_all_result_cb()<br>
+ * vc_mgr_unset_all_result_cb()<br>
+ * vc_mgr_set_pre_result_cb()<br>
+ * vc_mgr_unset_pre_result_cb()<br>
+ * vc_mgr_set_result_cb()<br>
+ * vc_mgr_unset_result_cb()<br>
+ * vc_mgr_set_state_changed_cb()<br>
+ * vc_mgr_unset_state_changed_cb()<br>
+ * vc_mgr_set_service_state_changed_cb()<br>
+ * vc_mgr_unset_service_state_changed_cb()<br>
+ * vc_mgr_set_speech_detected_cb()<br>
+ * vc_mgr_unset_speech_detected_cb()<br>
+ * vc_mgr_set_current_language_changed_cb()<br>
+ * vc_mgr_unset_current_language_changed_cb()<br>
+ * vc_mgr_set_error_cb()<br>
+ * vc_mgr_unset_error_cb()</td>
+ * vc_mgr_set_dialog_request_cb()<br>
+ * vc_mgr_unset_dialog_request_cb()</td>
+ * vc_mgr_set_private_data_set_cb()<br>
+ * vc_mgr_unset_private_data_set_cb()</td>
+ * vc_mgr_set_private_data_requested_cb()<br>
+ * vc_mgr_unset_private_data_requested_cb()</td>
+ * <td>Initialized</td>
+ * <td> All callback function should be registered in Initialized state </td>
+ * </tr>
+ * </table>
+ *
+ * @section CAPI_UIX_VOICE_CONTROL_MANAGER_MODULE_FEATURES Related Features
+ * This API is related with the following features:<br>
+ * - http://tizen.org/feature/microphone<br>
+ * - http://tizen.org/feature/speech.control<br>
+ * It is recommended to design feature related codes in your application for reliability.<br>
+ * You can check if a device supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.<br>
+ * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.<br>
+ * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/tizen-studio/native-tools/configuring-your-app/manifest-text-editor#feature"><b>Feature Element</b>.</a>
+ */
+
+
+#endif /* __TIZEN_UIX_VOICE_CONTROL_MANAGER_DOC_H__ */
+
+
+
+
index 84fd0df..eeacc29 100644 (file)
@@ -21,6 +21,7 @@ INSTALL(FILES ${CMAKE_BINARY_DIR}/include/voice_control_command_expand.h DESTINA
 INSTALL(FILES ${CMAKE_BINARY_DIR}/include/voice_control_common.h DESTINATION ${INCLUDEDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/include/voice_control_key_defines.h DESTINATION ${INCLUDEDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/include/voice_control_manager.h DESTINATION ${INCLUDEDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/include/voice_control_manager_internal.h DESTINATION ${INCLUDEDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/include/voice_control_setting.h DESTINATION ${INCLUDEDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/include/voice_control_widget.h DESTINATION ${INCLUDEDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/include/vce.h DESTINATION ${INCLUDEDIR})
index b653ca9..0f62a23 100644 (file)
@@ -92,7 +92,7 @@ int vc_prepare_sync(void);
 #endif
 
 /**
  * @}
   */
+ * @}
+ */
 
 #endif /* __VOICE_CONTROL_INTERNAL_H__ */
index 3d6d294..cdd8af3 100644 (file)
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2011-2015 Samsung Electronics Co., Ltd All Rights Reserved
+* Copyright (c) 2011-2018 Samsung Electronics Co., Ltd All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
@@ -23,9 +23,9 @@
 #include <voice_control_common.h>
 
 /**
-* @addtogroup VOICE_CONTROL_MANAGER
-* @{
-*/
+ * @addtogroup CAPI_UIX_VOICE_CONTROL_MANAGER_MODULE
+ * @{
+ */
 
 #ifdef __cplusplus
 extern "C"
@@ -34,1069 +34,1422 @@ extern "C"
 
 
 /**
- * @brief Definition of bluetooth audio-in type.
-*/
+ * @brief Definition of Bluetooth audio-in type.
+ * @since_tizen 5.0
+ */
 #define VC_AUDIO_TYPE_BLUETOOTH                "VC_AUDIO_ID_BLUETOOTH"         /**< Bluetooth audio type */
 
 /**
  * @brief Definition of Wi-Fi audio-in type.
-*/
+ * @since_tizen 5.0
+ */
 #define VC_AUDIO_TYPE_WIFI             "VC_AUDIO_ID_WIFI"              /**< Wi-Fi audio type */
 
 /**
-* @brief Definition for foreground command type.
-* @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
-*/
+ * @brief Definition for foreground command type.
+ * @since_tizen 5.0
+ */
 #define VC_COMMAND_TYPE_FOREGROUND     1
 
 /**
-* @brief Definition for background command type.
-* @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
-*/
+ * @brief Definition for background command type.
+ * @since_tizen 5.0
+ */
 #define VC_COMMAND_TYPE_BACKGROUND     2
 
 /**
-* @brief Definition for widget command type.
-* @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
-*/
+ * @brief Definition for widget command type.
+ * @since_tizen 5.0
+ */
 #define VC_COMMAND_TYPE_WIDGET         3
 
 /**
-* @brief Definition for system command type.
-* @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
-*/
+ * @brief Definition for system command type.
+ * @since_tizen 5.0
+ */
 #define VC_COMMAND_TYPE_SYSTEM         4
 
 /**
-* @brief Definition for exclusive command type.
-* @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
-*/
+ * @brief Definition for system background command type.
+ * @since_tizen 5.0
+ */
 #define VC_COMMAND_TYPE_SYSTEM_BACKGROUND      5
 
 /**
-* @brief Definitions for exclusive command type.
-* @since_tizen 2.4
-*/
+ * @brief Definition for exclusive command type.
+ * @since_tizen 5.0
+ */
 #define VC_COMMAND_TYPE_EXCLUSIVE      6
 
 /**
-* @brief Definition for none message.
-*/
+ * @brief Definition for none message.
+ * @since_tizen 5.0
+ */
 #define VC_RESULT_MESSAGE_NONE                 "vc.result.message.none"
 
 /**
-* @brief Definition for failed recognition because the speech is too loud to listen.
-*/
+ * @brief Definition for failed recognition because the speech is too loud to listen.
+ * @since_tizen 5.0
+ */
 #define VC_RESULT_MESSAGE_ERROR_TOO_LOUD       "vc.result.message.error.too.loud"
 
 /**
-* @brief Enumerations of recognition mode.
-*/
+ * @brief Enumeration of recognition mode.
+ * @since_tizen 5.0
+ */
 typedef enum {
        VC_RECOGNITION_MODE_STOP_BY_SILENCE,            /**< Default mode */
        VC_RECOGNITION_MODE_RESTART_AFTER_REJECT,       /**< Restart recognition after rejected result */
        VC_RECOGNITION_MODE_RESTART_CONTINUOUSLY,       /**< Continuously restart recognition - not support yet*/
-       VC_RECOGNITION_MODE_MANUAL                      /**< Start and stop manually without silence */
+       VC_RECOGNITION_MODE_MANUAL                                      /**< Start and stop manually without silence */
 } vc_recognition_mode_e;
 
 /**
-* @brief Enumerations of send event type.
-*/
+ * @brief Enumeration of send event type.
+ * @since_tizen 5.0
+ */
 typedef enum {
-       VC_SEND_EVENT_TYPE_TEXT,                /**< send text event to vc engine*/
-       VC_SEND_EVENT_TYPE_LIST_EVENT,          /**< send list event to vc engine */
-       VC_SEND_EVENT_TYPE_HAPTIC_EVENT         /**< send haptic event to vc engine */
+       VC_SEND_EVENT_TYPE_TEXT,                        /**< Send text event to VC engine */
+       VC_SEND_EVENT_TYPE_LIST_EVENT,          /**< Send list event to VC engine */
+       VC_SEND_EVENT_TYPE_HAPTIC_EVENT         /**< Send haptic event to VC engine */
 } vc_send_event_type_e;
 
 /**
-* @brief Enumerations of pre result event.
-*/
+ * @brief Enumeration of pre result event.
+ * @since_tizen 5.0
+ */
 typedef enum {
-       VC_PRE_RESULT_EVENT_FINAL_RESULT = 0,
-       VC_PRE_RESULT_EVENT_PARTIAL_RESULT,
-       VC_PRE_RESULT_EVENT_ERROR
+       VC_PRE_RESULT_EVENT_FINAL_RESULT = 0,   /**< Pre-result event for final result */
+       VC_PRE_RESULT_EVENT_PARTIAL_RESULT,             /**< Pre-result event for partial result */
+       VC_PRE_RESULT_EVENT_ERROR                               /**< Pre-result event for error */
 } vc_pre_result_event_e;
 
 /**
-* @brief Called when client gets the all recognition results from vc-daemon.
-*
-* @remark temp_command is valid in callback function.
-*
-* @param[in] event The result event
-* @param[in] vc_cmd_list_h Command list handle
-* @param[in] result Command text
-* @param[in] msg Engine message (e.g. #VC_RESULT_MESSAGE_NONE, #VC_RESULT_MESSAGE_ERROR_TOO_LOUD)
-* @param[in] user_data The user data passed from the callback registration function
-*
-* @return @c true to release command to client, \n @c false to wait for selecting command.
-* @pre An application registers callback function using vc_mgr_set_all_result_cb().
-*
-* @see vc_mgr_set_all_result_cb()
-* @see vc_mgr_unset_all_result_cb()
-*/
+ * @brief Called when client gets the all recognition results from voice control service.
+ * @since_tizen 5.0
+ *
+ * @remarks The @a vc_cmd_list should not be released. It is managed by the platform and will be released when invoking this callback is finished. \n
+ *      The @a result and @a msg are also managed by the platform and will be released when invoking this callback is finished.
+ *
+ * @param[in] event         The result event
+ * @param[in] vc_cmd_list   Command list handle
+ * @param[in] result        Command text
+ * @param[in] msg           Engine message (e.g. #VC_RESULT_MESSAGE_NONE, #VC_RESULT_MESSAGE_ERROR_TOO_LOUD)
+ * @param[in] user_data     The user data passed from the callback registration function
+ *
+ * @return @c true to release command to client, \n @c false to wait for selecting command.
+ * @pre An application registers callback function using vc_mgr_set_all_result_cb().
+ *
+ * @see vc_mgr_set_all_result_cb()
+ * @see vc_mgr_unset_all_result_cb()
+ */
 typedef bool (*vc_mgr_all_result_cb)(vc_result_event_e event, vc_cmd_list_h vc_cmd_list,
-                               const char* result, const char* msg, void *user_data);
-
-/**
-* @brief Called when client gets the pre recognition results(partial ASR) from vc-daemon.
-*
-* @param[in] event The pre result event
-* @param[in] result ASR text
-* @param[in] user_data The user data passed from the callback registration function
-*
-* @pre An application registers callback function using vc_mgr_set_pre_result_cb().
-*
-* @see vc_mgr_set_pre_result_cb()
-* @see vc_mgr_unset_pre_result_cb()
-*/
-typedef void (*vc_mgr_pre_result_cb)(vc_pre_result_event_e event, const char* result, void *user_data);
-
-/**
-* @brief Called when user speaking is detected.
-*
-* @param[in] user_data The user data passed from the callback registration function
-*
-* @pre An application registers callback function using vc_mgr_set_speech_detected_cb().
-*
-* @see vc_mgr_set_speech_detected_cb()
-* @see vc_mgr_unset_speech_detected_cb()
-*/
+                               const char *result, const char *msg, void *user_data);
+
+/**
+ * @brief Called when client gets the pre recognition results (partial ASR) from voice control service.
+ * @since_tizen 5.0
+ *
+ * @remarks The @a result is managed by the platform and will be released when invoking this callback is finished.
+ *
+ * @param[in] event       The pre result event
+ * @param[in] result      ASR text
+ * @param[in] user_data   The user data passed from the callback registration function
+ *
+ * @pre An application registers callback function using vc_mgr_set_pre_result_cb().
+ *
+ * @see vc_mgr_set_pre_result_cb()
+ * @see vc_mgr_unset_pre_result_cb()
+ */
+typedef void (*vc_mgr_pre_result_cb)(vc_pre_result_event_e event, const char *result, void *user_data);
+
+/**
+ * @brief Called when user speaking is detected.
+ * @since_tizen 5.0
+ *
+ * @param[in] user_data   The user data passed from the callback registration function
+ *
+ * @pre An application registers callback function using vc_mgr_set_speech_detected_cb().
+ *
+ * @see vc_mgr_set_speech_detected_cb()
+ * @see vc_mgr_unset_speech_detected_cb()
+ */
 typedef void (*vc_mgr_begin_speech_detected_cb)(void *user_data);
 
 
 /**
-* @brief Called when user request dialog
-*
-* @param[in] pid Pid of VC client to request dialog
-* @param[in] disp_text Text that wants to be displayed
-* @param[in] utt_text Text that wants to be spoken
-* @param[in] continuous Continue dialog session
-* @param[in] user_data The user data passed from the callback registration function
-*
-* @pre An application registers callback function using vc_mgr_set_dialog_request_cb().
-*
-* @see vc_mgr_set_dialog_request_cb()
-* @see vc_mgr_unset_dialog_request_cb()
-*/
-typedef void (*vc_mgr_dialog_request_cb)(int pid, const char* disp_text, const char* utt_text, bool continuous, void *user_data);
-
-/**
-* @brief Called when engine set private data to manager client
-*
-* @param[in] key Private key
-* @param[in] data Private data
-* @param[in] user_data The user data passed from the callback registration function
-*
-* @pre An application registers callback function using vc_mgr_set_private_data_set_cb().
-*
-* @see vc_mgr_set_private_data_set_cb()
-* @see vc_mgr_unset_private_data_set_cb()
-*/
-typedef int (*vc_mgr_private_data_set_cb)(const char* key, const char* data, void *user_data);
-
-/**
-* @brief Called when engine request private data from manager client
-*
-* @param[in] key Private key
-* @param[out] data Private data
-* @param[in] user_data The user data passed from the callback registration function
-*
-* @pre An application registers callback function using vc_mgr_set_private_data_requested_cb().
-*
-* @see vc_mgr_set_private_data_requested_cb()
-* @see vc_mgr_unset_private_data_requested_cb()
-*/
-typedef int (*vc_mgr_private_data_requested_cb)(const char* key, char** data, void *user_data);
-
-
-/**
-* @brief Initialize voice control manager.
-*
-* @remarks If the function succeeds, @a vc mgr must be released with vc_mgr_deinitialize().
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_OUT_OF_MEMORY Out of memory
-* @retval #VC_ERROR_OPERATION_FAILED Operation fail
-*
-* @pre The state should be #VC_STATE_NONE.
-* @post If this function is called, the state will be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_deinitialize()
-*/
-int vc_mgr_initialize();
-
-/**
-* @brief Deinitialize voice control manager.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @post If this function is called, the state will be #VC_STATE_NONE.
-*
-* @see vc_mgr_deinitialize()
-*/
-int vc_mgr_deinitialize();
-
-/**
-* @brief Connects the voice control service.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-* @post If this function is called, the state will be #VC_STATE_READY.
-*
-* @see vc_mgr_unprepare()
-*/
-int vc_mgr_prepare();
-
-/**
-* @brief Disconnects the vc-daemon.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-* @post If this function is called, the state will be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_prepare()
-*/
-int vc_mgr_unprepare();
-
-/**
-* @brief Retrieves all supported languages using callback function.
-*
-* @param[in] callback Callback function to invoke
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should NOT be #VC_SERVICE_STATE_NONE.
-* @post        This function invokes vc_supported_language_cb() repeatedly for getting languages.
-*
-* @see vc_supported_language_cb()
-* @see vc_mgr_get_current_language()
-*/
-int vc_mgr_foreach_supported_languages(vc_supported_language_cb callback, void* user_data);
-
-/**
-* @brief Gets current language set by user.
-*
-* @remark If the function succeeds, @a language must be released with free() by you when you no longer need it.
-*
-* @param[out] language A language is specified as an ISO 3166 alpha-2 two letter country-code \n
-*                      followed by ISO 639-1 for the two-letter language code. \n
-*                      For example, "ko_KR" for Korean, "en_US" for American English.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_OUT_OF_MEMORY Out of memory
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should NOT be #VC_SERVICE_STATE_NONE.
-*
-* @see vc_mgr_foreach_supported_languages()
-*/
-int vc_mgr_get_current_language(char** language);
-
-/**
-* @brief Gets current state of voice control manager.
-*
-* @param[out] state The current state
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-*
-* @pre The state should NOT be #VC_SERVICE_STATE_NONE.
-*
-* @see vc_state_changed_cb()
-* @see vc_set_state_changed_cb()
-*/
-int vc_mgr_get_state(vc_state_e* state);
-
-/**
-* @brief Gets current state of voice control service.
-*
-* @param[out] state The current state
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_start()
-* @see vc_mgr_stop()
-* @see vc_mgr_cancel()
-* @see vc_set_service_state_changed_cb()
-* @see vc_unset_service_state_changed_cb()
-*/
-int vc_mgr_get_service_state(vc_service_state_e* state);
-
-/**
-* @brief Sets demandable client list.
-*
-* @param[in] rule demandable client list rule path
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_get_demandable_client_rule()
-*/
-int vc_mgr_set_demandable_client_rule(const char* rule);
-
-/**
-* @brief Gets demandable client list.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_set_demandable_client_rule()
-*/
-int vc_mgr_unset_demandable_client_rule();
-
-/**
-* @brief Checks whether the command format is supported.
-*
-* @param[in] format The command format
-* @param[out] support The result status @c true = supported, @c false = not supported
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-*/
-int vc_mgr_is_command_format_supported(vc_cmd_format_e format, bool* support);
-
-/**
-* @brief Sets system or exclusive commands.
-*
-* @remarks The command type is valid for VC_COMMAND_TYPE_SYSTEM or VC_COMMAND_TYPE_EXCLUSIVE.
-*      The commands should include type, command text, format.
-*
-* @param[in] vc_cmd_list The command list handle
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_unset_command_list()
-*/
+ * @brief Called when an application (VC client) requests dialog.
+ * @since_tizen 5.0
+ *
+ * @remarks The @a disp_text and @a utt_text are managed by the platform and will be released when invoking this callback is finished.
+ *
+ * @param[in] pid          Pid of VC client to request dialog
+ * @param[in] disp_text    Text requested to be displayed
+ * @param[in] utt_text     Text requested to be spoken
+ * @param[in] continuous   Continue dialog session
+ * @param[in] user_data    The user data passed from the callback registration function
+ *
+ * @pre An application registers callback function using vc_mgr_set_dialog_request_cb().
+ *
+ * @see vc_mgr_set_dialog_request_cb()
+ * @see vc_mgr_unset_dialog_request_cb()
+ */
+typedef void (*vc_mgr_dialog_request_cb)(int pid, const char *disp_text, const char *utt_text, bool continuous, void *user_data);
+
+/**
+ * @brief Called when engine sets private data to manager client.
+ * @since_tizen 5.0
+ *
+ * @remarks The @a key and @a data are managed by the platform and will be released when invoking this callback is finished.
+ *
+ * @param[in] key         Private key
+ * @param[in] data        Private data
+ * @param[in] user_data   The user data passed from the callback registration function
+ *
+ * @pre An application registers callback function using vc_mgr_set_private_data_set_cb().
+ *
+ * @see vc_mgr_set_private_data_set_cb()
+ * @see vc_mgr_unset_private_data_set_cb()
+ */
+typedef int (*vc_mgr_private_data_set_cb)(const char *key, const char *data, void *user_data);
+
+/**
+ * @brief Called when engine requests private data from manager client.
+ * @since_tizen 5.0
+ *
+ * @remarks The @a data should not be released. The @a data and @a key are managed by the platform and will be released when invoking this callback is finished.
+ *
+ * @param[in]  key         Private key
+ * @param[out] data        Private data
+ * @param[in]  user_data   The user data passed from the callback registration function
+ *
+ * @pre An application registers callback function using vc_mgr_set_private_data_requested_cb().
+ *
+ * @see vc_mgr_set_private_data_requested_cb()
+ * @see vc_mgr_unset_private_data_requested_cb()
+ */
+typedef int (*vc_mgr_private_data_requested_cb)(const char *key, char **data, void *user_data);
+
+/**
+ * @platform
+ * @brief Initializes the voice control manager.
+ * @since_tizen 5.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/recorder
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks If the function succeeds, VC manager must be released with vc_mgr_deinitialize().
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_OUT_OF_MEMORY       Out of memory
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation fail
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_NONE.
+ * @post If this function is called, the state will be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_deinitialize()
+ */
+int vc_mgr_initialize(void);
+
+/**
+ * @platform
+ * @brief Deinitializes the voice control manager.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @post If this function is called, the state will be #VC_STATE_NONE.
+ *
+ * @see vc_mgr_initialize()
+ */
+int vc_mgr_deinitialize(void);
+
+/**
+ * @platform
+ * @brief Connects the voice control service.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ * @post If this function is called, the state will be #VC_STATE_READY.
+ *
+ * @see vc_mgr_unprepare()
+ */
+int vc_mgr_prepare(void);
+
+/**
+ * @platform
+ * @brief Disconnects the voice control service.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ * @post If this function is called, the state will be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_prepare()
+ */
+int vc_mgr_unprepare(void);
+
+/**
+ * @platform
+ * @brief Retrieves all supported languages using callback function.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to invoke
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should NOT be #VC_SERVICE_STATE_NONE.
+ * @post This function invokes vc_supported_language_cb() for each supported language.
+ *
+ * @see vc_supported_language_cb()
+ * @see vc_mgr_get_current_language()
+ */
+int vc_mgr_foreach_supported_languages(vc_supported_language_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Gets the current language set by user.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks If the function succeeds, @a language must be released with free() by you when you no longer need it.
+ *
+ * @param[out] language   A language is specified as an ISO 3166 alpha-2 two letter country-code \n
+ *      followed by ISO 639-1 for the two-letter language code. \n
+ *      For example, "ko_KR" for Korean, "en_US" for American English.
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_OUT_OF_MEMORY       Out of memory
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should NOT be #VC_SERVICE_STATE_NONE.
+ *
+ * @see vc_mgr_foreach_supported_languages()
+ */
+int vc_mgr_get_current_language(char **language);
+
+/**
+ * @platform
+ * @brief Gets the current state of voice control manager.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[out] state   The current state
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should NOT be #VC_SERVICE_STATE_NONE.
+ *
+ * @see vc_state_changed_cb()
+ * @see vc_set_state_changed_cb()
+ */
+int vc_mgr_get_state(vc_state_e *state);
+
+/**
+ * @platform
+ * @brief Gets the current state of voice control service.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[out] state   The current state
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_start()
+ * @see vc_mgr_stop()
+ * @see vc_mgr_cancel()
+ * @see vc_set_service_state_changed_cb()
+ * @see vc_unset_service_state_changed_cb()
+ */
+int vc_mgr_get_service_state(vc_service_state_e *state);
+
+/**
+ * @platform
+ * @brief Checks whether the command format is supported.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in]  format    The command format
+ * @param[out] support   The result status @c true = supported, @c false = not supported
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ */
+int vc_mgr_is_command_format_supported(vc_cmd_format_e format, bool *support);
+
+/**
+ * @platform
+ * @brief Sets all types of commands.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks VC manager client can register all types of commands.
+ *      The commands should include type, command text, format.
+ *
+ * @param[in] vc_cmd_list   The command list handle
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_unset_command_list()
+ */
 int vc_mgr_set_command_list(vc_cmd_list_h vc_cmd_list);
 
 /**
-* @brief Unsets system or exclusive commands.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_set_command_list()
-*/
-int vc_mgr_unset_command_list();
-
-/**
-* @brief Sets commands from file.
-*
-* @remarks The commands should include type, command text, format.
-*
-* @param[in] vc_cmd_list The command list handle
-* @param[in] type Command type
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_unset_command_list()
-*/
-int vc_mgr_set_command_list_from_file(const char* file_path, int type);
-
-/**
-* @brief Sets background commands of preloaded app from file.
-*
-* @remarks The command type is valid for VC_COMMAND_TYPE_BACKGROUND
-*      The commands should include type, command text, format.
-*
-* @param[in] vc_cmd_list The command list handle
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_unset_command_list()
-*/
-int vc_mgr_set_preloaded_commands_from_file(const char* file_path);
-
-/**
-* @brief Retrieves all available commands.
-*
-* @remarks If the function succeeds, @a vc_cmd_list must be released with vc_cmd_list_destroy(vc_cmd_list, true).
-*
-* @param[in] vc_cmd_list The command list
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
-*/
-int vc_mgr_get_current_commands(vc_cmd_list_h* vc_cmd_list);
-
-/**
-* @brief Sets audio in type.
-*
-* @param[in] audio_id audio type (e.g. #VC_AUDIO_TYPE_BLUETOOTH or usb device id)
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
-*
-* @see vc_mgr_get_audio_type()
-*/
-int vc_mgr_set_audio_type(const char* audio_id);
-
-/**
-* @brief Gets audio-in type.
-*
-* @remarks audio_id must be released using free() when it is no longer required.
-*
-* @param[out] audio_id audio id (e.g. #VC_AUDIO_TYPE_BLUETOOTH or usb device id)
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
-*
-* @see vc_mgr_set_audio_type()
-*/
-int vc_mgr_get_audio_type(char** audio_id);
-
-/**
-* @brief Sets recognition mode.
-*
-* @param[in] mode recognition mode (e.g. #VC_RECOGNITION_MODE_STOP_BY_SILENCE is default value)
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
-*
-* @see vc_mgr_set_recognition_mode()
-*/
+ * @platform
+ * @brief Unsets all types of commands.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks All previously registered commands will be unset.
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_set_command_list()
+ */
+int vc_mgr_unset_command_list(void);
+
+/**
+ * @platform
+ * @brief Sets commands from file.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks The commands should include type, command text, format.
+ *
+ * @param[in] file_path   The directory of a file which has command list
+ * @param[in] type          The command type (e.g. #VC_COMMAND_TYPE_FOREGROUND, #VC_COMMAND_TYPE_BACKGROUND, #VC_COMMAND_TYPE_WIDGET, #VC_COMMAND_TYPE_SYSTEM, #VC_COMMAND_TYPE_SYSTEM_BACKGROUND, #VC_COMMAND_TYPE_EXCLUSIVE)
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_unset_command_list()
+ */
+int vc_mgr_set_command_list_from_file(const char *file_path, int type);
+
+/**
+ * @platform
+ * @brief Sets background commands of preloaded app from file.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks The command type is valid for #VC_COMMAND_TYPE_BACKGROUND.
+ *      The commands should include type, command text, format.
+ *
+ * @param[in] file_path   The directory of a file which has command list
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_unset_command_list()
+ */
+int vc_mgr_set_preloaded_commands_from_file(const char *file_path);
+
+/**
+ * @platform
+ * @brief Retrieves all available commands.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks If the function succeeds, @a vc_cmd_list must be released with vc_cmd_list_destroy(vc_cmd_list, true).
+ *
+ * @param[in] vc_cmd_list   The command list
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
+ */
+int vc_mgr_get_current_commands(vc_cmd_list_h *vc_cmd_list);
+
+/**
+ * @platform
+ * @brief Sets a type of audio-in.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] audio_id   The audio type (e.g. #VC_AUDIO_TYPE_BLUETOOTH or USB device ID)
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
+ *
+ * @see vc_mgr_get_audio_type()
+ */
+int vc_mgr_set_audio_type(const char *audio_id);
+
+/**
+ * @platform
+ * @brief Gets a type of audio-in.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks audio_id must be released using free() when it is no longer required.
+ *
+ * @param[out] audio_id   The audio id (e.g. #VC_AUDIO_TYPE_BLUETOOTH or USB device ID)
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
+ *
+ * @see vc_mgr_set_audio_type()
+ */
+int vc_mgr_get_audio_type(char **audio_id);
+
+/**
+ * @platform
+ * @brief Sets recognition mode.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] mode   Recognition mode (e.g. #VC_RECOGNITION_MODE_STOP_BY_SILENCE is default value)
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
+ *
+ * @see vc_mgr_set_recognition_mode()
+ */
 int vc_mgr_set_recognition_mode(vc_recognition_mode_e mode);
 
 /**
-* @brief Gets recognition mode.
-*
-* @param[out] mode recognition mode
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_get_recognition_mode()
-*/
-int vc_mgr_get_recognition_mode(vc_recognition_mode_e* mode);
-
-/**
-* @brief Sets private data between app and engine.
-*
-* @param[in] key Private key
-* @param[in] data Private data
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_OUT_OF_MEMORY Not enough memory
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The service state should be #VC_SERVICE_STATE_READY.
-*/
-int vc_mgr_set_private_data(const char* key, const char* data);
-
-/**
-* @brief Gets private data between app and engine.
-*
-* @remarks data must be released using free() when it is no longer required.
-*
-* @param[in] key Private key
-* @param[out] data Private data
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_OUT_OF_MEMORY Not enough memory
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The service state should be #VC_SERVICE_STATE_READY.
-*/
-int vc_mgr_get_private_data(const char* key, char** data);
-
-/**
-* @brief Sets domain such as agent or device type.
-*
-* @param[in] domain Available agent or device type
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_OUT_OF_MEMORY Not enough memory
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The service state should be #VC_SERVICE_STATE_READY.
-*/
-int vc_mgr_set_domain(const char* domain);
-
-/**
-* @brief Request to do action as if utterence is spoken.
-*
-* @param[in] type Event type
-* @param[in] send_event  The string for send event
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_OUT_OF_MEMORY Not enough memory
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The service state should be #VC_SERVICE_STATE_READY.
-*/
-int vc_mgr_do_action(vc_send_event_type_e type, char* send_event);
-
-/**
-* @brief Starts recognition.
-*
-* @remarks The default recognition mode is #VC_RECOGNITION_MODE_STOP_BY_SILENCE. \n
-* If you want to use other mode, you can set mode with vc_mgr_set_recognition_mode().
-*
-* @param[in] exclusive_command_option Exclusive command option
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter.
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
-* @post It will invoke vc_service_state_changed_cb(), if you register a callback with vc_service_state_changed_cb(). \n
-* If this function succeeds, the service state will be #VC_SERVICE_STATE_RECORDING.
-*
-* @see vc_mgr_stop()
-* @see vc_mgr_cancel()
-* @see vc_service_state_changed_cb()
-* @see vc_mgr_set_recognition_mode()
-* @see vc_mgr_get_recognition_mode()
-*/
+ * @platform
+ * @brief Gets recognition mode.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[out] mode   Recognition mode
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_get_recognition_mode()
+ */
+int vc_mgr_get_recognition_mode(vc_recognition_mode_e *mode);
+
+/**
+ * @platform
+ * @brief Sets private data to VC engine.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks VC manager client can set private data to VC engine using this function.
+ *
+ * @param[in] key    Private key
+ * @param[in] data   Private data
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_OUT_OF_MEMORY       Not enough memory
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The service state should be #VC_SERVICE_STATE_READY.
+ */
+int vc_mgr_set_private_data(const char *key, const char *data);
+
+/**
+ * @platform
+ * @brief Gets private data from VC engine.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks VC manager client can get private data from VC engine using this function.
+ *      @a data must be released using free() when it is no longer required.
+ *
+ * @param[in]  key    Private key
+ * @param[out] data   Private data
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_OUT_OF_MEMORY       Not enough memory
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The service state should be #VC_SERVICE_STATE_READY.
+ */
+int vc_mgr_get_private_data(const char *key, char **data);
+
+/**
+ * @platform
+ * @brief Requests to do action as if utterence is spoken.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] type         Event type
+ * @param[in] send_event   The string for send event
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_OUT_OF_MEMORY       Not enough memory
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The service state should be #VC_SERVICE_STATE_READY.
+ */
+int vc_mgr_do_action(vc_send_event_type_e type, char *send_event);
+
+/**
+ * @platform
+ * @brief Starts recognition.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks The default recognition mode is #VC_RECOGNITION_MODE_STOP_BY_SILENCE. \n
+ *      If you want to use other mode, you can set mode with vc_mgr_set_recognition_mode().
+ *
+ * @param[in] exclusive_command_option   Exclusive command option
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                       Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER          Invalid parameter.
+ * @retval #VC_ERROR_INVALID_STATE              Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED           Operation failure
+ * @retval #VC_ERROR_IN_PROGRESS_TO_RECORDING   In progress to recording
+ * @retval #VC_ERROR_PERMISSION_DENIED          Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED              VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY and the service state should be #VC_SERVICE_STATE_READY.
+ * @post It will invoke vc_service_state_changed_cb(), if you register a callback with vc_service_state_changed_cb(). \n
+ *      If this function succeeds, the service state will be #VC_SERVICE_STATE_RECORDING.
+ *
+ * @see vc_mgr_stop()
+ * @see vc_mgr_cancel()
+ * @see vc_service_state_changed_cb()
+ * @see vc_mgr_set_recognition_mode()
+ * @see vc_mgr_get_recognition_mode()
+ */
 int vc_mgr_start(bool exclusive_command_option);
 
 /**
-* @brief Stop recognition.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The service state should be #VC_SERVICE_STATE_RECORDING.
-* @post It will invoke vc_service_state_changed_cb(), if you register a callback with vc_service_state_changed_cb(). \n
-* If this function succeeds, the service state will be #VC_SERVICE_STATE_PROCESSING.
-*
-* @see vc_mgr_start()
-* @see vc_mgr_cancel()
-* @see vc_service_state_changed_cb()
-* @see vc_mgr_result_cb()
-*/
-int vc_mgr_stop();
-
-/**
-* @brief Cancels recognition.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_OUT_OF_MEMORY Not enough memory
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The service state should be #VC_SERVICE_STATE_RECORDING or #VC_SERVICE_STATE_PROCESSING.
-* @post It will invoke vc_service_state_changed_cb(), if you register a callback with vc_service_state_changed_cb(). \n
-* If this function succeeds, the service state will be #VC_SERVICE_STATE_READY.
-*
-* @see vc_mgr_start()
-* @see vc_mgr_stop()
-* @see vc_service_state_changed_cb()
-*/
-int vc_mgr_cancel();
-
-/**
-* @brief Gets the microphone volume during recording.
-*
-* @param[out] volume Recording volume
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_OUT_OF_MEMORY Not enough memory
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre The service state should be #VC_SERVICE_STATE_RECORDING.
-*
-* @see vc_mgr_start()
-*/
-int vc_mgr_get_recording_volume(float* volume);
-
-/**
-* @brief Select valid result from all results.
-*
-* @param[in] vc_cmd_list The valid result list
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_OUT_OF_MEMORY Not enough memory
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval #VC_ERROR_OPERATION_FAILED Operation failure
-*
-* @pre vc_mgr_all_result_cb() should be called
-*
-* @see vc_mgr_all_result_cb()
-*/
+ * @platform
+ * @brief Stops recognition.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                        Successful
+ * @retval #VC_ERROR_INVALID_STATE               Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED            Operation failure
+ * @retval #VC_ERROR_IN_PROGRESS_TO_READY        In progress to ready
+ * @retval #VC_ERROR_IN_PROGRESS_TO_RECORDING    In progress to recording
+ * @retval #VC_ERROR_IN_PROGRESS_TO_PROCESSING   In progress to processing
+ * @retval #VC_ERROR_PERMISSION_DENIED           Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED               VC not supported
+ *
+ * @pre The service state should be #VC_SERVICE_STATE_RECORDING.
+ * @post It will invoke vc_service_state_changed_cb(), if you register a callback with vc_service_state_changed_cb(). \n
+ *      If this function succeeds, the service state will be #VC_SERVICE_STATE_PROCESSING.
+ *
+ * @see vc_mgr_start()
+ * @see vc_mgr_cancel()
+ * @see vc_service_state_changed_cb()
+ * @see vc_mgr_result_cb()
+ */
+int vc_mgr_stop(void);
+
+/**
+ * @platform
+ * @brief Cancels recognition.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                        Successful
+ * @retval #VC_ERROR_OUT_OF_MEMORY               Not enough memory
+ * @retval #VC_ERROR_INVALID_STATE               Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED            Operation failure
+ * @retval #VC_ERROR_IN_PROGRESS_TO_READY        In progress to ready
+ * @retval #VC_ERROR_IN_PROGRESS_TO_RECORDING    In progress to recording
+ * @retval #VC_ERROR_IN_PROGRESS_TO_PROCESSING   In progress to processing
+ * @retval #VC_ERROR_PERMISSION_DENIED           Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED               VC not supported
+ *
+ * @pre The service state should be #VC_SERVICE_STATE_RECORDING or #VC_SERVICE_STATE_PROCESSING.
+ * @post It will invoke vc_service_state_changed_cb(), if you register a callback with vc_service_state_changed_cb(). \n
+ *      If this function succeeds, the service state will be #VC_SERVICE_STATE_READY.
+ *
+ * @see vc_mgr_start()
+ * @see vc_mgr_stop()
+ * @see vc_service_state_changed_cb()
+ */
+int vc_mgr_cancel(void);
+
+/**
+ * @platform
+ * @brief Gets the microphone volume during recording.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[out] volume   Recording volume
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The service state should be #VC_SERVICE_STATE_RECORDING.
+ *
+ * @see vc_mgr_start()
+ */
+int vc_mgr_get_recording_volume(float *volume);
+
+/**
+ * @platform
+ * @brief Selects valid results from all results.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks This function should be called in vc_mgr_all_result_cb().
+ *      The @a vc_cmd_list can be NULL, in that case the function does nothing.
+ * @param[in] vc_cmd_list   The valid result list
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre vc_mgr_all_result_cb() should be called
+ *
+ * @see vc_mgr_all_result_cb()
+ */
 int vc_mgr_set_selected_results(vc_cmd_list_h vc_cmd_list);
 
 
 /**
-* @brief Registers a callback function for getting recognition result.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_all_result_cb()
-* @see vc_mgr_unset_all_result_cb()
-*/
-int vc_mgr_set_all_result_cb(vc_mgr_all_result_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_all_result_cb()
-*/
-int vc_mgr_unset_all_result_cb();
-
-/**
-* @brief Registers a callback function for getting pre recognition result.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_pre_result_cb()
-* @see vc_mgr_unset_pre_result_cb()
-*/
-int vc_mgr_set_pre_result_cb(vc_mgr_pre_result_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_pre_result_cb()
-*/
-int vc_mgr_unset_pre_result_cb();
-
-/**
-* @brief Registers a callback function for getting system or exclusive recognition result.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_result_cb()
-* @see vc_mgr_unset_result_cb()
-*/
-int vc_mgr_set_result_cb(vc_result_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_result_cb()
-*/
-int vc_mgr_unset_result_cb();
-
-/**
-* @brief Registers a callback function to be called when state is changed.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_state_changed_cb()
-* @see vc_mgr_unset_state_changed_cb()
-*/
-int vc_mgr_set_state_changed_cb(vc_state_changed_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_state_changed_cb()
-*/
-int vc_mgr_unset_state_changed_cb();
-
-/**
-* @brief Registers a callback function to be called when state is changed.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_service_state_changed_cb()
-* @see vc_mgr_unset_service_state_changed_cb()
-*/
-int vc_mgr_set_service_state_changed_cb(vc_service_state_changed_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_service_state_changed_cb()
-*/
-int vc_mgr_unset_service_state_changed_cb();
-
-/**
-* @brief Registers a callback function to be called when begin of speech is detected.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_begin_speech_detected_cb()
-* @see vc_mgr_unset_speech_detected_cb()
-*/
-int vc_mgr_set_speech_detected_cb(vc_mgr_begin_speech_detected_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_speech_detected_cb()
-*/
-int vc_mgr_unset_speech_detected_cb();
-
-/**
-* @brief Registers a callback function to be called when current language is changed.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_current_language_changed_cb()
-* @see vc_mgr_unset_current_language_changed_cb()
-*/
-int vc_mgr_set_current_language_changed_cb(vc_current_language_changed_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_current_language_changed_cb()
-*/
-int vc_mgr_unset_current_language_changed_cb();
-
-/**
-* @brief Gets the current error message.
-*
-* @remarks This function should be called during as vc error callback. If not, the error as operation failure will be returned. \n
-*       If the function succeeds, @a err_msg must be released using free() when it is no longer required.
-*
-* @param[out] err_msg The current error message
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-* @retval $VC_ERROR_OPERATION_FAILED Operation failure
-* @retval #VC_ERROR_OUT_OF_MEMORY Out of memory
-*
-* @see vc_error_cb()
-*/
-int vc_mgr_get_error_message(char** err_msg);
-
-/**
-* @brief Registers a callback function to be called when an error occurred.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_error_cb()
-* @see vc_mgr_unset_error_cb()
-*/
-int vc_mgr_set_error_cb(vc_error_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_error_cb()
-*/
-int vc_mgr_unset_error_cb();
-
-
-/**
-* @brief Registers a callback function to be called when dialog requests.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_unset_dialog_request_cb()
-*/
-int vc_mgr_set_dialog_request_cb(vc_mgr_dialog_request_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_dialog_request_cb()
-*/
-int vc_mgr_unset_dialog_request_cb();
-
-/**
-* @brief Enable command type as candidate command.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_disable_command_type()
-*/
+ * @platform
+ * @brief Sets a callback function for getting recognition result.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_all_result_cb()
+ * @see vc_mgr_unset_all_result_cb()
+ */
+int vc_mgr_set_all_result_cb(vc_mgr_all_result_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the recognition result callback function.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_all_result_cb()
+ */
+int vc_mgr_unset_all_result_cb(void);
+
+/**
+ * @platform
+ * @brief Sets a callback function for getting pre recognition result.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_pre_result_cb()
+ * @see vc_mgr_unset_pre_result_cb()
+ */
+int vc_mgr_set_pre_result_cb(vc_mgr_pre_result_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the pre recognition result callback function.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_pre_result_cb()
+ */
+int vc_mgr_unset_pre_result_cb(void);
+
+/**
+ * @platform
+ * @brief Sets a callback function for getting all types of recognition results.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_result_cb()
+ * @see vc_mgr_unset_result_cb()
+ */
+int vc_mgr_set_result_cb(vc_result_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the callback function for getting all types of recognition results.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_result_cb()
+ */
+int vc_mgr_unset_result_cb(void);
+
+/**
+ * @platform
+ * @brief Sets a callback function to be called when state is changed.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_state_changed_cb()
+ * @see vc_mgr_unset_state_changed_cb()
+ */
+int vc_mgr_set_state_changed_cb(vc_state_changed_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the state changed callback function.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_state_changed_cb()
+ */
+int vc_mgr_unset_state_changed_cb(void);
+
+/**
+ * @platform
+ * @brief Sets a callback function to be called when service state is changed.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_service_state_changed_cb()
+ * @see vc_mgr_unset_service_state_changed_cb()
+ */
+int vc_mgr_set_service_state_changed_cb(vc_service_state_changed_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the service state changed callback function.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_service_state_changed_cb()
+ */
+int vc_mgr_unset_service_state_changed_cb(void);
+
+/**
+ * @platform
+ * @brief Sets a callback function to be called when begin of speech is detected.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_begin_speech_detected_cb()
+ * @see vc_mgr_unset_speech_detected_cb()
+ */
+int vc_mgr_set_speech_detected_cb(vc_mgr_begin_speech_detected_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the speech detected callback function.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_speech_detected_cb()
+ */
+int vc_mgr_unset_speech_detected_cb(void);
+
+/**
+ * @platform
+ * @brief Sets a callback function to be called when current language is changed.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_current_language_changed_cb()
+ * @see vc_mgr_unset_current_language_changed_cb()
+ */
+int vc_mgr_set_current_language_changed_cb(vc_current_language_changed_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the current language changed callback function.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_current_language_changed_cb()
+ */
+int vc_mgr_unset_current_language_changed_cb(void);
+
+/**
+ * @platform
+ * @brief Gets the current error message.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @remarks This function should be called during as vc error callback. If not, the error as operation failure will be returned. \n
+ *      If the function succeeds, @a err_msg must be released using free() when it is no longer required.
+ *
+ * @param[out] err_msg   The current error message
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval $VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_OUT_OF_MEMORY       Out of memory
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @see vc_error_cb()
+ */
+int vc_mgr_get_error_message(char **err_msg);
+
+/**
+ * @platform
+ * @brief Sets a callback function to be called when an error occurred.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_error_cb()
+ * @see vc_mgr_unset_error_cb()
+ */
+int vc_mgr_set_error_cb(vc_error_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the callback function to be called when an error occurred.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_error_cb()
+ */
+int vc_mgr_unset_error_cb(void);
+
+
+/**
+ * @platform
+ * @brief Sets a callback function to be called when dialog requests.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_unset_dialog_request_cb()
+ */
+int vc_mgr_set_dialog_request_cb(vc_mgr_dialog_request_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the callback function to be called when dialog requests.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_dialog_request_cb()
+ */
+int vc_mgr_unset_dialog_request_cb(void);
+
+/**
+ * @platform
+ * @brief Enables command type as candidate command.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] cmd_type   The command type (e.g. #VC_COMMAND_TYPE_FOREGROUND, #VC_COMMAND_TYPE_BACKGROUND, #VC_COMMAND_TYPE_WIDGET, #VC_COMMAND_TYPE_SYSTEM, #VC_COMMAND_TYPE_SYSTEM_BACKGROUND, #VC_COMMAND_TYPE_EXCLUSIVE)
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_disable_command_type()
+ */
 int vc_mgr_enable_command_type(int cmd_type);
 
 /**
-* @brief Disable command type as candidate command.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_READY.
-*
-* @see vc_mgr_enable_command_type()
-*/
+ * @platform
+ * @brief Disables command type as candidate command.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] cmd_type   The command type (e.g. #VC_COMMAND_TYPE_FOREGROUND, #VC_COMMAND_TYPE_BACKGROUND, #VC_COMMAND_TYPE_WIDGET, #VC_COMMAND_TYPE_SYSTEM, #VC_COMMAND_TYPE_SYSTEM_BACKGROUND, #VC_COMMAND_TYPE_EXCLUSIVE)
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_enable_command_type()
+ */
 int vc_mgr_disable_command_type(int cmd_type);
 
 /**
-* @brief Registers a callback function to be called when engine set private data.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_private_data_set_cb()
-* @see vc_mgr_unset_private_data_set_cb()
-*/
-int vc_mgr_set_private_data_set_cb(vc_mgr_private_data_set_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_private_data_set_cb()
-*/
-int vc_mgr_unset_private_data_set_cb();
-
-/**
-* @brief Registers a callback function to be called when engine request private data.
-*
-* @param[in] callback Callback function to register
-* @param[in] user_data The user data to be passed to the callback function
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_PARAMETER Invalid parameter
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_private_data_requested_cb()
-* @see vc_mgr_unset_private_data_requested_cb()
-*/
-int vc_mgr_set_private_data_requested_cb(vc_mgr_private_data_requested_cb callback, void* user_data);
-
-/**
-* @brief Unregisters the callback function.
-*
-* @return 0 on success, otherwise a negative error value
-* @retval #VC_ERROR_NONE Successful
-* @retval #VC_ERROR_INVALID_STATE Invalid state
-*
-* @pre The state should be #VC_STATE_INITIALIZED.
-*
-* @see vc_mgr_set_private_data_requested_cb()
-*/
-int vc_mgr_unset_private_data_requested_cb();
+ * @platform
+ * @brief Sets a callback function to be called when engine set private data.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_private_data_set_cb()
+ * @see vc_mgr_unset_private_data_set_cb()
+ */
+int vc_mgr_set_private_data_set_cb(vc_mgr_private_data_set_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the callback function to be called when engine set private data.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_private_data_set_cb()
+ */
+int vc_mgr_unset_private_data_set_cb(void);
+
+/**
+ * @platform
+ * @brief Sets a callback function to be called when engine request private data.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @param[in] callback    Callback function to register
+ * @param[in] user_data   The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_private_data_requested_cb()
+ * @see vc_mgr_unset_private_data_requested_cb()
+ */
+int vc_mgr_set_private_data_requested_cb(vc_mgr_private_data_requested_cb callback, void *user_data);
+
+/**
+ * @platform
+ * @brief Unsets the callback function to be called when engine request private data.
+ * @since_tizen 5.0
+ *
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/voicecontrol.manager
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_INITIALIZED.
+ *
+ * @see vc_mgr_set_private_data_requested_cb()
+ */
+int vc_mgr_unset_private_data_requested_cb(void);
 
 #ifdef __cplusplus
 }
diff --git a/include/voice_control_manager_internal.h b/include/voice_control_manager_internal.h
new file mode 100644 (file)
index 0000000..c06d38b
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2011-2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __VOICE_CONTROL_MANAGER_INTERNAL_H__
+#define __VOICE_CONTROL_MANAGER_INTERNAL_H__
+
+#include <voice_control_command.h>
+#include <voice_control_command_expand.h>
+#include <voice_control_common.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+/**
+ * @brief Sets demandable client list.
+ *
+ * @param[in] rule demandable client list rule path
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_OPERATION_FAILED    Operation failure
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_get_demandable_client_rule()
+ */
+int vc_mgr_set_demandable_client_rule(const char* rule);
+
+/**
+ * @brief Gets demandable client list.
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The state should be #VC_STATE_READY.
+ *
+ * @see vc_mgr_set_demandable_client_rule()
+ */
+int vc_mgr_unset_demandable_client_rule(void);
+
+/**
+ * @brief Sets domain such as agent or device type.
+ * @since_tizen 5.0
+ *
+ * @param[in] domain Available agent or device type
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VC_ERROR_NONE                Successful
+ * @retval #VC_ERROR_INVALID_PARAMETER   Invalid parameter
+ * @retval #VC_ERROR_INVALID_STATE       Invalid state
+ * @retval #VC_ERROR_PERMISSION_DENIED   Permission denied
+ * @retval #VC_ERROR_NOT_SUPPORTED       VC not supported
+ *
+ * @pre The service state should be #VC_SERVICE_STATE_READY.
+ */
+int vc_mgr_set_domain(const char* domain);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+/**
+ * @}
+ */
+
+#endif /* __VOICE_CONTROL_MANAGER_INTERNAL_H__ */
+
index 510eb20..93c3e4c 100644 (file)
@@ -574,7 +574,7 @@ int vc_widget_unset_asr_result_cb(vc_h vc);
 #endif
 
 /**
- * @}@}
+ * @}
  */
 
 #endif /* __VOICE_CONTROL_WIDGET_H__ */
index 9bc04cd..9483add 100644 (file)
@@ -152,6 +152,7 @@ mkdir -p %{_libdir}/voice/vc
 %defattr(-,root,root,-)
 %{_libdir}/pkgconfig/voice-control-manager.pc
 %{_includedir}/voice_control_manager.h
+%{_includedir}/voice_control_manager_internal.h
 %{_includedir}/voice_control_command.h
 %{_includedir}/voice_control_common.h
 %{_includedir}/voice_control_key_defines.h