#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"
#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
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);
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");
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");
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, "@@@");
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");
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");
{
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, "@@@");
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;
{
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;
{
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;
{
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");
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;
{
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;
{
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;
}
{
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;
{
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");
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");
{
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;
{
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;
{
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;
{
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;
{
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");
{
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");
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) {
{
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;
{
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;
{
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;
{
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;
{
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");
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");
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");
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;
{
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;
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);
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);
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;
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");
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;
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");
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;
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");
{
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;
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;
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");
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;
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");
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;
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");
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;
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");
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;
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");
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;
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");
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;
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");
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;
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");
/*
-* 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.
#include <voice_control_common.h>
/**
-* @addtogroup VOICE_CONTROL_MANAGER
-* @{
-*/
+ * @addtogroup CAPI_UIX_VOICE_CONTROL_MANAGER_MODULE
+ * @{
+ */
#ifdef __cplusplus
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
}