2 * Copyright 2012 Samsung Electronics Co., Ltd
\r
4 * Licensed under the Flora License, Version 1.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://floralicense.org/license/
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
18 #include "cam_voice_command.h"
\r
19 #include "cam_debug.h"
\r
21 // voice control module is not setup.
\r
22 #ifdef ENABLE_VOICE_CONTROL
\r
23 #include <vc_bargein.h>
\r
25 static vc_bargein_h voice_cmd_h = NULL;
\r
26 static cam_voice_cmd_cb g_cmd_cb;
\r
28 static void __init_cb(vc_bargein_h vc, void *user_data);
\r
29 static void __result_cb(vc_bargein_h vc, vc_bargein_result_event_e event, vc_bargein_app_type_e app_type, int action_type, void *user_data);
\r
30 static void __error_cb(vc_bargein_h vc, vc_bargein_error_e reason, void *user_data);
\r
31 static void __start_voice_cmd(void *user_data);
\r
33 static void __init_cb(vc_bargein_h vc, void *user_data)
\r
36 cam_retm_if(user_data == NULL, "user_data is NULL");
\r
39 cam_debug(LOG_CAM, "voice handle init fail");
\r
40 g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);
\r
43 __start_voice_cmd(user_data);
\r
48 static void __result_cb(vc_bargein_h vc, vc_bargein_result_event_e event, vc_bargein_app_type_e app_type, int action_type, void *user_data)
\r
50 if (voice_cmd_h == NULL) {
\r
51 cam_debug(LOG_CAM, "voice_cmd_h is NULL");
\r
52 g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);
\r
55 if (app_type == VC_BARGEIN_APP_TYPE_CAMERA && action_type == VC_BARGEIN_CAMERA_ACTION_CAPTURE) {
\r
57 case VC_BARGEIN_RESULT_EVENT_SUCCESS:
\r
59 g_cmd_cb(CAM_VOICE_CMD_READY, user_data);
\r
62 case VC_BARGEIN_RESULT_EVENT_REJECTED:
\r
64 g_cmd_cb(CAM_VOICE_CMD_REJECT, user_data);
\r
67 case VC_BARGEIN_RESULT_EVENT_ERROR:
\r
69 g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);
\r
74 g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);
\r
79 static void __error_cb(vc_bargein_h vc, vc_bargein_error_e reason, void *user_data)
\r
81 cam_debug(LOG_CAM, "error is [%d]", reason);
\r
82 g_cmd_cb(CAM_VOICE_CMD_READY, user_data);
\r
86 static void __start_voice_cmd(void *user_data)
\r
88 if (voice_cmd_h == NULL) {
\r
89 cam_debug(LOG_CAM, "voice_cmd_h is NULL");
\r
90 g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);
\r
93 if (vc_bargein_start(voice_cmd_h, VC_BARGEIN_LANGUAGE_KO_KR, VC_BARGEIN_APP_TYPE_CAMERA) != VC_BARGEIN_ERROR_NONE) {
\r
94 cam_debug(LOG_CAM, "vc_bargein_start() fail");
\r
95 g_cmd_cb(CAM_VOICE_CMD_ERROR, user_data);
\r
102 gboolean cam_voice_cmd_create(cam_voice_cmd_cb cmd_cb, void *user_data)
\r
104 #ifdef ENABLE_VOICE_CONTROL
\r
106 cam_retvm_if(user_data == NULL, FALSE, "user_data is NULL");
\r
108 vc_bargein_cancel(voice_cmd_h);
\r
109 vc_bargein_destroy(voice_cmd_h);
\r
110 voice_cmd_h = NULL;
\r
115 if (vc_bargein_create(&voice_cmd_h, (vc_bargein_initialized_cb)__init_cb,
\r
116 (vc_bargein_result_cb)__result_cb, (vc_bargein_error_cb)__error_cb, user_data) != VC_BARGEIN_ERROR_NONE) {
\r
117 cam_debug(LOG_CAM, "vc_bargein_create() fail");
\r
125 void cam_voice_cmd_destroy()
\r
127 #ifdef ENABLE_VOICE_CONTROL
\r
128 if (voice_cmd_h == NULL) {
\r
129 cam_debug(LOG_CAM, "voice_cmd_h is already delete");
\r
133 vc_bargein_cancel(voice_cmd_h);
\r
134 vc_bargein_destroy(voice_cmd_h);
\r
135 voice_cmd_h = NULL;
\r